Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
28 lines
655 B
TypeScript
28 lines
655 B
TypeScript
import { cn } from "@rakazo/ui-web/lib/utils";
|
|
import type { LucideIcon, LucideProps } from "lucide-react";
|
|
|
|
const iconSizeClass = {
|
|
sm: "size-icon-sm",
|
|
md: "size-icon-md",
|
|
lg: "size-icon-lg",
|
|
} as const;
|
|
|
|
export type IconSize = keyof typeof iconSizeClass;
|
|
|
|
export type IconProps = Omit<LucideProps, "size"> & {
|
|
icon: LucideIcon;
|
|
size?: IconSize;
|
|
};
|
|
|
|
function Icon({ icon: IconComponent, size = "md", className, ...props }: IconProps) {
|
|
return (
|
|
<IconComponent
|
|
aria-hidden={props["aria-hidden"] ?? true}
|
|
className={cn("shrink-0", iconSizeClass[size], className)}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export { Icon, iconSizeClass };
|