@kodffe/ui 0.0.0-stage → 0.10.1

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 (304) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +11 -0
  2. package/dist/accordion/accordion.d.ts +44 -0
  3. package/dist/accordion/accordion.js +84 -0
  4. package/dist/accordion/accordion.js.map +1 -0
  5. package/dist/alert/alert.d.ts +17 -0
  6. package/dist/alert/alert.js +59 -0
  7. package/dist/alert/alert.js.map +1 -0
  8. package/dist/app-shell/app-footer.d.ts +29 -0
  9. package/dist/app-shell/app-footer.js +39 -0
  10. package/dist/app-shell/app-footer.js.map +1 -0
  11. package/dist/app-shell/app-shell-context.d.ts +10 -0
  12. package/dist/app-shell/app-shell-context.js +12 -0
  13. package/dist/app-shell/app-shell-context.js.map +1 -0
  14. package/dist/app-shell/app-shell.d.ts +42 -0
  15. package/dist/app-shell/app-shell.js +191 -0
  16. package/dist/app-shell/app-shell.js.map +1 -0
  17. package/dist/app-shell/floating-actions.d.ts +19 -0
  18. package/dist/app-shell/floating-actions.js +59 -0
  19. package/dist/app-shell/floating-actions.js.map +1 -0
  20. package/dist/app-shell/workspace-switcher.d.ts +25 -0
  21. package/dist/app-shell/workspace-switcher.js +82 -0
  22. package/dist/app-shell/workspace-switcher.js.map +1 -0
  23. package/dist/badge/badge.d.ts +19 -0
  24. package/dist/badge/badge.js +59 -0
  25. package/dist/badge/badge.js.map +1 -0
  26. package/dist/banner/banner.d.ts +22 -0
  27. package/dist/banner/banner.js +80 -0
  28. package/dist/banner/banner.js.map +1 -0
  29. package/dist/breadcrumbs/breadcrumbs.d.ts +18 -0
  30. package/dist/breadcrumbs/breadcrumbs.js +45 -0
  31. package/dist/breadcrumbs/breadcrumbs.js.map +1 -0
  32. package/dist/button/button.d.ts +38 -0
  33. package/dist/button/button.js +83 -0
  34. package/dist/button/button.js.map +1 -0
  35. package/dist/card/card.d.ts +159 -0
  36. package/dist/card/card.js +390 -0
  37. package/dist/card/card.js.map +1 -0
  38. package/dist/card/insight-card.d.ts +19 -0
  39. package/dist/card/insight-card.js +51 -0
  40. package/dist/card/insight-card.js.map +1 -0
  41. package/dist/card/integration-card.d.ts +19 -0
  42. package/dist/card/integration-card.js +70 -0
  43. package/dist/card/integration-card.js.map +1 -0
  44. package/dist/charts/charts.d.ts +75 -0
  45. package/dist/charts/charts.js +453 -0
  46. package/dist/charts/charts.js.map +1 -0
  47. package/dist/choice/choice.d.ts +39 -0
  48. package/dist/choice/choice.js +143 -0
  49. package/dist/choice/choice.js.map +1 -0
  50. package/dist/combobox/combobox.d.ts +46 -0
  51. package/dist/combobox/combobox.js +196 -0
  52. package/dist/combobox/combobox.js.map +1 -0
  53. package/dist/command-palette/command-palette.d.ts +35 -0
  54. package/dist/command-palette/command-palette.js +164 -0
  55. package/dist/command-palette/command-palette.js.map +1 -0
  56. package/dist/confirm-dialog/confirm-dialog.d.ts +37 -0
  57. package/dist/confirm-dialog/confirm-dialog.js +106 -0
  58. package/dist/confirm-dialog/confirm-dialog.js.map +1 -0
  59. package/dist/content/assistant.d.ts +86 -0
  60. package/dist/content/assistant.js +213 -0
  61. package/dist/content/assistant.js.map +1 -0
  62. package/dist/content/content.d.ts +45 -0
  63. package/dist/content/content.js +136 -0
  64. package/dist/content/content.js.map +1 -0
  65. package/dist/data-display/avatar-sizes.d.ts +8 -0
  66. package/dist/data-display/avatar-sizes.js +12 -0
  67. package/dist/data-display/avatar-sizes.js.map +1 -0
  68. package/dist/data-display/avatar.d.ts +21 -0
  69. package/dist/data-display/avatar.js +53 -0
  70. package/dist/data-display/avatar.js.map +1 -0
  71. package/dist/data-display/chip.d.ts +20 -0
  72. package/dist/data-display/chip.js +64 -0
  73. package/dist/data-display/chip.js.map +1 -0
  74. package/dist/data-display/code-block.d.ts +14 -0
  75. package/dist/data-display/code-block.js +50 -0
  76. package/dist/data-display/code-block.js.map +1 -0
  77. package/dist/data-display/data-display.d.ts +73 -0
  78. package/dist/data-display/data-display.js +227 -0
  79. package/dist/data-display/data-display.js.map +1 -0
  80. package/dist/data-display/insights.d.ts +120 -0
  81. package/dist/data-display/insights.js +220 -0
  82. package/dist/data-display/insights.js.map +1 -0
  83. package/dist/data-table/cells.d.ts +86 -0
  84. package/dist/data-table/cells.js +163 -0
  85. package/dist/data-table/cells.js.map +1 -0
  86. package/dist/data-table/data-table.d.ts +112 -0
  87. package/dist/data-table/data-table.js +558 -0
  88. package/dist/data-table/data-table.js.map +1 -0
  89. package/dist/date-picker/date-picker.d.ts +61 -0
  90. package/dist/date-picker/date-picker.js +309 -0
  91. package/dist/date-picker/date-picker.js.map +1 -0
  92. package/dist/drawer/drawer.d.ts +32 -0
  93. package/dist/drawer/drawer.js +72 -0
  94. package/dist/drawer/drawer.js.map +1 -0
  95. package/dist/empty-state/empty-state.d.ts +25 -0
  96. package/dist/empty-state/empty-state.js +78 -0
  97. package/dist/empty-state/empty-state.js.map +1 -0
  98. package/dist/error-state/error-state.d.ts +19 -0
  99. package/dist/error-state/error-state.js +56 -0
  100. package/dist/error-state/error-state.js.map +1 -0
  101. package/dist/event-calendar/calendar-logic.test.d.ts +1 -0
  102. package/dist/event-calendar/dates.d.ts +35 -0
  103. package/dist/event-calendar/dates.js +55 -0
  104. package/dist/event-calendar/dates.js.map +1 -0
  105. package/dist/event-calendar/event-calendar.d.ts +125 -0
  106. package/dist/event-calendar/event-calendar.js +795 -0
  107. package/dist/event-calendar/event-calendar.js.map +1 -0
  108. package/dist/event-calendar/event-details.d.ts +50 -0
  109. package/dist/event-calendar/event-details.js +124 -0
  110. package/dist/event-calendar/event-details.js.map +1 -0
  111. package/dist/event-calendar/layout.d.ts +48 -0
  112. package/dist/event-calendar/layout.js +55 -0
  113. package/dist/event-calendar/layout.js.map +1 -0
  114. package/dist/file-upload/file-upload.d.ts +70 -0
  115. package/dist/file-upload/file-upload.js +307 -0
  116. package/dist/file-upload/file-upload.js.map +1 -0
  117. package/dist/filters/filters.d.ts +48 -0
  118. package/dist/filters/filters.js +103 -0
  119. package/dist/filters/filters.js.map +1 -0
  120. package/dist/form-field/form-field.d.ts +39 -0
  121. package/dist/form-field/form-field.js +88 -0
  122. package/dist/form-field/form-field.js.map +1 -0
  123. package/dist/hover-card/hover-card.d.ts +15 -0
  124. package/dist/hover-card/hover-card.js +27 -0
  125. package/dist/hover-card/hover-card.js.map +1 -0
  126. package/dist/hover-card/person-hover-card.d.ts +26 -0
  127. package/dist/hover-card/person-hover-card.js +85 -0
  128. package/dist/hover-card/person-hover-card.js.map +1 -0
  129. package/dist/icon/icon-tile.d.ts +20 -0
  130. package/dist/icon/icon-tile.js +55 -0
  131. package/dist/icon/icon-tile.js.map +1 -0
  132. package/dist/icon/icon.d.ts +14 -0
  133. package/dist/icon/icon.js +28 -0
  134. package/dist/icon/icon.js.map +1 -0
  135. package/dist/icon/icons.generated.d.ts +358 -0
  136. package/dist/icon/icons.generated.js +362 -0
  137. package/dist/icon/icons.generated.js.map +1 -0
  138. package/dist/index.d.ts +90 -0
  139. package/dist/index.js +88 -0
  140. package/dist/input/extra-inputs.d.ts +122 -0
  141. package/dist/input/extra-inputs.js +351 -0
  142. package/dist/input/extra-inputs.js.map +1 -0
  143. package/dist/input/field-styles.d.ts +5 -0
  144. package/dist/input/field-styles.js +14 -0
  145. package/dist/input/field-styles.js.map +1 -0
  146. package/dist/input/input.d.ts +50 -0
  147. package/dist/input/input.js +107 -0
  148. package/dist/input/input.js.map +1 -0
  149. package/dist/layout/layout.d.ts +41 -0
  150. package/dist/layout/layout.js +90 -0
  151. package/dist/layout/layout.js.map +1 -0
  152. package/dist/lib/control-styles.d.ts +9 -0
  153. package/dist/lib/control-styles.js +16 -0
  154. package/dist/lib/control-styles.js.map +1 -0
  155. package/dist/lib/cx.d.ts +2 -0
  156. package/dist/lib/cx.js +8 -0
  157. package/dist/lib/cx.js.map +1 -0
  158. package/dist/lib/glyphs.d.ts +13 -0
  159. package/dist/lib/glyphs.js +67 -0
  160. package/dist/lib/glyphs.js.map +1 -0
  161. package/dist/lib/segmented-styles.d.ts +8 -0
  162. package/dist/lib/segmented-styles.js +12 -0
  163. package/dist/lib/segmented-styles.js.map +1 -0
  164. package/dist/lib/select-on-arrow.d.ts +7 -0
  165. package/dist/lib/select-on-arrow.js +21 -0
  166. package/dist/lib/select-on-arrow.js.map +1 -0
  167. package/dist/lib/skip-link.d.ts +5 -0
  168. package/dist/lib/skip-link.js +13 -0
  169. package/dist/lib/skip-link.js.map +1 -0
  170. package/dist/lib/use-media-query.d.ts +4 -0
  171. package/dist/lib/use-media-query.js +15 -0
  172. package/dist/lib/use-media-query.js.map +1 -0
  173. package/dist/lists/lists.d.ts +76 -0
  174. package/dist/lists/lists.js +133 -0
  175. package/dist/lists/lists.js.map +1 -0
  176. package/dist/locale-switch/locale-switch.d.ts +29 -0
  177. package/dist/locale-switch/locale-switch.js +62 -0
  178. package/dist/locale-switch/locale-switch.js.map +1 -0
  179. package/dist/logo/logo.d.ts +31 -0
  180. package/dist/logo/logo.js +157 -0
  181. package/dist/logo/logo.js.map +1 -0
  182. package/dist/logo/product-logo.d.ts +19 -0
  183. package/dist/logo/product-logo.js +46 -0
  184. package/dist/logo/product-logo.js.map +1 -0
  185. package/dist/marketing/marketing.d.ts +176 -0
  186. package/dist/marketing/marketing.js +451 -0
  187. package/dist/marketing/marketing.js.map +1 -0
  188. package/dist/marketing/newsletter-form.d.ts +21 -0
  189. package/dist/marketing/newsletter-form.js +100 -0
  190. package/dist/marketing/newsletter-form.js.map +1 -0
  191. package/dist/mascot/mascot.d.ts +28 -0
  192. package/dist/mascot/mascot.js +28 -0
  193. package/dist/mascot/mascot.js.map +1 -0
  194. package/dist/mascot/mascots.generated.d.ts +284 -0
  195. package/dist/mascot/mascots.generated.js +287 -0
  196. package/dist/mascot/mascots.generated.js.map +1 -0
  197. package/dist/master-detail/master-detail.d.ts +30 -0
  198. package/dist/master-detail/master-detail.js +71 -0
  199. package/dist/master-detail/master-detail.js.map +1 -0
  200. package/dist/menu/account-menu.d.ts +44 -0
  201. package/dist/menu/account-menu.js +78 -0
  202. package/dist/menu/account-menu.js.map +1 -0
  203. package/dist/menu/context-menu.d.ts +31 -0
  204. package/dist/menu/context-menu.js +111 -0
  205. package/dist/menu/context-menu.js.map +1 -0
  206. package/dist/menu/dropdown-menu.d.ts +49 -0
  207. package/dist/menu/dropdown-menu.js +152 -0
  208. package/dist/menu/dropdown-menu.js.map +1 -0
  209. package/dist/menu/menu-styles.d.ts +8 -0
  210. package/dist/menu/menu-styles.js +6 -0
  211. package/dist/menu/menu-styles.js.map +1 -0
  212. package/dist/menu/menubar.d.ts +31 -0
  213. package/dist/menu/menubar.js +125 -0
  214. package/dist/menu/menubar.js.map +1 -0
  215. package/dist/modal/modal.d.ts +34 -0
  216. package/dist/modal/modal.js +58 -0
  217. package/dist/modal/modal.js.map +1 -0
  218. package/dist/notification-center/notification-center.d.ts +51 -0
  219. package/dist/notification-center/notification-center.js +244 -0
  220. package/dist/notification-center/notification-center.js.map +1 -0
  221. package/dist/otp-input/otp-input.d.ts +23 -0
  222. package/dist/otp-input/otp-input.js +61 -0
  223. package/dist/otp-input/otp-input.js.map +1 -0
  224. package/dist/overlay/overlay.d.ts +53 -0
  225. package/dist/overlay/overlay.js +103 -0
  226. package/dist/overlay/overlay.js.map +1 -0
  227. package/dist/page-header/page-header.d.ts +55 -0
  228. package/dist/page-header/page-header.js +114 -0
  229. package/dist/page-header/page-header.js.map +1 -0
  230. package/dist/page-header/record-headers.d.ts +51 -0
  231. package/dist/page-header/record-headers.js +134 -0
  232. package/dist/page-header/record-headers.js.map +1 -0
  233. package/dist/page-header/section-header.d.ts +21 -0
  234. package/dist/page-header/section-header.js +44 -0
  235. package/dist/page-header/section-header.js.map +1 -0
  236. package/dist/page-navigation/page-navigation.d.ts +59 -0
  237. package/dist/page-navigation/page-navigation.js +136 -0
  238. package/dist/page-navigation/page-navigation.js.map +1 -0
  239. package/dist/pagination/pagination.d.ts +28 -0
  240. package/dist/pagination/pagination.js +102 -0
  241. package/dist/pagination/pagination.js.map +1 -0
  242. package/dist/phone-input/phone-input.d.ts +34 -0
  243. package/dist/phone-input/phone-input.js +171 -0
  244. package/dist/phone-input/phone-input.js.map +1 -0
  245. package/dist/popover/popover.d.ts +23 -0
  246. package/dist/popover/popover.js +40 -0
  247. package/dist/popover/popover.js.map +1 -0
  248. package/dist/progress/progress.d.ts +21 -0
  249. package/dist/progress/progress.js +49 -0
  250. package/dist/progress/progress.js.map +1 -0
  251. package/dist/segmented-control/segmented-control.d.ts +32 -0
  252. package/dist/segmented-control/segmented-control.js +29 -0
  253. package/dist/segmented-control/segmented-control.js.map +1 -0
  254. package/dist/select/select.d.ts +48 -0
  255. package/dist/select/select.js +136 -0
  256. package/dist/select/select.js.map +1 -0
  257. package/dist/settings/permission-matrix.d.ts +29 -0
  258. package/dist/settings/permission-matrix.js +101 -0
  259. package/dist/settings/permission-matrix.js.map +1 -0
  260. package/dist/settings/settings-row.d.ts +32 -0
  261. package/dist/settings/settings-row.js +63 -0
  262. package/dist/settings/settings-row.js.map +1 -0
  263. package/dist/side-nav/side-nav.d.ts +36 -0
  264. package/dist/side-nav/side-nav.js +123 -0
  265. package/dist/side-nav/side-nav.js.map +1 -0
  266. package/dist/site-header/site-header.d.ts +32 -0
  267. package/dist/site-header/site-header.js +99 -0
  268. package/dist/site-header/site-header.js.map +1 -0
  269. package/dist/skeleton/skeleton.d.ts +16 -0
  270. package/dist/skeleton/skeleton.js +19 -0
  271. package/dist/skeleton/skeleton.js.map +1 -0
  272. package/dist/slider/slider.d.ts +15 -0
  273. package/dist/slider/slider.js +48 -0
  274. package/dist/slider/slider.js.map +1 -0
  275. package/dist/spinner/spinner.d.ts +15 -0
  276. package/dist/spinner/spinner.js +42 -0
  277. package/dist/spinner/spinner.js.map +1 -0
  278. package/dist/stepper/step-dots.d.ts +16 -0
  279. package/dist/stepper/step-dots.js +26 -0
  280. package/dist/stepper/step-dots.js.map +1 -0
  281. package/dist/stepper/stepper.d.ts +26 -0
  282. package/dist/stepper/stepper.js +113 -0
  283. package/dist/stepper/stepper.js.map +1 -0
  284. package/dist/tabs/tabs.d.ts +31 -0
  285. package/dist/tabs/tabs.js +66 -0
  286. package/dist/tabs/tabs.js.map +1 -0
  287. package/dist/templates/app-templates.d.ts +126 -0
  288. package/dist/templates/app-templates.js +153 -0
  289. package/dist/templates/app-templates.js.map +1 -0
  290. package/dist/templates/site-templates.d.ts +49 -0
  291. package/dist/templates/site-templates.js +110 -0
  292. package/dist/templates/site-templates.js.map +1 -0
  293. package/dist/toast/toast-store.d.ts +54 -0
  294. package/dist/toast/toast-store.js +49 -0
  295. package/dist/toast/toast-store.js.map +1 -0
  296. package/dist/toast/toaster.d.ts +15 -0
  297. package/dist/toast/toaster.js +124 -0
  298. package/dist/toast/toaster.js.map +1 -0
  299. package/dist/tooltip/tooltip.d.ts +29 -0
  300. package/dist/tooltip/tooltip.js +54 -0
  301. package/dist/tooltip/tooltip.js.map +1 -0
  302. package/package.json +88 -3
  303. package/styles.css +521 -0
  304. package/README.md +0 -3
@@ -0,0 +1,558 @@
1
+ "use client";
2
+ import { cx as e } from "../lib/cx.js";
3
+ import { Button as t } from "../button/button.js";
4
+ import { Skeleton as n } from "../skeleton/skeleton.js";
5
+ import { EmptyState as r } from "../empty-state/empty-state.js";
6
+ import { ErrorState as i } from "../error-state/error-state.js";
7
+ import { Glyph as a } from "../lib/glyphs.js";
8
+ import { Pagination as o } from "../pagination/pagination.js";
9
+ import { DropdownMenu as ee, DropdownMenuCheckboxItem as te, DropdownMenuContent as ne, DropdownMenuLabel as re, DropdownMenuRadioGroup as ie, DropdownMenuRadioItem as ae, DropdownMenuSeparator as oe, DropdownMenuTrigger as se } from "../menu/dropdown-menu.js";
10
+ import { Input as ce } from "../input/input.js";
11
+ import { NativeSelect as le } from "../select/select.js";
12
+ import { checkboxBox as s, focusRing as c } from "../lib/control-styles.js";
13
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
14
+ import { Fragment as ue, useEffect as de, useId as fe, useMemo as d, useRef as pe, useState as me } from "react";
15
+ import * as f from "@radix-ui/react-checkbox";
16
+ import { columnFilteringFeature as p, columnVisibilityFeature as he, createColumnHelper as ge, createFilteredRowModel as m, createPaginatedRowModel as h, createSortedRowModel as g, filterFn_includesString as _e, globalFilteringFeature as _, rowPaginationFeature as v, rowSelectionFeature as y, rowSortingFeature as b, sortFn_alphanumeric as ve, sortFn_basic as ye, sortFn_datetime as be, tableFeatures as x, useTable as xe } from "@tanstack/react-table";
17
+ import { useVirtualizer as Se } from "@tanstack/react-virtual";
18
+ //#region src/data-table/data-table.tsx
19
+ var Ce = x({
20
+ columnFilteringFeature: p,
21
+ globalFilteringFeature: _,
22
+ filteredRowModel: m(),
23
+ filterFns: { includesString: _e },
24
+ rowSortingFeature: b,
25
+ sortedRowModel: g(),
26
+ sortFns: {
27
+ alphanumeric: ve,
28
+ basic: ye,
29
+ datetime: be
30
+ },
31
+ rowPaginationFeature: v,
32
+ paginatedRowModel: h(),
33
+ rowSelectionFeature: y,
34
+ columnVisibilityFeature: he
35
+ }), we = {
36
+ search: "Search",
37
+ view: "View",
38
+ columns: "Columns",
39
+ density: "Density",
40
+ comfortable: "Comfortable",
41
+ compact: "Compact",
42
+ export: "Export CSV",
43
+ selectAll: "Select all rows on this page",
44
+ selectRow: "Select row",
45
+ selected: "{count} selected",
46
+ clear: "Clear selection",
47
+ rowsPerPage: "Rows per page",
48
+ range: "{from}–{to} of {total}",
49
+ actions: "Actions",
50
+ emptyTitle: "Nothing here yet",
51
+ noResultsTitle: "No results",
52
+ noResultsDescription: "Nothing matches “{query}”. Try another word.",
53
+ sortAscending: "Sort ascending",
54
+ sortDescending: "Sort descending",
55
+ results: "{count} results",
56
+ expand: "Show details for {row}",
57
+ collapse: "Hide details for {row}",
58
+ details: "Details"
59
+ }, Te = {
60
+ start: "text-left",
61
+ end: "text-right",
62
+ center: "text-center"
63
+ };
64
+ function S({ checked: t, onChange: n, label: r }) {
65
+ return /* @__PURE__ */ l(f.Root, {
66
+ checked: t,
67
+ onClick: (e) => {
68
+ e.stopPropagation(), n(e);
69
+ },
70
+ "aria-label": r,
71
+ className: e(s({ size: "sm" }), c),
72
+ children: /* @__PURE__ */ l(f.Indicator, { children: /* @__PURE__ */ l(a, {
73
+ name: t === "indeterminate" ? "minus" : "check",
74
+ size: 12,
75
+ strokeWidth: 3
76
+ }) })
77
+ });
78
+ }
79
+ function Ee({ open: t, controls: n, label: r, onToggle: i }) {
80
+ return /* @__PURE__ */ l("button", {
81
+ type: "button",
82
+ "aria-expanded": t,
83
+ "aria-controls": t ? n : void 0,
84
+ "aria-label": r,
85
+ onClick: i,
86
+ className: "-my-1 grid size-8 cursor-pointer place-items-center rounded-full border-0 bg-transparent text-fg-muted hover:bg-surface-muted hover:text-fg focus-visible:outline-3 focus-visible:outline-offset-1 focus-visible:outline-focus",
87
+ children: /* @__PURE__ */ l(a, {
88
+ name: "chevron-right",
89
+ size: 16,
90
+ className: e("transition-transform duration-150 motion-reduce:transition-none", t && "rotate-90")
91
+ })
92
+ });
93
+ }
94
+ var C = (e) => {
95
+ let t = e instanceof Date ? e.toISOString() : e == null ? "" : String(e);
96
+ return /[",\n]/.test(t) ? `"${t.replace(/"/g, "\"\"")}"` : t;
97
+ };
98
+ function w({ data: s, columns: c, getRowId: f, caption: p, showCaption: he, searchable: m = !0, searchPlaceholder: h, selectable: g, bulkActions: _e, rowActions: _, renderExpanded: v, getRowLabel: y, onRowClick: b, toolbar: ve, pageSize: ye = 25, pageSizeOptions: be = [
99
+ 10,
100
+ 25,
101
+ 50,
102
+ 100
103
+ ], virtualize: x, maxHeight: w = "36rem", loading: T, error: E, onRetry: D, empty: De, exportFileName: O, defaultDensity: Oe = "comfortable", mobileLayout: k = "cards", headerAppearance: ke = "muted", pagination: Ae = "pages", showCount: je, labels: Me, className: Ne }) {
104
+ let A = {
105
+ ...we,
106
+ ...Me
107
+ }, j = fe(), M = ke === "brand", N = M ? "bg-primary" : "bg-surface-muted", [P, Pe] = me(Oe), F = d(() => ge(), []), Fe = d(() => c.map((e) => e.accessor ? F.accessor((t) => e.accessor(t), {
108
+ id: e.id,
109
+ header: e.header,
110
+ enableSorting: e.sortable ?? !0,
111
+ enableHiding: e.hideable ?? !0,
112
+ enableGlobalFilter: e.searchable,
113
+ sortFn: "auto"
114
+ }) : F.display({
115
+ id: e.id,
116
+ header: e.header,
117
+ enableSorting: !1,
118
+ enableHiding: e.hideable ?? !0
119
+ })), [c, F]), Ie = d(() => Object.fromEntries(c.filter((e) => e.defaultHidden).map((e) => [e.id, !1])), [c]), I = xe({
120
+ features: Ce,
121
+ columns: Fe,
122
+ data: s,
123
+ getRowId: (e) => f(e),
124
+ globalFilterFn: "includesString",
125
+ getColumnCanGlobalFilter: (e) => {
126
+ let t = c.find((t) => t.id === e.id);
127
+ return !!t?.accessor && t.searchable !== !1;
128
+ },
129
+ enableSortingRemoval: !0,
130
+ sortDescFirst: !1,
131
+ initialState: {
132
+ pagination: {
133
+ pageIndex: 0,
134
+ pageSize: x ? Math.max(s.length, 1) : ye
135
+ },
136
+ columnVisibility: Ie
137
+ }
138
+ });
139
+ de(() => {
140
+ x && I.setPageSize(Math.max(s.length, 1));
141
+ }, [
142
+ x,
143
+ s.length,
144
+ I
145
+ ]);
146
+ let L = (e) => c.find((t) => t.id === e), R = (e) => {
147
+ if (y) return y(e.original);
148
+ let t = c[0]?.accessor?.(e.original);
149
+ return t == null || t instanceof Date ? e.id : String(t);
150
+ }, z = I.state.globalFilter ?? "", B = I.getRowModel().rows, V = I.getFilteredRowModel().rows.length, { pageIndex: H, pageSize: U } = I.state.pagination, W = g ? I.getSelectedRowModel().rows.map((e) => e.original) : [], G = I.getVisibleLeafColumns(), K = !!v && !x, [q, Le] = me(() => /* @__PURE__ */ new Set()), Re = (e) => Le((t) => {
151
+ let n = new Set(t);
152
+ return n.has(e) ? n.delete(e) : n.add(e), n;
153
+ }), J = G.length + +!!g + +!!_ + +!!K, Y = P === "compact" ? "px-3 py-1.5" : "px-4 py-3", ze = () => {
154
+ let e = G.map((e) => L(e.id)).filter((e) => e.accessor), t = W.length ? W : I.getFilteredRowModel().rows.map((e) => e.original), n = [e.map((e) => C(e.header)).join(","), ...t.map((t) => e.map((e) => C(e.accessor(t))).join(","))], r = new Blob([`${n.join("\n")}`], { type: "text/csv;charset=utf-8" }), i = URL.createObjectURL(r), a = document.createElement("a");
155
+ a.href = i, a.download = `${O}.csv`, a.click(), URL.revokeObjectURL(i);
156
+ }, X = (e, t) => {
157
+ let n = L(t);
158
+ if (n.cell) return n.cell(e.original);
159
+ let r = n.accessor?.(e.original);
160
+ return r instanceof Date ? r.toLocaleDateString() : r ?? "—";
161
+ }, Be = pe(null), Z = Se({
162
+ count: x ? B.length : 0,
163
+ getScrollElement: () => Be.current,
164
+ estimateSize: () => P === "compact" ? 37 : 49,
165
+ overscan: 8
166
+ }), Q = x ? Z.getVirtualItems() : [], Ve = x ? Q.map((e) => B[e.index]) : B, He = x && Q.length ? Q[0].start : 0, Ue = x && Q.length ? Z.getTotalSize() - Q[Q.length - 1].end : 0, We = z && V === 0 ? /* @__PURE__ */ l(r, {
167
+ size: "sm",
168
+ mascot: "lost",
169
+ headingLevel: 3,
170
+ title: A.noResultsTitle,
171
+ description: A.noResultsDescription.replace("{query}", z)
172
+ }) : De ?? /* @__PURE__ */ l(r, {
173
+ size: "sm",
174
+ headingLevel: 3,
175
+ title: A.emptyTitle
176
+ }), $ = E ? "error" : T ? "loading" : B.length === 0 ? "empty" : "ready", Ge = k === "cards" ? "hidden md:block" : "block";
177
+ return /* @__PURE__ */ u("div", {
178
+ className: e("grid gap-3 font-sans", Ne),
179
+ children: [
180
+ W.length > 0 ? /* @__PURE__ */ u("div", {
181
+ role: "region",
182
+ "aria-label": A.selected.replace("{count}", String(W.length)),
183
+ className: "flex min-h-11 flex-wrap items-center gap-3 rounded-md bg-primary px-4 py-2 text-on-primary",
184
+ children: [
185
+ /* @__PURE__ */ l("span", {
186
+ className: "text-sm font-semibold",
187
+ children: A.selected.replace("{count}", String(W.length))
188
+ }),
189
+ /* @__PURE__ */ l("div", {
190
+ className: "flex flex-1 flex-wrap items-center gap-2 [&_button]:text-on-primary",
191
+ children: _e?.(W, () => I.resetRowSelection(!0))
192
+ }),
193
+ /* @__PURE__ */ l("button", {
194
+ type: "button",
195
+ onClick: () => I.resetRowSelection(!0),
196
+ className: "cursor-pointer rounded-full border-0 bg-transparent px-3 py-1.5 text-sm font-semibold text-on-primary underline-offset-4 hover:underline focus-visible:outline-3 focus-visible:outline-offset-2 focus-visible:outline-white",
197
+ children: A.clear
198
+ })
199
+ ]
200
+ }) : /* @__PURE__ */ u("div", {
201
+ className: "flex flex-wrap items-center gap-2",
202
+ children: [
203
+ m && /* @__PURE__ */ l(ce, {
204
+ type: "search",
205
+ size: "sm",
206
+ iconStart: "search",
207
+ "aria-label": A.search,
208
+ placeholder: h ?? `${A.search}…`,
209
+ value: z,
210
+ onChange: (e) => I.setGlobalFilter(e.target.value),
211
+ className: "w-full sm:w-72"
212
+ }),
213
+ ve,
214
+ je && /* @__PURE__ */ l("span", {
215
+ "aria-live": "polite",
216
+ className: "text-sm text-fg-muted tabular-nums",
217
+ children: A.results.replace("{count}", String(V))
218
+ }),
219
+ /* @__PURE__ */ u("div", {
220
+ className: "ml-auto flex items-center gap-2",
221
+ children: [O && /* @__PURE__ */ l(t, {
222
+ size: "sm",
223
+ variant: "secondary",
224
+ iconStart: "download",
225
+ onClick: ze,
226
+ children: A.export
227
+ }), /* @__PURE__ */ u(ee, { children: [/* @__PURE__ */ l(se, {
228
+ asChild: !0,
229
+ children: /* @__PURE__ */ l(t, {
230
+ size: "sm",
231
+ variant: "secondary",
232
+ children: /* @__PURE__ */ u("span", {
233
+ className: "inline-flex items-center gap-1.5",
234
+ children: [/* @__PURE__ */ l(a, {
235
+ name: "columns",
236
+ size: 16
237
+ }), A.view]
238
+ })
239
+ })
240
+ }), /* @__PURE__ */ u(ne, {
241
+ align: "end",
242
+ children: [
243
+ /* @__PURE__ */ l(re, { children: A.columns }),
244
+ I.getAllLeafColumns().filter((e) => e.getCanHide()).map((e) => /* @__PURE__ */ l(te, {
245
+ checked: e.getIsVisible(),
246
+ onCheckedChange: (t) => e.toggleVisibility(t === !0),
247
+ onSelect: (e) => e.preventDefault(),
248
+ children: L(e.id).header
249
+ }, e.id)),
250
+ /* @__PURE__ */ l(oe, {}),
251
+ /* @__PURE__ */ l(re, { children: A.density }),
252
+ /* @__PURE__ */ u(ie, {
253
+ value: P,
254
+ onValueChange: (e) => Pe(e),
255
+ children: [/* @__PURE__ */ l(ae, {
256
+ value: "comfortable",
257
+ children: A.comfortable
258
+ }), /* @__PURE__ */ l(ae, {
259
+ value: "compact",
260
+ children: A.compact
261
+ })]
262
+ })
263
+ ]
264
+ })] })]
265
+ })
266
+ ]
267
+ }),
268
+ he && /* @__PURE__ */ l("h3", {
269
+ className: "m-0 font-display text-lg font-bold",
270
+ children: p
271
+ }),
272
+ /* @__PURE__ */ l("div", {
273
+ ref: Be,
274
+ className: e("relative overflow-auto rounded-md border border-border bg-surface", Ge),
275
+ style: x ? { maxHeight: w } : void 0,
276
+ tabIndex: x ? 0 : void 0,
277
+ role: x ? "region" : void 0,
278
+ "aria-label": x ? p : void 0,
279
+ children: /* @__PURE__ */ u("table", {
280
+ className: "w-full border-collapse text-sm",
281
+ "aria-busy": T || void 0,
282
+ "aria-rowcount": x ? B.length + 1 : void 0,
283
+ children: [
284
+ /* @__PURE__ */ l("caption", {
285
+ className: "sr-only",
286
+ children: p
287
+ }),
288
+ /* @__PURE__ */ l("thead", {
289
+ className: e("sticky top-0 z-10", N),
290
+ children: I.getHeaderGroups().map((t) => /* @__PURE__ */ u("tr", { children: [
291
+ K && /* @__PURE__ */ l("th", {
292
+ scope: "col",
293
+ className: e("w-10 border-b border-border", Y),
294
+ children: /* @__PURE__ */ l("span", {
295
+ className: "sr-only",
296
+ children: A.details
297
+ })
298
+ }),
299
+ g && /* @__PURE__ */ l("th", {
300
+ scope: "col",
301
+ className: e("w-10", Y, k === "scroll" && e("sticky left-0 z-10", N)),
302
+ children: /* @__PURE__ */ l(S, {
303
+ label: A.selectAll,
304
+ checked: I.getIsAllPageRowsSelected() ? !0 : I.getIsSomePageRowsSelected() ? "indeterminate" : !1,
305
+ onChange: () => I.toggleAllPageRowsSelected()
306
+ })
307
+ }),
308
+ t.headers.map((t, n) => {
309
+ let r = L(t.column.id), i = t.column.getIsSorted(), o = t.column.getCanSort();
310
+ return /* @__PURE__ */ l("th", {
311
+ scope: "col",
312
+ "aria-sort": i === "asc" ? "ascending" : i === "desc" ? "descending" : void 0,
313
+ style: { width: r.width },
314
+ className: e(Y, "border-b border-border font-semibold whitespace-nowrap", M ? "text-xs tracking-wider text-on-primary uppercase" : "text-fg-muted", Te[r.align ?? "start"], k === "scroll" && n === 0 && !g && e("sticky left-0 z-10", N)),
315
+ children: o ? /* @__PURE__ */ u("button", {
316
+ type: "button",
317
+ onClick: t.column.getToggleSortingHandler(),
318
+ className: e("inline-flex cursor-pointer items-center gap-1 rounded-xs border-0 bg-transparent p-0 font-[inherit] text-[length:inherit] font-semibold tracking-[inherit] focus-visible:outline-3 focus-visible:outline-offset-2", M ? "text-on-primary uppercase underline-offset-4 hover:underline focus-visible:outline-white" : e("hover:text-fg focus-visible:outline-focus", i ? "text-fg" : "text-fg-muted"), M && i && "underline", r.align === "end" && "flex-row-reverse"),
319
+ children: [r.header, /* @__PURE__ */ l(a, {
320
+ name: i === "asc" ? "arrow-up" : i === "desc" ? "arrow-down" : "sort",
321
+ size: 14,
322
+ className: i ? M ? "" : "text-link" : M ? "opacity-60" : "opacity-40"
323
+ })]
324
+ }) : r.header
325
+ }, t.id);
326
+ }),
327
+ _ && /* @__PURE__ */ l("th", {
328
+ scope: "col",
329
+ className: e(Y, "w-12 border-b border-border"),
330
+ children: /* @__PURE__ */ l("span", {
331
+ className: "sr-only",
332
+ children: A.actions
333
+ })
334
+ })
335
+ ] }, t.id))
336
+ }),
337
+ /* @__PURE__ */ u("tbody", { children: [
338
+ $ === "loading" && Array.from({ length: Math.min(U, 6) }, (e, t) => /* @__PURE__ */ l("tr", {
339
+ className: "border-b border-border last:border-b-0",
340
+ children: Array.from({ length: J }, (e, t) => /* @__PURE__ */ l("td", {
341
+ className: Y,
342
+ children: /* @__PURE__ */ l(n, { className: "h-3.5 rounded-full" })
343
+ }, t))
344
+ }, t)),
345
+ $ === "error" && /* @__PURE__ */ l("tr", { children: /* @__PURE__ */ l("td", {
346
+ colSpan: J,
347
+ children: /* @__PURE__ */ l(i, {
348
+ size: "sm",
349
+ headingLevel: 3,
350
+ description: E,
351
+ onRetry: D
352
+ })
353
+ }) }),
354
+ $ === "empty" && /* @__PURE__ */ l("tr", { children: /* @__PURE__ */ l("td", {
355
+ colSpan: J,
356
+ children: We
357
+ }) }),
358
+ $ === "ready" && He > 0 && /* @__PURE__ */ l("tr", {
359
+ "aria-hidden": "true",
360
+ children: /* @__PURE__ */ l("td", {
361
+ colSpan: J,
362
+ style: {
363
+ height: He,
364
+ padding: 0
365
+ }
366
+ })
367
+ }),
368
+ $ === "ready" && Ve.map((t) => {
369
+ let n = g && t.getIsSelected(), r = K && q.has(t.id), i = `${j}-x-${t.id}`;
370
+ return /* @__PURE__ */ u(ue, { children: [/* @__PURE__ */ u("tr", {
371
+ "aria-selected": g ? n : void 0,
372
+ onClick: b ? () => b(t.original) : void 0,
373
+ className: e("border-b border-border transition-colors last:border-b-0 hover:bg-surface-muted/60", n && "bg-info-surface/50 hover:bg-info-surface/70", b && "cursor-pointer", r && "border-b-0", r && !n && "bg-surface-muted/40"),
374
+ children: [
375
+ K && /* @__PURE__ */ l("td", {
376
+ className: e(Y, "w-10 pr-0"),
377
+ onClick: (e) => e.stopPropagation(),
378
+ children: /* @__PURE__ */ l(Ee, {
379
+ open: r,
380
+ controls: i,
381
+ label: (r ? A.collapse : A.expand).replace("{row}", R(t)),
382
+ onToggle: () => Re(t.id)
383
+ })
384
+ }),
385
+ g && /* @__PURE__ */ l("td", {
386
+ className: e(Y, k === "scroll" && "sticky left-0 bg-surface"),
387
+ children: /* @__PURE__ */ l(S, {
388
+ label: `${A.selectRow} ${R(t)}`,
389
+ checked: !!n,
390
+ onChange: t.getToggleSelectedHandler()
391
+ })
392
+ }),
393
+ t.getVisibleCells().map((n, r) => {
394
+ let i = L(n.column.id);
395
+ return /* @__PURE__ */ l("td", {
396
+ className: e(Y, "text-fg", Te[i.align ?? "start"], i.align === "end" && "tabular-nums", k === "scroll" && r === 0 && !g && "sticky left-0 bg-surface"),
397
+ children: X(t, n.column.id)
398
+ }, n.id);
399
+ }),
400
+ _ && /* @__PURE__ */ l("td", {
401
+ className: e(Y, "text-right"),
402
+ onClick: (e) => e.stopPropagation(),
403
+ children: _(t.original)
404
+ })
405
+ ]
406
+ }), r && /* @__PURE__ */ l("tr", {
407
+ id: i,
408
+ className: "border-b border-border bg-surface-muted/40 last:border-b-0",
409
+ children: /* @__PURE__ */ l("td", {
410
+ colSpan: J,
411
+ className: e(Y, "pt-0"),
412
+ children: /* @__PURE__ */ l("div", {
413
+ className: "rounded-md border border-border bg-surface p-4",
414
+ children: v(t.original)
415
+ })
416
+ })
417
+ })] }, t.id);
418
+ }),
419
+ $ === "ready" && Ue > 0 && /* @__PURE__ */ l("tr", {
420
+ "aria-hidden": "true",
421
+ children: /* @__PURE__ */ l("td", {
422
+ colSpan: J,
423
+ style: {
424
+ height: Ue,
425
+ padding: 0
426
+ }
427
+ })
428
+ })
429
+ ] })
430
+ ]
431
+ })
432
+ }),
433
+ k === "cards" && /* @__PURE__ */ u("div", {
434
+ className: "grid gap-2 md:hidden",
435
+ children: [
436
+ $ === "loading" && [
437
+ 0,
438
+ 1,
439
+ 2
440
+ ].map((e) => /* @__PURE__ */ l(n, { className: "h-24" }, e)),
441
+ $ === "error" && /* @__PURE__ */ l(i, {
442
+ size: "sm",
443
+ headingLevel: 3,
444
+ description: E,
445
+ onRetry: D
446
+ }),
447
+ $ === "empty" && We,
448
+ $ === "ready" && /* @__PURE__ */ l("ul", {
449
+ "aria-label": p,
450
+ className: "m-0 grid list-none gap-2 p-0",
451
+ children: B.map((t) => {
452
+ let n = G.map((e) => L(e.id)), r = n.find((e) => e.mobile === "title") ?? n[0], i = n.filter((e) => e.mobile === "meta"), o = n.filter((e) => e !== r && (e.mobile ?? "field") === "field");
453
+ return /* @__PURE__ */ u("li", {
454
+ onClick: b ? () => b(t.original) : void 0,
455
+ className: e("grid gap-2 rounded-md border border-border bg-surface p-4", g && t.getIsSelected() && "border-primary bg-info-surface/50", b && "cursor-pointer"),
456
+ children: [
457
+ /* @__PURE__ */ u("div", {
458
+ className: "flex items-start gap-3",
459
+ children: [
460
+ g && /* @__PURE__ */ l("span", {
461
+ className: "pt-0.5",
462
+ children: /* @__PURE__ */ l(S, {
463
+ label: `${A.selectRow} ${R(t)}`,
464
+ checked: t.getIsSelected(),
465
+ onChange: t.getToggleSelectedHandler()
466
+ })
467
+ }),
468
+ /* @__PURE__ */ u("div", {
469
+ className: "min-w-0 flex-1",
470
+ children: [/* @__PURE__ */ l("div", {
471
+ className: "font-semibold text-fg",
472
+ children: X(t, r.id)
473
+ }), i.length > 0 && /* @__PURE__ */ l("div", {
474
+ className: "mt-0.5 flex flex-wrap gap-x-2 text-sm text-fg-muted",
475
+ children: i.map((e) => /* @__PURE__ */ l("span", { children: X(t, e.id) }, e.id))
476
+ })]
477
+ }),
478
+ _ && /* @__PURE__ */ l("div", {
479
+ onClick: (e) => e.stopPropagation(),
480
+ children: _(t.original)
481
+ })
482
+ ]
483
+ }),
484
+ o.length > 0 && /* @__PURE__ */ l("dl", {
485
+ className: "m-0 grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm",
486
+ children: o.map((e) => /* @__PURE__ */ u("div", {
487
+ className: "contents",
488
+ children: [/* @__PURE__ */ l("dt", {
489
+ className: "text-fg-muted",
490
+ children: e.header
491
+ }), /* @__PURE__ */ l("dd", {
492
+ className: "m-0 min-w-0 text-right text-fg",
493
+ children: X(t, e.id)
494
+ })]
495
+ }, e.id))
496
+ }),
497
+ K && /* @__PURE__ */ u("div", {
498
+ onClick: (e) => e.stopPropagation(),
499
+ className: "grid gap-2",
500
+ children: [/* @__PURE__ */ u("button", {
501
+ type: "button",
502
+ "aria-expanded": q.has(t.id),
503
+ "aria-controls": q.has(t.id) ? `${j}-m-${t.id}` : void 0,
504
+ onClick: () => Re(t.id),
505
+ className: "inline-flex w-fit cursor-pointer items-center gap-1.5 rounded-xs border-0 bg-transparent p-0 font-sans text-sm font-semibold text-link focus-visible:outline-3 focus-visible:outline-offset-2 focus-visible:outline-focus",
506
+ children: [A.details, /* @__PURE__ */ l(a, {
507
+ name: "chevron-down",
508
+ size: 14,
509
+ className: e("transition-transform motion-reduce:transition-none", q.has(t.id) && "rotate-180")
510
+ })]
511
+ }), q.has(t.id) && /* @__PURE__ */ l("div", {
512
+ id: `${j}-m-${t.id}`,
513
+ className: "rounded-sm bg-surface-muted p-3 text-sm",
514
+ children: v(t.original)
515
+ })]
516
+ })
517
+ ]
518
+ }, t.id);
519
+ })
520
+ })
521
+ ]
522
+ }),
523
+ !x && $ === "ready" && V > 0 && /* @__PURE__ */ u("div", {
524
+ className: "flex flex-wrap items-center justify-between gap-3 text-sm text-fg-muted",
525
+ children: [
526
+ /* @__PURE__ */ l("span", {
527
+ "aria-live": "polite",
528
+ children: A.range.replace("{from}", String(H * U + 1)).replace("{to}", String(Math.min(V, (H + 1) * U))).replace("{total}", String(V))
529
+ }),
530
+ /* @__PURE__ */ u("label", {
531
+ className: "hidden items-center gap-2 sm:flex",
532
+ children: [A.rowsPerPage, /* @__PURE__ */ l(le, {
533
+ size: "sm",
534
+ value: U,
535
+ onChange: (e) => I.setPageSize(Number(e.target.value)),
536
+ wrapperClassName: "w-20",
537
+ children: be.map((e) => /* @__PURE__ */ l("option", {
538
+ value: e,
539
+ children: e
540
+ }, e))
541
+ })]
542
+ }),
543
+ /* @__PURE__ */ l(o, {
544
+ variant: Ae,
545
+ page: H + 1,
546
+ pageCount: I.getPageCount(),
547
+ onPageChange: (e) => I.setPageIndex(e - 1),
548
+ className: Ae === "compact" ? void 0 : "w-full sm:w-auto"
549
+ })
550
+ ]
551
+ })
552
+ ]
553
+ });
554
+ }
555
+ //#endregion
556
+ export { w as DataTable };
557
+
558
+ //# sourceMappingURL=data-table.js.map