@asteby/metacore-ui 0.3.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 (283) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +80 -0
  3. package/dist/command-menu/command-menu.d.ts +32 -0
  4. package/dist/command-menu/command-menu.d.ts.map +1 -0
  5. package/dist/command-menu/command-menu.js +34 -0
  6. package/dist/command-menu/command-menu.js.map +1 -0
  7. package/dist/command-menu/index.d.ts +2 -0
  8. package/dist/command-menu/index.d.ts.map +1 -0
  9. package/dist/command-menu/index.js +2 -0
  10. package/dist/command-menu/index.js.map +1 -0
  11. package/dist/data-table/bulk-actions.d.ts +13 -0
  12. package/dist/data-table/bulk-actions.d.ts.map +1 -0
  13. package/dist/data-table/bulk-actions.js +82 -0
  14. package/dist/data-table/bulk-actions.js.map +1 -0
  15. package/dist/data-table/column-header.d.ts +9 -0
  16. package/dist/data-table/column-header.d.ts.map +1 -0
  17. package/dist/data-table/column-header.js +16 -0
  18. package/dist/data-table/column-header.js.map +1 -0
  19. package/dist/data-table/faceted-filter.d.ts +16 -0
  20. package/dist/data-table/faceted-filter.d.ts.map +1 -0
  21. package/dist/data-table/faceted-filter.js +32 -0
  22. package/dist/data-table/faceted-filter.js.map +1 -0
  23. package/dist/data-table/filterable-column-header.d.ts +32 -0
  24. package/dist/data-table/filterable-column-header.d.ts.map +1 -0
  25. package/dist/data-table/filterable-column-header.js +152 -0
  26. package/dist/data-table/filterable-column-header.js.map +1 -0
  27. package/dist/data-table/index.d.ts +8 -0
  28. package/dist/data-table/index.d.ts.map +1 -0
  29. package/dist/data-table/index.js +8 -0
  30. package/dist/data-table/index.js.map +1 -0
  31. package/dist/data-table/pagination.d.ts +11 -0
  32. package/dist/data-table/pagination.d.ts.map +1 -0
  33. package/dist/data-table/pagination.js +18 -0
  34. package/dist/data-table/pagination.js.map +1 -0
  35. package/dist/data-table/toolbar.d.ts +31 -0
  36. package/dist/data-table/toolbar.d.ts.map +1 -0
  37. package/dist/data-table/toolbar.js +31 -0
  38. package/dist/data-table/toolbar.js.map +1 -0
  39. package/dist/data-table/view-options.d.ts +7 -0
  40. package/dist/data-table/view-options.d.ts.map +1 -0
  41. package/dist/data-table/view-options.js +18 -0
  42. package/dist/data-table/view-options.js.map +1 -0
  43. package/dist/dialogs/confirm-dialog.d.ts +18 -0
  44. package/dist/dialogs/confirm-dialog.d.ts.map +1 -0
  45. package/dist/dialogs/confirm-dialog.js +10 -0
  46. package/dist/dialogs/confirm-dialog.js.map +1 -0
  47. package/dist/dialogs/index.d.ts +7 -0
  48. package/dist/dialogs/index.d.ts.map +1 -0
  49. package/dist/dialogs/index.js +7 -0
  50. package/dist/dialogs/index.js.map +1 -0
  51. package/dist/dialogs/learn-more.d.ts +9 -0
  52. package/dist/dialogs/learn-more.d.ts.map +1 -0
  53. package/dist/dialogs/learn-more.js +11 -0
  54. package/dist/dialogs/learn-more.js.map +1 -0
  55. package/dist/dialogs/long-text.d.ts +9 -0
  56. package/dist/dialogs/long-text.d.ts.map +1 -0
  57. package/dist/dialogs/long-text.js +27 -0
  58. package/dist/dialogs/long-text.js.map +1 -0
  59. package/dist/dialogs/password-input.d.ts +7 -0
  60. package/dist/dialogs/password-input.d.ts.map +1 -0
  61. package/dist/dialogs/password-input.js +10 -0
  62. package/dist/dialogs/password-input.js.map +1 -0
  63. package/dist/dialogs/select-dropdown.d.ts +16 -0
  64. package/dist/dialogs/select-dropdown.d.ts.map +1 -0
  65. package/dist/dialogs/select-dropdown.js +13 -0
  66. package/dist/dialogs/select-dropdown.js.map +1 -0
  67. package/dist/dialogs/skip-to-main.d.ts +2 -0
  68. package/dist/dialogs/skip-to-main.d.ts.map +1 -0
  69. package/dist/dialogs/skip-to-main.js +5 -0
  70. package/dist/dialogs/skip-to-main.js.map +1 -0
  71. package/dist/hooks/index.d.ts +4 -0
  72. package/dist/hooks/index.d.ts.map +1 -0
  73. package/dist/hooks/index.js +4 -0
  74. package/dist/hooks/index.js.map +1 -0
  75. package/dist/hooks/use-dialog-state.d.ts +7 -0
  76. package/dist/hooks/use-dialog-state.d.ts.map +1 -0
  77. package/dist/hooks/use-dialog-state.js +12 -0
  78. package/dist/hooks/use-dialog-state.js.map +1 -0
  79. package/dist/hooks/use-mobile.d.ts +2 -0
  80. package/dist/hooks/use-mobile.d.ts.map +1 -0
  81. package/dist/hooks/use-mobile.js +16 -0
  82. package/dist/hooks/use-mobile.js.map +1 -0
  83. package/dist/hooks/use-table-url-state.d.ts +48 -0
  84. package/dist/hooks/use-table-url-state.d.ts.map +1 -0
  85. package/dist/hooks/use-table-url-state.js +123 -0
  86. package/dist/hooks/use-table-url-state.js.map +1 -0
  87. package/dist/index.d.ts +17 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +17 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/layout/app-sidebar.d.ts +41 -0
  92. package/dist/layout/app-sidebar.d.ts.map +1 -0
  93. package/dist/layout/app-sidebar.js +26 -0
  94. package/dist/layout/app-sidebar.js.map +1 -0
  95. package/dist/layout/authenticated-layout.d.ts +39 -0
  96. package/dist/layout/authenticated-layout.d.ts.map +1 -0
  97. package/dist/layout/authenticated-layout.js +22 -0
  98. package/dist/layout/authenticated-layout.js.map +1 -0
  99. package/dist/layout/header.d.ts +8 -0
  100. package/dist/layout/header.d.ts.map +1 -0
  101. package/dist/layout/header.js +20 -0
  102. package/dist/layout/header.js.map +1 -0
  103. package/dist/layout/index.d.ts +9 -0
  104. package/dist/layout/index.d.ts.map +1 -0
  105. package/dist/layout/index.js +8 -0
  106. package/dist/layout/index.js.map +1 -0
  107. package/dist/layout/nav-group.d.ts +23 -0
  108. package/dist/layout/nav-group.d.ts.map +1 -0
  109. package/dist/layout/nav-group.js +71 -0
  110. package/dist/layout/nav-group.js.map +1 -0
  111. package/dist/layout/nav-user.d.ts +20 -0
  112. package/dist/layout/nav-user.d.ts.map +1 -0
  113. package/dist/layout/nav-user.js +26 -0
  114. package/dist/layout/nav-user.js.map +1 -0
  115. package/dist/layout/profile-dropdown.d.ts +18 -0
  116. package/dist/layout/profile-dropdown.d.ts.map +1 -0
  117. package/dist/layout/profile-dropdown.js +24 -0
  118. package/dist/layout/profile-dropdown.js.map +1 -0
  119. package/dist/layout/team-switcher.d.ts +11 -0
  120. package/dist/layout/team-switcher.d.ts.map +1 -0
  121. package/dist/layout/team-switcher.js +18 -0
  122. package/dist/layout/team-switcher.js.map +1 -0
  123. package/dist/layout/types.d.ts +23 -0
  124. package/dist/layout/types.d.ts.map +1 -0
  125. package/dist/layout/types.js +2 -0
  126. package/dist/layout/types.js.map +1 -0
  127. package/dist/lib/cookies.d.ts +11 -0
  128. package/dist/lib/cookies.d.ts.map +1 -0
  129. package/dist/lib/cookies.js +30 -0
  130. package/dist/lib/cookies.js.map +1 -0
  131. package/dist/lib/index.d.ts +4 -0
  132. package/dist/lib/index.d.ts.map +1 -0
  133. package/dist/lib/index.js +4 -0
  134. package/dist/lib/index.js.map +1 -0
  135. package/dist/lib/option-colors.d.ts +27 -0
  136. package/dist/lib/option-colors.d.ts.map +1 -0
  137. package/dist/lib/option-colors.js +79 -0
  138. package/dist/lib/option-colors.js.map +1 -0
  139. package/dist/lib/utils.d.ts +17 -0
  140. package/dist/lib/utils.d.ts.map +1 -0
  141. package/dist/lib/utils.js +53 -0
  142. package/dist/lib/utils.js.map +1 -0
  143. package/dist/primitives/accordion.d.ts +8 -0
  144. package/dist/primitives/accordion.d.ts.map +1 -0
  145. package/dist/primitives/accordion.js +14 -0
  146. package/dist/primitives/accordion.js.map +1 -0
  147. package/dist/primitives/alert-dialog.d.ts +15 -0
  148. package/dist/primitives/alert-dialog.d.ts.map +1 -0
  149. package/dist/primitives/alert-dialog.js +40 -0
  150. package/dist/primitives/alert-dialog.js.map +1 -0
  151. package/dist/primitives/alert.d.ts +10 -0
  152. package/dist/primitives/alert.d.ts.map +1 -0
  153. package/dist/primitives/alert.js +26 -0
  154. package/dist/primitives/alert.js.map +1 -0
  155. package/dist/primitives/avatar.d.ts +7 -0
  156. package/dist/primitives/avatar.d.ts.map +1 -0
  157. package/dist/primitives/avatar.js +15 -0
  158. package/dist/primitives/avatar.js.map +1 -0
  159. package/dist/primitives/badge.d.ts +10 -0
  160. package/dist/primitives/badge.d.ts.map +1 -0
  161. package/dist/primitives/badge.js +24 -0
  162. package/dist/primitives/badge.js.map +1 -0
  163. package/dist/primitives/button.d.ts +11 -0
  164. package/dist/primitives/button.d.ts.map +1 -0
  165. package/dist/primitives/button.js +33 -0
  166. package/dist/primitives/button.js.map +1 -0
  167. package/dist/primitives/calendar.d.ts +9 -0
  168. package/dist/primitives/calendar.d.ts.map +1 -0
  169. package/dist/primitives/calendar.js +74 -0
  170. package/dist/primitives/calendar.js.map +1 -0
  171. package/dist/primitives/card.d.ts +10 -0
  172. package/dist/primitives/card.d.ts.map +1 -0
  173. package/dist/primitives/card.js +26 -0
  174. package/dist/primitives/card.js.map +1 -0
  175. package/dist/primitives/checkbox.d.ts +5 -0
  176. package/dist/primitives/checkbox.d.ts.map +1 -0
  177. package/dist/primitives/checkbox.js +10 -0
  178. package/dist/primitives/checkbox.js.map +1 -0
  179. package/dist/primitives/collapsible.d.ts +7 -0
  180. package/dist/primitives/collapsible.d.ts.map +1 -0
  181. package/dist/primitives/collapsible.js +14 -0
  182. package/dist/primitives/collapsible.js.map +1 -0
  183. package/dist/primitives/command.d.ts +19 -0
  184. package/dist/primitives/command.d.ts.map +1 -0
  185. package/dist/primitives/command.js +35 -0
  186. package/dist/primitives/command.js.map +1 -0
  187. package/dist/primitives/context-menu.d.ts +12 -0
  188. package/dist/primitives/context-menu.d.ts.map +1 -0
  189. package/dist/primitives/context-menu.js +21 -0
  190. package/dist/primitives/context-menu.js.map +1 -0
  191. package/dist/primitives/dialog.d.ts +16 -0
  192. package/dist/primitives/dialog.d.ts.map +1 -0
  193. package/dist/primitives/dialog.js +37 -0
  194. package/dist/primitives/dialog.js.map +1 -0
  195. package/dist/primitives/dropdown-menu.d.ts +26 -0
  196. package/dist/primitives/dropdown-menu.d.ts.map +1 -0
  197. package/dist/primitives/dropdown-menu.js +52 -0
  198. package/dist/primitives/dropdown-menu.js.map +1 -0
  199. package/dist/primitives/form.d.ts +25 -0
  200. package/dist/primitives/form.d.ts.map +1 -0
  201. package/dist/primitives/form.js +60 -0
  202. package/dist/primitives/form.js.map +1 -0
  203. package/dist/primitives/index.d.ts +35 -0
  204. package/dist/primitives/index.d.ts.map +1 -0
  205. package/dist/primitives/index.js +35 -0
  206. package/dist/primitives/index.js.map +1 -0
  207. package/dist/primitives/input-otp.d.ts +12 -0
  208. package/dist/primitives/input-otp.d.ts.map +1 -0
  209. package/dist/primitives/input-otp.js +21 -0
  210. package/dist/primitives/input-otp.js.map +1 -0
  211. package/dist/primitives/input.d.ts +4 -0
  212. package/dist/primitives/input.d.ts.map +1 -0
  213. package/dist/primitives/input.js +8 -0
  214. package/dist/primitives/input.js.map +1 -0
  215. package/dist/primitives/label.d.ts +5 -0
  216. package/dist/primitives/label.d.ts.map +1 -0
  217. package/dist/primitives/label.js +9 -0
  218. package/dist/primitives/label.js.map +1 -0
  219. package/dist/primitives/multi-select.d.ts +20 -0
  220. package/dist/primitives/multi-select.d.ts.map +1 -0
  221. package/dist/primitives/multi-select.js +44 -0
  222. package/dist/primitives/multi-select.js.map +1 -0
  223. package/dist/primitives/popover.d.ts +8 -0
  224. package/dist/primitives/popover.d.ts.map +1 -0
  225. package/dist/primitives/popover.js +18 -0
  226. package/dist/primitives/popover.js.map +1 -0
  227. package/dist/primitives/progress.d.ts +5 -0
  228. package/dist/primitives/progress.d.ts.map +1 -0
  229. package/dist/primitives/progress.js +11 -0
  230. package/dist/primitives/progress.js.map +1 -0
  231. package/dist/primitives/radio-group.d.ts +6 -0
  232. package/dist/primitives/radio-group.d.ts.map +1 -0
  233. package/dist/primitives/radio-group.js +13 -0
  234. package/dist/primitives/radio-group.js.map +1 -0
  235. package/dist/primitives/scroll-area.d.ts +11 -0
  236. package/dist/primitives/scroll-area.d.ts.map +1 -0
  237. package/dist/primitives/scroll-area.js +12 -0
  238. package/dist/primitives/scroll-area.js.map +1 -0
  239. package/dist/primitives/select.d.ts +16 -0
  240. package/dist/primitives/select.d.ts.map +1 -0
  241. package/dist/primitives/select.js +39 -0
  242. package/dist/primitives/select.js.map +1 -0
  243. package/dist/primitives/separator.d.ts +5 -0
  244. package/dist/primitives/separator.d.ts.map +1 -0
  245. package/dist/primitives/separator.js +9 -0
  246. package/dist/primitives/separator.js.map +1 -0
  247. package/dist/primitives/sheet.d.ts +14 -0
  248. package/dist/primitives/sheet.d.ts.map +1 -0
  249. package/dist/primitives/sheet.js +41 -0
  250. package/dist/primitives/sheet.js.map +1 -0
  251. package/dist/primitives/sidebar.d.ts +70 -0
  252. package/dist/primitives/sidebar.d.ts.map +1 -0
  253. package/dist/primitives/sidebar.js +198 -0
  254. package/dist/primitives/sidebar.js.map +1 -0
  255. package/dist/primitives/skeleton.d.ts +4 -0
  256. package/dist/primitives/skeleton.d.ts.map +1 -0
  257. package/dist/primitives/skeleton.js +8 -0
  258. package/dist/primitives/skeleton.js.map +1 -0
  259. package/dist/primitives/sonner.d.ts +11 -0
  260. package/dist/primitives/sonner.d.ts.map +1 -0
  261. package/dist/primitives/sonner.js +19 -0
  262. package/dist/primitives/sonner.js.map +1 -0
  263. package/dist/primitives/switch.d.ts +5 -0
  264. package/dist/primitives/switch.d.ts.map +1 -0
  265. package/dist/primitives/switch.js +9 -0
  266. package/dist/primitives/switch.js.map +1 -0
  267. package/dist/primitives/table.d.ts +14 -0
  268. package/dist/primitives/table.d.ts.map +1 -0
  269. package/dist/primitives/table.js +33 -0
  270. package/dist/primitives/table.js.map +1 -0
  271. package/dist/primitives/tabs.d.ts +8 -0
  272. package/dist/primitives/tabs.d.ts.map +1 -0
  273. package/dist/primitives/tabs.js +18 -0
  274. package/dist/primitives/tabs.js.map +1 -0
  275. package/dist/primitives/textarea.d.ts +4 -0
  276. package/dist/primitives/textarea.d.ts.map +1 -0
  277. package/dist/primitives/textarea.js +8 -0
  278. package/dist/primitives/textarea.js.map +1 -0
  279. package/dist/primitives/tooltip.d.ts +8 -0
  280. package/dist/primitives/tooltip.d.ts.map +1 -0
  281. package/dist/primitives/tooltip.js +18 -0
  282. package/dist/primitives/tooltip.js.map +1 -0
  283. package/package.json +128 -0
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import type { NavGroupData } from './types';
3
+ export type NavLinkComponent = React.ComponentType<React.AnchorHTMLAttributes<HTMLAnchorElement> & {
4
+ to: string;
5
+ children?: React.ReactNode;
6
+ }>;
7
+ export type NavGroupProps = NavGroupData & {
8
+ /**
9
+ * Current URL href (typically `useLocation().href` from tanstack-router).
10
+ * Used to highlight active items.
11
+ */
12
+ currentHref: string;
13
+ /**
14
+ * Component used to render internal links. Pass the tanstack-router `<Link>`
15
+ * or a wrapper around your framework's link component. Must accept `to` and
16
+ * forward standard anchor props.
17
+ */
18
+ LinkComponent: NavLinkComponent;
19
+ /** Optional hover handler for prefetching data (no-op by default). */
20
+ onItemHover?: (url: string) => void;
21
+ };
22
+ export declare function NavGroup({ title, items, currentHref, LinkComponent, onItemHover, }: NavGroupProps): import("react/jsx-runtime").JSX.Element | null;
23
+ //# sourceMappingURL=nav-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-group.d.ts","sourceRoot":"","sources":["../../src/layout/nav-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA4B9B,OAAO,KAAK,EAAE,YAAY,EAA4C,MAAM,SAAS,CAAA;AAErF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAChD,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CACF,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,aAAa,EAAE,gBAAgB,CAAA;IAC/B,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,aAAa,EACb,WAAW,GACZ,EAAE,aAAa,kDAgDf"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import {} from 'react';
4
+ import { ChevronRight } from 'lucide-react';
5
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../primitives/collapsible';
6
+ import { SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, } from '../primitives/sidebar';
7
+ import { Badge } from '../primitives/badge';
8
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
9
+ export function NavGroup({ title, items, currentHref, LinkComponent, onItemHover, }) {
10
+ const { state, isMobile } = useSidebar();
11
+ if (items.length === 0)
12
+ return null;
13
+ return (_jsxs(SidebarGroup, { children: [_jsx(SidebarGroupLabel, { children: title }), _jsx(SidebarMenu, { children: items.map((item) => {
14
+ const key = `${item.title}-${item.url}`;
15
+ const isCollapsible = 'items' in item && Array.isArray(item.items);
16
+ if (!isCollapsible)
17
+ return (_jsx(SidebarMenuLink, { item: item, href: currentHref, LinkComponent: LinkComponent, onItemHover: onItemHover }, key));
18
+ if (state === 'collapsed' && !isMobile)
19
+ return (_jsx(SidebarMenuCollapsedDropdown, { item: item, href: currentHref, LinkComponent: LinkComponent, onItemHover: onItemHover }, key));
20
+ return (_jsx(SidebarMenuCollapsible, { item: item, href: currentHref, LinkComponent: LinkComponent, onItemHover: onItemHover }, key));
21
+ }) })] }));
22
+ }
23
+ function NavBadge({ children }) {
24
+ return _jsx(Badge, { className: 'rounded-full px-1 py-0 text-xs', children: children });
25
+ }
26
+ function SidebarMenuLink({ item, href, LinkComponent, onItemHover, }) {
27
+ const { setOpenMobile } = useSidebar();
28
+ return (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { asChild: true, isActive: checkIsActive(href, item), tooltip: item.title, children: _jsxs(LinkComponent, { to: item.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(item.url), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), item.badge && _jsx(NavBadge, { children: item.badge })] }) }) }));
29
+ }
30
+ function SidebarMenuCollapsible({ item, href, LinkComponent, onItemHover, }) {
31
+ const { setOpenMobile } = useSidebar();
32
+ return (_jsx(Collapsible, { asChild: true, defaultOpen: checkIsActive(href, item, true), className: 'group/collapsible', children: _jsxs(SidebarMenuItem, { children: [_jsx(CollapsibleTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), item.badge && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180' })] }) }), _jsx(CollapsibleContent, { className: 'CollapsibleContent', children: _jsx(SidebarMenuSub, { children: item.items.map((subItem) => (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { asChild: true, isActive: checkIsActive(href, subItem), children: _jsxs(LinkComponent, { to: subItem.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(subItem.url), children: [subItem.icon && _jsx(subItem.icon, {}), _jsx("span", { children: subItem.title }), subItem.badge && _jsx(NavBadge, { children: subItem.badge })] }) }) }, subItem.title))) }) })] }) }));
33
+ }
34
+ function SidebarMenuCollapsedDropdown({ item, href, LinkComponent, onItemHover, }) {
35
+ return (_jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, isActive: checkIsActive(href, item), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), item.badge && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), _jsxs(DropdownMenuContent, { side: 'right', align: 'start', sideOffset: 4, children: [_jsxs(DropdownMenuLabel, { children: [item.title, " ", item.badge ? `(${item.badge})` : ''] }), _jsx(DropdownMenuSeparator, {}), item.items.map((sub) => (_jsx(DropdownMenuItem, { asChild: true, children: _jsxs(LinkComponent, { to: sub.url, className: `${checkIsActive(href, sub) ? 'bg-secondary' : ''}`, onMouseEnter: () => onItemHover?.(sub.url), children: [sub.icon && _jsx(sub.icon, {}), _jsx("span", { className: 'max-w-52 text-wrap', children: sub.title }), sub.badge && (_jsx("span", { className: 'ms-auto text-xs', children: sub.badge }))] }) }, `${sub.title}-${sub.url}`)))] })] }) }));
36
+ }
37
+ function checkIsActive(href, item, mainNav = false) {
38
+ const hasItems = 'items' in item && Array.isArray(item.items);
39
+ if (href === item.url)
40
+ return true;
41
+ if (!item.url.includes('?') &&
42
+ href.split('?')[0] === item.url &&
43
+ !href.includes('?f_') &&
44
+ !href.includes('&f_')) {
45
+ return true;
46
+ }
47
+ if (hasItems &&
48
+ !!item.items.filter((i) => i.url === href).length) {
49
+ return true;
50
+ }
51
+ if (mainNav) {
52
+ const hrefParts = href.split('/');
53
+ const itemParts = item?.url?.split('/') ?? [];
54
+ const depth = hrefParts.length >= 3 && hrefParts[1] === 'm' ? 3 : 2;
55
+ const hrefPrefix = hrefParts.slice(0, depth).join('/');
56
+ const itemPrefix = itemParts.slice(0, depth).join('/');
57
+ if (hrefPrefix !== '' && hrefPrefix === itemPrefix) {
58
+ return true;
59
+ }
60
+ if (hasItems) {
61
+ for (const sub of item.items) {
62
+ const subParts = sub.url?.split('/') ?? [];
63
+ if (subParts.slice(0, depth).join('/') === hrefPrefix) {
64
+ return true;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ return false;
70
+ }
71
+ //# sourceMappingURL=nav-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-group.js","sourceRoot":"","sources":["../../src/layout/nav-group.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import type { LayoutUser } from './types';
3
+ export interface NavUserProps {
4
+ user: LayoutUser;
5
+ /** Render extra menu items between header and sign-out (e.g. `<Link>` items). */
6
+ children?: React.ReactNode;
7
+ /** Sign-out callback. When provided, a destructive item is shown at the bottom. */
8
+ onSignOut?: () => void;
9
+ /** Sign-out item label. Defaults to 'Cerrar sesión'. */
10
+ signOutLabel?: string;
11
+ }
12
+ /**
13
+ * Sidebar footer user menu.
14
+ *
15
+ * Framework-agnostic: consumers pass children (typically `<Link>` components)
16
+ * to populate the menu, plus a sign-out callback. The original app-specific
17
+ * `useAuthStore` + hardcoded router links have been removed.
18
+ */
19
+ export declare function NavUser({ user, children, onSignOut, signOutLabel, }: NavUserProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=nav-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-user.d.ts","sourceRoot":"","sources":["../../src/layout/nav-user.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAA;IAChB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,YAA8B,GAC/B,EAAE,YAAY,2CAsEd"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { ChevronsUpDown, LogOut } from 'lucide-react';
4
+ import { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
6
+ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar, } from '../primitives/sidebar';
7
+ /**
8
+ * Sidebar footer user menu.
9
+ *
10
+ * Framework-agnostic: consumers pass children (typically `<Link>` components)
11
+ * to populate the menu, plus a sign-out callback. The original app-specific
12
+ * `useAuthStore` + hardcoded router links have been removed.
13
+ */
14
+ export function NavUser({ user, children, onSignOut, signOutLabel = 'Cerrar sesión', }) {
15
+ const { isMobile } = useSidebar();
16
+ const initials = user.name
17
+ ? user.name
18
+ .split(' ')
19
+ .map((n) => n[0])
20
+ .join('')
21
+ .substring(0, 2)
22
+ .toUpperCase()
23
+ : 'U';
24
+ return (_jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: [_jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [_jsx(AvatarImage, { src: user.avatar, alt: user.name }), _jsx(AvatarFallback, { className: 'rounded-lg', children: initials })] }), _jsxs("div", { className: 'grid flex-1 text-start text-sm leading-tight', children: [_jsx("span", { className: 'truncate font-semibold', children: user.name }), _jsx("span", { className: 'truncate text-xs', children: user.email })] }), _jsx(ChevronsUpDown, { className: 'ms-auto size-4' })] }) }), _jsxs(DropdownMenuContent, { className: 'w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg', side: isMobile ? 'bottom' : 'right', align: 'end', sideOffset: 4, children: [_jsx(DropdownMenuLabel, { className: 'p-0 font-normal', children: _jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-start text-sm', children: [_jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [_jsx(AvatarImage, { src: user.avatar, alt: user.name }), _jsx(AvatarFallback, { className: 'rounded-lg', children: initials })] }), _jsxs("div", { className: 'grid flex-1 text-start text-sm leading-tight', children: [_jsx("span", { className: 'truncate font-semibold', children: user.name }), _jsx("span", { className: 'truncate text-xs', children: user.email })] })] }) }), children && _jsx(DropdownMenuSeparator, {}), children, onSignOut && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { variant: 'destructive', onClick: onSignOut, children: [_jsx(LogOut, {}), signOutLabel] })] }))] })] }) }) }));
25
+ }
26
+ //# sourceMappingURL=nav-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-user.js","sourceRoot":"","sources":["../../src/layout/nav-user.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import type { LayoutUser } from './types';
3
+ export interface ProfileDropdownProps {
4
+ user: LayoutUser | null | undefined;
5
+ /** Fallback avatar initials label if name is missing. */
6
+ fallbackInitials?: string;
7
+ /** Menu body (typically `<DropdownMenuItem>` entries with router links). */
8
+ children?: React.ReactNode;
9
+ }
10
+ /**
11
+ * Compact user menu shown in the top-right of the header.
12
+ *
13
+ * The original app coupled this to an auth store + hardcoded router `<Link>`
14
+ * items; in the SDK version the consumer supplies the user object and populates
15
+ * the menu via `children`.
16
+ */
17
+ export declare function ProfileDropdown({ user, fallbackInitials, children, }: ProfileDropdownProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=profile-dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-dropdown.d.ts","sourceRoot":"","sources":["../../src/layout/profile-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAA;IACnC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,gBAAsB,EACtB,QAAQ,GACT,EAAE,oBAAoB,2CAoCtB"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';
4
+ import { Button } from '../primitives/button';
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
6
+ /**
7
+ * Compact user menu shown in the top-right of the header.
8
+ *
9
+ * The original app coupled this to an auth store + hardcoded router `<Link>`
10
+ * items; in the SDK version the consumer supplies the user object and populates
11
+ * the menu via `children`.
12
+ */
13
+ export function ProfileDropdown({ user, fallbackInitials = 'U', children, }) {
14
+ const initials = user?.name
15
+ ? user.name
16
+ .split(' ')
17
+ .map((n) => n[0])
18
+ .join('')
19
+ .substring(0, 2)
20
+ .toUpperCase()
21
+ : fallbackInitials;
22
+ return (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', className: 'relative h-8 w-8 rounded-full', children: _jsxs(Avatar, { className: 'h-8 w-8', children: [_jsx(AvatarImage, { src: user?.avatar, alt: user?.name || 'user' }), _jsx(AvatarFallback, { children: initials })] }) }) }), _jsxs(DropdownMenuContent, { className: 'w-56', align: 'end', forceMount: true, children: [_jsx(DropdownMenuLabel, { className: 'font-normal', children: _jsxs("div", { className: 'flex flex-col gap-1.5', children: [_jsx("p", { className: 'text-sm leading-none font-medium', children: user?.name || 'Usuario' }), _jsx("p", { className: 'text-muted-foreground text-xs leading-none', children: user?.email || 'usuario@ejemplo.com' })] }) }), children && _jsx(DropdownMenuSeparator, {}), children] })] }));
23
+ }
24
+ //# sourceMappingURL=profile-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-dropdown.js","sourceRoot":"","sources":["../../src/layout/profile-dropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AAWnC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,gBAAgB,GAAG,GAAG,EACtB,QAAQ,GACa;IACrB,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI;QACzB,CAAC,CAAC,IAAI,CAAC,IAAI;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,IAAI,CAAC,EAAE,CAAC;aACR,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;aACf,WAAW,EAAE;QAClB,CAAC,CAAC,gBAAgB,CAAA;IAEpB,OAAO,CACL,MAAC,YAAY,IAAC,KAAK,EAAE,KAAK,aACxB,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,+BAA+B,YAC/D,MAAC,MAAM,IAAC,SAAS,EAAC,SAAS,aACzB,KAAC,WAAW,IAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,GAAI,EAC7D,KAAC,cAAc,cAAE,QAAQ,GAAkB,IACpC,GACF,GACW,EACtB,MAAC,mBAAmB,IAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,UAAU,mBAC1D,KAAC,iBAAiB,IAAC,SAAS,EAAC,aAAa,YACxC,eAAK,SAAS,EAAC,uBAAuB,aACpC,YAAG,SAAS,EAAC,kCAAkC,YAC5C,IAAI,EAAE,IAAI,IAAI,SAAS,GACtB,EACJ,YAAG,SAAS,EAAC,4CAA4C,YACtD,IAAI,EAAE,KAAK,IAAI,qBAAqB,GACnC,IACA,GACY,EACnB,QAAQ,IAAI,KAAC,qBAAqB,KAAG,EACrC,QAAQ,IACW,IACT,CAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ type TeamSwitcherProps = {
3
+ teams: {
4
+ name: string;
5
+ logo: React.ElementType | string;
6
+ plan: string;
7
+ }[];
8
+ };
9
+ export declare function TeamSwitcher({ teams }: TeamSwitcherProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
11
+ //# sourceMappingURL=team-switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-switcher.d.ts","sourceRoot":"","sources":["../../src/layout/team-switcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;QAChC,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;CACJ,CAAA;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,kDAmFxD"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { ChevronsUpDown, Plus } from 'lucide-react';
4
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
5
+ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar, } from '../primitives/sidebar';
6
+ export function TeamSwitcher({ teams }) {
7
+ const { isMobile } = useSidebar();
8
+ const [activeTeam, setActiveTeam] = React.useState(teams[0]);
9
+ React.useEffect(() => {
10
+ if (teams.length > 0) {
11
+ setActiveTeam(teams[0]);
12
+ }
13
+ }, [teams]);
14
+ if (!activeTeam)
15
+ return null;
16
+ return (_jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: [_jsx("div", { className: 'bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg', children: typeof activeTeam.logo === 'string' ? (_jsx("img", { src: activeTeam.logo, alt: activeTeam.name, className: 'size-6 rounded-md object-cover' })) : (_jsx(activeTeam.logo, { className: 'size-4' })) }), _jsxs("div", { className: 'grid flex-1 text-start text-sm leading-tight', children: [_jsx("span", { className: 'truncate font-semibold', children: activeTeam.name }), _jsx("span", { className: 'truncate text-xs', children: activeTeam.plan })] }), _jsx(ChevronsUpDown, { className: 'ms-auto' })] }) }), _jsxs(DropdownMenuContent, { className: 'w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg', align: 'start', side: isMobile ? 'bottom' : 'right', sideOffset: 4, children: [_jsx(DropdownMenuLabel, { className: 'text-muted-foreground text-xs', children: "Equipos" }), teams.map((team, index) => (_jsxs(DropdownMenuItem, { onClick: () => setActiveTeam(team), className: 'gap-2 p-2', children: [_jsx("div", { className: 'flex size-6 items-center justify-center rounded-sm border', children: typeof team.logo === 'string' ? (_jsx("img", { src: team.logo, alt: team.name, className: 'size-4 rounded-sm object-cover' })) : (_jsx(team.logo, { className: 'size-4 shrink-0' })) }), team.name, _jsxs(DropdownMenuShortcut, { children: ["\u2318", index + 1] })] }, team.name))), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: 'gap-2 p-2', children: [_jsx("div", { className: 'bg-background flex size-6 items-center justify-center rounded-md border', children: _jsx(Plus, { className: 'size-4' }) }), _jsx("div", { className: 'text-muted-foreground font-medium', children: "A\u00F1adir equipo" })] })] })] }) }) }));
17
+ }
18
+ //# sourceMappingURL=team-switcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-switcher.js","sourceRoot":"","sources":["../../src/layout/team-switcher.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type LucideIcon } from 'lucide-react';
2
+ export interface NavLinkItem {
3
+ title: string;
4
+ url: string;
5
+ icon?: LucideIcon;
6
+ badge?: string;
7
+ role?: string;
8
+ }
9
+ export interface NavCollapsibleItem extends NavLinkItem {
10
+ items: NavLinkItem[];
11
+ }
12
+ export type NavItem = NavLinkItem | NavCollapsibleItem;
13
+ export interface NavGroupData {
14
+ title: string;
15
+ items: NavItem[];
16
+ }
17
+ export interface LayoutUser {
18
+ name: string;
19
+ email: string;
20
+ avatar?: string;
21
+ role?: string;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd"}
@@ -0,0 +1,2 @@
1
+ import {} from 'lucide-react';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,cAAc,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Cookie utility functions using manual document.cookie approach.
3
+ * Replaces js-cookie dependency for better consistency.
4
+ */
5
+ /** Get a cookie value by name */
6
+ export declare function getCookie(name: string): string | undefined;
7
+ /** Set a cookie with name, value, and optional max age */
8
+ export declare function setCookie(name: string, value: string, maxAge?: number): void;
9
+ /** Remove a cookie by setting its max age to 0 */
10
+ export declare function removeCookie(name: string): void;
11
+ //# sourceMappingURL=cookies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iCAAiC;AACjC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1D;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAwB,GAC/B,IAAI,CAGN;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG/C"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Cookie utility functions using manual document.cookie approach.
3
+ * Replaces js-cookie dependency for better consistency.
4
+ */
5
+ const DEFAULT_MAX_AGE = 60 * 60 * 24 * 7; // 7 days
6
+ /** Get a cookie value by name */
7
+ export function getCookie(name) {
8
+ if (typeof document === 'undefined')
9
+ return undefined;
10
+ const value = `; ${document.cookie}`;
11
+ const parts = value.split(`; ${name}=`);
12
+ if (parts.length === 2) {
13
+ const cookieValue = parts.pop()?.split(';').shift();
14
+ return cookieValue;
15
+ }
16
+ return undefined;
17
+ }
18
+ /** Set a cookie with name, value, and optional max age */
19
+ export function setCookie(name, value, maxAge = DEFAULT_MAX_AGE) {
20
+ if (typeof document === 'undefined')
21
+ return;
22
+ document.cookie = `${name}=${value}; path=/; max-age=${maxAge}`;
23
+ }
24
+ /** Remove a cookie by setting its max age to 0 */
25
+ export function removeCookie(name) {
26
+ if (typeof document === 'undefined')
27
+ return;
28
+ document.cookie = `${name}=; path=/; max-age=0`;
29
+ }
30
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,SAAS;AAElD,iCAAiC;AACjC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,SAAS,CAAA;IAErD,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAA;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;QACnD,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,KAAa,EACb,SAAiB,eAAe;IAEhC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,qBAAqB,MAAM,EAAE,CAAA;AACjE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAA;AACjD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { cn, getPageNumbers, sleep } from './utils';
2
+ export { getCookie, setCookie, removeCookie } from './cookies';
3
+ export { resolveColorHex, resolveColorCss, generateBadgeStyles, } from './option-colors';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { cn, getPageNumbers, sleep } from './utils';
2
+ export { getCookie, setCookie, removeCookie } from './cookies';
3
+ export { resolveColorHex, resolveColorCss, generateBadgeStyles, } from './option-colors';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Centralized color resolution for OptionDef.color (badges, dots, filters).
3
+ *
4
+ * Backend metadata can express option colors either as Tailwind-style semantic
5
+ * names (`"green"`, `"emerald"`, `"blue"`, ...) — the preferred convention —
6
+ * or as raw hex (`"#22c55e"`). Every consumer (table cell badges, filter
7
+ * pills, column header chips) must funnel through this module so the visual
8
+ * language stays consistent across the app and the theme palette only needs
9
+ * to be updated in one place.
10
+ */
11
+ /**
12
+ * Returns a 6-digit hex string (no `#`) for an OptionDef color value, accepting
13
+ * either a semantic name from COLOR_MAP or any hex literal.
14
+ */
15
+ export declare const resolveColorHex: (input: string) => string;
16
+ /** Returns a `#xxxxxx` CSS-safe color literal — handy for inline styles. */
17
+ export declare const resolveColorCss: (input: string) => string;
18
+ interface BadgeStyleOptions {
19
+ isDark: boolean;
20
+ }
21
+ /**
22
+ * Builds the inline style object for a colored badge (background + border +
23
+ * text), tinted in the OptionDef color and adapted to light/dark mode.
24
+ */
25
+ export declare const generateBadgeStyles: (input: string, { isDark }: BadgeStyleOptions) => React.CSSProperties;
26
+ export {};
27
+ //# sourceMappingURL=option-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-colors.d.ts","sourceRoot":"","sources":["../../src/lib/option-colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4BH;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAK/C,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAG/C,CAAA;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,YAAY,iBAAiB,KAC5B,KAAK,CAAC,aAqBR,CAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Centralized color resolution for OptionDef.color (badges, dots, filters).
3
+ *
4
+ * Backend metadata can express option colors either as Tailwind-style semantic
5
+ * names (`"green"`, `"emerald"`, `"blue"`, ...) — the preferred convention —
6
+ * or as raw hex (`"#22c55e"`). Every consumer (table cell badges, filter
7
+ * pills, column header chips) must funnel through this module so the visual
8
+ * language stays consistent across the app and the theme palette only needs
9
+ * to be updated in one place.
10
+ */
11
+ // Tailwind-500 palette. Keep in sync with tailwind.config if it diverges.
12
+ const COLOR_MAP = {
13
+ red: 'ef4444',
14
+ orange: 'f97316',
15
+ amber: 'f59e0b',
16
+ yellow: 'eab308',
17
+ lime: '84cc16',
18
+ green: '22c55e',
19
+ emerald: '10b981',
20
+ teal: '14b8a6',
21
+ cyan: '06b6d4',
22
+ sky: '0ea5e9',
23
+ blue: '3b82f6',
24
+ indigo: '6366f1',
25
+ violet: '8b5cf6',
26
+ purple: 'a855f7',
27
+ fuchsia: 'd946ef',
28
+ pink: 'ec4899',
29
+ rose: 'f43f5e',
30
+ gray: '6b7280',
31
+ slate: '64748b',
32
+ zinc: '71717a',
33
+ neutral: '737373',
34
+ stone: '78716c',
35
+ };
36
+ /**
37
+ * Returns a 6-digit hex string (no `#`) for an OptionDef color value, accepting
38
+ * either a semantic name from COLOR_MAP or any hex literal.
39
+ */
40
+ export const resolveColorHex = (input) => {
41
+ if (!input)
42
+ return '';
43
+ const named = COLOR_MAP[input.toLowerCase()];
44
+ if (named)
45
+ return named;
46
+ return input.replace('#', '');
47
+ };
48
+ /** Returns a `#xxxxxx` CSS-safe color literal — handy for inline styles. */
49
+ export const resolveColorCss = (input) => {
50
+ const hex = resolveColorHex(input);
51
+ return hex ? `#${hex}` : '';
52
+ };
53
+ /**
54
+ * Builds the inline style object for a colored badge (background + border +
55
+ * text), tinted in the OptionDef color and adapted to light/dark mode.
56
+ */
57
+ export const generateBadgeStyles = (input, { isDark }) => {
58
+ const hex = resolveColorHex(input);
59
+ if (hex.length < 6)
60
+ return {};
61
+ const r = parseInt(hex.substring(0, 2), 16);
62
+ const g = parseInt(hex.substring(2, 4), 16);
63
+ const b = parseInt(hex.substring(4, 6), 16);
64
+ if (isDark) {
65
+ return {
66
+ backgroundColor: `rgba(${r}, ${g}, ${b}, 0.2)`,
67
+ color: `rgb(${Math.min(255, Math.floor(r * 1.2))}, ${Math.min(255, Math.floor(g * 1.2))}, ${Math.min(255, Math.floor(b * 1.2))})`,
68
+ border: `1px solid rgba(${r}, ${g}, ${b}, 0.5)`,
69
+ fontWeight: 500,
70
+ };
71
+ }
72
+ return {
73
+ backgroundColor: `rgba(${r}, ${g}, ${b}, 0.12)`,
74
+ color: `rgb(${Math.floor(r * 0.5)}, ${Math.floor(g * 0.5)}, ${Math.floor(b * 0.5)})`,
75
+ border: `1px solid rgba(${r}, ${g}, ${b}, 0.25)`,
76
+ fontWeight: 500,
77
+ };
78
+ };
79
+ //# sourceMappingURL=option-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-colors.js","sourceRoot":"","sources":["../../src/lib/option-colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ export declare function sleep(ms?: number): Promise<unknown>;
4
+ /**
5
+ * Generates page numbers for pagination with ellipsis
6
+ * @param currentPage - Current page number (1-based)
7
+ * @param totalPages - Total number of pages
8
+ * @returns Array of page numbers and ellipsis strings
9
+ *
10
+ * Examples:
11
+ * - Small dataset (<=5 pages): [1, 2, 3, 4, 5]
12
+ * - Near beginning: [1, 2, 3, 4, '...', 10]
13
+ * - In middle: [1, '...', 4, 5, 6, '...', 10]
14
+ * - Near end: [1, '...', 7, 8, 9, 10]
15
+ */
16
+ export declare function getPageNumbers(currentPage: number, totalPages: number): (string | number)[];
17
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAE,MAAa,oBAEtC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBA+BrE"}
@@ -0,0 +1,53 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ export function sleep(ms = 1000) {
7
+ return new Promise((resolve) => setTimeout(resolve, ms));
8
+ }
9
+ /**
10
+ * Generates page numbers for pagination with ellipsis
11
+ * @param currentPage - Current page number (1-based)
12
+ * @param totalPages - Total number of pages
13
+ * @returns Array of page numbers and ellipsis strings
14
+ *
15
+ * Examples:
16
+ * - Small dataset (<=5 pages): [1, 2, 3, 4, 5]
17
+ * - Near beginning: [1, 2, 3, 4, '...', 10]
18
+ * - In middle: [1, '...', 4, 5, 6, '...', 10]
19
+ * - Near end: [1, '...', 7, 8, 9, 10]
20
+ */
21
+ export function getPageNumbers(currentPage, totalPages) {
22
+ const maxVisiblePages = 5;
23
+ const rangeWithDots = [];
24
+ if (totalPages <= maxVisiblePages) {
25
+ for (let i = 1; i <= totalPages; i++) {
26
+ rangeWithDots.push(i);
27
+ }
28
+ }
29
+ else {
30
+ rangeWithDots.push(1);
31
+ if (currentPage <= 3) {
32
+ for (let i = 2; i <= 4; i++) {
33
+ rangeWithDots.push(i);
34
+ }
35
+ rangeWithDots.push('...', totalPages);
36
+ }
37
+ else if (currentPage >= totalPages - 2) {
38
+ rangeWithDots.push('...');
39
+ for (let i = totalPages - 3; i <= totalPages; i++) {
40
+ rangeWithDots.push(i);
41
+ }
42
+ }
43
+ else {
44
+ rangeWithDots.push('...');
45
+ for (let i = currentPage - 1; i <= currentPage + 1; i++) {
46
+ rangeWithDots.push(i);
47
+ }
48
+ rangeWithDots.push('...', totalPages);
49
+ }
50
+ }
51
+ return rangeWithDots;
52
+ }
53
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa,IAAI;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,UAAkB;IACpE,MAAM,eAAe,GAAG,CAAC,CAAA;IACzB,MAAM,aAAa,GAAwB,EAAE,CAAA;IAE7C,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAErB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACvC,CAAC;aAAM,IAAI,WAAW,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/primitives/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAI/D,QAAA,MAAM,SAAS,8JAA0B,CAAA;AAEzC,QAAA,MAAM,aAAa,iKASjB,CAAA;AAGF,QAAA,MAAM,gBAAgB,0KAiBpB,CAAA;AAGF,QAAA,MAAM,gBAAgB,oKAWpB,CAAA;AAGF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}