@melony/ui-shadcn 0.1.12 → 0.1.14

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 CHANGED
@@ -8,7 +8,7 @@ import '@base-ui/react/merge-props';
8
8
  import '@base-ui/react/use-render';
9
9
  import { cva } from 'class-variance-authority';
10
10
  import * as React2 from 'react';
11
- import { createContext, useState, useRef, useEffect, useContext } from 'react';
11
+ import { createContext, useState, useRef, useLayoutEffect, useEffect, useContext } from 'react';
12
12
  import { Input as Input$1 } from '@base-ui/react/input';
13
13
  import { Select as Select$1 } from '@base-ui/react/select';
14
14
  import { createPortal } from 'react-dom';
@@ -1418,34 +1418,51 @@ var buttonVariants = cva(
1418
1418
  }
1419
1419
  }
1420
1420
  );
1421
- function Button({
1422
- className,
1423
- variant = "default",
1424
- size = "default",
1425
- ...props
1426
- }) {
1421
+ var Button = React2.forwardRef(({ className, variant = "default", size = "default", ...props }, ref) => {
1427
1422
  return /* @__PURE__ */ jsx(
1428
1423
  Button$1,
1429
1424
  {
1425
+ ref,
1430
1426
  "data-slot": "button",
1431
1427
  className: cn(buttonVariants({ variant, size, className })),
1432
1428
  ...props
1433
1429
  }
1434
1430
  );
1435
- }
1431
+ });
1432
+ Button.displayName = "Button";
1436
1433
  var Button2 = (props) => {
1437
1434
  const {
1438
1435
  type = "button",
1439
- label,
1440
1436
  variant = "primary",
1441
1437
  size = "md",
1442
1438
  disabled = false,
1443
1439
  width,
1444
1440
  onClickAction,
1445
1441
  justify = "center",
1446
- truncate = true
1442
+ truncate = true,
1443
+ children
1447
1444
  } = props;
1448
1445
  const { send } = useMelony();
1446
+ const buttonRef = useRef(null);
1447
+ const [isOverflowing, setIsOverflowing] = useState(false);
1448
+ useLayoutEffect(() => {
1449
+ if (!truncate) {
1450
+ setIsOverflowing(false);
1451
+ return;
1452
+ }
1453
+ const checkOverflow = () => {
1454
+ const el = buttonRef.current;
1455
+ if (el) {
1456
+ setIsOverflowing(el.scrollWidth > el.clientWidth);
1457
+ }
1458
+ };
1459
+ checkOverflow();
1460
+ const observer = new ResizeObserver(checkOverflow);
1461
+ if (buttonRef.current) {
1462
+ observer.observe(buttonRef.current);
1463
+ }
1464
+ return () => observer.disconnect();
1465
+ }, [children, truncate]);
1449
1466
  const variantMap = {
1450
1467
  primary: "default",
1451
1468
  secondary: "secondary",
@@ -1459,18 +1476,26 @@ var Button2 = (props) => {
1459
1476
  return /* @__PURE__ */ jsx(
1460
1477
  Button,
1461
1478
  {
1479
+ ref: buttonRef,
1462
1480
  type,
1463
1481
  variant: variantMap[variant] || "default",
1464
1482
  size: size === "md" ? "default" : size,
1465
1483
  disabled,
1466
- className: cn(width && widthMap[width], justifyMap[justify], truncate && "overflow-hidden whitespace-nowrap mask-fade-out"),
1484
+ className: cn(
1485
+ width && widthMap[width],
1486
+ justifyMap[justify],
1487
+ truncate && "overflow-hidden whitespace-nowrap",
1488
+ truncate && isOverflowing && "mask-fade-out"
1489
+ ),
1467
1490
  onClick: () => {
1468
1491
  if (onClickAction) {
1469
1492
  send(onClickAction);
1470
1493
  }
1471
1494
  },
1472
- style: { width: width && typeof width === "number" ? `${width}px` : void 0 },
1473
- children: label
1495
+ style: {
1496
+ width: width && typeof width === "number" ? `${width}px` : void 0
1497
+ },
1498
+ children
1474
1499
  }
1475
1500
  );
1476
1501
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/lib/theme-utils.ts","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/elements/Icon.tsx","../src/ui/badge.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/providers/theme-provider.tsx","../src/index.ts"],"names":["jsx","SeparatorPrimitive","InputPrimitive","cva","Input","useMelony","jsxs","Textarea","SelectPrimitive","Select","Label","useState","ButtonPrimitive","Button","useRef","createContext","useEffect","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const wrapMap: Record<string, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap: Record<string, string> = {\n none: \"text-[0]\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\",\n};\n\nexport const textAlignMap: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n/**\n * Resolves an SDUI color (e.g., \"primary/50\") to a React style object.\n * This handles opacity using CSS Relative Color Syntax.\n */\nexport const resolveUIStyle = (\n property: \"backgroundColor\" | \"color\" | \"borderColor\",\n value?: UIColor,\n) => {\n if (!value) return {};\n\n const [colorName, opacityStr] = value.split(\"/\");\n\n // If it's a standard mapping and no opacity is requested, return nothing\n // and let the Tailwind classes handle it (to preserve text-foreground etc.)\n if (!opacityStr && (colorBgMap[value as UIColor] || colorTextMap[value as UIColor] || colorBorderMap[value as UIColor])) {\n return {};\n }\n\n const opacity = opacityStr ? parseInt(opacityStr, 10) / 100 : 1;\n\n // Map camelCase to kebab-case for CSS variables if needed, \n // but most of our colors are single words.\n const kebabName = colorName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n \n // Tailwind 4 defines colors as --color-{name}\n // Shadcn often defines them as --{name}\n const variable = `var(--color-${kebabName}, var(--${kebabName}))`;\n\n if (opacity === 1) {\n return { [property]: variable };\n }\n\n // Use CSS color-mix as it's very robust and handles the opacity well\n // mixed with transparent. This is a very safe way to handle opacity.\n return {\n [property]: `color-mix(in oklch, ${variable}, transparent ${100 - opacity * 100}%)`,\n };\n};\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UIWrap, UISpacing, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n wrapMap,\n} from \"../lib/theme-utils\";\n\nexport const Row: React.FC<\n UIContract[\"row\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n wrapMap[wrap as UIWrap],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n\n// Add missing maps to theme-utils\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UISpacing, UIWidth, UIColor, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n colorBgMap,\n radiusMap,\n} from \"../lib/theme-utils\";\n\nexport const Col: React.FC<\n UIContract[\"col\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n gap = \"none\",\n width = \"auto\",\n height = \"auto\",\n padding = \"none\",\n background,\n radius,\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background as UIColor],\n radius && radiusMap[radius as UIRadius],\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract, UIColor, UIWidth, UISpacing, UIRadius, UIShadow } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\nimport { useMelony } from \"@melony/react\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n padding,\n paddingVertical,\n paddingHorizontal,\n margin,\n marginVertical,\n marginHorizontal,\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n flex = undefined,\n overflow = \"hidden\",\n onClickAction,\n } = props;\n\n const { send } = useMelony();\n\n const [baseBgColor] = (background || \"\").split(\"/\");\n const [baseBorderColor] = (borderColor || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n ...resolveUIStyle(\"borderColor\", borderColor),\n };\n\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical as UISpacing],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal as UISpacing],\n padding && paddingMap[padding as UISpacing],\n marginVertical && marginVerticalMap[marginVertical as UISpacing],\n marginHorizontal && marginHorizontalMap[marginHorizontal as UISpacing],\n margin && marginMap[margin as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n border && \"border\",\n baseBorderColor && colorBorderMap[baseBorderColor as UIColor],\n radiusMap[radius as UIRadius],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n shadowMap[shadow as UIShadow],\n group && \"group\",\n isInteractive && \"cursor-pointer\",\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n overflow,\n }}\n onClick={isInteractive ? handleClick : undefined}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"none\",\n}) => {\n return (\n <Separator\n orientation={orientation}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"none\",\n objectFit = \"cover\",\n}) => {\n return (\n <div\n className={cn(\n \"overflow-hidden\",\n typeof width === \"string\" && widthMap[width as UIWidth],\n radiusMap[radius as UIRadius],\n )}\n style={{\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : height,\n }}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\n \"block w-full\",\n height ? \"h-full\" : \"h-auto\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n )}\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = (props) => {\n const {\n name,\n size = \"md\",\n color,\n className,\n } = props;\n const sizeMap = {\n sm: \"14px\",\n md: \"18px\",\n lg: \"24px\",\n };\n\n const resolvedSize =\n typeof size === \"number\"\n ? `${size}px`\n : sizeMap[size as keyof typeof sizeMap] || \"18px\";\n\n // Check if name is a Lucide icon\n const LucideIcon = (LucideIcons as any)[name];\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center leading-none\",\n color && colorTextMap[color],\n className\n )}\n style={{ \n fontSize: resolvedSize, \n width: resolvedSize, \n height: resolvedSize,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {LucideIcon ? (\n <LucideIcon size={resolvedSize} />\n ) : (\n name\n )}\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = (props) => {\n const {\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n } = props;\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className,\n )}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { textAlignMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Heading: React.FC<UIContract[\"heading\"]> = ({\n value,\n level = 2,\n color = \"foreground\",\n align = \"start\",\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-2xl font-bold tracking-tight\",\n h2: \"text-xl font-semibold tracking-tight\",\n h3: \"text-lg font-semibold tracking-tight\",\n h4: \"text-base font-semibold tracking-tight\",\n h5: \"text-sm font-semibold\",\n h6: \"text-xs font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import React from \"react\";\nimport { UIContract, UIJustify } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { justify?: UIJustify }\n> = (props) => {\n const {\n type = \"button\",\n label,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n } = props;\n const { send } = useMelony();\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(width && widthMap[width], justifyMap[justify], truncate && \"overflow-hidden whitespace-nowrap mask-fade-out\")}\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","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n form: elements.Form,\n label: elements.Label,\n upload: elements.Upload\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/lib/theme-utils.ts","../src/elements/Row.tsx","../src/elements/Col.tsx","../src/elements/Box.tsx","../src/elements/Float.tsx","../src/elements/Spacer.tsx","../src/ui/separator.tsx","../src/elements/Divider.tsx","../src/elements/Image.tsx","../src/elements/Video.tsx","../src/elements/Icon.tsx","../src/ui/badge.tsx","../src/elements/Text.tsx","../src/elements/Heading.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/providers/theme-provider.tsx","../src/index.ts"],"names":["jsx","SeparatorPrimitive","InputPrimitive","cva","Input","useMelony","jsxs","Textarea","SelectPrimitive","Select","Label","useState","React4","ButtonPrimitive","Button","useRef","createContext","useEffect","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const wrapMap: Record<string, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap: Record<string, string> = {\n none: \"text-[0]\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\",\n};\n\nexport const textAlignMap: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n/**\n * Resolves an SDUI color (e.g., \"primary/50\") to a React style object.\n * This handles opacity using CSS Relative Color Syntax.\n */\nexport const resolveUIStyle = (\n property: \"backgroundColor\" | \"color\" | \"borderColor\",\n value?: UIColor,\n) => {\n if (!value) return {};\n\n const [colorName, opacityStr] = value.split(\"/\");\n\n // If it's a standard mapping and no opacity is requested, return nothing\n // and let the Tailwind classes handle it (to preserve text-foreground etc.)\n if (!opacityStr && (colorBgMap[value as UIColor] || colorTextMap[value as UIColor] || colorBorderMap[value as UIColor])) {\n return {};\n }\n\n const opacity = opacityStr ? parseInt(opacityStr, 10) / 100 : 1;\n\n // Map camelCase to kebab-case for CSS variables if needed, \n // but most of our colors are single words.\n const kebabName = colorName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n \n // Tailwind 4 defines colors as --color-{name}\n // Shadcn often defines them as --{name}\n const variable = `var(--color-${kebabName}, var(--${kebabName}))`;\n\n if (opacity === 1) {\n return { [property]: variable };\n }\n\n // Use CSS color-mix as it's very robust and handles the opacity well\n // mixed with transparent. This is a very safe way to handle opacity.\n return {\n [property]: `color-mix(in oklch, ${variable}, transparent ${100 - opacity * 100}%)`,\n };\n};\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UIWrap, UISpacing, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n wrapMap,\n} from \"../lib/theme-utils\";\n\nexport const Row: React.FC<\n UIContract[\"row\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n wrapMap[wrap as UIWrap],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n\n// Add missing maps to theme-utils\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UISpacing, UIWidth, UIColor, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n colorBgMap,\n radiusMap,\n} from \"../lib/theme-utils\";\n\nexport const Col: React.FC<\n UIContract[\"col\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n gap = \"none\",\n width = \"auto\",\n height = \"auto\",\n padding = \"none\",\n background,\n radius,\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background as UIColor],\n radius && radiusMap[radius as UIRadius],\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract, UIColor, UIWidth, UISpacing, UIRadius, UIShadow } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\nimport { useMelony } from \"@melony/react\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n padding,\n paddingVertical,\n paddingHorizontal,\n margin,\n marginVertical,\n marginHorizontal,\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n flex = undefined,\n overflow = \"hidden\",\n onClickAction,\n } = props;\n\n const { send } = useMelony();\n\n const [baseBgColor] = (background || \"\").split(\"/\");\n const [baseBorderColor] = (borderColor || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n ...resolveUIStyle(\"borderColor\", borderColor),\n };\n\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical as UISpacing],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal as UISpacing],\n padding && paddingMap[padding as UISpacing],\n marginVertical && marginVerticalMap[marginVertical as UISpacing],\n marginHorizontal && marginHorizontalMap[marginHorizontal as UISpacing],\n margin && marginMap[margin as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n border && \"border\",\n baseBorderColor && colorBorderMap[baseBorderColor as UIColor],\n radiusMap[radius as UIRadius],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n shadowMap[shadow as UIShadow],\n group && \"group\",\n isInteractive && \"cursor-pointer\",\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n overflow,\n }}\n onClick={isInteractive ? handleClick : undefined}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"none\",\n}) => {\n return (\n <Separator\n orientation={orientation}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"none\",\n objectFit = \"cover\",\n}) => {\n return (\n <div\n className={cn(\n \"overflow-hidden\",\n typeof width === \"string\" && widthMap[width as UIWidth],\n radiusMap[radius as UIRadius],\n )}\n style={{\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : height,\n }}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\n \"block w-full\",\n height ? \"h-full\" : \"h-auto\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n )}\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = (props) => {\n const {\n name,\n size = \"md\",\n color,\n className,\n } = props;\n const sizeMap = {\n sm: \"14px\",\n md: \"18px\",\n lg: \"24px\",\n };\n\n const resolvedSize =\n typeof size === \"number\"\n ? `${size}px`\n : sizeMap[size as keyof typeof sizeMap] || \"18px\";\n\n // Check if name is a Lucide icon\n const LucideIcon = (LucideIcons as any)[name];\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center leading-none\",\n color && colorTextMap[color],\n className\n )}\n style={{ \n fontSize: resolvedSize, \n width: resolvedSize, \n height: resolvedSize,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {LucideIcon ? (\n <LucideIcon size={resolvedSize} />\n ) : (\n name\n )}\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = (props) => {\n const {\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n } = props;\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className,\n )}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { textAlignMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Heading: React.FC<UIContract[\"heading\"]> = ({\n value,\n level = 2,\n color = \"foreground\",\n align = \"start\",\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-2xl font-bold tracking-tight\",\n h2: \"text-xl font-semibold tracking-tight\",\n h3: \"text-lg font-semibold tracking-tight\",\n h4: \"text-base font-semibold tracking-tight\",\n h5: \"text-sm font-semibold\",\n h6: \"text-xs font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import * 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 * as React from \"react\";\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n ButtonPrimitive.Props & VariantProps<typeof buttonVariants>\n>(({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n type = \"button\",\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n children,\n } = props;\n const { send } = useMelony();\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n if (!truncate) {\n setIsOverflowing(false);\n return;\n }\n\n const checkOverflow = () => {\n const el = buttonRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n };\n\n checkOverflow();\n\n const observer = new ResizeObserver(checkOverflow);\n if (buttonRef.current) {\n observer.observe(buttonRef.current);\n }\n\n return () => observer.disconnect();\n }, [children, truncate]);\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n ref={buttonRef}\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(\n width && widthMap[width],\n justifyMap[justify],\n truncate && \"overflow-hidden whitespace-nowrap\",\n truncate && isOverflowing && \"mask-fade-out\",\n )}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n }}\n >\n {children}\n </ButtonBase>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n form: elements.Form,\n label: elements.Label,\n upload: elements.Upload\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melony/ui-shadcn",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -27,14 +27,14 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@melony/react": "^0.2.7",
30
- "@melony/ui-kit": "^0.1.10",
30
+ "@melony/ui-kit": "^0.1.14",
31
31
  "melony": "^0.2.9",
32
32
  "react": "^18.0.0 || ^19.0.0",
33
33
  "react-dom": "^18.0.0 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@melony/react": "^0.2.7",
37
- "@melony/ui-kit": "^0.1.10",
37
+ "@melony/ui-kit": "^0.1.14",
38
38
  "@types/node": "^20.14.10",
39
39
  "@types/react": "^19.0.0",
40
40
  "@types/react-dom": "^19.0.0",