@melony/ui-shadcn 0.1.17 → 0.1.19

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
@@ -7,17 +7,17 @@ import * as LucideIcons from 'lucide-react';
7
7
  import '@base-ui/react/merge-props';
8
8
  import '@base-ui/react/use-render';
9
9
  import { cva } from 'class-variance-authority';
10
- import * as React2 from 'react';
11
- import { createContext, useState, useRef, useLayoutEffect, useEffect, useContext } from 'react';
10
+ import * as React3 from 'react';
11
+ import { createContext, useMemo, useState, useRef, useLayoutEffect, useEffect, useContext } from 'react';
12
+ import ReactMarkdown from 'react-markdown';
13
+ import remarkGfm from 'remark-gfm';
14
+ import remarkBreaks from 'remark-breaks';
12
15
  import { Input as Input$1 } from '@base-ui/react/input';
13
16
  import { Select as Select$1 } from '@base-ui/react/select';
14
17
  import { createPortal } from 'react-dom';
15
18
  import { Button as Button$1 } from '@base-ui/react/button';
16
19
  import { MelonyRenderer } from '@melony/ui-kit';
17
20
  import '@base-ui/react/menu';
18
- import 'react-markdown';
19
- import 'remark-gfm';
20
- import 'remark-breaks';
21
21
 
22
22
  // src/lib/utils.ts
23
23
  function cn(...inputs) {
@@ -600,6 +600,49 @@ var Heading = ({
600
600
  }
601
601
  );
602
602
  };
603
+ var StreamingText = (props) => {
604
+ const {
605
+ eventType,
606
+ size = "md",
607
+ weight = "normal",
608
+ align = "start",
609
+ color = "foreground",
610
+ className,
611
+ markdown = true
612
+ } = props;
613
+ const { events } = useMelony();
614
+ const text = useMemo(() => {
615
+ return events.filter((e) => e.type === eventType).map((e) => e.data?.delta || e.data?.text || e.data?.content || "").filter(Boolean).join("");
616
+ }, [events, eventType]);
617
+ if (!text) return null;
618
+ if (markdown) {
619
+ return /* @__PURE__ */ jsx(
620
+ "div",
621
+ {
622
+ className: cn(
623
+ "prose prose-sm dark:prose-invert max-w-none break-words [&>p]:mb-2 [&>p:last-child]:mb-0 [&>ul]:list-disc [&>ul]:pl-4 [&>ol]:list-decimal [&>ol]:pl-4 [&>li]:mb-1 [&>h1]:text-xl [&>h1]:font-bold [&>h1]:mb-2 [&>h2]:text-lg [&>h2]:font-bold [&>h2]:mb-2 [&>h3]:text-base [&>h3]:font-bold [&>h3]:mb-2 [&>pre]:bg-muted [&>pre]:p-2 [&>pre]:rounded [&>pre]:overflow-x-auto [&>pre]:mb-2 [&>code]:bg-muted [&>code]:px-1 [&>code]:py-0.5 [&>code]:rounded [&>code]:font-mono [&>code]:text-sm",
624
+ textAlignMap[align],
625
+ colorTextMap[color],
626
+ className
627
+ ),
628
+ children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkGfm, remarkBreaks], children: text })
629
+ }
630
+ );
631
+ }
632
+ return /* @__PURE__ */ jsx(
633
+ "span",
634
+ {
635
+ className: cn(
636
+ textSizeMap[size],
637
+ fontWeightMap[weight],
638
+ textAlignMap[align],
639
+ colorTextMap[color],
640
+ className
641
+ ),
642
+ children: text
643
+ }
644
+ );
645
+ };
603
646
  function Input({ className, type, ...props }) {
604
647
  return /* @__PURE__ */ jsx(
605
648
  Input$1,
@@ -1023,11 +1066,11 @@ var Checkbox = ({
1023
1066
  var Hidden = ({ name, value }) => {
1024
1067
  return /* @__PURE__ */ jsx("input", { type: "hidden", name, value });
1025
1068
  };
1026
- var PopoverContext = React2.createContext(
1069
+ var PopoverContext = React3.createContext(
1027
1070
  void 0
1028
1071
  );
1029
1072
  function usePopoverContext() {
1030
- const context = React2.useContext(PopoverContext);
1073
+ const context = React3.useContext(PopoverContext);
1031
1074
  if (!context) {
1032
1075
  throw new Error("Popover components must be used within a Popover");
1033
1076
  }
@@ -1039,10 +1082,10 @@ function Popover({
1039
1082
  open: controlledOpen,
1040
1083
  onOpenChange
1041
1084
  }) {
1042
- const [internalOpen, setInternalOpen] = React2.useState(defaultOpen);
1043
- const triggerRef = React2.useRef(null);
1085
+ const [internalOpen, setInternalOpen] = React3.useState(defaultOpen);
1086
+ const triggerRef = React3.useRef(null);
1044
1087
  const open = controlledOpen ?? internalOpen;
1045
- const setOpen = React2.useCallback(
1088
+ const setOpen = React3.useCallback(
1046
1089
  (newOpen) => {
1047
1090
  if (controlledOpen === void 0) {
1048
1091
  setInternalOpen(newOpen);
@@ -1051,7 +1094,7 @@ function Popover({
1051
1094
  },
1052
1095
  [controlledOpen, onOpenChange]
1053
1096
  );
1054
- const value = React2.useMemo(
1097
+ const value = React3.useMemo(
1055
1098
  () => ({
1056
1099
  open,
1057
1100
  setOpen,
@@ -1061,15 +1104,15 @@ function Popover({
1061
1104
  );
1062
1105
  return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children });
1063
1106
  }
1064
- var PopoverTrigger = React2.forwardRef(
1107
+ var PopoverTrigger = React3.forwardRef(
1065
1108
  ({ asChild, className, children, ...props }, ref) => {
1066
1109
  const { setOpen, triggerRef } = usePopoverContext();
1067
1110
  const handleClick = (e) => {
1068
1111
  setOpen(true);
1069
1112
  props.onClick?.(e);
1070
1113
  };
1071
- if (asChild && React2.isValidElement(children)) {
1072
- return React2.cloneElement(children, {
1114
+ if (asChild && React3.isValidElement(children)) {
1115
+ return React3.cloneElement(children, {
1073
1116
  ref: (node) => {
1074
1117
  triggerRef.current = node;
1075
1118
  if (typeof children.ref === "function") {
@@ -1101,7 +1144,7 @@ var PopoverTrigger = React2.forwardRef(
1101
1144
  }
1102
1145
  );
1103
1146
  PopoverTrigger.displayName = "PopoverTrigger";
1104
- var PopoverContent = React2.forwardRef(
1147
+ var PopoverContent = React3.forwardRef(
1105
1148
  ({
1106
1149
  className,
1107
1150
  side = "bottom",
@@ -1112,9 +1155,9 @@ var PopoverContent = React2.forwardRef(
1112
1155
  ...props
1113
1156
  }, ref) => {
1114
1157
  const { open, setOpen, triggerRef } = usePopoverContext();
1115
- const [position, setPosition] = React2.useState({ top: 0, left: 0 });
1116
- const contentRef = React2.useRef(null);
1117
- React2.useEffect(() => {
1158
+ const [position, setPosition] = React3.useState({ top: 0, left: 0 });
1159
+ const contentRef = React3.useRef(null);
1160
+ React3.useEffect(() => {
1118
1161
  if (!open || !triggerRef.current) return;
1119
1162
  const updatePosition = () => {
1120
1163
  if (!triggerRef.current || !contentRef.current) return;
@@ -1175,7 +1218,7 @@ var PopoverContent = React2.forwardRef(
1175
1218
  window.removeEventListener("scroll", updatePosition, true);
1176
1219
  };
1177
1220
  }, [open, side, align, sideOffset, alignOffset, triggerRef]);
1178
- React2.useEffect(() => {
1221
+ React3.useEffect(() => {
1179
1222
  if (!open) return;
1180
1223
  const handleClickOutside = (event) => {
1181
1224
  if (contentRef.current && !contentRef.current.contains(event.target) && triggerRef.current && !triggerRef.current.contains(event.target)) {
@@ -1421,7 +1464,7 @@ var buttonVariants = cva(
1421
1464
  }
1422
1465
  }
1423
1466
  );
1424
- var Button = React2.forwardRef(({ className, variant = "default", size = "default", ...props }, ref) => {
1467
+ var Button = React3.forwardRef(({ className, variant = "default", size = "default", ...props }, ref) => {
1425
1468
  return /* @__PURE__ */ jsx(
1426
1469
  Button$1,
1427
1470
  {
@@ -1736,7 +1779,8 @@ var shadcnElements = {
1736
1779
  icon: Icon,
1737
1780
  form: Form,
1738
1781
  label: Label2,
1739
- upload: Upload
1782
+ upload: Upload,
1783
+ streamingText: StreamingText
1740
1784
  };
1741
1785
  var ThemeProvider2 = ThemeProvider;
1742
1786
  var useTheme2 = useTheme;
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","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` : width,\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 { colorBgMap, colorBorderMap, radiusMap, shadowMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n background = \"background\",\n border = true,\n shadow = \"none\",\n radius = \"none\",\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n <TextareaBase\n name={name}\n id={name}\n className={cn(\n background && colorBgMap[background],\n !border && \"border-none\",\n shadow && shadowMap[shadow],\n radius && radiusMap[radius],\n )}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n ButtonPrimitive.Props & VariantProps<typeof buttonVariants>\n>(({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n type = \"button\",\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n children,\n } = props;\n const { send } = useMelony();\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n if (!truncate) {\n setIsOverflowing(false);\n return;\n }\n\n const checkOverflow = () => {\n const el = buttonRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n };\n\n checkOverflow();\n\n const observer = new ResizeObserver(checkOverflow);\n if (buttonRef.current) {\n observer.observe(buttonRef.current);\n }\n\n return () => observer.disconnect();\n }, [children, truncate]);\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n ref={buttonRef}\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(\n width && widthMap[width],\n justifyMap[justify],\n truncate && \"overflow-hidden whitespace-nowrap\",\n truncate && isOverflowing && \"mask-fade-out\",\n )}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n }}\n >\n {children}\n </ButtonBase>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n form: elements.Form,\n label: elements.Label,\n upload: elements.Upload\n};\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/elements/StreamingText.tsx","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/field.tsx","../src/elements/Input.tsx","../src/ui/textarea.tsx","../src/elements/Textarea.tsx","../src/ui/select.tsx","../src/elements/Select.tsx","../src/elements/Label.tsx","../src/elements/Checkbox.tsx","../src/elements/Hidden.tsx","../src/ui/popover.tsx","../src/elements/ColorPicker.tsx","../src/elements/RadioGroup.tsx","../src/ui/button.tsx","../src/elements/Button.tsx","../src/elements/Upload.tsx","../src/elements/Form.tsx","../src/providers/theme-provider.tsx","../src/index.ts"],"names":["jsx","SeparatorPrimitive","useMelony","InputPrimitive","cva","Input","jsxs","Textarea","SelectPrimitive","Select","Label","useState","React5","ButtonPrimitive","Button","useRef","createContext","useEffect","useContext","ThemeProvider","useTheme"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { UIColor, UISpacing, UIWidth, UIShadow, UIRadius } from \"@melony/ui-kit\";\n\nexport const spacingMap: Record<UISpacing, string> = {\n none: \"0\",\n xs: \"1\",\n sm: \"2\",\n md: \"4\",\n lg: \"6\",\n xl: \"8\",\n xxl: \"12\",\n};\n\nexport const paddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n xxl: \"p-12\",\n};\n\nexport const paddingVerticalMap: Record<UISpacing, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n xxl: \"py-12\",\n};\n\nexport const paddingHorizontalMap: Record<UISpacing, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n xxl: \"px-12\",\n};\n\nexport const interactivePaddingMap: Record<UISpacing, string> = {\n none: \"p-0\",\n xs: \"py-1 px-2\",\n sm: \"py-1.5 px-3\",\n md: \"py-2 px-4\",\n lg: \"py-3 px-6\",\n xl: \"py-4 px-8\",\n xxl: \"py-6 px-10\",\n};\n\nexport const marginMap: Record<UISpacing, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n xxl: \"m-12\",\n};\n\nexport const marginVerticalMap: Record<UISpacing, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n xxl: \"my-12\",\n};\n\nexport const marginHorizontalMap: Record<UISpacing, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n xxl: \"mx-12\",\n};\n\nexport const gapMap: Record<UISpacing, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n xxl: \"gap-12\",\n};\n\nexport const colorBgMap: Record<UIColor, string> = {\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white\",\n danger: \"bg-destructive text-destructive-foreground\",\n warning: \"bg-yellow-500 text-white\",\n info: \"bg-blue-500 text-white\",\n background: \"bg-background text-foreground\",\n foreground: \"bg-foreground text-background\",\n muted: \"bg-muted text-muted-foreground\",\n mutedForeground: \"bg-muted-foreground text-muted\",\n border: \"bg-border\",\n transparent: \"bg-transparent\",\n};\n\nexport const colorTextMap: Record<UIColor, string> = {\n primary: \"text-primary\",\n secondary: \"text-secondary\",\n success: \"text-green-600\",\n danger: \"text-destructive\",\n warning: \"text-yellow-600\",\n info: \"text-blue-600\",\n background: \"text-background\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n mutedForeground: \"text-muted-foreground\",\n border: \"text-border\",\n transparent: \"text-transparent\",\n};\n\nexport const colorBorderMap: Record<UIColor, string> = {\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n success: \"border-green-500\",\n danger: \"border-destructive\",\n warning: \"border-yellow-500\",\n info: \"border-blue-500\",\n background: \"border-background\",\n foreground: \"border-foreground\",\n muted: \"border-muted\",\n mutedForeground: \"border-muted-foreground\",\n border: \"border-border\",\n transparent: \"border-transparent\",\n};\n\nexport const widthMap: Record<UIWidth, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n min: \"w-min\",\n max: \"w-max\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"2/3\": \"w-2/3\",\n \"1/4\": \"w-1/4\",\n \"3/4\": \"w-3/4\",\n};\n\nexport const shadowMap: Record<UIShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport const radiusMap: Record<UIRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport const alignMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport const justifyMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const wrapMap: Record<string, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const textSizeMap: Record<string, string> = {\n none: \"text-[0]\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\",\n};\n\nexport const textAlignMap: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n};\n\nexport const fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n/**\n * Resolves an SDUI color (e.g., \"primary/50\") to a React style object.\n * This handles opacity using CSS Relative Color Syntax.\n */\nexport const resolveUIStyle = (\n property: \"backgroundColor\" | \"color\" | \"borderColor\",\n value?: UIColor,\n) => {\n if (!value) return {};\n\n const [colorName, opacityStr] = value.split(\"/\");\n\n // If it's a standard mapping and no opacity is requested, return nothing\n // and let the Tailwind classes handle it (to preserve text-foreground etc.)\n if (!opacityStr && (colorBgMap[value as UIColor] || colorTextMap[value as UIColor] || colorBorderMap[value as UIColor])) {\n return {};\n }\n\n const opacity = opacityStr ? parseInt(opacityStr, 10) / 100 : 1;\n\n // Map camelCase to kebab-case for CSS variables if needed, \n // but most of our colors are single words.\n const kebabName = colorName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n \n // Tailwind 4 defines colors as --color-{name}\n // Shadcn often defines them as --{name}\n const variable = `var(--color-${kebabName}, var(--${kebabName}))`;\n\n if (opacity === 1) {\n return { [property]: variable };\n }\n\n // Use CSS color-mix as it's very robust and handles the opacity well\n // mixed with transparent. This is a very safe way to handle opacity.\n return {\n [property]: `color-mix(in oklch, ${variable}, transparent ${100 - opacity * 100}%)`,\n };\n};\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UIWrap, UISpacing, UIWidth } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n wrapMap,\n} from \"../lib/theme-utils\";\n\nexport const Row: React.FC<\n UIContract[\"row\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n gap = \"none\",\n padding = \"none\",\n width = \"full\",\n height = \"auto\",\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-row min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n wrapMap[wrap as UIWrap],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n\n// Add missing maps to theme-utils\n","import React from \"react\";\nimport { UIContract, UIAlign, UIJustify, UISpacing, UIWidth, UIColor, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n alignMap,\n justifyMap,\n gapMap,\n paddingMap,\n widthMap,\n colorBgMap,\n radiusMap,\n} from \"../lib/theme-utils\";\n\nexport const Col: React.FC<\n UIContract[\"col\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n align = \"start\",\n justify = \"start\",\n gap = \"none\",\n width = \"auto\",\n height = \"auto\",\n padding = \"none\",\n background,\n radius,\n flex = undefined,\n overflow = \"visible\",\n } = props;\n return (\n <div\n className={cn(\n \"flex flex-col min-w-0\",\n alignMap[align as UIAlign],\n justifyMap[justify as UIJustify],\n gapMap[gap as UISpacing],\n paddingMap[padding as UISpacing],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n background && colorBgMap[background as UIColor],\n radius && radiusMap[radius as UIRadius],\n )}\n style={{ flex, width: width && typeof width === \"number\" ? `${width}px` : undefined, overflow }}\n >\n {children as React.ReactNode}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract, UIColor, UIWidth, UISpacing, UIRadius, UIShadow } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n paddingMap,\n marginMap,\n colorBgMap,\n colorBorderMap,\n radiusMap,\n widthMap,\n shadowMap,\n paddingVerticalMap,\n paddingHorizontalMap,\n marginVerticalMap,\n marginHorizontalMap,\n resolveUIStyle,\n} from \"../lib/theme-utils\";\nimport { useMelony } from \"@melony/react\";\n\nexport const Box: React.FC<\n UIContract[\"box\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n children,\n padding,\n paddingVertical,\n paddingHorizontal,\n margin,\n marginVertical,\n marginHorizontal,\n background,\n border = false,\n borderColor = \"border\",\n radius = \"none\",\n width = \"auto\",\n height = \"auto\",\n shadow = \"none\",\n group = false,\n flex = undefined,\n overflow = \"hidden\",\n onClickAction,\n } = props;\n\n const { send } = useMelony();\n\n const [baseBgColor] = (background || \"\").split(\"/\");\n const [baseBorderColor] = (borderColor || \"\").split(\"/\");\n\n const dynamicStyles = {\n ...resolveUIStyle(\"backgroundColor\", background),\n ...resolveUIStyle(\"borderColor\", borderColor),\n };\n\n const isInteractive = !!onClickAction;\n\n const handleClick = () => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n };\n\n return (\n <div\n className={cn(\n \"relative\",\n paddingVertical && paddingVerticalMap[paddingVertical as UISpacing],\n paddingHorizontal && paddingHorizontalMap[paddingHorizontal as UISpacing],\n padding && paddingMap[padding as UISpacing],\n marginVertical && marginVerticalMap[marginVertical as UISpacing],\n marginHorizontal && marginHorizontalMap[marginHorizontal as UISpacing],\n margin && marginMap[margin as UISpacing],\n baseBgColor && colorBgMap[baseBgColor as UIColor],\n border && \"border\",\n baseBorderColor && colorBorderMap[baseBorderColor as UIColor],\n radiusMap[radius as UIRadius],\n widthMap[width as UIWidth],\n height === \"full\" && \"h-full\",\n shadowMap[shadow as UIShadow],\n group && \"group\",\n isInteractive && \"cursor-pointer\",\n )}\n style={{\n ...dynamicStyles,\n flex,\n width: width && typeof width === \"number\" ? `${width}px` : width,\n overflow,\n }}\n onClick={isInteractive ? handleClick : undefined}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap } from \"../lib/theme-utils\";\n\nexport const Float: React.FC<\n UIContract[\"float\"] & { children?: React.ReactNode }\n> = ({\n children,\n position = \"top-right\",\n offsetX = \"none\",\n offsetY = \"none\",\n showOnHover = false,\n}) => {\n const positionClasses = {\n \"top-left\": \"top-1 left-1\",\n \"top-right\": \"top-1 right-1\",\n \"top-center\": \"top-1 left-1/2 -translate-x-1/2\",\n \"bottom-left\": \"bottom-1 left-1\",\n \"bottom-right\": \"bottom-1 right-1\",\n \"bottom-center\": \"bottom-1 left-1/2 -translate-x-1/2\",\n center: \"top- 1 / 2 left - 1/2 -tra nslate-x-1/2 -translate-y-1/2\",\n \"left-center\": \"top-1/2 left-1 -translate-y-1/2\",\n \"right-center\": \"top-1/2 right-1 -translate-y-1/2\",\n };\n\n const marginXClass = position.endsWith(\"left\")\n ? marginMap[offsetX].replace(\"m-\", \"ml-\")\n : marginMap[offsetX].replace(\"m-\", \"mr-\");\n const marginYClass = position.startsWith(\"top\")\n ? marginMap[offsetY].replace(\"m-\", \"mt-\")\n : marginMap[offsetY].replace(\"m-\", \"mb-\");\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionClasses[position],\n marginXClass,\n marginYClass,\n showOnHover && \"opacity-0 group-hover:opacity-100 transition-opacity\",\n )}\n >\n {children}\n </div>\n );\n };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { paddingMap } from \"../lib/theme-utils\";\n\nexport const Spacer: React.FC<UIContract[\"spacer\"]> = ({\n size = \"md\",\n direction = \"vertical\",\n}) => {\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n paddingMap[size],\n )}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Separator } from \"../ui/separator\";\nimport { cn } from \"../lib/utils\";\nimport { marginMap, colorBgMap } from \"../lib/theme-utils\";\n\nexport const Divider: React.FC<UIContract[\"divider\"]> = ({\n orientation = \"horizontal\",\n color = \"border\",\n margin = \"none\",\n}) => {\n return (\n <Separator\n orientation={orientation as any}\n className={cn(marginMap[margin], colorBgMap[color])}\n />\n );\n};\n","import React from \"react\";\nimport { UIContract, UIWidth, UIRadius } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Image: React.FC<UIContract[\"image\"]> = ({\n src,\n alt,\n width = \"auto\",\n height,\n radius = \"none\",\n objectFit = \"cover\",\n}) => {\n return (\n <div\n className={cn(\n \"overflow-hidden\",\n typeof width === \"string\" && widthMap[width as UIWidth],\n radiusMap[radius as UIRadius],\n )}\n style={{\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : height,\n }}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\n \"block w-full\",\n height ? \"h-full\" : \"h-auto\",\n objectFit === \"cover\"\n ? \"object-cover\"\n : objectFit === \"contain\"\n ? \"object-contain\"\n : \"object-fill\",\n )}\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap, radiusMap } from \"../lib/theme-utils\";\n\nexport const Video: React.FC<UIContract[\"video\"]> = ({\n src,\n poster,\n autoPlay = false,\n controls = true,\n loop = false,\n muted = false,\n aspectRatio = \"16/9\",\n width = \"full\",\n height = \"auto\",\n radius = \"lg\",\n}) => {\n const aspectRatios = {\n \"16/9\": \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n \"1/1\": \"aspect-square\",\n \"9/16\": \"aspect-[9/16]\",\n };\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden bg-black shadow-sm\",\n aspectRatios[aspectRatio] || \"aspect-video\",\n widthMap[width],\n radiusMap[radius],\n )}\n style={{ height }}\n >\n <video\n src={src}\n poster={poster}\n autoPlay={autoPlay}\n controls={controls}\n loop={loop}\n muted={muted}\n playsInline\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { colorTextMap } from \"../lib/theme-utils\";\nimport { cn } from \"../lib/utils\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport const Icon: React.FC<UIContract[\"icon\"] & { className?: string }> = (props) => {\n const {\n name,\n size = \"md\",\n color,\n className,\n } = props;\n const sizeMap = {\n sm: \"14px\",\n md: \"18px\",\n lg: \"24px\",\n };\n\n const resolvedSize =\n typeof size === \"number\"\n ? `${size}px`\n : sizeMap[size as keyof typeof sizeMap] || \"18px\";\n\n // Check if name is a Lucide icon\n const LucideIcon = (LucideIcons as any)[name];\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center leading-none\",\n color && colorTextMap[color],\n className\n )}\n style={{ \n fontSize: resolvedSize, \n width: resolvedSize, \n height: resolvedSize,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {LucideIcon ? (\n <LucideIcon size={resolvedSize} />\n ) : (\n name\n )}\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const Text: React.FC<UIContract[\"text\"]> = (props) => {\n const {\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n } = props;\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className,\n )}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport { textAlignMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Heading: React.FC<UIContract[\"heading\"]> = ({\n value,\n level = 2,\n color = \"foreground\",\n align = \"start\",\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-2xl font-bold tracking-tight\",\n h2: \"text-xl font-semibold tracking-tight\",\n h3: \"text-lg font-semibold tracking-tight\",\n h4: \"text-base font-semibold tracking-tight\",\n h5: \"text-sm font-semibold\",\n h6: \"text-xs font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n colorTextMap[color],\n textAlignMap[align],\n )}\n >\n {value}\n </Tag>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { cn } from \"../lib/utils\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\nimport { useMelony } from \"@melony/react\";\nimport {\n textSizeMap,\n textAlignMap,\n fontWeightMap,\n colorTextMap,\n} from \"../lib/theme-utils\";\n\nexport const StreamingText: React.FC<UIContract[\"streamingText\"]> = (props) => {\n const {\n eventType,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n color = \"foreground\",\n className,\n markdown = true,\n } = props;\n\n const { events } = useMelony();\n\n // Accumulate text from events that match this component's ID\n const text = useMemo(() => {\n return events\n .filter((e) => e.type === eventType)\n .map((e) => e.data?.delta || e.data?.text || e.data?.content || \"\")\n .filter(Boolean)\n .join(\"\");\n }, [events, eventType]);\n\n if (!text) return null;\n\n if (markdown) {\n return (\n <div\n className={cn(\n \"prose prose-sm dark:prose-invert max-w-none break-words [&>p]:mb-2 [&>p:last-child]:mb-0 [&>ul]:list-disc [&>ul]:pl-4 [&>ol]:list-decimal [&>ol]:pl-4 [&>li]:mb-1 [&>h1]:text-xl [&>h1]:font-bold [&>h1]:mb-2 [&>h2]:text-lg [&>h2]:font-bold [&>h2]:mb-2 [&>h3]:text-base [&>h3]:font-bold [&>h3]:mb-2 [&>pre]:bg-muted [&>pre]:p-2 [&>pre]:rounded [&>pre]:overflow-x-auto [&>pre]:mb-2 [&>code]:bg-muted [&>code]:px-1 [&>code]:py-0.5 [&>code]:rounded [&>code]:font-mono [&>code]:text-sm\",\n textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n <ReactMarkdown remarkPlugins={[remarkGfm, remarkBreaks]}>\n {text}\n </ReactMarkdown>\n </div>\n );\n }\n\n return (\n <span\n className={cn(\n textSizeMap[size],\n fontWeightMap[weight],\n textAlignMap[align],\n colorTextMap[color],\n className\n )}\n >\n {text}\n </span>\n );\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Input: React.FC<UIContract[\"input\"]> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { colorBgMap, colorBorderMap, radiusMap, shadowMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Textarea: React.FC<UIContract[\"textarea\"]> = ({\n placeholder,\n defaultValue,\n name,\n disabled,\n rows,\n required,\n width = \"full\",\n onChangeAction,\n background = \"background\",\n border = true,\n shadow = \"none\",\n radius = \"none\",\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n <TextareaBase\n name={name}\n id={name}\n className={cn(\n background && colorBgMap[background],\n !border && \"border-none\",\n shadow && shadowMap[shadow],\n radius && radiusMap[radius],\n )}\n placeholder={placeholder}\n defaultValue={defaultValue}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n required={required}\n />\n </Field>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../elements/Icon\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <Icon name=\"↕️\" className=\"text-muted-foreground pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"✅\" className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"bg-border/50 -mx-1 my-1 h-px pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔼\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\",\n className,\n )}\n {...props}\n >\n <Icon name=\"🔽\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { cn } from \"../lib/utils\";\nimport { widthMap } from \"../lib/theme-utils\";\n\nexport const Select: React.FC<UIContract[\"select\"]> = ({\n options,\n defaultValue,\n label,\n name,\n disabled,\n required,\n width = \"full\",\n placeholder,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(widthMap[width])}>\n {label && (\n <FieldTitle>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FieldTitle>\n )}\n <SelectRoot\n defaultValue={defaultValue}\n disabled={disabled}\n onValueChange={(value) => handleValueChange(value || \"\")}\n required={required}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { cn } from \"../lib/utils\";\nimport { textSizeMap, colorTextMap } from \"../lib/theme-utils\";\n\nexport const Label: React.FC<UIContract[\"label\"]> = ({\n value,\n htmlFor,\n required,\n size = \"md\",\n color = \"foreground\",\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\n \"flex items-center gap-1\",\n textSizeMap[size],\n colorTextMap[color],\n )}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Label } from \"./Label\";\nimport { cn } from \"../lib/utils\";\n\nexport const Checkbox: React.FC<UIContract[\"checkbox\"]> = ({\n label,\n name,\n checked,\n disabled,\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n color={disabled ? \"muted\" : \"foreground\"}\n size=\"sm\"\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\n\nexport const Hidden: React.FC<UIContract[\"hidden\"]> = ({ name, value }) => {\n return <input type=\"hidden\" name={name} value={value} />;\n};\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined,\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange],\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref,\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top +=\n triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className,\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React, { useState, useEffect } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { cn } from \"../lib/utils\";\n\nconst PRESET_COLORS = [\n \"#000000\",\n \"#ffffff\",\n \"#f44336\",\n \"#e91e63\",\n \"#9c27b0\",\n \"#673ab7\",\n \"#3f51b5\",\n \"#2196f3\",\n \"#03a9f4\",\n \"#00bcd4\",\n \"#009688\",\n \"#4caf50\",\n \"#8bc34a\",\n \"#cddc39\",\n \"#ffeb3b\",\n \"#ffc107\",\n \"#ff9800\",\n \"#ff5722\",\n \"#795548\",\n \"#9e9e9e\",\n \"#607d8b\",\n];\n\nexport const ColorPicker: React.FC<UIContract[\"colorPicker\"]> = ({\n name,\n label,\n defaultValue = \"#000000\",\n onChangeAction,\n disabled,\n}) => {\n const { send } = useMelony();\n const [color, setColor] = useState(defaultValue);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: newColor,\n },\n } as any);\n }\n };\n\n return (\n <Field className=\"w-full\">\n {label && <FieldTitle>{label}</FieldTitle>}\n <div className=\"flex items-center gap-2\">\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"w-10 h-10 rounded-lg border border-border shadow-sm transition-transform hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100\",\n \"flex items-center justify-center p-1\",\n )}\n >\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: color }}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-3 w-64\" side=\"bottom\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-7 gap-1\">\n {PRESET_COLORS.map((preset) => (\n <button\n key={preset}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded-md border border-border transition-transform hover:scale-110 active:scale-90\",\n color === preset && \"ring-2 ring-primary ring-offset-1\",\n )}\n style={{ backgroundColor: preset }}\n onClick={() => handleColorChange(preset)}\n />\n ))}\n </div>\n <div className=\"flex items-center gap-3\">\n <input\n type=\"color\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"w-8 h-8 rounded border-none p-0 cursor-pointer\"\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n className=\"flex-1 h-8 px-2 text-xs font-mono border border-border rounded uppercase focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <span className=\"text-sm font-mono uppercase text-muted-foreground\">\n {color}\n </span>\n </div>\n <input type=\"hidden\" name={name} value={color} />\n </Field>\n );\n};\n","import React from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\n\nexport const RadioGroup: React.FC<UIContract[\"radioGroup\"]> = ({\n name,\n options,\n defaultValue,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n}) => {\n const { send } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n send({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n {label && <Label value={label} />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\",\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={defaultValue === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n size=\"sm\"\n color={isDisabled ? \"muted\" : \"foreground\"}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n ButtonPrimitive.Props & VariantProps<typeof buttonVariants>\n>(({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { justifyMap, widthMap } from \"../lib/theme-utils\";\n\nexport const Button: React.FC<\n UIContract[\"button\"] & { children?: React.ReactNode }\n> = (props) => {\n const {\n type = \"button\",\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n width,\n onClickAction,\n justify = \"center\",\n truncate = true,\n children,\n } = props;\n const { send } = useMelony();\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n if (!truncate) {\n setIsOverflowing(false);\n return;\n }\n\n const checkOverflow = () => {\n const el = buttonRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n };\n\n checkOverflow();\n\n const observer = new ResizeObserver(checkOverflow);\n if (buttonRef.current) {\n observer.observe(buttonRef.current);\n }\n\n return () => observer.disconnect();\n }, [children, truncate]);\n\n const variantMap: Record<\n string,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n > = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // We might want a custom success style later\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n };\n\n return (\n <ButtonBase\n ref={buttonRef}\n type={type}\n variant={variantMap[variant] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(\n width && widthMap[width],\n justifyMap[justify],\n truncate && \"overflow-hidden whitespace-nowrap\",\n truncate && isOverflowing && \"mask-fade-out\",\n )}\n onClick={() => {\n if (onClickAction) {\n send(onClickAction as any);\n }\n }}\n style={{\n width: width && typeof width === \"number\" ? `${width}px` : undefined,\n }}\n >\n {children}\n </ButtonBase>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { Button } from \"../ui/button\";\nimport { useMelony } from \"@melony/react\";\nimport { Icon } from \"./Icon\";\nimport { MelonyRenderer } from \"@melony/ui-kit\";\nimport { Image } from \"./Image\";\n\nexport const Upload: React.FC<UIContract[\"upload\"]> = ({\n label = \"Upload\",\n multiple = false,\n accept,\n onUploadAction,\n initialFiles,\n mode = \"append\",\n disabled,\n}) => {\n const { send, events } = useMelony();\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isUploading, setIsUploading] = useState(false);\n const [status, setStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const uploadedFilesEvents = events.filter(\n (event) => event.type === \"uploaded-files\",\n );\n\n const displayEvents =\n mode === \"replace\" && uploadedFilesEvents.length > 0\n ? [uploadedFilesEvents[uploadedFilesEvents.length - 1]]\n : uploadedFilesEvents;\n\n const showInitialFiles =\n mode === \"replace\" ? displayEvents.length === 0 : true;\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n setIsUploading(true);\n setStatus(\"idle\");\n\n try {\n const filePromises = files.map((file) => {\n return new Promise<{\n name: string;\n type: string;\n size: number;\n data: string;\n }>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const base64 = reader.result as string;\n if (!base64) {\n reject(new Error(\"FileReader returned empty result\"));\n return;\n }\n\n resolve({\n name: file.name,\n type: file.type,\n size: file.size,\n data: base64,\n });\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = (error) => {\n reject(new Error(`Failed to read file ${file.name}: ${error}`));\n };\n reader.readAsDataURL(file);\n });\n });\n\n const convertedFiles = await Promise.all(filePromises);\n\n if (onUploadAction) {\n if (typeof onUploadAction === \"function\") {\n await send(onUploadAction({ files: convertedFiles }));\n } else {\n await send({\n ...onUploadAction,\n data: {\n ...onUploadAction.data,\n files: convertedFiles,\n },\n });\n }\n }\n\n setStatus(\"success\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } catch (error) {\n console.error(\"Upload failed:\", error);\n setStatus(\"error\");\n setTimeout(() => setStatus(\"idle\"), 3000);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }\n };\n\n return (\n <div className=\"relative inline-block\">\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple={multiple}\n accept={accept}\n className=\"hidden\"\n disabled={isUploading || disabled}\n />\n\n <div className=\"flex flex-wrap gap-2 mb-2 items-center\">\n {showInitialFiles &&\n initialFiles?.map((file, index) => (\n <Image\n key={index}\n src={file.url}\n alt={file.name}\n width=\"min\"\n radius=\"md\"\n />\n ))}\n\n {displayEvents.map((event, index) =>\n event.data ? <MelonyRenderer key={index} node={event.data} /> : null,\n )}\n\n <Button\n type=\"button\"\n disabled={isUploading || disabled}\n onClick={() => fileInputRef.current?.click()}\n variant=\"default\"\n >\n {isUploading ? (\n <Icon name=\"⏳\" size=\"sm\" className=\"animate-spin mr-2\" />\n ) : status === \"success\" ? (\n <Icon name=\"✅\" size=\"sm\" className=\"mr-2\" />\n ) : status === \"error\" ? (\n <Icon name=\"❌\" size=\"sm\" className=\"mr-2\" />\n ) : (\n <Icon name=\"📤\" size=\"sm\" className=\"mr-2\" />\n )}\n {status === \"success\"\n ? \"Uploaded\"\n : status === \"error\"\n ? \"Failed\"\n : label}\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { UIContract } from \"@melony/ui-kit\";\nimport { useMelony } from \"@melony/react\";\nimport { cn } from \"../lib/utils\";\nimport { gapMap } from \"../lib/theme-utils\";\n\nexport const Form: React.FC<\n UIContract[\"form\"] & { children?: React.ReactNode }\n> = ({ children, onSubmitAction, gap = \"md\" }) => {\n const { send } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSubmitted) return;\n\n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n\n if (typeof onSubmitAction === \"object\" && \"type\" in onSubmitAction) {\n send({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction?.data || {}),\n ...data,\n },\n } as any);\n } else if (typeof onSubmitAction === \"function\") {\n send(onSubmitAction(data));\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"w-full\">\n <fieldset disabled={isSubmitted} className=\"m-0 border-0 p-0\">\n <div\n className={cn(\n \"flex flex-col transition-opacity\",\n gapMap[gap],\n isSubmitted && \"opacity-60 pointer-events-none\",\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () =>\n mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n\n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import * as elements from \"./elements\";\nimport { MelonyComponents } from \"@melony/ui-kit\";\nimport * as themeProvider from \"./providers/theme-provider\";\n\n// The elements object matches UIContract keys for use with MelonyUIProvider\nexport const shadcnElements: Partial<MelonyComponents> = {\n button: elements.Button,\n row: elements.Row,\n col: elements.Col,\n text: elements.Text,\n heading: elements.Heading,\n input: elements.Input,\n hidden: elements.Hidden,\n textarea: elements.Textarea,\n select: elements.Select,\n checkbox: elements.Checkbox,\n radioGroup: elements.RadioGroup,\n colorPicker: elements.ColorPicker,\n spacer: elements.Spacer,\n divider: elements.Divider,\n box: elements.Box,\n float: elements.Float,\n image: elements.Image,\n video: elements.Video,\n icon: elements.Icon,\n form: elements.Form,\n label: elements.Label,\n upload: elements.Upload,\n streamingText: elements.StreamingText\n};\n\nexport const ThemeProvider = themeProvider.ThemeProvider;\nexport const useTheme = themeProvider.useTheme;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melony/ui-shadcn",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
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.16",
30
+ "@melony/ui-kit": "^0.1.19",
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.16",
37
+ "@melony/ui-kit": "^0.1.19",
38
38
  "@types/node": "^20.14.10",
39
39
  "@types/react": "^19.0.0",
40
40
  "@types/react-dom": "^19.0.0",