@melony/ui-shadcn 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -35,7 +35,7 @@ function Card({
|
|
|
35
35
|
"data-slot": "card",
|
|
36
36
|
"data-size": size,
|
|
37
37
|
className: cn(
|
|
38
|
-
"ring-foreground/10 bg-card text-card-foreground gap-2 overflow-hidden rounded-2xl py-
|
|
38
|
+
"ring-foreground/10 bg-card text-card-foreground gap-2 overflow-hidden rounded-2xl py-0 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col",
|
|
39
39
|
className
|
|
40
40
|
),
|
|
41
41
|
...props
|
|
@@ -531,7 +531,8 @@ var ListItem = ({
|
|
|
531
531
|
padding = "sm",
|
|
532
532
|
background,
|
|
533
533
|
radius = "md",
|
|
534
|
-
align = "center"
|
|
534
|
+
align = "center",
|
|
535
|
+
truncate = false
|
|
535
536
|
}) => {
|
|
536
537
|
const { send } = useMelony();
|
|
537
538
|
const isInteractive = !!onClickAction;
|
|
@@ -549,7 +550,8 @@ var ListItem = ({
|
|
|
549
550
|
interactivePaddingMap[padding],
|
|
550
551
|
background ? colorBgMap[background] : isInteractive && "hover:bg-muted",
|
|
551
552
|
radiusMap[radius],
|
|
552
|
-
isInteractive ? "cursor-pointer" : "cursor-default"
|
|
553
|
+
isInteractive ? "cursor-pointer" : "cursor-default",
|
|
554
|
+
truncate && "truncate"
|
|
553
555
|
),
|
|
554
556
|
children: /* @__PURE__ */ jsx(Row, { align, gap, children })
|
|
555
557
|
}
|
|
@@ -2468,7 +2470,7 @@ function Thread({
|
|
|
2468
2470
|
autoFocus
|
|
2469
2471
|
}
|
|
2470
2472
|
),
|
|
2471
|
-
/* @__PURE__ */ jsx("div", { className: "mt-2 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-[10px] text-muted-foreground/60", children: "
|
|
2473
|
+
/* @__PURE__ */ jsx("div", { className: "mt-2 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-[10px] text-muted-foreground/60", children: "LLMs can make mistakes. Check important info." }) })
|
|
2472
2474
|
] }) })
|
|
2473
2475
|
] });
|
|
2474
2476
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/ui/card.tsx","../src/lib/theme-utils.ts","../src/elements/Card.tsx","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/List.tsx","../src/elements/ListItem.tsx","../src/ui/dialog.tsx","../src/elements/Icon.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/ui/badge.tsx","../src/elements/Badge.tsx","../src/elements/Chart.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/ui/dropdown-menu.tsx","../src/elements/Dropdown.tsx","../src/elements/Composer.tsx","../src/elements/MessageContent.tsx","../src/elements/Message.tsx","../src/elements/MessagesList.tsx","../src/elements/Thread.tsx","../src/providers/theme-provider.tsx","../src/elements/ThemeToggle.tsx","../src/index.ts"],"names":["Card","jsx","SeparatorPrimitive","DialogPrimitive","jsxs","Badge","useState","InputPrimitive","cva","Input","useMelony","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","Button","useRef","MenuPrimitive","MelonyRenderer","useMemo","useEffect","createContext","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"ring-foreground/10 bg-card text-card-foreground gap-2 overflow-hidden rounded-2xl py-2 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-4 group-data-[size=sm]/card:px-4 [.border-b]:pb-2 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"rounded-b-xl px-4 group-data-[size=sm]/card:px-4 [.border-t]:pt-2 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const wrapMap: Record<string, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap: Record<string, string> = {\n none: \"text-[0]\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\",\n};\n\nexport const textAlignMap: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n/**\n * Resolves an SDUI color (e.g., \"primary/50\") to a React style object.\n * This handles opacity using CSS Relative Color Syntax.\n */\nexport const resolveUIStyle = (\n property: \"backgroundColor\" | \"color\" | \"borderColor\",\n value?: UIColor,\n) => {\n if (!value) return {};\n\n const [colorName, opacityStr] = value.split(\"/\");\n\n // If it's a standard mapping and no opacity is requested, return nothing\n // and let the Tailwind classes handle it (to preserve text-foreground etc.)\n if (!opacityStr && (colorBgMap[value as UIColor] || colorTextMap[value as UIColor] || colorBorderMap[value as UIColor])) {\n return {};\n }\n\n const opacity = opacityStr ? parseInt(opacityStr, 10) / 100 : 1;\n\n // Map camelCase to kebab-case for CSS variables if needed, \n // but most of our colors are single words.\n const kebabName = colorName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n \n // Tailwind 4 defines colors as --color-{name}\n // Shadcn often defines them as --{name}\n const variable = `var(--color-${kebabName}, var(--${kebabName}))`;\n\n if (opacity === 1) {\n return { [property]: variable };\n }\n\n // Use CSS color-mix as it's very robust and handles the opacity well\n // mixed with transparent. This is a very safe way to handle opacity.\n return {\n [property]: `color-mix(in oklch, ${variable}, transparent ${100 - opacity * 100}%)`,\n };\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { cn } from \"../lib/utils\";\nimport {\n colorBgMap,\n paddingMap,\n radiusMap,\n shadowMap,\n} from \"../lib/theme-utils\";\n\nexport const Card: React.FC<\n UIContract[\"card\"] & { children?: React.ReactNode }\n> = ({\n children,\n title,\n subtitle,\n background,\n padding = \"md\",\n radius = \"md\",\n shadow = \"md\",\n}) => {\n return (\n <CardBase\n className={cn(\n \"w-full max-w-full relative overflow-hidden transition-all duration-200\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n shadow && shadowMap[shadow],\n !shadow && \"shadow-sm border border-border/40\",\n )}\n >\n {(title || subtitle) && (\n <CardHeader className=\"py-2.5 px-3 space-y-0.5 border-b border-border/40 bg-muted/5\">\n {title && <CardTitle className=\"text-sm font-semibold tracking-tight leading-none\">{title}</CardTitle>}\n {subtitle && <CardDescription className=\"text-xs leading-tight text-muted-foreground/80\">{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className={cn(\"flex flex-col gap-2\", paddingMap[padding])}>\n {children}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UIWrap, UISpacing, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n wrapMap,\n} from \"../lib/theme-utils\";\n\nexport const Row: React.FC<\n UIContract[\"row\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n wrapMap[wrap as UIWrap],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n\n// Add missing maps to theme-utils\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UISpacing, UIWidth, UIColor, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n colorBgMap,\n radiusMap,\n} from \"../lib/theme-utils\";\n\nexport const Col: React.FC<\n UIContract[\"col\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n gap = \"none\",\n width = \"auto\",\n height = \"auto\",\n padding = \"none\",\n background,\n radius,\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background as UIColor],\n radius && radiusMap[radius as UIRadius],\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract, UIColor, UIWidth, UISpacing, UIRadius, UIShadow } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n padding,\n paddingVertical,\n paddingHorizontal,\n margin,\n marginVertical,\n marginHorizontal,\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n const [baseBgColor] = (background || \"\").split(\"/\");\n const [baseBorderColor] = (borderColor || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n ...resolveUIStyle(\"borderColor\", borderColor),\n };\n\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical as UISpacing],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal as UISpacing],\n padding && paddingMap[padding as UISpacing],\n marginVertical && marginVerticalMap[marginVertical as UISpacing],\n marginHorizontal && marginHorizontalMap[marginHorizontal as UISpacing],\n margin && marginMap[margin as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n border && \"border\",\n baseBorderColor && colorBorderMap[baseBorderColor as UIColor],\n radiusMap[radius as UIRadius],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n shadowMap[shadow as UIShadow],\n group && \"group\",\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n overflow,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"none\",\n}) => {\n return (\n <Separator\n orientation={orientation}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, gapMap, widthMap } from \"../lib/theme-utils\";\n\nexport const List: React.FC<\n UIContract[\"list\"] & {\n children?: React.ReactNode;\n flex?: string;\n overflow?: string;\n }\n> = ({ children, padding = \"none\", gap = \"none\", flex, overflow, width }) => {\n return (\n <div\n className={cn(\n \"flex flex-col list-none m-0\",\n paddingMap[padding],\n gapMap[gap],\n widthMap[width as UIWidth],\n )}\n style={{ flex, overflow, width: width && typeof width === \"number\" ? `${width}px` : undefined }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIAlign, UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, colorBgMap, radiusMap, interactivePaddingMap } from \"../lib/theme-utils\";\nimport { Row } from \"./Row\";\n\nexport const ListItem: React.FC<\n UIContract[\"listItem\"] & { children?: React.ReactNode; align?: UIAlign }\n> = ({\n children,\n onClickAction,\n gap = \"sm\",\n padding = \"sm\",\n background,\n radius = \"md\",\n align = \"center\",\n}) => {\n const { send } = useMelony();\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex flex-row transition-colors text-sm\",\n interactivePaddingMap[padding],\n background ? colorBgMap[background] : isInteractive && \"hover:bg-muted\",\n radiusMap[radius],\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n )}\n >\n <Row align={align} gap={gap}>\n {children}\n </Row>\n </div>\n );\n };\n","import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({ className, ...props }: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg outline-none\",\n className,\n )}\n {...props}\n />\n </DialogPortal>\n );\n}\n\nfunction DialogClose({ className, ...props }: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = (props) => {\n const {\n name,\n size = \"md\",\n color,\n className,\n } = props;\n const sizeMap = {\n sm: \"14px\",\n md: \"18px\",\n lg: \"24px\",\n };\n\n const resolvedSize =\n typeof size === \"number\"\n ? `${size}px`\n : sizeMap[size as keyof typeof sizeMap] || \"18px\";\n\n // Check if name is a Lucide icon\n const LucideIcon = (LucideIcons as any)[name];\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center leading-none\",\n color && colorTextMap[color],\n className\n )}\n style={{ \n fontSize: resolvedSize, \n width: resolvedSize, \n height: resolvedSize,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {LucideIcon ? (\n <LucideIcon size={resolvedSize} />\n ) : (\n name\n )}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"../ui/dialog\";\nimport { Icon } from \"./Icon\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"md\",\n objectFit = \"cover\",\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n // Navigation State\n const [currentIndex, setCurrentIndex] = useState(0);\n const [gallery, setGallery] = useState<{ src: string; alt: string }[]>([]);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && triggerRef.current) {\n let parent = triggerRef.current.parentElement;\n while (\n parent &&\n parent.parentElement &&\n parent.parentElement.children.length === 1\n ) {\n parent = parent.parentElement;\n }\n const container = parent?.parentElement;\n\n if (container) {\n const foundImgs = Array.from(container.querySelectorAll(\"img\"))\n .map((img) => ({\n src: img.getAttribute(\"src\") || \"\",\n alt: img.getAttribute(\"alt\") || \"\",\n }))\n .filter((v, i, a) => a.findIndex((t) => t.src === v.src) === i);\n\n setGallery(foundImgs);\n const idx = foundImgs.findIndex((img) => img.src === src);\n setCurrentIndex(idx >= 0 ? idx : 0);\n }\n }\n }, [open, src]);\n\n const navigate = (dir: number) => {\n setCurrentIndex((prev) => (prev + dir + gallery.length) % gallery.length);\n };\n\n const currentImage = gallery[currentIndex] || { src, alt };\n const hasMultiple = gallery.length > 1;\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-muted text-muted-foreground\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height: height || \"100px\" }}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n ref={triggerRef}\n className={cn(\n \"relative overflow-hidden cursor-pointer\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n height ? \"h-full\" : \"h-auto\",\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none outline-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center group/lightbox\">\n <DialogClose className=\"absolute -top-12 right-0 text-white hover:text-gray-300 transition-colors z-50 bg-black/50 rounded-full p-2\">\n <Icon name=\"❌\" size={20} />\n </DialogClose>\n\n {hasMultiple && (\n <>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(-1);\n }}\n className=\"absolute left-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"◀️\" size={28} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(1);\n }}\n className=\"absolute right-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"▶️\" size={28} />\n </button>\n </>\n )}\n\n <img\n src={currentImage.src}\n alt={currentImage.alt || alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg shadow-2xl\"\n />\n\n {hasMultiple && (\n <div className=\"absolute -bottom-10 left-1/2 -translate-x-1/2 text-white bg-black/50 px-3 py-1 rounded-full text-sm font-medium\">\n {currentIndex + 1} / {gallery.length}\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\n\nexport const Badge: React.FC<UIContract[\"badge\"]> = ({\n label,\n variant = \"primary\",\n size = \"md\",\n}) => {\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\",\n warning: \"secondary\",\n outline: \"outline\",\n };\n\n const sizeClasses = {\n sm: \"text-[10px] px-1.5 py-0\",\n md: \"text-xs px-2.5 py-0.5\",\n lg: \"text-sm px-3 py-1\",\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant] || \"default\"}\n className={sizeClasses[size]}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\n\nexport const Chart: React.FC<UIContract[\"chart\"]> = ({\n data,\n chartType = \"bar\",\n title,\n height = 250,\n showValues = false,\n showGrid = false,\n showTooltips = true,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5 text-sm\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n\n // Use container width or default\n const chartHeight = height;\n const chartWidth = 600; // Will be responsive via viewBox\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing =\n data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth =\n (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x =\n padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: x + actualBarWidth / 2,\n y: y - 5,\n label: item.label,\n value: item.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({\n visible: false,\n x: 0,\n y: 0,\n label: \"\",\n value: 0,\n })\n }\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x:\n padding.left +\n (index / Math.max(data.length - 1, 1)) *\n (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item,\n }));\n\n const pathData = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n <path\n d={pathData}\n fill=\"none\"\n stroke={getColor(0)}\n strokeWidth={3}\n className=\"transition-all\"\n />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: point.x,\n y: point.y - 5,\n label: point.label,\n value: point.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })\n }\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className=\"py-4 w-full\">\n {title && (\n <div className=\"text-sm font-semibold mb-4 text-center\">{title}</div>\n )}\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = (props) => {\n const {\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n } = props;\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className,\n )}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { textAlignMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Heading: React.FC<UIContract[\"heading\"]> = ({\n value,\n level = 2,\n color = \"foreground\",\n align = \"start\",\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-2xl font-bold tracking-tight\",\n h2: \"text-xl font-semibold tracking-tight\",\n h3: \"text-lg font-semibold tracking-tight\",\n h4: \"text-base font-semibold tracking-tight\",\n h5: \"text-sm font-semibold\",\n h6: \"text-xs font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import React from \"react\";\nimport { UIContract, UIJustify } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { justify?: UIJustify }\n> = (props) => {\n const {\n type = \"button\",\n label,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n } = props;\n const { send } = useMelony();\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(width && widthMap[width], justifyMap[justify])}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : undefined }}\n >\n {label}\n </ButtonBase>\n );\n };\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import * as React from \"react\";\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\",\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <Icon name=\"▶️\" size=\"sm\" className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\",\n className,\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import * as React from \"react\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../lib/utils\";\nimport type { Event } from \"melony\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\n\nexport interface DropdownItem {\n label: string;\n icon?: string;\n onClickAction?: Event;\n}\n\n\nexport const Dropdown: React.FC<UIContract[\"dropdown\"] & { children?: React.ReactNode }> = ({ items = [], children }) => {\n const { send } = useMelony();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props: any) => (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n {...props}\n onClick={(e) => {\n e.stopPropagation();\n props.onClick?.(e);\n }}\n >\n {children || <Icon name=\"⋮\" size=\"sm\" />}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"start\" className={cn(\"w-32\")}>\n {items.map((item, i) => (\n <DropdownMenuItem\n key={`${item.label}-${i}`}\n onClick={(e) => {\n e.stopPropagation();\n if (item.onClickAction) {\n send(item.onClickAction);\n }\n }}\n >\n {item.icon && <Icon name={item.icon} size=\"sm\" />}\n <span className={item.icon ? \"ml-2\" : \"\"}>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Textarea } from \"../ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { Icon } from \"./Icon\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n onStop?: () => void;\n placeholder?: string;\n streaming?: boolean;\n className?: string;\n autoFocus?: boolean;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n onStop,\n placeholder = \"Type a message...\",\n streaming,\n className,\n autoFocus = false\n}: ComposerProps) {\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-border/60 border rounded-[26px] bg-muted/30 focus-within:bg-background focus-within:border-border focus-within:ring-[3px] focus-within:ring-primary/5 transition-all p-1.5 px-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none leading-relaxed\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center pb-1\">\n <div className=\"flex items-center gap-1 px-2\">\n {/* Add attachment/tool icons here later if needed */}\n </div>\n {streaming ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 rounded-full border border-border/40 hover:bg-muted\"\n onClick={() => onStop?.()}\n >\n <div className=\"w-2.5 h-2.5 bg-foreground rounded-[1px]\" />\n </Button>\n ) : (\n <Button\n type=\"submit\"\n disabled={!value.trim()}\n size=\"icon\"\n className={cn(\n \"h-8 w-8 rounded-full transition-all duration-300\",\n value.trim() ? \"bg-foreground text-background hover:opacity-90\" : \"bg-muted text-muted-foreground opacity-50\"\n )}\n onClick={() => onSubmit()}\n >\n <Icon name=\"ArrowUp\" size={18} />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Event, } from \"melony\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\n\ninterface MessageContentProps {\n content: Event[];\n}\n\nexport function MessageContent({ content }: MessageContentProps) {\n const elements: React.ReactNode[] = [];\n let currentTextBlock: string[] = [];\n\n const flushText = (key: number) => {\n if (currentTextBlock.length > 0) {\n elements.push(\n <div key={`text-${key}`} className=\"prose prose-sm dark:prose-invert max-w-none break-words [&>p]:mb-2 [&>p:last-child]:mb-0 [&>ul]:list-disc [&>ul]:pl-4 [&>ol]:list-decimal [&>ol]:pl-4 [&>li]:mb-1 [&>h1]:text-xl [&>h1]:font-bold [&>h1]:mb-2 [&>h2]:text-lg [&>h2]:font-bold [&>h2]:mb-2 [&>h3]:text-base [&>h3]:font-bold [&>h3]:mb-2 [&>pre]:bg-muted [&>pre]:p-2 [&>pre]:rounded [&>pre]:overflow-x-auto [&>pre]:mb-2 [&>code]:bg-muted [&>code]:px-1 [&>code]:py-0.5 [&>code]:rounded [&>code]:font-mono [&>code]:text-sm\">\n <ReactMarkdown remarkPlugins={[remarkGfm, remarkBreaks]}>\n {currentTextBlock.join(\"\")}\n </ReactMarkdown>\n </div>\n );\n currentTextBlock = [];\n }\n };\n\n content.forEach((event, index) => {\n const key = event.id || index;\n if (event.type === \"ui\") {\n flushText(index);\n elements.push(<MelonyRenderer key={key} node={event.data} />);\n } else if (event.type === \"assistant:text-delta\") {\n currentTextBlock.push(event.data.delta || \"\");\n } else if (event.type === \"assistant:text\" || event.type === \"user:text\") {\n const text = event.data.content || event.data.text || \"\";\n if (text) {\n currentTextBlock.push(text);\n }\n }\n });\n flushText(content.length);\n\n return <div className=\"flex flex-col space-y-2.5\">{elements}</div>;\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./MessageContent\";\n\ninterface MessageProps {\n message: AggregatedMessage;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div className={cn(\"flex flex-col w-full\", isUser ? \"items-end\" : \"items-start\")}>\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] transition-all duration-200\",\n isUser\n ? \"bg-muted/80 text-foreground px-3 py-1.5 rounded-lg\"\n : \"px-0 py-0 text-foreground w-full\",\n )}\n >\n <MessageContent content={message.content} />\n </div>\n </div>\n );\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { MessageBubble } from \"./Message\";\n\ninterface MessageListProps {\n messages: AggregatedMessage[];\n streaming?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({\n messages,\n streaming,\n error,\n loadingStatus,\n}: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n\n {streaming && (\n <div className=\"text-sm text-muted-foreground\">\n {loadingStatus?.message || \"Processing...\"}\n </div>\n )}\n\n {error && (\n <div className=\"text-sm text-destructive\">\n {error.message}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { Composer } from \"./Composer\";\nimport { MessageList } from \"./MessagesList\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport function Thread({\n placeholder = \"Type a message...\",\n messages: propMessages,\n autoFocus = false,\n children,\n}: UIContract[\"thread\"]) {\n const {\n streaming,\n error,\n send,\n stop,\n messages: melonyMessages,\n } = useMelony();\n\n // Use prop messages or aggregated messages from melony, filter for main thread\n // 1. Only include user and assistant roles\n // 2. UI events are already separated in aggregated messages\n const messages = useMemo(() => {\n return (propMessages || melonyMessages || []).filter((msg) =>\n [\"user\", \"assistant\"].includes(msg.role)\n );\n }, [propMessages, melonyMessages]);\n\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string,\n ) => {\n const text = (overrideInput ?? input).trim();\n const hasFiles =\n state?.files && Array.isArray(state.files) && state.files.length > 0;\n\n // Allow submission if there's text OR files OR options\n if ((!text && !hasFiles) || streaming) return;\n\n if (!overrideInput) setInput(\"\");\n\n await send({\n type: \"user:text\",\n data: { content: text || \"\" },\n });\n };\n\n return (\n <div className=\"relative flex flex-col h-full flex-1 overflow-hidden\">\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-3xl mx-auto w-full p-4\",\n )}\n >\n {messages.length === 0 && !streaming && children ? (\n <div className=\"flex flex-col items-start justify-center min-h-[50vh] space-y-6 animate-in fade-in slide-in-from-bottom-4 duration-1000\">\n {children}\n </div>\n ) : (\n <MessageList\n messages={messages}\n streaming={streaming}\n error={error}\n loadingStatus={{\n message: \"Processing...\"\n }}\n />\n )}\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full bg-gradient-to-t from-background via-background/90 to-transparent\">\n <div className=\"max-w-3xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n onStop={stop}\n placeholder={placeholder}\n streaming={streaming}\n autoFocus={autoFocus}\n />\n <div className=\"mt-2 text-center\">\n <p className=\"text-[10px] text-muted-foreground/60\">\n Melony can make mistakes. Check important info.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme } from \"../providers/theme-provider\";\nimport { Button } from \"../ui/button\";\nimport { Icon } from \"./Icon\";\nimport { cn } from \"../lib/utils\";\n\nexport function ThemeToggle() {\n const { theme, setTheme } = useTheme();\n\n const themes = [\n { name: \"light\", icon: \"Sun\", label: \"Light\" },\n { name: \"dark\", icon: \"Moon\", label: \"Dark\" },\n { name: \"system\", icon: \"Monitor\", label: \"System\" },\n ] as const;\n\n return (\n <div className=\"inline-flex items-center gap-1 rounded-full border bg-muted/50 p-1\">\n {themes.map((t) => (\n <Button\n key={t.name}\n variant={theme === t.name ? \"secondary\" : \"ghost\"}\n size=\"icon-xs\"\n onClick={() => setTheme(t.name as any)}\n className={cn(\n \"rounded-full transition-all\",\n theme === t.name && \"shadow-xs bg-background hover:bg-background\"\n )}\n >\n <Icon name={t.icon} size=\"sm\" />\n <span className=\"sr-only\">{t.label}</span>\n </Button>\n ))}\n </div>\n );\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n card: elements.Card,\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n badge: elements.Badge,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n list: elements.List,\n listItem: elements.ListItem,\n form: elements.Form,\n chart: elements.Chart,\n label: elements.Label,\n upload: elements.Upload,\n dropdown: elements.Dropdown,\n thread: elements.Thread,\n themeToggle: elements.ThemeToggle,\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/ui/card.tsx","../src/lib/theme-utils.ts","../src/elements/Card.tsx","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/List.tsx","../src/elements/ListItem.tsx","../src/ui/dialog.tsx","../src/elements/Icon.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/ui/badge.tsx","../src/elements/Badge.tsx","../src/elements/Chart.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/ui/dropdown-menu.tsx","../src/elements/Dropdown.tsx","../src/elements/Composer.tsx","../src/elements/MessageContent.tsx","../src/elements/Message.tsx","../src/elements/MessagesList.tsx","../src/elements/Thread.tsx","../src/providers/theme-provider.tsx","../src/elements/ThemeToggle.tsx","../src/index.ts"],"names":["Card","jsx","SeparatorPrimitive","DialogPrimitive","jsxs","Badge","useState","InputPrimitive","cva","Input","useMelony","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","Button","useRef","MenuPrimitive","MelonyRenderer","useMemo","useEffect","createContext","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"ring-foreground/10 bg-card text-card-foreground gap-2 overflow-hidden rounded-2xl py-0 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-4 group-data-[size=sm]/card:px-4 [.border-b]:pb-2 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"rounded-b-xl px-4 group-data-[size=sm]/card:px-4 [.border-t]:pt-2 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const wrapMap: Record<string, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap: Record<string, string> = {\n none: \"text-[0]\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\",\n};\n\nexport const textAlignMap: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n/**\n * Resolves an SDUI color (e.g., \"primary/50\") to a React style object.\n * This handles opacity using CSS Relative Color Syntax.\n */\nexport const resolveUIStyle = (\n property: \"backgroundColor\" | \"color\" | \"borderColor\",\n value?: UIColor,\n) => {\n if (!value) return {};\n\n const [colorName, opacityStr] = value.split(\"/\");\n\n // If it's a standard mapping and no opacity is requested, return nothing\n // and let the Tailwind classes handle it (to preserve text-foreground etc.)\n if (!opacityStr && (colorBgMap[value as UIColor] || colorTextMap[value as UIColor] || colorBorderMap[value as UIColor])) {\n return {};\n }\n\n const opacity = opacityStr ? parseInt(opacityStr, 10) / 100 : 1;\n\n // Map camelCase to kebab-case for CSS variables if needed, \n // but most of our colors are single words.\n const kebabName = colorName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n \n // Tailwind 4 defines colors as --color-{name}\n // Shadcn often defines them as --{name}\n const variable = `var(--color-${kebabName}, var(--${kebabName}))`;\n\n if (opacity === 1) {\n return { [property]: variable };\n }\n\n // Use CSS color-mix as it's very robust and handles the opacity well\n // mixed with transparent. This is a very safe way to handle opacity.\n return {\n [property]: `color-mix(in oklch, ${variable}, transparent ${100 - opacity * 100}%)`,\n };\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { cn } from \"../lib/utils\";\nimport {\n colorBgMap,\n paddingMap,\n radiusMap,\n shadowMap,\n} from \"../lib/theme-utils\";\n\nexport const Card: React.FC<\n UIContract[\"card\"] & { children?: React.ReactNode }\n> = ({\n children,\n title,\n subtitle,\n background,\n padding = \"md\",\n radius = \"md\",\n shadow = \"md\",\n}) => {\n return (\n <CardBase\n className={cn(\n \"w-full max-w-full relative overflow-hidden transition-all duration-200\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n shadow && shadowMap[shadow],\n !shadow && \"shadow-sm border border-border/40\",\n )}\n >\n {(title || subtitle) && (\n <CardHeader className=\"py-2.5 px-3 space-y-0.5 border-b border-border/40 bg-muted/5\">\n {title && <CardTitle className=\"text-sm font-semibold tracking-tight leading-none\">{title}</CardTitle>}\n {subtitle && <CardDescription className=\"text-xs leading-tight text-muted-foreground/80\">{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className={cn(\"flex flex-col gap-2\", paddingMap[padding])}>\n {children}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UIWrap, UISpacing, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n wrapMap,\n} from \"../lib/theme-utils\";\n\nexport const Row: React.FC<\n UIContract[\"row\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n wrapMap[wrap as UIWrap],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n\n// Add missing maps to theme-utils\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UISpacing, UIWidth, UIColor, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n colorBgMap,\n radiusMap,\n} from \"../lib/theme-utils\";\n\nexport const Col: React.FC<\n UIContract[\"col\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n gap = \"none\",\n width = \"auto\",\n height = \"auto\",\n padding = \"none\",\n background,\n radius,\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background as UIColor],\n radius && radiusMap[radius as UIRadius],\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract, UIColor, UIWidth, UISpacing, UIRadius, UIShadow } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n padding,\n paddingVertical,\n paddingHorizontal,\n margin,\n marginVertical,\n marginHorizontal,\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n flex = undefined,\n overflow = \"hidden\",\n } = props;\n const [baseBgColor] = (background || \"\").split(\"/\");\n const [baseBorderColor] = (borderColor || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n ...resolveUIStyle(\"borderColor\", borderColor),\n };\n\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical as UISpacing],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal as UISpacing],\n padding && paddingMap[padding as UISpacing],\n marginVertical && marginVerticalMap[marginVertical as UISpacing],\n marginHorizontal && marginHorizontalMap[marginHorizontal as UISpacing],\n margin && marginMap[margin as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n border && \"border\",\n baseBorderColor && colorBorderMap[baseBorderColor as UIColor],\n radiusMap[radius as UIRadius],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n shadowMap[shadow as UIShadow],\n group && \"group\",\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n overflow,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"none\",\n}) => {\n return (\n <Separator\n orientation={orientation}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, gapMap, widthMap } from \"../lib/theme-utils\";\n\nexport const List: React.FC<\n UIContract[\"list\"] & {\n children?: React.ReactNode;\n flex?: string;\n overflow?: string;\n }\n> = ({ children, padding = \"none\", gap = \"none\", flex, overflow, width }) => {\n return (\n <div\n className={cn(\n \"flex flex-col list-none m-0\",\n paddingMap[padding],\n gapMap[gap],\n widthMap[width as UIWidth],\n )}\n style={{ flex, overflow, width: width && typeof width === \"number\" ? `${width}px` : undefined }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIAlign, UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, colorBgMap, radiusMap, interactivePaddingMap } from \"../lib/theme-utils\";\nimport { Row } from \"./Row\";\n\nexport const ListItem: React.FC<\n UIContract[\"listItem\"] & { children?: React.ReactNode; align?: UIAlign }\n> = ({\n children,\n onClickAction,\n gap = \"sm\",\n padding = \"sm\",\n background,\n radius = \"md\",\n align = \"center\",\n truncate = false,\n}) => {\n const { send } = useMelony();\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex flex-row transition-colors text-sm\",\n interactivePaddingMap[padding],\n background ? colorBgMap[background] : isInteractive && \"hover:bg-muted\",\n radiusMap[radius],\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n truncate && \"truncate\",\n )}\n >\n <Row align={align} gap={gap}>\n {children}\n </Row>\n </div>\n );\n };\n","import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({ className, ...props }: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg outline-none\",\n className,\n )}\n {...props}\n />\n </DialogPortal>\n );\n}\n\nfunction DialogClose({ className, ...props }: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = (props) => {\n const {\n name,\n size = \"md\",\n color,\n className,\n } = props;\n const sizeMap = {\n sm: \"14px\",\n md: \"18px\",\n lg: \"24px\",\n };\n\n const resolvedSize =\n typeof size === \"number\"\n ? `${size}px`\n : sizeMap[size as keyof typeof sizeMap] || \"18px\";\n\n // Check if name is a Lucide icon\n const LucideIcon = (LucideIcons as any)[name];\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center leading-none\",\n color && colorTextMap[color],\n className\n )}\n style={{ \n fontSize: resolvedSize, \n width: resolvedSize, \n height: resolvedSize,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {LucideIcon ? (\n <LucideIcon size={resolvedSize} />\n ) : (\n name\n )}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"../ui/dialog\";\nimport { Icon } from \"./Icon\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"md\",\n objectFit = \"cover\",\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n // Navigation State\n const [currentIndex, setCurrentIndex] = useState(0);\n const [gallery, setGallery] = useState<{ src: string; alt: string }[]>([]);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && triggerRef.current) {\n let parent = triggerRef.current.parentElement;\n while (\n parent &&\n parent.parentElement &&\n parent.parentElement.children.length === 1\n ) {\n parent = parent.parentElement;\n }\n const container = parent?.parentElement;\n\n if (container) {\n const foundImgs = Array.from(container.querySelectorAll(\"img\"))\n .map((img) => ({\n src: img.getAttribute(\"src\") || \"\",\n alt: img.getAttribute(\"alt\") || \"\",\n }))\n .filter((v, i, a) => a.findIndex((t) => t.src === v.src) === i);\n\n setGallery(foundImgs);\n const idx = foundImgs.findIndex((img) => img.src === src);\n setCurrentIndex(idx >= 0 ? idx : 0);\n }\n }\n }, [open, src]);\n\n const navigate = (dir: number) => {\n setCurrentIndex((prev) => (prev + dir + gallery.length) % gallery.length);\n };\n\n const currentImage = gallery[currentIndex] || { src, alt };\n const hasMultiple = gallery.length > 1;\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-muted text-muted-foreground\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height: height || \"100px\" }}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n ref={triggerRef}\n className={cn(\n \"relative overflow-hidden cursor-pointer\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n height ? \"h-full\" : \"h-auto\",\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none outline-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center group/lightbox\">\n <DialogClose className=\"absolute -top-12 right-0 text-white hover:text-gray-300 transition-colors z-50 bg-black/50 rounded-full p-2\">\n <Icon name=\"❌\" size={20} />\n </DialogClose>\n\n {hasMultiple && (\n <>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(-1);\n }}\n className=\"absolute left-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"◀️\" size={28} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(1);\n }}\n className=\"absolute right-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"▶️\" size={28} />\n </button>\n </>\n )}\n\n <img\n src={currentImage.src}\n alt={currentImage.alt || alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg shadow-2xl\"\n />\n\n {hasMultiple && (\n <div className=\"absolute -bottom-10 left-1/2 -translate-x-1/2 text-white bg-black/50 px-3 py-1 rounded-full text-sm font-medium\">\n {currentIndex + 1} / {gallery.length}\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\n\nexport const Badge: React.FC<UIContract[\"badge\"]> = ({\n label,\n variant = \"primary\",\n size = \"md\",\n}) => {\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\",\n warning: \"secondary\",\n outline: \"outline\",\n };\n\n const sizeClasses = {\n sm: \"text-[10px] px-1.5 py-0\",\n md: \"text-xs px-2.5 py-0.5\",\n lg: \"text-sm px-3 py-1\",\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant] || \"default\"}\n className={sizeClasses[size]}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\n\nexport const Chart: React.FC<UIContract[\"chart\"]> = ({\n data,\n chartType = \"bar\",\n title,\n height = 250,\n showValues = false,\n showGrid = false,\n showTooltips = true,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5 text-sm\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n\n // Use container width or default\n const chartHeight = height;\n const chartWidth = 600; // Will be responsive via viewBox\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing =\n data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth =\n (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x =\n padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: x + actualBarWidth / 2,\n y: y - 5,\n label: item.label,\n value: item.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({\n visible: false,\n x: 0,\n y: 0,\n label: \"\",\n value: 0,\n })\n }\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x:\n padding.left +\n (index / Math.max(data.length - 1, 1)) *\n (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item,\n }));\n\n const pathData = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n <path\n d={pathData}\n fill=\"none\"\n stroke={getColor(0)}\n strokeWidth={3}\n className=\"transition-all\"\n />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: point.x,\n y: point.y - 5,\n label: point.label,\n value: point.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })\n }\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className=\"py-4 w-full\">\n {title && (\n <div className=\"text-sm font-semibold mb-4 text-center\">{title}</div>\n )}\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = (props) => {\n const {\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n } = props;\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className,\n )}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { textAlignMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Heading: React.FC<UIContract[\"heading\"]> = ({\n value,\n level = 2,\n color = \"foreground\",\n align = \"start\",\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-2xl font-bold tracking-tight\",\n h2: \"text-xl font-semibold tracking-tight\",\n h3: \"text-lg font-semibold tracking-tight\",\n h4: \"text-base font-semibold tracking-tight\",\n h5: \"text-sm font-semibold\",\n h6: \"text-xs font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import React from \"react\";\nimport { UIContract, UIJustify } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { justify?: UIJustify }\n> = (props) => {\n const {\n type = \"button\",\n label,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n } = props;\n const { send } = useMelony();\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(width && widthMap[width], justifyMap[justify])}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : undefined }}\n >\n {label}\n </ButtonBase>\n );\n };\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import * as React from \"react\";\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\",\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <Icon name=\"▶️\" size=\"sm\" className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\",\n className,\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import * as React from \"react\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../lib/utils\";\nimport type { Event } from \"melony\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\n\nexport interface DropdownItem {\n label: string;\n icon?: string;\n onClickAction?: Event;\n}\n\n\nexport const Dropdown: React.FC<UIContract[\"dropdown\"] & { children?: React.ReactNode }> = ({ items = [], children }) => {\n const { send } = useMelony();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props: any) => (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n {...props}\n onClick={(e) => {\n e.stopPropagation();\n props.onClick?.(e);\n }}\n >\n {children || <Icon name=\"⋮\" size=\"sm\" />}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"start\" className={cn(\"w-32\")}>\n {items.map((item, i) => (\n <DropdownMenuItem\n key={`${item.label}-${i}`}\n onClick={(e) => {\n e.stopPropagation();\n if (item.onClickAction) {\n send(item.onClickAction);\n }\n }}\n >\n {item.icon && <Icon name={item.icon} size=\"sm\" />}\n <span className={item.icon ? \"ml-2\" : \"\"}>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Textarea } from \"../ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { Icon } from \"./Icon\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n onStop?: () => void;\n placeholder?: string;\n streaming?: boolean;\n className?: string;\n autoFocus?: boolean;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n onStop,\n placeholder = \"Type a message...\",\n streaming,\n className,\n autoFocus = false\n}: ComposerProps) {\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-border/60 border rounded-[26px] bg-muted/30 focus-within:bg-background focus-within:border-border focus-within:ring-[3px] focus-within:ring-primary/5 transition-all p-1.5 px-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none leading-relaxed\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center pb-1\">\n <div className=\"flex items-center gap-1 px-2\">\n {/* Add attachment/tool icons here later if needed */}\n </div>\n {streaming ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 rounded-full border border-border/40 hover:bg-muted\"\n onClick={() => onStop?.()}\n >\n <div className=\"w-2.5 h-2.5 bg-foreground rounded-[1px]\" />\n </Button>\n ) : (\n <Button\n type=\"submit\"\n disabled={!value.trim()}\n size=\"icon\"\n className={cn(\n \"h-8 w-8 rounded-full transition-all duration-300\",\n value.trim() ? \"bg-foreground text-background hover:opacity-90\" : \"bg-muted text-muted-foreground opacity-50\"\n )}\n onClick={() => onSubmit()}\n >\n <Icon name=\"ArrowUp\" size={18} />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Event, } from \"melony\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\n\ninterface MessageContentProps {\n content: Event[];\n}\n\nexport function MessageContent({ content }: MessageContentProps) {\n const elements: React.ReactNode[] = [];\n let currentTextBlock: string[] = [];\n\n const flushText = (key: number) => {\n if (currentTextBlock.length > 0) {\n elements.push(\n <div key={`text-${key}`} className=\"prose prose-sm dark:prose-invert max-w-none break-words [&>p]:mb-2 [&>p:last-child]:mb-0 [&>ul]:list-disc [&>ul]:pl-4 [&>ol]:list-decimal [&>ol]:pl-4 [&>li]:mb-1 [&>h1]:text-xl [&>h1]:font-bold [&>h1]:mb-2 [&>h2]:text-lg [&>h2]:font-bold [&>h2]:mb-2 [&>h3]:text-base [&>h3]:font-bold [&>h3]:mb-2 [&>pre]:bg-muted [&>pre]:p-2 [&>pre]:rounded [&>pre]:overflow-x-auto [&>pre]:mb-2 [&>code]:bg-muted [&>code]:px-1 [&>code]:py-0.5 [&>code]:rounded [&>code]:font-mono [&>code]:text-sm\">\n <ReactMarkdown remarkPlugins={[remarkGfm, remarkBreaks]}>\n {currentTextBlock.join(\"\")}\n </ReactMarkdown>\n </div>\n );\n currentTextBlock = [];\n }\n };\n\n content.forEach((event, index) => {\n const key = event.id || index;\n if (event.type === \"ui\") {\n flushText(index);\n elements.push(<MelonyRenderer key={key} node={event.data} />);\n } else if (event.type === \"assistant:text-delta\") {\n currentTextBlock.push(event.data.delta || \"\");\n } else if (event.type === \"assistant:text\" || event.type === \"user:text\") {\n const text = event.data.content || event.data.text || \"\";\n if (text) {\n currentTextBlock.push(text);\n }\n }\n });\n flushText(content.length);\n\n return <div className=\"flex flex-col space-y-2.5\">{elements}</div>;\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./MessageContent\";\n\ninterface MessageProps {\n message: AggregatedMessage;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div className={cn(\"flex flex-col w-full\", isUser ? \"items-end\" : \"items-start\")}>\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] transition-all duration-200\",\n isUser\n ? \"bg-muted/80 text-foreground px-3 py-1.5 rounded-lg\"\n : \"px-0 py-0 text-foreground w-full\",\n )}\n >\n <MessageContent content={message.content} />\n </div>\n </div>\n );\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { MessageBubble } from \"./Message\";\n\ninterface MessageListProps {\n messages: AggregatedMessage[];\n streaming?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({\n messages,\n streaming,\n error,\n loadingStatus,\n}: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n\n {streaming && (\n <div className=\"text-sm text-muted-foreground\">\n {loadingStatus?.message || \"Processing...\"}\n </div>\n )}\n\n {error && (\n <div className=\"text-sm text-destructive\">\n {error.message}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { Composer } from \"./Composer\";\nimport { MessageList } from \"./MessagesList\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport function Thread({\n placeholder = \"Type a message...\",\n messages: propMessages,\n autoFocus = false,\n children,\n}: UIContract[\"thread\"]) {\n const {\n streaming,\n error,\n send,\n stop,\n messages: melonyMessages,\n } = useMelony();\n\n // Use prop messages or aggregated messages from melony, filter for main thread\n // 1. Only include user and assistant roles\n // 2. UI events are already separated in aggregated messages\n const messages = useMemo(() => {\n return (propMessages || melonyMessages || []).filter((msg) =>\n [\"user\", \"assistant\"].includes(msg.role)\n );\n }, [propMessages, melonyMessages]);\n\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string,\n ) => {\n const text = (overrideInput ?? input).trim();\n const hasFiles =\n state?.files && Array.isArray(state.files) && state.files.length > 0;\n\n // Allow submission if there's text OR files OR options\n if ((!text && !hasFiles) || streaming) return;\n\n if (!overrideInput) setInput(\"\");\n\n await send({\n type: \"user:text\",\n data: { content: text || \"\" },\n });\n };\n\n return (\n <div className=\"relative flex flex-col h-full flex-1 overflow-hidden\">\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-3xl mx-auto w-full p-4\",\n )}\n >\n {messages.length === 0 && !streaming && children ? (\n <div className=\"flex flex-col items-start justify-center min-h-[50vh] space-y-6 animate-in fade-in slide-in-from-bottom-4 duration-1000\">\n {children}\n </div>\n ) : (\n <MessageList\n messages={messages}\n streaming={streaming}\n error={error}\n loadingStatus={{\n message: \"Processing...\"\n }}\n />\n )}\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full bg-gradient-to-t from-background via-background/90 to-transparent\">\n <div className=\"max-w-3xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n onStop={stop}\n placeholder={placeholder}\n streaming={streaming}\n autoFocus={autoFocus}\n />\n <div className=\"mt-2 text-center\">\n <p className=\"text-[10px] text-muted-foreground/60\">\n LLMs can make mistakes. Check important info.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme } from \"../providers/theme-provider\";\nimport { Button } from \"../ui/button\";\nimport { Icon } from \"./Icon\";\nimport { cn } from \"../lib/utils\";\n\nexport function ThemeToggle() {\n const { theme, setTheme } = useTheme();\n\n const themes = [\n { name: \"light\", icon: \"Sun\", label: \"Light\" },\n { name: \"dark\", icon: \"Moon\", label: \"Dark\" },\n { name: \"system\", icon: \"Monitor\", label: \"System\" },\n ] as const;\n\n return (\n <div className=\"inline-flex items-center gap-1 rounded-full border bg-muted/50 p-1\">\n {themes.map((t) => (\n <Button\n key={t.name}\n variant={theme === t.name ? \"secondary\" : \"ghost\"}\n size=\"icon-xs\"\n onClick={() => setTheme(t.name as any)}\n className={cn(\n \"rounded-full transition-all\",\n theme === t.name && \"shadow-xs bg-background hover:bg-background\"\n )}\n >\n <Icon name={t.icon} size=\"sm\" />\n <span className=\"sr-only\">{t.label}</span>\n </Button>\n ))}\n </div>\n );\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n card: elements.Card,\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n badge: elements.Badge,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n list: elements.List,\n listItem: elements.ListItem,\n form: elements.Form,\n chart: elements.Chart,\n label: elements.Label,\n upload: elements.Upload,\n dropdown: elements.Dropdown,\n thread: elements.Thread,\n themeToggle: elements.ThemeToggle,\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melony/ui-shadcn",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"react": "^18.0.0 || ^19.0.0",
|
|
30
30
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
31
31
|
"@melony/react": "0.2.7",
|
|
32
|
-
"@melony/ui-kit": "0.1.
|
|
32
|
+
"@melony/ui-kit": "0.1.5",
|
|
33
33
|
"melony": "0.2.8"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"rimraf": "^5.0.10",
|
|
43
43
|
"tsup": "^8.3.0",
|
|
44
44
|
"typescript": "^5.5.4",
|
|
45
|
-
"@melony/
|
|
45
|
+
"@melony/ui-kit": "0.1.5",
|
|
46
46
|
"melony": "0.2.8",
|
|
47
|
-
"@melony/
|
|
47
|
+
"@melony/react": "0.2.7"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|