@getgreenline/blaze-ui 1.0.3 → 1.0.4-5.02-beta

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 (258) hide show
  1. package/dist/components/accordion.d.ts +8 -0
  2. package/dist/components/accordion.d.ts.map +1 -0
  3. package/dist/components/accordion.js +19 -0
  4. package/dist/components/alert-dialog.d.ts +18 -0
  5. package/dist/components/alert-dialog.d.ts.map +1 -0
  6. package/dist/components/alert-dialog.js +41 -0
  7. package/dist/components/alert.d.ts +10 -0
  8. package/dist/components/alert.d.ts.map +1 -0
  9. package/dist/components/alert.js +26 -0
  10. package/dist/components/aspect-ratio.d.ts +4 -0
  11. package/dist/components/aspect-ratio.d.ts.map +1 -0
  12. package/dist/components/aspect-ratio.js +8 -0
  13. package/dist/components/avatar.d.ts +7 -0
  14. package/dist/components/avatar.d.ts.map +1 -0
  15. package/dist/components/avatar.js +15 -0
  16. package/dist/components/badge.d.ts +10 -0
  17. package/dist/components/badge.d.ts.map +1 -0
  18. package/dist/components/badge.js +24 -0
  19. package/dist/components/breadcrumb.d.ts +12 -0
  20. package/dist/components/breadcrumb.d.ts.map +1 -0
  21. package/dist/components/breadcrumb.js +29 -0
  22. package/dist/components/button-group.d.ts +12 -0
  23. package/dist/components/button-group.d.ts.map +1 -0
  24. package/dist/components/button-group.js +29 -0
  25. package/dist/components/button.d.ts +16 -0
  26. package/dist/components/button.d.ts.map +1 -0
  27. package/dist/components/button.js +37 -0
  28. package/dist/components/card.d.ts +10 -0
  29. package/dist/components/card.d.ts.map +1 -0
  30. package/dist/components/card.js +26 -0
  31. package/dist/components/carousel.d.ts +20 -0
  32. package/dist/components/carousel.d.ts.map +1 -0
  33. package/dist/components/carousel.js +92 -0
  34. package/dist/components/chart.d.ts +63 -0
  35. package/dist/components/chart.d.ts.map +1 -0
  36. package/dist/components/chart.js +133 -0
  37. package/dist/components/checkbox.d.ts +5 -0
  38. package/dist/components/checkbox.d.ts.map +1 -0
  39. package/dist/components/checkbox.js +10 -0
  40. package/dist/components/collapsible.d.ts +6 -0
  41. package/dist/components/collapsible.d.ts.map +1 -0
  42. package/dist/components/collapsible.js +15 -0
  43. package/dist/components/command.d.ts +19 -0
  44. package/dist/components/command.d.ts.map +1 -0
  45. package/dist/components/command.js +35 -0
  46. package/dist/components/context-menu.d.ts +26 -0
  47. package/dist/components/context-menu.d.ts.map +1 -0
  48. package/dist/components/context-menu.js +52 -0
  49. package/dist/components/data-table.d.ts +85 -0
  50. package/dist/components/data-table.d.ts.map +1 -0
  51. package/dist/components/data-table.js +390 -0
  52. package/dist/components/dialog.d.ts +16 -0
  53. package/dist/components/dialog.d.ts.map +1 -0
  54. package/dist/components/dialog.js +37 -0
  55. package/dist/components/drawer.d.ts +14 -0
  56. package/dist/components/drawer.d.ts.map +1 -0
  57. package/dist/components/drawer.js +36 -0
  58. package/dist/components/dropdown-menu.d.ts +26 -0
  59. package/dist/components/dropdown-menu.d.ts.map +1 -0
  60. package/dist/components/dropdown-menu.js +52 -0
  61. package/dist/components/empty.d.ts +12 -0
  62. package/dist/components/empty.d.ts.map +1 -0
  63. package/dist/components/empty.js +35 -0
  64. package/dist/components/field.d.ts +25 -0
  65. package/dist/components/field.d.ts.map +1 -0
  66. package/dist/components/field.js +74 -0
  67. package/dist/components/form.d.ts +25 -0
  68. package/dist/components/form.d.ts.map +1 -0
  69. package/dist/components/form.js +60 -0
  70. package/dist/components/header-app-switcher.d.ts +53 -0
  71. package/dist/components/header-app-switcher.d.ts.map +1 -0
  72. package/dist/components/header-app-switcher.js +154 -0
  73. package/dist/components/hierarchical-select.d.ts +31 -0
  74. package/dist/components/hierarchical-select.d.ts.map +1 -0
  75. package/dist/components/hierarchical-select.js +143 -0
  76. package/dist/components/hover-card.d.ts +7 -0
  77. package/dist/components/hover-card.d.ts.map +1 -0
  78. package/dist/components/hover-card.js +15 -0
  79. package/dist/components/input-group.d.ts +17 -0
  80. package/dist/components/input-group.d.ts.map +1 -0
  81. package/dist/components/input-group.js +66 -0
  82. package/dist/components/input-otp.d.ts +12 -0
  83. package/dist/components/input-otp.d.ts.map +1 -0
  84. package/dist/components/input-otp.js +22 -0
  85. package/dist/components/input.d.ts +8 -0
  86. package/dist/components/input.d.ts.map +1 -0
  87. package/dist/components/input.js +15 -0
  88. package/dist/components/item.d.ts +24 -0
  89. package/dist/components/item.d.ts.map +1 -0
  90. package/dist/components/item.js +68 -0
  91. package/dist/components/kbd.d.ts +4 -0
  92. package/dist/components/kbd.d.ts.map +1 -0
  93. package/dist/components/kbd.js +11 -0
  94. package/dist/components/label.d.ts +8 -0
  95. package/dist/components/label.d.ts.map +1 -0
  96. package/dist/components/label.js +9 -0
  97. package/dist/components/login-screen.d.ts +4 -0
  98. package/dist/components/login-screen.d.ts.map +1 -0
  99. package/dist/components/login-screen.js +300 -0
  100. package/dist/components/login-screen.types.d.ts +82 -0
  101. package/dist/components/login-screen.types.d.ts.map +1 -0
  102. package/dist/components/login-screen.views.d.ts +114 -0
  103. package/dist/components/login-screen.views.d.ts.map +1 -0
  104. package/dist/components/login-screen.views.js +53 -0
  105. package/dist/components/menubar.d.ts +27 -0
  106. package/dist/components/menubar.d.ts.map +1 -0
  107. package/dist/components/menubar.js +55 -0
  108. package/dist/components/multi-search-select.d.ts +24 -0
  109. package/dist/components/multi-search-select.d.ts.map +1 -0
  110. package/dist/components/multi-search-select.js +125 -0
  111. package/dist/components/multi-select.d.ts +19 -0
  112. package/dist/components/multi-select.d.ts.map +1 -0
  113. package/dist/components/multi-select.js +87 -0
  114. package/dist/components/navigation-menu.d.ts +15 -0
  115. package/dist/components/navigation-menu.d.ts.map +1 -0
  116. package/dist/components/navigation-menu.js +33 -0
  117. package/dist/components/page-header/actions.d.ts +9 -0
  118. package/dist/components/page-header/actions.d.ts.map +1 -0
  119. package/dist/components/page-header/actions.js +21 -0
  120. package/dist/components/page-header/types.d.ts +33 -0
  121. package/dist/components/page-header/types.d.ts.map +1 -0
  122. package/dist/components/page-header/utils.d.ts +4 -0
  123. package/dist/components/page-header/utils.d.ts.map +1 -0
  124. package/dist/components/page-header/utils.js +17 -0
  125. package/dist/components/page-header.d.ts +4 -0
  126. package/dist/components/page-header.d.ts.map +1 -0
  127. package/dist/components/page-header.js +12 -0
  128. package/dist/components/pagination.d.ts +14 -0
  129. package/dist/components/pagination.d.ts.map +1 -0
  130. package/dist/components/pagination.js +31 -0
  131. package/dist/components/popover.d.ts +8 -0
  132. package/dist/components/popover.d.ts.map +1 -0
  133. package/dist/components/popover.js +18 -0
  134. package/dist/components/progress.d.ts +5 -0
  135. package/dist/components/progress.d.ts.map +1 -0
  136. package/dist/components/progress.js +9 -0
  137. package/dist/components/radio-group.d.ts +6 -0
  138. package/dist/components/radio-group.d.ts.map +1 -0
  139. package/dist/components/radio-group.js +13 -0
  140. package/dist/components/resizable.d.ts +9 -0
  141. package/dist/components/resizable.d.ts.map +1 -0
  142. package/dist/components/resizable.js +16 -0
  143. package/dist/components/scroll-area.d.ts +6 -0
  144. package/dist/components/scroll-area.d.ts.map +1 -0
  145. package/dist/components/scroll-area.js +14 -0
  146. package/dist/components/search-bar.d.ts +15 -0
  147. package/dist/components/search-bar.d.ts.map +1 -0
  148. package/dist/components/search-bar.js +25 -0
  149. package/dist/components/segmented-control.d.ts +24 -0
  150. package/dist/components/segmented-control.d.ts.map +1 -0
  151. package/dist/components/segmented-control.js +88 -0
  152. package/dist/components/select.d.ts +16 -0
  153. package/dist/components/select.d.ts.map +1 -0
  154. package/dist/components/select.js +39 -0
  155. package/dist/components/selection-panel.d.ts +29 -0
  156. package/dist/components/selection-panel.d.ts.map +1 -0
  157. package/dist/components/selection-panel.js +255 -0
  158. package/dist/components/separator.d.ts +5 -0
  159. package/dist/components/separator.d.ts.map +1 -0
  160. package/dist/components/separator.js +11 -0
  161. package/dist/components/sheet.d.ts +17 -0
  162. package/dist/components/sheet.d.ts.map +1 -0
  163. package/dist/components/sheet.js +42 -0
  164. package/dist/components/sidebar.d.ts +70 -0
  165. package/dist/components/sidebar.d.ts.map +1 -0
  166. package/dist/components/sidebar.js +213 -0
  167. package/dist/components/skeleton.d.ts +3 -0
  168. package/dist/components/skeleton.d.ts.map +1 -0
  169. package/dist/components/skeleton.js +8 -0
  170. package/dist/components/slider.d.ts +5 -0
  171. package/dist/components/slider.d.ts.map +1 -0
  172. package/dist/components/slider.js +19 -0
  173. package/dist/components/sonner.d.ts +4 -0
  174. package/dist/components/sonner.d.ts.map +1 -0
  175. package/dist/components/sonner.js +22 -0
  176. package/dist/components/spinner.d.ts +4 -0
  177. package/dist/components/spinner.d.ts.map +1 -0
  178. package/dist/components/spinner.js +9 -0
  179. package/dist/components/switch.d.ts +5 -0
  180. package/dist/components/switch.d.ts.map +1 -0
  181. package/dist/components/switch.js +9 -0
  182. package/dist/components/table.d.ts +11 -0
  183. package/dist/components/table.d.ts.map +1 -0
  184. package/dist/components/table.js +29 -0
  185. package/dist/components/tabs.d.ts +8 -0
  186. package/dist/components/tabs.d.ts.map +1 -0
  187. package/dist/components/tabs.js +18 -0
  188. package/dist/components/textarea.d.ts +8 -0
  189. package/dist/components/textarea.d.ts.map +1 -0
  190. package/dist/components/textarea.js +15 -0
  191. package/dist/components/toggle-group.d.ts +8 -0
  192. package/dist/components/toggle-group.d.ts.map +1 -0
  193. package/dist/components/toggle-group.js +22 -0
  194. package/dist/components/toggle.d.ts +10 -0
  195. package/dist/components/toggle.d.ts.map +1 -0
  196. package/dist/components/toggle.js +27 -0
  197. package/dist/components/tooltip.d.ts +8 -0
  198. package/dist/components/tooltip.d.ts.map +1 -0
  199. package/dist/components/tooltip.js +18 -0
  200. package/dist/components/visually-hidden.d.ts +16 -0
  201. package/dist/components/visually-hidden.d.ts.map +1 -0
  202. package/dist/components/visually-hidden.js +22 -0
  203. package/dist/globals.css +719 -0
  204. package/dist/hooks/use-invalid-attention.d.ts +20 -0
  205. package/dist/hooks/use-invalid-attention.d.ts.map +1 -0
  206. package/dist/hooks/use-invalid-attention.js +65 -0
  207. package/dist/hooks/use-mobile.d.ts +2 -0
  208. package/dist/hooks/use-mobile.d.ts.map +1 -0
  209. package/dist/hooks/use-mobile.js +18 -0
  210. package/dist/index.d.ts +68 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +68 -0
  213. package/dist/lib/portal-wrapper.d.ts +32 -0
  214. package/dist/lib/portal-wrapper.d.ts.map +1 -0
  215. package/dist/lib/portal-wrapper.js +34 -0
  216. package/dist/lib/utils.js +8 -0
  217. package/dist/svgs/blaze-dispatch-logo.d.ts +5 -0
  218. package/dist/svgs/blaze-dispatch-logo.d.ts.map +1 -0
  219. package/dist/svgs/blaze-ecom-logo.d.ts +7 -0
  220. package/dist/svgs/blaze-ecom-logo.d.ts.map +1 -0
  221. package/dist/svgs/blaze-insights-logo.d.ts +5 -0
  222. package/dist/svgs/blaze-insights-logo.d.ts.map +1 -0
  223. package/dist/svgs/blaze-lighthouse-logo.d.ts +6 -0
  224. package/dist/svgs/blaze-lighthouse-logo.d.ts.map +1 -0
  225. package/dist/svgs/blaze-pay-logo.d.ts +5 -0
  226. package/dist/svgs/blaze-pay-logo.d.ts.map +1 -0
  227. package/dist/svgs/blaze-pos-logo.d.ts +5 -0
  228. package/dist/svgs/blaze-pos-logo.d.ts.map +1 -0
  229. package/dist/svgs/blaze-retail-logo.d.ts +7 -0
  230. package/dist/svgs/blaze-retail-logo.d.ts.map +1 -0
  231. package/dist/svgs/blaze-sites-logo.d.ts +5 -0
  232. package/dist/svgs/blaze-sites-logo.d.ts.map +1 -0
  233. package/dist/svgs/header-app-switcher-logos.d.ts +15 -0
  234. package/dist/svgs/header-app-switcher-logos.d.ts.map +1 -0
  235. package/dist/svgs/header-app-switcher-logos.js +22 -0
  236. package/package.json +95 -31
  237. package/README.md +0 -80
  238. package/build/components/button.d.ts +0 -12
  239. package/build/components/button.d.ts.map +0 -1
  240. package/build/components/button.js +0 -106
  241. package/build/components/button.js.map +0 -1
  242. package/build/index.d.ts +0 -4
  243. package/build/index.d.ts.map +0 -1
  244. package/build/index.js +0 -11
  245. package/build/index.js.map +0 -1
  246. package/build/index.mjs +0 -6
  247. package/build/lib/utils.js +0 -9
  248. package/build/lib/utils.js.map +0 -1
  249. package/build/styles/blaze-ui.css +0 -97
  250. package/build/styles/blaze-ui.css.map +0 -1
  251. package/build/styles/styles.d.ts +0 -3
  252. package/build/styles/styles.d.ts.map +0 -1
  253. package/build/styles/styles.js +0 -8
  254. package/build/styles/styles.js.map +0 -1
  255. package/src/styles/blaze-ui.css +0 -157
  256. package/src/styles/styles.ts +0 -5
  257. /package/{build → dist}/lib/utils.d.ts +0 -0
  258. /package/{build → dist}/lib/utils.d.ts.map +0 -0
@@ -0,0 +1,255 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { cn } from '../lib/utils.js';
4
+ import { SearchBar } from './search-bar.js';
5
+ import { DataTable } from './data-table.js';
6
+ import { Button } from './button.js';
7
+ import { Sheet, SheetContent, SheetTitle, SheetDescription, SheetFooter } from './sheet.js';
8
+ import { VisuallyHidden } from './visually-hidden.js';
9
+ import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './alert-dialog.js';
10
+
11
+ function SelectionPanel({ open, onClose, onDone, title = "Select Items", description, availableItems, columns, selectedColumns, selectedIds: initialSelectedIds, loading = false, treeMode = false, availableLabel = "Available", selectedLabel = "Selected", addButtonLabel = "Add Selected", removeButtonLabel = "Remove Selected", doneButtonLabel = "Done", cancelButtonLabel = "Cancel", availableEmptyMessage, selectedEmptyMessage = "No items selected", width = "75%", maxWidth = "1400px", showConfirmOnClose = true, confirmCloseMessage = "Are you sure you want to exit without saving your changes?", onBeforeSelectionChange, }) {
12
+ const [selectedIds, setSelectedIds] = React.useState(new Set(initialSelectedIds));
13
+ const [availableChecked, setAvailableChecked] = React.useState(new Set());
14
+ const [selectedChecked, setSelectedChecked] = React.useState(new Set());
15
+ const [expandedAvailableRows, setExpandedAvailableRows] = React.useState(new Set());
16
+ const [availableSearch, setAvailableSearch] = React.useState("");
17
+ const [selectedSearch, setSelectedSearch] = React.useState("");
18
+ const [availableSearchApplied, setAvailableSearchApplied] = React.useState("");
19
+ const [selectedSearchApplied, setSelectedSearchApplied] = React.useState("");
20
+ // Pagination state for both panels
21
+ const [availablePage, setAvailablePage] = React.useState(1);
22
+ const [availablePageSize, setAvailablePageSize] = React.useState(20);
23
+ const [selectedPage, setSelectedPage] = React.useState(1);
24
+ const [selectedPageSize, setSelectedPageSize] = React.useState(20);
25
+ const [isDirty, setIsDirty] = React.useState(false);
26
+ const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);
27
+ const availableHeadingId = React.useId();
28
+ const selectedHeadingId = React.useId();
29
+ React.useEffect(() => {
30
+ if (open) {
31
+ setSelectedIds(new Set(initialSelectedIds));
32
+ setAvailableChecked(new Set());
33
+ setSelectedChecked(new Set());
34
+ setExpandedAvailableRows(new Set());
35
+ setAvailableSearch("");
36
+ setSelectedSearch("");
37
+ setAvailableSearchApplied("");
38
+ setSelectedSearchApplied("");
39
+ setAvailablePage(1);
40
+ setSelectedPage(1);
41
+ setIsDirty(false);
42
+ }
43
+ }, [open, initialSelectedIds]);
44
+ const flattenTree = React.useCallback((items) => {
45
+ const map = {};
46
+ const traverse = (nodes, parentId) => {
47
+ nodes.forEach((node) => {
48
+ const entry = { ...node, parentId };
49
+ map[node.id] = entry;
50
+ if (node.children) {
51
+ traverse(node.children, node.id);
52
+ }
53
+ });
54
+ };
55
+ traverse(items);
56
+ return map;
57
+ }, []);
58
+ const availableItemsMap = React.useMemo(() => flattenTree(availableItems), [availableItems, flattenTree]);
59
+ const availableItemsFiltered = React.useMemo(() => {
60
+ const filterRecursive = (items) => {
61
+ return items
62
+ .filter((item) => !selectedIds.has(item.id))
63
+ .map((item) => {
64
+ if (treeMode && item.children) {
65
+ return {
66
+ ...item,
67
+ children: filterRecursive(item.children),
68
+ };
69
+ }
70
+ return item;
71
+ });
72
+ };
73
+ let filtered = filterRecursive(availableItems);
74
+ if (availableSearchApplied) {
75
+ const searchLower = availableSearchApplied.toLowerCase();
76
+ const searchRecursive = (items) => {
77
+ return items.filter((item) => {
78
+ const matches = columns.some((col) => {
79
+ const value = item[col.key];
80
+ return String(value).toLowerCase().includes(searchLower);
81
+ });
82
+ if (treeMode && item.children) {
83
+ const matchingChildren = searchRecursive(item.children);
84
+ if (matchingChildren.length > 0) {
85
+ return true;
86
+ }
87
+ }
88
+ return matches;
89
+ });
90
+ };
91
+ filtered = searchRecursive(filtered);
92
+ }
93
+ return filtered;
94
+ }, [availableItems, selectedIds, availableSearchApplied, columns, treeMode]);
95
+ const selectedItemsData = React.useMemo(() => {
96
+ const findItemsById = (items, ids) => {
97
+ const result = [];
98
+ for (const item of items) {
99
+ if (ids.has(item.id)) {
100
+ result.push(item);
101
+ }
102
+ if (treeMode && item.children) {
103
+ result.push(...findItemsById(item.children, ids));
104
+ }
105
+ }
106
+ return result;
107
+ };
108
+ let selected = findItemsById(availableItems, selectedIds);
109
+ if (selectedSearchApplied) {
110
+ const searchLower = selectedSearchApplied.toLowerCase();
111
+ selected = selected.filter((item) => {
112
+ return columns.some((col) => {
113
+ const value = item[col.key];
114
+ return String(value).toLowerCase().includes(searchLower);
115
+ });
116
+ });
117
+ }
118
+ return selected;
119
+ }, [availableItems, selectedIds, selectedSearchApplied, columns, treeMode]);
120
+ // Paginate available items (top-level only; children stay with parent)
121
+ const availableTotalPages = Math.ceil(availableItemsFiltered.length / availablePageSize);
122
+ const paginatedAvailableItems = React.useMemo(() => availableItemsFiltered.slice((availablePage - 1) * availablePageSize, availablePage * availablePageSize), [availableItemsFiltered, availablePage, availablePageSize]);
123
+ // Paginate selected items (flat list)
124
+ const selectedTotalPages = Math.ceil(selectedItemsData.length / selectedPageSize);
125
+ const paginatedSelectedItems = React.useMemo(() => selectedItemsData.slice((selectedPage - 1) * selectedPageSize, selectedPage * selectedPageSize), [selectedItemsData, selectedPage, selectedPageSize]);
126
+ // Reset to page 1 when filtered data changes (search, add/remove items)
127
+ React.useEffect(() => {
128
+ setAvailablePage(1);
129
+ }, [availableItemsFiltered.length]);
130
+ React.useEffect(() => {
131
+ setSelectedPage(1);
132
+ }, [selectedItemsData.length]);
133
+ const handleAvailableSelectionChange = React.useCallback((ids) => {
134
+ const transformedIds = onBeforeSelectionChange
135
+ ? onBeforeSelectionChange(ids)
136
+ : ids;
137
+ const newCheckedSet = new Set(transformedIds);
138
+ setAvailableChecked(newCheckedSet);
139
+ if (treeMode) {
140
+ // Only auto-expand ancestors of NEWLY checked IDs,
141
+ // don't touch expansion state for previously checked items
142
+ const newlyAdded = transformedIds.filter((id) => !availableChecked.has(id));
143
+ if (newlyAdded.length > 0) {
144
+ setExpandedAvailableRows((prev) => {
145
+ const nextExpanded = new Set(prev);
146
+ newlyAdded.forEach((id) => {
147
+ const currentNode = availableItemsMap[id];
148
+ if (!currentNode)
149
+ return;
150
+ let parentId = currentNode.parentId;
151
+ while (parentId) {
152
+ nextExpanded.add(parentId);
153
+ parentId = availableItemsMap[parentId]?.parentId;
154
+ }
155
+ });
156
+ return nextExpanded;
157
+ });
158
+ }
159
+ }
160
+ }, [onBeforeSelectionChange, treeMode, availableItemsMap, availableChecked]);
161
+ const handleSelectedSelectionChange = React.useCallback((ids) => {
162
+ setSelectedChecked(new Set(ids));
163
+ }, []);
164
+ const handleAddSelected = React.useCallback(() => {
165
+ if (availableChecked.size === 0)
166
+ return;
167
+ setSelectedIds((prev) => {
168
+ const next = new Set(prev);
169
+ availableChecked.forEach((id) => next.add(id));
170
+ return next;
171
+ });
172
+ setAvailableChecked(new Set());
173
+ setIsDirty(true);
174
+ }, [availableChecked]);
175
+ const handleRemoveSelected = React.useCallback(() => {
176
+ if (selectedChecked.size === 0)
177
+ return;
178
+ setSelectedIds((prev) => {
179
+ const next = new Set(prev);
180
+ selectedChecked.forEach((id) => next.delete(id));
181
+ return next;
182
+ });
183
+ setSelectedChecked(new Set());
184
+ setIsDirty(true);
185
+ }, [selectedChecked]);
186
+ const handleDone = React.useCallback(() => {
187
+ onDone(Array.from(selectedIds));
188
+ onClose();
189
+ }, [selectedIds, onDone, onClose]);
190
+ const handleClose = React.useCallback(() => {
191
+ if (isDirty && showConfirmOnClose) {
192
+ setShowConfirmDialog(true);
193
+ }
194
+ else {
195
+ onClose();
196
+ }
197
+ }, [isDirty, showConfirmOnClose, onClose]);
198
+ const handleConfirmClose = React.useCallback(() => {
199
+ setShowConfirmDialog(false);
200
+ onClose();
201
+ }, [onClose]);
202
+ return (jsxs(Fragment, { children: [jsx(Sheet, { open: open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: jsxs(SheetContent, { side: "right", className: cn("tw:!p-0 tw:!z-[1200]"), overlayClassName: "tw:!z-[1200]", style: { width, maxWidth }, children: [jsxs(VisuallyHidden, { children: [jsx(SheetTitle, { children: title }), description && jsx(SheetDescription, { children: description })] }), jsxs("div", { className: "tw:!flex tw:!h-full tw:!flex-col", children: [jsxs("div", { className: "tw:!flex tw:!flex-1 tw:!overflow-hidden", children: [jsxs("div", { className: "tw:!flex tw:!w-1/2 tw:!flex-col tw:!border-r", role: "region", "aria-labelledby": availableHeadingId, children: [jsxs("div", { className: "tw:!border-b tw:!p-4", children: [jsx("h2", { id: availableHeadingId, className: "tw:text-lg tw:!font-semibold tw:!mb-3", children: availableLabel }), jsx(SearchBar, { value: availableSearch, onChange: setAvailableSearch, onSearch: (term) => setAvailableSearchApplied(term), onClear: () => {
203
+ setAvailableSearch("");
204
+ setAvailableSearchApplied("");
205
+ }, placeholder: `Search ${availableLabel.toLowerCase()}...`, inputAriaLabel: `Search within ${availableLabel}` }), jsx("div", { className: "tw:!flex tw:!justify-end tw:!mt-3", children: jsx(Button, { size: "sm", onClick: handleAddSelected, disabled: availableChecked.size === 0, className: availableChecked.size === 0
206
+ ? "tw:!opacity-50 tw:!cursor-not-allowed"
207
+ : undefined, "aria-label": availableChecked.size === 0
208
+ ? addButtonLabel
209
+ : `${addButtonLabel} (${availableChecked.size} selected)`, children: addButtonLabel }) })] }), jsx("div", { className: "tw:!flex-1 tw:!flex tw:!flex-col tw:!overflow-hidden", children: jsx(DataTable, { columns: columns, data: paginatedAvailableItems, onSelectionChange: handleAvailableSelectionChange, selectedRowIds: Array.from(availableChecked), treeData: treeMode, loading: loading, className: "tw:!flex-1", expandedRowIds: Array.from(expandedAvailableRows), onExpandedChange: (ids) => setExpandedAvailableRows(new Set(ids)), reservePaginationSpace: true, selectContentClassName: "tw:!z-[1300]", menuPopupClassName: "tw:!z-[1300]", pagination: {
210
+ currentPage: availablePage,
211
+ totalPages: availableTotalPages,
212
+ onPageChange: setAvailablePage,
213
+ pageSize: availablePageSize,
214
+ totalItems: availableItemsFiltered.length,
215
+ pageSizeOptions: [20, 40, 60, 80, 100],
216
+ onPageSizeChange: (size) => {
217
+ setAvailablePageSize(size);
218
+ setAvailablePage(1);
219
+ },
220
+ showTotalItems: true,
221
+ }, footerContent: jsxs("div", { className: "tw:text-sm tw:text-muted-foreground", "aria-live": "polite", role: "status", children: [availableChecked.size, " Selected"] }), emptyState: {
222
+ title: availableEmptyMessage || "No items available",
223
+ description: availableSearchApplied
224
+ ? "Try adjusting your search"
225
+ : undefined,
226
+ } }) })] }), jsxs("div", { className: "tw:!flex tw:!w-1/2 tw:!flex-col", role: "region", "aria-labelledby": selectedHeadingId, children: [jsxs("div", { className: "tw:!border-b tw:!p-4", children: [jsx("h2", { id: selectedHeadingId, className: "tw:text-lg tw:!font-semibold tw:!mb-3", children: selectedLabel }), jsx(SearchBar, { value: selectedSearch, onChange: setSelectedSearch, onSearch: (term) => setSelectedSearchApplied(term), onClear: () => {
227
+ setSelectedSearch("");
228
+ setSelectedSearchApplied("");
229
+ }, placeholder: `Search ${selectedLabel.toLowerCase()}...`, inputAriaLabel: `Search within ${selectedLabel}` }), jsx("div", { className: "tw:!flex tw:!justify-end tw:!mt-3", children: jsx(Button, { size: "sm", onClick: handleRemoveSelected, disabled: selectedChecked.size === 0, variant: "destructive", className: selectedChecked.size === 0
230
+ ? "tw:!opacity-50 tw:!cursor-not-allowed"
231
+ : undefined, "aria-label": selectedChecked.size === 0
232
+ ? removeButtonLabel
233
+ : `${removeButtonLabel} (${selectedChecked.size} selected)`, children: removeButtonLabel }) })] }), jsx("div", { className: "tw:!flex-1 tw:!flex tw:!flex-col tw:!overflow-hidden", children: jsx(DataTable, { columns: selectedColumns ?? columns, data: paginatedSelectedItems, onSelectionChange: handleSelectedSelectionChange, selectedRowIds: Array.from(selectedChecked), treeData: false, className: "tw:!flex-1", reservePaginationSpace: true, selectContentClassName: "tw:!z-[1300]", menuPopupClassName: "tw:!z-[1300]", pagination: {
234
+ currentPage: selectedPage,
235
+ totalPages: selectedTotalPages,
236
+ onPageChange: setSelectedPage,
237
+ pageSize: selectedPageSize,
238
+ totalItems: selectedItemsData.length,
239
+ pageSizeOptions: [20, 40, 60, 80, 100],
240
+ onPageSizeChange: (size) => {
241
+ setSelectedPageSize(size);
242
+ setSelectedPage(1);
243
+ },
244
+ showTotalItems: true,
245
+ }, footerContent: jsxs("div", { className: "tw:text-sm tw:text-muted-foreground", "aria-live": "polite", role: "status", children: [selectedIds.size, " Selected"] }), emptyState: {
246
+ title: selectedEmptyMessage,
247
+ description: selectedSearchApplied
248
+ ? "Try adjusting your search"
249
+ : undefined,
250
+ } }) })] })] }), jsxs(SheetFooter, { className: "tw:!border-t tw:!flex tw:!flex-row tw:!justify-between tw:!items-center", children: [jsx(Button, { variant: "link", className: "tw:!text-primary tw:!px-0", onClick: handleClose, children: cancelButtonLabel }), jsx(Button, { onClick: handleDone, disabled: selectedIds.size === 0, className: selectedIds.size === 0
251
+ ? "tw:!opacity-50 tw:!cursor-not-allowed"
252
+ : undefined, children: doneButtonLabel })] })] })] }) }), jsx(AlertDialog, { open: showConfirmDialog, onOpenChange: setShowConfirmDialog, children: jsxs(AlertDialogContent, { className: "tw:!z-[1300]", overlayClassName: "tw:!z-[1300]", children: [jsxs(AlertDialogHeader, { children: [jsx(AlertDialogTitle, { children: "Unsaved Changes" }), jsx(AlertDialogDescription, { children: confirmCloseMessage })] }), jsxs(AlertDialogFooter, { children: [jsx(AlertDialogCancel, { onClick: () => setShowConfirmDialog(false), children: "Go Back" }), jsx(AlertDialogAction, { onClick: handleConfirmClose, children: "Exit Without Saving" })] })] }) })] }));
253
+ }
254
+
255
+ export { SelectionPanel };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
3
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Separator };
5
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../src/components/separator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAI/D,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAA0B,EAC1B,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAgBtD;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
+ import { cn } from '../lib/utils.js';
4
+
5
+ function Separator({ className, orientation = "horizontal", decorative = true, ...props }) {
6
+ return (jsx(SeparatorPrimitive.Root, { "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn("tw:bg-border tw:shrink-0", orientation === "horizontal"
7
+ ? "tw:h-px tw:w-full"
8
+ : "tw:h-full tw:w-px", className), ...props }));
9
+ }
10
+
11
+ export { Separator };
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
3
+ declare function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>): import("react/jsx-runtime").JSX.Element;
6
+ declare function SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
7
+ declare function SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>): import("react/jsx-runtime").JSX.Element;
8
+ declare function SheetContent({ className, overlayClassName, children, side, ...props }: React.ComponentProps<typeof SheetPrimitive.Content> & {
9
+ side?: "top" | "right" | "bottom" | "left";
10
+ overlayClassName?: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
13
+ declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
14
+ declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
15
+ declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
16
+ export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetPortal, SheetOverlay, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
17
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../src/components/sheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAA;AAMxD,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAE5E;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,2CAErD;AAED,iBAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,2CAEnD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,2CAEpD;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,2CAYrD;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,IAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG;IACvD,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,2CA+BA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWxE;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,2CAWnD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC,2CAQzD;AAED,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import { XIcon } from 'lucide-react';
4
+ import { cn } from '../lib/utils.js';
5
+ import { PortalWrapper } from '../lib/portal-wrapper.js';
6
+
7
+ function Sheet({ ...props }) {
8
+ return jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
9
+ }
10
+ function SheetTrigger({ ...props }) {
11
+ return jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
12
+ }
13
+ function SheetClose({ ...props }) {
14
+ return jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
15
+ }
16
+ function SheetPortal({ ...props }) {
17
+ return jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
18
+ }
19
+ function SheetOverlay({ className, ...props }) {
20
+ return (jsx(DialogPrimitive.Overlay, { "data-slot": "sheet-overlay", className: cn("tw:fixed tw:inset-0 tw:z-50 tw:bg-black/50", "tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out tw:data-[state=closed]:fade-out-0 tw:data-[state=open]:fade-in-0", className), ...props }));
21
+ }
22
+ function SheetContent({ className, overlayClassName, children, side = "right", ...props }) {
23
+ return (jsxs(SheetPortal, { children: [jsx(SheetOverlay, { className: overlayClassName }), jsx(DialogPrimitive.Content, { "data-slot": "sheet-content", className: cn("tw:fixed tw:z-50 tw:flex tw:flex-col tw:gap-4 tw:bg-background tw:shadow-lg tw:transition tw:ease-in-out", "tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out tw:data-[state=closed]:duration-300 tw:data-[state=open]:duration-500", side === "right" &&
24
+ "tw:inset-y-0 tw:right-0 tw:h-full tw:w-3/4 tw:border-l tw:data-[state=closed]:slide-out-to-right tw:data-[state=open]:slide-in-from-right tw:sm:max-w-sm", side === "left" &&
25
+ "tw:inset-y-0 tw:left-0 tw:h-full tw:w-3/4 tw:border-r tw:data-[state=closed]:slide-out-to-left tw:data-[state=open]:slide-in-from-left tw:sm:max-w-sm", side === "top" &&
26
+ "tw:inset-x-0 tw:top-0 tw:h-auto tw:border-b tw:data-[state=closed]:slide-out-to-top tw:data-[state=open]:slide-in-from-top", side === "bottom" &&
27
+ "tw:inset-x-0 tw:bottom-0 tw:h-auto tw:border-t tw:data-[state=closed]:slide-out-to-bottom tw:data-[state=open]:slide-in-from-bottom", className), ...props, children: jsxs(PortalWrapper, { children: [children, jsxs(DialogPrimitive.Close, { className: "tw:absolute tw:right-4 tw:top-4 tw:rounded-sm tw:opacity-70 tw:transition-opacity tw:ring-offset-background tw:hover:opacity-100 tw:focus:outline-hidden tw:focus:ring-2 tw:focus:ring-ring tw:focus:ring-offset-2 tw:data-[state=open]:bg-secondary tw:disabled:pointer-events-none", children: [jsx(XIcon, { "aria-hidden": true, className: "tw:size-4" }), jsx("span", { className: "tw:sr-only", children: "Close" })] })] }) })] }));
28
+ }
29
+ function SheetHeader({ className, ...props }) {
30
+ return (jsx("div", { "data-slot": "sheet-header", className: cn("tw:flex tw:flex-col tw:gap-1.5 tw:p-4", className), ...props }));
31
+ }
32
+ function SheetFooter({ className, ...props }) {
33
+ return (jsx("div", { "data-slot": "sheet-footer", className: cn("tw:mt-auto tw:flex tw:flex-col tw:gap-2 tw:p-4", className), ...props }));
34
+ }
35
+ function SheetTitle({ className, ...props }) {
36
+ return (jsx(DialogPrimitive.Title, { "data-slot": "sheet-title", className: cn("tw!:text-foreground tw!:text-lg tw!:font-semibold", className), ...props }));
37
+ }
38
+ function SheetDescription({ className, ...props }) {
39
+ return (jsx(DialogPrimitive.Description, { "data-slot": "sheet-description", className: cn("tw:text-muted-foreground tw:text-sm", className), ...props }));
40
+ }
41
+
42
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger };
@@ -0,0 +1,70 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import { Button } from "../components/button";
4
+ import { Input } from "../components/input";
5
+ import { Separator } from "../components/separator";
6
+ import { TooltipContent } from "../components/tooltip";
7
+ type SidebarContextProps = {
8
+ state: "expanded" | "collapsed";
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ openMobile: boolean;
12
+ setOpenMobile: (open: boolean) => void;
13
+ isMobile: boolean;
14
+ toggleSidebar: () => void;
15
+ };
16
+ declare function useSidebar(): SidebarContextProps;
17
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<"div"> & {
18
+ defaultOpen?: boolean;
19
+ open?: boolean;
20
+ onOpenChange?: (open: boolean) => void;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React.ComponentProps<"div"> & {
23
+ side?: "left" | "right";
24
+ variant?: "sidebar" | "floating" | "inset";
25
+ collapsible?: "offcanvas" | "icon" | "none";
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): import("react/jsx-runtime").JSX.Element;
28
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<"button">): import("react/jsx-runtime").JSX.Element;
29
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<"main">): import("react/jsx-runtime").JSX.Element;
30
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): import("react/jsx-runtime").JSX.Element;
31
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
32
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
33
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
34
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
35
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
36
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<"div"> & {
37
+ asChild?: boolean;
38
+ }): import("react/jsx-runtime").JSX.Element;
39
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<"button"> & {
40
+ asChild?: boolean;
41
+ }): import("react/jsx-runtime").JSX.Element;
42
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
43
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
44
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
45
+ declare const sidebarMenuButtonVariants: (props?: ({
46
+ variant?: "default" | "outline" | null | undefined;
47
+ size?: "default" | "sm" | "lg" | null | undefined;
48
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
49
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
50
+ asChild?: boolean;
51
+ isActive?: boolean;
52
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
53
+ } & VariantProps<typeof sidebarMenuButtonVariants>): import("react/jsx-runtime").JSX.Element;
54
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<"button"> & {
55
+ asChild?: boolean;
56
+ showOnHover?: boolean;
57
+ }): import("react/jsx-runtime").JSX.Element;
58
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
59
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<"div"> & {
60
+ showIcon?: boolean;
61
+ }): import("react/jsx-runtime").JSX.Element;
62
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
63
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
64
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<"a"> & {
65
+ asChild?: boolean;
66
+ size?: "sm" | "md";
67
+ isActive?: boolean;
68
+ }): import("react/jsx-runtime").JSX.Element;
69
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
70
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAKjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnD,OAAO,EAEL,cAAc,EAGf,MAAM,uBAAuB,CAAA;AAS9B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAA;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAID,iBAAS,UAAU,wBAOlB;AAED,iBAAS,eAAe,CAAC,EACvB,WAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC,2CAoFA;AAED,iBAAS,OAAO,CAAC,EACf,IAAa,EACb,OAAmB,EACnB,WAAyB,EACzB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;IAC1C,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA;CAC5C,2CA2FA;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,2CAoBrC;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,2CAuB3E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAY1E;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,2CAYpC;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAS1E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAS1E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CASxC;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAY3E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYzE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,2CAerD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,2CAiBxD;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAS7B;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYvE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAS3E;AAED,QAAA,MAAM,yBAAyB;;;8EAqB9B,CAAA;AAED,iBAAS,iBAAiB,CAAC,EACzB,OAAe,EACf,QAAgB,EAChB,OAAmB,EACnB,IAAgB,EAChB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAA;CAC/D,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,2CAoCjD;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAe,EACf,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,2CAsBA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAiB7B;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAiCA;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAa1E;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAS5B;AAED,iBAAS,oBAAoB,CAAC,EAC5B,OAAe,EACf,IAAW,EACX,QAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAoBA;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,CAAA"}