@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,32 @@
1
+ import * as React from 'react';
2
+ import { type Column } from '@tanstack/react-table';
3
+ export interface FilterOption {
4
+ label: string;
5
+ value: string;
6
+ icon?: string;
7
+ color?: string;
8
+ }
9
+ export interface ColumnFilterMeta {
10
+ filterable?: boolean;
11
+ filterType?: 'select' | 'boolean' | 'text' | 'number_range';
12
+ filterKey?: string;
13
+ filterOptions?: FilterOption[];
14
+ filterLoading?: boolean;
15
+ selectedValues?: string[];
16
+ onFilterChange?: (filterKey: string, values: string[]) => void;
17
+ }
18
+ type FilterableColumnHeaderProps<TData, TValue> = React.HTMLAttributes<HTMLDivElement> & {
19
+ column: Column<TData, TValue>;
20
+ title: string;
21
+ };
22
+ /**
23
+ * Pro column header combining sort + scoped per-column filter UI.
24
+ *
25
+ * Supports `select`, `boolean`, `text`, and `number_range` filter types from
26
+ * `columnDef.meta`. The app-specific `date_range` and remote `filterSearchEndpoint`
27
+ * variants were stripped when vendored into @asteby/metacore-ui to avoid pulling
28
+ * in `react-day-picker` / HTTP client deps; extend locally in userland if needed.
29
+ */
30
+ export declare function FilterableColumnHeader<TData, TValue>({ column, title, className, }: FilterableColumnHeaderProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=filterable-column-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterable-column-header.d.ts","sourceRoot":"","sources":["../../src/data-table/filterable-column-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAkCnD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC/D;AAED,KAAK,2BAA2B,CAAC,KAAK,EAAE,MAAM,IAC5C,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAEH;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EACpD,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,2CAgW5C"}
@@ -0,0 +1,152 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { CheckIcon } from '@radix-ui/react-icons';
4
+ import {} from '@tanstack/react-table';
5
+ import { ListFilter, ArrowUpDown, ArrowUp, ArrowDown, EyeOff, } from 'lucide-react';
6
+ import { cn } from '../lib/utils';
7
+ import { resolveColorCss } from '../lib/option-colors';
8
+ import { Button } from '../primitives/button';
9
+ import { Label } from '../primitives/label';
10
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
11
+ import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
12
+ import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from '../primitives/command';
13
+ import { Input } from '../primitives/input';
14
+ /**
15
+ * Pro column header combining sort + scoped per-column filter UI.
16
+ *
17
+ * Supports `select`, `boolean`, `text`, and `number_range` filter types from
18
+ * `columnDef.meta`. The app-specific `date_range` and remote `filterSearchEndpoint`
19
+ * variants were stripped when vendored into @asteby/metacore-ui to avoid pulling
20
+ * in `react-day-picker` / HTTP client deps; extend locally in userland if needed.
21
+ */
22
+ export function FilterableColumnHeader({ column, title, className, }) {
23
+ const meta = (column.columnDef.meta || {});
24
+ const canSort = column.getCanSort();
25
+ const filterType = meta.filterType || 'select';
26
+ const hasOptions = meta.filterOptions && meta.filterOptions.length > 0;
27
+ const canFilter = meta.filterable &&
28
+ (hasOptions || filterType === 'text' || filterType === 'number_range');
29
+ const filterKey = meta.filterKey || column.id;
30
+ const selectedValues = new Set(meta.selectedValues || []);
31
+ const activeCount = selectedValues.size;
32
+ const rawTextValue = meta.selectedValues && meta.selectedValues.length > 0
33
+ ? meta.selectedValues[0]
34
+ : '';
35
+ const displayTextValue = rawTextValue.replace(/^(ILIKE|LIKE|GT|LT|GTE|LTE):/, '');
36
+ const parseRangeValues = () => {
37
+ let min = '';
38
+ let max = '';
39
+ for (const v of meta.selectedValues || []) {
40
+ if (v.startsWith('GTE:'))
41
+ min = v.replace('GTE:', '');
42
+ if (v.startsWith('LTE:'))
43
+ max = v.replace('LTE:', '');
44
+ }
45
+ return { min, max };
46
+ };
47
+ const rangeValues = parseRangeValues();
48
+ const isActive = (() => {
49
+ if (filterType === 'text')
50
+ return rawTextValue !== '';
51
+ if (filterType === 'number_range')
52
+ return rangeValues.min !== '' || rangeValues.max !== '';
53
+ return activeCount > 0;
54
+ })();
55
+ const [localTextValue, setLocalTextValue] = React.useState(displayTextValue);
56
+ const [localMin, setLocalMin] = React.useState(rangeValues.min);
57
+ const [localMax, setLocalMax] = React.useState(rangeValues.max);
58
+ const [localSelected, setLocalSelected] = React.useState(new Set(selectedValues));
59
+ const [filterOpen, setFilterOpen] = React.useState(false);
60
+ const displayOptions = meta.filterOptions || [];
61
+ React.useEffect(() => {
62
+ setLocalTextValue(displayTextValue);
63
+ }, [displayTextValue]);
64
+ React.useEffect(() => {
65
+ setLocalMin(rangeValues.min);
66
+ setLocalMax(rangeValues.max);
67
+ }, [rangeValues.min, rangeValues.max]);
68
+ React.useEffect(() => {
69
+ if (filterOpen) {
70
+ setLocalSelected(new Set(meta.selectedValues || []));
71
+ }
72
+ }, [filterOpen, meta.selectedValues?.join(',')]);
73
+ const handleLocalToggle = (value) => {
74
+ setLocalSelected((prev) => {
75
+ const next = new Set(prev);
76
+ if (next.has(value))
77
+ next.delete(value);
78
+ else
79
+ next.add(value);
80
+ return next;
81
+ });
82
+ };
83
+ const handleApplySelect = () => {
84
+ meta.onFilterChange?.(filterKey, Array.from(localSelected));
85
+ setFilterOpen(false);
86
+ };
87
+ const handleClearFilter = () => {
88
+ meta.onFilterChange?.(filterKey, []);
89
+ setLocalTextValue('');
90
+ setLocalMin('');
91
+ setLocalMax('');
92
+ setLocalSelected(new Set());
93
+ };
94
+ const handleTextSubmit = () => {
95
+ const trimmed = localTextValue.trim();
96
+ if (trimmed) {
97
+ meta.onFilterChange?.(filterKey, [`ILIKE:${trimmed}`]);
98
+ }
99
+ else {
100
+ meta.onFilterChange?.(filterKey, []);
101
+ }
102
+ };
103
+ const handleNumberRangeSubmit = () => {
104
+ const values = [];
105
+ if (localMin.trim())
106
+ values.push(`GTE:${localMin.trim()}`);
107
+ if (localMax.trim())
108
+ values.push(`LTE:${localMax.trim()}`);
109
+ meta.onFilterChange?.(filterKey, values);
110
+ };
111
+ const localHasChanges = (() => {
112
+ if (filterType === 'select' || filterType === 'boolean') {
113
+ const current = new Set(meta.selectedValues || []);
114
+ if (localSelected.size !== current.size)
115
+ return true;
116
+ for (const v of localSelected) {
117
+ if (!current.has(v))
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+ return false;
123
+ })();
124
+ return (_jsxs("div", { className: cn('flex items-center gap-0.5', className), children: [_jsx("span", { className: 'text-sm font-medium', children: title }), canSort && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', size: 'icon', className: cn('h-7 w-7 shrink-0 opacity-70 hover:opacity-100', column.getIsSorted() && 'opacity-100'), children: column.getIsSorted() === 'desc' ? (_jsx(ArrowDown, { className: 'h-3.5 w-3.5' })) : column.getIsSorted() === 'asc' ? (_jsx(ArrowUp, { className: 'h-3.5 w-3.5' })) : (_jsx(ArrowUpDown, { className: 'h-3.5 w-3.5' })) }) }), _jsxs(DropdownMenuContent, { align: 'start', children: [_jsxs(DropdownMenuItem, { onClick: () => column.toggleSorting(false), children: [_jsx(ArrowUp, { className: 'text-muted-foreground/70 size-3.5' }), "Ascendente"] }), _jsxs(DropdownMenuItem, { onClick: () => column.toggleSorting(true), children: [_jsx(ArrowDown, { className: 'text-muted-foreground/70 size-3.5' }), "Descendente"] }), column.getCanHide() && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: () => column.toggleVisibility(false), children: [_jsx(EyeOff, { className: 'text-muted-foreground/70 size-3.5' }), "Ocultar"] })] }))] })] })), canFilter && (_jsxs(Popover, { modal: false, open: filterOpen, onOpenChange: setFilterOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', size: 'icon', className: cn('h-7 w-7 shrink-0', isActive
125
+ ? 'text-primary hover:text-primary'
126
+ : 'opacity-70 hover:opacity-100'), children: _jsxs("div", { className: 'relative', children: [_jsx(ListFilter, { className: 'h-3.5 w-3.5' }), isActive &&
127
+ (filterType === 'select' || filterType === 'boolean') &&
128
+ activeCount > 0 && (_jsx("span", { className: 'absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-primary-foreground px-0.5', children: activeCount })), isActive &&
129
+ filterType !== 'select' &&
130
+ filterType !== 'boolean' && (_jsx("span", { className: 'absolute -top-1 -right-1 flex h-2 w-2 rounded-full bg-primary' }))] }) }) }), _jsxs(PopoverContent, { className: 'p-0 w-[220px]', align: 'start', onCloseAutoFocus: (e) => e.preventDefault(), children: [(filterType === 'select' || filterType === 'boolean') &&
131
+ hasOptions && (_jsxs(Command, { children: [_jsx(CommandInput, { placeholder: 'Buscar...' }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "Sin resultados." }), _jsx(CommandGroup, { children: displayOptions.map((option) => {
132
+ const isSelected = localSelected.has(option.value);
133
+ return (_jsxs(CommandItem, { onSelect: () => handleLocalToggle(option.value), onPointerDown: (e) => e.preventDefault(), children: [_jsx("div", { className: cn('border-primary mr-2 flex size-4 shrink-0 items-center justify-center rounded-sm border', isSelected
134
+ ? 'bg-primary text-primary-foreground'
135
+ : 'opacity-50 [&_svg]:invisible'), children: _jsx(CheckIcon, { className: 'h-3.5 w-3.5' }) }), option.color && (_jsx("span", { className: 'mr-1 size-2.5 rounded-full shrink-0', style: {
136
+ backgroundColor: resolveColorCss(option.color),
137
+ } })), _jsx("span", { className: 'truncate', children: option.label })] }, option.value));
138
+ }) })] }), _jsxs("div", { className: 'border-t p-2 flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: () => {
139
+ handleClearFilter();
140
+ setFilterOpen(false);
141
+ }, disabled: !isActive && localSelected.size === 0, children: "Limpiar" }), _jsxs(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleApplySelect, disabled: !localHasChanges && localSelected.size === 0, children: ["Aplicar", localSelected.size > 0 ? ` (${localSelected.size})` : ''] })] })] })), filterType === 'text' && (_jsxs("div", { className: 'p-2.5 space-y-2', children: [_jsx(Input, { placeholder: 'Contiene...', value: localTextValue, onChange: (e) => setLocalTextValue(e.target.value), onKeyDown: (e) => {
142
+ if (e.key === 'Enter')
143
+ handleTextSubmit();
144
+ }, className: 'h-8 text-sm', autoFocus: true }), _jsxs("div", { className: 'flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: handleClearFilter, disabled: !isActive, children: "Limpiar" }), _jsx(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleTextSubmit, children: "Aplicar" })] })] })), filterType === 'number_range' && (_jsxs("div", { className: 'p-2.5 space-y-2.5', children: [_jsxs("div", { className: 'grid grid-cols-2 gap-2', children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { className: 'text-xs text-muted-foreground', children: "Min" }), _jsx(Input, { type: 'number', placeholder: '0', value: localMin, onChange: (e) => setLocalMin(e.target.value), onKeyDown: (e) => {
145
+ if (e.key === 'Enter')
146
+ handleNumberRangeSubmit();
147
+ }, className: 'h-8 text-sm', autoFocus: true })] }), _jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { className: 'text-xs text-muted-foreground', children: "Max" }), _jsx(Input, { type: 'number', placeholder: '999999', value: localMax, onChange: (e) => setLocalMax(e.target.value), onKeyDown: (e) => {
148
+ if (e.key === 'Enter')
149
+ handleNumberRangeSubmit();
150
+ }, className: 'h-8 text-sm' })] })] }), _jsxs("div", { className: 'flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: handleClearFilter, disabled: !isActive, children: "Limpiar" }), _jsx(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleNumberRangeSubmit, children: "Aplicar" })] })] }))] })] }))] }));
151
+ }
152
+ //# sourceMappingURL=filterable-column-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterable-column-header.js","sourceRoot":"","sources":["../../src/data-table/filterable-column-header.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { DataTablePagination } from './pagination';
2
+ export { DataTableColumnHeader } from './column-header';
3
+ export { DataTableFacetedFilter } from './faceted-filter';
4
+ export { DataTableViewOptions } from './view-options';
5
+ export { DataTableToolbar } from './toolbar';
6
+ export { DataTableBulkActions } from './bulk-actions';
7
+ export { FilterableColumnHeader, type FilterOption, type ColumnFilterMeta, } from './filterable-column-header';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EACL,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,8 @@
1
+ export { DataTablePagination } from './pagination';
2
+ export { DataTableColumnHeader } from './column-header';
3
+ export { DataTableFacetedFilter } from './faceted-filter';
4
+ export { DataTableViewOptions } from './view-options';
5
+ export { DataTableToolbar } from './toolbar';
6
+ export { DataTableBulkActions } from './bulk-actions';
7
+ export { FilterableColumnHeader, } from './filterable-column-header';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EACL,sBAAsB,GAGvB,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { type Table } from '@tanstack/react-table';
3
+ type DataTablePaginationProps<TData> = {
4
+ table: Table<TData>;
5
+ className?: string;
6
+ pageSizeOptions?: number[];
7
+ leftActions?: React.ReactNode;
8
+ };
9
+ export declare function DataTablePagination<TData>({ table, className, pageSizeOptions, leftActions, }: DataTablePaginationProps<TData>): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/data-table/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAYlD,KAAK,wBAAwB,CAAC,KAAK,IAAI;IACrC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,SAAS,EACT,eAAsC,EACtC,WAAW,GACZ,EAAE,wBAAwB,CAAC,KAAK,CAAC,2CA+GjC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { ChevronLeftIcon, ChevronRightIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, } from '@radix-ui/react-icons';
4
+ import {} from '@tanstack/react-table';
5
+ import { useTranslation } from 'react-i18next';
6
+ import { cn, getPageNumbers } from '../lib/utils';
7
+ import { Button } from '../primitives/button';
8
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../primitives/select';
9
+ export function DataTablePagination({ table, className, pageSizeOptions = [10, 20, 30, 40, 50], leftActions, }) {
10
+ const { t } = useTranslation();
11
+ const currentPage = table.getState().pagination.pageIndex + 1;
12
+ const totalPages = table.getPageCount();
13
+ const pageNumbers = getPageNumbers(currentPage, totalPages);
14
+ return (_jsxs("div", { className: cn('flex items-center justify-between overflow-clip px-2', '@max-2xl/content:flex-col-reverse @max-2xl/content:gap-4', className), style: { overflowClipMargin: 1 }, children: [_jsxs("div", { className: 'flex w-full items-center justify-between', children: [_jsx("div", { className: 'flex w-[100px] items-center justify-center text-sm font-medium @2xl/content:hidden', children: t('datatable.page_x_of_y', { current: currentPage, total: totalPages }) }), _jsxs("div", { className: 'flex items-center gap-2 @max-2xl/content:flex-row-reverse', children: [_jsxs(Select, { value: `${table.getState().pagination.pageSize}`, onValueChange: (value) => {
15
+ table.setPageSize(Number(value));
16
+ }, children: [_jsx(SelectTrigger, { className: 'h-9 w-[70px]', children: _jsx(SelectValue, { placeholder: String(table.getState().pagination.pageSize) }) }), _jsx(SelectContent, { side: 'top', children: pageSizeOptions.map((pageSize) => (_jsx(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize))) })] }), _jsx("p", { className: 'hidden text-sm font-medium sm:block', children: t('datatable.rows_per_page') }), leftActions] })] }), _jsxs("div", { className: 'flex items-center sm:space-x-6 lg:space-x-8', children: [_jsx("div", { className: 'flex w-[100px] items-center justify-center text-sm font-medium @max-3xl/content:hidden', children: t('datatable.page_x_of_y', { current: currentPage, total: totalPages }) }), _jsxs("div", { className: 'flex items-center space-x-2', children: [_jsxs(Button, { variant: 'outline', className: 'size-9 p-0 @max-md/content:hidden', onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_first_page') }), _jsx(DoubleArrowLeftIcon, { className: 'h-4 w-4' })] }), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0', onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_previous_page') }), _jsx(ChevronLeftIcon, { className: 'h-4 w-4' })] }), pageNumbers.map((pageNumber, index) => (_jsx("div", { className: 'flex items-center', children: pageNumber === '...' ? (_jsx("span", { className: 'text-muted-foreground px-1 text-sm', children: "..." })) : (_jsxs(Button, { variant: currentPage === pageNumber ? 'default' : 'outline', className: 'h-9 min-w-9 px-3', onClick: () => table.setPageIndex(pageNumber - 1), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_page', { page: pageNumber }) }), pageNumber] })) }, `${pageNumber}-${index}`))), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0', onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_next_page') }), _jsx(ChevronRightIcon, { className: 'h-4 w-4' })] }), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0 @max-md/content:hidden', onClick: () => table.setPageIndex(table.getPageCount() - 1), disabled: !table.getCanNextPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_last_page') }), _jsx(DoubleArrowRightIcon, { className: 'h-4 w-4' })] })] })] })] }));
17
+ }
18
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/data-table/pagination.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { type Table } from '@tanstack/react-table';
3
+ type DataTableToolbarProps<TData> = {
4
+ table: Table<TData>;
5
+ searchPlaceholder?: string;
6
+ searchKey?: string;
7
+ filters?: {
8
+ columnId: string;
9
+ title: string;
10
+ options: {
11
+ label: string;
12
+ value: string;
13
+ icon?: React.ComponentType<{
14
+ className?: string;
15
+ }>;
16
+ }[];
17
+ }[];
18
+ activeFilters?: Record<string, string[]>;
19
+ onDynamicFilterChange?: (filterKey: string, values: string[]) => void;
20
+ onRefresh?: () => void;
21
+ isLoading?: boolean;
22
+ children?: React.ReactNode;
23
+ dateFilter?: unknown;
24
+ perPageOptions?: number[];
25
+ selectedCount?: number;
26
+ onBulkDelete?: () => void;
27
+ extraActions?: React.ReactNode;
28
+ };
29
+ export declare function DataTableToolbar<TData>({ table, searchPlaceholder, searchKey, filters, activeFilters, onDynamicFilterChange, onRefresh, isLoading, children, extraActions, }: DataTableToolbarProps<TData>): import("react/jsx-runtime").JSX.Element;
30
+ export {};
31
+ //# sourceMappingURL=toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/data-table/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQlD,KAAK,qBAAqB,CAAC,KAAK,IAAI;IAClC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;gBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SACnD,EAAE,CAAA;KACJ,EAAE,CAAA;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACxC,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACtC,KAAK,EACL,iBAA+B,EAC/B,SAAS,EACT,OAAY,EACZ,aAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE,qBAAqB,CAAC,KAAK,CAAC,2CAuF9B"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Cross2Icon } from '@radix-ui/react-icons';
4
+ import {} from '@tanstack/react-table';
5
+ import { RefreshCw } from 'lucide-react';
6
+ import { cn } from '../lib/utils';
7
+ import { Button } from '../primitives/button';
8
+ import { Input } from '../primitives/input';
9
+ import { DataTableFacetedFilter } from './faceted-filter';
10
+ import { DataTableViewOptions } from './view-options';
11
+ export function DataTableToolbar({ table, searchPlaceholder = 'Filter...', searchKey, filters = [], activeFilters = {}, onDynamicFilterChange, onRefresh, isLoading, children, extraActions, }) {
12
+ const hasActiveColumnFilters = Object.values(activeFilters).some((v) => v.length > 0);
13
+ const activeFilterCount = Object.values(activeFilters).filter((v) => v.length > 0).length +
14
+ table.getState().columnFilters.length;
15
+ const isFiltered = table.getState().columnFilters.length > 0 ||
16
+ table.getState().globalFilter ||
17
+ hasActiveColumnFilters;
18
+ return (_jsxs("div", { className: 'flex items-center justify-between', children: [_jsxs("div", { className: 'flex flex-1 flex-col-reverse items-start gap-y-2 sm:flex-row sm:items-center sm:space-x-2', children: [children, searchKey ? (_jsx(Input, { placeholder: searchPlaceholder, value: table.getColumn(searchKey)?.getFilterValue() ?? '', onChange: (event) => table.getColumn(searchKey)?.setFilterValue(event.target.value), className: 'h-8 w-[150px] lg:w-[250px]' })) : (_jsx(Input, { placeholder: searchPlaceholder, value: table.getState().globalFilter ?? '', onChange: (event) => table.setGlobalFilter(event.target.value), className: 'h-8 w-[150px] lg:w-[250px]' })), _jsx("div", { className: 'flex gap-x-2 flex-wrap', children: filters.map((filter) => {
19
+ const column = table.getColumn(filter.columnId);
20
+ if (!column)
21
+ return null;
22
+ return (_jsx(DataTableFacetedFilter, { column: column, title: filter.title, options: filter.options }, filter.columnId));
23
+ }) }), isFiltered && (_jsxs(Button, { variant: 'ghost', onClick: () => {
24
+ table.resetColumnFilters();
25
+ table.setGlobalFilter('');
26
+ if (onDynamicFilterChange) {
27
+ Object.keys(activeFilters).forEach((key) => onDynamicFilterChange(key, []));
28
+ }
29
+ }, className: 'h-8 px-2 lg:px-3 text-muted-foreground hover:text-foreground', children: ["Limpiar filtros", activeFilterCount > 0 && (_jsx("span", { className: 'ml-1.5 flex h-5 min-w-5 items-center justify-center rounded-full bg-muted text-[11px] font-semibold px-1', children: activeFilterCount })), _jsx(Cross2Icon, { className: 'ms-1 h-3.5 w-3.5' })] }))] }), _jsxs("div", { className: 'flex items-center gap-2', children: [extraActions, onRefresh && (_jsxs(Button, { variant: 'outline', size: 'sm', onClick: onRefresh, className: 'h-8 px-2 lg:px-3', disabled: isLoading, children: [_jsx(RefreshCw, { className: cn('h-4 w-4', isLoading && 'animate-spin') }), _jsx("span", { className: 'sr-only', children: "Recargar" })] })), _jsx(DataTableViewOptions, { table: table })] })] }));
30
+ }
31
+ //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/data-table/toolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Table } from '@tanstack/react-table';
2
+ type DataTableViewOptionsProps<TData> = {
3
+ table: Table<TData>;
4
+ };
5
+ export declare function DataTableViewOptions<TData>({ table, }: DataTableViewOptionsProps<TData>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=view-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-options.d.ts","sourceRoot":"","sources":["../../src/data-table/view-options.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAWlD,KAAK,yBAAyB,CAAC,KAAK,IAAI;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CACpB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,EAC1C,KAAK,GACN,EAAE,yBAAyB,CAAC,KAAK,CAAC,2CAwClC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';
3
+ import { MixerHorizontalIcon } from '@radix-ui/react-icons';
4
+ import {} from '@tanstack/react-table';
5
+ import { useTranslation } from 'react-i18next';
6
+ import { Button } from '../primitives/button';
7
+ import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, } from '../primitives/dropdown-menu';
8
+ export function DataTableViewOptions({ table, }) {
9
+ const { t } = useTranslation();
10
+ return (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', size: 'sm', className: 'ms-auto hidden h-8 lg:flex', children: [_jsx(MixerHorizontalIcon, { className: 'size-4' }), t('datatable.view')] }) }), _jsxs(DropdownMenuContent, { align: 'end', className: 'w-[150px]', children: [_jsx(DropdownMenuLabel, { children: t('datatable.columns') }), _jsx(DropdownMenuSeparator, {}), table
11
+ .getAllColumns()
12
+ .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())
13
+ .map((column) => {
14
+ return (_jsx(DropdownMenuCheckboxItem, { className: 'capitalize', checked: column.getIsVisible(), onCheckedChange: (value) => column.toggleVisibility(!!value), children: column.columnDef.meta
15
+ ?.label || column.id }, column.id));
16
+ })] })] }));
17
+ }
18
+ //# sourceMappingURL=view-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-options.js","sourceRoot":"","sources":["../../src/data-table/view-options.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,UAAU,oBAAoB,CAAQ,EAC1C,KAAK,GAC4B;IACjC,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAE9B,OAAO,CACL,MAAC,YAAY,IAAC,KAAK,EAAE,KAAK,aACxB,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,4BAA4B,aAEtC,KAAC,mBAAmB,IAAC,SAAS,EAAC,QAAQ,GAAG,EACzC,CAAC,CAAC,gBAAgB,CAAC,IACb,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,aACpD,KAAC,iBAAiB,cAAE,CAAC,CAAC,mBAAmB,CAAC,GAAqB,EAC/D,KAAC,qBAAqB,KAAG,EACxB,KAAK;yBACH,aAAa,EAAE;yBACf,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAClE;yBACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACd,OAAO,CACL,KAAC,wBAAwB,IAEvB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,EAC9B,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,YAE1D,MAAM,CAAC,SAAS,CAAC,IAAuC;gCACxD,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE,IANjB,MAAM,CAAC,EAAE,CAOW,CAC5B,CAAA;oBACH,CAAC,CAAC,IACgB,IACT,CAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ type ConfirmDialogProps = {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ title: React.ReactNode;
6
+ disabled?: boolean;
7
+ desc: React.JSX.Element | string;
8
+ cancelBtnText?: string;
9
+ confirmText?: React.ReactNode;
10
+ destructive?: boolean;
11
+ handleConfirm: () => void;
12
+ isLoading?: boolean;
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ };
16
+ export declare function ConfirmDialog(props: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=confirm-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-dialog.d.ts","sourceRoot":"","sources":["../../src/dialogs/confirm-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAuCtD"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../lib/utils';
4
+ import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '../primitives/alert-dialog';
5
+ import { Button } from '../primitives/button';
6
+ export function ConfirmDialog(props) {
7
+ const { title, desc, children, className, confirmText, cancelBtnText, destructive, isLoading, disabled = false, handleConfirm, ...actions } = props;
8
+ return (_jsx(AlertDialog, { ...actions, children: _jsxs(AlertDialogContent, { className: cn(className && className), children: [_jsxs(AlertDialogHeader, { className: 'text-start', children: [_jsx(AlertDialogTitle, { children: title }), _jsx(AlertDialogDescription, { asChild: true, children: _jsx("div", { children: desc }) })] }), children, _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: isLoading, children: cancelBtnText ?? 'Cancel' }), _jsx(Button, { variant: destructive ? 'destructive' : 'default', onClick: handleConfirm, disabled: disabled || isLoading, children: confirmText ?? 'Continue' })] })] }) }));
9
+ }
10
+ //# sourceMappingURL=confirm-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-dialog.js","sourceRoot":"","sources":["../../src/dialogs/confirm-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAiB5C,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,aAAa,EACb,GAAG,OAAO,EACX,GAAG,KAAK,CAAA;IACT,OAAO,CACL,KAAC,WAAW,OAAK,OAAO,YACtB,MAAC,kBAAkB,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,aACvD,MAAC,iBAAiB,IAAC,SAAS,EAAC,YAAY,aACvC,KAAC,gBAAgB,cAAE,KAAK,GAAoB,EAC5C,KAAC,sBAAsB,IAAC,OAAO,kBAC7B,wBAAM,IAAI,GAAO,GACM,IACP,EACnB,QAAQ,EACT,MAAC,iBAAiB,eAChB,KAAC,iBAAiB,IAAC,QAAQ,EAAE,SAAS,YACnC,aAAa,IAAI,QAAQ,GACR,EACpB,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,IAAI,SAAS,YAE9B,WAAW,IAAI,UAAU,GACnB,IACS,IACD,GACT,CACf,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { ConfirmDialog } from './confirm-dialog';
2
+ export { LearnMore } from './learn-more';
3
+ export { LongText } from './long-text';
4
+ export { PasswordInput } from './password-input';
5
+ export { SelectDropdown } from './select-dropdown';
6
+ export { SkipToMain } from './skip-to-main';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialogs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { ConfirmDialog } from './confirm-dialog';
2
+ export { LearnMore } from './learn-more';
3
+ export { LongText } from './long-text';
4
+ export { PasswordInput } from './password-input';
5
+ export { SelectDropdown } from './select-dropdown';
6
+ export { SkipToMain } from './skip-to-main';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dialogs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import { type Root, type Content, type Trigger } from '@radix-ui/react-popover';
3
+ type LearnMoreProps = React.ComponentProps<typeof Root> & {
4
+ contentProps?: React.ComponentProps<typeof Content>;
5
+ triggerProps?: React.ComponentProps<typeof Trigger>;
6
+ };
7
+ export declare function LearnMore({ children, contentProps, triggerProps, ...props }: LearnMoreProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=learn-more.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn-more.d.ts","sourceRoot":"","sources":["../../src/dialogs/learn-more.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAU/E,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACxD,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;CACpD,CAAA;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,cAAc,2CAuBhB"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import {} from '@radix-ui/react-popover';
4
+ import { HelpCircle } from 'lucide-react';
5
+ import { cn } from '../lib/utils';
6
+ import { Button } from '../primitives/button';
7
+ import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
8
+ export function LearnMore({ children, contentProps, triggerProps, ...props }) {
9
+ return (_jsxs(Popover, { ...props, children: [_jsx(PopoverTrigger, { asChild: true, ...triggerProps, className: cn('size-5 rounded-full', triggerProps?.className), children: _jsxs(Button, { variant: 'outline', size: 'icon', children: [_jsx("span", { className: 'sr-only', children: "Learn more" }), _jsx(HelpCircle, { className: 'size-4 [&>circle]:hidden' })] }) }), _jsx(PopoverContent, { side: 'top', align: 'start', ...contentProps, className: cn('text-muted-foreground text-sm', contentProps?.className), children: children })] }));
10
+ }
11
+ //# sourceMappingURL=learn-more.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn-more.js","sourceRoot":"","sources":["../../src/dialogs/learn-more.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAyC,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAO7B,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,GAAG,KAAK,EACO;IACf,OAAO,CACL,MAAC,OAAO,OAAK,KAAK,aAChB,KAAC,cAAc,IACb,OAAO,WACH,YAAY,EAChB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC,YAE7D,MAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,aACnC,eAAM,SAAS,EAAC,SAAS,2BAAkB,EAC3C,KAAC,UAAU,IAAC,SAAS,EAAC,0BAA0B,GAAG,IAC5C,GACM,EACjB,KAAC,cAAc,IACb,IAAI,EAAC,KAAK,EACV,KAAK,EAAC,OAAO,KACT,YAAY,EAChB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,YAAY,EAAE,SAAS,CAAC,YAEtE,QAAQ,GACM,IACT,CACX,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ type LongTextProps = {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ contentClassName?: string;
6
+ };
7
+ export declare function LongText({ children, className, contentClassName, }: LongTextProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=long-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"long-text.d.ts","sourceRoot":"","sources":["../../src/dialogs/long-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAc,EACd,gBAAqB,GACtB,EAAE,aAAa,2CAgDf"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { useRef, useState } from 'react';
4
+ import { cn } from '../lib/utils';
5
+ import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
6
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '../primitives/tooltip';
7
+ export function LongText({ children, className = '', contentClassName = '', }) {
8
+ const ref = useRef(null);
9
+ const [isOverflown, setIsOverflown] = useState(false);
10
+ const refCallback = (node) => {
11
+ ref.current = node;
12
+ if (node && checkOverflow(node)) {
13
+ queueMicrotask(() => setIsOverflown(true));
14
+ }
15
+ };
16
+ if (!isOverflown)
17
+ return (_jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }));
18
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'hidden sm:block', children: _jsx(TooltipProvider, { delayDuration: 0, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }) }), _jsx(TooltipContent, { children: _jsx("p", { className: contentClassName, children: children }) })] }) }) }), _jsx("div", { className: 'sm:hidden', children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }) }), _jsx(PopoverContent, { className: cn('w-fit', contentClassName), children: _jsx("p", { children: children }) })] }) })] }));
19
+ }
20
+ const checkOverflow = (textContainer) => {
21
+ if (textContainer) {
22
+ return (textContainer.offsetHeight < textContainer.scrollHeight ||
23
+ textContainer.offsetWidth < textContainer.scrollWidth);
24
+ }
25
+ return false;
26
+ };
27
+ //# sourceMappingURL=long-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"long-text.js","sourceRoot":"","sources":["../../src/dialogs/long-text.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAA;AAQ7B,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,GACP;IACd,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,MAAM,WAAW,GAAG,CAAC,IAA2B,EAAE,EAAE;QAClD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAClB,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,WAAW;QACd,OAAO,CACL,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,CACP,CAAA;IAEH,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,iBAAiB,YAC9B,KAAC,eAAe,IAAC,aAAa,EAAE,CAAC,YAC/B,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,GACS,EACjB,KAAC,cAAc,cACb,YAAG,SAAS,EAAE,gBAAgB,YAAG,QAAQ,GAAK,GAC/B,IACT,GACM,GACd,EACN,cAAK,SAAS,EAAC,WAAW,YACxB,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,GACS,EACjB,KAAC,cAAc,IAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,YACtD,sBAAI,QAAQ,GAAK,GACF,IACT,GACN,IACL,CACJ,CAAA;AACH,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,aAAoC,EAAE,EAAE;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY;YACvD,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CACtD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ type PasswordInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> & {
3
+ ref?: React.Ref<HTMLInputElement>;
4
+ };
5
+ export declare function PasswordInput({ className, disabled, ref, ...props }: PasswordInputProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=password-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-input.d.ts","sourceRoot":"","sources":["../../src/dialogs/password-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,KAAK,kBAAkB,GAAG,IAAI,CAC5B,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,MAAM,CACP,GAAG;IACF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAClC,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAwBpB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Eye, EyeOff } from 'lucide-react';
4
+ import { cn } from '../lib/utils';
5
+ import { Button } from '../primitives/button';
6
+ export function PasswordInput({ className, disabled, ref, ...props }) {
7
+ const [showPassword, setShowPassword] = React.useState(false);
8
+ return (_jsxs("div", { className: cn('relative rounded-md', className), children: [_jsx("input", { type: showPassword ? 'text' : 'password', className: 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50', ref: ref, disabled: disabled, ...props }), _jsx(Button, { type: 'button', size: 'icon', variant: 'ghost', disabled: disabled, className: 'text-muted-foreground absolute end-1 top-1/2 h-6 w-6 -translate-y-1/2 rounded-md', onClick: () => setShowPassword((prev) => !prev), children: showPassword ? _jsx(Eye, { size: 18 }) : _jsx(EyeOff, { size: 18 }) })] }));
9
+ }
10
+ //# sourceMappingURL=password-input.js.map