@melony/ui-shadcn 0.1.2 → 0.1.3
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 +78 -17
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -92,6 +92,33 @@ var paddingMap = {
|
|
|
92
92
|
xl: "p-8",
|
|
93
93
|
xxl: "p-12"
|
|
94
94
|
};
|
|
95
|
+
var paddingVerticalMap = {
|
|
96
|
+
none: "py-0",
|
|
97
|
+
xs: "py-1",
|
|
98
|
+
sm: "py-2",
|
|
99
|
+
md: "py-4",
|
|
100
|
+
lg: "py-6",
|
|
101
|
+
xl: "py-8",
|
|
102
|
+
xxl: "py-12"
|
|
103
|
+
};
|
|
104
|
+
var paddingHorizontalMap = {
|
|
105
|
+
none: "px-0",
|
|
106
|
+
xs: "px-1",
|
|
107
|
+
sm: "px-2",
|
|
108
|
+
md: "px-4",
|
|
109
|
+
lg: "px-6",
|
|
110
|
+
xl: "px-8",
|
|
111
|
+
xxl: "px-12"
|
|
112
|
+
};
|
|
113
|
+
var interactivePaddingMap = {
|
|
114
|
+
none: "p-0",
|
|
115
|
+
xs: "py-1 px-2",
|
|
116
|
+
sm: "py-1.5 px-3",
|
|
117
|
+
md: "py-2 px-4",
|
|
118
|
+
lg: "py-3 px-6",
|
|
119
|
+
xl: "py-4 px-8",
|
|
120
|
+
xxl: "py-6 px-10"
|
|
121
|
+
};
|
|
95
122
|
var marginMap = {
|
|
96
123
|
none: "m-0",
|
|
97
124
|
xs: "m-1",
|
|
@@ -101,6 +128,24 @@ var marginMap = {
|
|
|
101
128
|
xl: "m-8",
|
|
102
129
|
xxl: "m-12"
|
|
103
130
|
};
|
|
131
|
+
var marginVerticalMap = {
|
|
132
|
+
none: "my-0",
|
|
133
|
+
xs: "my-1",
|
|
134
|
+
sm: "my-2",
|
|
135
|
+
md: "my-4",
|
|
136
|
+
lg: "my-6",
|
|
137
|
+
xl: "my-8",
|
|
138
|
+
xxl: "my-12"
|
|
139
|
+
};
|
|
140
|
+
var marginHorizontalMap = {
|
|
141
|
+
none: "mx-0",
|
|
142
|
+
xs: "mx-1",
|
|
143
|
+
sm: "mx-2",
|
|
144
|
+
md: "mx-4",
|
|
145
|
+
lg: "mx-6",
|
|
146
|
+
xl: "mx-8",
|
|
147
|
+
xxl: "mx-12"
|
|
148
|
+
};
|
|
104
149
|
var gapMap = {
|
|
105
150
|
none: "gap-0",
|
|
106
151
|
xs: "gap-1",
|
|
@@ -251,7 +296,8 @@ var Row = ({
|
|
|
251
296
|
wrap = "nowrap",
|
|
252
297
|
gap = "none",
|
|
253
298
|
padding = "none",
|
|
254
|
-
width = "full"
|
|
299
|
+
width = "full",
|
|
300
|
+
height = "auto"
|
|
255
301
|
}) => {
|
|
256
302
|
return /* @__PURE__ */ jsx(
|
|
257
303
|
"div",
|
|
@@ -263,8 +309,10 @@ var Row = ({
|
|
|
263
309
|
wrapMap[wrap],
|
|
264
310
|
gapMap[gap],
|
|
265
311
|
paddingMap[padding],
|
|
266
|
-
widthMap[width]
|
|
312
|
+
widthMap[width],
|
|
313
|
+
height === "full" && "h-full"
|
|
267
314
|
),
|
|
315
|
+
style: { width: width && typeof width === "number" ? `${width}px` : void 0 },
|
|
268
316
|
children
|
|
269
317
|
}
|
|
270
318
|
);
|
|
@@ -294,14 +342,19 @@ var Col = ({
|
|
|
294
342
|
background && colorBgMap[background],
|
|
295
343
|
radius && radiusMap[radius]
|
|
296
344
|
),
|
|
345
|
+
style: { width: width && typeof width === "number" ? `${width}px` : void 0 },
|
|
297
346
|
children
|
|
298
347
|
}
|
|
299
348
|
);
|
|
300
349
|
};
|
|
301
350
|
var Box = ({
|
|
302
351
|
children,
|
|
303
|
-
padding
|
|
304
|
-
|
|
352
|
+
padding,
|
|
353
|
+
paddingVertical,
|
|
354
|
+
paddingHorizontal,
|
|
355
|
+
margin,
|
|
356
|
+
marginVertical,
|
|
357
|
+
marginHorizontal,
|
|
305
358
|
background,
|
|
306
359
|
border = false,
|
|
307
360
|
borderColor = "border",
|
|
@@ -316,8 +369,12 @@ var Box = ({
|
|
|
316
369
|
{
|
|
317
370
|
className: cn(
|
|
318
371
|
"relative",
|
|
319
|
-
|
|
320
|
-
|
|
372
|
+
paddingVertical && paddingVerticalMap[paddingVertical],
|
|
373
|
+
paddingHorizontal && paddingHorizontalMap[paddingHorizontal],
|
|
374
|
+
padding && paddingMap[padding],
|
|
375
|
+
marginVertical && marginVerticalMap[marginVertical],
|
|
376
|
+
marginHorizontal && marginHorizontalMap[marginHorizontal],
|
|
377
|
+
margin && marginMap[margin],
|
|
321
378
|
background && colorBgMap[background],
|
|
322
379
|
border && "border",
|
|
323
380
|
border && colorBorderMap[borderColor],
|
|
@@ -327,6 +384,7 @@ var Box = ({
|
|
|
327
384
|
shadowMap[shadow],
|
|
328
385
|
group && "group"
|
|
329
386
|
),
|
|
387
|
+
style: { width: width && typeof width === "number" ? `${width}px` : void 0 },
|
|
330
388
|
children
|
|
331
389
|
}
|
|
332
390
|
);
|
|
@@ -400,7 +458,7 @@ function Separator({
|
|
|
400
458
|
var Divider = ({
|
|
401
459
|
orientation = "horizontal",
|
|
402
460
|
color = "border",
|
|
403
|
-
margin = "
|
|
461
|
+
margin = "none"
|
|
404
462
|
}) => {
|
|
405
463
|
return /* @__PURE__ */ jsx(
|
|
406
464
|
Separator,
|
|
@@ -446,7 +504,7 @@ var ListItem = ({
|
|
|
446
504
|
onClick: isInteractive ? handleClick : void 0,
|
|
447
505
|
className: cn(
|
|
448
506
|
"flex flex-row transition-colors text-sm",
|
|
449
|
-
|
|
507
|
+
interactivePaddingMap[padding],
|
|
450
508
|
background ? colorBgMap[background] : isInteractive && "hover:bg-muted",
|
|
451
509
|
radiusMap[radius],
|
|
452
510
|
isInteractive ? "cursor-pointer" : "cursor-default"
|
|
@@ -1888,6 +1946,17 @@ function Button({
|
|
|
1888
1946
|
}
|
|
1889
1947
|
);
|
|
1890
1948
|
}
|
|
1949
|
+
|
|
1950
|
+
// src/elements/helpers.ts
|
|
1951
|
+
var widthMap2 = {
|
|
1952
|
+
full: "w-full",
|
|
1953
|
+
auto: "w-auto",
|
|
1954
|
+
"1/2": "w-1/2",
|
|
1955
|
+
"1/3": "w-1/3",
|
|
1956
|
+
"2/3": "w-2/3",
|
|
1957
|
+
"1/4": "w-1/4",
|
|
1958
|
+
"3/4": "w-3/4"
|
|
1959
|
+
};
|
|
1891
1960
|
var Button2 = ({
|
|
1892
1961
|
type = "button",
|
|
1893
1962
|
label,
|
|
@@ -1909,15 +1978,6 @@ var Button2 = ({
|
|
|
1909
1978
|
ghost: "ghost",
|
|
1910
1979
|
link: "link"
|
|
1911
1980
|
};
|
|
1912
|
-
const widthMap2 = {
|
|
1913
|
-
full: "w-full",
|
|
1914
|
-
auto: "w-auto",
|
|
1915
|
-
"1/2": "w-1/2",
|
|
1916
|
-
"1/3": "w-1/3",
|
|
1917
|
-
"2/3": "w-2/3",
|
|
1918
|
-
"1/4": "w-1/4",
|
|
1919
|
-
"3/4": "w-3/4"
|
|
1920
|
-
};
|
|
1921
1981
|
return /* @__PURE__ */ jsx(
|
|
1922
1982
|
Button,
|
|
1923
1983
|
{
|
|
@@ -1931,6 +1991,7 @@ var Button2 = ({
|
|
|
1931
1991
|
send(onClickAction);
|
|
1932
1992
|
}
|
|
1933
1993
|
},
|
|
1994
|
+
style: { width: width && typeof width === "number" ? `${width}px` : void 0 },
|
|
1934
1995
|
children: label
|
|
1935
1996
|
}
|
|
1936
1997
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/ui/card.tsx","../src/lib/theme-utils.ts","../src/elements/Card.tsx","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/List.tsx","../src/elements/ListItem.tsx","../src/ui/dialog.tsx","../src/elements/Icon.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/ui/badge.tsx","../src/elements/Badge.tsx","../src/elements/Chart.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/ui/dropdown-menu.tsx","../src/elements/Dropdown.tsx","../src/elements/Composer.tsx","../src/elements/MessageContent.tsx","../src/elements/Message.tsx","../src/elements/MessagesList.tsx","../src/elements/Thread.tsx","../src/providers/theme-provider.tsx","../src/index.ts"],"names":["Card","jsx","SeparatorPrimitive","DialogPrimitive","jsxs","Badge","useState","InputPrimitive","cva","Input","useMelony","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","Button","widthMap","useRef","MenuPrimitive","MelonyRenderer","useMemo","useEffect","createContext","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-2xl py-6 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const 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 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 = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap = {\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 = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap = {\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 = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { cn } from \"../lib/utils\";\nimport {\n colorBgMap,\n paddingMap,\n radiusMap,\n shadowMap,\n} from \"../lib/theme-utils\";\n\nexport const Card: React.FC<\n UIContract[\"card\"] & { children?: React.ReactNode }\n> = ({\n children,\n title,\n subtitle,\n background,\n padding = \"md\",\n radius = \"md\",\n shadow = \"md\",\n}) => {\n return (\n <CardBase\n className={cn(\n \"min-w-96 relative\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n shadow && shadowMap[shadow],\n )}\n >\n {(title || subtitle) && (\n <CardHeader className=\"pb-3\">\n {title && <CardTitle className=\"text-lg\">{title}</CardTitle>}\n {subtitle && <CardDescription>{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className={cn(\"flex flex-col gap-4\", paddingMap[padding])}>\n {children}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } 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> = ({\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-row\",\n alignMap[align],\n justifyMap[justify],\n wrapMap[wrap],\n gapMap[gap],\n paddingMap[padding],\n widthMap[width],\n )}\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 } 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> = ({\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}) => {\n return (\n <div\n className={cn(\n \"flex flex-col\",\n alignMap[align],\n justifyMap[justify],\n gapMap[gap],\n paddingMap[padding],\n widthMap[width],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n )}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n} from \"../lib/theme-utils\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = ({\n children,\n padding = \"none\",\n margin = \"none\",\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n}) => {\n return (\n <div\n className={cn(\n \"relative\",\n paddingMap[padding],\n marginMap[margin],\n background && colorBgMap[background],\n border && \"border\",\n border && colorBorderMap[borderColor],\n radiusMap[radius],\n widthMap[width],\n height === \"full\" && \"h-full\",\n shadowMap[shadow],\n group && \"group\",\n )}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"md\",\n}) => {\n return (\n <Separator\n orientation={orientation}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, gapMap } from \"../lib/theme-utils\";\n\nexport const List: React.FC<\n UIContract[\"list\"] & {\n children?: React.ReactNode;\n flex?: string;\n overflow?: string;\n }\n> = ({ children, padding = \"none\", gap = \"none\", flex, overflow }) => {\n return (\n <div\n className={cn(\n \"flex flex-col list-none m-0\",\n paddingMap[padding],\n gapMap[gap],\n )}\n style={{ flex, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIAlign, UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, colorBgMap, radiusMap } from \"../lib/theme-utils\";\nimport { Row } from \"./Row\";\n\nexport const ListItem: React.FC<\n UIContract[\"listItem\"] & { children?: React.ReactNode; align?: UIAlign }\n> = ({\n children,\n onClickAction,\n gap = \"sm\",\n padding = \"sm\",\n background,\n radius = \"md\",\n align = \"center\",\n}) => {\n const { send } = useMelony();\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex flex-row transition-colors text-sm\",\n paddingMap[padding],\n background ? colorBgMap[background] : isInteractive && \"hover:bg-muted\",\n radiusMap[radius],\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n )}\n >\n <Row align={align} gap={gap}>\n {children}\n </Row>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({ className, ...props }: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg outline-none\",\n className,\n )}\n {...props}\n />\n </DialogPortal>\n );\n}\n\nfunction DialogClose({ className, ...props }: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = ({\n name,\n size = \"md\",\n color,\n className,\n}) => {\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 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 {name}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"../ui/dialog\";\nimport { Icon } from \"./Icon\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"md\",\n objectFit = \"cover\",\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n // Navigation State\n const [currentIndex, setCurrentIndex] = useState(0);\n const [gallery, setGallery] = useState<{ src: string; alt: string }[]>([]);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && triggerRef.current) {\n let parent = triggerRef.current.parentElement;\n while (\n parent &&\n parent.parentElement &&\n parent.parentElement.children.length === 1\n ) {\n parent = parent.parentElement;\n }\n const container = parent?.parentElement;\n\n if (container) {\n const foundImgs = Array.from(container.querySelectorAll(\"img\"))\n .map((img) => ({\n src: img.getAttribute(\"src\") || \"\",\n alt: img.getAttribute(\"alt\") || \"\",\n }))\n .filter((v, i, a) => a.findIndex((t) => t.src === v.src) === i);\n\n setGallery(foundImgs);\n const idx = foundImgs.findIndex((img) => img.src === src);\n setCurrentIndex(idx >= 0 ? idx : 0);\n }\n }\n }, [open, src]);\n\n const navigate = (dir: number) => {\n setCurrentIndex((prev) => (prev + dir + gallery.length) % gallery.length);\n };\n\n const currentImage = gallery[currentIndex] || { src, alt };\n const hasMultiple = gallery.length > 1;\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-muted text-muted-foreground\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height: height || \"100px\" }}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n ref={triggerRef}\n className={cn(\n \"relative overflow-hidden cursor-pointer\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n height ? \"h-full\" : \"h-auto\",\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none outline-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center group/lightbox\">\n <DialogClose className=\"absolute -top-12 right-0 text-white hover:text-gray-300 transition-colors z-50 bg-black/50 rounded-full p-2\">\n <Icon name=\"❌\" size={20} />\n </DialogClose>\n\n {hasMultiple && (\n <>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(-1);\n }}\n className=\"absolute left-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"◀️\" size={28} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(1);\n }}\n className=\"absolute right-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"▶️\" size={28} />\n </button>\n </>\n )}\n\n <img\n src={currentImage.src}\n alt={currentImage.alt || alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg shadow-2xl\"\n />\n\n {hasMultiple && (\n <div className=\"absolute -bottom-10 left-1/2 -translate-x-1/2 text-white bg-black/50 px-3 py-1 rounded-full text-sm font-medium\">\n {currentIndex + 1} / {gallery.length}\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\n\nexport const Badge: React.FC<UIContract[\"badge\"]> = ({\n label,\n variant = \"primary\",\n size = \"md\",\n}) => {\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\",\n warning: \"secondary\",\n outline: \"outline\",\n };\n\n const sizeClasses = {\n sm: \"text-[10px] px-1.5 py-0\",\n md: \"text-xs px-2.5 py-0.5\",\n lg: \"text-sm px-3 py-1\",\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant] || \"default\"}\n className={sizeClasses[size]}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\n\nexport const Chart: React.FC<UIContract[\"chart\"]> = ({\n data,\n chartType = \"bar\",\n title,\n height = 250,\n showValues = false,\n showGrid = false,\n showTooltips = true,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5 text-sm\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n\n // Use container width or default\n const chartHeight = height;\n const chartWidth = 600; // Will be responsive via viewBox\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing =\n data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth =\n (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x =\n padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: x + actualBarWidth / 2,\n y: y - 5,\n label: item.label,\n value: item.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({\n visible: false,\n x: 0,\n y: 0,\n label: \"\",\n value: 0,\n })\n }\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x:\n padding.left +\n (index / Math.max(data.length - 1, 1)) *\n (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item,\n }));\n\n const pathData = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n <path\n d={pathData}\n fill=\"none\"\n stroke={getColor(0)}\n strokeWidth={3}\n className=\"transition-all\"\n />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: point.x,\n y: point.y - 5,\n label: point.label,\n value: point.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })\n }\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className=\"py-4 w-full\">\n {title && (\n <div className=\"text-sm font-semibold mb-4 text-center\">{title}</div>\n )}\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = ({\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n}) => {\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\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-3xl font-bold tracking-tight\",\n h2: \"text-2xl font-semibold tracking-tight\",\n h3: \"text-xl font-semibold tracking-tight\",\n h4: \"text-lg font-semibold tracking-tight\",\n h5: \"text-base font-semibold\",\n h6: \"text-sm font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import React from \"react\";\nimport { UIContract, UIJustify } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { justify?: UIJustify }\n> = ({\n type = \"button\",\n label,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n}) => {\n const { send } = useMelony();\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n const widthMap: Record<string, string> = {\n full: \"w-full\",\n auto: \"w-auto\",\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\n return (\n <ButtonBase\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(width && widthMap[width], justifyMap[justify])}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n >\n {label}\n </ButtonBase>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import * as React from \"react\";\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\",\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <Icon name=\"▶️\" size=\"sm\" className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\",\n className,\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import * as React from \"react\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../lib/utils\";\nimport type { Event } from \"melony\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\n\nexport interface DropdownItem {\n label: string;\n icon?: string;\n onClickAction?: Event;\n}\n\n\nexport const Dropdown: React.FC<UIContract[\"dropdown\"] & { children?: React.ReactNode }> = ({ items = [], children }) => {\n const { send } = useMelony();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props: any) => (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n {...props}\n onClick={(e) => {\n e.stopPropagation();\n props.onClick?.(e);\n }}\n >\n {children || <Icon name=\"⋮\" size=\"sm\" />}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"start\" className={cn(\"w-32\")}>\n {items.map((item, i) => (\n <DropdownMenuItem\n key={`${item.label}-${i}`}\n onClick={(e) => {\n e.stopPropagation();\n if (item.onClickAction) {\n send(item.onClickAction);\n }\n }}\n >\n {item.icon && <Icon name={item.icon} size=\"sm\" />}\n <span className={item.icon ? \"ml-2\" : \"\"}>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Textarea } from \"../ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { Icon } from \"./Icon\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n onStop?: () => void;\n placeholder?: string;\n streaming?: boolean;\n className?: string;\n autoFocus?: boolean;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n onStop,\n placeholder = \"Type a message...\",\n streaming,\n className,\n autoFocus = false\n}: ComposerProps) {\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-input border-[1.5px] rounded-3xl bg-background shadow-sm focus-within:border-ring transition-all p-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center px-1\">\n <div className=\"flex items-center gap-1\">\n </div>\n {streaming ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"default\"\n onClick={() => onStop?.()}\n >\n <span className=\"flex items-center gap-2\">\n <span className=\"w-2.5 h-2.5 bg-foreground rounded-[2px]\" />\n Stop\n </span>\n </Button>\n ) : (\n <Button\n type=\"submit\"\n disabled={!value.trim()}\n size=\"default\"\n onClick={() => onSubmit()}\n >\n <span>Send</span>\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Event, } from \"melony\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\n\ninterface MessageContentProps {\n content: Event[];\n}\n\nexport function MessageContent({ content }: MessageContentProps) {\n const elements: React.ReactNode[] = [];\n let currentTextBlock: string[] = [];\n\n const flushText = (key: number) => {\n if (currentTextBlock.length > 0) {\n elements.push(\n <p key={`text-${key}`} className=\"whitespace-pre-wrap\">\n {currentTextBlock.join(\"\")}\n </p>\n );\n currentTextBlock = [];\n }\n };\n\n content.forEach((event, index) => {\n const key = event.id || index;\n if (event.type === \"ui\") {\n flushText(index);\n elements.push(<MelonyRenderer key={key} node={event.data} />);\n } else if (event.type === \"assistant:text-delta\") {\n currentTextBlock.push(event.data.delta || \"\");\n } else if (event.type === \"assistant:text\" || event.type === \"user:text\") {\n const text = event.data.content || event.data.text || \"\";\n if (text) {\n currentTextBlock.push(text);\n }\n }\n });\n flushText(content.length);\n\n return <div className=\"flex flex-col space-y-4\">{elements}</div>;\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./MessageContent\";\n\ninterface MessageProps {\n message: AggregatedMessage;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div className={cn(\"flex flex-col\", isUser ? \"items-end\" : \"items-start\")}>\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap\",\n isUser\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\",\n )}\n >\n <MessageContent content={message.content} />\n </div>\n </div>\n );\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { MessageBubble } from \"./Message\";\n\ninterface MessageListProps {\n messages: AggregatedMessage[];\n streaming?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({\n messages,\n streaming,\n error,\n loadingStatus,\n}: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n\n {streaming && (\n <div className=\"text-sm text-muted-foreground\">\n {loadingStatus?.message || \"Processing...\"}\n </div>\n )}\n\n {error && (\n <div className=\"text-sm text-destructive\">\n {error.message}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport { useMelony, AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { Composer } from \"./Composer\";\nimport { MessageList } from \"./MessagesList\";\nimport { Icon } from \"./Icon\";\n\ninterface ThreadProps {\n placeholder?: string;\n messages?: AggregatedMessage[];\n autoFocus?: boolean;\n welcomeTitle?: string;\n welcomeMessage?: string;\n suggestions?: string[];\n}\n\nexport function Thread({\n placeholder = \"Type a message...\",\n messages: propMessages,\n autoFocus = false,\n welcomeTitle,\n welcomeMessage,\n suggestions,\n}: ThreadProps) {\n const {\n streaming,\n error,\n send,\n stop,\n messages: melonyMessages,\n } = useMelony();\n\n // Use prop messages or aggregated messages from melony context, filter for main thread\n // 1. Only include user and assistant roles\n // 2. UI events are already separated in aggregated messages\n const messages = useMemo(() => {\n return (propMessages || melonyMessages || []).filter((msg) =>\n [\"user\", \"assistant\"].includes(msg.role)\n );\n }, [propMessages, melonyMessages]);\n\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string,\n ) => {\n const text = (overrideInput ?? input).trim();\n const hasFiles =\n state?.files && Array.isArray(state.files) && state.files.length > 0;\n\n // Allow submission if there's text OR files OR options\n if ((!text && !hasFiles) || streaming) return;\n\n if (!overrideInput) setInput(\"\");\n\n await send({\n type: \"user:text\",\n data: { content: text || \"\" },\n });\n };\n\n return (\n <div className=\"relative flex flex-col h-full bg-background flex-1 overflow-hidden\">\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-3xl mx-auto w-full p-8\",\n )}\n >\n {messages.length === 0 && !streaming && (welcomeTitle || welcomeMessage || suggestions) ? (\n <div className=\"flex flex-col items-start justify-center min-h-[50vh] space-y-6 animate-in fade-in slide-in-from-bottom-4 duration-1000\">\n {welcomeTitle && (\n <h1 className=\"text-4xl md:text-5xl font-bold pb-2\">\n {welcomeTitle}\n </h1>\n )}\n {welcomeMessage && (\n <p className=\"text-xl text-muted-foreground max-w-lg\">\n {welcomeMessage}\n </p>\n )}\n {suggestions && suggestions.length > 0 && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-2xl mt-8\">\n {suggestions.map((suggestion, i) => (\n <button\n key={i}\n onClick={() => handleSubmit({}, suggestion)}\n className=\"flex items-center justify-between p-4 rounded-2xl border bg-card hover:bg-accent hover:border-accent-foreground/20 transition-all text-left group\"\n >\n <span className=\"text-sm font-medium\">{suggestion}</span>\n <Icon name=\"✨\" size=\"sm\" className=\"text-muted-foreground group-hover:text-primary transition-colors\" />\n </button>\n ))}\n </div>\n )}\n </div>\n ) : (\n <MessageList\n messages={messages}\n streaming={streaming}\n error={error}\n loadingStatus={{\n message: \"Processing...\"\n }}\n />\n )}\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full\">\n <div className=\"max-w-3xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n onStop={stop}\n placeholder={placeholder}\n streaming={streaming}\n autoFocus={autoFocus}\n />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n card: elements.Card,\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n badge: elements.Badge,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n list: elements.List,\n listItem: elements.ListItem,\n form: elements.Form,\n chart: elements.Chart,\n label: elements.Label,\n upload: elements.Upload,\n dropdown: elements.Dropdown,\n thread: elements.Thread,\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/ui/card.tsx","../src/lib/theme-utils.ts","../src/elements/Card.tsx","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/List.tsx","../src/elements/ListItem.tsx","../src/ui/dialog.tsx","../src/elements/Icon.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/ui/badge.tsx","../src/elements/Badge.tsx","../src/elements/Chart.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/helpers.ts","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/ui/dropdown-menu.tsx","../src/elements/Dropdown.tsx","../src/elements/Composer.tsx","../src/elements/MessageContent.tsx","../src/elements/Message.tsx","../src/elements/MessagesList.tsx","../src/elements/Thread.tsx","../src/providers/theme-provider.tsx","../src/index.ts"],"names":["Card","jsx","SeparatorPrimitive","DialogPrimitive","jsxs","Badge","useState","InputPrimitive","cva","Input","useMelony","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","widthMap","Button","useRef","MenuPrimitive","MelonyRenderer","useMemo","useEffect","createContext","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-2xl py-6 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap = {\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 = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap = {\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 = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { cn } from \"../lib/utils\";\nimport {\n colorBgMap,\n paddingMap,\n radiusMap,\n shadowMap,\n} from \"../lib/theme-utils\";\n\nexport const Card: React.FC<\n UIContract[\"card\"] & { children?: React.ReactNode }\n> = ({\n children,\n title,\n subtitle,\n background,\n padding = \"md\",\n radius = \"md\",\n shadow = \"md\",\n}) => {\n return (\n <CardBase\n className={cn(\n \"min-w-96 relative\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n shadow && shadowMap[shadow],\n )}\n >\n {(title || subtitle) && (\n <CardHeader className=\"pb-3\">\n {title && <CardTitle className=\"text-lg\">{title}</CardTitle>}\n {subtitle && <CardDescription>{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className={cn(\"flex flex-col gap-4\", paddingMap[padding])}>\n {children}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } 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> = ({\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-row\",\n alignMap[align],\n justifyMap[justify],\n wrapMap[wrap],\n gapMap[gap],\n paddingMap[padding],\n widthMap[width],\n height === \"full\" && \"h-full\",\n )}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : undefined }}\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 } 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> = ({\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}) => {\n return (\n <div\n className={cn(\n \"flex flex-col\",\n alignMap[align],\n justifyMap[justify],\n gapMap[gap],\n paddingMap[padding],\n widthMap[width],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background],\n radius && radiusMap[radius],\n )}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : 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 {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n} from \"../lib/theme-utils\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = ({\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}) => {\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal],\n padding && paddingMap[padding],\n marginVertical && marginVerticalMap[marginVertical],\n marginHorizontal && marginHorizontalMap[marginHorizontal],\n margin && marginMap[margin],\n background && colorBgMap[background],\n border && \"border\",\n border && colorBorderMap[borderColor],\n radiusMap[radius],\n widthMap[width],\n height === \"full\" && \"h-full\",\n shadowMap[shadow],\n group && \"group\",\n )}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : 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}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, gapMap } from \"../lib/theme-utils\";\n\nexport const List: React.FC<\n UIContract[\"list\"] & {\n children?: React.ReactNode;\n flex?: string;\n overflow?: string;\n }\n> = ({ children, padding = \"none\", gap = \"none\", flex, overflow }) => {\n return (\n <div\n className={cn(\n \"flex flex-col list-none m-0\",\n paddingMap[padding],\n gapMap[gap],\n )}\n style={{ flex, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIAlign, UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap, colorBgMap, radiusMap, interactivePaddingMap } from \"../lib/theme-utils\";\nimport { Row } from \"./Row\";\n\nexport const ListItem: React.FC<\n UIContract[\"listItem\"] & { children?: React.ReactNode; align?: UIAlign }\n> = ({\n children,\n onClickAction,\n gap = \"sm\",\n padding = \"sm\",\n background,\n radius = \"md\",\n align = \"center\",\n}) => {\n const { send } = useMelony();\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex flex-row transition-colors text-sm\",\n interactivePaddingMap[padding],\n background ? colorBgMap[background] : isInteractive && \"hover:bg-muted\",\n radiusMap[radius],\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n )}\n >\n <Row align={align} gap={gap}>\n {children}\n </Row>\n </div>\n );\n };\n","import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({ className, ...props }: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg outline-none\",\n className,\n )}\n {...props}\n />\n </DialogPortal>\n );\n}\n\nfunction DialogClose({ className, ...props }: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = ({\n name,\n size = \"md\",\n color,\n className,\n}) => {\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 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 {name}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"../ui/dialog\";\nimport { Icon } from \"./Icon\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"md\",\n objectFit = \"cover\",\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n // Navigation State\n const [currentIndex, setCurrentIndex] = useState(0);\n const [gallery, setGallery] = useState<{ src: string; alt: string }[]>([]);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && triggerRef.current) {\n let parent = triggerRef.current.parentElement;\n while (\n parent &&\n parent.parentElement &&\n parent.parentElement.children.length === 1\n ) {\n parent = parent.parentElement;\n }\n const container = parent?.parentElement;\n\n if (container) {\n const foundImgs = Array.from(container.querySelectorAll(\"img\"))\n .map((img) => ({\n src: img.getAttribute(\"src\") || \"\",\n alt: img.getAttribute(\"alt\") || \"\",\n }))\n .filter((v, i, a) => a.findIndex((t) => t.src === v.src) === i);\n\n setGallery(foundImgs);\n const idx = foundImgs.findIndex((img) => img.src === src);\n setCurrentIndex(idx >= 0 ? idx : 0);\n }\n }\n }, [open, src]);\n\n const navigate = (dir: number) => {\n setCurrentIndex((prev) => (prev + dir + gallery.length) % gallery.length);\n };\n\n const currentImage = gallery[currentIndex] || { src, alt };\n const hasMultiple = gallery.length > 1;\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-muted text-muted-foreground\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height: height || \"100px\" }}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n ref={triggerRef}\n className={cn(\n \"relative overflow-hidden cursor-pointer\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n height ? \"h-full\" : \"h-auto\",\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none outline-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center group/lightbox\">\n <DialogClose className=\"absolute -top-12 right-0 text-white hover:text-gray-300 transition-colors z-50 bg-black/50 rounded-full p-2\">\n <Icon name=\"❌\" size={20} />\n </DialogClose>\n\n {hasMultiple && (\n <>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(-1);\n }}\n className=\"absolute left-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"◀️\" size={28} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(1);\n }}\n className=\"absolute right-4 z-50 p-3 bg-black/40 hover:bg-black/60 text-white rounded-full transition-all opacity-0 group-hover/lightbox:opacity-100\"\n >\n <Icon name=\"▶️\" size={28} />\n </button>\n </>\n )}\n\n <img\n src={currentImage.src}\n alt={currentImage.alt || alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg shadow-2xl\"\n />\n\n {hasMultiple && (\n <div className=\"absolute -bottom-10 left-1/2 -translate-x-1/2 text-white bg-black/50 px-3 py-1 rounded-full text-sm font-medium\">\n {currentIndex + 1} / {gallery.length}\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\n\nexport const Badge: React.FC<UIContract[\"badge\"]> = ({\n label,\n variant = \"primary\",\n size = \"md\",\n}) => {\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\",\n warning: \"secondary\",\n outline: \"outline\",\n };\n\n const sizeClasses = {\n sm: \"text-[10px] px-1.5 py-0\",\n md: \"text-xs px-2.5 py-0.5\",\n lg: \"text-sm px-3 py-1\",\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant] || \"default\"}\n className={sizeClasses[size]}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\n\nexport const Chart: React.FC<UIContract[\"chart\"]> = ({\n data,\n chartType = \"bar\",\n title,\n height = 250,\n showValues = false,\n showGrid = false,\n showTooltips = true,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5 text-sm\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n\n // Use container width or default\n const chartHeight = height;\n const chartWidth = 600; // Will be responsive via viewBox\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing =\n data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth =\n (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x =\n padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: x + actualBarWidth / 2,\n y: y - 5,\n label: item.label,\n value: item.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({\n visible: false,\n x: 0,\n y: 0,\n label: \"\",\n value: 0,\n })\n }\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x:\n padding.left +\n (index / Math.max(data.length - 1, 1)) *\n (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item,\n }));\n\n const pathData = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n\n return (\n <svg\n viewBox={`0 0 ${chartWidth} ${chartHeight + padding.bottom}`}\n className=\"w-full h-auto overflow-visible\"\n >\n {renderGrid()}\n <path\n d={pathData}\n fill=\"none\"\n stroke={getColor(0)}\n strokeWidth={3}\n className=\"transition-all\"\n />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() =>\n showTooltips &&\n setTooltip({\n visible: true,\n x: point.x,\n y: point.y - 5,\n label: point.label,\n value: point.value,\n })\n }\n onMouseLeave={() =>\n setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })\n }\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className=\"py-4 w-full\">\n {title && (\n <div className=\"text-sm font-semibold mb-4 text-center\">{title}</div>\n )}\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = ({\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n}) => {\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\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-3xl font-bold tracking-tight\",\n h2: \"text-2xl font-semibold tracking-tight\",\n h3: \"text-xl font-semibold tracking-tight\",\n h4: \"text-lg font-semibold tracking-tight\",\n h5: \"text-base font-semibold\",\n h6: \"text-sm font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","// Helper function to darken a hex color\nexport const darkenColor = (color: string, amount: number): string => {\n const num = parseInt(color.replace(\"#\", \"\"), 16);\n const r = Math.max(0, ((num >> 16) & 0xff) - amount);\n const g = Math.max(0, ((num >> 8) & 0xff) - amount);\n const b = Math.max(0, (num & 0xff) - amount);\n return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, \"0\")}`;\n};\n\nexport const widthMap: Record<string, string> = {\n full: \"w-full\",\n auto: \"w-auto\",\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};","import React from \"react\";\nimport { UIContract, UIJustify } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap } from \"../lib/theme-utils\";\nimport { widthMap } from \"./helpers\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { justify?: UIJustify }\n> = ({\n type = \"button\",\n label,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n}) => {\n const { send } = useMelony();\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(width && widthMap[width], justifyMap[justify])}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{ width: width && typeof width === \"number\" ? `${width}px` : undefined }}\n >\n {label}\n </ButtonBase>\n );\n };\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import * as React from \"react\";\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\",\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <Icon name=\"▶️\" size=\"sm\" className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\",\n className,\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <Icon name=\"✅\" size=\"sm\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import * as React from \"react\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../lib/utils\";\nimport type { Event } from \"melony\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\n\nexport interface DropdownItem {\n label: string;\n icon?: string;\n onClickAction?: Event;\n}\n\n\nexport const Dropdown: React.FC<UIContract[\"dropdown\"] & { children?: React.ReactNode }> = ({ items = [], children }) => {\n const { send } = useMelony();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props: any) => (\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n {...props}\n onClick={(e) => {\n e.stopPropagation();\n props.onClick?.(e);\n }}\n >\n {children || <Icon name=\"⋮\" size=\"sm\" />}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"start\" className={cn(\"w-32\")}>\n {items.map((item, i) => (\n <DropdownMenuItem\n key={`${item.label}-${i}`}\n onClick={(e) => {\n e.stopPropagation();\n if (item.onClickAction) {\n send(item.onClickAction);\n }\n }}\n >\n {item.icon && <Icon name={item.icon} size=\"sm\" />}\n <span className={item.icon ? \"ml-2\" : \"\"}>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Textarea } from \"../ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { Icon } from \"./Icon\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n onStop?: () => void;\n placeholder?: string;\n streaming?: boolean;\n className?: string;\n autoFocus?: boolean;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n onStop,\n placeholder = \"Type a message...\",\n streaming,\n className,\n autoFocus = false\n}: ComposerProps) {\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-input border-[1.5px] rounded-3xl bg-background shadow-sm focus-within:border-ring transition-all p-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center px-1\">\n <div className=\"flex items-center gap-1\">\n </div>\n {streaming ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"default\"\n onClick={() => onStop?.()}\n >\n <span className=\"flex items-center gap-2\">\n <span className=\"w-2.5 h-2.5 bg-foreground rounded-[2px]\" />\n Stop\n </span>\n </Button>\n ) : (\n <Button\n type=\"submit\"\n disabled={!value.trim()}\n size=\"default\"\n onClick={() => onSubmit()}\n >\n <span>Send</span>\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Event, } from \"melony\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\n\ninterface MessageContentProps {\n content: Event[];\n}\n\nexport function MessageContent({ content }: MessageContentProps) {\n const elements: React.ReactNode[] = [];\n let currentTextBlock: string[] = [];\n\n const flushText = (key: number) => {\n if (currentTextBlock.length > 0) {\n elements.push(\n <p key={`text-${key}`} className=\"whitespace-pre-wrap\">\n {currentTextBlock.join(\"\")}\n </p>\n );\n currentTextBlock = [];\n }\n };\n\n content.forEach((event, index) => {\n const key = event.id || index;\n if (event.type === \"ui\") {\n flushText(index);\n elements.push(<MelonyRenderer key={key} node={event.data} />);\n } else if (event.type === \"assistant:text-delta\") {\n currentTextBlock.push(event.data.delta || \"\");\n } else if (event.type === \"assistant:text\" || event.type === \"user:text\") {\n const text = event.data.content || event.data.text || \"\";\n if (text) {\n currentTextBlock.push(text);\n }\n }\n });\n flushText(content.length);\n\n return <div className=\"flex flex-col space-y-4\">{elements}</div>;\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./MessageContent\";\n\ninterface MessageProps {\n message: AggregatedMessage;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div className={cn(\"flex flex-col\", isUser ? \"items-end\" : \"items-start\")}>\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap\",\n isUser\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\",\n )}\n >\n <MessageContent content={message.content} />\n </div>\n </div>\n );\n}\n","import { AggregatedMessage } from \"@melony/react\";\nimport { MessageBubble } from \"./Message\";\n\ninterface MessageListProps {\n messages: AggregatedMessage[];\n streaming?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({\n messages,\n streaming,\n error,\n loadingStatus,\n}: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n\n {streaming && (\n <div className=\"text-sm text-muted-foreground\">\n {loadingStatus?.message || \"Processing...\"}\n </div>\n )}\n\n {error && (\n <div className=\"text-sm text-destructive\">\n {error.message}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport { useMelony, AggregatedMessage } from \"@melony/react\";\nimport { cn } from \"@/lib/utils\";\nimport { Composer } from \"./Composer\";\nimport { MessageList } from \"./MessagesList\";\nimport { Icon } from \"./Icon\";\n\ninterface ThreadProps {\n placeholder?: string;\n messages?: AggregatedMessage[];\n autoFocus?: boolean;\n welcomeTitle?: string;\n welcomeMessage?: string;\n suggestions?: string[];\n}\n\nexport function Thread({\n placeholder = \"Type a message...\",\n messages: propMessages,\n autoFocus = false,\n welcomeTitle,\n welcomeMessage,\n suggestions,\n}: ThreadProps) {\n const {\n streaming,\n error,\n send,\n stop,\n messages: melonyMessages,\n } = useMelony();\n\n // Use prop messages or aggregated messages from melony context, filter for main thread\n // 1. Only include user and assistant roles\n // 2. UI events are already separated in aggregated messages\n const messages = useMemo(() => {\n return (propMessages || melonyMessages || []).filter((msg) =>\n [\"user\", \"assistant\"].includes(msg.role)\n );\n }, [propMessages, melonyMessages]);\n\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string,\n ) => {\n const text = (overrideInput ?? input).trim();\n const hasFiles =\n state?.files && Array.isArray(state.files) && state.files.length > 0;\n\n // Allow submission if there's text OR files OR options\n if ((!text && !hasFiles) || streaming) return;\n\n if (!overrideInput) setInput(\"\");\n\n await send({\n type: \"user:text\",\n data: { content: text || \"\" },\n });\n };\n\n return (\n <div className=\"relative flex flex-col h-full bg-background flex-1 overflow-hidden\">\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-3xl mx-auto w-full p-8\",\n )}\n >\n {messages.length === 0 && !streaming && (welcomeTitle || welcomeMessage || suggestions) ? (\n <div className=\"flex flex-col items-start justify-center min-h-[50vh] space-y-6 animate-in fade-in slide-in-from-bottom-4 duration-1000\">\n {welcomeTitle && (\n <h1 className=\"text-4xl md:text-5xl font-bold pb-2\">\n {welcomeTitle}\n </h1>\n )}\n {welcomeMessage && (\n <p className=\"text-xl text-muted-foreground max-w-lg\">\n {welcomeMessage}\n </p>\n )}\n {suggestions && suggestions.length > 0 && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-2xl mt-8\">\n {suggestions.map((suggestion, i) => (\n <button\n key={i}\n onClick={() => handleSubmit({}, suggestion)}\n className=\"flex items-center justify-between p-4 rounded-2xl border bg-card hover:bg-accent hover:border-accent-foreground/20 transition-all text-left group\"\n >\n <span className=\"text-sm font-medium\">{suggestion}</span>\n <Icon name=\"✨\" size=\"sm\" className=\"text-muted-foreground group-hover:text-primary transition-colors\" />\n </button>\n ))}\n </div>\n )}\n </div>\n ) : (\n <MessageList\n messages={messages}\n streaming={streaming}\n error={error}\n loadingStatus={{\n message: \"Processing...\"\n }}\n />\n )}\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full\">\n <div className=\"max-w-3xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n onStop={stop}\n placeholder={placeholder}\n streaming={streaming}\n autoFocus={autoFocus}\n />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n card: elements.Card,\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n badge: elements.Badge,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n list: elements.List,\n listItem: elements.ListItem,\n form: elements.Form,\n chart: elements.Chart,\n label: elements.Label,\n upload: elements.Upload,\n dropdown: elements.Dropdown,\n thread: elements.Thread,\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melony/ui-shadcn",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"react": "^18.0.0 || ^19.0.0",
|
|
20
20
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
21
|
+
"@melony/ui-kit": "0.1.2",
|
|
21
22
|
"@melony/react": "0.2.5",
|
|
22
|
-
"@melony/ui-kit": "0.1.1",
|
|
23
23
|
"melony": "0.2.6"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"react": "^19.0.0",
|
|
33
33
|
"react-dom": "^19.0.0",
|
|
34
34
|
"lucide-react": "^0.454.0",
|
|
35
|
-
"
|
|
36
|
-
"@melony/ui-kit": "0.1.
|
|
37
|
-
"melony": "0.2.
|
|
35
|
+
"melony": "0.2.6",
|
|
36
|
+
"@melony/ui-kit": "0.1.2",
|
|
37
|
+
"@melony/react": "0.2.5"
|
|
38
38
|
},
|
|
39
39
|
"publishConfig": {
|
|
40
40
|
"access": "public"
|