Echo b7443c4b9e [Glitch] Profile redesign: Fields iteration
Port 0923e2cb26d179f197680c978495593c8b205a80 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-03 16:04:00 +01:00

58 lines
1.3 KiB
TypeScript

import { forwardRef } from 'react';
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
import classNames from 'classnames';
import type { OmitUnion } from '@/flavours/glitch/utils/types';
import { Icon } from '../icon';
import type { IconProp } from '../icon';
import classes from './styles.module.css';
export type MiniCardProps = OmitUnion<
ComponentPropsWithoutRef<'div'>,
{
label: ReactNode;
value: ReactNode;
icon?: IconProp;
iconId?: string;
iconClassName?: string;
}
>;
export const MiniCard = forwardRef<HTMLDivElement, MiniCardProps>(
(
{ label, value, className, hidden, icon, iconId, iconClassName, ...props },
ref,
) => {
if (!label) {
return null;
}
return (
<div
{...props}
className={classNames(
classes.card,
icon && classes.cardWithIcon,
className,
)}
ref={ref}
>
{icon && (
<Icon
id={iconId ?? 'minicard'}
icon={icon}
className={classNames(classes.icon, iconClassName)}
noFill
/>
)}
<dt className={classes.label}>{label}</dt>
<dd className={classes.value}>{value}</dd>
</div>
);
},
);
MiniCard.displayName = 'MiniCard';