@pos-360/horizon 0.12.0 → 0.13.0
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/{chunk-U2QEAL7N.js → chunk-7LWVFFKM.js} +26 -48
- package/dist/chunk-7LWVFFKM.js.map +1 -0
- package/dist/{chunk-HHXZQTVH.js → chunk-BRG5D46G.js} +3 -52
- package/dist/chunk-BRG5D46G.js.map +1 -0
- package/dist/{chunk-RPR6I35V.mjs → chunk-E7Q6YGBZ.mjs} +26 -48
- package/dist/chunk-E7Q6YGBZ.mjs.map +1 -0
- package/dist/{chunk-HAK377GX.mjs → chunk-ZH36QN2D.mjs} +3 -52
- package/dist/chunk-ZH36QN2D.mjs.map +1 -0
- package/dist/enhanced.d.mts +5 -12
- package/dist/enhanced.d.ts +5 -12
- package/dist/enhanced.js +27 -27
- package/dist/enhanced.mjs +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +124 -124
- package/dist/index.mjs +2 -2
- package/dist/primitives.d.mts +4 -3
- package/dist/primitives.d.ts +4 -3
- package/dist/primitives.js +97 -97
- package/dist/primitives.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-HAK377GX.mjs.map +0 -1
- package/dist/chunk-HHXZQTVH.js.map +0 -1
- package/dist/chunk-RPR6I35V.mjs.map +0 -1
- package/dist/chunk-U2QEAL7N.js.map +0 -1
|
@@ -1277,7 +1277,7 @@ var useTabsContext = () => {
|
|
|
1277
1277
|
}
|
|
1278
1278
|
return context;
|
|
1279
1279
|
};
|
|
1280
|
-
var TabsListContext = React9__namespace.createContext({
|
|
1280
|
+
var TabsListContext = React9__namespace.createContext({ variant: "pill" });
|
|
1281
1281
|
var useTabsListContext = () => React9__namespace.useContext(TabsListContext);
|
|
1282
1282
|
var Tabs = React9__namespace.forwardRef(({ defaultValue, value, onValueChange, children, ...props }, ref) => {
|
|
1283
1283
|
const [activeTab, setActiveTabState] = React9__namespace.useState(value ?? defaultValue);
|
|
@@ -1320,42 +1320,11 @@ var Tabs = React9__namespace.forwardRef(({ defaultValue, value, onValueChange, c
|
|
|
1320
1320
|
);
|
|
1321
1321
|
});
|
|
1322
1322
|
Tabs.displayName = "Tabs";
|
|
1323
|
-
var
|
|
1324
|
-
default: "bg-gray-100 text-gray-500 dark:bg-neutral-700 dark:text-gray-400",
|
|
1325
|
-
primary: "bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300",
|
|
1326
|
-
success: "bg-green-100 text-green-600 dark:bg-green-900/40 dark:text-green-300",
|
|
1327
|
-
danger: "bg-red-100 text-red-600 dark:bg-red-900/40 dark:text-red-300",
|
|
1328
|
-
warning: "bg-amber-100 text-amber-600 dark:bg-amber-900/40 dark:text-amber-300",
|
|
1329
|
-
secondary: "bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300"
|
|
1330
|
-
};
|
|
1331
|
-
var indicatorColorStyles = {
|
|
1332
|
-
default: "bg-white dark:bg-neutral-900 shadow-sm",
|
|
1333
|
-
primary: "bg-blue-500 dark:bg-blue-600",
|
|
1334
|
-
success: "bg-green-500 dark:bg-green-600",
|
|
1335
|
-
danger: "bg-red-500 dark:bg-red-600",
|
|
1336
|
-
warning: "bg-amber-500 dark:bg-amber-600",
|
|
1337
|
-
secondary: "bg-purple-500 dark:bg-purple-600"
|
|
1338
|
-
};
|
|
1339
|
-
var activeTextColorStyles = {
|
|
1340
|
-
default: "text-gray-900 dark:text-gray-100",
|
|
1341
|
-
primary: "text-white dark:text-white",
|
|
1342
|
-
success: "text-white dark:text-white",
|
|
1343
|
-
danger: "text-white dark:text-white",
|
|
1344
|
-
warning: "text-white dark:text-white",
|
|
1345
|
-
secondary: "text-white dark:text-white"
|
|
1346
|
-
};
|
|
1347
|
-
var inactiveTextColorStyles = {
|
|
1348
|
-
default: "text-gray-500 dark:text-gray-400",
|
|
1349
|
-
primary: "text-blue-600 dark:text-blue-300",
|
|
1350
|
-
success: "text-green-600 dark:text-green-300",
|
|
1351
|
-
danger: "text-red-600 dark:text-red-300",
|
|
1352
|
-
warning: "text-amber-600 dark:text-amber-300",
|
|
1353
|
-
secondary: "text-purple-600 dark:text-purple-300"
|
|
1354
|
-
};
|
|
1355
|
-
var TabsList = React9__namespace.forwardRef(({ className, children, color = "default", ...props }, ref) => {
|
|
1323
|
+
var TabsList = React9__namespace.forwardRef(({ className, children, variant = "pill", ...props }, ref) => {
|
|
1356
1324
|
const { activeTab, tabRefs, listRef } = useTabsContext();
|
|
1357
1325
|
const [indicatorStyle, setIndicatorStyle] = React9__namespace.useState(null);
|
|
1358
1326
|
React9__namespace.useEffect(() => {
|
|
1327
|
+
if (variant !== "pill") return;
|
|
1359
1328
|
const updateIndicator = () => {
|
|
1360
1329
|
if (!activeTab || !listRef.current) return;
|
|
1361
1330
|
const activeElement = tabRefs.get(activeTab);
|
|
@@ -1370,8 +1339,8 @@ var TabsList = React9__namespace.forwardRef(({ className, children, color = "def
|
|
|
1370
1339
|
updateIndicator();
|
|
1371
1340
|
window.addEventListener("resize", updateIndicator);
|
|
1372
1341
|
return () => window.removeEventListener("resize", updateIndicator);
|
|
1373
|
-
}, [activeTab, tabRefs, listRef]);
|
|
1374
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TabsListContext.Provider, { value: {
|
|
1342
|
+
}, [activeTab, tabRefs, listRef, variant]);
|
|
1343
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TabsListContext.Provider, { value: { variant }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1375
1344
|
TabsPrimitive__namespace.List,
|
|
1376
1345
|
{
|
|
1377
1346
|
ref: (node) => {
|
|
@@ -1380,16 +1349,15 @@ var TabsList = React9__namespace.forwardRef(({ className, children, color = "def
|
|
|
1380
1349
|
listRef.current = node;
|
|
1381
1350
|
},
|
|
1382
1351
|
className: chunkYO72COII_js.cn(
|
|
1383
|
-
"relative inline-flex h-10 items-center justify-center rounded-hz-lg p-1",
|
|
1384
|
-
listColorStyles[color],
|
|
1352
|
+
variant === "pill" ? "relative inline-flex h-10 items-center justify-center rounded-hz-lg p-1 bg-gray-100 text-gray-500 dark:bg-neutral-700 dark:text-gray-400" : "flex gap-4 border-b border-gray-200 dark:border-neutral-800",
|
|
1385
1353
|
className
|
|
1386
1354
|
),
|
|
1387
1355
|
...props,
|
|
1388
1356
|
children: [
|
|
1389
|
-
indicatorStyle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1357
|
+
variant === "pill" && indicatorStyle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1390
1358
|
framerMotion.motion.div,
|
|
1391
1359
|
{
|
|
1392
|
-
className:
|
|
1360
|
+
className: "absolute h-8 rounded-hz-md bg-white dark:bg-neutral-900 shadow-sm",
|
|
1393
1361
|
initial: false,
|
|
1394
1362
|
animate: {
|
|
1395
1363
|
left: indicatorStyle.left,
|
|
@@ -1408,16 +1376,16 @@ var TabsList = React9__namespace.forwardRef(({ className, children, color = "def
|
|
|
1408
1376
|
) });
|
|
1409
1377
|
});
|
|
1410
1378
|
TabsList.displayName = TabsPrimitive__namespace.List.displayName;
|
|
1411
|
-
var TabsTrigger = React9__namespace.forwardRef(({ className, value, ...props }, ref) => {
|
|
1379
|
+
var TabsTrigger = React9__namespace.forwardRef(({ className, value, icon, children, ...props }, ref) => {
|
|
1412
1380
|
const { registerTab, activeTab } = useTabsContext();
|
|
1413
|
-
const {
|
|
1381
|
+
const { variant } = useTabsListContext();
|
|
1414
1382
|
const triggerRef = React9__namespace.useRef(null);
|
|
1415
1383
|
React9__namespace.useEffect(() => {
|
|
1416
1384
|
registerTab(value, triggerRef.current);
|
|
1417
1385
|
return () => registerTab(value, null);
|
|
1418
1386
|
}, [value, registerTab]);
|
|
1419
1387
|
const isActive = activeTab === value;
|
|
1420
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
1388
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1421
1389
|
TabsPrimitive__namespace.Trigger,
|
|
1422
1390
|
{
|
|
1423
1391
|
ref: (node) => {
|
|
@@ -1427,11 +1395,21 @@ var TabsTrigger = React9__namespace.forwardRef(({ className, value, ...props },
|
|
|
1427
1395
|
},
|
|
1428
1396
|
value,
|
|
1429
1397
|
className: chunkYO72COII_js.cn(
|
|
1430
|
-
"
|
|
1431
|
-
|
|
1398
|
+
"inline-flex items-center gap-1.5 whitespace-nowrap text-sm font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
1399
|
+
variant === "pill" ? chunkYO72COII_js.cn(
|
|
1400
|
+
"relative z-10 justify-center rounded-hz-md px-3 py-1.5 transition-colors",
|
|
1401
|
+
isActive ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"
|
|
1402
|
+
) : chunkYO72COII_js.cn(
|
|
1403
|
+
"pb-3 border-b-2 transition-colors",
|
|
1404
|
+
isActive ? "border-blue-600 text-blue-600 dark:border-blue-400 dark:text-blue-400" : "border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-600"
|
|
1405
|
+
),
|
|
1432
1406
|
className
|
|
1433
1407
|
),
|
|
1434
|
-
...props
|
|
1408
|
+
...props,
|
|
1409
|
+
children: [
|
|
1410
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 inline-flex", children: icon }),
|
|
1411
|
+
children
|
|
1412
|
+
]
|
|
1435
1413
|
}
|
|
1436
1414
|
);
|
|
1437
1415
|
});
|
|
@@ -1837,5 +1815,5 @@ exports.toggleItemVariants = toggleItemVariants;
|
|
|
1837
1815
|
exports.useFormContext = useFormContext;
|
|
1838
1816
|
exports.useFormFieldContext = useFormFieldContext;
|
|
1839
1817
|
exports.useTableSelection = useTableSelection;
|
|
1840
|
-
//# sourceMappingURL=chunk-
|
|
1841
|
-
//# sourceMappingURL=chunk-
|
|
1818
|
+
//# sourceMappingURL=chunk-7LWVFFKM.js.map
|
|
1819
|
+
//# sourceMappingURL=chunk-7LWVFFKM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/button/button.tsx","../src/components/primitives/card/card.tsx","../src/components/primitives/checkbox/checkbox.tsx","../src/components/primitives/dialog/dialog.tsx","../src/components/primitives/dropdown-menu/dropdown-menu.tsx","../src/components/primitives/form/form.tsx","../src/components/primitives/popover/popover.tsx","../src/components/primitives/select/select.tsx","../src/components/primitives/separator/separator.tsx","../src/components/primitives/skeleton/skeleton.tsx","../src/components/primitives/table/table.tsx","../src/components/primitives/tabs/tabs.tsx","../src/components/primitives/textarea/textarea.tsx","../src/components/primitives/toggle/toggle.tsx","../src/components/primitives/segmented-control/segmented-control.tsx","../src/components/primitives/switch/switch.tsx"],"names":["cva","React","Slot","jsx","cn","jsxs","React2","React3","CheckboxPrimitive","Check","DialogPrimitive","React4","X","DropdownMenuPrimitive","React5","ChevronRight","Circle","React6","Label","React7","PopoverPrimitive","AnimatePresence","motion","React8","SelectPrimitive","ChevronDown","ChevronUp","Search","Separator","Fragment","React9","React10","TabsPrimitive","React11","ToggleGroupPrimitive","containerRadiusClass","itemRadiusClass","RadioGroupPrimitive","React12","SwitchPrimitive"],"mappings":"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","file":"chunk-7LWVFFKM.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utils\";\n\nconst buttonVariants = cva(\n \"group inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-hz-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-blue-600 text-white shadow hover:bg-blue-700 active:bg-blue-800\",\n destructive:\n \"bg-rose-600 text-white shadow-sm hover:bg-rose-700 active:bg-rose-800\",\n outline:\n \"border border-gray-300 bg-white text-gray-700 shadow-sm hover:bg-gray-50 hover:text-gray-900 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-200 dark:hover:bg-neutral-700\",\n secondary:\n \"bg-gray-100 text-gray-900 shadow-sm hover:bg-gray-200 dark:bg-neutral-700 dark:text-gray-100 dark:hover:bg-neutral-600\",\n ghost:\n \"text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-neutral-800 dark:hover:text-gray-100\",\n link: \"text-blue-600 underline-offset-4 hover:underline dark:text-blue-400\",\n },\n size: {\n default: \"h-[52px] px-5 py-2\",\n sm: \"h-10 rounded-hz-md px-4 text-xs\",\n lg: \"h-[60px] rounded-hz-md px-8 text-base\",\n icon: \"h-[52px] w-[52px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ninterface BaseButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\n// Enforce only one decorator at a time (leading XOR trailing, never both)\nexport type ButtonProps = BaseButtonProps &\n (\n | { leadingDecorator?: React.ReactNode; trailingDecorator?: never }\n | { leadingDecorator?: never; trailingDecorator?: React.ReactNode }\n | { leadingDecorator?: never; trailingDecorator?: never }\n );\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n leadingDecorator,\n trailingDecorator,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n // If asChild is true, render without decorators (Slot handles children differently)\n if (asChild) {\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n // Only one decorator allowed at a time (enforced by TypeScript)\n const hasDecorator = leadingDecorator || trailingDecorator;\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {leadingDecorator && (\n <span className=\"shrink-0 transition-transform duration-hz-normal group-hover:-translate-x-0.5\">\n {leadingDecorator}\n </span>\n )}\n {hasDecorator ? <span>{children}</span> : children}\n {trailingDecorator && (\n <span className=\"shrink-0 transition-transform duration-hz-normal group-hover:translate-x-0.5\">\n {trailingDecorator}\n </span>\n )}\n </Comp>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\nexport type { VariantProps };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-hz-lg border border-gray-200 bg-white text-gray-900 shadow dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-4\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"p-4 pt-0\", className)}\n {...props}\n />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-4 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-hz-sm border border-gray-300 bg-transparent shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=checked]:border-blue-600 data-[state=checked]:text-white dark:border-neutral-600 dark:data-[state=checked]:bg-blue-600\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-3.5 w-3.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-hz-normal data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-hz-lg dark:border-neutral-700 dark:bg-neutral-800\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-hz-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500 dark:focus:ring-offset-gray-800 dark:data-[state=open]:bg-gray-700 dark:data-[state=open]:text-gray-400\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-gray-900 dark:text-gray-100\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-hz-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-700 dark:data-[state=open]:bg-gray-700 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-hz-md border border-gray-200 bg-white p-1 text-gray-900 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-[--radix-dropdown-menu-content-transform-origin] dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-hz-md border border-gray-200 bg-white p-1 text-gray-900 shadow-md dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-[--radix-dropdown-menu-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-hz-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-hz-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-hz-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-gray-100 dark:bg-neutral-700\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Label } from \"../typography/label\";\n\n// Form Context for sharing validation state\ninterface FormContextValue {\n errors: Record<string, string | undefined>;\n setError: (name: string, message: string | undefined) => void;\n clearError: (name: string) => void;\n clearAllErrors: () => void;\n isSubmitting: boolean;\n isValid: boolean;\n}\n\nconst FormContext = React.createContext<FormContextValue | null>(null);\n\nfunction useFormContext() {\n const context = React.useContext(FormContext);\n if (!context) {\n throw new Error(\"useFormContext must be used within a Form component\");\n }\n return context;\n}\n\n// Field Context for individual field state\ninterface FormFieldContextValue {\n name: string;\n error?: string;\n id: string;\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(\n null\n);\n\nfunction useFormFieldContext() {\n const context = React.useContext(FormFieldContext);\n if (!context) {\n throw new Error(\n \"useFormFieldContext must be used within a FormField component\"\n );\n }\n return context;\n}\n\n// Form Component\nexport interface FormProps\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"onSubmit\"> {\n onFormSubmit?: (\n e: React.FormEvent<HTMLFormElement>,\n helpers: {\n setError: (name: string, message: string) => void;\n clearErrors: () => void;\n setSubmitting: (value: boolean) => void;\n }\n ) => void | Promise<void>;\n}\n\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ className, children, onFormSubmit, ...props }, ref) => {\n const [errors, setErrors] = React.useState<Record<string, string | undefined>>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const setError = React.useCallback(\n (name: string, message: string | undefined) => {\n setErrors((prev) => ({ ...prev, [name]: message }));\n },\n []\n );\n\n const clearError = React.useCallback((name: string) => {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[name];\n return next;\n });\n }, []);\n\n const clearAllErrors = React.useCallback(() => {\n setErrors({});\n }, []);\n\n const isValid = Object.keys(errors).length === 0;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (onFormSubmit) {\n setIsSubmitting(true);\n try {\n await onFormSubmit(e, {\n setError: (name, message) => setError(name, message),\n clearErrors: clearAllErrors,\n setSubmitting: setIsSubmitting,\n });\n } finally {\n setIsSubmitting(false);\n }\n }\n };\n\n const contextValue = React.useMemo(\n () => ({\n errors,\n setError,\n clearError,\n clearAllErrors,\n isSubmitting,\n isValid,\n }),\n [errors, setError, clearError, clearAllErrors, isSubmitting, isValid]\n );\n\n return (\n <FormContext.Provider value={contextValue}>\n <form\n ref={ref}\n className={cn(\"space-y-6\", className)}\n onSubmit={handleSubmit}\n {...props}\n >\n {children}\n </form>\n </FormContext.Provider>\n );\n }\n);\nForm.displayName = \"Form\";\n\n// FormField Component\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, name, children, ...props }, ref) => {\n const { errors } = useFormContext();\n const id = React.useId();\n const error = errors[name];\n\n const contextValue = React.useMemo(\n () => ({ name, error, id }),\n [name, error, id]\n );\n\n return (\n <FormFieldContext.Provider value={contextValue}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {children}\n </div>\n </FormFieldContext.Provider>\n );\n }\n);\nFormField.displayName = \"FormField\";\n\n// FormLabel Component\nexport interface FormLabelProps\n extends React.ComponentPropsWithoutRef<typeof Label> {}\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof Label>,\n FormLabelProps\n>(({ className, ...props }, ref) => {\n const { id, error } = useFormFieldContext();\n\n return (\n <Label\n ref={ref}\n htmlFor={id}\n className={cn(error && \"text-rose-500 dark:text-rose-400\", className)}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\n// FormControl Component - wraps the input and provides aria attributes\nexport interface FormControlProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactElement;\n}\n\nconst FormControl = React.forwardRef<HTMLDivElement, FormControlProps>(\n ({ children, ...props }, ref) => {\n const { id, error, name } = useFormFieldContext();\n\n // Clone the child element and inject form-related props\n const child = React.cloneElement(children, {\n id,\n name,\n \"aria-invalid\": !!error,\n \"aria-describedby\": error ? `${id}-error` : undefined,\n ...children.props,\n });\n\n return (\n <div ref={ref} {...props}>\n {child}\n </div>\n );\n }\n);\nFormControl.displayName = \"FormControl\";\n\n// FormDescription Component - uses span to avoid hydration errors with MDX nesting\nexport interface FormDescriptionProps\n extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst FormDescription = React.forwardRef<HTMLSpanElement, FormDescriptionProps>(\n ({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n \"block text-sm text-neutral-500 dark:text-neutral-400\",\n className\n )}\n {...props}\n />\n );\n }\n);\nFormDescription.displayName = \"FormDescription\";\n\n// FormMessage Component - displays error or success messages\nexport interface FormMessageProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: string;\n}\n\nconst FormMessage = React.forwardRef<HTMLParagraphElement, FormMessageProps>(\n ({ className, children, error: errorProp, ...props }, ref) => {\n const fieldContext = React.useContext(FormFieldContext);\n const error = errorProp ?? fieldContext?.error;\n const id = fieldContext?.id;\n\n if (!error && !children) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={id ? `${id}-error` : undefined}\n className={cn(\n \"text-sm font-medium\",\n error\n ? \"text-rose-500 dark:text-rose-400\"\n : \"text-neutral-600 dark:text-neutral-400\",\n className\n )}\n role={error ? \"alert\" : undefined}\n {...props}\n >\n {error || children}\n </p>\n );\n }\n);\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n useFormContext,\n useFormFieldContext,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nimport { cn } from \"@/utils\";\n\nconst PopoverContext = React.createContext<{ open: boolean }>({ open: false });\n\nconst Popover: React.FC<React.ComponentProps<typeof PopoverPrimitive.Root>> = ({\n children,\n open: controlledOpen,\n onOpenChange,\n ...props\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n return (\n <PopoverContext.Provider value={{ open }}>\n <PopoverPrimitive.Root\n open={open}\n onOpenChange={handleOpenChange}\n {...props}\n >\n {children}\n </PopoverPrimitive.Root>\n </PopoverContext.Provider>\n );\n};\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, children, ...props }, ref) => {\n const { open } = React.useContext(PopoverContext);\n\n // Extract only the props we want to pass to PopoverPrimitive.Content\n const {\n onOpenAutoFocus,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n side,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n hideWhenDetached,\n } = props;\n\n return (\n <AnimatePresence>\n {open && (\n <PopoverPrimitive.Portal forceMount>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n side={side}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n arrowPadding={arrowPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onInteractOutside={onInteractOutside}\n asChild\n forceMount\n >\n <motion.div\n initial={{ opacity: 0, scale: 0.96, y: -8 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.96, y: -8 }}\n transition={{\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n mass: 0.8,\n }}\n className={cn(\n \"z-50 w-72 rounded-hz-lg border border-white/20 bg-white/80 backdrop-blur-xl p-4 text-gray-900 shadow-lg outline-none dark:border-neutral-700/50 dark:bg-neutral-900/80 dark:text-neutral-100 origin-[--radix-popover-content-transform-origin]\",\n className\n )}\n >\n {children}\n </motion.div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )}\n </AnimatePresence>\n );\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n Check, ChevronDown, ChevronUp, Search\n} from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nimport { cn } from \"@/utils\";\n\nconst SelectContext = React.createContext<{ open: boolean }>({ open: false });\n\nconst SelectSearchContext = React.createContext<string>(\"\");\n\nconst Select: React.FC<React.ComponentProps<typeof SelectPrimitive.Root>> = ({\n children,\n open: controlledOpen,\n onOpenChange,\n ...props\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n return (\n <SelectContext.Provider value={{ open }}>\n <SelectPrimitive.Root\n open={open}\n onOpenChange={handleOpenChange}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n </SelectContext.Provider>\n );\n};\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-[52px] w-full items-center justify-between rounded-hz-md border border-gray-300 bg-white px-4 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-100 dark:placeholder:text-gray-500 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\ninterface SelectContentProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n searchable?: boolean;\n searchPlaceholder?: string;\n}\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", searchable = false, searchPlaceholder = \"Search...\", ...props }, ref) => {\n const { open } = React.useContext(SelectContext);\n const [search, setSearch] = React.useState(\"\");\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (open && searchable) {\n const frame = requestAnimationFrame(() => {\n searchInputRef.current?.focus();\n });\n return () => cancelAnimationFrame(frame);\n }\n if (!open) setSearch(\"\");\n }, [open, searchable]);\n\n const {\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n side,\n sideOffset,\n align,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n hideWhenDetached,\n } = props;\n\n return (\n <AnimatePresence>\n {open && (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n arrowPadding={arrowPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n onCloseAutoFocus={onCloseAutoFocus}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n asChild\n >\n <motion.div\n initial={{ opacity: 0, scale: 0.96, y: -8 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.96, y: -8 }}\n transition={{\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n mass: 0.8,\n }}\n className={cn(\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-hz-lg border border-white/20 bg-white/80 backdrop-blur-xl text-gray-900 shadow-lg dark:border-neutral-700/50 dark:bg-neutral-900/80 dark:text-gray-100 origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n >\n {searchable && (\n <div className=\"flex items-center border-b border-neutral-200/50 dark:border-neutral-700/50\">\n <Search className=\"mr-2 h-6 w-6 shrink-0 opacity-50 pl-2\" />\n <input\n ref={searchInputRef}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={searchPlaceholder}\n onKeyDown={(e) => e.stopPropagation()}\n className=\"flex h-10 w-full py-2 bg-transparent text-sm placeholder:text-neutral-400 dark:placeholder:text-neutral-500 px-2 focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-none\"\n />\n </div>\n )}\n <SelectSearchContext.Provider value={search}>\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectSearchContext.Provider>\n </motion.div>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )}\n </AnimatePresence>\n );\n});\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, textValue, ...props }, ref) => {\n const search = React.useContext(SelectSearchContext);\n\n const itemText = textValue ?? (typeof children === \"string\" ? children : \"\");\n\n if (search && itemText && !itemText.toLowerCase().includes(search.toLowerCase())) {\n return null;\n }\n\n return (\n <SelectPrimitive.Item\n ref={ref}\n textValue={textValue}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-hz-md py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-black/5 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-white/10 dark:focus:text-gray-100 transition-colors\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-gray-200/50 dark:bg-neutral-700/50\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utils\";\n\nconst separatorVariants = cva(\"shrink-0 bg-gray-200 dark:bg-neutral-700\", {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n vertical: \"h-full w-[1px]\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface SeparatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof separatorVariants> {\n decorative?: boolean;\n}\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: SeparatorProps) {\n return (\n <div\n role={decorative ? \"none\" : \"separator\"}\n aria-orientation={decorative ? undefined : (orientation ?? undefined)}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nexport { Separator, separatorVariants };\n","import { cn } from \"@/utils\";\n\ninterface SkeletonProps {\n className?: string;\n}\n\n/**\n * Base Skeleton component for loading states\n */\nexport function Skeleton({ className }: SkeletonProps) {\n return (\n <div\n className={cn(\n \"animate-pulse rounded-hz-md bg-neutral-200 dark:bg-neutral-800\",\n className\n )}\n />\n );\n}\n\n/**\n * Predefined skeleton components for common use cases\n */\nexport function SkeletonText({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-4\", className)} />;\n}\n\nexport function SkeletonTitle({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-6 w-48\", className)} />;\n}\n\nexport function SkeletonSubtitle({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-3 w-64\", className)} />;\n}\n\nexport function SkeletonAvatar({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"w-10 h-10 rounded\", className)} />;\n}\n\nexport function SkeletonBadge({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-6 w-24\", className)} />;\n}\n\nexport function SkeletonIcon({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"w-6 h-6 rounded\", className)} />;\n}\n\nexport function SkeletonButton({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-10 w-24 rounded-hz-md\", className)} />;\n}\n\nexport function SkeletonInput({ className }: SkeletonProps) {\n return <Skeleton className={cn(\"h-10 w-full rounded-hz-md\", className)} />;\n}\n\n/**\n * Generic table row skeleton - customize for your table structure\n */\nexport function SkeletonTableRow({\n columns = 4,\n className,\n}: SkeletonProps & { columns?: number }) {\n return (\n <tr className={className}>\n {Array.from({ length: columns }).map((_, index) => (\n <td key={index} className=\"px-6 py-4\">\n <Skeleton className=\"h-4 w-full\" />\n </td>\n ))}\n </tr>\n );\n}\n\n/**\n * Multiple skeleton rows for tables\n */\nexport function SkeletonTableRows({\n count = 5,\n columns = 4,\n}: {\n count?: number;\n columns?: number;\n}) {\n return (\n <>\n {Array.from({ length: count }).map((_, index) => (\n <SkeletonTableRow key={`skeleton-row-${index}`} columns={columns} />\n ))}\n </>\n );\n}\n\n/**\n * Card skeleton for grid layouts\n */\nexport function SkeletonCard({ className }: SkeletonProps) {\n return (\n <div\n className={cn(\n \"rounded-hz-lg border bg-card p-6 space-y-4\",\n className\n )}\n >\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-5/6\" />\n <div className=\"flex gap-2 pt-2\">\n <SkeletonBadge />\n <SkeletonBadge className=\"w-16\" />\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Checkbox } from \"@/components/primitives/checkbox\";\n\n// Table Selection Context\ntype SelectionMode = \"single\" | \"multiple\" | \"none\";\n\ninterface TableContextValue {\n selectable: boolean;\n selectionMode: SelectionMode;\n selectedRows: Set<string>;\n toggleRow: (rowId: string) => void;\n isRowSelected: (rowId: string) => boolean;\n selectAll: () => void;\n deselectAll: () => void;\n isAllSelected: boolean;\n isSomeSelected: boolean;\n getRowId: (row: any) => string;\n registerRowId: (rowId: string) => void;\n unregisterRowId: (rowId: string) => void;\n}\n\nconst TableContext = React.createContext<TableContextValue | null>(null);\n\nconst useTableContext = () => {\n const context = React.useContext(TableContext);\n return context;\n};\n\ninterface TableProps extends React.HTMLAttributes<HTMLTableElement> {\n selectable?: boolean;\n selectionMode?: SelectionMode;\n selectedRows?: string[];\n onSelectionChange?: (selectedRows: string[]) => void;\n getRowId?: (row: any) => string;\n rows?: any[];\n}\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n selectable = false,\n selectionMode = \"multiple\",\n selectedRows: controlledSelectedRows,\n onSelectionChange,\n getRowId,\n rows,\n ...props\n },\n ref\n ) => {\n const [internalSelectedRows, setInternalSelectedRows] = React.useState<Set<string>>(new Set());\n const [registeredRowIds, setRegisteredRowIds] = React.useState<Set<string>>(new Set());\n \n // Use controlled or internal state\n const isControlled = controlledSelectedRows !== undefined;\n const selectedRowsSet = isControlled\n ? new Set(controlledSelectedRows)\n : internalSelectedRows;\n\n // Default getRowId function\n const defaultGetRowId = React.useCallback((row: any) => {\n if (typeof row === \"string\") return row;\n if (typeof row === \"object\" && row?.id) return String(row.id);\n return String(row);\n }, []);\n\n const finalGetRowId = getRowId || defaultGetRowId;\n\n // Get all row IDs from rows prop if provided, otherwise use registered row IDs\n const allRowIds = React.useMemo(() => {\n if (rows) {\n return new Set(rows.map(finalGetRowId));\n }\n return registeredRowIds;\n }, [rows, finalGetRowId, registeredRowIds]);\n\n // Register/unregister row IDs for selectAll functionality\n const registerRowId = React.useCallback((rowId: string) => {\n if (rowId) {\n setRegisteredRowIds(prev => {\n if (prev.has(rowId)) return prev;\n return new Set(prev).add(rowId);\n });\n }\n }, []);\n\n const unregisterRowId = React.useCallback((rowId: string) => {\n if (rowId) {\n setRegisteredRowIds(prev => {\n if (!prev.has(rowId)) return prev;\n const next = new Set(prev);\n next.delete(rowId);\n return next;\n });\n }\n }, []);\n\n const toggleRow = React.useCallback(\n (rowId: string) => {\n if (!selectable) return;\n\n const next = new Set(selectedRowsSet);\n \n if (selectionMode === \"single\") {\n // Single mode: replace selection\n next.clear();\n if (!next.has(rowId)) {\n next.add(rowId);\n }\n } else {\n // Multiple mode: toggle\n if (next.has(rowId)) {\n next.delete(rowId);\n } else {\n next.add(rowId);\n }\n }\n\n if (isControlled) {\n onSelectionChange?.(Array.from(next));\n } else {\n setInternalSelectedRows(next);\n onSelectionChange?.(Array.from(next));\n }\n },\n [selectable, selectionMode, selectedRowsSet, isControlled, onSelectionChange]\n );\n\n const selectAll = React.useCallback(() => {\n if (!selectable || selectionMode !== \"multiple\" || allRowIds.size === 0) return;\n \n const next = new Set(allRowIds);\n if (isControlled) {\n onSelectionChange?.(Array.from(next));\n } else {\n setInternalSelectedRows(next);\n onSelectionChange?.(Array.from(next));\n }\n }, [selectable, selectionMode, allRowIds, isControlled, onSelectionChange]);\n\n const deselectAll = React.useCallback(() => {\n if (!selectable) return;\n \n const next = new Set<string>();\n if (isControlled) {\n onSelectionChange?.(Array.from(next));\n } else {\n setInternalSelectedRows(next);\n onSelectionChange?.(Array.from(next));\n }\n }, [selectable, isControlled, onSelectionChange]);\n\n const isRowSelected = React.useCallback(\n (rowId: string) => selectedRowsSet.has(rowId),\n [selectedRowsSet]\n );\n\n const isAllSelected = React.useMemo(() => {\n if (!selectable || allRowIds.size === 0) return false;\n return allRowIds.size > 0 && Array.from(allRowIds).every(id => selectedRowsSet.has(id));\n }, [selectable, allRowIds, selectedRowsSet]);\n\n const isSomeSelected = React.useMemo(() => {\n if (!selectable) return false;\n return selectedRowsSet.size > 0 && !isAllSelected;\n }, [selectable, selectedRowsSet.size, isAllSelected]);\n\n const contextValue = React.useMemo<TableContextValue>(() => ({\n selectable,\n selectionMode,\n selectedRows: selectedRowsSet,\n toggleRow,\n isRowSelected,\n selectAll,\n deselectAll,\n isAllSelected,\n isSomeSelected,\n getRowId: finalGetRowId,\n registerRowId,\n unregisterRowId,\n }), [\n selectable,\n selectionMode,\n selectedRowsSet,\n toggleRow,\n isRowSelected,\n selectAll,\n deselectAll,\n isAllSelected,\n isSomeSelected,\n finalGetRowId,\n registerRowId,\n unregisterRowId,\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n </TableContext.Provider>\n );\n }\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:border-b [&_tr]:border-gray-200 dark:[&_tr]:border-gray-700\", className)}\n {...props}\n />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t border-gray-200 bg-gray-50 font-medium dark:border-neutral-700 dark:bg-neutral-800/50 [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\ninterface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n rowId?: string;\n rowData?: any;\n}\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, rowId, rowData, onClick, ...props }, ref) => {\n const context = useTableContext();\n\n // Destructure stable refs to avoid depending on the entire context object\n const getRowId = context?.getRowId;\n const selectable = context?.selectable;\n const registerRowId = context?.registerRowId;\n const unregisterRowId = context?.unregisterRowId;\n\n // Determine row ID from props or context\n const finalRowId = React.useMemo(() => {\n if (rowId) return rowId;\n if (rowData && getRowId) return getRowId(rowData);\n return props.id || undefined;\n }, [rowId, rowData, getRowId, props.id]);\n\n // Register/unregister row ID for selectAll functionality\n React.useEffect(() => {\n if (finalRowId && selectable) {\n registerRowId?.(finalRowId);\n return () => {\n unregisterRowId?.(finalRowId);\n };\n }\n }, [finalRowId, selectable, registerRowId, unregisterRowId]);\n\n const isSelected = finalRowId ? context?.isRowSelected(finalRowId) : false;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLTableRowElement>) => {\n // Always call onClick handler if provided\n onClick?.(e);\n },\n [onClick]\n );\n\n return (\n <tr\n ref={ref}\n data-state={isSelected ? \"selected\" : undefined}\n data-row-id={finalRowId}\n className={cn(\n \"border-b border-gray-200 transition-colors hover:bg-gray-50 data-[state=selected]:bg-blue-50 dark:border-neutral-700 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-blue-900/20\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n );\n }\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-gray-500 dark:text-gray-400 [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-gray-500 dark:text-gray-400\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\n// Table Select All Checkbox Component\ninterface TableSelectAllProps {\n className?: string;\n}\n\nconst TableSelectAll = React.forwardRef<\n HTMLDivElement,\n TableSelectAllProps\n>(({ className, ...props }, ref) => {\n const context = useTableContext();\n\n if (!context?.selectable || context.selectionMode !== \"multiple\") {\n return null;\n }\n\n const handleCheckedChange = (checked: boolean) => {\n if (checked) {\n context.selectAll();\n } else {\n context.deselectAll();\n }\n };\n\n return (\n <div ref={ref} className={className} {...props}>\n <Checkbox\n checked={context.isAllSelected}\n onCheckedChange={handleCheckedChange}\n aria-label=\"Select all rows\"\n {...(context.isSomeSelected && { \"data-state\": \"indeterminate\" })}\n />\n </div>\n );\n});\nTableSelectAll.displayName = \"TableSelectAll\";\n\n// Table Row Checkbox Component\ninterface TableRowCheckboxProps {\n rowId?: string;\n rowData?: any;\n className?: string;\n}\n\nconst TableRowCheckbox = React.forwardRef<\n HTMLDivElement,\n TableRowCheckboxProps\n>(({ rowId, rowData, className, ...props }, ref) => {\n const context = useTableContext();\n const getRowId = context?.getRowId;\n\n if (!context?.selectable) {\n return null;\n }\n\n // Determine row ID\n const finalRowId = React.useMemo(() => {\n if (rowId) return rowId;\n if (rowData && getRowId) return getRowId(rowData);\n return undefined;\n }, [rowId, rowData, getRowId]);\n\n if (!finalRowId) {\n return null;\n }\n\n const isSelected = context.isRowSelected(finalRowId);\n\n const handleCheckedChange = () => {\n context.toggleRow(finalRowId);\n };\n\n return (\n <div ref={ref} className={className} {...props}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={handleCheckedChange}\n aria-label={`Select row ${finalRowId}`}\n />\n </div>\n );\n});\nTableRowCheckbox.displayName = \"TableRowCheckbox\";\n\n// Hook for accessing table selection\nconst useTableSelection = () => {\n const context = useTableContext();\n if (!context) {\n throw new Error(\"useTableSelection must be used within a Table component with selectable prop\");\n }\n return context;\n};\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n TableSelectAll,\n TableRowCheckbox,\n useTableSelection,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"@/utils\";\n\n// Context to share active tab info\ninterface TabsContextValue {\n activeTab: string | undefined;\n setActiveTab: (value: string) => void;\n registerTab: (value: string, element: HTMLButtonElement | null) => void;\n tabRefs: Map<string, HTMLButtonElement | null>;\n listRef: React.RefObject<HTMLDivElement>;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = () => {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs provider\");\n }\n return context;\n};\n\n// Context to share variant from TabsList to TabsTrigger\ninterface TabsListContextValue {\n variant: \"pill\" | \"underline\";\n}\n\nconst TabsListContext = React.createContext<TabsListContextValue>({ variant: \"pill\" });\nconst useTabsListContext = () => React.useContext(TabsListContext);\n\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ defaultValue, value, onValueChange, children, ...props }, ref) => {\n const [activeTab, setActiveTabState] = React.useState(value ?? defaultValue);\n const tabRefs = React.useRef(new Map<string, HTMLButtonElement | null>()).current;\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const setActiveTab = React.useCallback(\n (newValue: string) => {\n setActiveTabState(newValue);\n onValueChange?.(newValue);\n },\n [onValueChange]\n );\n\n React.useEffect(() => {\n if (value !== undefined) {\n setActiveTabState(value);\n }\n }, [value]);\n\n const registerTab = React.useCallback(\n (tabValue: string, element: HTMLButtonElement | null) => {\n tabRefs.set(tabValue, element);\n },\n [tabRefs]\n );\n\n return (\n <TabsContext.Provider\n value={{ activeTab, setActiveTab, registerTab, tabRefs, listRef }}\n >\n <TabsPrimitive.Root\n ref={ref}\n defaultValue={defaultValue}\n value={activeTab}\n onValueChange={setActiveTab}\n {...props}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsContext.Provider>\n );\n});\nTabs.displayName = \"Tabs\";\n\nexport type TabsVariant = \"pill\" | \"underline\";\n\ninterface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> {\n variant?: TabsVariant;\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, children, variant = \"pill\", ...props }, ref) => {\n const { activeTab, tabRefs, listRef } = useTabsContext();\n const [indicatorStyle, setIndicatorStyle] = React.useState<{\n left: number;\n width: number;\n } | null>(null);\n\n React.useEffect(() => {\n if (variant !== \"pill\") return;\n\n const updateIndicator = () => {\n if (!activeTab || !listRef.current) return;\n\n const activeElement = tabRefs.get(activeTab);\n if (!activeElement) return;\n\n const listRect = listRef.current.getBoundingClientRect();\n const tabRect = activeElement.getBoundingClientRect();\n\n setIndicatorStyle({\n left: tabRect.left - listRect.left,\n width: tabRect.width,\n });\n };\n\n updateIndicator();\n window.addEventListener(\"resize\", updateIndicator);\n return () => window.removeEventListener(\"resize\", updateIndicator);\n }, [activeTab, tabRefs, listRef, variant]);\n\n return (\n <TabsListContext.Provider value={{ variant }}>\n <TabsPrimitive.List\n ref={(node) => {\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n (listRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={cn(\n variant === \"pill\"\n ? \"relative inline-flex h-10 items-center justify-center rounded-hz-lg p-1 bg-gray-100 text-gray-500 dark:bg-neutral-700 dark:text-gray-400\"\n : \"flex gap-4 border-b border-gray-200 dark:border-neutral-800\",\n className\n )}\n {...props}\n >\n {variant === \"pill\" && indicatorStyle && (\n <motion.div\n className=\"absolute h-8 rounded-hz-md bg-white dark:bg-neutral-900 shadow-sm\"\n initial={false}\n animate={{\n left: indicatorStyle.left,\n width: indicatorStyle.width,\n }}\n transition={{\n type: \"spring\",\n stiffness: 500,\n damping: 35,\n }}\n />\n )}\n {children}\n </TabsPrimitive.List>\n </TabsListContext.Provider>\n );\n});\nTabsList.displayName = TabsPrimitive.List.displayName;\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n icon?: React.ReactNode;\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, value, icon, children, ...props }, ref) => {\n const { registerTab, activeTab } = useTabsContext();\n const { variant } = useTabsListContext();\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n React.useEffect(() => {\n registerTab(value, triggerRef.current);\n return () => registerTab(value, null);\n }, [value, registerTab]);\n\n const isActive = activeTab === value;\n\n return (\n <TabsPrimitive.Trigger\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }}\n value={value}\n className={cn(\n \"inline-flex items-center gap-1.5 whitespace-nowrap text-sm font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n variant === \"pill\"\n ? cn(\n \"relative z-10 justify-center rounded-hz-md px-3 py-1.5 transition-colors\",\n isActive ? \"text-gray-900 dark:text-gray-100\" : \"text-gray-500 dark:text-gray-400\"\n )\n : cn(\n \"pb-3 border-b-2 transition-colors\",\n isActive\n ? \"border-blue-600 text-blue-600 dark:border-blue-400 dark:text-blue-400\"\n : \"border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-600\"\n ),\n className\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0 inline-flex\">{icon}</span>}\n {children}\n </TabsPrimitive.Trigger>\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-hz-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-100 dark:placeholder:text-gray-500\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utils\";\n\nconst toggleGroupVariants = cva(\n \"inline-flex w-fit items-stretch border border-gray-200 bg-white dark:border-neutral-700 dark:bg-neutral-900\",\n {\n variants: {\n size: {\n default: \"h-[52px]\",\n sm: \"h-10\",\n lg: \"h-[60px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst toggleItemVariants = cva(\n \"inline-flex flex-1 items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n variants: {\n size: {\n default: \"h-full px-6\",\n sm: \"h-full px-4 text-xs\",\n lg: \"h-full px-8 text-base\",\n },\n iconOnly: {\n true: \"aspect-square px-0 min-w-0\",\n false: \"min-w-[120px]\",\n },\n },\n compoundVariants: [\n { size: \"sm\", iconOnly: false, class: \"min-w-[90px]\" },\n { size: \"lg\", iconOnly: false, class: \"min-w-[140px]\" },\n ],\n defaultVariants: {\n size: \"default\",\n iconOnly: false,\n },\n }\n);\n\nexport type ToggleRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n\nconst containerRadiusClass: Record<ToggleRadius, string> = {\n none: \"rounded-hz-lg\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nconst itemRadiusClass: Record<ToggleRadius, string> = {\n none: \"first:rounded-l-hz-lg last:rounded-r-hz-lg\",\n sm: \"first:rounded-l-sm last:rounded-r-sm\",\n md: \"first:rounded-l-md last:rounded-r-md\",\n lg: \"first:rounded-l-lg last:rounded-r-lg\",\n full: \"rounded-full\",\n};\n\nexport interface ToggleOption {\n value: string;\n label?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\nexport interface ToggleProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>,\n \"onChange\" | \"onValueChange\" | \"type\" | \"value\" | \"defaultValue\"\n >,\n VariantProps<typeof toggleGroupVariants> {\n options: ToggleOption[];\n value?: string[];\n onChange?: (value: string[]) => void;\n defaultValue?: string[];\n radius?: ToggleRadius;\n}\n\nfunction Toggle({\n className,\n options,\n value,\n onChange,\n size,\n radius = \"none\",\n ...props\n}: ToggleProps) {\n return (\n <ToggleGroupPrimitive.Root\n {...props}\n type=\"multiple\"\n {...(value !== undefined ? { value, onValueChange: onChange } : {})}\n className={cn(\n toggleGroupVariants({ size }),\n containerRadiusClass[radius],\n className\n )}\n >\n {options.map((option) => {\n const iconOnly = !!option.icon && !option.label;\n return (\n <ToggleGroupPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n aria-label={iconOnly ? (option.ariaLabel ?? option.value) : undefined}\n className={cn(\n toggleItemVariants({ size, iconOnly }),\n itemRadiusClass[radius],\n \"border border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\",\n \"data-[state=on]:!bg-blue-50 data-[state=on]:border-blue-500 data-[state=on]:text-blue-600\",\n \"dark:data-[state=on]:!bg-blue-950/40 dark:data-[state=on]:border-blue-400 dark:data-[state=on]:text-blue-400\"\n )}\n >\n {option.icon && (\n <span className=\"shrink-0 inline-flex\">{option.icon}</span>\n )}\n {option.label}\n </ToggleGroupPrimitive.Item>\n );\n })}\n </ToggleGroupPrimitive.Root>\n );\n}\n\nexport { Toggle, toggleGroupVariants, toggleItemVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utils\";\n\nconst segmentedControlVariants = cva(\n \"inline-flex w-fit items-stretch border border-gray-200 bg-white dark:border-neutral-700 dark:bg-neutral-900\",\n {\n variants: {\n size: {\n default: \"h-[52px]\",\n sm: \"h-10\",\n lg: \"h-[60px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst segmentedControlItemVariants = cva(\n \"inline-flex flex-1 cursor-pointer items-center justify-center whitespace-nowrap px-6 text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n variants: {\n size: {\n default: \"h-full min-w-[120px]\",\n sm: \"h-full min-w-[90px] text-xs\",\n lg: \"h-full min-w-[140px] text-base\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nexport type SegmentedControlRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n\nconst containerRadiusClass: Record<SegmentedControlRadius, string> = {\n none: \"rounded-hz-lg\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nconst itemRadiusClass: Record<SegmentedControlRadius, string> = {\n none: \"first:rounded-l-hz-lg last:rounded-r-hz-lg\",\n sm: \"first:rounded-l-sm last:rounded-r-sm\",\n md: \"first:rounded-l-md last:rounded-r-md\",\n lg: \"first:rounded-l-lg last:rounded-r-lg\",\n full: \"rounded-full\",\n};\n\nexport interface SegmentedControlOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>,\n \"onChange\" | \"onValueChange\" | \"value\"\n >,\n VariantProps<typeof segmentedControlVariants> {\n options: SegmentedControlOption[];\n value?: string;\n onChange?: (value: string) => void;\n radius?: SegmentedControlRadius;\n}\n\nfunction SegmentedControl({\n className,\n options,\n value,\n onChange,\n size,\n radius = \"none\",\n ...props\n}: SegmentedControlProps) {\n return (\n <RadioGroupPrimitive.Root\n {...props}\n {...(value !== undefined ? { value, onValueChange: onChange } : {})}\n className={cn(\n segmentedControlVariants({ size }),\n containerRadiusClass[radius],\n className\n )}\n >\n {options.map((option) => (\n <RadioGroupPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className={cn(\n segmentedControlItemVariants({ size }),\n itemRadiusClass[radius],\n \"border border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\",\n \"data-[state=checked]:!bg-blue-50 data-[state=checked]:border-blue-500 data-[state=checked]:text-blue-600\",\n \"dark:data-[state=checked]:!bg-blue-950/40 dark:data-[state=checked]:border-blue-400 dark:data-[state=checked]:text-blue-400\"\n )}\n >\n <RadioGroupPrimitive.Indicator className=\"hidden\" />\n {option.label}\n </RadioGroupPrimitive.Item>\n ))}\n </RadioGroupPrimitive.Root>\n );\n}\n\nexport { SegmentedControl, segmentedControlVariants, segmentedControlItemVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utils\";\n\nconst switchTrackVariants = cva(\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=unchecked]:bg-gray-200 dark:data-[state=checked]:bg-blue-500 dark:data-[state=unchecked]:bg-neutral-700\",\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n default: \"h-6 w-11\",\n lg: \"h-7 w-[52px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4 data-[state=checked]:translate-x-4\",\n default: \"h-5 w-5 data-[state=checked]:translate-x-5\",\n lg: \"h-6 w-6 data-[state=checked]:translate-x-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst switchLabelVariants = cva(\"select-none\", {\n variants: {\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n});\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n VariantProps<typeof switchTrackVariants> {\n label?: string;\n labelPosition?: \"left\" | \"right\";\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size, label, labelPosition = \"right\", ...props }, ref) => {\n const generatedId = React.useId();\n const switchId = props.id ?? generatedId;\n\n const switchEl = (\n <SwitchPrimitive.Root\n {...props}\n id={switchId}\n ref={ref}\n className={cn(switchTrackVariants({ size }), className)}\n >\n <SwitchPrimitive.Thumb className={switchThumbVariants({ size })} />\n </SwitchPrimitive.Root>\n );\n\n if (!label) return switchEl;\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n props.disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n >\n {labelPosition === \"left\" && (\n <label\n htmlFor={switchId}\n className={cn(\n switchLabelVariants({ size }),\n props.disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n {switchEl}\n {labelPosition === \"right\" && (\n <label\n htmlFor={switchId}\n className={cn(\n switchLabelVariants({ size }),\n props.disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n );\n});\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchTrackVariants, switchThumbVariants, switchLabelVariants };\n"]}
|
|
@@ -1265,7 +1265,6 @@ var Input = React.forwardRef(
|
|
|
1265
1265
|
value,
|
|
1266
1266
|
onChange,
|
|
1267
1267
|
onNumberChange,
|
|
1268
|
-
onSelectChange,
|
|
1269
1268
|
onFocus,
|
|
1270
1269
|
onBlur,
|
|
1271
1270
|
type = "text",
|
|
@@ -1288,7 +1287,6 @@ var Input = React.forwardRef(
|
|
|
1288
1287
|
precision = 0,
|
|
1289
1288
|
allowNegative = true,
|
|
1290
1289
|
showControls = false,
|
|
1291
|
-
options = [],
|
|
1292
1290
|
autoComplete,
|
|
1293
1291
|
readOnly = false,
|
|
1294
1292
|
tabIndex = 0,
|
|
@@ -1315,7 +1313,6 @@ var Input = React.forwardRef(
|
|
|
1315
1313
|
});
|
|
1316
1314
|
};
|
|
1317
1315
|
const isNumberType = type === "number";
|
|
1318
|
-
const isSelectType = type === "select";
|
|
1319
1316
|
const isMobileType = type === "mobile";
|
|
1320
1317
|
const isEmailType = type === "email";
|
|
1321
1318
|
const isPasswordType = type === "password";
|
|
@@ -1458,9 +1455,6 @@ var Input = React.forwardRef(
|
|
|
1458
1455
|
}
|
|
1459
1456
|
onBlur?.(e);
|
|
1460
1457
|
};
|
|
1461
|
-
const handleSelectChange = (e) => {
|
|
1462
|
-
onSelectChange?.(e.target.value);
|
|
1463
|
-
};
|
|
1464
1458
|
const handleIncrement = () => {
|
|
1465
1459
|
if (disabled || !isNumberType) return;
|
|
1466
1460
|
const currentNum = parseFloat(inputValue) || 0;
|
|
@@ -1513,17 +1507,6 @@ var Input = React.forwardRef(
|
|
|
1513
1507
|
${hasLeadingContent || isMobileType ? "pl-10" : ""}
|
|
1514
1508
|
${hasTrailingContent ? hasControls ? "pr-20" : "pr-10" : ""}
|
|
1515
1509
|
${className}
|
|
1516
|
-
`.trim().replace(/\s+/g, " ");
|
|
1517
|
-
const selectClasses = `
|
|
1518
|
-
${baseInputStyles}
|
|
1519
|
-
${sizeStyles[size]}
|
|
1520
|
-
${variantStyles2[variant]}
|
|
1521
|
-
${stateStyles}
|
|
1522
|
-
${disabledStyles}
|
|
1523
|
-
${hasLeadingContent ? "pl-10" : ""}
|
|
1524
|
-
${hasTrailingContent ? "pr-10" : ""}
|
|
1525
|
-
${className}
|
|
1526
|
-
appearance-none cursor-pointer
|
|
1527
1510
|
`.trim().replace(/\s+/g, " ");
|
|
1528
1511
|
const canDecrement = !disabled && (min === void 0 || (parseFloat(inputValue) || 0) > min);
|
|
1529
1512
|
const canIncrement = !disabled && (max === void 0 || (parseFloat(inputValue) || 0) < max);
|
|
@@ -1558,32 +1541,7 @@ var Input = React.forwardRef(
|
|
|
1558
1541
|
}
|
|
1559
1542
|
),
|
|
1560
1543
|
isMobileType && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center z-10 pointer-events-none border-r pr-3 border-neutral-300/50 dark:border-neutral-600/50", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-neutral-500 dark:text-neutral-300", children: "+1" }) }),
|
|
1561
|
-
|
|
1562
|
-
"select",
|
|
1563
|
-
{
|
|
1564
|
-
ref,
|
|
1565
|
-
value,
|
|
1566
|
-
onChange: handleSelectChange,
|
|
1567
|
-
onFocus,
|
|
1568
|
-
onBlur,
|
|
1569
|
-
disabled,
|
|
1570
|
-
required,
|
|
1571
|
-
className: selectClasses,
|
|
1572
|
-
...props,
|
|
1573
|
-
children: [
|
|
1574
|
-
placeholder && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: placeholder }),
|
|
1575
|
-
options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1576
|
-
"option",
|
|
1577
|
-
{
|
|
1578
|
-
value: option.value,
|
|
1579
|
-
disabled: option.disabled,
|
|
1580
|
-
children: option.label
|
|
1581
|
-
},
|
|
1582
|
-
option.value
|
|
1583
|
-
))
|
|
1584
|
-
]
|
|
1585
|
-
}
|
|
1586
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1544
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1587
1545
|
"input",
|
|
1588
1546
|
{
|
|
1589
1547
|
ref: (node) => {
|
|
@@ -1656,13 +1614,6 @@ var Input = React.forwardRef(
|
|
|
1656
1614
|
children: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { size: iconSizeStyles[size] }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { size: iconSizeStyles[size] })
|
|
1657
1615
|
}
|
|
1658
1616
|
),
|
|
1659
|
-
isSelectType && !trailingIcon && !trailingDecorator && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1660
|
-
lucideReact.ChevronDown,
|
|
1661
|
-
{
|
|
1662
|
-
size: iconSizeStyles[size],
|
|
1663
|
-
className: "text-neutral-400"
|
|
1664
|
-
}
|
|
1665
|
-
) }),
|
|
1666
1617
|
(trailingIcon || trailingDecorator) && !hasControls && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1667
1618
|
"div",
|
|
1668
1619
|
{
|
|
@@ -2733,5 +2684,5 @@ exports.TextButton = TextButton;
|
|
|
2733
2684
|
exports.Toast = Toast;
|
|
2734
2685
|
exports.useDashboardContext = useDashboardContext;
|
|
2735
2686
|
exports.useSideNavContext = useSideNavContext;
|
|
2736
|
-
//# sourceMappingURL=chunk-
|
|
2737
|
-
//# sourceMappingURL=chunk-
|
|
2687
|
+
//# sourceMappingURL=chunk-BRG5D46G.js.map
|
|
2688
|
+
//# sourceMappingURL=chunk-BRG5D46G.js.map
|