themelia-react-ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1338) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +21 -0
  3. package/README.md +249 -2
  4. package/THIRD_PARTY_NOTICES.md +65 -0
  5. package/dist/accordion-BRWh3BM1.js +205 -0
  6. package/dist/accordion-BRWh3BM1.js.map +1 -0
  7. package/dist/action-menu-Cx3SdfbN.js +265 -0
  8. package/dist/action-menu-Cx3SdfbN.js.map +1 -0
  9. package/dist/action-presentation.js +11 -0
  10. package/dist/action-presentation.js.map +1 -0
  11. package/dist/affordance-geometry.generated-DXl-Zb3Z.js +23 -0
  12. package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +1 -0
  13. package/dist/ai-artifact-DkOArd3-.js +1121 -0
  14. package/dist/ai-artifact-DkOArd3-.js.map +1 -0
  15. package/dist/anchored-positioning-DPnKTvNs.js +6 -0
  16. package/dist/anchored-positioning-DPnKTvNs.js.map +1 -0
  17. package/dist/app-shell-BH_bGcE2.js +235 -0
  18. package/dist/app-shell-BH_bGcE2.js.map +1 -0
  19. package/dist/attachment-DsLgNHXt.js +244 -0
  20. package/dist/attachment-DsLgNHXt.js.map +1 -0
  21. package/dist/auth-BDB1V_2q.js +704 -0
  22. package/dist/auth-BDB1V_2q.js.map +1 -0
  23. package/dist/avatar-CsnWaYmt.js +173 -0
  24. package/dist/avatar-CsnWaYmt.js.map +1 -0
  25. package/dist/badge-BZXZT9wd.js +92 -0
  26. package/dist/badge-BZXZT9wd.js.map +1 -0
  27. package/dist/base/accordion.js +3 -0
  28. package/dist/base/action-menu.js +3 -0
  29. package/dist/base/attachment.js +3 -0
  30. package/dist/base/avatar.js +3 -0
  31. package/dist/base/badge.js +3 -0
  32. package/dist/base/buttons.js +3 -0
  33. package/dist/base/cards.js +4 -0
  34. package/dist/base/carousel.js +251 -0
  35. package/dist/base/carousel.js.map +1 -0
  36. package/dist/base/cascader.js +361 -0
  37. package/dist/base/cascader.js.map +1 -0
  38. package/dist/base/chart.js +3 -0
  39. package/dist/base/choice-inputs.js +3 -0
  40. package/dist/base/code-block.js +3 -0
  41. package/dist/base/combobox.js +3 -0
  42. package/dist/base/command.js +3 -0
  43. package/dist/base/copyable.js +3 -0
  44. package/dist/base/date-pickers.js +4 -0
  45. package/dist/base/display.js +8 -0
  46. package/dist/base/feedback.js +4 -0
  47. package/dist/base/forms-numeric.js +3 -0
  48. package/dist/base/forms.js +4 -0
  49. package/dist/base/item.js +3 -0
  50. package/dist/base/media-gallery.js +3 -0
  51. package/dist/base/navigation.js +8 -0
  52. package/dist/base/popover-menu.js +3 -0
  53. package/dist/base/popover.js +3 -0
  54. package/dist/base/qr-code.js +63 -0
  55. package/dist/base/qr-code.js.map +1 -0
  56. package/dist/base/repeaters.js +620 -0
  57. package/dist/base/repeaters.js.map +1 -0
  58. package/dist/base/sheet.js +3 -0
  59. package/dist/base/sidebar.js +3 -0
  60. package/dist/base/signature-pad.js +364 -0
  61. package/dist/base/signature-pad.js.map +1 -0
  62. package/dist/base/skeleton.js +3 -0
  63. package/dist/base/spinner.js +3 -0
  64. package/dist/base/structure.js +3 -0
  65. package/dist/base/table.js +3 -0
  66. package/dist/base/text-inputs.js +4 -0
  67. package/dist/base/toaster.js +102 -0
  68. package/dist/base/toaster.js.map +1 -0
  69. package/dist/base/tree.js +3 -0
  70. package/dist/base/upload-queue.js +3 -0
  71. package/dist/base/upload.js +5 -0
  72. package/dist/base/value-inputs.js +3 -0
  73. package/dist/blocks/admin.js +478 -0
  74. package/dist/blocks/admin.js.map +1 -0
  75. package/dist/blocks/ai.js +1021 -0
  76. package/dist/blocks/ai.js.map +1 -0
  77. package/dist/blocks/analytics.js +1499 -0
  78. package/dist/blocks/analytics.js.map +1 -0
  79. package/dist/blocks/collaboration.js +3 -0
  80. package/dist/blocks/commerce/receipt.js +3 -0
  81. package/dist/blocks/commerce.js +3393 -0
  82. package/dist/blocks/commerce.js.map +1 -0
  83. package/dist/blocks/data-display.js +3 -0
  84. package/dist/blocks/onboarding.js +128 -0
  85. package/dist/blocks/onboarding.js.map +1 -0
  86. package/dist/blocks/timelines.js +3 -0
  87. package/dist/breadcrumbs-DdQ_I5ra.js +127 -0
  88. package/dist/breadcrumbs-DdQ_I5ra.js.map +1 -0
  89. package/dist/button-BS6l5JUw.js +47 -0
  90. package/dist/button-BS6l5JUw.js.map +1 -0
  91. package/dist/buttons-Co6GavvM.js +674 -0
  92. package/dist/buttons-Co6GavvM.js.map +1 -0
  93. package/dist/cards-BMB0laLG.js +66 -0
  94. package/dist/cards-BMB0laLG.js.map +1 -0
  95. package/dist/chart-DVfcwQu6.js +149 -0
  96. package/dist/chart-DVfcwQu6.js.map +1 -0
  97. package/dist/choice-inputs-CavA-SGV.js +644 -0
  98. package/dist/choice-inputs-CavA-SGV.js.map +1 -0
  99. package/dist/code-block-DIlqzoiD.js +183 -0
  100. package/dist/code-block-DIlqzoiD.js.map +1 -0
  101. package/dist/collapsible-DsnktFNv.js +81 -0
  102. package/dist/collapsible-DsnktFNv.js.map +1 -0
  103. package/dist/collection-content-C4fthJV_.js +53 -0
  104. package/dist/collection-content-C4fthJV_.js.map +1 -0
  105. package/dist/combobox-CHD750do.js +850 -0
  106. package/dist/combobox-CHD750do.js.map +1 -0
  107. package/dist/combobox-HDftpzxt.js +273 -0
  108. package/dist/combobox-HDftpzxt.js.map +1 -0
  109. package/dist/command-D0kWBZfd.js +421 -0
  110. package/dist/command-D0kWBZfd.js.map +1 -0
  111. package/dist/comments-CvYeglMS.js +1132 -0
  112. package/dist/comments-CvYeglMS.js.map +1 -0
  113. package/dist/component-vocabulary.js +26 -0
  114. package/dist/component-vocabulary.js.map +1 -0
  115. package/dist/components/base/accordion/accordion-variants.d.ts +36 -0
  116. package/dist/components/base/accordion/accordion.d.ts +20 -0
  117. package/dist/components/base/accordion/accordion.strings.d.ts +15 -0
  118. package/dist/components/base/accordion/accordion.types.d.ts +74 -0
  119. package/dist/components/base/accordion/index.d.ts +4 -0
  120. package/dist/components/base/accordion/smart-accordion.d.ts +7 -0
  121. package/dist/components/base/action-menu/action-menu.d.ts +147 -0
  122. package/dist/components/base/action-menu/action-menu.strings.d.ts +4 -0
  123. package/dist/components/base/action-menu/index.d.ts +11 -0
  124. package/dist/components/base/attachment/attachment.d.ts +17 -0
  125. package/dist/components/base/attachment/attachment.types.d.ts +49 -0
  126. package/dist/components/base/attachment/index.d.ts +2 -0
  127. package/dist/components/base/avatar/avatar.d.ts +24 -0
  128. package/dist/components/base/avatar/index.d.ts +14 -0
  129. package/dist/components/base/avatar/stacked-avatars.d.ts +39 -0
  130. package/dist/components/base/badge/badge.d.ts +22 -0
  131. package/dist/components/base/badge/badge.recipes.d.ts +20 -0
  132. package/dist/components/base/badge/index.d.ts +2 -0
  133. package/dist/components/base/buttons/base-button.d.ts +24 -0
  134. package/dist/components/base/buttons/button-group.d.ts +28 -0
  135. package/dist/components/base/buttons/button-group.recipes.d.ts +6 -0
  136. package/dist/components/base/buttons/button.d.ts +47 -0
  137. package/dist/components/base/buttons/button.recipes.d.ts +23 -0
  138. package/dist/components/base/buttons/button.variants.d.ts +8 -0
  139. package/dist/components/base/buttons/index.d.ts +7 -0
  140. package/dist/components/base/buttons/loader-button.d.ts +40 -0
  141. package/dist/components/base/buttons/text-button.d.ts +19 -0
  142. package/dist/components/base/buttons/tooltip-button.d.ts +7 -0
  143. package/dist/components/base/cards/card-actions.d.ts +41 -0
  144. package/dist/components/base/cards/card.recipes.d.ts +28 -0
  145. package/dist/components/base/cards/index.d.ts +5 -0
  146. package/dist/components/base/cards/partials/card-primitives.d.ts +21 -0
  147. package/dist/components/base/cards/partials/has-renderable-content.d.ts +8 -0
  148. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +8 -0
  149. package/dist/components/base/cards/partials/smart-card-alert.d.ts +20 -0
  150. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +33 -0
  151. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +16 -0
  152. package/dist/components/base/cards/smart-card.d.ts +9 -0
  153. package/dist/components/base/cards/smart-card.strings.d.ts +18 -0
  154. package/dist/components/base/cards/smart-card.tokens.d.ts +44 -0
  155. package/dist/components/base/cards/smart-card.types.d.ts +144 -0
  156. package/dist/components/base/carousel/carousel.d.ts +105 -0
  157. package/dist/components/base/carousel/carousel.strings.d.ts +6 -0
  158. package/dist/components/base/carousel/index.d.ts +2 -0
  159. package/dist/components/base/cascader/cascader.d.ts +2 -0
  160. package/dist/components/base/cascader/cascader.types.d.ts +57 -0
  161. package/dist/components/base/cascader/index.d.ts +2 -0
  162. package/dist/components/base/chart/chart.d.ts +99 -0
  163. package/dist/components/base/chart/index.d.ts +9 -0
  164. package/dist/components/base/choice-inputs/card-checkbox-group.d.ts +27 -0
  165. package/dist/components/base/choice-inputs/card-radio-group.d.ts +19 -0
  166. package/dist/components/base/choice-inputs/checkbox.d.ts +17 -0
  167. package/dist/components/base/choice-inputs/choice-types.d.ts +57 -0
  168. package/dist/components/base/choice-inputs/index.d.ts +28 -0
  169. package/dist/components/base/choice-inputs/list-radio-group.d.ts +13 -0
  170. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +27 -0
  171. package/dist/components/base/choice-inputs/select-popup.d.ts +26 -0
  172. package/dist/components/base/choice-inputs/select.d.ts +94 -0
  173. package/dist/components/base/choice-inputs/switch-card.d.ts +36 -0
  174. package/dist/components/base/choice-inputs/switch.d.ts +38 -0
  175. package/dist/components/base/choice-inputs/toggle-field.d.ts +41 -0
  176. package/dist/components/base/code-block/code-block.d.ts +3 -0
  177. package/dist/components/base/code-block/code-block.types.d.ts +46 -0
  178. package/dist/components/base/code-block/index.d.ts +2 -0
  179. package/dist/components/base/code-block/use-code-copy.d.ts +6 -0
  180. package/dist/components/base/combobox/index.d.ts +27 -0
  181. package/dist/components/base/command/command.d.ts +73 -0
  182. package/dist/components/base/command/index.d.ts +1 -0
  183. package/dist/components/base/copyable/copyable.d.ts +36 -0
  184. package/dist/components/base/copyable/index.d.ts +1 -0
  185. package/dist/components/base/date-pickers/date-picker-footer.d.ts +14 -0
  186. package/dist/components/base/date-pickers/date-picker-header.d.ts +10 -0
  187. package/dist/components/base/date-pickers/date-picker-helpers.d.ts +87 -0
  188. package/dist/components/base/date-pickers/date-picker-internals.d.ts +10 -0
  189. package/dist/components/base/date-pickers/date-picker-multiple.d.ts +20 -0
  190. package/dist/components/base/date-pickers/date-picker-range.d.ts +15 -0
  191. package/dist/components/base/date-pickers/date-picker-single.d.ts +15 -0
  192. package/dist/components/base/date-pickers/date-picker.d.ts +3 -0
  193. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +18 -0
  194. package/dist/components/base/date-pickers/date-pickers.strings.d.ts +14 -0
  195. package/dist/components/base/date-pickers/datepicker.types.d.ts +285 -0
  196. package/dist/components/base/date-pickers/index.d.ts +7 -0
  197. package/dist/components/base/date-pickers/month-year-picker.d.ts +4 -0
  198. package/dist/components/base/date-pickers/time-picker.d.ts +70 -0
  199. package/dist/components/base/display/alert-dialog.d.ts +25 -0
  200. package/dist/components/base/display/boolean-indicator.d.ts +25 -0
  201. package/dist/components/base/display/collapsible.d.ts +21 -0
  202. package/dist/components/base/display/content-block.d.ts +73 -0
  203. package/dist/components/base/display/content-block.strings.d.ts +5 -0
  204. package/dist/components/base/display/date-block.d.ts +70 -0
  205. package/dist/components/base/display/dialog.d.ts +35 -0
  206. package/dist/components/base/display/icon-badge/icon-badge.d.ts +45 -0
  207. package/dist/components/base/display/icon-badge/index.d.ts +1 -0
  208. package/dist/components/base/display/icon-size.d.ts +5 -0
  209. package/dist/components/base/display/index.d.ts +31 -0
  210. package/dist/components/base/display/placeholder-pattern.d.ts +7 -0
  211. package/dist/components/base/display/scroll-area.d.ts +12 -0
  212. package/dist/components/base/display/separator.d.ts +10 -0
  213. package/dist/components/base/display/surface-title.d.ts +10 -0
  214. package/dist/components/base/display/tooltip.d.ts +28 -0
  215. package/dist/components/base/display/visually-hidden.d.ts +14 -0
  216. package/dist/components/base/feedback/alert.d.ts +49 -0
  217. package/dist/components/base/feedback/empty.d.ts +48 -0
  218. package/dist/components/base/feedback/index.d.ts +27 -0
  219. package/dist/components/base/feedback/progress.d.ts +81 -0
  220. package/dist/components/base/feedback/progress.strings.d.ts +5 -0
  221. package/dist/components/base/feedback/state-display.d.ts +39 -0
  222. package/dist/components/base/forms/controlled-form-field.d.ts +32 -0
  223. package/dist/components/base/forms/controlled-form-field.strings.d.ts +7 -0
  224. package/dist/components/base/forms/form-field.d.ts +38 -0
  225. package/dist/components/base/forms/form-sizing.d.ts +86 -0
  226. package/dist/components/base/forms/index.d.ts +4 -0
  227. package/dist/components/base/forms/operation-password-form.d.ts +16 -0
  228. package/dist/components/base/forms/workflow.d.ts +68 -0
  229. package/dist/components/base/forms-numeric/coordinates-input.d.ts +47 -0
  230. package/dist/components/base/forms-numeric/currency-input.d.ts +44 -0
  231. package/dist/components/base/forms-numeric/decimal-input.d.ts +53 -0
  232. package/dist/components/base/forms-numeric/dimensions-input.d.ts +79 -0
  233. package/dist/components/base/forms-numeric/index.d.ts +21 -0
  234. package/dist/components/base/forms-numeric/money-input.d.ts +67 -0
  235. package/dist/components/base/forms-numeric/money-input.strings.d.ts +6 -0
  236. package/dist/components/base/forms-numeric/percentage-input.d.ts +8 -0
  237. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +12 -0
  238. package/dist/components/base/forms-numeric/weight-input.d.ts +54 -0
  239. package/dist/components/base/item/index.d.ts +2 -0
  240. package/dist/components/base/item/item.d.ts +12 -0
  241. package/dist/components/base/item/item.types.d.ts +100 -0
  242. package/dist/components/base/media-gallery/index.d.ts +2 -0
  243. package/dist/components/base/media-gallery/media-gallery.d.ts +45 -0
  244. package/dist/components/base/navigation/breadcrumbs.d.ts +37 -0
  245. package/dist/components/base/navigation/dropdown-menu.d.ts +45 -0
  246. package/dist/components/base/navigation/index.d.ts +21 -0
  247. package/dist/components/base/navigation/language-switcher.d.ts +12 -0
  248. package/dist/components/base/navigation/navigation-tabs.d.ts +40 -0
  249. package/dist/components/base/navigation/overflow-tab-bar.d.ts +43 -0
  250. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  251. package/dist/components/base/navigation/page-header/page-header.d.ts +88 -0
  252. package/dist/components/base/navigation/pagination.d.ts +61 -0
  253. package/dist/components/base/navigation/tab-scroll-viewport.d.ts +12 -0
  254. package/dist/components/base/navigation/tabs.d.ts +23 -0
  255. package/dist/components/base/popover/collection-content.d.ts +22 -0
  256. package/dist/components/base/popover/index.d.ts +1 -0
  257. package/dist/components/base/popover/popover.d.ts +54 -0
  258. package/dist/components/base/popover/popover.recipes.d.ts +29 -0
  259. package/dist/components/base/popover-menu/index.d.ts +3 -0
  260. package/dist/components/base/popover-menu/popover-menu.d.ts +82 -0
  261. package/dist/components/base/popover-menu/popover-menu.types.d.ts +30 -0
  262. package/dist/components/base/qr-code/index.d.ts +8 -0
  263. package/dist/components/base/qr-code/qr-code.d.ts +13 -0
  264. package/dist/components/base/repeaters/index.d.ts +21 -0
  265. package/dist/components/base/repeaters/key-value-editor.d.ts +27 -0
  266. package/dist/components/base/repeaters/localized-object-field.d.ts +35 -0
  267. package/dist/components/base/repeaters/localized-string-field.d.ts +25 -0
  268. package/dist/components/base/repeaters/localized-string-repeater.d.ts +44 -0
  269. package/dist/components/base/repeaters/object-repeater.d.ts +66 -0
  270. package/dist/components/base/repeaters/repeater.d.ts +87 -0
  271. package/dist/components/base/repeaters/repeaters.strings.d.ts +16 -0
  272. package/dist/components/base/repeaters/string-repeater.d.ts +65 -0
  273. package/dist/components/base/repeaters/string-repeater.utils.d.ts +2 -0
  274. package/dist/components/base/sheet/index.d.ts +1 -0
  275. package/dist/components/base/sheet/sheet.d.ts +35 -0
  276. package/dist/components/base/sidebar/index.d.ts +6 -0
  277. package/dist/components/base/sidebar/sidebar.d.ts +135 -0
  278. package/dist/components/base/signature-pad/index.d.ts +4 -0
  279. package/dist/components/base/signature-pad/signature-pad.d.ts +4 -0
  280. package/dist/components/base/signature-pad/signature-pad.types.d.ts +66 -0
  281. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +8 -0
  282. package/dist/components/base/skeleton/index.d.ts +14 -0
  283. package/dist/components/base/skeleton/skeleton.d.ts +54 -0
  284. package/dist/components/base/spinner/index.d.ts +1 -0
  285. package/dist/components/base/spinner/spinner.d.ts +32 -0
  286. package/dist/components/base/structure/adaptive-grid.d.ts +3 -0
  287. package/dist/components/base/structure/grid-cell.d.ts +3 -0
  288. package/dist/components/base/structure/grid.d.ts +3 -0
  289. package/dist/components/base/structure/index.d.ts +5 -0
  290. package/dist/components/base/structure/stack.d.ts +3 -0
  291. package/dist/components/base/structure/structure.context.d.ts +6 -0
  292. package/dist/components/base/structure/structure.recipes.d.ts +27 -0
  293. package/dist/components/base/structure/structure.responsive.d.ts +5 -0
  294. package/dist/components/base/structure/structure.types.d.ts +51 -0
  295. package/dist/components/base/table/index.d.ts +18 -0
  296. package/dist/components/base/text-inputs/hooks/index.d.ts +1 -0
  297. package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +48 -0
  298. package/dist/components/base/text-inputs/index.d.ts +21 -0
  299. package/dist/components/base/text-inputs/input-group.d.ts +46 -0
  300. package/dist/components/base/text-inputs/input.d.ts +45 -0
  301. package/dist/components/base/text-inputs/password-input.d.ts +28 -0
  302. package/dist/components/base/text-inputs/slug-field.d.ts +21 -0
  303. package/dist/components/base/text-inputs/textarea.d.ts +37 -0
  304. package/dist/components/base/toaster/index.d.ts +1 -0
  305. package/dist/components/base/toaster/toaster.d.ts +6 -0
  306. package/dist/components/base/tree/hierarchy.d.ts +11 -0
  307. package/dist/components/base/tree/index.d.ts +2 -0
  308. package/dist/components/base/tree/tree.d.ts +3 -0
  309. package/dist/components/base/tree/tree.types.d.ts +47 -0
  310. package/dist/components/base/upload/avatar-upload.d.ts +39 -0
  311. package/dist/components/base/upload/dropzone.d.ts +40 -0
  312. package/dist/components/base/upload/file-picker-input.d.ts +15 -0
  313. package/dist/components/base/upload/file-upload.d.ts +9 -0
  314. package/dist/components/base/upload/file-upload.strings.d.ts +18 -0
  315. package/dist/components/base/upload/file-upload.types.d.ts +68 -0
  316. package/dist/components/base/upload/file-upload.validation.d.ts +21 -0
  317. package/dist/components/base/upload/image-upload.d.ts +57 -0
  318. package/dist/components/base/upload/index.d.ts +26 -0
  319. package/dist/components/base/upload/use-file-drop-target.d.ts +22 -0
  320. package/dist/components/base/upload-queue/index.d.ts +3 -0
  321. package/dist/components/base/upload-queue/upload-progress-list.d.ts +55 -0
  322. package/dist/components/base/upload-queue/upload-tray.d.ts +46 -0
  323. package/dist/components/base/value-inputs/color-input.d.ts +26 -0
  324. package/dist/components/base/value-inputs/date-time-input.d.ts +19 -0
  325. package/dist/components/base/value-inputs/index.d.ts +25 -0
  326. package/dist/components/base/value-inputs/phone-input.d.ts +48 -0
  327. package/dist/components/base/value-inputs/slider.d.ts +59 -0
  328. package/dist/components/base/value-inputs/tags-input.d.ts +67 -0
  329. package/dist/components/blocks/admin/action-surfaces/index.d.ts +127 -0
  330. package/dist/components/blocks/admin/admin.strings.d.ts +11 -0
  331. package/dist/components/blocks/admin/api-key-list/api-key-list.d.ts +2 -0
  332. package/dist/components/blocks/admin/api-key-list/api-key-list.strings.d.ts +16 -0
  333. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +58 -0
  334. package/dist/components/blocks/admin/api-key-list/index.d.ts +3 -0
  335. package/dist/components/blocks/admin/index.d.ts +4 -0
  336. package/dist/components/blocks/admin/role-permission/index.d.ts +2 -0
  337. package/dist/components/blocks/admin/role-permission/role-permission.d.ts +5 -0
  338. package/dist/components/blocks/admin/role-permission/types.d.ts +26 -0
  339. package/dist/components/blocks/ai/ai-agent/ai-agent.d.ts +5 -0
  340. package/dist/components/blocks/ai/ai-agent/index.d.ts +2 -0
  341. package/dist/components/blocks/ai/ai-agent/types.d.ts +30 -0
  342. package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +5 -0
  343. package/dist/components/blocks/ai/ai-artifact/index.d.ts +2 -0
  344. package/dist/components/blocks/ai/ai-artifact/types.d.ts +50 -0
  345. package/dist/components/blocks/ai/ai-attachment/ai-attachment.d.ts +5 -0
  346. package/dist/components/blocks/ai/ai-attachment/index.d.ts +2 -0
  347. package/dist/components/blocks/ai/ai-attachment/types.d.ts +35 -0
  348. package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +5 -0
  349. package/dist/components/blocks/ai/ai-chain-of-thought/index.d.ts +2 -0
  350. package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +36 -0
  351. package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +5 -0
  352. package/dist/components/blocks/ai/ai-citation/index.d.ts +2 -0
  353. package/dist/components/blocks/ai/ai-citation/types.d.ts +38 -0
  354. package/dist/components/blocks/ai/ai-classification/ai-classification.d.ts +2 -0
  355. package/dist/components/blocks/ai/ai-classification/index.d.ts +2 -0
  356. package/dist/components/blocks/ai/ai-classification/types.d.ts +27 -0
  357. package/dist/components/blocks/ai/ai-code-block/ai-code-block.d.ts +6 -0
  358. package/dist/components/blocks/ai/ai-code-block/index.d.ts +2 -0
  359. package/dist/components/blocks/ai/ai-code-block/types.d.ts +38 -0
  360. package/dist/components/blocks/ai/ai-confidence/ai-confidence.d.ts +5 -0
  361. package/dist/components/blocks/ai/ai-confidence/index.d.ts +2 -0
  362. package/dist/components/blocks/ai/ai-confidence/types.d.ts +25 -0
  363. package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +5 -0
  364. package/dist/components/blocks/ai/ai-confirmation/index.d.ts +2 -0
  365. package/dist/components/blocks/ai/ai-confirmation/types.d.ts +40 -0
  366. package/dist/components/blocks/ai/ai-feedback/ai-feedback.d.ts +5 -0
  367. package/dist/components/blocks/ai/ai-feedback/index.d.ts +2 -0
  368. package/dist/components/blocks/ai/ai-feedback/types.d.ts +24 -0
  369. package/dist/components/blocks/ai/ai-file-tree/ai-file-tree.d.ts +5 -0
  370. package/dist/components/blocks/ai/ai-file-tree/index.d.ts +2 -0
  371. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +59 -0
  372. package/dist/components/blocks/ai/ai-inline-citation/ai-inline-citation.d.ts +5 -0
  373. package/dist/components/blocks/ai/ai-inline-citation/index.d.ts +2 -0
  374. package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +22 -0
  375. package/dist/components/blocks/ai/ai-message-bubble/ai-message-bubble.d.ts +6 -0
  376. package/dist/components/blocks/ai/ai-message-bubble/index.d.ts +2 -0
  377. package/dist/components/blocks/ai/ai-message-bubble/types.d.ts +35 -0
  378. package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +5 -0
  379. package/dist/components/blocks/ai/ai-package-info/index.d.ts +2 -0
  380. package/dist/components/blocks/ai/ai-package-info/types.d.ts +39 -0
  381. package/dist/components/blocks/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +5 -0
  382. package/dist/components/blocks/ai/ai-prompt-suggestions/index.d.ts +2 -0
  383. package/dist/components/blocks/ai/ai-prompt-suggestions/types.d.ts +26 -0
  384. package/dist/components/blocks/ai/ai-reasoning/ai-reasoning.d.ts +5 -0
  385. package/dist/components/blocks/ai/ai-reasoning/index.d.ts +2 -0
  386. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +32 -0
  387. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +5 -0
  388. package/dist/components/blocks/ai/ai-shimmer/index.d.ts +2 -0
  389. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +11 -0
  390. package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +5 -0
  391. package/dist/components/blocks/ai/ai-sources/index.d.ts +2 -0
  392. package/dist/components/blocks/ai/ai-sources/types.d.ts +44 -0
  393. package/dist/components/blocks/ai/ai-summary/ai-summary.d.ts +2 -0
  394. package/dist/components/blocks/ai/ai-summary/index.d.ts +2 -0
  395. package/dist/components/blocks/ai/ai-summary/types.d.ts +32 -0
  396. package/dist/components/blocks/ai/ai-task/ai-task.d.ts +5 -0
  397. package/dist/components/blocks/ai/ai-task/index.d.ts +2 -0
  398. package/dist/components/blocks/ai/ai-task/types.d.ts +38 -0
  399. package/dist/components/blocks/ai/ai-token-usage/ai-token-usage.d.ts +5 -0
  400. package/dist/components/blocks/ai/ai-token-usage/index.d.ts +2 -0
  401. package/dist/components/blocks/ai/ai-token-usage/types.d.ts +22 -0
  402. package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +5 -0
  403. package/dist/components/blocks/ai/ai-tool-call/index.d.ts +2 -0
  404. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +38 -0
  405. package/dist/components/blocks/ai/ai.strings.d.ts +36 -0
  406. package/dist/components/blocks/ai/index.d.ts +24 -0
  407. package/dist/components/blocks/ai/use-copy-feedback.d.ts +6 -0
  408. package/dist/components/blocks/analytics/activity-heatmap/activity-heatmap.d.ts +5 -0
  409. package/dist/components/blocks/analytics/activity-heatmap/index.d.ts +2 -0
  410. package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +20 -0
  411. package/dist/components/blocks/analytics/analytics.strings.d.ts +35 -0
  412. package/dist/components/blocks/analytics/atoms/metric-skeleton.d.ts +13 -0
  413. package/dist/components/blocks/analytics/atoms/metric-sparkline.d.ts +15 -0
  414. package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +15 -0
  415. package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +42 -0
  416. package/dist/components/blocks/analytics/chart-card/index.d.ts +1 -0
  417. package/dist/components/blocks/analytics/format-metric-value.d.ts +8 -0
  418. package/dist/components/blocks/analytics/index.d.ts +34 -0
  419. package/dist/components/blocks/analytics/metric/index.d.ts +1 -0
  420. package/dist/components/blocks/analytics/metric/metric.d.ts +28 -0
  421. package/dist/components/blocks/analytics/metric-bar/index.d.ts +1 -0
  422. package/dist/components/blocks/analytics/metric-bar/metric-bar.d.ts +22 -0
  423. package/dist/components/blocks/analytics/metric-comparison/index.d.ts +1 -0
  424. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +26 -0
  425. package/dist/components/blocks/analytics/metric-gradient/index.d.ts +1 -0
  426. package/dist/components/blocks/analytics/metric-gradient/metric-gradient.d.ts +19 -0
  427. package/dist/components/blocks/analytics/metric-grid/index.d.ts +1 -0
  428. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +33 -0
  429. package/dist/components/blocks/analytics/metric-micro-grid/index.d.ts +1 -0
  430. package/dist/components/blocks/analytics/metric-micro-grid/metric-micro-grid.d.ts +23 -0
  431. package/dist/components/blocks/analytics/time-ruler/index.d.ts +2 -0
  432. package/dist/components/blocks/analytics/time-ruler/time-ruler.d.ts +5 -0
  433. package/dist/components/blocks/analytics/time-ruler/types.d.ts +32 -0
  434. package/dist/components/blocks/analytics/types.d.ts +83 -0
  435. package/dist/components/blocks/collaboration/index.d.ts +1 -0
  436. package/dist/components/blocks/collaboration/message/index.d.ts +2 -0
  437. package/dist/components/blocks/collaboration/message/message.d.ts +8 -0
  438. package/dist/components/blocks/collaboration/message/message.types.d.ts +30 -0
  439. package/dist/components/blocks/commerce/address-card/address-card.d.ts +5 -0
  440. package/dist/components/blocks/commerce/address-card/index.d.ts +2 -0
  441. package/dist/components/blocks/commerce/address-card/types.d.ts +43 -0
  442. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +12 -0
  443. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +36 -0
  444. package/dist/components/blocks/commerce/booking-calendar-event-card/index.d.ts +2 -0
  445. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +5 -0
  446. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -0
  447. package/dist/components/blocks/commerce/cart-summary/types.d.ts +53 -0
  448. package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +5 -0
  449. package/dist/components/blocks/commerce/coupon-input/index.d.ts +2 -0
  450. package/dist/components/blocks/commerce/coupon-input/types.d.ts +35 -0
  451. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +5 -0
  452. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -0
  453. package/dist/components/blocks/commerce/discount-stack/types.d.ts +27 -0
  454. package/dist/components/blocks/commerce/format-signed-amount.d.ts +22 -0
  455. package/dist/components/blocks/commerce/giftcard-card/giftcard-card.d.ts +62 -0
  456. package/dist/components/blocks/commerce/giftcard-card/index.d.ts +2 -0
  457. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +10 -0
  458. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +9 -0
  459. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +7 -0
  460. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +11 -0
  461. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +10 -0
  462. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +10 -0
  463. package/dist/components/blocks/commerce/giftcard-card/types.d.ts +83 -0
  464. package/dist/components/blocks/commerce/index.d.ts +34 -0
  465. package/dist/components/blocks/commerce/inventory-level/index.d.ts +3 -0
  466. package/dist/components/blocks/commerce/inventory-level/inventory-level.d.ts +5 -0
  467. package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +10 -0
  468. package/dist/components/blocks/commerce/inventory-level/types.d.ts +20 -0
  469. package/dist/components/blocks/commerce/inventory-section/index.d.ts +2 -0
  470. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +5 -0
  471. package/dist/components/blocks/commerce/inventory-section/types.d.ts +105 -0
  472. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -0
  473. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +5 -0
  474. package/dist/components/blocks/commerce/invoice-header/types.d.ts +51 -0
  475. package/dist/components/blocks/commerce/invoice-line-items/index.d.ts +2 -0
  476. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +5 -0
  477. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +64 -0
  478. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -0
  479. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +5 -0
  480. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +28 -0
  481. package/dist/components/blocks/commerce/loyalty-points/index.d.ts +2 -0
  482. package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +5 -0
  483. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +32 -0
  484. package/dist/components/blocks/commerce/order-status/index.d.ts +2 -0
  485. package/dist/components/blocks/commerce/order-status/order-status.d.ts +5 -0
  486. package/dist/components/blocks/commerce/order-status/types.d.ts +35 -0
  487. package/dist/components/blocks/commerce/order-timeline/index.d.ts +2 -0
  488. package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +5 -0
  489. package/dist/components/blocks/commerce/order-timeline/types.d.ts +22 -0
  490. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -0
  491. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +5 -0
  492. package/dist/components/blocks/commerce/payment-method/types.d.ts +33 -0
  493. package/dist/components/blocks/commerce/payment-timeline/index.d.ts +2 -0
  494. package/dist/components/blocks/commerce/payment-timeline/payment-timeline.d.ts +5 -0
  495. package/dist/components/blocks/commerce/payment-timeline/types.d.ts +15 -0
  496. package/dist/components/blocks/commerce/receipt/index.d.ts +3 -0
  497. package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +2 -0
  498. package/dist/components/blocks/commerce/receipt/receipt.d.ts +3 -0
  499. package/dist/components/blocks/commerce/receipt/types.d.ts +42 -0
  500. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -0
  501. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +5 -0
  502. package/dist/components/blocks/commerce/refund-status/types.d.ts +37 -0
  503. package/dist/components/blocks/commerce/seo-listing/index.d.ts +3 -0
  504. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +5 -0
  505. package/dist/components/blocks/commerce/seo-listing/seo-listing-score.d.ts +5 -0
  506. package/dist/components/blocks/commerce/seo-listing/types.d.ts +92 -0
  507. package/dist/components/blocks/commerce/shipment-tracking/index.d.ts +2 -0
  508. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +5 -0
  509. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +44 -0
  510. package/dist/components/blocks/commerce/subscription-summary/index.d.ts +2 -0
  511. package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +5 -0
  512. package/dist/components/blocks/commerce/subscription-summary/types.d.ts +39 -0
  513. package/dist/components/blocks/commerce/tax-breakdown/index.d.ts +2 -0
  514. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +5 -0
  515. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +34 -0
  516. package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -0
  517. package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +29 -0
  518. package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +5 -0
  519. package/dist/components/blocks/commerce/vendor-profile/index.d.ts +3 -0
  520. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +86 -0
  521. package/dist/components/blocks/commerce/vendor-profile/vendor-profile.d.ts +2 -0
  522. package/dist/components/blocks/commerce/voucher-entry/index.d.ts +2 -0
  523. package/dist/components/blocks/commerce/voucher-entry/types.d.ts +33 -0
  524. package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +5 -0
  525. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +6 -0
  526. package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +19 -0
  527. package/dist/components/blocks/data-display/dense-info-card/index.d.ts +7 -0
  528. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +5 -0
  529. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +5 -0
  530. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +5 -0
  531. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +5 -0
  532. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +5 -0
  533. package/dist/components/blocks/data-display/dense-info-card/types.d.ts +183 -0
  534. package/dist/components/blocks/data-display/empty-state/empty-state.d.ts +2 -0
  535. package/dist/components/blocks/data-display/empty-state/empty-state.strings.d.ts +19 -0
  536. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +86 -0
  537. package/dist/components/blocks/data-display/empty-state/index.d.ts +5 -0
  538. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +9 -0
  539. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +9 -0
  540. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +25 -0
  541. package/dist/components/blocks/data-display/empty-state/partials/illustrations/search-glass.d.ts +9 -0
  542. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +11 -0
  543. package/dist/components/blocks/data-display/empty-state/partials/illustrations/types.d.ts +4 -0
  544. package/dist/components/blocks/data-display/empty-state/partials/illustrations/users-circle.d.ts +9 -0
  545. package/dist/components/blocks/data-display/index.d.ts +6 -0
  546. package/dist/components/blocks/data-display/inline-stat/index.d.ts +1 -0
  547. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +35 -0
  548. package/dist/components/blocks/data-display/metadata/index.d.ts +4 -0
  549. package/dist/components/blocks/data-display/metadata/metadata-list.d.ts +78 -0
  550. package/dist/components/blocks/data-display/metadata/metadata-list.strings.d.ts +18 -0
  551. package/dist/components/blocks/data-display/metadata/metadata-value.d.ts +142 -0
  552. package/dist/components/blocks/data-display/relationship-card-frame.d.ts +40 -0
  553. package/dist/components/blocks/onboarding/checklist/checklist.d.ts +2 -0
  554. package/dist/components/blocks/onboarding/checklist/checklist.strings.d.ts +15 -0
  555. package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +64 -0
  556. package/dist/components/blocks/onboarding/checklist/index.d.ts +4 -0
  557. package/dist/components/blocks/onboarding/checklist/partials/step-status-indicator.d.ts +12 -0
  558. package/dist/components/blocks/onboarding/index.d.ts +7 -0
  559. package/dist/components/blocks/timelines/changelog/changelog-timeline.d.ts +5 -0
  560. package/dist/components/blocks/timelines/changelog/index.d.ts +2 -0
  561. package/dist/components/blocks/timelines/changelog/types.d.ts +33 -0
  562. package/dist/components/blocks/timelines/index.d.ts +5 -0
  563. package/dist/components/blocks/timelines/milestones/index.d.ts +2 -0
  564. package/dist/components/blocks/timelines/milestones/milestones-timeline.d.ts +5 -0
  565. package/dist/components/blocks/timelines/milestones/types.d.ts +32 -0
  566. package/dist/components/blocks/timelines/shared/index.d.ts +1 -0
  567. package/dist/components/blocks/timelines/shared/timeline.d.ts +40 -0
  568. package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -0
  569. package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +9 -0
  570. package/dist/components/blocks/timelines/steps-card/types.d.ts +38 -0
  571. package/dist/components/features/activities/activities-feed.d.ts +5 -0
  572. package/dist/components/features/activities/activities.config.d.ts +6 -0
  573. package/dist/components/features/activities/activities.strings.d.ts +38 -0
  574. package/dist/components/features/activities/activities.types.d.ts +431 -0
  575. package/dist/components/features/activities/activity-event-adapter.d.ts +38 -0
  576. package/dist/components/features/activities/activity-log.d.ts +6 -0
  577. package/dist/components/features/activities/hooks/index.d.ts +2 -0
  578. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +44 -0
  579. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +22 -0
  580. package/dist/components/features/activities/index.d.ts +8 -0
  581. package/dist/components/features/activities/partials/activity-actions-menu.d.ts +11 -0
  582. package/dist/components/features/activities/partials/activity-changes.d.ts +8 -0
  583. package/dist/components/features/activities/partials/activity-date-label.d.ts +9 -0
  584. package/dist/components/features/activities/partials/activity-empty-state.d.ts +9 -0
  585. package/dist/components/features/activities/partials/activity-headline.d.ts +20 -0
  586. package/dist/components/features/activities/partials/activity-marker.d.ts +25 -0
  587. package/dist/components/features/activities/partials/activity-resource-tag.d.ts +11 -0
  588. package/dist/components/features/activities/partials/activity-row.d.ts +68 -0
  589. package/dist/components/features/activities/partials/index.d.ts +8 -0
  590. package/dist/components/features/activities/partials/tone-tokens.d.ts +25 -0
  591. package/dist/components/features/ai-chat/ai-chat.d.ts +81 -0
  592. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +56 -0
  593. package/dist/components/features/ai-chat/ai-chat.types.d.ts +170 -0
  594. package/dist/components/features/ai-chat/hooks/index.d.ts +1 -0
  595. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +15 -0
  596. package/dist/components/features/ai-chat/index.d.ts +5 -0
  597. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +15 -0
  598. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +28 -0
  599. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +22 -0
  600. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +21 -0
  601. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +59 -0
  602. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +19 -0
  603. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +18 -0
  604. package/dist/components/features/ai-chat/partials/index.d.ts +7 -0
  605. package/dist/components/features/async-preview/async-preview.d.ts +84 -0
  606. package/dist/components/features/async-preview/async-preview.strings.d.ts +14 -0
  607. package/dist/components/features/async-preview/async-preview.types.d.ts +133 -0
  608. package/dist/components/features/async-preview/hooks/index.d.ts +1 -0
  609. package/dist/components/features/async-preview/hooks/use-async-preview.d.ts +8 -0
  610. package/dist/components/features/async-preview/index.d.ts +6 -0
  611. package/dist/components/features/async-preview/partials/index.d.ts +1 -0
  612. package/dist/components/features/async-preview/preview-trigger-cell.d.ts +45 -0
  613. package/dist/components/features/combobox/async-resource-combobox.d.ts +94 -0
  614. package/dist/components/features/combobox/combobox.d.ts +20 -0
  615. package/dist/components/features/combobox/combobox.strings.d.ts +14 -0
  616. package/dist/components/features/combobox/components/combobox-dropdown.d.ts +57 -0
  617. package/dist/components/features/combobox/components/error-message.d.ts +15 -0
  618. package/dist/components/features/combobox/components/highlighted-text.d.ts +14 -0
  619. package/dist/components/features/combobox/components/index.d.ts +13 -0
  620. package/dist/components/features/combobox/components/loading-more.d.ts +15 -0
  621. package/dist/components/features/combobox/components/status-content.d.ts +21 -0
  622. package/dist/components/features/combobox/constants.d.ts +19 -0
  623. package/dist/components/features/combobox/hooks/index.d.ts +2 -0
  624. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +30 -0
  625. package/dist/components/features/combobox/hooks/use-debounced-search.d.ts +10 -0
  626. package/dist/components/features/combobox/hooks/use-grouped-items.d.ts +9 -0
  627. package/dist/components/features/combobox/hooks/use-load-more.d.ts +12 -0
  628. package/dist/components/features/combobox/index.d.ts +13 -0
  629. package/dist/components/features/combobox/types.d.ts +184 -0
  630. package/dist/components/features/comments/comments-provider.d.ts +15 -0
  631. package/dist/components/features/comments/comments.d.ts +2 -0
  632. package/dist/components/features/comments/comments.strings.d.ts +91 -0
  633. package/dist/components/features/comments/comments.types.d.ts +369 -0
  634. package/dist/components/features/comments/hooks/index.d.ts +4 -0
  635. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +28 -0
  636. package/dist/components/features/comments/hooks/use-comments.d.ts +34 -0
  637. package/dist/components/features/comments/index.d.ts +8 -0
  638. package/dist/components/features/comments/partials/comment-attachment-chip.d.ts +23 -0
  639. package/dist/components/features/comments/partials/comment-composer.d.ts +12 -0
  640. package/dist/components/features/comments/partials/comment-content.d.ts +13 -0
  641. package/dist/components/features/comments/partials/comment-empty.d.ts +12 -0
  642. package/dist/components/features/comments/partials/comment-item.d.ts +3 -0
  643. package/dist/components/features/comments/partials/comment-timeline.d.ts +3 -0
  644. package/dist/components/features/comments/partials/index.d.ts +9 -0
  645. package/dist/components/features/data-view/data-view-filtering.d.ts +3 -0
  646. package/dist/components/features/data-view/data-view.d.ts +7 -0
  647. package/dist/components/features/data-view/data-view.strings.d.ts +9 -0
  648. package/dist/components/features/data-view/data-view.types.d.ts +191 -0
  649. package/dist/components/features/data-view/hooks/index.d.ts +1 -0
  650. package/dist/components/features/data-view/hooks/use-data-view.d.ts +2 -0
  651. package/dist/components/features/data-view/index.d.ts +4 -0
  652. package/dist/components/features/email-composer/document.d.ts +8 -0
  653. package/dist/components/features/email-composer/email-composer.d.ts +2 -0
  654. package/dist/components/features/email-composer/email-html.d.ts +5 -0
  655. package/dist/components/features/email-composer/engine.d.ts +18 -0
  656. package/dist/components/features/email-composer/http.d.ts +6 -0
  657. package/dist/components/features/email-composer/index.d.ts +6 -0
  658. package/dist/components/features/email-composer/partials/body-editor.d.ts +11 -0
  659. package/dist/components/features/email-composer/partials/data-status.d.ts +8 -0
  660. package/dist/components/features/email-composer/partials/html-preview.d.ts +6 -0
  661. package/dist/components/features/email-composer/partials/recipients.d.ts +14 -0
  662. package/dist/components/features/email-composer/partials/variables.d.ts +11 -0
  663. package/dist/components/features/email-composer/strings.d.ts +79 -0
  664. package/dist/components/features/email-composer/types.d.ts +195 -0
  665. package/dist/components/features/email-composer/use-composer.d.ts +119 -0
  666. package/dist/components/features/event-calendar/colors.d.ts +29 -0
  667. package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +5 -0
  668. package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +5 -0
  669. package/dist/components/features/event-calendar/event-calendar-event-card.d.ts +16 -0
  670. package/dist/components/features/event-calendar/event-calendar-header.d.ts +8 -0
  671. package/dist/components/features/event-calendar/event-calendar-legend.d.ts +5 -0
  672. package/dist/components/features/event-calendar/event-calendar.d.ts +5 -0
  673. package/dist/components/features/event-calendar/event-calendar.types.d.ts +350 -0
  674. package/dist/components/features/event-calendar/index.d.ts +11 -0
  675. package/dist/components/features/event-calendar/use-event-calendar-data.d.ts +15 -0
  676. package/dist/components/features/event-calendar/use-event-calendar.d.ts +24 -0
  677. package/dist/components/features/filters/facets/async-select-facet.d.ts +28 -0
  678. package/dist/components/features/filters/facets/date-facet.d.ts +18 -0
  679. package/dist/components/features/filters/facets/range-facet.d.ts +30 -0
  680. package/dist/components/features/filters/facets/search-facet.d.ts +27 -0
  681. package/dist/components/features/filters/facets/select-facet.d.ts +19 -0
  682. package/dist/components/features/filters/facets/tags-facet.d.ts +27 -0
  683. package/dist/components/features/filters/filter-context.d.ts +61 -0
  684. package/dist/components/features/filters/filter-layout.d.ts +16 -0
  685. package/dist/components/features/filters/filter-query.d.ts +21 -0
  686. package/dist/components/features/filters/filters.strings.d.ts +103 -0
  687. package/dist/components/features/filters/filters.types.d.ts +222 -0
  688. package/dist/components/features/filters/hooks/index.d.ts +3 -0
  689. package/dist/components/features/filters/hooks/use-async-options.d.ts +16 -0
  690. package/dist/components/features/filters/hooks/use-filter-groups.d.ts +16 -0
  691. package/dist/components/features/filters/index.d.ts +42 -0
  692. package/dist/components/features/filters/operator-options.d.ts +9 -0
  693. package/dist/components/features/filters/partials/active-filter-item.d.ts +37 -0
  694. package/dist/components/features/filters/partials/async-filter-content.d.ts +21 -0
  695. package/dist/components/features/filters/partials/date-filter-content.d.ts +14 -0
  696. package/dist/components/features/filters/partials/filter-error-boundary.d.ts +9 -0
  697. package/dist/components/features/filters/partials/filter-list-content.d.ts +24 -0
  698. package/dist/components/features/filters/partials/filter-list-item.d.ts +19 -0
  699. package/dist/components/features/filters/partials/filter-operator-select.d.ts +22 -0
  700. package/dist/components/features/filters/partials/filter-pill.d.ts +26 -0
  701. package/dist/components/features/filters/partials/filter-popover-content.d.ts +36 -0
  702. package/dist/components/features/filters/partials/filter-tabs.d.ts +14 -0
  703. package/dist/components/features/filters/partials/filter-value-display.d.ts +21 -0
  704. package/dist/components/features/filters/partials/filters-button.d.ts +32 -0
  705. package/dist/components/features/filters/partials/index.d.ts +14 -0
  706. package/dist/components/features/filters/partials/regular-filter-content.d.ts +28 -0
  707. package/dist/components/features/filters/partials/search-filters-list.d.ts +25 -0
  708. package/dist/components/features/filters/partials/tags-filter-content.d.ts +28 -0
  709. package/dist/components/features/filters/utils/filter-utils.d.ts +37 -0
  710. package/dist/components/features/filters/validators.d.ts +63 -0
  711. package/dist/components/features/global-search/global-search-dialog.d.ts +13 -0
  712. package/dist/components/features/global-search/global-search.d.ts +52 -0
  713. package/dist/components/features/global-search/global-search.strings.d.ts +36 -0
  714. package/dist/components/features/global-search/global-search.types.d.ts +105 -0
  715. package/dist/components/features/global-search/hooks/index.d.ts +2 -0
  716. package/dist/components/features/global-search/hooks/use-global-search.d.ts +33 -0
  717. package/dist/components/features/global-search/index.d.ts +9 -0
  718. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +7 -0
  719. package/dist/components/features/global-search/partials/global-search-footer.d.ts +13 -0
  720. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +12 -0
  721. package/dist/components/features/global-search/partials/global-search-input.d.ts +17 -0
  722. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +16 -0
  723. package/dist/components/features/global-search/partials/global-search-tabs.d.ts +13 -0
  724. package/dist/components/features/global-search/partials/index.d.ts +12 -0
  725. package/dist/components/features/global-search/partials/tone-palettes.d.ts +8 -0
  726. package/dist/components/features/kanban/hooks/index.d.ts +1 -0
  727. package/dist/components/features/kanban/hooks/use-kanban.d.ts +32 -0
  728. package/dist/components/features/kanban/index.d.ts +5 -0
  729. package/dist/components/features/kanban/kanban-context.d.ts +25 -0
  730. package/dist/components/features/kanban/kanban-keyboard.d.ts +10 -0
  731. package/dist/components/features/kanban/kanban.d.ts +38 -0
  732. package/dist/components/features/kanban/kanban.strings.d.ts +24 -0
  733. package/dist/components/features/kanban/kanban.types.d.ts +168 -0
  734. package/dist/components/features/map/index.d.ts +13 -0
  735. package/dist/components/features/map/map.d.ts +166 -0
  736. package/dist/components/features/map/place-autocomplete.d.ts +97 -0
  737. package/dist/components/features/map/public-leaflet.types.d.ts +71 -0
  738. package/dist/components/features/map/use-map-color-scheme.d.ts +2 -0
  739. package/dist/components/features/media-library/hooks/index.d.ts +1 -0
  740. package/dist/components/features/media-library/hooks/use-media-library.d.ts +5 -0
  741. package/dist/components/features/media-library/index.d.ts +6 -0
  742. package/dist/components/features/media-library/media-library.d.ts +3 -0
  743. package/dist/components/features/media-library/media-library.strings.d.ts +124 -0
  744. package/dist/components/features/media-library/media-library.types.d.ts +568 -0
  745. package/dist/components/features/media-library/media-resource-gallery.d.ts +2 -0
  746. package/dist/components/features/media-library/partials/index.d.ts +1 -0
  747. package/dist/components/features/media-library/partials/media-library-partials.d.ts +10 -0
  748. package/dist/components/features/mentions/hooks/index.d.ts +2 -0
  749. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +41 -0
  750. package/dist/components/features/mentions/hooks/use-mentions.d.ts +35 -0
  751. package/dist/components/features/mentions/index.d.ts +5 -0
  752. package/dist/components/features/mentions/mentions.strings.d.ts +26 -0
  753. package/dist/components/features/mentions/mentions.types.d.ts +100 -0
  754. package/dist/components/features/mentions/partials/index.d.ts +4 -0
  755. package/dist/components/features/mentions/partials/mention-chip.d.ts +29 -0
  756. package/dist/components/features/mentions/partials/mention-content.d.ts +22 -0
  757. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +36 -0
  758. package/dist/components/features/mentions/partials/mention-picker.d.ts +31 -0
  759. package/dist/components/features/mentions/utils/build-mention-html.d.ts +24 -0
  760. package/dist/components/features/mentions/utils/index.d.ts +3 -0
  761. package/dist/components/features/mentions/utils/parse-mentions-from-html.d.ts +13 -0
  762. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +16 -0
  763. package/dist/components/features/overlays/alert-dialog.d.ts +4 -0
  764. package/dist/components/features/overlays/dialog.d.ts +4 -0
  765. package/dist/components/features/overlays/drawer.d.ts +4 -0
  766. package/dist/components/features/overlays/hooks/index.d.ts +2 -0
  767. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +24 -0
  768. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +36 -0
  769. package/dist/components/features/overlays/index.d.ts +6 -0
  770. package/dist/components/features/overlays/overlays.strings.d.ts +19 -0
  771. package/dist/components/features/overlays/overlays.types.d.ts +169 -0
  772. package/dist/components/features/products/components/index.d.ts +17 -0
  773. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  774. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  775. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  776. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  777. package/dist/components/features/products/components/product-options-matrix.d.ts +5 -0
  778. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  779. package/dist/components/features/products/components/product-overview.d.ts +5 -0
  780. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  781. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  782. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  783. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  784. package/dist/components/features/products/components/product-variant-action-menu.d.ts +5 -0
  785. package/dist/components/features/products/components/product-variant-details.d.ts +5 -0
  786. package/dist/components/features/products/components/product-variant-editor.d.ts +5 -0
  787. package/dist/components/features/products/components/product-variants-bulk-table.d.ts +5 -0
  788. package/dist/components/features/products/components/product-variants-manager.d.ts +5 -0
  789. package/dist/components/features/products/components/product-variants-table.d.ts +5 -0
  790. package/dist/components/features/products/index.d.ts +3 -0
  791. package/dist/components/features/products/partials/index.d.ts +7 -0
  792. package/dist/components/features/products/partials/product-actions.d.ts +10 -0
  793. package/dist/components/features/products/partials/product-empty-state.d.ts +10 -0
  794. package/dist/components/features/products/partials/product-metric-tile.d.ts +4 -0
  795. package/dist/components/features/products/partials/product-rows.d.ts +35 -0
  796. package/dist/components/features/products/partials/product-tone.d.ts +8 -0
  797. package/dist/components/features/products/partials/product-values.d.ts +1 -0
  798. package/dist/components/features/products/partials/product-variant-table-parts.d.ts +28 -0
  799. package/dist/components/features/products/products.strings.d.ts +308 -0
  800. package/dist/components/features/products/products.types.d.ts +906 -0
  801. package/dist/components/features/questionnaire/index.d.ts +3 -0
  802. package/dist/components/features/questionnaire/questionnaire-control.d.ts +3 -0
  803. package/dist/components/features/questionnaire/questionnaire.d.ts +2 -0
  804. package/dist/components/features/questionnaire/questionnaire.types.d.ts +98 -0
  805. package/dist/components/features/questionnaire/questionnaire.utils.d.ts +5 -0
  806. package/dist/components/features/resource/index.d.ts +3 -0
  807. package/dist/components/features/resource/resource.d.ts +8 -0
  808. package/dist/components/features/resource/resource.strings.d.ts +12 -0
  809. package/dist/components/features/resource/resource.types.d.ts +161 -0
  810. package/dist/components/features/resource-assignment/hooks/index.d.ts +2 -0
  811. package/dist/components/features/resource-assignment/hooks/use-shared-resource-card.d.ts +32 -0
  812. package/dist/components/features/resource-assignment/index.d.ts +6 -0
  813. package/dist/components/features/resource-assignment/partials/default-shared-resource-partials.d.ts +31 -0
  814. package/dist/components/features/resource-assignment/partials/index.d.ts +1 -0
  815. package/dist/components/features/resource-assignment/resource-assignment.d.ts +12 -0
  816. package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +17 -0
  817. package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +193 -0
  818. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +6 -0
  819. package/dist/components/features/rich-text-editor/index.d.ts +5 -0
  820. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +28 -0
  821. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +32 -0
  822. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +7 -0
  823. package/dist/components/features/rich-text-editor/partials/index.d.ts +7 -0
  824. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +8 -0
  825. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +3 -0
  826. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +33 -0
  827. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts +3 -0
  828. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  829. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +32 -0
  830. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +111 -0
  831. package/dist/components/features/schema-form/hooks/index.d.ts +1 -0
  832. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +23 -0
  833. package/dist/components/features/schema-form/index.d.ts +5 -0
  834. package/dist/components/features/schema-form/partials/index.d.ts +3 -0
  835. package/dist/components/features/schema-form/partials/schema-form-actions.d.ts +23 -0
  836. package/dist/components/features/schema-form/partials/schema-form-empty.d.ts +12 -0
  837. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +12 -0
  838. package/dist/components/features/schema-form/schema-form.d.ts +5 -0
  839. package/dist/components/features/schema-form/schema-form.strings.d.ts +11 -0
  840. package/dist/components/features/schema-form/schema-form.types.d.ts +271 -0
  841. package/dist/components/features/schema-form/schema-form.utils.d.ts +18 -0
  842. package/dist/components/features/suggestions/hooks/index.d.ts +1 -0
  843. package/dist/components/features/suggestions/hooks/use-suggestions.d.ts +9 -0
  844. package/dist/components/features/suggestions/index.d.ts +4 -0
  845. package/dist/components/features/suggestions/suggestions.d.ts +5 -0
  846. package/dist/components/features/suggestions/suggestions.strings.d.ts +16 -0
  847. package/dist/components/features/suggestions/suggestions.types.d.ts +79 -0
  848. package/dist/components/features/sync/index.d.ts +3 -0
  849. package/dist/components/features/sync/sync-range-dialog-form.d.ts +5 -0
  850. package/dist/components/features/sync/sync.strings.d.ts +18 -0
  851. package/dist/components/features/sync/sync.types.d.ts +44 -0
  852. package/dist/components/features/table/column-visibility-toggle.d.ts +5 -0
  853. package/dist/components/features/table/data-table.d.ts +6 -0
  854. package/dist/components/features/table/filter-bar.d.ts +5 -0
  855. package/dist/components/features/table/hooks.d.ts +47 -0
  856. package/dist/components/features/table/index.d.ts +16 -0
  857. package/dist/components/features/table/pagination.d.ts +5 -0
  858. package/dist/components/features/table/partials/cell-renderers.d.ts +141 -0
  859. package/dist/components/features/table/partials/cell-value.d.ts +121 -0
  860. package/dist/components/features/table/partials/fullscreen-toggle.d.ts +16 -0
  861. package/dist/components/features/table/partials/resource-cell.d.ts +63 -0
  862. package/dist/components/features/table/partials/table-link.d.ts +3 -0
  863. package/dist/components/features/table/table-actions.d.ts +5 -0
  864. package/dist/components/features/table/table-body.d.ts +5 -0
  865. package/dist/components/features/table/table-header.d.ts +6 -0
  866. package/dist/components/features/table/table-helpers.d.ts +39 -0
  867. package/dist/components/features/table/table-toolbar.d.ts +5 -0
  868. package/dist/components/features/table/table.strings.d.ts +3 -0
  869. package/dist/components/features/table/table.types.d.ts +489 -0
  870. package/dist/components/features/theme-tweaker/admin-ui-theme-provider.d.ts +6 -0
  871. package/dist/components/features/theme-tweaker/index.d.ts +10 -0
  872. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +49 -0
  873. package/dist/components/features/theme-tweaker/theme-scope.d.ts +7 -0
  874. package/dist/components/features/theme-tweaker/theme-tweaker.d.ts +2 -0
  875. package/dist/components/features/theme-tweaker/theme-tweaker.fields.d.ts +7 -0
  876. package/dist/components/features/theme-tweaker/theme-tweaker.recipes.d.ts +25 -0
  877. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +75 -0
  878. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +161 -0
  879. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +23 -0
  880. package/dist/components/features/theme-tweaker/use-applied-theme.d.ts +11 -0
  881. package/dist/components/layout/app-shell/app-layout.d.ts +12 -0
  882. package/dist/components/layout/app-shell/app-shell.types.d.ts +151 -0
  883. package/dist/components/layout/app-shell/index.d.ts +6 -0
  884. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +2 -0
  885. package/dist/components/layout/app-shell/stacked-layout.d.ts +2 -0
  886. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +2 -0
  887. package/dist/components/layout/auth/auth-card.d.ts +2 -0
  888. package/dist/components/layout/auth/auth-footer-links.d.ts +2 -0
  889. package/dist/components/layout/auth/auth-form.d.ts +11 -0
  890. package/dist/components/layout/auth/auth-hooks.d.ts +4 -0
  891. package/dist/components/layout/auth/auth-method-switch.d.ts +4 -0
  892. package/dist/components/layout/auth/auth-shell.d.ts +2 -0
  893. package/dist/components/layout/auth/auth-social-providers.d.ts +3 -0
  894. package/dist/components/layout/auth/auth-split-panel.d.ts +2 -0
  895. package/dist/components/layout/auth/auth.strings.d.ts +21 -0
  896. package/dist/components/layout/auth/auth.types.d.ts +282 -0
  897. package/dist/components/layout/auth/index.d.ts +10 -0
  898. package/dist/components/layout/containers/container.recipes.d.ts +5 -0
  899. package/dist/components/layout/containers/containers.types.d.ts +17 -0
  900. package/dist/components/layout/containers/content-container.d.ts +3 -0
  901. package/dist/components/layout/containers/index.d.ts +5 -0
  902. package/dist/components/layout/containers/page-viewport.d.ts +3 -0
  903. package/dist/components/layout/containers/section.d.ts +3 -0
  904. package/dist/components/layout/containers/two-column-layout.d.ts +27 -0
  905. package/dist/components/layout/header/header.d.ts +2 -0
  906. package/dist/components/layout/header/header.types.d.ts +198 -0
  907. package/dist/components/layout/header/index.d.ts +9 -0
  908. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +4 -0
  909. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +2 -0
  910. package/dist/components/layout/header/partials/header-notifications.d.ts +2 -0
  911. package/dist/components/layout/header/partials/header-search.d.ts +2 -0
  912. package/dist/components/layout/header/partials/header-tool-button.d.ts +4 -0
  913. package/dist/components/layout/header/partials/header-tool-popover.d.ts +2 -0
  914. package/dist/components/layout/header/partials/header-user-menu.d.ts +2 -0
  915. package/dist/components/layout/hooks/index.d.ts +3 -0
  916. package/dist/components/layout/hooks/use-active-path.d.ts +1 -0
  917. package/dist/components/layout/hooks/use-command-shortcut.d.ts +7 -0
  918. package/dist/components/layout/hooks/use-layout-link.d.ts +2 -0
  919. package/dist/components/layout/index.d.ts +24 -0
  920. package/dist/components/layout/layout.types.d.ts +91 -0
  921. package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +5 -0
  922. package/dist/components/layout/navigation/breadcrumb-progress/index.d.ts +2 -0
  923. package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +24 -0
  924. package/dist/components/layout/navigation/category-nav/category-nav.d.ts +5 -0
  925. package/dist/components/layout/navigation/category-nav/index.d.ts +2 -0
  926. package/dist/components/layout/navigation/category-nav/types.d.ts +22 -0
  927. package/dist/components/layout/navigation/index.d.ts +17 -0
  928. package/dist/components/layout/navigation/section-nav/index.d.ts +1 -0
  929. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +29 -0
  930. package/dist/components/layout/navigation/side-nav.d.ts +58 -0
  931. package/dist/components/layout/page/index.d.ts +4 -0
  932. package/dist/components/layout/page/page.d.ts +3 -0
  933. package/dist/components/layout/page/page.types.d.ts +138 -0
  934. package/dist/components/layout/page/partials/page-actions.d.ts +2 -0
  935. package/dist/components/layout/page/partials/page-header.d.ts +2 -0
  936. package/dist/components/layout/settings/index.d.ts +1 -0
  937. package/dist/components/layout/settings/settings.d.ts +65 -0
  938. package/dist/components/layout/sidebar/app-sidebar.d.ts +7 -0
  939. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +4 -0
  940. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +10 -0
  941. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +2 -0
  942. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +23 -0
  943. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +4 -0
  944. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +2 -0
  945. package/dist/components/layout/sidebar/index.d.ts +11 -0
  946. package/dist/components/layout/sidebar/sidebar.context.d.ts +17 -0
  947. package/dist/components/layout/sidebar/sidebar.d.ts +9 -0
  948. package/dist/components/layout/sidebar/sidebar.types.d.ts +218 -0
  949. package/dist/components/layout/sidebar/sidebar.utils.d.ts +29 -0
  950. package/dist/components/layout/workspace/index.d.ts +3 -0
  951. package/dist/components/layout/workspace/workspace.d.ts +6 -0
  952. package/dist/components/layout/workspace/workspace.strings.d.ts +18 -0
  953. package/dist/components/layout/workspace/workspace.types.d.ts +141 -0
  954. package/dist/components/primitives/date.d.ts +63 -0
  955. package/dist/components/primitives/dimensions.d.ts +30 -0
  956. package/dist/components/primitives/duration.d.ts +23 -0
  957. package/dist/components/primitives/file-size.d.ts +23 -0
  958. package/dist/components/primitives/index.d.ts +11 -0
  959. package/dist/components/primitives/initials-format.d.ts +21 -0
  960. package/dist/components/primitives/initials.d.ts +16 -0
  961. package/dist/components/primitives/link.d.ts +28 -0
  962. package/dist/components/primitives/money.d.ts +79 -0
  963. package/dist/components/primitives/name.d.ts +16 -0
  964. package/dist/components/primitives/number.d.ts +23 -0
  965. package/dist/components/primitives/value.d.ts +23 -0
  966. package/dist/components/typography/content-typography.d.ts +4 -0
  967. package/dist/components/typography/display-label.d.ts +5 -0
  968. package/dist/components/typography/heading.d.ts +16 -0
  969. package/dist/components/typography/index.d.ts +10 -0
  970. package/dist/components/typography/label.d.ts +8 -0
  971. package/dist/components/typography/rich-text/index.d.ts +2 -0
  972. package/dist/components/typography/rich-text/rich-text.d.ts +6 -0
  973. package/dist/components/typography/text-link.d.ts +7 -0
  974. package/dist/components/typography/text.d.ts +17 -0
  975. package/dist/components/typography/text.styles.d.ts +50 -0
  976. package/dist/components/ui/accordion.d.ts +6 -0
  977. package/dist/components/ui/alert-dialog.d.ts +21 -0
  978. package/dist/components/ui/avatar.d.ts +11 -0
  979. package/dist/components/ui/badge.d.ts +5 -0
  980. package/dist/components/ui/breadcrumb.d.ts +11 -0
  981. package/dist/components/ui/button-group.d.ts +12 -0
  982. package/dist/components/ui/button.d.ts +12 -0
  983. package/dist/components/ui/calendar.d.ts +10 -0
  984. package/dist/components/ui/card.d.ts +11 -0
  985. package/dist/components/ui/checkbox.d.ts +6 -0
  986. package/dist/components/ui/collapsible.d.ts +9 -0
  987. package/dist/components/ui/combobox.d.ts +40 -0
  988. package/dist/components/ui/command.d.ts +50 -0
  989. package/dist/components/ui/dialog.d.ts +26 -0
  990. package/dist/components/ui/disclosure-panel.d.ts +14 -0
  991. package/dist/components/ui/empty.d.ts +11 -0
  992. package/dist/components/ui/input-group.d.ts +18 -0
  993. package/dist/components/ui/input.d.ts +3 -0
  994. package/dist/components/ui/item.d.ts +22 -0
  995. package/dist/components/ui/overlay.recipes.d.ts +2 -0
  996. package/dist/components/ui/pagination.d.ts +17 -0
  997. package/dist/components/ui/popover.d.ts +22 -0
  998. package/dist/components/ui/select.d.ts +18 -0
  999. package/dist/components/ui/separator.d.ts +3 -0
  1000. package/dist/components/ui/sheet.d.ts +25 -0
  1001. package/dist/components/ui/sidebar.d.ts +64 -0
  1002. package/dist/components/ui/skeleton.d.ts +2 -0
  1003. package/dist/components/ui/slot.d.ts +6 -0
  1004. package/dist/components/ui/sonner.d.ts +3 -0
  1005. package/dist/components/ui/switch.d.ts +5 -0
  1006. package/dist/components/ui/table.d.ts +13 -0
  1007. package/dist/components/ui/tabs.d.ts +10 -0
  1008. package/dist/components/ui/textarea.d.ts +3 -0
  1009. package/dist/components/ui/toggle-group.d.ts +12 -0
  1010. package/dist/components/ui/toggle.d.ts +8 -0
  1011. package/dist/components/ui/tooltip.d.ts +13 -0
  1012. package/dist/containers-CPNyNo1_.js +124 -0
  1013. package/dist/containers-CPNyNo1_.js.map +1 -0
  1014. package/dist/content-typography-CnwgMJ37.js +6 -0
  1015. package/dist/content-typography-CnwgMJ37.js.map +1 -0
  1016. package/dist/copyable-B7SBXJMr.js +65 -0
  1017. package/dist/copyable-B7SBXJMr.js.map +1 -0
  1018. package/dist/data-display-b3d1TfL4.js +1129 -0
  1019. package/dist/data-display-b3d1TfL4.js.map +1 -0
  1020. package/dist/date-BFNMnrS5.js +140 -0
  1021. package/dist/date-BFNMnrS5.js.map +1 -0
  1022. package/dist/date-picker-DI6kPNof.js +1521 -0
  1023. package/dist/date-picker-DI6kPNof.js.map +1 -0
  1024. package/dist/date-pickers-ByP6Cv2z.js +224 -0
  1025. package/dist/date-pickers-ByP6Cv2z.js.map +1 -0
  1026. package/dist/disclosure-panel-B0HFNZ9x.js +35 -0
  1027. package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -0
  1028. package/dist/display-ByI5tkqy.js +343 -0
  1029. package/dist/display-ByI5tkqy.js.map +1 -0
  1030. package/dist/dropdown-menu-BlnyHr-9.js +186 -0
  1031. package/dist/dropdown-menu-BlnyHr-9.js.map +1 -0
  1032. package/dist/editable-text-recipe-Bkm6wKHp.js +10 -0
  1033. package/dist/editable-text-recipe-Bkm6wKHp.js.map +1 -0
  1034. package/dist/favicon.svg +1 -0
  1035. package/dist/features/activities.js +1360 -0
  1036. package/dist/features/activities.js.map +1 -0
  1037. package/dist/features/ai-chat.js +567 -0
  1038. package/dist/features/ai-chat.js.map +1 -0
  1039. package/dist/features/async-preview.js +478 -0
  1040. package/dist/features/async-preview.js.map +1 -0
  1041. package/dist/features/combobox.js +3 -0
  1042. package/dist/features/comments.js +3 -0
  1043. package/dist/features/data-view.js +519 -0
  1044. package/dist/features/data-view.js.map +1 -0
  1045. package/dist/features/email-composer/engine.js +2 -0
  1046. package/dist/features/email-composer.js +1099 -0
  1047. package/dist/features/email-composer.js.map +1 -0
  1048. package/dist/features/event-calendar.js +711 -0
  1049. package/dist/features/event-calendar.js.map +1 -0
  1050. package/dist/features/filters.js +3 -0
  1051. package/dist/features/global-search.js +593 -0
  1052. package/dist/features/global-search.js.map +1 -0
  1053. package/dist/features/kanban.js +425 -0
  1054. package/dist/features/kanban.js.map +1 -0
  1055. package/dist/features/map/images/layers-2x.png +0 -0
  1056. package/dist/features/map/images/layers.png +0 -0
  1057. package/dist/features/map/images/marker-icon-2x.png +0 -0
  1058. package/dist/features/map/images/marker-icon.png +0 -0
  1059. package/dist/features/map/images/marker-shadow.png +0 -0
  1060. package/dist/features/map/images/spritesheet-2x.png +0 -0
  1061. package/dist/features/map/images/spritesheet.png +0 -0
  1062. package/dist/features/map/images/spritesheet.svg +156 -0
  1063. package/dist/features/map/style.css +809 -0
  1064. package/dist/features/map.js +1052 -0
  1065. package/dist/features/map.js.map +1 -0
  1066. package/dist/features/media-library.js +2007 -0
  1067. package/dist/features/media-library.js.map +1 -0
  1068. package/dist/features/mentions.js +3 -0
  1069. package/dist/features/overlays.js +3 -0
  1070. package/dist/features/products.js +3076 -0
  1071. package/dist/features/products.js.map +1 -0
  1072. package/dist/features/questionnaire.js +365 -0
  1073. package/dist/features/questionnaire.js.map +1 -0
  1074. package/dist/features/resource-assignment.js +317 -0
  1075. package/dist/features/resource-assignment.js.map +1 -0
  1076. package/dist/features/resource.js +254 -0
  1077. package/dist/features/resource.js.map +1 -0
  1078. package/dist/features/rich-text-editor.js +23 -0
  1079. package/dist/features/rich-text-editor.js.map +1 -0
  1080. package/dist/features/schema-form.js +744 -0
  1081. package/dist/features/schema-form.js.map +1 -0
  1082. package/dist/features/suggestions.js +149 -0
  1083. package/dist/features/suggestions.js.map +1 -0
  1084. package/dist/features/sync.js +136 -0
  1085. package/dist/features/sync.js.map +1 -0
  1086. package/dist/features/table.js +3 -0
  1087. package/dist/features/theme-tweaker.js +2083 -0
  1088. package/dist/features/theme-tweaker.js.map +1 -0
  1089. package/dist/feedback-a9j9J-9A.js +391 -0
  1090. package/dist/feedback-a9j9J-9A.js.map +1 -0
  1091. package/dist/field-affordance-recipes-CHdUtn2Z.js +17 -0
  1092. package/dist/field-affordance-recipes-CHdUtn2Z.js.map +1 -0
  1093. package/dist/field-state-recipes-CBTRt9Bt.js +11 -0
  1094. package/dist/field-state-recipes-CBTRt9Bt.js.map +1 -0
  1095. package/dist/filters-qtrcv1hf.js +2203 -0
  1096. package/dist/filters-qtrcv1hf.js.map +1 -0
  1097. package/dist/form-field-C6W-y2hR.js +48 -0
  1098. package/dist/form-field-C6W-y2hR.js.map +1 -0
  1099. package/dist/form-sizing-39NohSqn.js +99 -0
  1100. package/dist/form-sizing-39NohSqn.js.map +1 -0
  1101. package/dist/format-iamDSqs2.js +110 -0
  1102. package/dist/format-iamDSqs2.js.map +1 -0
  1103. package/dist/forms-BF-HSbff.js +194 -0
  1104. package/dist/forms-BF-HSbff.js.map +1 -0
  1105. package/dist/forms-numeric-Y15Bg5Nr.js +867 -0
  1106. package/dist/forms-numeric-Y15Bg5Nr.js.map +1 -0
  1107. package/dist/header-B8ex54cY.js +452 -0
  1108. package/dist/header-B8ex54cY.js.map +1 -0
  1109. package/dist/hooks/use-debounce.d.ts +1 -0
  1110. package/dist/hooks/use-debounced-callback.d.ts +40 -0
  1111. package/dist/hooks/use-files.d.ts +48 -0
  1112. package/dist/hooks/use-mobile.d.ts +2 -0
  1113. package/dist/hooks/useFormErrors.d.ts +7 -0
  1114. package/dist/hooks-D6UBVzf2.js +88 -0
  1115. package/dist/hooks-D6UBVzf2.js.map +1 -0
  1116. package/dist/http-CLTVJc5I.js +331 -0
  1117. package/dist/http-CLTVJc5I.js.map +1 -0
  1118. package/dist/icon-badge-Dv0RYQwj.js +53 -0
  1119. package/dist/icon-badge-Dv0RYQwj.js.map +1 -0
  1120. package/dist/icon-size-B6PVwjbC.js +18 -0
  1121. package/dist/icon-size-B6PVwjbC.js.map +1 -0
  1122. package/dist/index.d.ts +14 -0
  1123. package/dist/index.js +7 -0
  1124. package/dist/initials-format-CDoQEOd_.js +35 -0
  1125. package/dist/initials-format-CDoQEOd_.js.map +1 -0
  1126. package/dist/input-DMorJiTI.js +202 -0
  1127. package/dist/input-DMorJiTI.js.map +1 -0
  1128. package/dist/input-ci9fIgFH.js +20 -0
  1129. package/dist/input-ci9fIgFH.js.map +1 -0
  1130. package/dist/item-pJ0GsOiJ.js +257 -0
  1131. package/dist/item-pJ0GsOiJ.js.map +1 -0
  1132. package/dist/layout/app-shell.js +3 -0
  1133. package/dist/layout/auth.js +3 -0
  1134. package/dist/layout/containers.js +3 -0
  1135. package/dist/layout/header.js +3 -0
  1136. package/dist/layout/hooks.js +3 -0
  1137. package/dist/layout/navigation.js +3 -0
  1138. package/dist/layout/page.js +3 -0
  1139. package/dist/layout/settings.js +3 -0
  1140. package/dist/layout/sidebar.js +4 -0
  1141. package/dist/layout/workspace.js +3 -0
  1142. package/dist/layout.js +13 -0
  1143. package/dist/layout.types-Cn7aUzJp.js +20 -0
  1144. package/dist/layout.types-Cn7aUzJp.js.map +1 -0
  1145. package/dist/lib/action-presentation.d.ts +15 -0
  1146. package/dist/lib/affordance-geometry.generated.d.ts +18 -0
  1147. package/dist/lib/anchored-positioning.d.ts +5 -0
  1148. package/dist/lib/command-filter.d.ts +1 -0
  1149. package/dist/lib/component-vocabulary.d.ts +12 -0
  1150. package/dist/lib/editable-text-recipe.d.ts +6 -0
  1151. package/dist/lib/email-composer.d.ts +6 -0
  1152. package/dist/lib/field-affordance-recipes.d.ts +20 -0
  1153. package/dist/lib/field-state-recipes.d.ts +10 -0
  1154. package/dist/lib/format.d.ts +53 -0
  1155. package/dist/lib/motion-recipes.d.ts +8 -0
  1156. package/dist/lib/navigation-row-recipes.d.ts +26 -0
  1157. package/dist/lib/overlay-anatomy-recipes.d.ts +8 -0
  1158. package/dist/lib/row-recipes.d.ts +3 -0
  1159. package/dist/lib/sanitize-html.d.ts +8 -0
  1160. package/dist/lib/strings.d.ts +16 -0
  1161. package/dist/lib/strings.js +32 -0
  1162. package/dist/lib/strings.js.map +1 -0
  1163. package/dist/lib/surface-recipes.d.ts +27 -0
  1164. package/dist/lib/theme-scope.d.ts +31 -0
  1165. package/dist/lib/token-merge.generated.d.ts +2 -0
  1166. package/dist/lib/track-recipes.d.ts +4 -0
  1167. package/dist/lib/ui-provider/defaults.d.ts +12 -0
  1168. package/dist/lib/ui-provider/hooks.d.ts +13 -0
  1169. package/dist/lib/ui-provider/index.d.ts +28 -0
  1170. package/dist/lib/ui-provider/provider.d.ts +15 -0
  1171. package/dist/lib/ui-provider/scale.d.ts +5 -0
  1172. package/dist/lib/ui-provider/store.d.ts +11 -0
  1173. package/dist/lib/ui-provider/types.d.ts +157 -0
  1174. package/dist/lib/utils.d.ts +2 -0
  1175. package/dist/lib/utils.js +2 -0
  1176. package/dist/map-demo-tile.svg +1 -0
  1177. package/dist/media-gallery-Ca4YmvBi.js +200 -0
  1178. package/dist/media-gallery-Ca4YmvBi.js.map +1 -0
  1179. package/dist/mentions-CRio8mTm.js +563 -0
  1180. package/dist/mentions-CRio8mTm.js.map +1 -0
  1181. package/dist/message-B5-6LeYl.js +108 -0
  1182. package/dist/message-B5-6LeYl.js.map +1 -0
  1183. package/dist/motion-recipes-B6jKXEcN.js +27 -0
  1184. package/dist/motion-recipes-B6jKXEcN.js.map +1 -0
  1185. package/dist/navigation-BTrEb5u4.js +267 -0
  1186. package/dist/navigation-BTrEb5u4.js.map +1 -0
  1187. package/dist/navigation-DqEITuD2.js +265 -0
  1188. package/dist/navigation-DqEITuD2.js.map +1 -0
  1189. package/dist/navigation-row-recipes-BFpvGPGE.js +29 -0
  1190. package/dist/navigation-row-recipes-BFpvGPGE.js.map +1 -0
  1191. package/dist/number-BNT_BIzJ.js +269 -0
  1192. package/dist/number-BNT_BIzJ.js.map +1 -0
  1193. package/dist/overlay.recipes-BxW5FIfK.js +6 -0
  1194. package/dist/overlay.recipes-BxW5FIfK.js.map +1 -0
  1195. package/dist/overlays-DBqV0J_V.js +982 -0
  1196. package/dist/overlays-DBqV0J_V.js.map +1 -0
  1197. package/dist/page-BMBGjJY8.js +202 -0
  1198. package/dist/page-BMBGjJY8.js.map +1 -0
  1199. package/dist/page-header-BH41wCyY.js +112 -0
  1200. package/dist/page-header-BH41wCyY.js.map +1 -0
  1201. package/dist/pagination-C29vvt3I.js +149 -0
  1202. package/dist/pagination-C29vvt3I.js.map +1 -0
  1203. package/dist/popover-TInGXsjg.js +194 -0
  1204. package/dist/popover-TInGXsjg.js.map +1 -0
  1205. package/dist/popover-menu-BzqXqE72.js +99 -0
  1206. package/dist/popover-menu-BzqXqE72.js.map +1 -0
  1207. package/dist/popover.recipes-zgBhMlUu.js +34 -0
  1208. package/dist/popover.recipes-zgBhMlUu.js.map +1 -0
  1209. package/dist/primitives-DKPOGVpj.js +330 -0
  1210. package/dist/primitives-DKPOGVpj.js.map +1 -0
  1211. package/dist/primitives.js +7 -0
  1212. package/dist/receipt-DYWTQGEc.js +113 -0
  1213. package/dist/receipt-DYWTQGEc.js.map +1 -0
  1214. package/dist/rich-text-B7sBAdDG.js +32 -0
  1215. package/dist/rich-text-B7sBAdDG.js.map +1 -0
  1216. package/dist/rich-text-editor-BZSJchAF.js +575 -0
  1217. package/dist/rich-text-editor-BZSJchAF.js.map +1 -0
  1218. package/dist/rich-text-editor.recipes-DxvOE0Lp.js +72 -0
  1219. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +1 -0
  1220. package/dist/rich-text-editor.strings-BpnIQgMl.js +25 -0
  1221. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +1 -0
  1222. package/dist/row-recipes-DL8n7t_b.js +10 -0
  1223. package/dist/row-recipes-DL8n7t_b.js.map +1 -0
  1224. package/dist/sanitize-html-BG9FGe-j.js +64 -0
  1225. package/dist/sanitize-html-BG9FGe-j.js.map +1 -0
  1226. package/dist/scroll-area-BheMQ270.js +47 -0
  1227. package/dist/scroll-area-BheMQ270.js.map +1 -0
  1228. package/dist/select-B2mb-qN2.js +108 -0
  1229. package/dist/select-B2mb-qN2.js.map +1 -0
  1230. package/dist/separator-DO0EbCEm.js +17 -0
  1231. package/dist/separator-DO0EbCEm.js.map +1 -0
  1232. package/dist/separator-Gk_WXH-l.js +21 -0
  1233. package/dist/separator-Gk_WXH-l.js.map +1 -0
  1234. package/dist/services/actions/action-adapters.d.ts +77 -0
  1235. package/dist/services/actions/action-overlay-outlet.d.ts +3 -0
  1236. package/dist/services/actions/action-provider.d.ts +7 -0
  1237. package/dist/services/actions/action-scope.d.ts +3 -0
  1238. package/dist/services/actions/action-store.d.ts +55 -0
  1239. package/dist/services/actions/actions.strings.d.ts +2 -0
  1240. package/dist/services/actions/actions.types.d.ts +322 -0
  1241. package/dist/services/actions/hooks.d.ts +8 -0
  1242. package/dist/services/actions/index.d.ts +8 -0
  1243. package/dist/services/actions.js +811 -0
  1244. package/dist/services/actions.js.map +1 -0
  1245. package/dist/settings-D9f_wdIC.js +160 -0
  1246. package/dist/settings-D9f_wdIC.js.map +1 -0
  1247. package/dist/sheet-vOUloJ4O.js +205 -0
  1248. package/dist/sheet-vOUloJ4O.js.map +1 -0
  1249. package/dist/sidebar-C3UKkbC5.js +501 -0
  1250. package/dist/sidebar-C3UKkbC5.js.map +1 -0
  1251. package/dist/sidebar-CNBKFDRW.js +598 -0
  1252. package/dist/sidebar-CNBKFDRW.js.map +1 -0
  1253. package/dist/skeleton-BvRhK8y-.js +264 -0
  1254. package/dist/skeleton-BvRhK8y-.js.map +1 -0
  1255. package/dist/slot-CLF9kLrS.js +16 -0
  1256. package/dist/slot-CLF9kLrS.js.map +1 -0
  1257. package/dist/smart-card-B5FcKODh.js +577 -0
  1258. package/dist/smart-card-B5FcKODh.js.map +1 -0
  1259. package/dist/spinner-JtlFJ7Nc.js +78 -0
  1260. package/dist/spinner-JtlFJ7Nc.js.map +1 -0
  1261. package/dist/structure-BvW4vG4H.js +95 -0
  1262. package/dist/structure-BvW4vG4H.js.map +1 -0
  1263. package/dist/structure.recipes-DjqnBpwz.js +548 -0
  1264. package/dist/structure.recipes-DjqnBpwz.js.map +1 -0
  1265. package/dist/style.css +3 -0
  1266. package/dist/surface-recipes-CQfRr-VL.js +27 -0
  1267. package/dist/surface-recipes-CQfRr-VL.js.map +1 -0
  1268. package/dist/table-DnlAJ-xR.js +146 -0
  1269. package/dist/table-DnlAJ-xR.js.map +1 -0
  1270. package/dist/table-ghtAQ-JJ.js +1424 -0
  1271. package/dist/table-ghtAQ-JJ.js.map +1 -0
  1272. package/dist/tabs-DY09eoZg.js +187 -0
  1273. package/dist/tabs-DY09eoZg.js.map +1 -0
  1274. package/dist/text-inputs-BhOcedTo.js +331 -0
  1275. package/dist/text-inputs-BhOcedTo.js.map +1 -0
  1276. package/dist/text.styles-BwB7vAF2.js +64 -0
  1277. package/dist/text.styles-BwB7vAF2.js.map +1 -0
  1278. package/dist/theme-scope-kStaAer0.js +39 -0
  1279. package/dist/theme-scope-kStaAer0.js.map +1 -0
  1280. package/dist/theme.css +872 -0
  1281. package/dist/timelines-CnZ2S_Gr.js +446 -0
  1282. package/dist/timelines-CnZ2S_Gr.js.map +1 -0
  1283. package/dist/track-recipes-LLPNVwFg.js +10 -0
  1284. package/dist/track-recipes-LLPNVwFg.js.map +1 -0
  1285. package/dist/tree-COD9BGdU.js +185 -0
  1286. package/dist/tree-COD9BGdU.js.map +1 -0
  1287. package/dist/types/index.d.ts +11 -0
  1288. package/dist/types/locale.types.d.ts +7 -0
  1289. package/dist/types/pagination.types.d.ts +24 -0
  1290. package/dist/typography/rich-text.js +3 -0
  1291. package/dist/typography-Cv8MT-82.js +96 -0
  1292. package/dist/typography-Cv8MT-82.js.map +1 -0
  1293. package/dist/typography.js +3 -0
  1294. package/dist/ui-provider-CftIB6TY.js +128 -0
  1295. package/dist/ui-provider-CftIB6TY.js.map +1 -0
  1296. package/dist/ui-provider.js +4 -0
  1297. package/dist/upload-DIzw1dx1.js +849 -0
  1298. package/dist/upload-DIzw1dx1.js.map +1 -0
  1299. package/dist/upload-queue-xRJ3qDmd.js +410 -0
  1300. package/dist/upload-queue-xRJ3qDmd.js.map +1 -0
  1301. package/dist/use-debounce-DZ_1ZBPa.js +18 -0
  1302. package/dist/use-debounce-DZ_1ZBPa.js.map +1 -0
  1303. package/dist/use-debounced-callback-Cx1h-hdv.js +30 -0
  1304. package/dist/use-debounced-callback-Cx1h-hdv.js.map +1 -0
  1305. package/dist/use-file-drop-target-BX7GnhoQ.js +39 -0
  1306. package/dist/use-file-drop-target-BX7GnhoQ.js.map +1 -0
  1307. package/dist/use-mobile-vaLKwgyf.js +15 -0
  1308. package/dist/use-mobile-vaLKwgyf.js.map +1 -0
  1309. package/dist/utils-C2EKeIw3.js +72 -0
  1310. package/dist/utils-C2EKeIw3.js.map +1 -0
  1311. package/dist/value-inputs-Co1fu-xv.js +824 -0
  1312. package/dist/value-inputs-Co1fu-xv.js.map +1 -0
  1313. package/dist/workspace-Cbqz4FzN.js +402 -0
  1314. package/dist/workspace-Cbqz4FzN.js.map +1 -0
  1315. package/docs/consumer-skill/SKILL.md +32 -0
  1316. package/docs/consumer-skill/examples/app-layout.tsx +31 -0
  1317. package/docs/consumer-skill/examples/composition.tsx +37 -0
  1318. package/docs/consumer-skill/examples/content-workflow.tsx +13 -0
  1319. package/docs/consumer-skill/examples/destructive-confirm.tsx +42 -0
  1320. package/docs/consumer-skill/examples/detail.tsx +28 -0
  1321. package/docs/consumer-skill/examples/edit.tsx +61 -0
  1322. package/docs/consumer-skill/examples/email-composer.tsx +25 -0
  1323. package/docs/consumer-skill/examples/hierarchy-capture.tsx +25 -0
  1324. package/docs/consumer-skill/examples/index-table.tsx +36 -0
  1325. package/docs/consumer-skill/examples/manifest.json +94 -0
  1326. package/docs/consumer-skill/examples/receipt.tsx +19 -0
  1327. package/docs/consumer-skill/references/composition.md +170 -0
  1328. package/docs/consumer-skill/references/design-contract.md +145 -0
  1329. package/docs/consumer-skill/references/discovery.md +33 -0
  1330. package/docs/consumer-skill/references/installation.md +66 -0
  1331. package/docs/consumer-skill/references/integration.md +57 -0
  1332. package/docs/consumer-skill/references/public-api.json +17527 -0
  1333. package/docs/consumer-skill/references/theming.md +56 -0
  1334. package/docs/consumer-skill/references/tokens.json +422 -0
  1335. package/docs/consumer-skill/references/workflows.md +39 -0
  1336. package/docs/consumer-skill/scripts/discovery.mjs +79 -0
  1337. package/docs/consumer-skill/scripts/find-components.mjs +11 -0
  1338. package/package.json +621 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-ghtAQ-JJ.js","names":["NumberValue","PaginationRoot","_Fragment","_Fragment","Link","NumberValue","DateValue","Link","DateValue","resolveComponentScale","useDensityConfig","cn","Button","Text","DisplayLabel","TextLink","Stack","ActionMenu","ActionButtons","Value","Phone","Name","SecondaryValue","MutedValue","FileSize","Url","MonoValue","Email","EmptyValue","Link$1","formatInitials","Percent","Money","Number","Time","RelativeTime","DateTime","parseDateInput","DatePrimitive","Badge","Separator","Input","Checkbox","PaginationNext","defaultPaginationStrings","PaginationLink","PaginationEllipsis","PaginationPrevious","PaginationItem","PaginationPrimitive","PaginationContent","TableRow","TableCell","TableBody","TableHead","TableHeader","Table","EmptyState","Fragment$1","SCROLL_AMOUNT_DEFAULT","getDataTableScrollContainer","tableArea","useDataTableScrollState","options","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","rafRef","useRef","measure","useCallback","el","tableAreaRef","scrollLeft","clientWidth","scrollWidth","detach","timerId","handleScroll","ro","deps","scrollBy","delta","stepPx","FOCUSABLE_SELECTOR","useFullscreenTableModality","onExitRef","onExit","useEffect","active","opener","previousBodyOverflow","handleKeyDown","region","regionRef","event","focusables","node","first","last","current","inside","guardedRegion","fallbackTitleCase","formatted","value","char","defaultDataTableStrings","currentLabel","columnId","selected","total","index","mergeNested","defaults","overrides","mergeDataTableStrings","generatePageNumbers","lastPage","i","pages","currentPage","start","end","buildPageUrl","params","queryKey","page","basePath","Pagination","paginationLabels","labels","primitiveStrings","pageQueryKey","firstItem","pagination","lastItem","navigateToPage","url","onPageChange","hasPrevious","hasNext","e","isEllipsis","itemKey","DataTableActions","providedStrings","props","strings","resolvedMenuLabel","menuLabel","resolvedActions","useMemo","base","actions","row","visibleActions","evalFlag","flag","visible","action","hasVisibleActions","isNarrow","setIsNarrow","nonDestructive","destructive","sortedActions","displayMode","handleResize","responsiveBreakpoint","mode","actionDefinitions","idx","MoreHorizontal","handleRowSelectionChange","updatedSelection","setInternalState","newState","prevState","externalHandler","handleSortingChange","updatedSorting","handleColumnVisibilityChange","updatedVisibility","getRowClassName","className","isSelected","rowClassName","getCellClassName","baseClassName","cellClassName","stickyFirstColumn","isFirstColumn","getSelectedRowsData","table","createRowSelectionCheckbox","checked","createHeaderSelectionCheckbox","addSelectionColumn","columns","DataTableBody","tableRows","resolvedEmptyStateMessage","emptyStateMessage","handleRowClick","onRowClick","isRowSelected","rowCells","computedRowClassName","rowIndex","handleRowSelection","zebraClass","striped","rowClasses","cell","cellIndex","flexRender","PackageOpen","emptyStateAction","DataTableHeader","headerGroups","stickyCellClassName","stickyHeader","headerTransparent","getColumnGroup","columnGroups","group","headerClassName","headers","currentGroup","groupSpan","groupCells","groupName","header","headerGroup","cellClasses","headerStyle","enableResizing","resizeHandler","isResizing","columnLabel","rawHeader","canSort","sortDir","headerNode","SortIcon","ArrowUp","ArrowDown","ChevronsUpDown","ColumnVisibilityToggle","column","showVisualLabel","labelVisibility","columnName","Settings2","buttonClass","FullscreenToggle","label","fullscreen","exitLabel","enterLabel","Icon","Minimize2","Maximize2","onFullscreenChange","SCROLL_AMOUNT","btnBase","ToolbarIconButton","getScrollContainer","DataTableToolbar","cleanupRef","checkOverflow","handleScrollLeft","handleScrollRight","hideableColumns","enableColumnVisibility","hasScrollArrows","hasColumns","hasFullscreen","showFullscreenToggle","ChevronLeft","ChevronRight","DataTableSizeContext","createContext","useDataTableSize","useContext","sizeClassByDataTableSize","textSizeByDataTableSize","toCssSize","withTextFilter","filterColumn","DataTable","controlledFullscreen","controlledRowSelection","controlledSorting","controlledColumnVisibility","stringsOverride","resolvedSize","size","defaultScale","tableRowClasses","resolvedPageQueryKey","resolvedMaxBodyHeight","maxBodyHeight","resolvedColumns","formattedStorageKey","storageKey","initialColumnVisibility","explicitDefault","defaultColumnVisibility","initialState","stored","internalSorting","setInternalSorting","defaultSorting","columnFilters","setColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalRowSelection","setInternalRowSelection","internalFullscreen","setInternalFullscreen","defaultFullscreen","sorting","columnVisibility","rowSelection","handleColumnFiltersChange","nextFilters","updater","onColumnFiltersChange","handleSortingChangeCallback","nextSorting","onSortingChange","handleVisibilityChangeCallback","nextVisibility","onColumnVisibilityChange","handleRowSelectionChangeCallback","nextRowSelection","onRowSelectionChange","fullscreenRegionRef","handleFullscreenChange","nextFullscreen","getRowActionsMenuLabel","rowActionsMenuLabel","columnsWithActions","searchableColumns","enableFiltering","baseColumns","enableRowSelection","rowActions","actionCol","rowActionsDisplayMode","rowActionsBreakpoint","useReactTable","enableSorting","getCoreRowModel","getFilteredRowModel","getSortedRowModel","filterTarget","searchPlaceholder","filterPlaceholder","shouldShow","selectedRows","selectedRowCount","clearSelection","selectionToolbarContext","data","bulkActionNode","bulkActions","defaultSelectionToolbar","stickyToolbar","selectionToolbarClassName","selectionToolbarNode","selectionToolbar","tableAreaStyle","shouldUseScrollableTableContainer","fillAvailableHeight","scrollRegion","Provider","resolvedTextSize","surface","wrapperClassName","topbarContent","topbarEnd","topbarClassName","toolbarLabelVisibility","innerClassName","tableContainerClassName","footerContent","DataTableFilterBar","customContent","isMissingPrimitive","isMissingDisplay","isDescriptor","isValidElement","isTuple","normalizeTuple","rawValue","kind","normalizeCellValue","descriptor","stringValue","renderPrimitiveCellValue","isPrimary","display","resolvedEmptyLabel","emptyLabel","resolvedClassName","weight","primaryWeight","href","CellValue","isMissing","missing","children","fallback","CellStack","visibleValues","values","itemClassName","primaryClassName","secondaryClassName","TableLink","renderResourceBadge","badge","renderResourceMetadata","metadata","item","ResourceCell","IconComponent","Mail","title","titleText","initials","content","contentClassName","titleClassName","badges","subtitle","subtitleClassName","mediaClassName","imageUrl","linkClassName","renderLink","StatusCell","map","entry","StatusClusterCell","visibleItems","items","badgeClassName","DateCell","Calendar","date","showIcon","DateMetaCell","secondaryNode","secondary","CurrencyCell","currency","AvatarCell","name"],"sources":["../src/components/features/table/hooks.ts","../src/components/features/table/table.strings.ts","../src/components/features/table/pagination.tsx","../src/components/features/table/table-actions.tsx","../src/components/features/table/table-helpers.tsx","../src/components/features/table/table-body.tsx","../src/components/features/table/table-header.tsx","../src/components/features/table/column-visibility-toggle.tsx","../src/components/features/table/partials/fullscreen-toggle.tsx","../src/components/features/table/table-toolbar.tsx","../src/components/features/table/data-table.tsx","../src/components/features/table/filter-bar.tsx","../src/components/features/table/partials/cell-value.tsx","../src/components/features/table/partials/table-link.tsx","../src/components/features/table/partials/resource-cell.tsx","../src/components/features/table/partials/cell-renderers.tsx"],"sourcesContent":["/**\n * Reusable hooks for DataTable consumers building custom toolbars or chrome.\n *\n * The default `DataTableToolbar` already wires these internally; expose them\n * for consumers that need horizontal-scroll arrows in a\n * custom layout (e.g. inside a hero banner above the table).\n */\nimport { useCallback, useEffect, useRef, useState, type RefObject } from 'react';\n\nconst SCROLL_AMOUNT_DEFAULT = 300;\n\n/**\n * Locate the actual horizontally-scrollable element inside a `tableArea`\n * wrapper. The shadcn-style Table primitive renders a\n * `<div data-slot=\"table-container\" class=\"overflow-x-auto\">` we target.\n */\nexport function getDataTableScrollContainer(\n\ttableArea: HTMLDivElement | null,\n): HTMLDivElement | null {\n\tif (!tableArea) return null;\n\treturn tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport interface UseDataTableScrollStateReturn {\n\tcanScrollLeft: boolean;\n\tcanScrollRight: boolean;\n\tscrollBy: (delta: number) => void;\n\tscrollLeft: () => void;\n\tscrollRight: () => void;\n}\n\n/**\n * Track horizontal-overflow state for a DataTable wrapper. Returns booleans\n * for whether each scroll direction is available, plus helpers to nudge the\n * scroll container by a fixed amount.\n *\n * Pass the same `RefObject<HTMLDivElement>` you pass to `<DataTable>` as\n * `tableAreaRef`.\n */\nexport function useDataTableScrollState(\n\ttableAreaRef: RefObject<HTMLDivElement | null>,\n\toptions: { stepPx?: number; deps?: ReadonlyArray<unknown> } = {},\n): UseDataTableScrollStateReturn {\n\tconst { stepPx = SCROLL_AMOUNT_DEFAULT, deps = [] } = options;\n\tconst [canScrollLeft, setCanScrollLeft] = useState(false);\n\tconst [canScrollRight, setCanScrollRight] = useState(false);\n\tconst rafRef = useRef(0);\n\n\tconst measure = useCallback(() => {\n\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\tif (!el) {\n\t\t\tsetCanScrollLeft(false);\n\t\t\tsetCanScrollRight(false);\n\t\t\treturn;\n\t\t}\n\t\tconst { scrollLeft, scrollWidth, clientWidth } = el;\n\t\tsetCanScrollLeft(scrollLeft > 1);\n\t\tsetCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n\t}, [tableAreaRef]);\n\n\tuseEffect(() => {\n\t\tlet detach: (() => void) | undefined;\n\t\tconst timerId = window.setTimeout(() => {\n\t\t\tmeasure();\n\t\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\t\tif (!el) return;\n\n\t\t\tconst handleScroll = () => {\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\trafRef.current = requestAnimationFrame(measure);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', handleScroll, { passive: true });\n\t\t\tconst ro = new ResizeObserver(measure);\n\t\t\tro.observe(el);\n\t\t\tif (el.firstElementChild) ro.observe(el.firstElementChild);\n\n\t\t\tdetach = () => {\n\t\t\t\tel.removeEventListener('scroll', handleScroll);\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\tro.disconnect();\n\t\t\t};\n\t\t}, 0);\n\n\t\treturn () => {\n\t\t\twindow.clearTimeout(timerId);\n\t\t\tdetach?.();\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [tableAreaRef, measure, ...deps]);\n\n\tconst scrollBy = useCallback(\n\t\t(delta: number) => {\n\t\t\tgetDataTableScrollContainer(tableAreaRef.current)?.scrollBy({\n\t\t\t\tleft: delta,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t},\n\t\t[tableAreaRef],\n\t);\n\n\tconst scrollLeft = useCallback(() => scrollBy(-stepPx), [scrollBy, stepPx]);\n\tconst scrollRight = useCallback(() => scrollBy(stepPx), [scrollBy, stepPx]);\n\n\treturn { canScrollLeft, canScrollRight, scrollBy, scrollLeft, scrollRight };\n}\n\nconst FOCUSABLE_SELECTOR = [\n\t'a[href]',\n\t'button:not([disabled])',\n\t'input:not([disabled])',\n\t'select:not([disabled])',\n\t'textarea:not([disabled])',\n\t'[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\n/**\n * Modal behaviour for the full-screen table.\n *\n * Full-screen mode paints `fixed inset-0` over the entire viewport — the app's\n * own header and navigation included — which makes it modal in every way that\n * matters to a user. It shipped with none of the contract that implies: Escape\n * did nothing, Tab walked out into the page underneath that nobody can see, and\n * assistive technology was never told the rest of the document was unavailable.\n *\n * `aria-modal` on the region covers the announcement. This covers the rest:\n * Escape leaves, Tab cycles inside, and focus returns to the control that\n * opened it so keyboard users are not dropped at the top of the document.\n */\nexport function useFullscreenTableModality(\n\tactive: boolean,\n\tregionRef: RefObject<HTMLElement | null>,\n\tonExit: () => void,\n): void {\n\tconst onExitRef = useRef(onExit);\n\tonExitRef.current = onExit;\n\n\tuseEffect(() => {\n\t\tif (!active || typeof document === 'undefined') return;\n\n\t\tconst opener = document.activeElement as HTMLElement | null;\n\t\tconst previousBodyOverflow = document.body.style.overflow;\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tconst region = regionRef.current;\n\t\t\tif (!region) return;\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonExitRef.current();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key !== 'Tab') return;\n\n\t\t\tconst focusables = Array.from(\n\t\t\t\tregion.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n\t\t\t).filter((node) => node.offsetParent !== null || node === document.activeElement);\n\t\t\tif (focusables.length === 0) return;\n\n\t\t\tconst first = focusables[0];\n\t\t\tconst last = focusables[focusables.length - 1];\n\t\t\tconst current = document.activeElement;\n\t\t\tconst inside = current instanceof Node && region.contains(current);\n\n\t\t\tif (event.shiftKey && (!inside || current === first)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlast.focus();\n\t\t\t} else if (!event.shiftKey && (!inside || current === last)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tfirst.focus();\n\t\t\t}\n\t\t};\n\n\t\t// Captured now: by cleanup the ref may already point elsewhere, and the\n\t\t// node this effect actually guarded is the one whose focus we care about.\n\t\tconst guardedRegion = regionRef.current;\n\n\t\tdocument.addEventListener('keydown', handleKeyDown, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown, true);\n\t\t\tdocument.body.style.overflow = previousBodyOverflow;\n\t\t\t// Only reclaim focus if it is still inside the region we are closing;\n\t\t\t// a consumer that moved focus elsewhere on exit keeps it.\n\t\t\tconst current = document.activeElement;\n\t\t\tconst stillInside =\n\t\t\t\tguardedRegion && current instanceof Node && guardedRegion.contains(current);\n\t\t\tif ((stillInside || current === document.body) && opener?.isConnected) opener.focus();\n\t\t};\n\t}, [active, regionRef]);\n}\n","import { type DataTableStrings, type DataTableStringsOverride } from './table.types';\n\nconst fallbackTitleCase = (value: string): string => {\n\tconst formatted = value\n\t\t.replace(/[_-]+/g, ' ')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim();\n\n\tif (!formatted) {\n\t\treturn 'Column';\n\t}\n\n\treturn formatted.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\nconst formatColumnLabel = (columnId: string, currentLabel?: string | null): string => {\n\tif (currentLabel && currentLabel.trim().length > 0) {\n\t\treturn currentLabel;\n\t}\n\n\treturn fallbackTitleCase(columnId);\n};\n\nexport const defaultDataTableStrings: DataTableStrings = {\n\temptyState: {\n\t\tmessage: 'No results found.',\n\t},\n\tactions: {\n\t\ttriggerLabel: 'Actions',\n\t\tsrLabel: 'Row actions menu',\n\t},\n\tfilter: {\n\t\tsearchPlaceholder: 'Filter...',\n\t\tcolumnsButton: 'Columns',\n\t},\n\tcolumnVisibility: {\n\t\ttitle: 'Toggle columns',\n\t\ttriggerLabel: 'Columns',\n\t\tformatLabel: formatColumnLabel,\n\t},\n\ttoolbar: {\n\t\tscrollLeft: 'Scroll left',\n\t\tscrollRight: 'Scroll right',\n\t\tcolumns: 'Toggle columns',\n\t\tenterFullscreen: 'Enter full screen',\n\t\texitFullscreen: 'Exit full screen',\n\t},\n\tpagination: {\n\t\tshowing: 'Showing',\n\t\tto: 'to',\n\t\tof: 'of',\n\t\tentries: 'results',\n\t\tprevious: 'Previous',\n\t\tnext: 'Next',\n\t\tpreviousLabel: 'Go to previous page',\n\t\tnextLabel: 'Go to next page',\n\t\tmorePages: 'More pages',\n\t\tpage: 'Page',\n\t\trowsPerPage: 'Rows per page',\n\t\tariaLabel: 'Pagination navigation',\n\t},\n\tselection: {\n\t\tsummary: (selected, total) => `${selected} of ${total} row${total === 1 ? '' : 's'} selected.`,\n\t\trow: (index) => `Select row ${index + 1}`,\n\t\tselectAll: 'Select all rows',\n\t\tclear: 'Clear selection',\n\t},\n\taccessibility: {\n\t\tscrollRegion: 'Table scroll area',\n\t\tfullscreenRegion: 'Table, full screen',\n\t},\n} as const;\n\nconst mergeNested = <T extends object>(defaults: T, overrides?: Partial<T>): T => ({\n\t...defaults,\n\t...(overrides ?? {}),\n});\n\nexport const mergeDataTableStrings = (overrides?: DataTableStringsOverride): DataTableStrings => {\n\tif (!overrides) {\n\t\treturn defaultDataTableStrings;\n\t}\n\n\treturn {\n\t\temptyState: mergeNested(defaultDataTableStrings.emptyState, overrides.emptyState),\n\t\tactions: mergeNested(defaultDataTableStrings.actions, overrides.actions),\n\t\tfilter: mergeNested(defaultDataTableStrings.filter, overrides.filter),\n\t\tcolumnVisibility: mergeNested(defaultDataTableStrings.columnVisibility, overrides.columnVisibility),\n\t\ttoolbar: mergeNested(defaultDataTableStrings.toolbar, overrides.toolbar),\n\t\tpagination: mergeNested(defaultDataTableStrings.pagination, overrides.pagination),\n\t\tselection: mergeNested(defaultDataTableStrings.selection, overrides.selection),\n\t\taccessibility: mergeNested(defaultDataTableStrings.accessibility, overrides.accessibility),\n\t};\n};\n","import { useCallback } from 'react';\nimport {\n\tPaginationPrimitive as PaginationRoot,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n\tdefaultPaginationStrings,\n} from '../../base/navigation/pagination';\nimport { Number as NumberValue, SecondaryValue } from '../../primitives';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ServerPaginationProps } from './table.types';\n\nimport { cn } from '../../../lib/utils';\n/**\n * Generate a window of page numbers with ellipsis gaps.\n *\n * Always shows first page, last page, and up to 1 sibling\n * on each side of the current page.\n */\nfunction generatePageNumbers(\n\tcurrentPage: number,\n\tlastPage: number,\n): (number | 'ellipsis')[] {\n\tif (lastPage <= 7) {\n\t\treturn Array.from({ length: lastPage }, (_, i) => i + 1);\n\t}\n\n\tconst pages: (number | 'ellipsis')[] = [1];\n\n\tif (currentPage > 3) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tconst start = Math.max(2, currentPage - 1);\n\tconst end = Math.min(lastPage - 1, currentPage + 1);\n\n\tfor (let i = start; i <= end; i++) {\n\t\tpages.push(i);\n\t}\n\n\tif (currentPage < lastPage - 2) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tpages.push(lastPage);\n\n\treturn pages;\n}\n\nfunction buildPageUrl(basePath: string, page: number, queryKey: string): string {\n\t// Build a URL without inheriting the current location's query string —\n\t// the library is framework-agnostic and must not read browser globals\n\t// to decide what to put in href. Consumers that need their own params\n\t// merged should compute and pass the URL via the pagination object.\n\tconst params = new URLSearchParams();\n\tparams.set(queryKey, String(page));\n\treturn `${basePath}?${params.toString()}`;\n}\n\nexport function Pagination({\n\tpagination,\n\tonPageChange,\n\tlabels = {},\n\tpageQueryKey,\n}: ServerPaginationProps) {\n\tconst paginationLabels = {\n\t\t...defaultDataTableStrings.pagination,\n\t\t...labels,\n\t};\n\tconst primitiveStrings = {\n\t\tnavigationLabel: paginationLabels.ariaLabel,\n\t\tprevious: paginationLabels.previous,\n\t\tnext: paginationLabels.next,\n\t\tpreviousLabel: paginationLabels.previousLabel ?? defaultPaginationStrings.previousLabel,\n\t\tnextLabel: paginationLabels.nextLabel ?? defaultPaginationStrings.nextLabel,\n\t\tmorePages: paginationLabels.morePages ?? defaultPaginationStrings.morePages,\n\t};\n\tconst queryKey = pageQueryKey ?? 'page';\n\n\tconst firstItem = (pagination.current_page - 1) * pagination.per_page + 1;\n\tconst lastItem = Math.min(\n\t\tpagination.current_page * pagination.per_page,\n\t\tpagination.total,\n\t);\n\n\tconst navigateToPage = useCallback(\n\t\t(page: number, url: string | null) => {\n\t\t\tif (!url) return;\n\t\t\t// The library never navigates on its own. Consumers wire their\n\t\t\t// router (Inertia, Tanstack Router, RR7, Next, …) through\n\t\t\t// `onPageChange`. When it's absent the click is a no-op — the\n\t\t\t// `href` attribute on the underlying anchor remains the only\n\t\t\t// fallback path (browsers will navigate it if JS doesn't run).\n\t\t\tonPageChange?.(page, url, pagination.path || '');\n\t\t},\n\t\t[onPageChange, pagination.path],\n\t);\n\n\tconst hasPrevious = pagination.prev_page_url !== null;\n\tconst hasNext = pagination.next_page_url !== null;\n\tconst pages = generatePageNumbers(pagination.current_page, pagination.last_page);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'pagination--component',\n\t\t\t\t'flex flex-col items-start gap-space-md px-surface py-row-y-lg sm:flex-row sm:items-center sm:justify-between sm:gap-0',\n\t\t\t)}\n\t\t>\n\t\t\t<SecondaryValue size=\"xs\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t<NumberValue value={firstItem} size=\"xs\" weight=\"medium\" align=\"left\" />\n\t\t\t\t&ndash;\n\t\t\t\t<NumberValue value={lastItem} size=\"xs\" weight=\"medium\" align=\"left\" />{' '}\n\t\t\t\t{paginationLabels.of}{' '}\n\t\t\t\t<NumberValue value={pagination.total} size=\"xs\" weight=\"medium\" align=\"left\" />{' '}\n\t\t\t\t{paginationLabels.entries}\n\t\t\t</SecondaryValue>\n\n\t\t\t<PaginationRoot strings={primitiveStrings} className=\"mx-0 w-full justify-start sm:w-auto sm:justify-center\">\n\t\t\t\t<PaginationContent className=\"gap-0 sm:gap-space-2xs\">\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationPrevious\n\t\t\t\t\t\t\ttext={paginationLabels.previous}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page - 1,\n\t\t\t\t\t\t\t\t\tpagination.prev_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasPrevious}\n\t\t\t\t\t\t\tclassName={`h-action-sm text-pxs ${!hasPrevious ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\n\t\t\t\t\t{pages.map((page, index) => {\n\t\t\t\t\t\tconst isEllipsis = page === 'ellipsis';\n\t\t\t\t\t\tconst itemKey = isEllipsis\n\t\t\t\t\t\t\t? `ellipsis-${pagination.current_page}-${index}`\n\t\t\t\t\t\t\t: `page-${page}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t<PaginationItem key={itemKey}>\n\t\t\t\t\t\t\t{isEllipsis ? (\n\t\t\t\t\t\t\t\t<PaginationEllipsis className=\"size-action-sm\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<PaginationLink\n\t\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t\tactive={page === pagination.current_page}\n\t\t\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\tbuildPageUrl(pagination.path, page, queryKey),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"size-action-sm text-pxs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{page}\n\t\t\t\t\t\t\t\t</PaginationLink>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</PaginationItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationNext\n\t\t\t\t\t\t\ttext={paginationLabels.next}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page + 1,\n\t\t\t\t\t\t\t\t\tpagination.next_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasNext}\n\t\t\t\t\t\t\tclassName={`h-action-sm text-pxs ${!hasNext ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t</PaginationContent>\n\t\t\t</PaginationRoot>\n\t\t</div>\n\t);\n}\n\nPagination.displayName = 'Pagination';\n","import { MoreHorizontal } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tActionButtons,\n\tActionMenu,\n\ttype ActionMenuAction,\n} from '../../base/action-menu';\nimport { cn } from '../../../lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableActionsProps, type TableAction } from './table.types';\n\nexport function DataTableActions<TData>(props: DataTableActionsProps<TData>) {\n\tconst {\n\t\trow,\n\t\tactions,\n\t\tmenuLabel,\n\t\tdisplayMode = 'menu', // preserve existing behavior\n\t\tresponsiveBreakpoint = 1040,\n\t\tstrings: providedStrings\n\t} = props;\n\n\tconst strings = providedStrings ?? defaultDataTableStrings;\n\tconst resolvedMenuLabel = menuLabel ?? strings.actions.triggerLabel;\n\n\t// Resolve actions array\n\tconst resolvedActions = useMemo<TableAction<TData>[]>(() => {\n\t\tconst base = typeof actions === 'function' ? actions(row) : actions;\n\t\treturn Array.isArray(base) ? base : [];\n\t}, [actions, row]);\n\n\t// Filter visibility and compute disabled by predicate/boolean\n\tconst visibleActions = useMemo(() => {\n\t\tconst evalFlag = (flag: boolean | ((r: TData) => boolean) | undefined): boolean | undefined => {\n\t\t\tif (typeof flag === 'function') return flag(row);\n\t\t\treturn flag;\n\t\t};\n\t\treturn resolvedActions.flatMap((action) => {\n\t\t\tconst visible = evalFlag(action.visible) ?? true;\n\t\t\tif (!visible) return [];\n\t\t\treturn [{\n\t\t\t\t...action,\n\t\t\t\tvisible,\n\t\t\t\tdisabled: evalFlag(action.disabled) ?? false,\n\t\t\t}];\n\t\t});\n\t}, [resolvedActions, row]);\n\n\t// No actions to render\n\tconst hasVisibleActions = visibleActions.length > 0;\n\n\t// Responsive auto mode: inline over breakpoint, menu under\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\n\t// Keep destructive actions at the end in both inline and menu modes.\n\tconst nonDestructive = visibleActions.filter((action) => action.tone !== 'destructive');\n\tconst destructive = visibleActions.filter((action) => action.tone === 'destructive');\n\n\t// 2. Combine them (non-destructive first, destructive last)\n\tconst sortedActions = [...nonDestructive, ...destructive];\n\n\tuseEffect(() => {\n\t\tif (displayMode !== 'auto' || !hasVisibleActions) {\n\t\t\tsetIsNarrow(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleResize = () => {\n\t\t\ttry {\n\t\t\t\tsetIsNarrow(window.innerWidth <= responsiveBreakpoint);\n\t\t\t} catch {\n\t\t\t\tsetIsNarrow(false);\n\t\t\t}\n\t\t};\n\n\t\thandleResize();\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t}, [displayMode, hasVisibleActions, responsiveBreakpoint]);\n\n\tif (!hasVisibleActions) return null;\n\n\tconst mode: 'menu' | 'inline' = displayMode === 'auto' ? (isNarrow ? 'menu' : 'inline') : displayMode;\n\n\tconst actionDefinitions = sortedActions.map<ActionMenuAction>((action, idx) => ({\n\t\tid: action.id || `${action.label}-${idx}`,\n\t\tlabel: action.label,\n\t\ticon: action.icon,\n\t\tdisabled: !!action.disabled,\n\t\ttone: action.tone,\n\t\tbuttonStyle: action.buttonStyle,\n\t\tonClick: () => action.onClick?.(row),\n\t}));\n\n\t if (mode === 'inline') {\n\t return (\n\t <ActionButtons\n\t\t\t\t\tactions={actionDefinitions}\n\t\t\t\t\tclassName={cn('table-actions--component')}\n\t\t\t\t/>\n\t\t);\n\t}\n\n\n\t// menu mode (default) using our ActionMenu implementation\n\treturn (\n\t\t<ActionMenu\n\t\t\tactions={actionDefinitions}\n\t\t\tlabel={undefined}\n\t\t\ticon={MoreHorizontal}\n\t\t\tsrText={resolvedMenuLabel || strings.actions.srLabel}\n\t\t\tcloseOnSelect={true}\n\t\t\talign=\"end\"\n\t\t\tdensity=\"table\"\n\t\t/>\n\t);\n}\n\nDataTableActions.displayName = 'DataTableActions';\n","import type {\n\tSortingState,\n\tRowSelectionState,\n\tVisibilityState,\n\tTable,\n\tRow,\n\tUpdater,\n\tColumnDef,\n} from '@tanstack/react-table';\nimport React from 'react';\nimport { Checkbox } from '../../base/choice-inputs';\nimport { defaultDataTableStrings } from './table.strings';\nimport type { DataTableStrings } from './table.types';\n\n/**\n * Helper function for handling row selection changes with OnChangeFn compatibility\n */\nexport const handleRowSelectionChange = (\n\tupdatedSelection: Updater<RowSelectionState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<RowSelectionState>>,\n\texternalHandler?: (state: RowSelectionState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSelection === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedSelection as (prev: RowSelectionState) => RowSelectionState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSelection);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSelection);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling sorting changes with OnChangeFn compatibility\n */\nexport const handleSortingChange = (\n\tupdatedSorting: Updater<SortingState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<SortingState>>,\n\texternalHandler?: (state: SortingState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSorting === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (updatedSorting as (prev: SortingState) => SortingState)(\n\t\t\t\tprevState,\n\t\t\t);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSorting);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSorting);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling column visibility changes\n */\nexport const handleColumnVisibilityChange = (\n\tupdatedVisibility: Updater<VisibilityState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<VisibilityState>>,\n\texternalHandler?: (state: VisibilityState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedVisibility === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedVisibility as (prev: VisibilityState) => VisibilityState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedVisibility);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedVisibility);\n\t\t}\n\t}\n};\n\n/**\n * Get row class name based on selection state and custom function\n */\nexport const getRowClassName = <TData,>(\n\trow: Row<TData>,\n\tindex: number,\n\trowClassName?: string | ((row: Row<TData>, index: number) => string),\n\tisSelected?: boolean,\n): string => {\n\tlet className = '';\n\n\t// Add selected class if the row is selected\n\tif (isSelected) {\n\t\tclassName += 'bg-primary/5 ';\n\t}\n\n\t// Add custom class name\n\tif (typeof rowClassName === 'function') {\n\t\tclassName += rowClassName(row, index) + ' ';\n\t} else if (rowClassName) {\n\t\tclassName += rowClassName + ' ';\n\t}\n\n\treturn className.trim();\n};\n\n/**\n * Get cell class name including sticky column handling\n */\nexport const getCellClassName = <TData,>(\n\tcolumnId: string,\n\trow: Row<TData> | null,\n\tcellClassName?: string | ((column: string, row: Row<TData> | null) => string),\n\tstickyFirstColumn?: boolean,\n\tisFirstColumn?: boolean,\n): string => {\n\tlet baseClassName = '';\n\n\t// Add base class name\n\tif (typeof cellClassName === 'string') {\n\t\tbaseClassName = cellClassName;\n\t} else if (cellClassName) {\n\t\tbaseClassName = cellClassName(columnId, row);\n\t}\n\n\t// Add sticky class if it's the first column and sticky first column is enabled\n\tif (stickyFirstColumn && isFirstColumn) {\n\t\treturn `${baseClassName} sticky left-0 z-10 bg-card shadow-[1px_0_0_0_var(--border)]`;\n\t}\n\n\treturn baseClassName;\n};\n\n/**\n * Get selected rows data from the table\n */\nexport const getSelectedRowsData = <T extends object>(table: Table<T>): T[] => {\n\treturn table.getSelectedRowModel().rows.map((row) => row.original);\n};\n\n/**\n * Create row selection component for a row\n */\nexport const createRowSelectionCheckbox = <TData,>(\n\trow: Row<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t\t<div className=\"px-space-sm\">\n\t\t\t<Checkbox\n\t\t\t\tclassName=\"size-icon cursor-pointer disabled:cursor-not-allowed disabled:opacity-40\"\n\t\t\tchecked={row.getIsSelected()}\n\t\t\tdisabled={!row.getCanSelect()}\n\t\t\tonCheckedChange={(checked) => row.toggleSelected(checked === true)}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\taria-label={strings.selection.row(row.index)}\n\t\t/>\n\t</div>\n);\n\n/**\n * Create header selection checkbox\n */\nexport const createHeaderSelectionCheckbox = <TData,>(\n\ttable: Table<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t\t<div className=\"px-space-sm\">\n\t\t\t<Checkbox\n\t\t\t\tclassName=\"size-icon cursor-pointer\"\n\t\t\tchecked={table.getIsAllPageRowsSelected()}\n\t\t\tindeterminate={table.getIsSomePageRowsSelected() && !table.getIsAllPageRowsSelected()}\n\t\t\tonCheckedChange={(checked) => table.toggleAllPageRowsSelected(checked === true)}\n\t\t\taria-label={strings.selection.selectAll}\n\t\t/>\n\t</div>\n);\n\n/**\n * Add selection column to columns\n */\nexport const addSelectionColumn = <TData, TValue = unknown>(\n\tcolumns: ColumnDef<TData, TValue>[],\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => {\n\tconst selectionColumn = {\n\t\tid: 'selection',\n\t\theader: ({ table }: { table: Table<TData> }) =>\n\t\t\tcreateHeaderSelectionCheckbox(table, strings),\n\t\tcell: ({ row }: { row: Row<TData> }) => createRowSelectionCheckbox(row, strings),\n\t\tenableSorting: false,\n\t\tenableResizing: false,\n\t\tsize: 40,\n\t} as ColumnDef<TData, TValue>;\n\n\treturn [selectionColumn, ...columns];\n};\n","/**\n * DataTableBody — body rows, selection highlighting, hover, empty state,\n * and (optional) loading skeleton. Stronger hover + selection contrast than\n * the original implementation so rows feel interactive at a glance.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { PackageOpen } from 'lucide-react';\nimport { TableBody, TableCell, TableRow } from '../../base/table';\nimport { EmptyState } from '../../blocks/data-display';\nimport { cn } from '../../../lib/utils';\nimport {\n\tgetCellClassName,\n\tgetRowClassName,\n} from './table-helpers';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableBodyProps } from './table.types';\n\nexport function DataTableBody<TData>({\n\ttable,\n\tonRowClick,\n\temptyStateMessage,\n\temptyStateAction,\n\tcellClassName = '',\n\trowClassName = '',\n\tstickyFirstColumn = false,\n\tstriped = false,\n\tstrings,\n}: DataTableBodyProps<TData>) {\n\tconst tableRows = table.getRowModel().rows;\n\tconst resolvedEmptyStateMessage =\n\t\temptyStateMessage ??\n\t\tstrings?.emptyState.message ??\n\t\tdefaultDataTableStrings.emptyState.message;\n\n\tconst handleRowClick = (row: TData) => {\n\t\tif (onRowClick) {\n\t\t\tonRowClick(row);\n\t\t}\n\t};\n\n\tif (!tableRows.length) {\n\t\treturn (\n\t\t\t<TableBody className=\"table-body--component\">\n\t\t\t\t<TableRow className=\"hover:bg-transparent\">\n\t\t\t\t\t<TableCell\n\t\t\t\t\t\tclassName=\"p-0 text-center\"\n\t\t\t\t\t\tcolSpan={table.getAllColumns().length}\n\t\t\t\t\t>\n\t\t\t\t\t\t<EmptyState\n\t\t\t\t\t\t\ttitle={resolvedEmptyStateMessage}\n\t\t\t\t\t\t\tdescription={false}\n\t\t\t\t\t\t\tmedia={<PackageOpen className=\"size-icon\" />}\n\t\t\t\t\t\t\tmediaVariant=\"icon-soft\"\n\t\t\t\t\t\t\tactions={emptyStateAction}\n\t\t\t\t\t\t\tclassName=\"data-table--empty-state\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t</TableBody>\n\t\t);\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t{tableRows.map((row, rowIndex) => {\n\t\t\t\tconst isRowSelected = row.getIsSelected();\n\t\t\t\tconst rowCells = row.getVisibleCells();\n\t\t\t\tconst computedRowClassName = getRowClassName(\n\t\t\t\t\trow,\n\t\t\t\t\trowIndex,\n\t\t\t\t\trowClassName,\n\t\t\t\t\tisRowSelected,\n\t\t\t\t);\n\t\t\t\tconst handleRowSelection = () => {\n\t\t\t\t\tif (onRowClick) {\n\t\t\t\t\t\thandleRowClick(row.original);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst zebraClass = striped && rowIndex % 2 !== 0 ? 'bg-muted/30' : '';\n\t\t\t\tconst cursorClass = onRowClick ? 'cursor-pointer' : '';\n\t\t\t\tconst rowClasses = cn(\n\t\t\t\t\tcomputedRowClassName,\n\t\t\t\t\tzebraClass,\n\t\t\t\t\t'transition-colors duration-150',\n\t\t\t\t\t'hover:bg-muted/35 data-[state=selected]:bg-primary/8',\n\t\t\t\t\tcursorClass,\n\t\t\t\t\t'border-b border-border/50 last:border-b-0',\n\t\t\t\t);\n\t\t\t\tconst rowState = isRowSelected ? 'selected' : null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<TableRow\n\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\tdata-state={rowState}\n\t\t\t\t\t\tclassName={rowClasses}\n\t\t\t\t\t\tonClick={handleRowSelection}\n\t\t\t\t\t>\n\t\t\t\t\t\t{rowCells.map((cell, cellIndex) => (\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\t\t\tcell.column.id,\n\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\t\t\tcellIndex === 0,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t'first:pl-surface last:pr-surface',\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.meta?.align === 'end' && 'text-right',\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.meta?.align === 'center' && 'text-center',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t);\n\t\t\t})}\n\t\t</TableBody>\n\t);\n}\n\nDataTableBody.displayName = 'DataTableBody';\n","/**\n * DataTableHeader — column-group row, primary header row, sort indicators,\n * and (optionally) resize handles. Sortable columns render as a button with\n * an inline up / down / both arrow icon driven by TanStack `column.getIsSorted()`.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react';\nimport React from 'react';\nimport { Button } from '../../base/buttons';\nimport { TableHead, TableHeader, TableRow } from '../../base/table';\nimport { DisplayLabel, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { getCellClassName } from './table-helpers';\nimport { type DataTableHeaderProps } from './table.types';\n\nexport function DataTableHeader<TData>(\n\t{\n\t\ttable,\n\t\tenableResizing = false,\n\t\tstickyHeader = false,\n\t\theaderClassName = '',\n\t\tcellClassName = '',\n\t\tstickyFirstColumn = false,\n\t\tcolumnGroups,\n\t\theaderTransparent = false,\n\t}: DataTableHeaderProps<TData>) {\n\n\tconst headerGroups = table.getHeaderGroups();\n\tconst stickyCellClassName = stickyHeader\n\t\t? cn(\n\t\t\t'sticky top-0 z-20 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]',\n\t\t\theaderTransparent ? 'bg-background/95' : 'bg-muted/95',\n\t\t)\n\t\t: '';\n\n\tconst getColumnGroup = (columnId: string) => {\n\t\tif (!columnGroups) return null;\n\t\treturn columnGroups.find(group => group.columns.includes(columnId));\n\t};\n\n\tconst renderGroupHeaderRow = () => {\n\t\tif (!columnGroups || columnGroups.length === 0 || headerGroups.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst headers = headerGroups[0].headers;\n\t\tlet currentGroup: string | null = null;\n\t\tlet groupSpan = 0;\n\t\tconst groupCells: React.ReactNode[] = [];\n\n\t\theaders.forEach((header, index) => {\n\t\t\tconst group = getColumnGroup(header.id);\n\t\t\tconst groupName = group?.header || '';\n\n\t\t\tif (groupName !== currentGroup) {\n\t\t\t\tif (currentGroup !== null && groupSpan > 0) {\n\t\t\t\t\tgroupCells.push(\n\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'h-12 border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-muted-foreground/75 last:border-r-0',\n\t\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DisplayLabel>{currentGroup || ''}</DisplayLabel>\n\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcurrentGroup = groupName;\n\t\t\t\tgroupSpan = 1;\n\t\t\t} else {\n\t\t\t\tgroupSpan++;\n\t\t\t}\n\n\t\t\tif (index === headers.length - 1 && groupSpan > 0) {\n\t\t\t\tgroupCells.push(\n\t\t\t\t\t<TableHead\n\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'h-12 whitespace-nowrap border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-muted-foreground/75 last:border-r-0',\n\t\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DisplayLabel>{currentGroup || ''}</DisplayLabel>\n\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<TableRow className={cn('table-header--component', 'border-b border-border')}>\n\t\t\t\t{groupCells}\n\t\t\t</TableRow>\n\t\t);\n\t};\n\n\treturn (\n\t\t<TableHeader\n\t\t\tclassName={headerClassName}\n\t\t>\n\t\t\t{renderGroupHeaderRow()}\n\t\t\t{headerGroups.map((headerGroup) => (\n\t\t\t\t<TableRow\n\t\t\t\t\tkey={headerGroup.id}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'border-b border-border/70',\n\t\t\t\t\t\theaderTransparent\n\t\t\t\t\t\t\t? 'bg-transparent hover:bg-transparent'\n\t\t\t\t\t\t\t: 'bg-muted/45 hover:bg-muted/45',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{headerGroup.headers.map((header, index) => {\n\t\t\t\t\t\tconst cellClasses = cn(\n\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\theader.id,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\tindex === 0,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'h-12',\n\t\t\t\t\t\t\t'first:pl-surface last:pr-surface',\n\t\t\t\t\t\t\t'text-muted-foreground font-medium whitespace-nowrap',\n\t\t\t\t\t\t\theader.column.columnDef.meta?.align === 'end' && 'text-right',\n\t\t\t\t\t\t\theader.column.columnDef.meta?.align === 'center' && 'text-center',\n\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t\tstickyHeader && stickyFirstColumn && index === 0 && 'z-30',\n\t\t\t\t\t\t\t!stickyHeader && 'bg-transparent',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst headerStyle = enableResizing\n\t\t\t\t\t\t\t? { position: 'relative' as const }\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tconst resizeHandler = header.getResizeHandler();\n\t\t\t\t\t\tconst isResizing = header.column.getIsResizing();\n\t\t\t\t\t\tconst columnLabel = (() => {\n\t\t\t\t\t\t\tconst rawHeader = header.column.columnDef.header;\n\t\t\t\t\t\t\tif (typeof rawHeader === 'string') {\n\t\t\t\t\t\t\t\treturn rawHeader;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn typeof header.id === 'string' ? header.id : 'column';\n\t\t\t\t\t\t})();\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\tclassName={cellClasses}\n\t\t\t\t\t\t\t\tstyle={headerStyle}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst canSort = header.column.getCanSort();\n\t\t\t\t\t\t\t\t\t\t\tconst sortDir = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\t\t\tconst headerNode = flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst SortIcon =\n\t\t\t\t\t\t\t\t\t\t\t\tsortDir === 'asc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowUp\n\t\t\t\t\t\t\t\t\t\t\t\t\t: sortDir === 'desc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowDown\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ChevronsUpDown;\n\t\t\t\t\t\t\t\t\t\t\tif (!canSort) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn <div className={cn('flex items-center', header.column.columnDef.meta?.align === 'end' && 'justify-end', header.column.columnDef.meta?.align === 'center' && 'justify-center')}>{headerNode}</div>;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={header.column.getToggleSortingHandler()}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'group -ml-space-sm inline-flex select-none items-center gap-space-sm rounded px-space-sm',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Sort ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{headerNode}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SortIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-icon-sm shrink-0 transition-opacity',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'opacity-100'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'opacity-30 group-hover:opacity-70',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})()}\n\n\t\t\t\t\t\t\t\t\t\t{!!enableResizing && (\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'absolute top-0 right-0 h-full w-1 cursor-col-resize select-none touch-none rounded-none bg-foreground/50 p-0 opacity-0 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none',\n\t\t\t\t\t\t\t\t\t\t\t\t\tisResizing &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-primary-accent!',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Resize ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t\tonTouchStart={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{`Resize ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</TableRow>\n\t\t\t))}\n\t\t</TableHeader>\n\t);\n}\n\nDataTableHeader.displayName = 'DataTableHeader';\n","import { Settings2 } from 'lucide-react';\nimport {\n\tActionMenu,\n\ttype ActionMenuAction,\n} from '../../base/action-menu';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ColumnVisibilityToggleProps } from './table.types';\n\nexport function ColumnVisibilityToggle<TData>({\n\ttable,\n\tclassName,\n\talign = 'end',\n\tlabelVisibility = 'hidden',\n\tstrings = defaultDataTableStrings,\n}: ColumnVisibilityToggleProps<TData>) {\n\tconst columns = table.getAllColumns()\n\t\t.filter((column) => column.getCanHide());\n\n\tif (columns.length === 0) return null;\n\tconst showVisualLabel = labelVisibility !== 'hidden';\n\tconst actions: ActionMenuAction[] = columns.map((column) => {\n\t\tconst header = column.columnDef.header;\n\t\tconst columnName = strings.columnVisibility.formatLabel(\n\t\t\tcolumn.id,\n\t\t\ttypeof header === 'string' ? header : undefined,\n\t\t);\n\n\t\treturn {\n\t\t\tid: column.id,\n\t\t\ttype: 'checkbox',\n\t\t\tlabel: columnName,\n\t\t\tgroup: strings.columnVisibility.title,\n\t\t\tchecked: column.getIsVisible(),\n\t\t\tonCheckedChange: (checked) => column.toggleVisibility(!!checked),\n\t\t\tclassName: 'capitalize',\n\t\t};\n\t});\n\n\treturn (\n\t\t<ActionMenu\n\t\t\tactions={actions}\n\t\t\ticon={Settings2}\n\t\t\tlabel={strings.columnVisibility.triggerLabel}\n\t\t\tsrText={strings.columnVisibility.triggerLabel}\n\t\t\talign={align}\n\t\t\twidth=\"w-48\"\n\t\t\tdensity=\"table\"\n\t\t\tlabelVisibility={showVisualLabel ? 'responsive' : 'hidden'}\n\t\t\tbuttonProps={{\n\t\t\t\t'aria-label': strings.columnVisibility.triggerLabel,\n\t\t\t\ttone: 'secondary',\n\t\t\t\tbuttonStyle: 'outline',\n\t\t\t\tsize: 'sm',\n\t\t\t\ticonOnly: !showVisualLabel,\n\t\t\t\tclassName: cn(\n\t\t\t\t\t'column-visibility-toggle--component',\n\t\t\t\t\tshowVisualLabel\n\t\t\t\t\t\t? 'h-action-sm gap-space-sm px-control-sm'\n\t\t\t\t\t\t: 'size-action-sm gap-0 px-0',\n\t\t\t\t\tclassName,\n\t\t\t\t),\n\t\t\t}}\n\t\t\tpreserveOrder\n\t\t/>\n\t);\n}\n\nColumnVisibilityToggle.displayName = 'ColumnVisibilityToggle';\n","/**\n * Stateless full-screen toggle for custom DataTable toolbars.\n */\nimport { Maximize2, Minimize2 } from 'lucide-react';\nimport { Button } from '../../../base/buttons';\nimport { cn } from '../../../../lib/utils';\n\nconst buttonClass =\n\t'text-muted-foreground/70 hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\n\nexport interface FullscreenToggleProps {\n\t/** Whether the table currently covers the viewport. */\n\tfullscreen: boolean;\n\t/** Fired with the next full-screen state. */\n\tonFullscreenChange: (fullscreen: boolean) => void;\n\t/** Accessible copy for entering full screen. */\n\tenterLabel?: string;\n\t/** Accessible copy for leaving full screen. */\n\texitLabel?: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport function FullscreenToggle({\n\tfullscreen,\n\tonFullscreenChange,\n\tenterLabel = 'Enter full screen',\n\texitLabel = 'Exit full screen',\n\tclassName,\n}: FullscreenToggleProps) {\n\tconst label = fullscreen ? exitLabel : enterLabel;\n\tconst Icon = fullscreen ? Minimize2 : Maximize2;\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"sm\"\n\t\t\ticonOnly\n\t\t\taria-label={label}\n\t\t\taria-pressed={fullscreen}\n\t\t\tonClick={() => onFullscreenChange(!fullscreen)}\n\t\t\tclassName={cn('fullscreen-toggle--component', buttonClass, className)}\n\t\t>\n\t\t\t<Icon className=\"size-icon-sm\" />\n\t\t</Button>\n\t);\n}\n\nFullscreenToggle.displayName = 'FullscreenToggle';\n","import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { Button } from '../../base/buttons';\nimport { cn } from '../../../lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableToolbarProps } from './table.types';\nimport { ColumnVisibilityToggle } from './column-visibility-toggle';\nimport { FullscreenToggle } from './partials/fullscreen-toggle';\n\nconst SCROLL_AMOUNT = 300;\n\nconst btnBase = 'rounded-none text-muted-foreground/70 transition-colors duration-150 hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\n\ninterface ToolbarIconButtonProps {\n\t/** Display label. */\n\tlabel: string;\n\tonClick: () => void;\n\t/** Renders the entry as unselectable. */\n\tdisabled?: boolean;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\nfunction ToolbarIconButton({ label, onClick, disabled, className, children }: ToolbarIconButtonProps) {\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"sm\" iconOnly\n\t\t\taria-label={label}\n\t\t\tclassName={cn('table-toolbar--component', btnBase, className)}\n\t\t\tonClick={onClick}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n}\n\n/**\n * Finds the actual horizontally-scrollable element inside the table area.\n * The Table primitive renders: <div data-slot=\"table-container\" class=\"overflow-x-auto\">\n */\nfunction getScrollContainer(tableArea: HTMLDivElement | null): HTMLDivElement | null {\n\tif (!tableArea) return null;\n\treturn tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport function DataTableToolbar<TData>({\n\ttable,\n\ttableAreaRef,\n\tfullscreen,\n\tonFullscreenChange,\n\tshowFullscreenToggle = false,\n\tenableColumnVisibility = false,\n\tlabelVisibility = 'hidden',\n\tstrings = defaultDataTableStrings,\n}: DataTableToolbarProps<TData>) {\n\tconst [canScrollLeft, setCanScrollLeft] = useState(false);\n\tconst [canScrollRight, setCanScrollRight] = useState(false);\n\tconst rafRef = useRef(0);\n\tconst cleanupRef = useRef<(() => void) | null>(null);\n\n\t// --- Scroll overflow detection ---\n\tconst checkOverflow = useCallback(() => {\n\t\tconst el = getScrollContainer(tableAreaRef.current);\n\t\tif (!el) {\n\t\t\tsetCanScrollLeft(false);\n\t\t\tsetCanScrollRight(false);\n\t\t\treturn;\n\t\t}\n\t\tconst { scrollLeft, scrollWidth, clientWidth } = el;\n\t\tsetCanScrollLeft(scrollLeft > 1);\n\t\tsetCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n\t}, [tableAreaRef]);\n\n\tuseEffect(() => {\n\t\t// Defer slightly to ensure the Table primitive has rendered its container\n\t\tconst timerId = window.setTimeout(() => {\n\t\t\tconst el = getScrollContainer(tableAreaRef.current);\n\t\t\tif (!el) return;\n\n\t\t\t// Initial check\n\t\t\tcheckOverflow();\n\n\t\t\tif (typeof ResizeObserver === 'undefined') return;\n\n\t\t\tconst handleScroll = () => {\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\trafRef.current = requestAnimationFrame(checkOverflow);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', handleScroll, { passive: true });\n\n\t\t\t// ResizeObserver to detect when table width changes\n\t\t\tconst ro = new ResizeObserver(checkOverflow);\n\t\t\tro.observe(el);\n\t\t\tif (el.firstElementChild) {\n\t\t\t\tro.observe(el.firstElementChild);\n\t\t\t}\n\n\t\t\t// Store cleanup references\n\t\t\tcleanupRef.current = () => {\n\t\t\t\tel.removeEventListener('scroll', handleScroll);\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\tro.disconnect();\n\t\t\t};\n\t\t}, 0);\n\n\t\treturn () => {\n\t\t\twindow.clearTimeout(timerId);\n\t\t\tcleanupRef.current?.();\n\t\t};\n\t\t// Re-run when full-screen mode changes because the viewport-sized layout\n\t\t// can alter horizontal overflow.\n\t}, [tableAreaRef, checkOverflow, fullscreen]);\n\n\t// --- Scroll handlers ---\n\tconst handleScrollLeft = useCallback(() => {\n\t\tgetScrollContainer(tableAreaRef.current)?.scrollBy({ left: -SCROLL_AMOUNT, behavior: 'smooth' });\n\t}, [tableAreaRef]);\n\n\tconst handleScrollRight = useCallback(() => {\n\t\tgetScrollContainer(tableAreaRef.current)?.scrollBy({ left: SCROLL_AMOUNT, behavior: 'smooth' });\n\t}, [tableAreaRef]);\n\n\t// --- Column visibility ---\n\tconst hideableColumns = enableColumnVisibility\n\t\t? table.getAllColumns().filter((column) => column.getCanHide())\n\t\t: [];\n\n\tconst hasScrollArrows = canScrollLeft || canScrollRight;\n\tconst hasColumns = hideableColumns.length > 0;\n\tconst hasFullscreen = showFullscreenToggle;\n\tif (!hasScrollArrows && !hasColumns && !hasFullscreen) return null;\n\n\treturn (\n\t\t<div className=\"flex items-center rounded-radius-md border border-border bg-card\">\n\t\t\t{/* Scroll arrows - only rendered when overflow exists */}\n\t\t\t{!!hasScrollArrows && (\n\t\t\t\t<>\n\t\t\t\t\t<ToolbarIconButton\n\t\t\t\t\t\tlabel={strings.toolbar.scrollLeft}\n\t\t\t\t\t\tonClick={handleScrollLeft}\n\t\t\t\t\t\tdisabled={!canScrollLeft}\n\t\t\t\t\t\tclassName=\"rounded-l-[calc(var(--radius-radius-md)-1px)]\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeft className=\"size-icon-sm\" />\n\t\t\t\t\t</ToolbarIconButton>\n\t\t\t\t\t<ToolbarIconButton\n\t\t\t\t\t\tlabel={strings.toolbar.scrollRight}\n\t\t\t\t\t\tonClick={handleScrollRight}\n\t\t\t\t\t\tdisabled={!canScrollRight}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight className=\"size-icon-sm\" />\n\t\t\t\t\t</ToolbarIconButton>\n\t\t\t\t\t{(hasColumns || hasFullscreen) && <div className=\"h-4 w-px bg-border\" />}\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{/* Column visibility dropdown */}\n\t\t\t{!!hasColumns && (\n\t\t\t\t<>\n\t\t\t\t\t<ColumnVisibilityToggle\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\tlabelVisibility={labelVisibility}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'rounded-none border-0 shadow-none',\n\t\t\t\t\t\t\t!hasScrollArrows && 'rounded-l-[calc(var(--radius-radius-md)-1px)]',\n\t\t\t\t\t\t\t!hasFullscreen && 'rounded-r-[calc(var(--radius-radius-md)-1px)]',\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t{hasFullscreen && <div className=\"h-4 w-px bg-border\" />}\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{hasFullscreen && (\n\t\t\t\t<FullscreenToggle\n\t\t\t\t\tfullscreen={fullscreen}\n\t\t\t\t\tonFullscreenChange={onFullscreenChange}\n\t\t\t\t\tenterLabel={strings.toolbar.enterFullscreen}\n\t\t\t\t\texitLabel={strings.toolbar.exitFullscreen}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'rounded-none rounded-r-[calc(var(--radius-radius-md)-1px)]',\n\t\t\t\t\t\t!hasScrollArrows && !hasColumns &&\n\t\t\t\t\t\t\t'rounded-l-[calc(var(--radius-radius-md)-1px)]',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDataTableToolbar.displayName = 'DataTableToolbar';\n","/**\n * DataTable — TanStack-powered data table with sorting, row selection, column\n * visibility, server-side pagination, full-screen mode, sticky header / first column,\n * and pluggable row actions (menu / inline / responsive).\n *\n * Strings are overridable through the `strings` prop and a default set in\n * `./table.strings`. Column visibility persists to localStorage when a\n * `storageKey` is provided; full-screen state remains an explicit UI contract.\n *\n * Use the cell renderers exported from `./partials/cell-renderers`\n * (`StatusCell`, `DateCell`, `CurrencyCell`, `AvatarCell`) for visually\n * consistent cells across pages.\n */\nimport {\n\tgetCoreRowModel,\n\tgetFilteredRowModel,\n\tgetSortedRowModel,\n\tuseReactTable,\n\ttype SortingState,\n\ttype VisibilityState,\n\ttype Updater,\n\ttype ColumnDef,\n\ttype ColumnFiltersState,\n\ttype RowSelectionState,\n} from '@tanstack/react-table';\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseState,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseRef,\n\ttype CSSProperties,\n} from 'react';\nimport { Table } from '../../base/table';\nimport { Button } from '../../base/buttons';\nimport { Input } from '../../base/text-inputs';\nimport { Separator } from '../../base/display/separator';\nimport { Text } from '../../typography';\nimport { useDensityConfig } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { useFullscreenTableModality } from './hooks';\nimport { cn } from '../../../lib/utils';\n\n/**\n * Context exposing the current `<DataTable size>` to descendant cell renderers\n * so consumer-built cells can stay typographically aligned with the table\n * (instead of hardcoding `<Text>` and breaking the unification the\n * `size` prop is supposed to give).\n *\n * Use it from custom cells:\n * const textSize = useDataTableSize();\n * return <Text className=\"data-table--component\" size={textSize}>{value}</Text>;\n *\n * The built-in renderers in `partials/cell-renderers` consume this hook.\n */\nconst DataTableSizeContext = createContext<'xs' | 'sm'>('sm');\n\nexport function useDataTableSize(): 'xs' | 'sm' {\n\treturn useContext(DataTableSizeContext);\n}\nimport { Pagination } from './pagination';\nimport { DataTableActions } from './table-actions';\nimport { DataTableBody } from './table-body';\nimport { DataTableHeader } from './table-header';\nimport { DataTableToolbar } from './table-toolbar';\nimport { addSelectionColumn } from './table-helpers';\nimport { mergeDataTableStrings } from './table.strings';\nimport {\n\ttype DataTableProps,\n\ttype DataTableSelectionToolbarContext,\n} from './table.types';\n\n// Class applied to the `<table>` element.\n//\n// Body cells get an explicit `[&_td]:text-{size}` so deeply nested\n// elements that use `<Text size=\"inherit\">` (or any plain `<span>`)\n// inherit the right font-size from the cell rather than relying on\n// the table-level inheritance chain (which breaks the moment any\n// descendant has its own text-size class).\n//\n// Header and body cells use `text-sm` consistently. Size changes alter spacing,\n// not typography, so table reading text stays on the default admin body scale.\nconst sizeClassByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, string> = {\n\tsm: '[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y [&_td]:text-sm',\n\tmd: '[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y-lg [&_td]:text-sm',\n\tlg: '[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y-lg [&_td]:text-sm',\n};\n\nconst textSizeByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, 'xs' | 'sm'> = {\n\tsm: 'sm',\n\tmd: 'sm',\n\tlg: 'sm',\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined => {\n\tif (value === undefined) return undefined;\n\treturn typeof value === 'number' ? `${value}px` : value;\n};\n\n// The toolbar supplies a text query. Give only its default target a text\n// recipe: TanStack's automatic numeric filter expects a range tuple instead.\nfunction withTextFilter<TData extends object, TValue>(\n\tcolumns: ColumnDef<TData, TValue>[],\n\tfilterColumn: string,\n): ColumnDef<TData, TValue>[] {\n\treturn columns.map((column) => {\n\t\tif ('columns' in column && column.columns) {\n\t\t\treturn { ...column, columns: withTextFilter(column.columns, filterColumn) };\n\t\t}\n\t\tconst columnId = column.id\n\t\t\t?? ('accessorKey' in column && typeof column.accessorKey === 'string'\n\t\t\t\t? column.accessorKey.replace(/\\./g, '_') : undefined)\n\t\t\t?? (typeof column.header === 'string' ? column.header : undefined);\n\t\treturn columnId === filterColumn && column.filterFn === undefined\n\t\t\t? { ...column, filterFn: 'includesString' }\n\t\t\t: column;\n\t});\n}\n\nexport function DataTable<TData extends object, TValue = unknown>({\n\tsize,\n\tsurface = 'card',\n\theaderTransparent = true,\n\tcolumns,\n\tdata,\n\tcolumnGroups,\n\trowActions,\n\trowActionsMenuLabel,\n\trowActionsDisplayMode,\n\trowActionsBreakpoint,\n\tenableSorting = false,\n\tenableFiltering = false,\n\tfilterColumn,\n\tfilterPlaceholder,\n\tmanualSorting = false,\n\tenableColumnVisibility = false,\n\tfullscreen: controlledFullscreen,\n\tdefaultFullscreen = false,\n\tonFullscreenChange,\n\tshowFullscreenToggle = false,\n\tenableRowSelection = false,\n\tenableMultiRowSelection = true,\n\tenableSubRowSelection = false,\n\tpagination,\n\tpageQueryKey,\n\tonPageChange,\n\tonSortingChange,\n\tonColumnFiltersChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tstickyHeader = false,\n\tstickyToolbar = false,\n\tstickyFirstColumn = false,\n\tmaxBodyHeight,\n\tfillAvailableHeight = false,\n\temptyStateMessage,\n\temptyStateAction,\n\tclassName = '',\n\trowClassName = '',\n\tcellClassName = '',\n\theaderClassName = '',\n\twrapperClassName = '',\n\tinnerClassName = 'overflow-x-auto',\n\ttableContainerClassName = '',\n\tgetRowId,\n\trowSelection: controlledRowSelection,\n\tsorting: controlledSorting,\n\tdefaultSorting,\n\tcolumnVisibility: controlledColumnVisibility,\n\tdefaultColumnVisibility,\n\tinitialState,\n\tonColumnVisibilityChange,\n\tstrings: stringsOverride,\n\ttopbarContent,\n\ttopbarEnd,\n\ttopbarClassName,\n\ttoolbarLabelVisibility = 'hidden',\n\tfooterContent,\n\tselectionToolbar,\n\tbulkActions,\n\tselectionToolbarClassName,\n\tstorageKey,\n}: DataTableProps<TData, TValue>) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedSize = resolveComponentScale(size, defaultScale);\n\n\tconst strings = useMemo(\n\t\t() => mergeDataTableStrings(stringsOverride),\n\t\t[stringsOverride],\n\t);\n\n\tconst tableRowClasses = cn('bg-card', rowClassName);\n\tconst resolvedEmptyStateMessage = emptyStateMessage ?? strings.emptyState.message;\n\tconst resolvedPageQueryKey = pageQueryKey ?? 'page';\n\tconst resolvedMaxBodyHeight = toCssSize(maxBodyHeight);\n\n\t\t// --- Detect and resolve tuple pattern for columns ---\n\t\tconst resolvedColumns = (() => {\n\t\t\t// Tuple pattern detected: [columns, deps]\n\t\t\tif (Array.isArray(columns) && columns.length === 2 && Array.isArray(columns[1])) {\n\t\t\t\treturn columns[0] as ColumnDef<TData, TValue>[];\n\t\t\t}\n\n\t\t\t// Regular pattern: just columns array\n\t\t\treturn columns as ColumnDef<TData, TValue>[];\n\t\t})();\n\n\t// --- Format storage key internally ---\n\tconst formattedStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.columns` : null;\n\t}, [storageKey]);\n\n\t// --- Load initial column visibility from localStorage if persistence enabled ---\n\tconst initialColumnVisibility = useMemo<VisibilityState>(() => {\n\t\tconst explicitDefault =\n\t\t\tdefaultColumnVisibility ?? initialState?.columnVisibility ?? {};\n\n\t\t// If persistence is disabled or we're in SSR, use initialState or empty object\n\t\tif (!formattedStorageKey || typeof window === 'undefined') {\n\t\t\treturn explicitDefault;\n\t\t}\n\n\t\ttry {\n\t\t\tconst stored = window.localStorage.getItem(formattedStorageKey);\n\t\t\tconst parsed = stored ? (JSON.parse(stored) as VisibilityState) : {};\n\t\t\t// Explicit defaults win over persisted values.\n\t\t\treturn { ...parsed, ...explicitDefault };\n\t\t} catch {\n\t\t\t// If parsing fails, fall back to the explicit default.\n\t\t\treturn explicitDefault;\n\t\t}\n\t}, [defaultColumnVisibility, formattedStorageKey, initialState?.columnVisibility]);\n\n\t// --- State for sorting, visibility, selection, and full screen ---\n\tconst [internalSorting, setInternalSorting] = useState<SortingState>(\n\t\tdefaultSorting ?? initialState?.sorting ?? [],\n\t);\n\tconst [columnFilters, setColumnFilters] = useState<ColumnFiltersState>(\n\t\tinitialState?.columnFilters ?? [],\n\t);\n\tconst [internalColumnVisibility, setInternalColumnVisibility] = useState<VisibilityState>(\n\t\tinitialColumnVisibility,\n\t);\n\tconst [internalRowSelection, setInternalRowSelection] = useState<RowSelectionState>(\n\t\tinitialState?.rowSelection || {},\n\t);\n\tconst [internalFullscreen, setInternalFullscreen] = useState(defaultFullscreen);\n\tconst sorting = controlledSorting ?? internalSorting;\n\tconst columnVisibility = controlledColumnVisibility ?? internalColumnVisibility;\n\tconst rowSelection = controlledRowSelection ?? internalRowSelection;\n\tconst fullscreen = controlledFullscreen ?? internalFullscreen;\n\n\t// --- Refs ---\n\tconst tableAreaRef = useRef<HTMLDivElement>(null);\n\n\t// --- Callbacks ---\n\tconst handleColumnFiltersChange = useCallback(\n\t\t(updater: Updater<ColumnFiltersState>) => {\n\t\t\tconst nextFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\n\t\t\tsetColumnFilters(nextFilters);\n\t\t\tonColumnFiltersChange?.(nextFilters);\n\t\t},\n\t\t[columnFilters, onColumnFiltersChange],\n\t);\n\n\tconst handleSortingChangeCallback = useCallback(\n\t\t(updater: Updater<SortingState>) => {\n\t\t\tconst nextSorting =\n\t\t\t\ttypeof updater === 'function' ? updater(sorting) : updater;\n\n\t\t\tif (controlledSorting === undefined) {\n\t\t\t\tsetInternalSorting(nextSorting);\n\t\t\t}\n\n\t\t\tonSortingChange?.(nextSorting);\n\t\t},\n\t\t[controlledSorting, onSortingChange, sorting],\n\t);\n\n\tconst handleVisibilityChangeCallback = useCallback(\n\t\t(updater: Updater<VisibilityState>) => {\n\t\t\tconst nextVisibility =\n\t\t\t\ttypeof updater === 'function' ? updater(columnVisibility) : updater;\n\n\t\t\tif (controlledColumnVisibility === undefined) {\n\t\t\t\tsetInternalColumnVisibility(nextVisibility);\n\t\t\t}\n\n\t\t\t// Persist to localStorage if enabled.\n\t\t\tif (formattedStorageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tformattedStorageKey,\n\t\t\t\t\t\tJSON.stringify(nextVisibility),\n\t\t\t\t\t);\n\t\t\t\t} catch {\n\t\t\t\t\t// Silent fail - quota exceeded or other localStorage errors\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonColumnVisibilityChange?.(nextVisibility);\n\t\t},\n\t\t[\n\t\t\tcolumnVisibility,\n\t\t\tcontrolledColumnVisibility,\n\t\t\tformattedStorageKey,\n\t\t\tonColumnVisibilityChange,\n\t\t],\n\t);\n\n\tconst handleRowSelectionChangeCallback = useCallback(\n\t\t(updater: Updater<RowSelectionState>) => {\n\t\t\tconst nextRowSelection =\n\t\t\t\ttypeof updater === 'function' ? updater(rowSelection) : updater;\n\n\t\t\tif (controlledRowSelection === undefined) {\n\t\t\t\tsetInternalRowSelection(nextRowSelection);\n\t\t\t}\n\n\t\t\tonRowSelectionChange?.(nextRowSelection);\n\t\t},\n\t\t[controlledRowSelection, onRowSelectionChange, rowSelection],\n\t);\n\n\tconst fullscreenRegionRef = useRef<HTMLDivElement | null>(null);\n\n\tconst handleFullscreenChange = useCallback(\n\t\t(nextFullscreen: boolean) => {\n\t\t\tif (controlledFullscreen === undefined) {\n\t\t\t\tsetInternalFullscreen(nextFullscreen);\n\t\t\t}\n\t\t\tonFullscreenChange?.(nextFullscreen);\n\t\t},\n\t\t[controlledFullscreen, onFullscreenChange],\n\t);\n\n\tconst exitFullscreen = useCallback(\n\t\t() => handleFullscreenChange(false),\n\t\t[handleFullscreenChange],\n\t);\n\tuseFullscreenTableModality(fullscreen, fullscreenRegionRef, exitFullscreen);\n\n\tconst getRowActionsMenuLabel = useCallback(\n\t\t(row: TData) => {\n\t\t\tif (typeof rowActionsMenuLabel === 'function') {\n\t\t\t\treturn rowActionsMenuLabel(row);\n\t\t\t}\n\n\t\t\treturn rowActionsMenuLabel ?? strings.actions.triggerLabel;\n\t\t},\n\t\t[rowActionsMenuLabel, strings.actions.triggerLabel],\n\t);\n\n\tconst columnsWithActions = useMemo<ColumnDef<TData, TValue>[]>(() => {\n\t\tconst searchableColumns = enableFiltering && filterColumn\n\t\t\t? withTextFilter(resolvedColumns, filterColumn)\n\t\t\t: resolvedColumns;\n\t\tconst baseColumns = enableRowSelection\n\t\t\t? addSelectionColumn<TData, TValue>(searchableColumns, strings)\n\t\t\t: searchableColumns;\n\n\t\t// if no actions, leave cols untouched\n\t\tif (!rowActions) {\n\t\t\treturn baseColumns;\n\t\t}\n\n\t\t// otherwise append a fixed Actions column:\n\t\tconst actionCol: ColumnDef<TData, TValue> = {\n\t\t\tid: 'actions',\n\t\t\theader: strings.actions.triggerLabel,\n\t\t\t// NOTE: just hand `rowActions` array, not a call\n\t\t\tcell: ({ row }: { row: { original: TData } }) => (\n\t\t\t\t<DataTableActions\n\t\t\t\t\trow={row.original}\n\t\t\t\t\tactions={rowActions}\n\t\t\t\t\tmenuLabel={getRowActionsMenuLabel(row.original)}\n\t\t\t\t\tdisplayMode={rowActionsDisplayMode}\n\t\t\t\t\tresponsiveBreakpoint={rowActionsBreakpoint}\n\t\t\t\t\tstrings={strings}\n\t\t\t\t/>\n\t\t\t),\n\t\t\tenableSorting: false,\n\t\t\tenableHiding: false,\n\t\t\tsize: 40,\n\t\t};\n\n\t\treturn [...baseColumns, actionCol];\n\t}, [\n\t\tresolvedColumns,\n\t\tenableFiltering,\n\t\tfilterColumn,\n\t\tenableRowSelection,\n\t\trowActions,\n\t\tgetRowActionsMenuLabel,\n\t\trowActionsBreakpoint,\n\t\trowActionsDisplayMode,\n\t\tstrings,\n\t]);\n\n\t// --- Configure table ---\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns: columnsWithActions,\n\t\tstate: { sorting, columnVisibility, rowSelection, columnFilters },\n\t\tenableSorting,\n\t\tenableColumnFilters: enableFiltering,\n\t\tmanualFiltering: !enableFiltering,\n\t\tmanualSorting,\n\t\t// Pagination is consumer-owned through the `pagination` prop. Disabling\n\t\t// TanStack's unused auto-reset also avoids its render-time microtask from\n\t\t// attempting a state update before a concurrently rendered table mounts.\n\t\tautoResetPageIndex: false,\n\t\tenableRowSelection,\n\t\tenableMultiRowSelection,\n\t\tenableSubRowSelection,\n\t\tonSortingChange: enableSorting ? handleSortingChangeCallback : undefined,\n\t\tonRowSelectionChange:\n\t\t\tenableRowSelection ? handleRowSelectionChangeCallback : undefined,\n\t\tonColumnVisibilityChange: handleVisibilityChangeCallback,\n\t\tonColumnFiltersChange: handleColumnFiltersChange,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetFilteredRowModel: getFilteredRowModel(),\n\t\tgetSortedRowModel: getSortedRowModel(),\n\t\tgetRowId,\n\t});\n\t// Resolve safely: a missing or explicitly nonfilterable column must not\n\t// produce a control that accepts text without changing the visible rows.\n\tconst filterTarget = enableFiltering && filterColumn\n\t\t? table.getAllLeafColumns().find((column) => column.id === filterColumn && column.getCanFilter())\n\t\t: undefined;\n\tconst searchPlaceholder = filterPlaceholder ?? strings.filter.searchPlaceholder;\n\n\t// --- Determine server pagination ---\n\tconst shouldShow = pagination && pagination.last_page > 1;\n\tconst selectedRows = table.getSelectedRowModel().rows.map((row) => row.original);\n\tconst selectedRowCount = selectedRows.length;\n\tconst clearSelection = useCallback(() => {\n\t\ttable.resetRowSelection();\n\t}, [table]);\n\tconst selectionToolbarContext: DataTableSelectionToolbarContext<TData> = {\n\t\ttable,\n\t\tselectedRows,\n\t\tselectedRowCount,\n\t\ttotalRowCount: data.length,\n\t\trowSelection,\n\t\tclearSelection,\n\t};\n\tconst bulkActionNode =\n\t\ttypeof bulkActions === 'function'\n\t\t\t? bulkActions(selectionToolbarContext)\n\t\t\t: bulkActions;\n\tconst defaultSelectionToolbar = selectedRowCount > 0 ? (\n\t\t<div\n\t\t\tdata-component=\"data-table-selection-toolbar\"\n\t\t\tdata-slot=\"data-table-selection-toolbar\"\n\t\t\tclassName={cn(\n\t\t\t\t\t'data-table-selection-toolbar--component flex min-w-0 flex-col gap-space-md border-b border-border/70 bg-muted/35 px-surface py-row-y @2xl/data-table:flex-row @2xl/data-table:items-center @2xl/data-table:justify-between',\n\t\t\t\tstickyToolbar && 'sticky top-0 z-20 bg-card/95 backdrop-blur',\n\t\t\t\tselectionToolbarClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Text className=\"data-table-selection-toolbar--summary min-w-0\">\n\t\t\t\t{strings.selection.summary(selectedRowCount, data.length)}\n\t\t\t</Text>\n\t\t\t<div\n\t\t\t\tdata-slot=\"data-table-selection-toolbar-actions\"\n\t\t\t\t\tclassName=\"data-table-selection-toolbar--actions flex shrink-0 flex-wrap items-center gap-space-md\"\n\t\t\t>\n\t\t\t\t{bulkActionNode}\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t>\n\t\t\t\t\t{strings.selection.clear}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t) : null;\n\tconst selectionToolbarNode = (() => {\n\t\tif (!enableRowSelection || selectedRowCount === 0) return null;\n\t\tif (selectionToolbar === null || selectionToolbar === false) return null;\n\t\tif (typeof selectionToolbar === 'function') {\n\t\t\treturn selectionToolbar(selectionToolbarContext);\n\t\t}\n\t\treturn selectionToolbar ?? defaultSelectionToolbar;\n\t})();\n\tconst tableAreaStyle = useMemo<CSSProperties | undefined>(() => {\n\t\tif (!resolvedMaxBodyHeight) return undefined;\n\t\treturn { '--data-table-body-max-height': resolvedMaxBodyHeight } as CSSProperties;\n\t}, [resolvedMaxBodyHeight]);\n\tconst shouldUseScrollableTableContainer =\n\t\tfullscreen || fillAvailableHeight || resolvedMaxBodyHeight !== undefined;\n\n\tuseEffect(() => {\n\t\tconst scrollRegion = tableAreaRef.current?.querySelector<HTMLElement>('[data-slot=\"table-container\"]');\n\t\tif (!scrollRegion) return;\n\n\t\tscrollRegion.tabIndex = 0;\n\t\tscrollRegion.setAttribute('aria-label', strings.accessibility.scrollRegion);\n\t}, [strings.accessibility.scrollRegion]);\n\n\tconst Provider = DataTableSizeContext.Provider;\n\tconst resolvedTextSize = textSizeByDataTableSize[resolvedSize];\n\n\treturn (\n\t\t<Provider value={resolvedTextSize}>\n\t\t{/*\n\t\t * Full screen paints over the whole viewport, navigation included, so it\n\t\t * is modal whether or not it was designed as one. `role`/`aria-modal` say\n\t\t * so, and `useFullscreenTableModality` supplies the behaviour that claim\n\t\t * obliges: Escape leaves, Tab stays inside, focus returns to the toggle.\n\t\t */}\n\t\t<div\n\t\t\tref={fullscreenRegionRef}\n\t\t\trole={fullscreen ? 'dialog' : undefined}\n\t\t\taria-modal={fullscreen ? true : undefined}\n\t\t\taria-label={fullscreen ? strings.accessibility.fullscreenRegion : undefined}\n\t\t\tclassName={cn(\n\t\t\t'data-table--component @container/data-table',\n\t\t\tfullscreen\n\t\t\t\t? 'fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-surface'\n\t\t\t\t: cn(\n\t\t\t\t\t'w-full min-w-0 max-w-full',\n\t\t\t\t\tfillAvailableHeight && 'flex h-full min-h-0 flex-col',\n\t\t\t\t\tsurface === 'card' &&\n\t\t\t\t\t\t'overflow-hidden rounded-radius border border-border bg-card shadow-[0_1px_3px_0_color-mix(in_oklch,var(--foreground)_4%,transparent)]',\n\t\t\t\t\tsurface === 'glass' &&\n\t\t\t\t\t\t'rounded-radius-md overflow-hidden border border-border/60',\n\t\t\t\t\t// `flat` renders no chrome — consumer wraps.\n\t\t\t\t\twrapperClassName,\n\t\t\t\t),\n\t\t)}>\n\t\t\t{!!(filterTarget || topbarContent || topbarEnd || enableColumnVisibility || showFullscreenToggle) && (\n\t\t\t\t<div className={cn('relative', stickyToolbar && 'sticky top-0 z-20 bg-card/95 backdrop-blur')}>\n\n\t\t\t\t\t<div className={cn(\n\t 'data-table-topbar grid gap-space-lg px-surface py-row-y @2xl/data-table:grid-cols-[minmax(0,1fr)_auto] @2xl/data-table:items-end',\n\t\t\t\t\t\tfullscreen ? 'mb-space-lg shrink-0' : 'mb-0',\n\t\t\t\t\t\ttopbarClassName,\n\t\t\t\t\t)}>\n\t\t\t\t\t\t<div className=\"data-table-topbar-left flex min-w-0 flex-col gap-space-md\">\n\t\t\t\t\t\t\t{topbarContent}\n\t\t\t\t\t\t\t{filterTarget && (\n\t\t\t\t\t\t\t\t<div className=\"min-w-0 max-w-sm\">\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\taria-label={searchPlaceholder}\n\t\t\t\t\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\t\t\t\t\tvalue={(filterTarget.getFilterValue() as string) ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => filterTarget.setFilterValue(event.target.value)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"data-table-topbar-right flex flex-wrap items-center justify-end gap-space-md\">\n\t\t\t\t\t\t\t{topbarEnd}\n\t\t\t\t\t\t\t<DataTableToolbar\n\t\t\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\t\t\ttableAreaRef={tableAreaRef}\n\t\t\t\t\t\t\t\tfullscreen={fullscreen}\n\t\t\t\t\t\t\t\tonFullscreenChange={handleFullscreenChange}\n\t\t\t\t\t\t\t\tshowFullscreenToggle={showFullscreenToggle}\n\t\t\t\t\t\t\t\tenableColumnVisibility={enableColumnVisibility}\n\t\t\t\t\t\t\t\tlabelVisibility={toolbarLabelVisibility}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\t\t\t\t\t<Separator />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{selectionToolbarNode}\n\n\t\t\t<div\n\t\t\t\tref={tableAreaRef}\n\t\t\t\tstyle={tableAreaStyle}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'min-h-0',\n\t\t\t\t\tshouldUseScrollableTableContainer ? 'overflow-hidden' : innerClassName,\n\t\t\t\t\t(fullscreen || fillAvailableHeight) && 'flex-1',\n\t\t\t\t)}\n\t\t\t>\n\n\t\t\t\t<Table\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'relative',\n\t\t\t\t\t\tsizeClassByDataTableSize[resolvedSize],\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tcontainerClassName={cn(\n\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t\tshouldUseScrollableTableContainer && 'overflow-auto',\n\t\t\t\t\t\tresolvedMaxBodyHeight !== undefined && 'max-h-(--data-table-body-max-height)',\n\t\t\t\t\t\t(fullscreen || fillAvailableHeight) && 'h-full min-h-0',\n\t\t\t\t\t\ttableContainerClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<DataTableHeader\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tstickyHeader={stickyHeader}\n\t\t\t\t\t\theaderClassName={headerClassName}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tcolumnGroups={columnGroups}\n\t\t\t\t\t\theaderTransparent={headerTransparent}\n\t\t\t\t\t/>\n\t\t\t\t\t<DataTableBody\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t\temptyStateMessage={resolvedEmptyStateMessage}\n\t\t\t\t\t\temptyStateAction={emptyStateAction}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\trowClassName={tableRowClasses}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t/>\n\t\t\t\t</Table>\n\t\t\t</div>\n\t\t\t{!!shouldShow && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator />\n\t\t\t\t\t<Pagination\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonPageChange={onPageChange}\n\t\t\t\t\t\tpageQueryKey={resolvedPageQueryKey}\n\t\t\t\t\t\tlabels={strings.pagination}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{!!footerContent && (\n\t\t\t\t<div\n\t\t\t\t\tdata-slot=\"data-table-footer\"\n\t\t\t\t\t\tclassName=\"data-table--footer border-t border-border/70 px-surface py-row-y\"\n\t\t\t\t>\n\t\t\t\t\t{footerContent}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t\t</Provider>\n\t);\n}\n\nDataTable.displayName = 'DataTable';\n","import { Input } from '../../base/text-inputs';\nimport { ColumnVisibilityToggle } from './column-visibility-toggle';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableFilterBarProps } from './table.types';\n\nimport { cn } from '../../../lib/utils';\nexport function DataTableFilterBar<TData>({\n\t\t\t\t\t\t\t\t\t\t\t table,\n\t\t\t\t\t\t\t\t\t\t\t filterColumn,\n\t\t\t\t\t\t\t\t\t\t\t filterPlaceholder,\n\t\t\t\t\t\t\t\t\t\t\t enableColumnVisibility = false,\n\t\t\t\t\t\t\t\t\t\t\t customContent,\n\t\t\t\t\t\t\t\t\t\t strings = defaultDataTableStrings,\n\t\t\t\t\t\t\t\t\t }: DataTableFilterBarProps<TData>) {\n\tif (!filterColumn && !enableColumnVisibility && !customContent) {\n\t\treturn null;\n\t}\n\n\tconst searchPlaceholder = filterPlaceholder ?? strings.filter.searchPlaceholder;\n\n\treturn (\n\t\t<div className={cn('filter-bar--component', 'flex items-center justify-between p-surface')}>\n\t\t\t<div className=\"flex flex-1 items-center space-x-space-md\">\n\t\t\t\t{/* Filter input */}\n\t\t\t\t{!!filterColumn && (\n\t <Input\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={(table.getColumn(filterColumn)?.getFilterValue() as string) ?? ''}\n\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\tconst value = event.target.value;\n\t\t\t\t\t\t\ttable.getColumn(filterColumn)?.setFilterValue(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"max-w-sm\"\n\t\t\t\t\t/>\n\t )}\n\n\t\t\t\t{/* Custom content */}\n\t\t\t\t{customContent}\n\t\t\t</div>\n\n\t\t\t{/* Column visibility toggle */}\n\t\t\t\t{!!enableColumnVisibility && (\n\t\t\t\t\t<ColumnVisibilityToggle\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\tlabelVisibility=\"responsive\"\n\t\t\t\t\t\tclassName=\"ml-auto\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDataTableFilterBar.displayName = 'DataTableFilterBar';\n","import { isValidElement, type ReactElement, type ReactNode } from 'react';\nimport type { Locale } from 'date-fns';\n\nimport {\n\tDate as DateValue,\n\tDateTime,\n\tEmail,\n\tEmptyValue,\n\tFileSize,\n\ttype FileSizeUnit,\n\tLink,\n\tMoney,\n\ttype MoneyProps,\n\tMonoValue,\n\tMutedValue,\n\tName,\n\tNumber as NumberValue,\n\tPercent,\n\tPhone,\n\tRelativeTime,\n\tSecondaryValue,\n\tTime,\n\tUrl,\n\tValue,\n} from '../../../primitives';\nimport { cn } from '../../../../lib/utils';\n\nexport type CellValueKind =\n\t| 'value'\n\t| 'secondary'\n\t| 'muted'\n\t| 'name'\n\t| 'mono'\n\t| 'link'\n\t| 'email'\n\t| 'phone'\n\t| 'url'\n\t| 'money'\n\t| 'number'\n\t| 'percent'\n\t| 'fileSize'\n\t| 'date'\n\t| 'time'\n\t| 'dateTime'\n\t| 'relativeTime';\n\nexport type PrimitiveCellValue = string | number | Date | null | undefined;\n\n/**\n * A value plus the formatting needed to render it.\n *\n * `kind` selects the display primitive; every other option applies only to the\n * kinds noted below and is ignored otherwise, so one descriptor shape can\n * describe any cell in a column definition.\n */\nexport interface CellValueDescriptor {\n\t/** The raw value. Empty values render the missing state instead. */\n\tvalue?: PrimitiveCellValue;\n\t/** Which primitive renders the value. Defaults to `value`. */\n\tkind?: CellValueKind;\n\t/** Pre-rendered content used verbatim, bypassing `kind` and all formatting. */\n\tdisplay?: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\t/** ISO currency code. `money` only. */\n\tcurrency?: string;\n\t/** Whether the currency shows as a symbol, code, or name. `money` only. */\n\tcurrencyDisplay?: MoneyProps['currencyDisplay'];\n\t/** Smallest number of decimals to show. `money`, `number`, and `percent`. */\n\tminimumFractionDigits?: number;\n\t/** Largest number of decimals to show. `money`, `number`, and `percent`. */\n\tmaximumFractionDigits?: number;\n\t/** Selects the compact or full money presentation. `money` only. */\n\tformatMode?: MoneyProps['formatMode'];\n\t/** BCP 47 locale for number and currency formatting. */\n\tlocale?: string;\n\t/** date-fns `Locale` for date and time formatting. */\n\tdateLocale?: Locale;\n\t/** Unit the raw value is already expressed in. `fileSize` only. */\n\tfrom?: FileSizeUnit;\n\t/** Renders the zero value rather than the missing state. */\n\tforce?: boolean;\n\t/** Escape hatch passed to `Intl.NumberFormat`. `number` and `percent`. */\n\toptions?: Intl.NumberFormatOptions;\n\t/** Treats the value as a fraction and scales it to a percentage. `percent` only. */\n\tscaled?: boolean;\n\t/** date-fns pattern, overriding `datePreset`. `date` and `dateTime`. */\n\tdateFormat?: string;\n\t/** Named date length. `date` and `dateTime`. */\n\tdatePreset?: 'compact' | 'short' | 'medium' | 'long';\n\t/** date-fns pattern for the time portion. `time` and `dateTime`. */\n\ttimeFormat?: string;\n\t/** Copy shown in place of an empty value. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport type CellValueTuple = readonly [\n\tvalue: PrimitiveCellValue,\n\tkind?: CellValueKind,\n\toptions?: Omit<CellValueDescriptor, 'value' | 'kind'>,\n];\n\nexport type CellStackValue =\n\t| PrimitiveCellValue\n\t| false\n\t| ReactElement\n\t| CellValueDescriptor\n\t| CellValueTuple;\n\nexport interface CellValueProps extends Omit<CellValueDescriptor, 'className' | 'display'> {\n\t/** The value to display. When empty, renders fallback with muted styling. */\n\tvalue?: PrimitiveCellValue;\n\t/** Which primitive should render the value. Defaults to Value. */\n\tkind?: CellValueKind;\n\t/** Text shown when value is missing. Defaults to '--'. */\n\tfallback?: ReactNode;\n\t/** Force missing state regardless of value emptiness. */\n\tmissing?: boolean;\n\t/** Additional class names. */\n\tclassName?: string;\n\t/** Children override. When provided, renders children directly with missing styling applied. */\n\tchildren?: ReactNode;\n}\n\nexport interface CellStackProps {\n\t/** Values are filtered for null, undefined, and empty strings, then capped at four rows. */\n\tvalues?: readonly CellStackValue[];\n\t/** Copy shown when every value is empty. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the item. */\n\titemClassName?: string;\n\t/** Merged onto the primary. */\n\tprimaryClassName?: string;\n\t/** Merged onto the secondary. */\n\tsecondaryClassName?: string;\n\t/** Weight of the first row, which reads as the cell's primary value. */\n\tprimaryWeight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}\n\nfunction isMissingPrimitive(value: PrimitiveCellValue | false) {\n\tif (value === false || value === null || value === undefined) return true;\n\tif (typeof value === 'string') return value.trim() === '';\n\treturn false;\n}\n\nfunction isMissingDisplay(value: ReactNode) {\n\treturn value === null || value === undefined;\n}\n\nfunction isDescriptor(value: CellStackValue): value is CellValueDescriptor {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t!Array.isArray(value) &&\n\t\t!isValidElement(value) &&\n\t\t!(value instanceof Date)\n\t);\n}\n\nfunction isTuple(value: CellStackValue): value is CellValueTuple {\n\treturn Array.isArray(value);\n}\n\nfunction normalizeTuple(value: CellValueTuple): CellValueDescriptor {\n\tconst [rawValue, kind, options] = value;\n\treturn {\n\t\t...options,\n\t\tvalue: rawValue,\n\t\tkind,\n\t};\n}\n\nfunction normalizeCellValue(value: CellStackValue): CellValueDescriptor | ReactElement | null {\n\tif (value === false) return null;\n\tif (isValidElement(value)) return value;\n\tif (isTuple(value)) {\n\t\tconst descriptor = normalizeTuple(value);\n\t\treturn isMissingPrimitive(descriptor.value) && isMissingDisplay(descriptor.display) ? null : descriptor;\n\t}\n\tif (isDescriptor(value)) {\n\t\treturn isMissingPrimitive(value.value) && isMissingDisplay(value.display) ? null : value;\n\t}\n\treturn isMissingPrimitive(value) ? null : { value: value as PrimitiveCellValue };\n}\n\nfunction stringValue(value: PrimitiveCellValue) {\n\treturn value instanceof Date ? value.toISOString() : String(value ?? '');\n}\n\nfunction renderPrimitiveCellValue({\n\tdescriptor,\n\tindex = 0,\n\temptyLabel,\n\tclassName,\n\tprimaryWeight = 'medium',\n}: {\n\tdescriptor: CellValueDescriptor;\n\tindex?: number;\n\temptyLabel: ReactNode;\n\tclassName?: string;\n\tprimaryWeight?: NonNullable<CellStackProps['primaryWeight']>;\n}) {\n\tconst isPrimary = index === 0;\n\tconst kind = descriptor.kind ?? (isPrimary ? 'value' : 'secondary');\n\tconst value = descriptor.value;\n\tconst display: ReactNode = descriptor.display ?? (value instanceof Date ? stringValue(value) : value);\n\tconst resolvedEmptyLabel = descriptor.emptyLabel ?? emptyLabel;\n\tconst resolvedClassName = cn(className, descriptor.className);\n\tconst weight = isPrimary ? primaryWeight : 'regular';\n\n\tswitch (kind) {\n\t\tcase 'secondary':\n\t\t\treturn (\n\t\t\t\t<SecondaryValue size=\"inherit\" className={resolvedClassName}>\n\t\t\t\t\t{display}\n\t\t\t\t</SecondaryValue>\n\t\t\t);\n\t\tcase 'muted':\n\t\t\treturn (\n\t\t\t\t<MutedValue size=\"inherit\" className={resolvedClassName}>\n\t\t\t\t\t{display}\n\t\t\t\t</MutedValue>\n\t\t\t);\n\t\tcase 'name':\n\t\t\treturn (\n\t\t\t\t<Name\n\t\t\t\t\tvalue={descriptor.display === undefined && typeof value === 'string' ? value : undefined}\n\t\t\t\t\tforce={descriptor.force}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t>\n\t\t\t\t\t{descriptor.display}\n\t\t\t\t</Name>\n\t\t\t);\n\t\tcase 'mono':\n\t\t\treturn (\n\t\t\t\t<MonoValue size=\"inherit\" weight={weight} className={resolvedClassName}>\n\t\t\t\t\t{display}\n\t\t\t\t</MonoValue>\n\t\t\t);\n\t\tcase 'link': {\n\t\t\tconst href = descriptor.href ?? stringValue(value);\n\t\t\treturn (\n\t\t\t\t<Link href={href} emptyLabel={resolvedEmptyLabel} className={resolvedClassName}>\n\t\t\t\t\t{display}\n\t\t\t\t</Link>\n\t\t\t);\n\t\t}\n\t\tcase 'email':\n\t\t\treturn (\n\t\t\t\t<Email\n\t\t\t\t\tvalue={typeof value === 'string' ? value : undefined}\n\t\t\t\t\tdisplay={descriptor.display}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'phone':\n\t\t\treturn (\n\t\t\t\t<Phone\n\t\t\t\t\tvalue={typeof value === 'string' ? value : undefined}\n\t\t\t\t\tdisplay={descriptor.display}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'url':\n\t\t\treturn (\n\t\t\t\t<Url\n\t\t\t\t\tvalue={typeof value === 'string' ? value : undefined}\n\t\t\t\t\tdisplay={descriptor.display}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'money':\n\t\t\treturn (\n\t\t\t\t<Money\n\t\t\t\t\tamount={typeof value === 'number' || typeof value === 'string' ? value : null}\n\t\t\t\t\tcurrency={descriptor.currency}\n\t\t\t\t\tlocale={descriptor.locale}\n\t\t\t\t\tcurrencyDisplay={descriptor.currencyDisplay}\n\t\t\t\t\tminimumFractionDigits={descriptor.minimumFractionDigits}\n\t\t\t\t\tmaximumFractionDigits={descriptor.maximumFractionDigits}\n\t\t\t\t\tformatMode={descriptor.formatMode}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'number':\n\t\t\treturn (\n\t\t\t\t<NumberValue\n\t\t\t\t\tvalue={typeof value === 'number' || typeof value === 'string' ? value : null}\n\t\t\t\t\tlocale={descriptor.locale}\n\t\t\t\t\toptions={descriptor.options}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'percent':\n\t\t\treturn (\n\t\t\t\t<Percent\n\t\t\t\t\tvalue={typeof value === 'number' || typeof value === 'string' ? value : null}\n\t\t\t\t\tlocale={descriptor.locale}\n\t\t\t\t\tscaled={descriptor.scaled}\n\t\t\t\t\toptions={descriptor.options}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'fileSize':\n\t\t\treturn (\n\t\t\t\t<FileSize\n\t\t\t\t\tvalue={typeof value === 'number' ? value : null}\n\t\t\t\t\tfrom={descriptor.from}\n\t\t\t\t\tlocale={descriptor.locale}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'date':\n\t\t\treturn (\n\t\t\t\t<DateValue\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tformat={descriptor.dateFormat}\n\t\t\t\t\tpreset={descriptor.datePreset}\n\t\t\t\t\tlocale={descriptor.dateLocale}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'time':\n\t\t\treturn (\n\t\t\t\t<Time\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tformat={descriptor.timeFormat}\n\t\t\t\t\tlocale={descriptor.dateLocale}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'dateTime':\n\t\t\treturn (\n\t\t\t\t<DateTime\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tformat={descriptor.dateFormat}\n\t\t\t\t\ttimeFormat={descriptor.timeFormat}\n\t\t\t\t\tpreset={descriptor.datePreset}\n\t\t\t\t\tlocale={descriptor.dateLocale}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'relativeTime':\n\t\t\treturn (\n\t\t\t\t<RelativeTime\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tlocale={descriptor.dateLocale}\n\t\t\t\t\temptyLabel={resolvedEmptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight={weight}\n\t\t\t\t\tclassName={resolvedClassName}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'value':\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<Value size=\"inherit\" weight={weight} className={resolvedClassName}>\n\t\t\t\t\t{display}\n\t\t\t\t</Value>\n\t\t\t);\n\t}\n}\n\n/**\n * Table cell value with primitive-backed formatting and automatic missing-value treatment.\n *\n * @example\n * <CellValue value={booking.reference} kind=\"mono\" />\n * <CellValue value={booking.total} kind=\"money\" />\n */\nexport function CellValue({\n\tvalue,\n\tkind,\n\thref,\n\tcurrency,\n\tcurrencyDisplay,\n\tminimumFractionDigits,\n\tmaximumFractionDigits,\n\tformatMode,\n\tlocale,\n\tdateLocale,\n\tfrom,\n\tforce,\n\toptions,\n\tscaled,\n\tdateFormat,\n\tdatePreset,\n\ttimeFormat,\n\temptyLabel,\n\tfallback = '--',\n\tmissing,\n\tclassName,\n\tchildren,\n}: CellValueProps) {\n\tconst isMissing = missing ?? isMissingPrimitive(value);\n\n\tif (children !== undefined) {\n\t\tconst Primitive = isMissing ? EmptyValue : Value;\n\t\treturn (\n\t\t\t<Primitive\n\t\t\t\tsize=\"inherit\"\n\t\t\t\tclassName={cn('cell-value--component', className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Primitive>\n\t\t);\n\t}\n\n\tif (isMissing) {\n\t\treturn (\n\t\t\t<EmptyValue size=\"inherit\" className={cn('cell-value--component', className)}>\n\t\t\t\t{emptyLabel ?? fallback}\n\t\t\t</EmptyValue>\n\t\t);\n\t}\n\n\treturn renderPrimitiveCellValue({\n\t\tdescriptor: {\n\t\t\tvalue,\n\t\t\tkind,\n\t\t\thref,\n\t\t\tcurrency,\n\t\t\tcurrencyDisplay,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t\tformatMode,\n\t\t\tlocale,\n\t\t\tdateLocale,\n\t\t\tfrom,\n\t\t\tforce,\n\t\t\toptions,\n\t\t\tscaled,\n\t\t\tdateFormat,\n\t\t\tdatePreset,\n\t\t\ttimeFormat,\n\t\t\temptyLabel,\n\t\t\tclassName: 'cell-value--component',\n\t\t},\n\t\temptyLabel: emptyLabel ?? fallback,\n\t\tclassName,\n\t});\n}\n\n/**\n * Table cell stack for primary + secondary value rows.\n *\n * Values are normalized, null/undefined/empty-string entries are skipped, and\n * only the first four visible rows render. The first visible primitive defaults\n * to normal `Value`; later primitive rows default to smaller `SecondaryValue`.\n * Pass tuples/descriptors to opt into richer primitives such as `email`,\n * `phone`, `name`, `money`, `fileSize`, or `date`.\n *\n * @example\n * <CellStack values={[\n * booking.contactName,\n * [booking.contactEmail, 'email'],\n * [booking.contactPhone, 'phone'],\n * ]} />\n */\nexport function CellStack({\n\tvalues = [],\n\temptyLabel = '--',\n\tclassName,\n\titemClassName,\n\tprimaryClassName,\n\tsecondaryClassName,\n\tprimaryWeight = 'medium',\n}: CellStackProps) {\n\tconst visibleValues = values\n\t\t.map(normalizeCellValue)\n\t\t.filter((value): value is CellValueDescriptor | ReactElement => value !== null)\n\t\t.slice(0, 4);\n\n\tif (visibleValues.length === 0) {\n\t\treturn (\n\t\t\t<EmptyValue size=\"inherit\" className={cn('cell-stack--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</EmptyValue>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('cell-stack--component flex min-w-0 flex-col items-start gap-space-2xs', className)}>\n\t\t\t{visibleValues.map((value, index) => {\n\t\t\t\tconst isPrimary = index === 0;\n\t\t\t\tconst resolvedClassName = cn(\n\t\t\t\t\t'cell-stack--item min-w-0 max-w-full truncate',\n\t\t\t\t\t!isPrimary && 'text-xs',\n\t\t\t\t\titemClassName,\n\t\t\t\t\tisPrimary ? primaryClassName : secondaryClassName,\n\t\t\t\t);\n\n\t\t\t\tif (isValidElement(value)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={index} className={resolvedClassName}>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={index} className={resolvedClassName}>\n\t\t\t\t\t\t{renderPrimitiveCellValue({\n\t\t\t\t\t\t\tdescriptor: value,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\temptyLabel,\n\t\t\t\t\t\t\tclassName: cn('leading-tight', !isPrimary && 'text-xs'),\n\t\t\t\t\t\t\tprimaryWeight,\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nCellValue.displayName = 'CellValue';\nCellStack.displayName = 'CellStack';\n","import type { AnchorHTMLAttributes } from 'react';\n\nimport { Link } from '../../../primitives';\nimport { cn } from '../../../../lib/utils';\n\nexport type TableLinkProps = AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const TableLink = ({ className, ...props }: TableLinkProps) => {\n\treturn (\n\t\t<Link\n\t\t\tclassName={cn(\n\t\t\t\t'table-link--component',\n\t\t\t\t'underline decoration-link-color/35 decoration-dotted underline-offset-2 hover:decoration-link-color',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\t\t</Link>\n\t);\n};\n","import type { ComponentType, ReactNode } from 'react';\nimport { Mail, type LucideIcon } from 'lucide-react';\n\nimport { Badge, type BadgeTone } from '../../../base/badge';\nimport { Stack } from '../../../base/structure';\nimport { formatInitials } from '../../../primitives/initials-format';\nimport { Text, TextLink } from '../../../typography';\nimport { EMPTY } from '../../../../lib/format';\nimport { cn } from '../../../../lib/utils';\n\nexport interface ResourceCellMetadataItem {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** Display label. */\n\tlabel?: ReactNode;\n\tvalue: ReactNode;\n}\n\nexport type ResourceCellBadge =\n\t| ReactNode\n\t| ({\n\t\t\tid?: string;\n\t\t\tlabel: ReactNode;\n\t\t\ttone?: BadgeTone;\n\t\t\ticon?: LucideIcon;\n\t\t\tdot?: boolean;\n\t });\n\nexport interface ResourceCellLinkProps {\n\t/** Destination for the entry, when it navigates. */\n\thref: string;\n\tchildren: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t'aria-label'?: string;\n}\n\nexport interface ResourceCellProps {\n\t/** Surface title. */\n\ttitle?: ReactNode;\n\t/** Secondary line under the title. */\n\tsubtitle?: ReactNode;\n\t/** Label/value facts rendered as a metadata list. */\n\tmetadata?: ReactNode | readonly ResourceCellMetadataItem[];\n\t/** Status chips shown after the title. */\n\tbadges?: readonly ResourceCellBadge[];\n\t/** Thumbnail source. Falls back to `icon`, then `fallback`, when absent or broken. */\n\timageUrl?: string;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\t/** Media shown when neither `imageUrl` nor `icon` resolves — usually initials. */\n\tfallback?: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\t/** Replaces the default link rendering. */\n\trenderLink?: (props: ResourceCellLinkProps) => ReactNode;\n\t/** Copy shown when the cell has no title. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the media. */\n\tmediaClassName?: string;\n\t/** Merged onto the content. */\n\tcontentClassName?: string;\n\t/** Merged onto the title. */\n\ttitleClassName?: string;\n\t/** Merged onto the subtitle. */\n\tsubtitleClassName?: string;\n}\n\nfunction renderResourceBadge(badge: ResourceCellBadge, index: number): ReactNode {\n\tif (\n\t\tbadge &&\n\t\ttypeof badge === 'object' &&\n\t\t!('type' in badge) &&\n\t\t'label' in badge\n\t) {\n\t\tconst Icon = badge.icon;\n\t\treturn (\n\t\t\t<Badge key={badge.id ?? index} tone={badge.tone ?? 'secondary'} dot={badge.dot}>\n\t\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t\t{badge.label}\n\t\t\t</Badge>\n\t\t);\n\t}\n\n\treturn <span key={index}>{badge}</span>;\n}\n\nfunction renderResourceMetadata(metadata: ResourceCellProps['metadata']): ReactNode {\n\tif (!metadata) return null;\n\tif (Array.isArray(metadata)) {\n\t\treturn (\n\t\t\t<span className=\"inline-flex min-w-0 flex-wrap items-center gap-x-space-md gap-y-space-2xs\">\n\t\t\t\t{metadata.map((item, index) => (\n\t\t\t\t\t<span key={item.id ?? index} className=\"inline-flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t{!!item.label && (\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"shrink-0\">\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t{item.value}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn metadata as ReactNode;\n}\n\nexport function ResourceCell({\n\ttitle,\n\tsubtitle,\n\tmetadata,\n\tbadges = [],\n\timageUrl,\n\ticon: IconComponent = Mail,\n\tfallback,\n\thref,\n\trenderLink,\n\temptyLabel = EMPTY,\n\tclassName,\n\tmediaClassName,\n\tcontentClassName,\n\ttitleClassName,\n\tsubtitleClassName,\n}: ResourceCellProps) {\n\tif (!title) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={className}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst titleText = typeof title === 'string' ? title : undefined;\n\tconst initials = titleText\n\t\t? formatInitials(titleText, { strategy: 'first-words' })\n\t\t: '';\n\tconst content = (\n\t\t<Stack render={<span />} gap=\"dense\" className={cn('resource-cell--content', contentClassName)}>\n\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"sm\" wrap={false} className=\"resource-cell--title-row\">\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\tclassName={cn('resource-cell--title truncate', titleClassName)}\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Text>\n\t\t\t\t{badges.length > 0 && (\n\t\t\t\t\t<span className=\"resource-cell--badges inline-flex shrink-0 items-center gap-space-sm\">\n\t\t\t\t\t\t{badges.map(renderResourceBadge)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t{!!subtitle && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName={cn('resource-cell--subtitle truncate', subtitleClassName)}\n\t\t\t\t>\n\t\t\t\t\t{subtitle}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!!metadata && (\n\t\t\t\t<span className=\"resource-cell--metadata min-w-0\">\n\t\t\t\t\t{renderResourceMetadata(metadata)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</Stack>\n\t);\n\tconst cell = (\n\t\t<span className={cn('resource-cell--component inline-flex min-w-0 items-center gap-space-md', className)}>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'resource-cell--media relative inline-flex size-avatar shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground',\n\t\t\t\t\tmediaClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{imageUrl ? (\n\t\t\t\t\t<img src={imageUrl} alt={titleText ?? ''} className=\"absolute inset-0 size-full object-cover\" />\n\t\t\t\t) : fallback ? (\n\t\t\t\t\tfallback\n\t\t\t\t) : initials ? (\n\t\t\t\t\t<Text size=\"inherit\" weight=\"semibold\" className=\"text-sm leading-none\">\n\t\t\t\t\t\t{initials}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<IconComponent className=\"size-icon\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t{content}\n\t\t</span>\n\t);\n\n\tif (!href) return cell;\n\n\tconst linkClassName = 'resource-cell--link inline-flex min-w-0 rounded-radius-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2';\n\tif (renderLink) {\n\t\treturn renderLink({\n\t\t\thref,\n\t\t\tchildren: cell,\n\t\t\tclassName: linkClassName,\n\t\t\t'aria-label': titleText,\n\t\t});\n\t}\n\n\treturn (\n\t\t<TextLink\n\t\t\thref={href}\n\t\t\tsize=\"inherit\"\n\t\t\tunderline={false}\n\t\t\tclassName={linkClassName}\n\t\t\taria-label={titleText}\n\t\t>\n\t\t\t{cell}\n\t\t</TextLink>\n\t);\n}\n\nResourceCell.displayName = 'ResourceCell';\n","/**\n * Reusable cell renderers for DataTable columns.\n *\n * Use these from `column.cell` definitions to keep table preview pages and\n * production code consistent. Every renderer is presentational (no data\n * fetching) and accepts the value plus optional formatting hints.\n *\n * { accessorKey: 'status', cell: ({ getValue }) => <StatusCell value={getValue()} map={STATUS_MAP} /> }\n * { accessorKey: 'createdAt', cell: ({ getValue }) => <DateCell value={getValue()} /> }\n * { accessorKey: 'amount', cell: ({ getValue }) => <CurrencyCell value={getValue()} currency=\"USD\" /> }\n * { accessorKey: 'owner', cell: ({ getValue }) => <AvatarCell name={getValue()} /> }\n */\nimport type { ComponentType, ReactNode } from 'react';\nimport { Calendar, Mail, type LucideIcon } from 'lucide-react';\n\nimport { Badge, type BadgeTone } from '../../../base/badge';\nimport {\n\tDate as DateValue,\n\tMoney,\n\tparseDateInput,\n\ttype DateProps,\n} from '../../../primitives';\nimport { formatInitials } from '../../../primitives/initials-format';\nimport { Text } from '../../../typography';\nimport { EMPTY } from '../../../../lib/format';\nimport { cn } from '../../../../lib/utils';\n\n// ──────────────────────────────────────────────────────────────\n// StatusCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusCellEntry {\n\t/** Display label. */\n\tlabel: ReactNode;\n\ttone?: BadgeTone;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\tdot?: boolean;\n}\n\nexport interface StatusCellProps<TStatus extends string> {\n\t/** The record's status. */\n\tvalue?: TStatus | null;\n\t/** Label and tone for every status this column can show. */\n\tmap: Record<TStatus, StatusCellEntry>;\n\t/** Copy shown when the status is absent or missing from `map`. */\n\t/** Copy shown when the value is absent. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport function StatusCell<TStatus extends string>({\n\tvalue,\n\tmap,\n\temptyLabel = EMPTY,\n\tclassName,\n}: StatusCellProps<TStatus>) {\n\tif (!value || !(value in map)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('status-cell--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst entry = map[value];\n\tconst Icon = entry.icon;\n\treturn (\n\t\t<Badge\n\t\t\ttone={entry.tone ?? 'secondary'}\n\t\t\tclassName={cn('status-cell--component gap-space-sm', className)}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t{entry.label}\n\t\t</Badge>\n\t);\n}\n\nStatusCell.displayName = 'StatusCell';\n\n// ──────────────────────────────────────────────────────────────\n// StatusClusterCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusClusterCellItem {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** Display label. */\n\tlabel: ReactNode;\n\ttone?: BadgeTone;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\tdot?: boolean;\n\thidden?: boolean;\n}\n\nexport interface StatusClusterCellProps {\n\t/** Status chips to show side by side in one cell. */\n\titems?: readonly StatusClusterCellItem[];\n\t/** Copy shown when there are no items. */\n\t/** Copy shown when the value is absent. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the badge. */\n\tbadgeClassName?: string;\n}\n\nexport function StatusClusterCell({\n\titems = [],\n\temptyLabel = EMPTY,\n\tclassName,\n\tbadgeClassName,\n}: StatusClusterCellProps) {\n\tconst visibleItems = items.filter((item) => !item.hidden);\n\n\tif (visibleItems.length === 0) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('status-cluster-cell--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span className={cn('status-cluster-cell--component inline-flex min-w-0 flex-wrap items-center gap-space-sm', className)}>\n\t\t\t{visibleItems.map((item, index) => {\n\t\t\t\tconst Icon = item.icon;\n\t\t\t\treturn (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tkey={item.id ?? index}\n\t\t\t\t\t\ttone={item.tone ?? 'secondary'}\n\t\t\t\t\t\tdot={item.dot}\n\t\t\t\t\t\tclassName={cn('shrink-0', badgeClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</Badge>\n\t\t\t\t);\n\t\t\t})}\n\t\t</span>\n\t);\n}\n\nStatusClusterCell.displayName = 'StatusClusterCell';\n\n// ──────────────────────────────────────────────────────────────\n// DateCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateCellProps {\n\t/** The date to render. */\n\tvalue?: DateProps['value'];\n\t/** date-fns format string. Falls back to the Date primitive/provider default. */\n\tformat?: DateProps['format'];\n\t/** Semantic Date primitive preset. */\n\tpreset?: DateProps['preset'];\n\t/** date-fns locale override. Falls back to UIProvider dates. */\n\tlocale?: DateProps['locale'];\n\t/** Renders the icon. */\n\tshowIcon?: boolean;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\t/** Copy shown when the value is absent. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport function DateCell({\n\tvalue,\n\tformat,\n\tpreset,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n}: DateCellProps) {\n\tconst date = parseDateInput(value);\n\tif (!date) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('date-cell--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn (\n\t\t<span className={cn('date-cell--component inline-flex items-center gap-space-sm', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"size-icon text-muted-foreground\" />}\n\t\t\t<DateValue\n\t\t\t\tvalue={date}\n\t\t\t\tformat={format}\n\t\t\t\tpreset={preset}\n\t\t\t\tlocale={locale}\n\t\t\t\temptyLabel={emptyLabel}\n\t\t\t\tsize=\"inherit\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t/>\n\t\t</span>\n\t);\n}\n\nDateCell.displayName = 'DateCell';\n\n// ──────────────────────────────────────────────────────────────\n// DateMetaCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateMetaCellProps extends DateCellProps {\n\t/** Second line under the date — pass a function to derive it from the value. */\n\tsecondary?: ReactNode | ((date: Date) => ReactNode);\n\t/** Merged onto the primary. */\n\tprimaryClassName?: string;\n\t/** Merged onto the secondary. */\n\tsecondaryClassName?: string;\n}\n\nexport function DateMetaCell({\n\tvalue,\n\tformat,\n\tpreset,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n\tprimaryClassName,\n\tsecondary,\n\tsecondaryClassName,\n}: DateMetaCellProps) {\n\tconst date = parseDateInput(value);\n\tif (!date) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('date-meta-cell--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst secondaryNode = typeof secondary === 'function' ? secondary(date) : secondary;\n\n\treturn (\n\t\t<span className={cn('date-meta-cell--component inline-flex min-w-0 items-start gap-space-sm', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"mt-space-2xs size-icon shrink-0 text-muted-foreground\" />}\n\t\t\t<span className=\"grid min-w-0 gap-space-2xs\">\n\t\t\t\t<DateValue\n\t\t\t\t\tvalue={date}\n\t\t\t\t\tformat={format}\n\t\t\t\t\tpreset={preset}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t\temptyLabel={emptyLabel}\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName={cn('truncate tabular-nums', primaryClassName)}\n\t\t\t\t/>\n\t\t\t\t{!!secondaryNode && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\tclassName={cn('truncate', secondaryClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{secondaryNode}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nDateMetaCell.displayName = 'DateMetaCell';\n\n// ──────────────────────────────────────────────────────────────\n// CurrencyCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface CurrencyCellProps {\n\t/** The amount to render. */\n\tvalue?: number | string | null;\n\t/** ISO currency code. */\n\tcurrency?: string;\n\t/** BCP 47 locale for the amount. */\n\tlocale?: string;\n\t/** Copy shown when the amount is absent. */\n\t/** Copy shown when the value is absent. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Weight of the amount. */\n\tweight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}\n\nexport function CurrencyCell({\n\tvalue,\n\tcurrency,\n\tlocale,\n\temptyLabel = EMPTY,\n\tclassName,\n\tweight = 'semibold',\n}: CurrencyCellProps) {\n\treturn (\n\t\t<Money\n\t\t\tamount={value}\n\t\t\tcurrency={currency}\n\t\t\tlocale={locale}\n\t\t\tformatMode={currency ? 'with_symbol' : 'decimal'}\n\t\t\temptyLabel={emptyLabel}\n\t\t\tsize=\"inherit\"\n\t\t\tweight={weight}\n\t\t\tclassName={cn('currency-cell--component tabular-nums', className)}\n\t\t/>\n\t);\n}\n\nCurrencyCell.displayName = 'CurrencyCell';\n\n// ──────────────────────────────────────────────────────────────\n// AvatarCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface AvatarCellProps {\n\t/** Display name. */\n\tname?: string | null;\n\t/** Avatar source. Falls back to initials when absent or broken. */\n\timageUrl?: string;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\t/** Secondary line under the name. */\n\tsubtitle?: ReactNode;\n\t/** Copy shown when the value is absent. */\n\temptyLabel?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport function AvatarCell({\n\tname,\n\timageUrl,\n\ticon: IconComponent = Mail,\n\tsubtitle,\n\temptyLabel = EMPTY,\n\tclassName,\n}: AvatarCellProps) {\n\tif (!name || name.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('avatar-cell--component', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn (\n\t\t<span className={cn('avatar-cell--component inline-flex items-center gap-space-md', className)}>\n\t\t\t<span className=\"relative inline-flex size-avatar-sm shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground\">\n\t\t\t\t{imageUrl ? (\n\t\t\t\t\t<img src={imageUrl} alt={name} className=\"absolute inset-0 size-full object-cover\" />\n\t\t\t\t) : name.length > 0 ? (\n\t\t\t\t\t<Text size=\"inherit\" weight=\"semibold\" className=\"text-sm leading-none\">\n\t\t\t\t\t\t{formatInitials(name, { strategy: 'first-words' })}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<IconComponent className=\"size-icon\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t<span className=\"min-w-0 inline-flex flex-col\">\n\t\t\t\t<Text size=\"inherit\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!subtitle && (\n\t\t\t\t\t<Text size=\"inherit\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nAvatarCell.displayName = 'AvatarCell';\n\nexport {\n\tResourceCell,\n\ttype ResourceCellBadge,\n\ttype ResourceCellLinkProps,\n\ttype ResourceCellMetadataItem,\n\ttype ResourceCellProps,\n} from './resource-cell';\n"],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ "use client";
2
+ import { useStrings as e } from "./lib/strings.js";
3
+ import { t } from "./utils-C2EKeIw3.js";
4
+ import { n } from "./buttons-Co6GavvM.js";
5
+ import { a as r } from "./typography-Cv8MT-82.js";
6
+ import { t as i } from "./structure-BvW4vG4H.js";
7
+ import { t as a } from "./scroll-area-BheMQ270.js";
8
+ import { useLayoutEffect as o, useRef as s, useState as c } from "react";
9
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ import { ChevronLeft as d, ChevronRight as f } from "lucide-react";
11
+ import { cva as p } from "class-variance-authority";
12
+ import { Tabs as m } from "@base-ui/react/tabs";
13
+ //#region src/components/base/navigation/tab-scroll-viewport.tsx
14
+ var h = {
15
+ previous: "Previous tabs",
16
+ next: "Next tabs"
17
+ };
18
+ function g({ children: t, strings: r }) {
19
+ let p = e(h, r), m = s(null), g = s(null), [_, v] = c({
20
+ overflow: !1,
21
+ start: !0,
22
+ end: !0
23
+ });
24
+ o(() => {
25
+ let e = g.current;
26
+ if (!e) return;
27
+ let t = () => {
28
+ let t = e.scrollWidth - e.clientWidth, n = Math.abs(e.scrollLeft), r = m.current?.clientWidth || e.clientWidth, i = {
29
+ overflow: e.scrollWidth > r + 1,
30
+ start: n <= 1,
31
+ end: n >= t - 1
32
+ };
33
+ v((e) => e.overflow === i.overflow && e.start === i.start && e.end === i.end ? e : i);
34
+ }, n = () => {
35
+ let n = e.querySelector("[aria-selected=\"true\"], [aria-current=\"page\"]");
36
+ if (n) {
37
+ let t = e.getBoundingClientRect(), r = n.getBoundingClientRect();
38
+ r.left < t.left ? e.scrollLeft += r.left - t.left : r.right > t.right && (e.scrollLeft += r.right - t.right);
39
+ }
40
+ t();
41
+ };
42
+ t(), e.addEventListener("scroll", t, { passive: !0 });
43
+ let r = typeof ResizeObserver > "u" ? null : new ResizeObserver(n);
44
+ r?.observe(e), m.current && r?.observe(m.current), e.firstElementChild && r?.observe(e.firstElementChild);
45
+ let i = new MutationObserver(n);
46
+ return i.observe(e, {
47
+ subtree: !0,
48
+ attributes: !0,
49
+ attributeFilter: ["aria-selected", "aria-current"]
50
+ }), n(), () => {
51
+ e.removeEventListener("scroll", t), r?.disconnect(), i.disconnect();
52
+ };
53
+ }, []);
54
+ let y = (e) => {
55
+ let t = g.current;
56
+ if (!t) return;
57
+ let n = getComputedStyle(t).direction === "rtl", r = window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
58
+ t.scrollBy({
59
+ left: e * (n ? -1 : 1) * t.clientWidth * .75,
60
+ behavior: r ? "instant" : "smooth"
61
+ });
62
+ };
63
+ return /* @__PURE__ */ u(i, {
64
+ ref: m,
65
+ direction: "horizontal",
66
+ gap: "xs",
67
+ align: "center",
68
+ wrap: !1,
69
+ className: "tab-scroll--component w-full min-w-0",
70
+ children: [
71
+ _.overflow && /* @__PURE__ */ l(n, {
72
+ size: "sm",
73
+ iconOnly: !0,
74
+ icon: d,
75
+ tone: "secondary",
76
+ buttonStyle: "ghost",
77
+ "aria-label": p.previous,
78
+ disabled: _.start,
79
+ onClick: () => y(-1),
80
+ className: "shrink-0 rtl:[&_svg]:rotate-180"
81
+ }),
82
+ /* @__PURE__ */ l(a, {
83
+ orientation: "horizontal",
84
+ viewportRef: g,
85
+ className: "min-w-0 flex-1",
86
+ viewportClassName: "px-space-xs pt-space-xs pb-space-xl",
87
+ children: t
88
+ }),
89
+ _.overflow && /* @__PURE__ */ l(n, {
90
+ size: "sm",
91
+ iconOnly: !0,
92
+ icon: f,
93
+ tone: "secondary",
94
+ buttonStyle: "ghost",
95
+ "aria-label": p.next,
96
+ disabled: _.end,
97
+ onClick: () => y(1),
98
+ className: "shrink-0 rtl:[&_svg]:rotate-180"
99
+ })
100
+ ]
101
+ });
102
+ }
103
+ //#endregion
104
+ //#region src/components/ui/tabs.tsx
105
+ function _({ className: e, orientation: n = "horizontal", ...r }) {
106
+ return /* @__PURE__ */ l(m.Root, {
107
+ "data-slot": "tabs",
108
+ "data-orientation": n,
109
+ className: t("gap-2 group/tabs flex data-[orientation=horizontal]:flex-col", e),
110
+ ...r
111
+ });
112
+ }
113
+ var v = p("rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col", {
114
+ variants: { variant: {
115
+ default: "bg-muted",
116
+ line: "gap-1 bg-transparent"
117
+ } },
118
+ defaultVariants: { variant: "default" }
119
+ });
120
+ function y({ className: e, variant: n = "default", ...r }) {
121
+ return /* @__PURE__ */ l(m.List, {
122
+ "data-slot": "tabs-list",
123
+ "data-variant": n,
124
+ className: t(v({ variant: n }), e),
125
+ ...r
126
+ });
127
+ }
128
+ function b({ className: e, ...n }) {
129
+ return /* @__PURE__ */ l(m.Tab, {
130
+ "data-slot": "tabs-trigger",
131
+ className: t("gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground", "after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", e),
132
+ ...n
133
+ });
134
+ }
135
+ function x({ className: e, ...n }) {
136
+ return /* @__PURE__ */ l(m.Panel, {
137
+ "data-slot": "tabs-content",
138
+ className: t("text-sm flex-1 outline-none", e),
139
+ ...n
140
+ });
141
+ }
142
+ //#endregion
143
+ //#region src/components/base/navigation/tabs.tsx
144
+ function S(e) {
145
+ return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
146
+ }
147
+ function C({ className: e, ...n }) {
148
+ return /* @__PURE__ */ l(_, {
149
+ className: t("tabs--component", e),
150
+ ...n
151
+ });
152
+ }
153
+ function w({ className: e, scrollable: n = !1, scrollStrings: r, ...i }) {
154
+ let a = /* @__PURE__ */ l(y, {
155
+ className: t("tabs-list--component", "rounded-radius", n && "w-max", e),
156
+ ...i
157
+ });
158
+ return n ? /* @__PURE__ */ l(g, {
159
+ strings: r,
160
+ children: a
161
+ }) : a;
162
+ }
163
+ function T({ className: e, children: n, ...i }) {
164
+ return /* @__PURE__ */ l(b, {
165
+ className: t("tabs-trigger--component", "gap-space-sm rounded-radius px-space-md py-space-xs", e),
166
+ ...i,
167
+ children: S(n) ? /* @__PURE__ */ l(r, {
168
+ tag: "span",
169
+ size: "inherit",
170
+ weight: "medium",
171
+ lineHeight: "tight",
172
+ className: "text-inherit",
173
+ children: n
174
+ }) : n
175
+ });
176
+ }
177
+ function E({ className: e, children: n, ...i }) {
178
+ return /* @__PURE__ */ l(x, {
179
+ className: t("tabs-content--component", e),
180
+ ...i,
181
+ children: S(n) ? /* @__PURE__ */ l(r, { children: n }) : n
182
+ });
183
+ }
184
+ //#endregion
185
+ export { g as a, T as i, E as n, h as o, w as r, C as t };
186
+
187
+ //# sourceMappingURL=tabs-DY09eoZg.js.map