@melony/ui-shadcn 0.1.21 → 0.1.22
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 +43 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -25,6 +25,15 @@ function cn(...inputs) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
// src/lib/theme-utils.ts
|
|
28
|
+
var spacingMap = {
|
|
29
|
+
none: "0",
|
|
30
|
+
xs: "1",
|
|
31
|
+
sm: "2",
|
|
32
|
+
md: "4",
|
|
33
|
+
lg: "6",
|
|
34
|
+
xl: "8",
|
|
35
|
+
xxl: "12"
|
|
36
|
+
};
|
|
28
37
|
var paddingMap = {
|
|
29
38
|
none: "p-0",
|
|
30
39
|
xs: "p-1",
|
|
@@ -292,7 +301,7 @@ var Box = (props) => {
|
|
|
292
301
|
shadow = "none",
|
|
293
302
|
group = false,
|
|
294
303
|
flex = void 0,
|
|
295
|
-
overflow = "
|
|
304
|
+
overflow = "visible",
|
|
296
305
|
onClickAction,
|
|
297
306
|
maxWidth
|
|
298
307
|
} = props;
|
|
@@ -376,6 +385,38 @@ var Float = ({
|
|
|
376
385
|
}
|
|
377
386
|
);
|
|
378
387
|
};
|
|
388
|
+
var Sticky = ({
|
|
389
|
+
children,
|
|
390
|
+
top,
|
|
391
|
+
bottom,
|
|
392
|
+
left,
|
|
393
|
+
right,
|
|
394
|
+
zIndex = 10,
|
|
395
|
+
background,
|
|
396
|
+
padding
|
|
397
|
+
}) => {
|
|
398
|
+
const [baseBgColor] = (background || "").split("/");
|
|
399
|
+
const dynamicStyles = {
|
|
400
|
+
...resolveUIStyle("backgroundColor", background),
|
|
401
|
+
zIndex,
|
|
402
|
+
top: typeof top === "number" ? `${top}px` : top ? `calc(var(--spacing) * ${spacingMap[top]})` : void 0,
|
|
403
|
+
bottom: typeof bottom === "number" ? `${bottom}px` : bottom ? `calc(var(--spacing) * ${spacingMap[bottom]})` : void 0,
|
|
404
|
+
left: typeof left === "number" ? `${left}px` : left ? `calc(var(--spacing) * ${spacingMap[left]})` : void 0,
|
|
405
|
+
right: typeof right === "number" ? `${right}px` : right ? `calc(var(--spacing) * ${spacingMap[right]})` : void 0
|
|
406
|
+
};
|
|
407
|
+
return /* @__PURE__ */ jsx(
|
|
408
|
+
"div",
|
|
409
|
+
{
|
|
410
|
+
className: cn(
|
|
411
|
+
"sticky",
|
|
412
|
+
padding && paddingMap[padding],
|
|
413
|
+
baseBgColor && colorBgMap[baseBgColor]
|
|
414
|
+
),
|
|
415
|
+
style: dynamicStyles,
|
|
416
|
+
children
|
|
417
|
+
}
|
|
418
|
+
);
|
|
419
|
+
};
|
|
379
420
|
var Spacer = ({
|
|
380
421
|
size = "md",
|
|
381
422
|
direction = "vertical"
|
|
@@ -1776,6 +1817,7 @@ var shadcnElements = {
|
|
|
1776
1817
|
divider: Divider,
|
|
1777
1818
|
box: Box,
|
|
1778
1819
|
float: Float,
|
|
1820
|
+
sticky: Sticky,
|
|
1779
1821
|
image: Image,
|
|
1780
1822
|
video: Video,
|
|
1781
1823
|
icon: Icon,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/lib/theme-utils.ts","../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/Image.tsx","../src/elements/Video.tsx","../src/elements/Icon.tsx","../src/ui/badge.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/elements/StreamingText.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/providers/theme-provider.tsx","../src/index.ts"],"names":["jsx","SeparatorPrimitive","useMelony","InputPrimitive","cva","Input","jsxs","Textarea","SelectPrimitive","Select","Label","useState","React5","ButtonPrimitive","Button","useRef","createContext","useEffect","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 { 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, 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 = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row min-w-0\",\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 = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col min-w-0\",\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\";\nimport { useMelony } from \"@melony/react\";\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 onClickAction,\n maxWidth\n } = props;\n\n const { send } = useMelony();\n\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 const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\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 isInteractive && \"cursor-pointer\"\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : width,\n overflow,\n maxWidth: maxWidth && typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }}\n onClick={isInteractive ? handleClick : undefined}\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 as any}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\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 = \"none\",\n objectFit = \"cover\",\n}) => {\n return (\n <div\n className={cn(\n \"overflow-hidden\",\n typeof width === \"string\" && widthMap[width as UIWidth],\n radiusMap[radius as UIRadius],\n )}\n style={{\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : height,\n }}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\n \"block w-full\",\n height ? \"h-full\" : \"h-auto\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n )}\n />\n </div>\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 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 { 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 { 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 React, { useMemo } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\nimport { useMelony } from \"@melony/react\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const StreamingText: React.FC<UIContract[\"streamingText\"]> = (props) => {\n const {\n eventType,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n markdown = true,\n } = props;\n\n const { events } = useMelony();\n\n // Accumulate text from events that match this component's ID\n const text = useMemo(() => {\n return events\n .filter((e) => e.type === eventType)\n .map((e) => e.data?.delta || e.data?.text || e.data?.content || \"\")\n .filter(Boolean)\n .join(\"\");\n }, [events, eventType]);\n\n if (!text) return null;\n\n if (markdown) {\n return (\n <div\n className={cn(\n \"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 textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n <ReactMarkdown remarkPlugins={[remarkGfm, remarkBreaks]}>\n {text}\n </ReactMarkdown>\n </div>\n );\n }\n\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n {text}\n </span>\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 { colorBgMap, colorBorderMap, radiusMap, shadowMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n background = \"background\",\n border = true,\n shadow = \"none\",\n radius = \"none\",\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 <TextareaBase\n name={name}\n id={name}\n className={cn(\n background && colorBgMap[background],\n !border && \"border-none\",\n shadow && shadowMap[shadow],\n radius && radiusMap[radius],\n )}\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 * as React from \"react\";\nimport { 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\nconst Button = React.forwardRef<\n HTMLButtonElement,\n ButtonPrimitive.Props & VariantProps<typeof buttonVariants>\n>(({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { UIContract } 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\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n type = \"button\",\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n children,\n } = props;\n const { send } = useMelony();\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n if (!truncate) {\n setIsOverflowing(false);\n return;\n }\n\n const checkOverflow = () => {\n const el = buttonRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n };\n\n checkOverflow();\n\n const observer = new ResizeObserver(checkOverflow);\n if (buttonRef.current) {\n observer.observe(buttonRef.current);\n }\n\n return () => observer.disconnect();\n }, [children, truncate]);\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 ref={buttonRef}\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(\n width && widthMap[width],\n justifyMap[justify],\n truncate && \"overflow-hidden whitespace-nowrap\",\n truncate && isOverflowing && \"mask-fade-out\",\n )}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n }}\n >\n {children}\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","\"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","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 button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\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 form: elements.Form,\n label: elements.Label,\n upload: elements.Upload,\n streamingText: elements.StreamingText\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/lib/theme-utils.ts","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Sticky.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/elements/Icon.tsx","../src/ui/badge.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/elements/StreamingText.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/providers/theme-provider.tsx","../src/index.ts"],"names":["jsx","SeparatorPrimitive","useMelony","InputPrimitive","cva","Input","jsxs","Textarea","SelectPrimitive","Select","Label","useState","React5","ButtonPrimitive","Button","useRef","createContext","useEffect","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 { 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, 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 = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row min-w-0\",\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 = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col min-w-0\",\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\";\nimport { useMelony } from \"@melony/react\";\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 = \"visible\",\n onClickAction,\n maxWidth\n } = props;\n\n const { send } = useMelony();\n\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 const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\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 isInteractive && \"cursor-pointer\"\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : width,\n overflow,\n maxWidth: maxWidth && typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }}\n onClick={isInteractive ? handleClick : undefined}\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, UISpacing, UIColor } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n colorBgMap,\n spacingMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\n\nexport const Sticky: React.FC<\n UIContract[\"sticky\"] & { children?: React.ReactNode }\n> = ({\n children,\n top,\n bottom,\n left,\n right,\n zIndex = 10,\n background,\n padding,\n}) => {\n const [baseBgColor] = (background || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n zIndex,\n top: typeof top === \"number\" ? `${top}px` : (top ? `calc(var(--spacing) * ${spacingMap[top as UISpacing]})` : undefined),\n bottom: typeof bottom === \"number\" ? `${bottom}px` : (bottom ? `calc(var(--spacing) * ${spacingMap[bottom as UISpacing]})` : undefined),\n left: typeof left === \"number\" ? `${left}px` : (left ? `calc(var(--spacing) * ${spacingMap[left as UISpacing]})` : undefined),\n right: typeof right === \"number\" ? `${right}px` : (right ? `calc(var(--spacing) * ${spacingMap[right as UISpacing]})` : undefined),\n };\n\n return (\n <div\n className={cn(\n \"sticky\",\n padding && paddingMap[padding as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n )}\n style={dynamicStyles}\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 as any}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\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 = \"none\",\n objectFit = \"cover\",\n}) => {\n return (\n <div\n className={cn(\n \"overflow-hidden\",\n typeof width === \"string\" && widthMap[width as UIWidth],\n radiusMap[radius as UIRadius],\n )}\n style={{\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : height,\n }}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\n \"block w-full\",\n height ? \"h-full\" : \"h-auto\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n )}\n />\n </div>\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 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 { 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 { 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 React, { useMemo } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\nimport { useMelony } from \"@melony/react\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const StreamingText: React.FC<UIContract[\"streamingText\"]> = (props) => {\n const {\n eventType,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n markdown = true,\n } = props;\n\n const { events } = useMelony();\n\n // Accumulate text from events that match this component's ID\n const text = useMemo(() => {\n return events\n .filter((e) => e.type === eventType)\n .map((e) => e.data?.delta || e.data?.text || e.data?.content || \"\")\n .filter(Boolean)\n .join(\"\");\n }, [events, eventType]);\n\n if (!text) return null;\n\n if (markdown) {\n return (\n <div\n className={cn(\n \"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 textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n <ReactMarkdown remarkPlugins={[remarkGfm, remarkBreaks]}>\n {text}\n </ReactMarkdown>\n </div>\n );\n }\n\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n {text}\n </span>\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 { colorBgMap, colorBorderMap, radiusMap, shadowMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n background = \"background\",\n border = true,\n shadow = \"none\",\n radius = \"none\",\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 <TextareaBase\n name={name}\n id={name}\n className={cn(\n background && colorBgMap[background],\n !border && \"border-none\",\n shadow && shadowMap[shadow],\n radius && radiusMap[radius],\n )}\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 * as React from \"react\";\nimport { 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\nconst Button = React.forwardRef<\n HTMLButtonElement,\n ButtonPrimitive.Props & VariantProps<typeof buttonVariants>\n>(({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { UIContract } 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\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n type = \"button\",\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n children,\n } = props;\n const { send } = useMelony();\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n if (!truncate) {\n setIsOverflowing(false);\n return;\n }\n\n const checkOverflow = () => {\n const el = buttonRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n };\n\n checkOverflow();\n\n const observer = new ResizeObserver(checkOverflow);\n if (buttonRef.current) {\n observer.observe(buttonRef.current);\n }\n\n return () => observer.disconnect();\n }, [children, truncate]);\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 ref={buttonRef}\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(\n width && widthMap[width],\n justifyMap[justify],\n truncate && \"overflow-hidden whitespace-nowrap\",\n truncate && isOverflowing && \"mask-fade-out\",\n )}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n }}\n >\n {children}\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","\"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","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 button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\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 sticky: elements.Sticky,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n form: elements.Form,\n label: elements.Label,\n upload: elements.Upload,\n streamingText: elements.StreamingText\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.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@melony/react": "^0.2.7",
|
|
30
|
-
"@melony/ui-kit": "^0.1.
|
|
30
|
+
"@melony/ui-kit": "^0.1.22",
|
|
31
31
|
"melony": "^0.2.9",
|
|
32
32
|
"react": "^18.0.0 || ^19.0.0",
|
|
33
33
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@melony/react": "^0.2.7",
|
|
37
|
-
"@melony/ui-kit": "^0.1.
|
|
37
|
+
"@melony/ui-kit": "^0.1.22",
|
|
38
38
|
"@types/node": "^20.14.10",
|
|
39
39
|
"@types/react": "^19.0.0",
|
|
40
40
|
"@types/react-dom": "^19.0.0",
|