@pos-360/horizon 0.7.0 → 0.8.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-WLBF2GR6.mjs → chunk-3CJL52WY.mjs} +164 -34
- package/dist/chunk-3CJL52WY.mjs.map +1 -0
- package/dist/{chunk-T6DNK3SI.js → chunk-4UFEDQ7W.js} +141 -47
- package/dist/chunk-4UFEDQ7W.js.map +1 -0
- package/dist/{chunk-PEL2DCBC.mjs → chunk-IMKSKYMQ.mjs} +142 -48
- package/dist/chunk-IMKSKYMQ.mjs.map +1 -0
- package/dist/{chunk-4GEUF55E.js → chunk-LUUH457P.js} +162 -32
- package/dist/chunk-LUUH457P.js.map +1 -0
- package/dist/enhanced.d.mts +10 -1
- package/dist/enhanced.d.ts +10 -1
- package/dist/enhanced.js +27 -27
- package/dist/enhanced.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +112 -112
- package/dist/index.mjs +2 -2
- package/dist/primitives.d.mts +8 -2
- package/dist/primitives.d.ts +8 -2
- package/dist/primitives.js +85 -85
- package/dist/primitives.mjs +1 -1
- package/package.json +2 -1
- package/dist/chunk-4GEUF55E.js.map +0 -1
- package/dist/chunk-PEL2DCBC.mjs.map +0 -1
- package/dist/chunk-T6DNK3SI.js.map +0 -1
- package/dist/chunk-WLBF2GR6.mjs.map +0 -1
|
@@ -650,6 +650,7 @@ var PopoverContent = React9__namespace.forwardRef(({ className, align = "center"
|
|
|
650
650
|
});
|
|
651
651
|
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
|
652
652
|
var SelectContext = React9__namespace.createContext({ open: false });
|
|
653
|
+
var SelectSearchContext = React9__namespace.createContext("");
|
|
653
654
|
var Select = ({
|
|
654
655
|
children,
|
|
655
656
|
open: controlledOpen,
|
|
@@ -682,7 +683,7 @@ var SelectTrigger = React9__namespace.forwardRef(({ className, children, ...prop
|
|
|
682
683
|
{
|
|
683
684
|
ref,
|
|
684
685
|
className: chunkYO72COII_js.cn(
|
|
685
|
-
"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-
|
|
686
|
+
"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",
|
|
686
687
|
className
|
|
687
688
|
),
|
|
688
689
|
...props,
|
|
@@ -719,8 +720,19 @@ var SelectScrollDownButton = React9__namespace.forwardRef(({ className, ...props
|
|
|
719
720
|
}
|
|
720
721
|
));
|
|
721
722
|
SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
|
|
722
|
-
var SelectContent = React9__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => {
|
|
723
|
+
var SelectContent = React9__namespace.forwardRef(({ className, children, position = "popper", searchable = false, searchPlaceholder = "Search...", ...props }, ref) => {
|
|
723
724
|
const { open } = React9__namespace.useContext(SelectContext);
|
|
725
|
+
const [search, setSearch] = React9__namespace.useState("");
|
|
726
|
+
const searchInputRef = React9__namespace.useRef(null);
|
|
727
|
+
React9__namespace.useEffect(() => {
|
|
728
|
+
if (open && searchable) {
|
|
729
|
+
const frame = requestAnimationFrame(() => {
|
|
730
|
+
searchInputRef.current?.focus();
|
|
731
|
+
});
|
|
732
|
+
return () => cancelAnimationFrame(frame);
|
|
733
|
+
}
|
|
734
|
+
if (!open) setSearch("");
|
|
735
|
+
}, [open, searchable]);
|
|
724
736
|
const {
|
|
725
737
|
onCloseAutoFocus,
|
|
726
738
|
onEscapeKeyDown,
|
|
@@ -773,18 +785,34 @@ var SelectContent = React9__namespace.forwardRef(({ className, children, positio
|
|
|
773
785
|
className
|
|
774
786
|
),
|
|
775
787
|
children: [
|
|
776
|
-
/* @__PURE__ */ jsxRuntime.
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
+
searchable && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b border-neutral-200/50 dark:border-neutral-700/50", children: [
|
|
789
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-6 w-6 shrink-0 opacity-50 pl-2" }),
|
|
790
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
791
|
+
"input",
|
|
792
|
+
{
|
|
793
|
+
ref: searchInputRef,
|
|
794
|
+
value: search,
|
|
795
|
+
onChange: (e) => setSearch(e.target.value),
|
|
796
|
+
placeholder: searchPlaceholder,
|
|
797
|
+
onKeyDown: (e) => e.stopPropagation(),
|
|
798
|
+
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"
|
|
799
|
+
}
|
|
800
|
+
)
|
|
801
|
+
] }),
|
|
802
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SelectSearchContext.Provider, { value: search, children: [
|
|
803
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
|
|
804
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
805
|
+
SelectPrimitive__namespace.Viewport,
|
|
806
|
+
{
|
|
807
|
+
className: chunkYO72COII_js.cn(
|
|
808
|
+
"p-1",
|
|
809
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
810
|
+
),
|
|
811
|
+
children
|
|
812
|
+
}
|
|
813
|
+
),
|
|
814
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
|
|
815
|
+
] })
|
|
788
816
|
]
|
|
789
817
|
}
|
|
790
818
|
)
|
|
@@ -801,21 +829,29 @@ var SelectLabel = React9__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
|
801
829
|
}
|
|
802
830
|
));
|
|
803
831
|
SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
|
|
804
|
-
var SelectItem = React9__namespace.forwardRef(({ className, children, ...props }, ref) =>
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
"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",
|
|
810
|
-
className
|
|
811
|
-
),
|
|
812
|
-
...props,
|
|
813
|
-
children: [
|
|
814
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
|
|
815
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
816
|
-
]
|
|
832
|
+
var SelectItem = React9__namespace.forwardRef(({ className, children, textValue, ...props }, ref) => {
|
|
833
|
+
const search = React9__namespace.useContext(SelectSearchContext);
|
|
834
|
+
const itemText = textValue ?? (typeof children === "string" ? children : "");
|
|
835
|
+
if (search && itemText && !itemText.toLowerCase().includes(search.toLowerCase())) {
|
|
836
|
+
return null;
|
|
817
837
|
}
|
|
818
|
-
|
|
838
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
839
|
+
SelectPrimitive__namespace.Item,
|
|
840
|
+
{
|
|
841
|
+
ref,
|
|
842
|
+
textValue,
|
|
843
|
+
className: chunkYO72COII_js.cn(
|
|
844
|
+
"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",
|
|
845
|
+
className
|
|
846
|
+
),
|
|
847
|
+
...props,
|
|
848
|
+
children: [
|
|
849
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
|
|
850
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
851
|
+
]
|
|
852
|
+
}
|
|
853
|
+
);
|
|
854
|
+
});
|
|
819
855
|
SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
|
|
820
856
|
var SelectSeparator = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
821
857
|
SelectPrimitive__namespace.Separator,
|
|
@@ -927,12 +963,16 @@ var Table = React9__namespace.forwardRef(
|
|
|
927
963
|
}, [rows, finalGetRowId, registeredRowIds]);
|
|
928
964
|
const registerRowId = React9__namespace.useCallback((rowId) => {
|
|
929
965
|
if (rowId) {
|
|
930
|
-
setRegisteredRowIds((prev) =>
|
|
966
|
+
setRegisteredRowIds((prev) => {
|
|
967
|
+
if (prev.has(rowId)) return prev;
|
|
968
|
+
return new Set(prev).add(rowId);
|
|
969
|
+
});
|
|
931
970
|
}
|
|
932
971
|
}, []);
|
|
933
972
|
const unregisterRowId = React9__namespace.useCallback((rowId) => {
|
|
934
973
|
if (rowId) {
|
|
935
974
|
setRegisteredRowIds((prev) => {
|
|
975
|
+
if (!prev.has(rowId)) return prev;
|
|
936
976
|
const next = new Set(prev);
|
|
937
977
|
next.delete(rowId);
|
|
938
978
|
return next;
|
|
@@ -996,7 +1036,7 @@ var Table = React9__namespace.forwardRef(
|
|
|
996
1036
|
if (!selectable) return false;
|
|
997
1037
|
return selectedRowsSet.size > 0 && !isAllSelected;
|
|
998
1038
|
}, [selectable, selectedRowsSet.size, isAllSelected]);
|
|
999
|
-
const contextValue = {
|
|
1039
|
+
const contextValue = React9__namespace.useMemo(() => ({
|
|
1000
1040
|
selectable,
|
|
1001
1041
|
selectionMode,
|
|
1002
1042
|
selectedRows: selectedRowsSet,
|
|
@@ -1009,7 +1049,20 @@ var Table = React9__namespace.forwardRef(
|
|
|
1009
1049
|
getRowId: finalGetRowId,
|
|
1010
1050
|
registerRowId,
|
|
1011
1051
|
unregisterRowId
|
|
1012
|
-
}
|
|
1052
|
+
}), [
|
|
1053
|
+
selectable,
|
|
1054
|
+
selectionMode,
|
|
1055
|
+
selectedRowsSet,
|
|
1056
|
+
toggleRow,
|
|
1057
|
+
isRowSelected,
|
|
1058
|
+
selectAll,
|
|
1059
|
+
deselectAll,
|
|
1060
|
+
isAllSelected,
|
|
1061
|
+
isSomeSelected,
|
|
1062
|
+
finalGetRowId,
|
|
1063
|
+
registerRowId,
|
|
1064
|
+
unregisterRowId
|
|
1065
|
+
]);
|
|
1013
1066
|
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1014
1067
|
"table",
|
|
1015
1068
|
{
|
|
@@ -1054,19 +1107,23 @@ TableFooter.displayName = "TableFooter";
|
|
|
1054
1107
|
var TableRow = React9__namespace.forwardRef(
|
|
1055
1108
|
({ className, rowId, rowData, onClick, ...props }, ref) => {
|
|
1056
1109
|
const context = useTableContext();
|
|
1110
|
+
const getRowId = context?.getRowId;
|
|
1111
|
+
const selectable = context?.selectable;
|
|
1112
|
+
const registerRowId = context?.registerRowId;
|
|
1113
|
+
const unregisterRowId = context?.unregisterRowId;
|
|
1057
1114
|
const finalRowId = React9__namespace.useMemo(() => {
|
|
1058
1115
|
if (rowId) return rowId;
|
|
1059
|
-
if (rowData &&
|
|
1116
|
+
if (rowData && getRowId) return getRowId(rowData);
|
|
1060
1117
|
return props.id || void 0;
|
|
1061
|
-
}, [rowId, rowData,
|
|
1118
|
+
}, [rowId, rowData, getRowId, props.id]);
|
|
1062
1119
|
React9__namespace.useEffect(() => {
|
|
1063
|
-
if (finalRowId &&
|
|
1064
|
-
|
|
1120
|
+
if (finalRowId && selectable) {
|
|
1121
|
+
registerRowId?.(finalRowId);
|
|
1065
1122
|
return () => {
|
|
1066
|
-
|
|
1123
|
+
unregisterRowId?.(finalRowId);
|
|
1067
1124
|
};
|
|
1068
1125
|
}
|
|
1069
|
-
}, [finalRowId,
|
|
1126
|
+
}, [finalRowId, selectable, registerRowId, unregisterRowId]);
|
|
1070
1127
|
const isSelected = finalRowId ? context?.isRowSelected(finalRowId) : false;
|
|
1071
1128
|
const handleClick = React9__namespace.useCallback(
|
|
1072
1129
|
(e) => {
|
|
@@ -1146,14 +1203,15 @@ var TableSelectAll = React9__namespace.forwardRef(({ className, ...props }, ref)
|
|
|
1146
1203
|
TableSelectAll.displayName = "TableSelectAll";
|
|
1147
1204
|
var TableRowCheckbox = React9__namespace.forwardRef(({ rowId, rowData, className, ...props }, ref) => {
|
|
1148
1205
|
const context = useTableContext();
|
|
1206
|
+
const getRowId = context?.getRowId;
|
|
1149
1207
|
if (!context?.selectable) {
|
|
1150
1208
|
return null;
|
|
1151
1209
|
}
|
|
1152
1210
|
const finalRowId = React9__namespace.useMemo(() => {
|
|
1153
1211
|
if (rowId) return rowId;
|
|
1154
|
-
if (rowData &&
|
|
1212
|
+
if (rowData && getRowId) return getRowId(rowData);
|
|
1155
1213
|
return void 0;
|
|
1156
|
-
}, [rowId, rowData,
|
|
1214
|
+
}, [rowId, rowData, getRowId]);
|
|
1157
1215
|
if (!finalRowId) {
|
|
1158
1216
|
return null;
|
|
1159
1217
|
}
|
|
@@ -1186,6 +1244,8 @@ var useTabsContext = () => {
|
|
|
1186
1244
|
}
|
|
1187
1245
|
return context;
|
|
1188
1246
|
};
|
|
1247
|
+
var TabsListContext = React9__namespace.createContext({ color: "default" });
|
|
1248
|
+
var useTabsListContext = () => React9__namespace.useContext(TabsListContext);
|
|
1189
1249
|
var Tabs = React9__namespace.forwardRef(({ defaultValue, value, onValueChange, children, ...props }, ref) => {
|
|
1190
1250
|
const [activeTab, setActiveTabState] = React9__namespace.useState(value ?? defaultValue);
|
|
1191
1251
|
const tabRefs = React9__namespace.useRef(/* @__PURE__ */ new Map()).current;
|
|
@@ -1227,7 +1287,39 @@ var Tabs = React9__namespace.forwardRef(({ defaultValue, value, onValueChange, c
|
|
|
1227
1287
|
);
|
|
1228
1288
|
});
|
|
1229
1289
|
Tabs.displayName = "Tabs";
|
|
1230
|
-
var
|
|
1290
|
+
var listColorStyles = {
|
|
1291
|
+
default: "bg-gray-100 text-gray-500 dark:bg-neutral-700 dark:text-gray-400",
|
|
1292
|
+
primary: "bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300",
|
|
1293
|
+
success: "bg-green-100 text-green-600 dark:bg-green-900/40 dark:text-green-300",
|
|
1294
|
+
danger: "bg-red-100 text-red-600 dark:bg-red-900/40 dark:text-red-300",
|
|
1295
|
+
warning: "bg-amber-100 text-amber-600 dark:bg-amber-900/40 dark:text-amber-300",
|
|
1296
|
+
secondary: "bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300"
|
|
1297
|
+
};
|
|
1298
|
+
var indicatorColorStyles = {
|
|
1299
|
+
default: "bg-white dark:bg-neutral-900 shadow-sm",
|
|
1300
|
+
primary: "bg-blue-500 dark:bg-blue-600",
|
|
1301
|
+
success: "bg-green-500 dark:bg-green-600",
|
|
1302
|
+
danger: "bg-red-500 dark:bg-red-600",
|
|
1303
|
+
warning: "bg-amber-500 dark:bg-amber-600",
|
|
1304
|
+
secondary: "bg-purple-500 dark:bg-purple-600"
|
|
1305
|
+
};
|
|
1306
|
+
var activeTextColorStyles = {
|
|
1307
|
+
default: "text-gray-900 dark:text-gray-100",
|
|
1308
|
+
primary: "text-white dark:text-white",
|
|
1309
|
+
success: "text-white dark:text-white",
|
|
1310
|
+
danger: "text-white dark:text-white",
|
|
1311
|
+
warning: "text-white dark:text-white",
|
|
1312
|
+
secondary: "text-white dark:text-white"
|
|
1313
|
+
};
|
|
1314
|
+
var inactiveTextColorStyles = {
|
|
1315
|
+
default: "text-gray-500 dark:text-gray-400",
|
|
1316
|
+
primary: "text-blue-600 dark:text-blue-300",
|
|
1317
|
+
success: "text-green-600 dark:text-green-300",
|
|
1318
|
+
danger: "text-red-600 dark:text-red-300",
|
|
1319
|
+
warning: "text-amber-600 dark:text-amber-300",
|
|
1320
|
+
secondary: "text-purple-600 dark:text-purple-300"
|
|
1321
|
+
};
|
|
1322
|
+
var TabsList = React9__namespace.forwardRef(({ className, children, color = "default", ...props }, ref) => {
|
|
1231
1323
|
const { activeTab, tabRefs, listRef } = useTabsContext();
|
|
1232
1324
|
const [indicatorStyle, setIndicatorStyle] = React9__namespace.useState(null);
|
|
1233
1325
|
React9__namespace.useEffect(() => {
|
|
@@ -1246,7 +1338,7 @@ var TabsList = React9__namespace.forwardRef(({ className, children, ...props },
|
|
|
1246
1338
|
window.addEventListener("resize", updateIndicator);
|
|
1247
1339
|
return () => window.removeEventListener("resize", updateIndicator);
|
|
1248
1340
|
}, [activeTab, tabRefs, listRef]);
|
|
1249
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1341
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TabsListContext.Provider, { value: { color }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1250
1342
|
TabsPrimitive__namespace.List,
|
|
1251
1343
|
{
|
|
1252
1344
|
ref: (node) => {
|
|
@@ -1255,7 +1347,8 @@ var TabsList = React9__namespace.forwardRef(({ className, children, ...props },
|
|
|
1255
1347
|
listRef.current = node;
|
|
1256
1348
|
},
|
|
1257
1349
|
className: chunkYO72COII_js.cn(
|
|
1258
|
-
"relative inline-flex h-10 items-center justify-center rounded-hz-lg
|
|
1350
|
+
"relative inline-flex h-10 items-center justify-center rounded-hz-lg p-1",
|
|
1351
|
+
listColorStyles[color],
|
|
1259
1352
|
className
|
|
1260
1353
|
),
|
|
1261
1354
|
...props,
|
|
@@ -1263,7 +1356,7 @@ var TabsList = React9__namespace.forwardRef(({ className, children, ...props },
|
|
|
1263
1356
|
indicatorStyle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1264
1357
|
framerMotion.motion.div,
|
|
1265
1358
|
{
|
|
1266
|
-
className: "absolute h-8
|
|
1359
|
+
className: chunkYO72COII_js.cn("absolute h-8 rounded-hz-md", indicatorColorStyles[color]),
|
|
1267
1360
|
initial: false,
|
|
1268
1361
|
animate: {
|
|
1269
1362
|
left: indicatorStyle.left,
|
|
@@ -1279,11 +1372,12 @@ var TabsList = React9__namespace.forwardRef(({ className, children, ...props },
|
|
|
1279
1372
|
children
|
|
1280
1373
|
]
|
|
1281
1374
|
}
|
|
1282
|
-
);
|
|
1375
|
+
) });
|
|
1283
1376
|
});
|
|
1284
1377
|
TabsList.displayName = TabsPrimitive__namespace.List.displayName;
|
|
1285
1378
|
var TabsTrigger = React9__namespace.forwardRef(({ className, value, ...props }, ref) => {
|
|
1286
1379
|
const { registerTab, activeTab } = useTabsContext();
|
|
1380
|
+
const { color } = useTabsListContext();
|
|
1287
1381
|
const triggerRef = React9__namespace.useRef(null);
|
|
1288
1382
|
React9__namespace.useEffect(() => {
|
|
1289
1383
|
registerTab(value, triggerRef.current);
|
|
@@ -1301,7 +1395,7 @@ var TabsTrigger = React9__namespace.forwardRef(({ className, value, ...props },
|
|
|
1301
1395
|
value,
|
|
1302
1396
|
className: chunkYO72COII_js.cn(
|
|
1303
1397
|
"relative z-10 inline-flex items-center justify-center whitespace-nowrap rounded-hz-md px-3 py-1.5 text-sm font-medium transition-colors 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",
|
|
1304
|
-
isActive ?
|
|
1398
|
+
isActive ? activeTextColorStyles[color] : inactiveTextColorStyles[color],
|
|
1305
1399
|
className
|
|
1306
1400
|
),
|
|
1307
1401
|
...props
|
|
@@ -1422,5 +1516,5 @@ exports.buttonVariants = buttonVariants;
|
|
|
1422
1516
|
exports.useFormContext = useFormContext;
|
|
1423
1517
|
exports.useFormFieldContext = useFormFieldContext;
|
|
1424
1518
|
exports.useTableSelection = useTableSelection;
|
|
1425
|
-
//# sourceMappingURL=chunk-
|
|
1426
|
-
//# sourceMappingURL=chunk-
|
|
1519
|
+
//# sourceMappingURL=chunk-4UFEDQ7W.js.map
|
|
1520
|
+
//# sourceMappingURL=chunk-4UFEDQ7W.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/skeleton/skeleton.tsx","../src/components/primitives/table/table.tsx","../src/components/primitives/tabs/tabs.tsx","../src/components/primitives/textarea/textarea.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","Fragment","React9","React10","TabsPrimitive","React11"],"mappings":"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","file":"chunk-4UFEDQ7W.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 { 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\nexport type TabsColor = \"default\" | \"primary\" | \"success\" | \"danger\" | \"warning\" | \"secondary\";\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 color from TabsList to TabsTrigger\ninterface TabsListContextValue {\n color: TabsColor;\n}\n\nconst TabsListContext = React.createContext<TabsListContextValue>({ color: \"default\" });\n\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\nconst listColorStyles: Record<TabsColor, string> = {\n default: \"bg-gray-100 text-gray-500 dark:bg-neutral-700 dark:text-gray-400\",\n primary: \"bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300\",\n success: \"bg-green-100 text-green-600 dark:bg-green-900/40 dark:text-green-300\",\n danger: \"bg-red-100 text-red-600 dark:bg-red-900/40 dark:text-red-300\",\n warning: \"bg-amber-100 text-amber-600 dark:bg-amber-900/40 dark:text-amber-300\",\n secondary: \"bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300\",\n};\n\nconst indicatorColorStyles: Record<TabsColor, string> = {\n default: \"bg-white dark:bg-neutral-900 shadow-sm\",\n primary: \"bg-blue-500 dark:bg-blue-600\",\n success: \"bg-green-500 dark:bg-green-600\",\n danger: \"bg-red-500 dark:bg-red-600\",\n warning: \"bg-amber-500 dark:bg-amber-600\",\n secondary: \"bg-purple-500 dark:bg-purple-600\",\n};\n\nconst activeTextColorStyles: Record<TabsColor, string> = {\n default: \"text-gray-900 dark:text-gray-100\",\n primary: \"text-white dark:text-white\",\n success: \"text-white dark:text-white\",\n danger: \"text-white dark:text-white\",\n warning: \"text-white dark:text-white\",\n secondary: \"text-white dark:text-white\",\n};\n\nconst inactiveTextColorStyles: Record<TabsColor, string> = {\n default: \"text-gray-500 dark:text-gray-400\",\n primary: \"text-blue-600 dark:text-blue-300\",\n success: \"text-green-600 dark:text-green-300\",\n danger: \"text-red-600 dark:text-red-300\",\n warning: \"text-amber-600 dark:text-amber-300\",\n secondary: \"text-purple-600 dark:text-purple-300\",\n};\n\ninterface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> {\n color?: TabsColor;\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, children, color = \"default\", ...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 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]);\n\n return (\n <TabsListContext.Provider value={{ color }}>\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 \"relative inline-flex h-10 items-center justify-center rounded-hz-lg p-1\",\n listColorStyles[color],\n className\n )}\n {...props}\n >\n {indicatorStyle && (\n <motion.div\n className={cn(\"absolute h-8 rounded-hz-md\", indicatorColorStyles[color])}\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\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, value, ...props }, ref) => {\n const { registerTab, activeTab } = useTabsContext();\n const { color } = 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 \"relative z-10 inline-flex items-center justify-center whitespace-nowrap rounded-hz-md px-3 py-1.5 text-sm font-medium transition-colors 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 isActive ? activeTextColorStyles[color] : inactiveTextColorStyles[color],\n className\n )}\n {...props}\n />\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"]}
|