art-bd-ui 1.0.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.
Files changed (162) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/components/buttons/button/button.js +43 -0
  3. package/dist/cjs/components/buttons/icon-button/icon-button.js +33 -0
  4. package/dist/cjs/components/buttons/toggle/toggle.js +34 -0
  5. package/dist/cjs/components/buttons/toggle-group/toggle-group.js +31 -0
  6. package/dist/cjs/components/forms/checkbox/checkbox.js +52 -0
  7. package/dist/cjs/components/forms/input/input.js +38 -0
  8. package/dist/cjs/components/forms/label/label.js +38 -0
  9. package/dist/cjs/components/forms/radio/radio.js +22 -0
  10. package/dist/cjs/components/forms/select/select.js +72 -0
  11. package/dist/cjs/components/forms/switch/switch.js +51 -0
  12. package/dist/cjs/components/forms/textarea/textarea.js +37 -0
  13. package/dist/cjs/components/layout/box/box.js +19 -0
  14. package/dist/cjs/components/layout/flex/flex.js +14 -0
  15. package/dist/cjs/components/layout/grid/grid.js +14 -0
  16. package/dist/cjs/components/media/aspect-ratio/aspect-ratio.js +31 -0
  17. package/dist/cjs/components/media/avatar/avatar.js +27 -0
  18. package/dist/cjs/components/media/icon/icon.js +27 -0
  19. package/dist/cjs/components/popovers/dialog/dialog.js +69 -0
  20. package/dist/cjs/components/popovers/drawer/drawer.js +82 -0
  21. package/dist/cjs/components/popovers/popover/popover.js +66 -0
  22. package/dist/cjs/components/popovers/sheet/sheet.js +94 -0
  23. package/dist/cjs/components/popovers/toast/toast.js +75 -0
  24. package/dist/cjs/components/popovers/tooltip/tooltip.js +45 -0
  25. package/dist/cjs/components/typography/heading/heading.js +55 -0
  26. package/dist/cjs/components/typography/text/text.js +57 -0
  27. package/dist/cjs/components/ui/alert/alert.js +34 -0
  28. package/dist/cjs/components/ui/badge/badge.js +31 -0
  29. package/dist/cjs/components/ui/button/button.js +42 -0
  30. package/dist/cjs/components/ui/calendar/calendar.js +24 -0
  31. package/dist/cjs/components/ui/command/command.js +83 -0
  32. package/dist/cjs/components/ui/data-table/components/cell.js +24 -0
  33. package/dist/cjs/components/ui/data-table/components/column-group.js +45 -0
  34. package/dist/cjs/components/ui/data-table/components/table-body.js +47 -0
  35. package/dist/cjs/components/ui/data-table/components/table-fallback.js +28 -0
  36. package/dist/cjs/components/ui/data-table/components/table-head.js +56 -0
  37. package/dist/cjs/components/ui/data-table/components/table-placeholder.js +18 -0
  38. package/dist/cjs/components/ui/data-table/data-table.js +97 -0
  39. package/dist/cjs/components/ui/data-table/hooks/contextHooks.js +75 -0
  40. package/dist/cjs/components/ui/data-table/hooks/useStickyColumns.js +98 -0
  41. package/dist/cjs/components/ui/data-table/utils.js +26 -0
  42. package/dist/cjs/components/ui/date-picker/date-picker.js +15 -0
  43. package/dist/cjs/components/ui/dropdown-menu/dropdown-menu.js +100 -0
  44. package/dist/cjs/components/ui/icon/icon.js +27 -0
  45. package/dist/cjs/components/ui/link/link.js +32 -0
  46. package/dist/cjs/components/ui/pagination/pagination.js +51 -0
  47. package/dist/cjs/components/ui/progress/progress.js +13 -0
  48. package/dist/cjs/components/ui/sidebar/sidebar.js +331 -0
  49. package/dist/cjs/components/ui/table/components/cell.js +30 -0
  50. package/dist/cjs/components/ui/table/components/row.js +25 -0
  51. package/dist/cjs/components/ui/table/components/table-body.js +13 -0
  52. package/dist/cjs/components/ui/table/components/table-caption.js +13 -0
  53. package/dist/cjs/components/ui/table/components/table-footer.js +13 -0
  54. package/dist/cjs/components/ui/table/components/table-head.js +30 -0
  55. package/dist/cjs/components/ui/table/components/table-header.js +13 -0
  56. package/dist/cjs/components/ui/table/table.js +36 -0
  57. package/dist/cjs/components/ui/tabs/tabs.js +47 -0
  58. package/dist/cjs/components/utility/empty-state/empty-state.js +29 -0
  59. package/dist/cjs/components/utility/separator/separator.js +14 -0
  60. package/dist/cjs/components/utility/skeleton/skeleton.js +13 -0
  61. package/dist/cjs/components/utility/status-controller/status-controller.js +12 -0
  62. package/dist/cjs/hooks/use-mobile.js +21 -0
  63. package/dist/cjs/hooks/useControlled.js +19 -0
  64. package/dist/cjs/hooks/useFirstMountState.js +16 -0
  65. package/dist/cjs/hooks/useForkRef.js +23 -0
  66. package/dist/cjs/hooks/useLatest.js +12 -0
  67. package/dist/cjs/hooks/usePrevious.js +14 -0
  68. package/dist/cjs/hooks/useScrollState.js +39 -0
  69. package/dist/cjs/hooks/useStateRef.js +12 -0
  70. package/dist/cjs/hooks/useUpdateEffect.js +17 -0
  71. package/dist/cjs/index.js +237 -0
  72. package/dist/cjs/lib/utils.js +16 -0
  73. package/dist/cjs/styles/responsive.js +84 -0
  74. package/dist/cjs/styles/typography.js +25 -0
  75. package/dist/cjs/utils/addIf.js +5 -0
  76. package/dist/cjs/utils/chain.js +30 -0
  77. package/dist/cjs/utils/getBoundingRect.js +19 -0
  78. package/dist/cjs/utils/mergeProps.js +42 -0
  79. package/dist/cjs/utils/mergeRefs.js +18 -0
  80. package/dist/cjs/utils/toggle.js +16 -0
  81. package/dist/esm/components/buttons/button/button.js +40 -0
  82. package/dist/esm/components/buttons/icon-button/icon-button.js +31 -0
  83. package/dist/esm/components/buttons/toggle/toggle.js +31 -0
  84. package/dist/esm/components/buttons/toggle-group/toggle-group.js +28 -0
  85. package/dist/esm/components/forms/checkbox/checkbox.js +50 -0
  86. package/dist/esm/components/forms/input/input.js +36 -0
  87. package/dist/esm/components/forms/label/label.js +36 -0
  88. package/dist/esm/components/forms/radio/radio.js +19 -0
  89. package/dist/esm/components/forms/select/select.js +61 -0
  90. package/dist/esm/components/forms/switch/switch.js +49 -0
  91. package/dist/esm/components/forms/textarea/textarea.js +35 -0
  92. package/dist/esm/components/layout/box/box.js +17 -0
  93. package/dist/esm/components/layout/flex/flex.js +12 -0
  94. package/dist/esm/components/layout/grid/grid.js +12 -0
  95. package/dist/esm/components/media/aspect-ratio/aspect-ratio.js +10 -0
  96. package/dist/esm/components/media/avatar/avatar.js +23 -0
  97. package/dist/esm/components/media/icon/icon.js +25 -0
  98. package/dist/esm/components/popovers/dialog/dialog.js +60 -0
  99. package/dist/esm/components/popovers/drawer/drawer.js +74 -0
  100. package/dist/esm/components/popovers/popover/popover.js +61 -0
  101. package/dist/esm/components/popovers/sheet/sheet.js +86 -0
  102. package/dist/esm/components/popovers/toast/toast.js +67 -0
  103. package/dist/esm/components/popovers/tooltip/tooltip.js +40 -0
  104. package/dist/esm/components/typography/heading/heading.js +53 -0
  105. package/dist/esm/components/typography/text/text.js +55 -0
  106. package/dist/esm/components/ui/alert/alert.js +30 -0
  107. package/dist/esm/components/ui/badge/badge.js +28 -0
  108. package/dist/esm/components/ui/button/button.js +40 -0
  109. package/dist/esm/components/ui/calendar/calendar.js +22 -0
  110. package/dist/esm/components/ui/command/command.js +73 -0
  111. package/dist/esm/components/ui/data-table/components/cell.js +22 -0
  112. package/dist/esm/components/ui/data-table/components/column-group.js +43 -0
  113. package/dist/esm/components/ui/data-table/components/table-body.js +45 -0
  114. package/dist/esm/components/ui/data-table/components/table-fallback.js +26 -0
  115. package/dist/esm/components/ui/data-table/components/table-head.js +54 -0
  116. package/dist/esm/components/ui/data-table/components/table-placeholder.js +16 -0
  117. package/dist/esm/components/ui/data-table/data-table.js +95 -0
  118. package/dist/esm/components/ui/data-table/hooks/contextHooks.js +60 -0
  119. package/dist/esm/components/ui/data-table/hooks/useStickyColumns.js +96 -0
  120. package/dist/esm/components/ui/data-table/utils.js +22 -0
  121. package/dist/esm/components/ui/date-picker/date-picker.js +13 -0
  122. package/dist/esm/components/ui/dropdown-menu/dropdown-menu.js +84 -0
  123. package/dist/esm/components/ui/icon/icon.js +25 -0
  124. package/dist/esm/components/ui/link/link.js +30 -0
  125. package/dist/esm/components/ui/pagination/pagination.js +43 -0
  126. package/dist/esm/components/ui/progress/progress.js +11 -0
  127. package/dist/esm/components/ui/sidebar/sidebar.js +306 -0
  128. package/dist/esm/components/ui/table/components/cell.js +28 -0
  129. package/dist/esm/components/ui/table/components/row.js +23 -0
  130. package/dist/esm/components/ui/table/components/table-body.js +11 -0
  131. package/dist/esm/components/ui/table/components/table-caption.js +11 -0
  132. package/dist/esm/components/ui/table/components/table-footer.js +11 -0
  133. package/dist/esm/components/ui/table/components/table-head.js +28 -0
  134. package/dist/esm/components/ui/table/components/table-header.js +11 -0
  135. package/dist/esm/components/ui/table/table.js +26 -0
  136. package/dist/esm/components/ui/tabs/tabs.js +23 -0
  137. package/dist/esm/components/utility/empty-state/empty-state.js +27 -0
  138. package/dist/esm/components/utility/separator/separator.js +12 -0
  139. package/dist/esm/components/utility/skeleton/skeleton.js +11 -0
  140. package/dist/esm/components/utility/status-controller/status-controller.js +10 -0
  141. package/dist/esm/hooks/use-mobile.js +19 -0
  142. package/dist/esm/hooks/useControlled.js +17 -0
  143. package/dist/esm/hooks/useFirstMountState.js +14 -0
  144. package/dist/esm/hooks/useForkRef.js +21 -0
  145. package/dist/esm/hooks/useLatest.js +10 -0
  146. package/dist/esm/hooks/usePrevious.js +12 -0
  147. package/dist/esm/hooks/useScrollState.js +37 -0
  148. package/dist/esm/hooks/useStateRef.js +10 -0
  149. package/dist/esm/hooks/useUpdateEffect.js +15 -0
  150. package/dist/esm/index.js +63 -0
  151. package/dist/esm/lib/utils.js +13 -0
  152. package/dist/esm/styles/responsive.js +81 -0
  153. package/dist/esm/styles/typography.js +21 -0
  154. package/dist/esm/utils/addIf.js +3 -0
  155. package/dist/esm/utils/chain.js +28 -0
  156. package/dist/esm/utils/getBoundingRect.js +16 -0
  157. package/dist/esm/utils/mergeProps.js +40 -0
  158. package/dist/esm/utils/mergeRefs.js +15 -0
  159. package/dist/esm/utils/toggle.js +14 -0
  160. package/dist/styles.css +1 -0
  161. package/dist/types/index.d.ts +1418 -0
  162. package/package.json +114 -0
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var debounce = require('lodash/debounce');
5
+ var fastdom = require('fastdom');
6
+ require('clsx');
7
+ var getBoundingRect = require('../../../../utils/getBoundingRect.js');
8
+
9
+ function sortByDomNode(nodes, resolveKey = (i) => i) {
10
+ return nodes.slice().sort((aItem, zItem) => {
11
+ const a = resolveKey(aItem);
12
+ const z = resolveKey(zItem);
13
+ if (a === null || z === null)
14
+ return 0;
15
+ const position = a.compareDocumentPosition(z);
16
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING)
17
+ return -1;
18
+ if (position & Node.DOCUMENT_POSITION_PRECEDING)
19
+ return 1;
20
+ return 0;
21
+ });
22
+ }
23
+ const calculateLeftPositions = (cells) => {
24
+ let currentPosition = 0;
25
+ cells.forEach((cell) => {
26
+ const rect = getBoundingRect.getBoundingRect(cell);
27
+ cell.style.left = `${Math.floor(currentPosition)}px`;
28
+ currentPosition += rect.width;
29
+ });
30
+ };
31
+ const calculateRightPositions = (cells) => {
32
+ let currentPosition = 0;
33
+ // Process cells from right to left
34
+ for (let i = cells.length - 1; i >= 0; i--) {
35
+ const cell = cells[i];
36
+ const rect = getBoundingRect.getBoundingRect(cell);
37
+ cell.style.right = `${Math.floor(currentPosition)}px`;
38
+ currentPosition += rect.width;
39
+ }
40
+ };
41
+ const useStickyColumns = (tableElement) => {
42
+ const resizeObserverRef = react.useRef(null);
43
+ const rafIdRef = react.useRef(null);
44
+ const updateStickyPositions = react.useCallback(() => {
45
+ if (!tableElement)
46
+ return;
47
+ // Cancel any pending RAF
48
+ if (rafIdRef.current) {
49
+ cancelAnimationFrame(rafIdRef.current);
50
+ }
51
+ // Schedule the update in the next animation frame
52
+ rafIdRef.current = requestAnimationFrame(() => {
53
+ fastdom.measure(() => {
54
+ // Get all rows
55
+ const rows = Array.from(tableElement.getElementsByTagName("tr"));
56
+ rows.forEach((row) => {
57
+ // Find sticky cells in this row
58
+ const stickyCells = Array.from(row.querySelectorAll("[data-sticky]"));
59
+ // Split cells into left and right sticky cells
60
+ const leftStickyCells = stickyCells.filter((cell) => cell.getAttribute("data-sticky") === "left");
61
+ const rightStickyCells = stickyCells.filter((cell) => cell.getAttribute("data-sticky") === "right");
62
+ // Sort cells in DOM order within the row
63
+ const sortedLeftCells = sortByDomNode(leftStickyCells);
64
+ const sortedRightCells = sortByDomNode(rightStickyCells);
65
+ fastdom.mutate(() => {
66
+ calculateLeftPositions(sortedLeftCells);
67
+ calculateRightPositions(sortedRightCells);
68
+ });
69
+ });
70
+ });
71
+ });
72
+ }, [tableElement]);
73
+ react.useEffect(() => {
74
+ if (!tableElement)
75
+ return;
76
+ // Initial calculation
77
+ updateStickyPositions();
78
+ // Create debounced resize handler with trailing event
79
+ const debouncedResizeHandler = debounce(updateStickyPositions, 150, {
80
+ trailing: true,
81
+ });
82
+ // Create and configure ResizeObserver
83
+ resizeObserverRef.current = new ResizeObserver(debouncedResizeHandler);
84
+ resizeObserverRef.current.observe(tableElement);
85
+ return () => {
86
+ if (rafIdRef.current) {
87
+ cancelAnimationFrame(rafIdRef.current);
88
+ }
89
+ if (resizeObserverRef.current) {
90
+ resizeObserverRef.current.disconnect();
91
+ }
92
+ // Cancel any pending debounced calls
93
+ debouncedResizeHandler.cancel();
94
+ };
95
+ }, [tableElement, updateStickyPositions]);
96
+ };
97
+
98
+ exports.useStickyColumns = useStickyColumns;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ const convertHeadersToRows = (headers, level = 0, result = []) => {
4
+ headers.forEach((header) => {
5
+ if (result[level]) {
6
+ result[level].push(header);
7
+ }
8
+ else {
9
+ result[level] = [header];
10
+ }
11
+ if (header.children) {
12
+ convertHeadersToRows(header.children, level + 1, result);
13
+ }
14
+ });
15
+ return result;
16
+ };
17
+ const flattenColumns = (columns) => {
18
+ return columns.flatMap((column) => [column, ...(column.children ? flattenColumns(column.children) : [])]);
19
+ };
20
+ const collectColumnsWithoutChildren = (columns) => {
21
+ return flattenColumns(columns).filter((column) => !column.children);
22
+ };
23
+
24
+ exports.collectColumnsWithoutChildren = collectColumnsWithoutChildren;
25
+ exports.convertHeadersToRows = convertHeadersToRows;
26
+ exports.flattenColumns = flattenColumns;
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var dateFns = require('date-fns');
6
+ var utils = require('../../../lib/utils.js');
7
+ var button = require('../../buttons/button/button.js');
8
+ var calendar = require('../calendar/calendar.js');
9
+ var popover = require('../../popovers/popover/popover.js');
10
+
11
+ const DatePicker = ({ date, onChange, placeholder = "Pick a date" }) => {
12
+ return (jsxRuntime.jsxs(popover.Popover, { children: [jsxRuntime.jsx(popover.PopoverTrigger, { asChild: true, children: jsxRuntime.jsx(button.Button, { variant: "outline", leftIcon: "calendar", className: utils.cn("w-[240px] justify-start text-left font-normal", !date && "text-muted-foreground"), children: date ? dateFns.format(date, "PPP") : jsxRuntime.jsx("span", { children: placeholder }) }) }), jsxRuntime.jsx(popover.PopoverContent, { className: "w-auto p-0", align: "start", children: jsxRuntime.jsx(calendar.Calendar, { mode: "single", selected: date, onSelect: onChange, autoFocus: true }) })] }));
13
+ };
14
+
15
+ exports.DatePicker = DatePicker;
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var reactDropdownMenu = require('@radix-ui/react-dropdown-menu');
7
+ var utils = require('../../../lib/utils.js');
8
+ var icon = require('../../media/icon/icon.js');
9
+
10
+ const DropdownMenu = (_a) => {
11
+ var props = tslib.__rest(_a, []);
12
+ return jsxRuntime.jsx(reactDropdownMenu.Root, Object.assign({ "data-slot": "dropdown-menu" }, props));
13
+ };
14
+ DropdownMenu.displayName = "DropdownMenu";
15
+ const DropdownMenuPortal = (_a) => {
16
+ var props = tslib.__rest(_a, []);
17
+ return (jsxRuntime.jsx(reactDropdownMenu.Portal, Object.assign({ "data-slot": "dropdown-menu-portal" }, props)));
18
+ };
19
+ DropdownMenuPortal.displayName = "DropdownMenuPortal";
20
+ const DropdownMenuTrigger = (_a) => {
21
+ var props = tslib.__rest(_a, []);
22
+ return (jsxRuntime.jsx(reactDropdownMenu.Trigger, Object.assign({ "data-slot": "dropdown-menu-trigger" }, props)));
23
+ };
24
+ DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
25
+ const DropdownMenuContent = (_a) => {
26
+ var { className, sideOffset = 4 } = _a, props = tslib.__rest(_a, ["className", "sideOffset"]);
27
+ return (jsxRuntime.jsx(reactDropdownMenu.Portal, { children: jsxRuntime.jsx(reactDropdownMenu.Content, Object.assign({ "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: utils.cn("bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className) }, props)) }));
28
+ };
29
+ DropdownMenuContent.displayName = "DropdownMenuContent";
30
+ const DropdownMenuGroup = (_a) => {
31
+ var props = tslib.__rest(_a, []);
32
+ return (jsxRuntime.jsx(reactDropdownMenu.Group, Object.assign({ "data-slot": "dropdown-menu-group" }, props)));
33
+ };
34
+ DropdownMenuGroup.displayName = "DropdownMenuGroup";
35
+ const DropdownMenuItem = (_a) => {
36
+ var { className, inset, variant = "default" } = _a, props = tslib.__rest(_a, ["className", "inset", "variant"]);
37
+ return (jsxRuntime.jsx(reactDropdownMenu.Item, Object.assign({ "data-slot": "dropdown-menu-item", "data-inset": inset, "data-variant": variant, className: utils.cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props)));
38
+ };
39
+ DropdownMenuItem.displayName = "DropdownMenuItem";
40
+ const DropdownMenuCheckboxItem = (_a) => {
41
+ var { className, children, checked } = _a, props = tslib.__rest(_a, ["className", "children", "checked"]);
42
+ return (jsxRuntime.jsxs(reactDropdownMenu.CheckboxItem, Object.assign({ "data-slot": "dropdown-menu-checkbox-item", className: utils.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), checked: checked }, props, { children: [jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: jsxRuntime.jsx(reactDropdownMenu.ItemIndicator, { children: jsxRuntime.jsx(icon.Icon, { name: "check", className: "size-4" }) }) }), children] })));
43
+ };
44
+ DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
45
+ const DropdownMenuRadioGroup = (_a) => {
46
+ var props = tslib.__rest(_a, []);
47
+ return (jsxRuntime.jsx(reactDropdownMenu.RadioGroup, Object.assign({ "data-slot": "dropdown-menu-radio-group" }, props)));
48
+ };
49
+ DropdownMenuRadioGroup.displayName = "DropdownMenuRadioGroup";
50
+ const DropdownMenuRadioItem = (_a) => {
51
+ var { className, children } = _a, props = tslib.__rest(_a, ["className", "children"]);
52
+ return (jsxRuntime.jsxs(reactDropdownMenu.RadioItem, Object.assign({ "data-slot": "dropdown-menu-radio-item", className: utils.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props, { children: [jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: jsxRuntime.jsx(reactDropdownMenu.ItemIndicator, { children: jsxRuntime.jsx(icon.Icon, { name: "circle", className: "size-2 fill-current" }) }) }), children] })));
53
+ };
54
+ DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
55
+ const DropdownMenuLabel = (_a) => {
56
+ var { className, inset } = _a, props = tslib.__rest(_a, ["className", "inset"]);
57
+ return (jsxRuntime.jsx(reactDropdownMenu.Label, Object.assign({ "data-slot": "dropdown-menu-label", "data-inset": inset, className: utils.cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className) }, props)));
58
+ };
59
+ DropdownMenuLabel.displayName = "DropdownMenuLabel";
60
+ const DropdownMenuSeparator = (_a) => {
61
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
62
+ return (jsxRuntime.jsx(reactDropdownMenu.Separator, Object.assign({ "data-slot": "dropdown-menu-separator", className: utils.cn("bg-border -mx-1 my-1 h-px", className) }, props)));
63
+ };
64
+ DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
65
+ const DropdownMenuShortcut = (_a) => {
66
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
67
+ return (jsxRuntime.jsx("span", Object.assign({ "data-slot": "dropdown-menu-shortcut", className: utils.cn("text-muted-foreground ml-auto text-xs tracking-widest", className) }, props)));
68
+ };
69
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
70
+ const DropdownMenuSub = (_a) => {
71
+ var props = tslib.__rest(_a, []);
72
+ return jsxRuntime.jsx(reactDropdownMenu.Sub, Object.assign({ "data-slot": "dropdown-menu-sub" }, props));
73
+ };
74
+ DropdownMenuSub.displayName = "DropdownMenuSub";
75
+ const DropdownMenuSubTrigger = (_a) => {
76
+ var { className, inset, children } = _a, props = tslib.__rest(_a, ["className", "inset", "children"]);
77
+ return (jsxRuntime.jsxs(reactDropdownMenu.SubTrigger, Object.assign({ "data-slot": "dropdown-menu-sub-trigger", "data-inset": inset, className: utils.cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className) }, props, { children: [children, jsxRuntime.jsx(icon.Icon, { name: "chevron-right", className: "ml-auto size-4" })] })));
78
+ };
79
+ DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
80
+ const DropdownMenuSubContent = (_a) => {
81
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
82
+ return (jsxRuntime.jsx(reactDropdownMenu.SubContent, Object.assign({ "data-slot": "dropdown-menu-sub-content", className: utils.cn("bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", className) }, props)));
83
+ };
84
+ DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
85
+
86
+ exports.DropdownMenu = DropdownMenu;
87
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
88
+ exports.DropdownMenuContent = DropdownMenuContent;
89
+ exports.DropdownMenuGroup = DropdownMenuGroup;
90
+ exports.DropdownMenuItem = DropdownMenuItem;
91
+ exports.DropdownMenuLabel = DropdownMenuLabel;
92
+ exports.DropdownMenuPortal = DropdownMenuPortal;
93
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
94
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
95
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
96
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
97
+ exports.DropdownMenuSub = DropdownMenuSub;
98
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
99
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
100
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var dynamic = require('lucide-react/dynamic');
7
+ var classVarianceAuthority = require('class-variance-authority');
8
+ var utils = require('../../../lib/utils.js');
9
+
10
+ const iconVariants = classVarianceAuthority.cva("", {
11
+ variants: {
12
+ disabled: {
13
+ true: "text-muted-foreground cursor-not-allowed",
14
+ false: "",
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ disabled: false,
19
+ },
20
+ });
21
+ const Icon = react.forwardRef((_a, ref) => {
22
+ var { color, size = 24, disabled = false, className } = _a, rest = tslib.__rest(_a, ["color", "size", "disabled", "className"]);
23
+ return (jsxRuntime.jsx(dynamic.DynamicIcon, Object.assign({ ref: ref, color: color, "aria-disabled": disabled, size: size, className: utils.cn(iconVariants({ disabled }), className) }, rest)));
24
+ });
25
+ Icon.displayName = "Icon";
26
+
27
+ exports.Icon = Icon;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var reactSlot = require('@radix-ui/react-slot');
7
+ var utils = require('../../../lib/utils.js');
8
+
9
+ const linkVariants = classVarianceAuthority.cva([
10
+ "text-primary whitespace-nowrap text-sm font-medium underline-offset-4",
11
+ // Focus Styling
12
+ "outline-none focus-visible:underline",
13
+ ], {
14
+ variants: {
15
+ underline: {
16
+ hover: "hover:underline",
17
+ always: "underline",
18
+ none: "no-underline",
19
+ },
20
+ },
21
+ defaultVariants: {
22
+ underline: "hover",
23
+ },
24
+ });
25
+ const Link = utils.forwardRefWithGeneric(function Link(_a, ref) {
26
+ var { underline, tagName, as, className, children } = _a, props = tslib.__rest(_a, ["underline", "tagName", "as", "className", "children"]);
27
+ const TagName = tagName || "a";
28
+ const Container = as || reactSlot.Slot;
29
+ return (jsxRuntime.jsx(Container, Object.assign({ ref: ref, asChild: true, "data-slot": "icon", className: utils.cn(linkVariants({ underline }), className) }, props, { children: jsxRuntime.jsx(TagName, { children: children }) })));
30
+ });
31
+
32
+ exports.Link = Link;
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var utils = require('../../../lib/utils.js');
6
+ var button = require('../../buttons/button/button.js');
7
+ var icon = require('../../media/icon/icon.js');
8
+
9
+ const Pagination = (_a) => {
10
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
11
+ return (jsxRuntime.jsx("nav", Object.assign({ role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: utils.cn("mx-auto flex w-full justify-center", className) }, props)));
12
+ };
13
+ Pagination.displayName = "Pagination";
14
+ const PaginationContent = (_a) => {
15
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
16
+ return jsxRuntime.jsx("ul", Object.assign({ "data-slot": "pagination-content", className: utils.cn("flex flex-row items-center gap-1", className) }, props));
17
+ };
18
+ PaginationContent.displayName = "PaginationContent";
19
+ const PaginationItem = (_a) => {
20
+ var props = tslib.__rest(_a, []);
21
+ return jsxRuntime.jsx("li", Object.assign({ "data-slot": "pagination-item" }, props));
22
+ };
23
+ PaginationItem.displayName = "PaginationItem";
24
+ const PaginationLink = (_a) => {
25
+ var { isActive, size = "icon" } = _a, props = tslib.__rest(_a, ["isActive", "size"]);
26
+ return (jsxRuntime.jsx(button.Button, { asChild: true, variant: isActive ? "outline" : "ghost", size: size, children: jsxRuntime.jsx("a", Object.assign({ "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive }, props)) }));
27
+ };
28
+ PaginationLink.displayName = "PaginationLink";
29
+ const PaginationPrevious = (_a) => {
30
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
31
+ return (jsxRuntime.jsxs(PaginationLink, Object.assign({ "aria-label": "Go to previous page", size: "default", className: utils.cn("gap-1 px-2.5 sm:pl-2.5", className) }, props, { children: [jsxRuntime.jsx(icon.Icon, { name: "chevron-left" }), jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Previous" })] })));
32
+ };
33
+ PaginationPrevious.displayName = "PaginationPrevious";
34
+ const PaginationNext = (_a) => {
35
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
36
+ return (jsxRuntime.jsxs(PaginationLink, Object.assign({ "aria-label": "Go to next page", size: "default", className: utils.cn("gap-1 px-2.5 sm:pr-2.5", className) }, props, { children: [jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Next" }), jsxRuntime.jsx(icon.Icon, { name: "chevron-right" })] })));
37
+ };
38
+ PaginationNext.displayName = "PaginationNext";
39
+ const PaginationEllipsis = (_a) => {
40
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
41
+ return (jsxRuntime.jsxs("span", Object.assign({ "aria-hidden": true, "data-slot": "pagination-ellipsis", className: utils.cn("flex size-9 items-center justify-center", className) }, props, { children: [jsxRuntime.jsx(icon.Icon, { name: "more-horizontal", className: "size-4" }), jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })] })));
42
+ };
43
+ PaginationEllipsis.displayName = "PaginationEllipsis";
44
+
45
+ exports.Pagination = Pagination;
46
+ exports.PaginationContent = PaginationContent;
47
+ exports.PaginationEllipsis = PaginationEllipsis;
48
+ exports.PaginationItem = PaginationItem;
49
+ exports.PaginationLink = PaginationLink;
50
+ exports.PaginationNext = PaginationNext;
51
+ exports.PaginationPrevious = PaginationPrevious;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var reactProgress = require('@radix-ui/react-progress');
6
+ var utils = require('../../../lib/utils.js');
7
+
8
+ const Progress = (_a) => {
9
+ var { className, value } = _a, props = tslib.__rest(_a, ["className", "value"]);
10
+ return (jsxRuntime.jsx(reactProgress.Root, Object.assign({ "data-slot": "progress", className: utils.cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className) }, props, { children: jsxRuntime.jsx(reactProgress.Indicator, { "data-slot": "progress-indicator", className: "bg-primary h-full w-full flex-1 transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) })));
11
+ };
12
+
13
+ exports.Progress = Progress;