admin-ui-starter-kit 0.6.8 → 0.6.9

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 (962) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +15 -8
  2. package/dist/_shared/ai-artifact-Cv8VBibf.cjs +3 -0
  3. package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +1 -0
  4. package/dist/_shared/ai-artifact-DwfXQuh4.js +1099 -0
  5. package/dist/_shared/ai-artifact-DwfXQuh4.js.map +1 -0
  6. package/dist/_shared/auth-Cz5ci18c.cjs +2 -0
  7. package/dist/_shared/auth-Cz5ci18c.cjs.map +1 -0
  8. package/dist/_shared/auth-DDWsgFUL.js +643 -0
  9. package/dist/_shared/auth-DDWsgFUL.js.map +1 -0
  10. package/dist/_shared/badge-C65rt1M9.cjs +2 -0
  11. package/dist/_shared/badge-C65rt1M9.cjs.map +1 -0
  12. package/dist/_shared/badge-r8ae66Vd.js +110 -0
  13. package/dist/_shared/badge-r8ae66Vd.js.map +1 -0
  14. package/dist/_shared/comments-DAzpeuQq.cjs +2 -0
  15. package/dist/_shared/comments-DAzpeuQq.cjs.map +1 -0
  16. package/dist/_shared/comments-DzZaKP9x.js +952 -0
  17. package/dist/_shared/comments-DzZaKP9x.js.map +1 -0
  18. package/dist/_shared/data-display-DQUUEzCx.cjs +2 -0
  19. package/dist/_shared/data-display-DQUUEzCx.cjs.map +1 -0
  20. package/dist/_shared/data-display-LlvMEFTK.js +1878 -0
  21. package/dist/_shared/data-display-LlvMEFTK.js.map +1 -0
  22. package/dist/_shared/date-picker-CrC-lHyF.cjs +2 -0
  23. package/dist/_shared/date-picker-CrC-lHyF.cjs.map +1 -0
  24. package/dist/_shared/date-picker-DbYBek-b.js +1361 -0
  25. package/dist/_shared/date-picker-DbYBek-b.js.map +1 -0
  26. package/dist/_shared/date-pickers-9AU8YQK2.js +329 -0
  27. package/dist/_shared/date-pickers-9AU8YQK2.js.map +1 -0
  28. package/dist/_shared/date-pickers-DUEwCWig.cjs +2 -0
  29. package/dist/_shared/date-pickers-DUEwCWig.cjs.map +1 -0
  30. package/dist/_shared/display-BqoPOdof.cjs +2 -0
  31. package/dist/_shared/display-BqoPOdof.cjs.map +1 -0
  32. package/dist/_shared/display-CQoSwU74.js +986 -0
  33. package/dist/_shared/display-CQoSwU74.js.map +1 -0
  34. package/dist/_shared/forms-CNh-S9FK.cjs +2 -0
  35. package/dist/_shared/forms-CNh-S9FK.cjs.map +1 -0
  36. package/dist/_shared/forms-DIz3SCA9.js +3534 -0
  37. package/dist/_shared/forms-DIz3SCA9.js.map +1 -0
  38. package/dist/_shared/header-Bs61tQla.js +447 -0
  39. package/dist/_shared/header-Bs61tQla.js.map +1 -0
  40. package/dist/_shared/header-D01oOxna.cjs +2 -0
  41. package/dist/_shared/header-D01oOxna.cjs.map +1 -0
  42. package/dist/_shared/hooks-ACnpaIli.js +95 -0
  43. package/dist/_shared/hooks-ACnpaIli.js.map +1 -0
  44. package/dist/_shared/hooks-B7khuHkk.cjs +2 -0
  45. package/dist/_shared/hooks-B7khuHkk.cjs.map +1 -0
  46. package/dist/_shared/layout-CGi5w1mo.js +268 -0
  47. package/dist/_shared/layout-CGi5w1mo.js.map +1 -0
  48. package/dist/_shared/layout-ccVwjUG8.cjs +2 -0
  49. package/dist/_shared/layout-ccVwjUG8.cjs.map +1 -0
  50. package/dist/_shared/mentions-Cg_4vFxd.cjs +2 -0
  51. package/dist/_shared/mentions-Cg_4vFxd.cjs.map +1 -0
  52. package/dist/_shared/mentions-Ci9RFTfw.js +506 -0
  53. package/dist/_shared/mentions-Ci9RFTfw.js.map +1 -0
  54. package/dist/_shared/navigation-C1QN2-Vq.cjs +2 -0
  55. package/dist/_shared/navigation-C1QN2-Vq.cjs.map +1 -0
  56. package/dist/_shared/navigation-CMrLO8v5.js +436 -0
  57. package/dist/_shared/navigation-CMrLO8v5.js.map +1 -0
  58. package/dist/_shared/separator-BXn_fnly.cjs +2 -0
  59. package/dist/_shared/separator-BXn_fnly.cjs.map +1 -0
  60. package/dist/_shared/separator-DiH-j--f.js +20 -0
  61. package/dist/_shared/separator-DiH-j--f.js.map +1 -0
  62. package/dist/_shared/settings-CgtcSI8L.js +143 -0
  63. package/dist/_shared/settings-CgtcSI8L.js.map +1 -0
  64. package/dist/_shared/settings-csNmeT7b.cjs +2 -0
  65. package/dist/_shared/settings-csNmeT7b.cjs.map +1 -0
  66. package/dist/_shared/sidebar-DyGIcJd9.cjs +2 -0
  67. package/dist/_shared/sidebar-DyGIcJd9.cjs.map +1 -0
  68. package/dist/_shared/sidebar-OT-xIguQ.js +548 -0
  69. package/dist/_shared/sidebar-OT-xIguQ.js.map +1 -0
  70. package/dist/_shared/table-BVWemr79.cjs +2 -0
  71. package/dist/_shared/table-BVWemr79.cjs.map +1 -0
  72. package/dist/_shared/table-WYSjfQRr.js +1377 -0
  73. package/dist/_shared/table-WYSjfQRr.js.map +1 -0
  74. package/dist/_shared/workspace-BkwsqTrc.cjs +2 -0
  75. package/dist/_shared/workspace-BkwsqTrc.cjs.map +1 -0
  76. package/dist/_shared/workspace-DpU1YG1t.js +357 -0
  77. package/dist/_shared/workspace-DpU1YG1t.js.map +1 -0
  78. package/dist/components/base/badge/index.cjs +1 -1
  79. package/dist/components/base/badge/index.js +1 -1
  80. package/dist/components/base/date-pickers/index.cjs +1 -1
  81. package/dist/components/base/date-pickers/index.js +2 -2
  82. package/dist/components/base/display/index.cjs +1 -1
  83. package/dist/components/base/display/index.js +2 -2
  84. package/dist/components/base/display/separator.d.ts +10 -1
  85. package/dist/components/base/display/separator.d.ts.map +1 -1
  86. package/dist/components/base/event-calendar/index.cjs +1 -1
  87. package/dist/components/base/event-calendar/index.js +1 -1
  88. package/dist/components/base/forms/index.cjs +1 -1
  89. package/dist/components/base/forms/index.js +2 -2
  90. package/dist/components/base/navigation/index.cjs +1 -1
  91. package/dist/components/base/navigation/index.js +1 -1
  92. package/dist/components/base/table/index.cjs +1 -1
  93. package/dist/components/base/table/index.js +1 -1
  94. package/dist/components/composed/admin/index.cjs +1 -1
  95. package/dist/components/composed/admin/index.js +3 -3
  96. package/dist/components/composed/ai/index.cjs +1 -1
  97. package/dist/components/composed/ai/index.js +4 -4
  98. package/dist/components/composed/cards/index.cjs +1 -1
  99. package/dist/components/composed/cards/index.js +3 -3
  100. package/dist/components/composed/commerce/index.cjs +1 -1
  101. package/dist/components/composed/commerce/index.js +4 -4
  102. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  103. package/dist/components/composed/dark-surfaces/index.js +2 -2
  104. package/dist/components/composed/data-display/index.cjs +1 -1
  105. package/dist/components/composed/data-display/index.js +1 -1
  106. package/dist/components/composed/navigation/index.cjs +1 -1
  107. package/dist/components/composed/navigation/index.js +1 -1
  108. package/dist/components/composed/timelines/index.cjs +1 -1
  109. package/dist/components/composed/timelines/index.js +1 -1
  110. package/dist/components/features/activities/index.cjs +1 -1
  111. package/dist/components/features/activities/index.js +1 -1
  112. package/dist/components/features/ai-chat/index.cjs +1 -1
  113. package/dist/components/features/ai-chat/index.js +2 -2
  114. package/dist/components/features/comments/index.cjs +1 -1
  115. package/dist/components/features/comments/index.js +2 -2
  116. package/dist/components/features/event-log/index.cjs +1 -1
  117. package/dist/components/features/event-log/index.js +2 -2
  118. package/dist/components/features/filters/index.cjs +1 -1
  119. package/dist/components/features/filters/index.js +2 -2
  120. package/dist/components/features/global-search/index.cjs +1 -1
  121. package/dist/components/features/global-search/index.js +1 -1
  122. package/dist/components/features/media-library/index.cjs +1 -1
  123. package/dist/components/features/media-library/index.js +3 -3
  124. package/dist/components/features/mentions/index.cjs +1 -1
  125. package/dist/components/features/mentions/index.js +1 -1
  126. package/dist/components/features/products/index.cjs +1 -1
  127. package/dist/components/features/products/index.js +5 -5
  128. package/dist/components/features/resource/index.cjs +1 -1
  129. package/dist/components/features/resource/index.js +2 -2
  130. package/dist/components/features/schema-form/index.cjs +1 -1
  131. package/dist/components/features/schema-form/index.js +2 -2
  132. package/dist/components/layout/auth/index.cjs +1 -1
  133. package/dist/components/layout/auth/index.js +1 -1
  134. package/dist/components/layout/header/index.cjs +1 -1
  135. package/dist/components/layout/header/index.js +1 -1
  136. package/dist/components/layout/hooks/index.cjs +1 -1
  137. package/dist/components/layout/hooks/index.js +1 -1
  138. package/dist/components/layout/index.cjs +1 -1
  139. package/dist/components/layout/index.js +7 -7
  140. package/dist/components/layout/page/index.cjs +1 -1
  141. package/dist/components/layout/page/index.js +1 -1
  142. package/dist/components/layout/settings/index.cjs +1 -1
  143. package/dist/components/layout/settings/index.js +1 -1
  144. package/dist/components/layout/sidebar/index.cjs +1 -1
  145. package/dist/components/layout/sidebar/index.js +2 -2
  146. package/dist/components/layout/workspace/index.cjs +1 -1
  147. package/dist/components/layout/workspace/index.js +1 -1
  148. package/dist/showcase/assets/AreaChart-DxDBymDt.js +6 -0
  149. package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +1 -0
  150. package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +1 -0
  151. package/dist/showcase/assets/DialogTrigger-OUBMI353.js +1 -0
  152. package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +1 -0
  153. package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +1 -0
  154. package/dist/showcase/assets/RadioGroup-BzveyiIV.js +1 -0
  155. package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +1 -0
  156. package/dist/showcase/assets/Separator-CSYYEo-X.js +1 -0
  157. package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +1 -0
  158. package/dist/showcase/assets/accordion-B9VkLXiy.js +171 -0
  159. package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +1 -0
  160. package/dist/showcase/assets/action-menu-CWIvuiLO.js +1 -0
  161. package/dist/showcase/assets/actions-BuwzXYEF.js +310 -0
  162. package/dist/showcase/assets/activities-BTBlr1G4.js +500 -0
  163. package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +1 -0
  164. package/dist/showcase/assets/admin-kbK6nUjx.js +140 -0
  165. package/dist/showcase/assets/ai-CKu9EGmA.js +207 -0
  166. package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +2 -0
  167. package/dist/showcase/assets/ai-chat-DEntRhJD.js +568 -0
  168. package/dist/showcase/assets/ai-elements-DyKRCWiS.js +387 -0
  169. package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +1 -0
  170. package/dist/showcase/assets/alert-C0wSpBYn.js +93 -0
  171. package/dist/showcase/assets/alert-CZ4rgwPr.js +62 -0
  172. package/dist/showcase/assets/alert-WTKIdE4s.js +1 -0
  173. package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +1 -0
  174. package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +73 -0
  175. package/dist/showcase/assets/app-sidebar-B3veRbac.js +1 -0
  176. package/dist/showcase/assets/arrow-down-CEXJx115.js +1 -0
  177. package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +1 -0
  178. package/dist/showcase/assets/arrow-right-a3STqWgx.js +1 -0
  179. package/dist/showcase/assets/arrow-up-CCU1MaGq.js +1 -0
  180. package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +1 -0
  181. package/dist/showcase/assets/avatar-Bwgai0SK.js +67 -0
  182. package/dist/showcase/assets/avatar-DSmL52Us.js +57 -0
  183. package/dist/showcase/assets/avatar-kK9n1a25.js +1 -0
  184. package/dist/showcase/assets/avatar-nb7MgV_x.js +1 -0
  185. package/dist/showcase/assets/badge-CTGPRSXm.js +31 -0
  186. package/dist/showcase/assets/badge-check-zqoYYrVj.js +1 -0
  187. package/dist/showcase/assets/bell-D7HWGStL.js +1 -0
  188. package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +1 -0
  189. package/dist/showcase/assets/bot-Owx4SMiU.js +1 -0
  190. package/dist/showcase/assets/box-BeeoLlMd.js +1 -0
  191. package/dist/showcase/assets/braces-fzrExVIx.js +1 -0
  192. package/dist/showcase/assets/brain-Da2fsBjd.js +1 -0
  193. package/dist/showcase/assets/brand-Bo6uwdGf.js +36 -0
  194. package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +1 -0
  195. package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +52 -0
  196. package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +1 -0
  197. package/dist/showcase/assets/briefcase-DQjbh28E.js +1 -0
  198. package/dist/showcase/assets/building-2-DaQW5yJa.js +1 -0
  199. package/dist/showcase/assets/button-D3skvyQS.js +44 -0
  200. package/dist/showcase/assets/button-group-BYtbrhme.js +1 -0
  201. package/dist/showcase/assets/buttons-B3IkMmNQ.js +272 -0
  202. package/dist/showcase/assets/calendar-C4fCDK3O.js +1 -0
  203. package/dist/showcase/assets/calendar-CcwkVxCK.js +16 -0
  204. package/dist/showcase/assets/calendar-DBkwxV9H.js +1 -0
  205. package/dist/showcase/assets/calendar-days-BWed1W3Z.js +1 -0
  206. package/dist/showcase/assets/camera-BUoAyoZT.js +1 -0
  207. package/dist/showcase/assets/card-7DBPqWuv.js +1 -0
  208. package/dist/showcase/assets/card-ClwyNDHJ.js +188 -0
  209. package/dist/showcase/assets/card-primitives-BE1YpEQW.js +1 -0
  210. package/dist/showcase/assets/card-radio-group-1NMbocuG.js +1 -0
  211. package/dist/showcase/assets/cards-Bu8uaGSU.js +354 -0
  212. package/dist/showcase/assets/carousel-dTTRRSQg.js +449 -0
  213. package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +1 -0
  214. package/dist/showcase/assets/chart-BSboeIO6.js +358 -0
  215. package/dist/showcase/assets/chart-column-CCzA6B9l.js +1 -0
  216. package/dist/showcase/assets/checkbox-CSdEPNT5.js +1 -0
  217. package/dist/showcase/assets/checkbox-CqNLi9Q3.js +1 -0
  218. package/dist/showcase/assets/chevron-down-C91gNQdT.js +1 -0
  219. package/dist/showcase/assets/chevron-left-SiAoYFSo.js +1 -0
  220. package/dist/showcase/assets/chevron-up-Beb1_ET_.js +1 -0
  221. package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +1 -0
  222. package/dist/showcase/assets/circle-D9KiRp8C.js +1 -0
  223. package/dist/showcase/assets/circle-alert-BQkAwFkl.js +1 -0
  224. package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +1 -0
  225. package/dist/showcase/assets/circle-check-dqmKTiDe.js +1 -0
  226. package/dist/showcase/assets/circle-dot-B7LPN_0V.js +1 -0
  227. package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +1 -0
  228. package/dist/showcase/assets/circle-x-CW2dFcX-.js +1 -0
  229. package/dist/showcase/assets/clock-3-CXJ_JotW.js +1 -0
  230. package/dist/showcase/assets/clock-DUqvfazQ.js +1 -0
  231. package/dist/showcase/assets/code-xml-BmdQDeID.js +1 -0
  232. package/dist/showcase/assets/collapsible-C-WYhJxn.js +1 -0
  233. package/dist/showcase/assets/collapsible-CL37AlCX.js +27 -0
  234. package/dist/showcase/assets/collapsible-uGO5Rj8q.js +1 -0
  235. package/dist/showcase/assets/combobox-CFh5kUzj.js +685 -0
  236. package/dist/showcase/assets/command-CtpLaHjh.js +1 -0
  237. package/dist/showcase/assets/command-DSlK-QAE.js +1 -0
  238. package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +1 -0
  239. package/dist/showcase/assets/comment-item-Dme2o2KI.js +1 -0
  240. package/dist/showcase/assets/comments-CW2nz465.js +357 -0
  241. package/dist/showcase/assets/commerce-bwcq6oPn.js +267 -0
  242. package/dist/showcase/assets/composite-DMIR0vmP.js +1 -0
  243. package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +1 -0
  244. package/dist/showcase/assets/contact-card-BCXS9tWq.js +65 -0
  245. package/dist/showcase/assets/content-container-b1dC2caJ.js +1 -0
  246. package/dist/showcase/assets/copyable-BIABx-Vv.js +96 -0
  247. package/dist/showcase/assets/copyable-Ic9wzVaj.js +1 -0
  248. package/dist/showcase/assets/course-card-Bo5P3TYv.js +77 -0
  249. package/dist/showcase/assets/cpu-_VqU6yRO.js +1 -0
  250. package/dist/showcase/assets/credit-card-BbxO8xLo.js +1 -0
  251. package/dist/showcase/assets/css-variables-zqpBgnS1.js +1205 -0
  252. package/dist/showcase/assets/currency-Cjvt4F0b.js +149 -0
  253. package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +90 -0
  254. package/dist/showcase/assets/data-view-AtyUp7b-.js +124 -0
  255. package/dist/showcase/assets/data-view-cnEmgP1C.js +4 -0
  256. package/dist/showcase/assets/database-TbVXEw7v.js +1 -0
  257. package/dist/showcase/assets/date-block-CDHemKnP.js +1 -0
  258. package/dist/showcase/assets/date-block-COb89Y_-.js +1 -0
  259. package/dist/showcase/assets/date-picker-CK8llBIN.js +1 -0
  260. package/dist/showcase/assets/date-pickers-DFfDnW9w.js +73 -0
  261. package/dist/showcase/assets/dense-info-CaFVDE90.js +106 -0
  262. package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +264 -0
  263. package/dist/showcase/assets/dialog-CRQNEK2K.js +1 -0
  264. package/dist/showcase/assets/dialog-CsCLDb0G.js +1 -0
  265. package/dist/showcase/assets/dialog-Qh3EHEKq.js +1 -0
  266. package/dist/showcase/assets/display-utilities-rP3hb4FK.js +4 -0
  267. package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +309 -0
  268. package/dist/showcase/assets/dist-CbqRct9s.js +1 -0
  269. package/dist/showcase/assets/dist-iivamCjp.js +45 -0
  270. package/dist/showcase/assets/dollar-sign-COaRmdJE.js +1 -0
  271. package/dist/showcase/assets/download-yCcb4rfH.js +1 -0
  272. package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +1 -0
  273. package/dist/showcase/assets/dropzone-DLguWnmu.js +1 -0
  274. package/dist/showcase/assets/earth-TDRqTA4S.js +1 -0
  275. package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +1 -0
  276. package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +1 -0
  277. package/dist/showcase/assets/empty-DvmDTSAj.js +1 -0
  278. package/dist/showcase/assets/empty-item-C3HP5nuw.js +49 -0
  279. package/dist/showcase/assets/empty-state-Dcin4cOt.js +190 -0
  280. package/dist/showcase/assets/empty-state-IV_GTNEI.js +1 -0
  281. package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +357 -0
  282. package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +1 -0
  283. package/dist/showcase/assets/esm-Cf6QQstQ.js +2 -0
  284. package/dist/showcase/assets/event-calendar-zrfI_3AM.js +138 -0
  285. package/dist/showcase/assets/event-log-D-_CViAw.js +330 -0
  286. package/dist/showcase/assets/example-6bZGEb3-.js +1 -0
  287. package/dist/showcase/assets/external-link-7ldgjHZM.js +1 -0
  288. package/dist/showcase/assets/eye-pXVkim6z.js +1 -0
  289. package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +34 -0
  290. package/dist/showcase/assets/file-Bn9sAGaT.js +1 -0
  291. package/dist/showcase/assets/file-text-Cvxg6pjh.js +1 -0
  292. package/dist/showcase/assets/filter-layout-DqNRRzDU.js +1 -0
  293. package/dist/showcase/assets/filters-CQMI_T63.js +139 -0
  294. package/dist/showcase/assets/flag-vI_WJ-BU.js +1 -0
  295. package/dist/showcase/assets/folder-open-0AyKSRQS.js +1 -0
  296. package/dist/showcase/assets/form-field-BaBeXn7a.js +1 -0
  297. package/dist/showcase/assets/format-DLLMyN-3.js +1 -0
  298. package/dist/showcase/assets/forms-gPD-Caru.js +915 -0
  299. package/dist/showcase/assets/funnel-Ca9nWMHm.js +1 -0
  300. package/dist/showcase/assets/generic-AAssz0h7.js +1 -0
  301. package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +1 -0
  302. package/dist/showcase/assets/gift-BC42Oxfz.js +1 -0
  303. package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +85 -0
  304. package/dist/showcase/assets/git-branch-B-nF8w-J.js +1 -0
  305. package/dist/showcase/assets/global-search-D6Gxw0G3.js +1 -0
  306. package/dist/showcase/assets/global-search-jsb_4idg.js +215 -0
  307. package/dist/showcase/assets/globe-C92uBSrO.js +1 -0
  308. package/dist/showcase/assets/gradient-card-D4ly60sD.js +58 -0
  309. package/dist/showcase/assets/hash-BShTbxlR.js +1 -0
  310. package/dist/showcase/assets/header-CSiNqg9Q.js +1 -0
  311. package/dist/showcase/assets/header-notifications-CpHeFPQF.js +1 -0
  312. package/dist/showcase/assets/heart-B3hXs7fr.js +1 -0
  313. package/dist/showcase/assets/hooks-CamAqFFh.js +220 -0
  314. package/dist/showcase/assets/house-4_CouE-Y.js +1 -0
  315. package/dist/showcase/assets/icon-badge-CePIZqWR.js +1 -0
  316. package/dist/showcase/assets/icon-badge-DSbvvnxh.js +37 -0
  317. package/dist/showcase/assets/image-BxbFIbVJ.js +1 -0
  318. package/dist/showcase/assets/inbox-BXab1SM6.js +1 -0
  319. package/dist/showcase/assets/index-BPUtPJjB.css +2 -0
  320. package/dist/showcase/assets/index-BjjNfnhP.js +10 -0
  321. package/dist/showcase/assets/inertValue-CZOzgsmF.js +1 -0
  322. package/dist/showcase/assets/info-DzqwCq93.js +1 -0
  323. package/dist/showcase/assets/inline-stat-D5ybpUh-.js +15 -0
  324. package/dist/showcase/assets/inline-stat-Dq34wv-6.js +1 -0
  325. package/dist/showcase/assets/input-C8OfUHCK.js +1 -0
  326. package/dist/showcase/assets/input-D34Ge3rh.js +1 -0
  327. package/dist/showcase/assets/input-group-BCPZ6Pwq.js +1 -0
  328. package/dist/showcase/assets/input-group-CySTANka.js +47 -0
  329. package/dist/showcase/assets/inputs-CnmHo_lj.js +155 -0
  330. package/dist/showcase/assets/installation-BPvseS46.js +134 -0
  331. package/dist/showcase/assets/invoice-header-C9JjJWQX.js +36 -0
  332. package/dist/showcase/assets/invoice-items-DB8tbCv9.js +36 -0
  333. package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +14 -0
  334. package/dist/showcase/assets/invoice-table-CLDvpLib.js +30 -0
  335. package/dist/showcase/assets/isSameDay-D8bDebyL.js +1 -0
  336. package/dist/showcase/assets/isToday-XVjRuMtp.js +1 -0
  337. package/dist/showcase/assets/italic-Cm13b8qb.js +1 -0
  338. package/dist/showcase/assets/item-C07859JQ.js +1 -0
  339. package/dist/showcase/assets/item-LinnMxvu.js +1 -0
  340. package/dist/showcase/assets/item-i7ZUMs5t.js +140 -0
  341. package/dist/showcase/assets/kanban-CIMTpuN5.js +188 -0
  342. package/dist/showcase/assets/key-round-Bh7EzOyR.js +1 -0
  343. package/dist/showcase/assets/label-C3A4CjeG.js +1 -0
  344. package/dist/showcase/assets/languages-C37jhetw.js +1 -0
  345. package/dist/showcase/assets/layers-Lyr6p-Nt.js +1 -0
  346. package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +608 -0
  347. package/dist/showcase/assets/layout-auth-y1alnhc8.js +790 -0
  348. package/dist/showcase/assets/layout-containers-B6c-uvil.js +101 -0
  349. package/dist/showcase/assets/layout-header-DNhJHWNw.js +203 -0
  350. package/dist/showcase/assets/layout-page-CXU7CnQK.js +315 -0
  351. package/dist/showcase/assets/layout-primitives-StuFwfwh.js +34 -0
  352. package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +224 -0
  353. package/dist/showcase/assets/layout-users-D7KMzs3-.js +117 -0
  354. package/dist/showcase/assets/layout-workspace-Butr7CL5.js +191 -0
  355. package/dist/showcase/assets/lib-D5nOMXIt.js +1 -0
  356. package/dist/showcase/assets/list-checks-Cg9HZf4W.js +1 -0
  357. package/dist/showcase/assets/lock-Da21HhQx.js +1 -0
  358. package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +1 -0
  359. package/dist/showcase/assets/mail-Bamky-ti.js +1 -0
  360. package/dist/showcase/assets/mail-check-BfVYPC42.js +1 -0
  361. package/dist/showcase/assets/map-BTlWnRAQ.js +124 -0
  362. package/dist/showcase/assets/map-pin-BU2RBuvC.js +1 -0
  363. package/dist/showcase/assets/media-library-DJxgoGAF.js +699 -0
  364. package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +1 -0
  365. package/dist/showcase/assets/mentions-kMT-Z3qU.js +138 -0
  366. package/dist/showcase/assets/menus-bhp_n9PT.js +171 -0
  367. package/dist/showcase/assets/message-square-DC5Bb9Zs.js +1 -0
  368. package/dist/showcase/assets/metadata-list-DGr729EW.js +286 -0
  369. package/dist/showcase/assets/metadata-list-DyjhZi6d.js +1 -0
  370. package/dist/showcase/assets/metric-DRDok6Ci.js +1 -0
  371. package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +1 -0
  372. package/dist/showcase/assets/metric-grid-BlFXTrid.js +1 -0
  373. package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +1 -0
  374. package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +44 -0
  375. package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +50 -0
  376. package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +76 -0
  377. package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +27 -0
  378. package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +17 -0
  379. package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +31 -0
  380. package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +42 -0
  381. package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +192 -0
  382. package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +54 -0
  383. package/dist/showcase/assets/minus-Dr1iTc_q.js +1 -0
  384. package/dist/showcase/assets/money-display-B5_VqQC0.js +1 -0
  385. package/dist/showcase/assets/money-display-bU2_cVGX.js +1 -0
  386. package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +1 -0
  387. package/dist/showcase/assets/navigation-DBKvJoe-.js +231 -0
  388. package/dist/showcase/assets/navigation-DOhfmtgy.js +90 -0
  389. package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +43 -0
  390. package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +1 -0
  391. package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +119 -0
  392. package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +1 -0
  393. package/dist/showcase/assets/overlays-4E_sUgkz.js +408 -0
  394. package/dist/showcase/assets/overlays-ulNl-Vhr.js +159 -0
  395. package/dist/showcase/assets/overview-CgymfIBq.js +184 -0
  396. package/dist/showcase/assets/package-CADuUP1u.js +1 -0
  397. package/dist/showcase/assets/package-check-O7MD6XE_.js +1 -0
  398. package/dist/showcase/assets/page-GB6OIgID.js +1 -0
  399. package/dist/showcase/assets/page-action-button-Dpprot7y.js +1 -0
  400. package/dist/showcase/assets/page-header-2VEUPx67.js +1 -0
  401. package/dist/showcase/assets/pagination-BBuRtAX9.js +1 -0
  402. package/dist/showcase/assets/pagination-C4mt4Q4l.js +42 -0
  403. package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +1 -0
  404. package/dist/showcase/assets/password-input-CgZj1niQ.js +1 -0
  405. package/dist/showcase/assets/pencil-CtdXjogr.js +1 -0
  406. package/dist/showcase/assets/phone-CAFMH1vV.js +1 -0
  407. package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +1 -0
  408. package/dist/showcase/assets/plus-CN2dzUxL.js +1 -0
  409. package/dist/showcase/assets/popover-DILNXLWy.js +1 -0
  410. package/dist/showcase/assets/popover-menu-Bp08xxOf.js +1 -0
  411. package/dist/showcase/assets/popover-o1EO2yVS.js +1 -0
  412. package/dist/showcase/assets/products-CCLAbHBN.js +423 -0
  413. package/dist/showcase/assets/progress-BGna-ZmU.js +18 -0
  414. package/dist/showcase/assets/progress-BSYlNLIJ.js +1 -0
  415. package/dist/showcase/assets/progress-CZVy3LGB.js +1 -0
  416. package/dist/showcase/assets/props-table-X9St7Q4m.js +1 -0
  417. package/dist/showcase/assets/props.generated-f_jHBhPb.json +41753 -0
  418. package/dist/showcase/assets/qr-code-CEmKf9xU.js +1 -0
  419. package/dist/showcase/assets/quote-IH6r-rlY.js +1 -0
  420. package/dist/showcase/assets/receipt-m9rOe5lY.js +1 -0
  421. package/dist/showcase/assets/receipt-text-C0TobatH.js +1 -0
  422. package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +189 -0
  423. package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +1 -0
  424. package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +1 -0
  425. package/dist/showcase/assets/resource-BcJ8O6uj.js +1 -0
  426. package/dist/showcase/assets/resource-_zDXez77.js +139 -0
  427. package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +43 -0
  428. package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +143 -0
  429. package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +124 -0
  430. package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +1 -0
  431. package/dist/showcase/assets/route-C7EZ2Njy.js +1 -0
  432. package/dist/showcase/assets/save-fKrt-yFG.js +1 -0
  433. package/dist/showcase/assets/schema-form-k7TXeirD.js +327 -0
  434. package/dist/showcase/assets/scroll-area-CqNwdlI6.js +32 -0
  435. package/dist/showcase/assets/scroll-area-UVtlGOgx.js +1 -0
  436. package/dist/showcase/assets/section-DuBNJP4P.js +1 -0
  437. package/dist/showcase/assets/select-CINVEIWn.js +1 -0
  438. package/dist/showcase/assets/select-ZLaamXrm.js +1 -0
  439. package/dist/showcase/assets/send-DBvt_4jT.js +1 -0
  440. package/dist/showcase/assets/separator-BdBXRpc3.js +28 -0
  441. package/dist/showcase/assets/separator-CkJjJQWW.js +1 -0
  442. package/dist/showcase/assets/separator-CxOeStjL.js +1 -0
  443. package/dist/showcase/assets/separator-O-VQMSf_.js +1 -0
  444. package/dist/showcase/assets/settings-2-BWjMVlyS.js +1 -0
  445. package/dist/showcase/assets/settings-D9Z79UcG.js +1 -0
  446. package/dist/showcase/assets/sheet-CK9C6r7_.js +1 -0
  447. package/dist/showcase/assets/shield-BboB3Zlo.js +1 -0
  448. package/dist/showcase/assets/shield-alert-CAAobStl.js +1 -0
  449. package/dist/showcase/assets/shield-check-Rfyzz9bK.js +1 -0
  450. package/dist/showcase/assets/shopping-bag-5hLD82YW.js +1 -0
  451. package/dist/showcase/assets/showcase-DhOQXB5E.js +132 -0
  452. package/dist/showcase/assets/sidebar-ZTUACc0t.js +1 -0
  453. package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +1 -0
  454. package/dist/showcase/assets/skeleton-BZUSoHbk.js +1 -0
  455. package/dist/showcase/assets/skeleton-BZkYzAdq.js +1 -0
  456. package/dist/showcase/assets/skeleton-CrOp8tx3.js +29 -0
  457. package/dist/showcase/assets/skeleton-P5GXAj4U.js +1 -0
  458. package/dist/showcase/assets/slider-zlE7nLrp.js +1 -0
  459. package/dist/showcase/assets/smart-card-OExZHSsj.js +1 -0
  460. package/dist/showcase/assets/sonner-eMphKM9E.js +22 -0
  461. package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +5 -0
  462. package/dist/showcase/assets/sparkles-CIB5irID.js +1 -0
  463. package/dist/showcase/assets/spinner-11-kP-Ob.js +1 -0
  464. package/dist/showcase/assets/spinner-D4G5TFSm.js +49 -0
  465. package/dist/showcase/assets/spinner-DKGukuFV.js +30 -0
  466. package/dist/showcase/assets/square-pen-zflKy9oX.js +1 -0
  467. package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +1 -0
  468. package/dist/showcase/assets/star-DleXDkCp.js +1 -0
  469. package/dist/showcase/assets/startOfDay-TDP2erzM.js +1 -0
  470. package/dist/showcase/assets/styles-BKlX_Ipc.js +1 -0
  471. package/dist/showcase/assets/suggestions-Dt2hm1NY.js +126 -0
  472. package/dist/showcase/assets/switch-DAPAgJbv.js +1 -0
  473. package/dist/showcase/assets/switch-fQpP2tJl.js +1 -0
  474. package/dist/showcase/assets/sync-BRcK160D.js +124 -0
  475. package/dist/showcase/assets/table-Dhmbe1yN.js +686 -0
  476. package/dist/showcase/assets/table-actions-GGrPOQcv.js +1 -0
  477. package/dist/showcase/assets/table-v0Eu5yZn.js +1 -0
  478. package/dist/showcase/assets/tabs-DmaXB1aF.js +19 -0
  479. package/dist/showcase/assets/tabs-vbNIJ-eo.js +1 -0
  480. package/dist/showcase/assets/tags-input-Bms_Q5CE.js +1 -0
  481. package/dist/showcase/assets/text-button-gvJCzaXS.js +1 -0
  482. package/dist/showcase/assets/text-link-DkByVX4d.js +1 -0
  483. package/dist/showcase/assets/textarea-B6Ho29y3.js +1 -0
  484. package/dist/showcase/assets/textarea-JCb0yhZ1.js +1 -0
  485. package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +1 -0
  486. package/dist/showcase/assets/timelines-Bw7mvAdx.js +200 -0
  487. package/dist/showcase/assets/toggle-group-jlIGX1zh.js +1 -0
  488. package/dist/showcase/assets/toggles-DV6V9vj-.js +71 -0
  489. package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +32 -0
  490. package/dist/showcase/assets/tooltip-CDtPyNOv.js +31 -0
  491. package/dist/showcase/assets/trash-2-CXRm3lMl.js +1 -0
  492. package/dist/showcase/assets/trending-up-Bcyp9cw8.js +1 -0
  493. package/dist/showcase/assets/truck-DVgzuKLP.js +1 -0
  494. package/dist/showcase/assets/typography-BKPf4j85.js +223 -0
  495. package/dist/showcase/assets/ui-badge-D-Ud2MES.js +28 -0
  496. package/dist/showcase/assets/ui-card-gGqI2cfr.js +30 -0
  497. package/dist/showcase/assets/ui-table-Bqcab_kq.js +42 -0
  498. package/dist/showcase/assets/upload-tray-BFh6twLE.js +138 -0
  499. package/dist/showcase/assets/use-layout-link-e9jr981L.js +1 -0
  500. package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +1 -0
  501. package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +1 -0
  502. package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +1 -0
  503. package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +1 -0
  504. package/dist/showcase/assets/useLabelableId-COfjI9qt.js +1 -0
  505. package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +1 -0
  506. package/dist/showcase/assets/useRender-Bgu76j1u.js +1 -0
  507. package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +1 -0
  508. package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +1 -0
  509. package/dist/showcase/assets/user-CmkLnMh9.js +1 -0
  510. package/dist/showcase/assets/user-plus-3CGFNUf0.js +1 -0
  511. package/dist/showcase/assets/users-CuO8W7wn.js +1 -0
  512. package/dist/showcase/assets/vendor-profile-HLMsE22G.js +37 -0
  513. package/dist/showcase/assets/video-CoHnn0fp.js +1 -0
  514. package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +1 -0
  515. package/dist/showcase/assets/wrench-C93IxaGt.js +1 -0
  516. package/dist/showcase/assets/x-BJDvVLAz.js +1 -0
  517. package/dist/showcase/assets/zap-DYD_Ljkv.js +1 -0
  518. package/dist/showcase/index.html +2 -2
  519. package/dist/style.css +1 -1
  520. package/package.json +1 -1
  521. package/src/css/themes/shadcn.default.css +2 -2
  522. package/dist/_shared/ai-artifact-BylloxGO.js +0 -1099
  523. package/dist/_shared/ai-artifact-BylloxGO.js.map +0 -1
  524. package/dist/_shared/ai-artifact-DfT97Mpi.cjs +0 -3
  525. package/dist/_shared/ai-artifact-DfT97Mpi.cjs.map +0 -1
  526. package/dist/_shared/auth-1Ht9Kevx.js +0 -643
  527. package/dist/_shared/auth-1Ht9Kevx.js.map +0 -1
  528. package/dist/_shared/auth-DTN6sFXM.cjs +0 -2
  529. package/dist/_shared/auth-DTN6sFXM.cjs.map +0 -1
  530. package/dist/_shared/badge-LSAgdmGt.cjs +0 -2
  531. package/dist/_shared/badge-LSAgdmGt.cjs.map +0 -1
  532. package/dist/_shared/badge-nZ2zbAV4.js +0 -110
  533. package/dist/_shared/badge-nZ2zbAV4.js.map +0 -1
  534. package/dist/_shared/comments-B_WKQUol.js +0 -952
  535. package/dist/_shared/comments-B_WKQUol.js.map +0 -1
  536. package/dist/_shared/comments-DMHMNObS.cjs +0 -2
  537. package/dist/_shared/comments-DMHMNObS.cjs.map +0 -1
  538. package/dist/_shared/data-display-4E_irfF2.js +0 -1878
  539. package/dist/_shared/data-display-4E_irfF2.js.map +0 -1
  540. package/dist/_shared/data-display-BPn-7qFO.cjs +0 -2
  541. package/dist/_shared/data-display-BPn-7qFO.cjs.map +0 -1
  542. package/dist/_shared/date-picker-CvqLnlxm.js +0 -1361
  543. package/dist/_shared/date-picker-CvqLnlxm.js.map +0 -1
  544. package/dist/_shared/date-picker-D83fCi2g.cjs +0 -2
  545. package/dist/_shared/date-picker-D83fCi2g.cjs.map +0 -1
  546. package/dist/_shared/date-pickers-C6ku2BPp.cjs +0 -2
  547. package/dist/_shared/date-pickers-C6ku2BPp.cjs.map +0 -1
  548. package/dist/_shared/date-pickers-RdbwIhdY.js +0 -329
  549. package/dist/_shared/date-pickers-RdbwIhdY.js.map +0 -1
  550. package/dist/_shared/display-DFVeSuWL.js +0 -986
  551. package/dist/_shared/display-DFVeSuWL.js.map +0 -1
  552. package/dist/_shared/display-Lr3xTd4a.cjs +0 -2
  553. package/dist/_shared/display-Lr3xTd4a.cjs.map +0 -1
  554. package/dist/_shared/forms-BA8Aa_fi.js +0 -3534
  555. package/dist/_shared/forms-BA8Aa_fi.js.map +0 -1
  556. package/dist/_shared/forms-CNjjdFcf.cjs +0 -2
  557. package/dist/_shared/forms-CNjjdFcf.cjs.map +0 -1
  558. package/dist/_shared/header-BEsz1_so.cjs +0 -2
  559. package/dist/_shared/header-BEsz1_so.cjs.map +0 -1
  560. package/dist/_shared/header-bJx8z6zT.js +0 -447
  561. package/dist/_shared/header-bJx8z6zT.js.map +0 -1
  562. package/dist/_shared/hooks-gRgVhyY2.js +0 -95
  563. package/dist/_shared/hooks-gRgVhyY2.js.map +0 -1
  564. package/dist/_shared/hooks-nFiRfUxX.cjs +0 -2
  565. package/dist/_shared/hooks-nFiRfUxX.cjs.map +0 -1
  566. package/dist/_shared/layout-C_dYiKtE.cjs +0 -2
  567. package/dist/_shared/layout-C_dYiKtE.cjs.map +0 -1
  568. package/dist/_shared/layout-nigj488k.js +0 -268
  569. package/dist/_shared/layout-nigj488k.js.map +0 -1
  570. package/dist/_shared/mentions-BE51BNeq.cjs +0 -2
  571. package/dist/_shared/mentions-BE51BNeq.cjs.map +0 -1
  572. package/dist/_shared/mentions-CBhP29St.js +0 -506
  573. package/dist/_shared/mentions-CBhP29St.js.map +0 -1
  574. package/dist/_shared/navigation-CWK_YQ5Y.js +0 -436
  575. package/dist/_shared/navigation-CWK_YQ5Y.js.map +0 -1
  576. package/dist/_shared/navigation-DTBMb7-M.cjs +0 -2
  577. package/dist/_shared/navigation-DTBMb7-M.cjs.map +0 -1
  578. package/dist/_shared/settings-D-HAOE3R.js +0 -143
  579. package/dist/_shared/settings-D-HAOE3R.js.map +0 -1
  580. package/dist/_shared/settings-DkL3bOk0.cjs +0 -2
  581. package/dist/_shared/settings-DkL3bOk0.cjs.map +0 -1
  582. package/dist/_shared/sidebar-BTyx7ipN.cjs +0 -2
  583. package/dist/_shared/sidebar-BTyx7ipN.cjs.map +0 -1
  584. package/dist/_shared/sidebar-DkBNualh.js +0 -548
  585. package/dist/_shared/sidebar-DkBNualh.js.map +0 -1
  586. package/dist/_shared/table-Cq0jkSm5.js +0 -1377
  587. package/dist/_shared/table-Cq0jkSm5.js.map +0 -1
  588. package/dist/_shared/table-GqTKCC8F.cjs +0 -2
  589. package/dist/_shared/table-GqTKCC8F.cjs.map +0 -1
  590. package/dist/_shared/workspace-5UId04M9.js +0 -357
  591. package/dist/_shared/workspace-5UId04M9.js.map +0 -1
  592. package/dist/_shared/workspace-BMws_rFf.cjs +0 -2
  593. package/dist/_shared/workspace-BMws_rFf.cjs.map +0 -1
  594. package/dist/showcase/assets/AreaChart-oKO7Ng_P.js +0 -6
  595. package/dist/showcase/assets/CompositeItem-CK7jBYU8.js +0 -1
  596. package/dist/showcase/assets/CompositeRoot-_AuToqhT.js +0 -1
  597. package/dist/showcase/assets/DialogTrigger-C44ZZXQ9.js +0 -1
  598. package/dist/showcase/assets/LabelableContext-DLVZlnur.js +0 -1
  599. package/dist/showcase/assets/PreviewLayout-Oik7TDHN.js +0 -1
  600. package/dist/showcase/assets/RadioGroup-DeYb8CGE.js +0 -1
  601. package/dist/showcase/assets/ScrollAreaCorner-BZlE_Bil.js +0 -1
  602. package/dist/showcase/assets/Separator-uiIktHzk.js +0 -1
  603. package/dist/showcase/assets/ToolbarRootContext-CEzj5dKk.js +0 -1
  604. package/dist/showcase/assets/accordion-B_wg_YOp.js +0 -171
  605. package/dist/showcase/assets/accordion-variants-O6U7E38x.js +0 -1
  606. package/dist/showcase/assets/action-menu-D_wGvb_o.js +0 -1
  607. package/dist/showcase/assets/actions-u4Fl4zm1.js +0 -310
  608. package/dist/showcase/assets/activities-C6iITHzB.js +0 -500
  609. package/dist/showcase/assets/activities-feed-card-OpYs16UV.js +0 -1
  610. package/dist/showcase/assets/admin-Bq15E5Wd.js +0 -140
  611. package/dist/showcase/assets/ai-DcUzGTlb.js +0 -207
  612. package/dist/showcase/assets/ai-artifact-BUAu1_jV.js +0 -2
  613. package/dist/showcase/assets/ai-chat-C6OWWBqh.js +0 -568
  614. package/dist/showcase/assets/ai-elements-CCe4Aqj_.js +0 -387
  615. package/dist/showcase/assets/ai-tool-call-B_NF1ePn.js +0 -1
  616. package/dist/showcase/assets/alert-B4VWkFPE.js +0 -1
  617. package/dist/showcase/assets/alert-BDIqciKo.js +0 -62
  618. package/dist/showcase/assets/alert-jvCEGWe6.js +0 -93
  619. package/dist/showcase/assets/api-key-list-BH8mde9A.js +0 -1
  620. package/dist/showcase/assets/api-key-list-CA6O3hsc.js +0 -73
  621. package/dist/showcase/assets/app-sidebar-DsMTwSAB.js +0 -1
  622. package/dist/showcase/assets/arrow-down-BzPC0rON.js +0 -1
  623. package/dist/showcase/assets/arrow-left-DNehZvF-.js +0 -1
  624. package/dist/showcase/assets/arrow-right-CKIgWncF.js +0 -1
  625. package/dist/showcase/assets/arrow-up-YjujZi8v.js +0 -1
  626. package/dist/showcase/assets/arrow-up-right-KnVxFmw9.js +0 -1
  627. package/dist/showcase/assets/avatar-BBLri7tX.js +0 -57
  628. package/dist/showcase/assets/avatar-BeFx8JQd.js +0 -1
  629. package/dist/showcase/assets/avatar-CFWUZzaF.js +0 -67
  630. package/dist/showcase/assets/avatar-D6exHRSK.js +0 -1
  631. package/dist/showcase/assets/badge-check-BfY3RIjR.js +0 -1
  632. package/dist/showcase/assets/badge-jGj2HQsg.js +0 -31
  633. package/dist/showcase/assets/bell-CTDSIOv8.js +0 -1
  634. package/dist/showcase/assets/boolean-indicator-C1u7OFcR.js +0 -1
  635. package/dist/showcase/assets/bot-D-iqtYiQ.js +0 -1
  636. package/dist/showcase/assets/box-DxjjLEh2.js +0 -1
  637. package/dist/showcase/assets/braces-B6XLlZwJ.js +0 -1
  638. package/dist/showcase/assets/brain-BdNpswBH.js +0 -1
  639. package/dist/showcase/assets/brand-C6srYuIa.js +0 -36
  640. package/dist/showcase/assets/breadcrumb-BaeV7C4t.js +0 -52
  641. package/dist/showcase/assets/breadcrumb-jKu4EUFo.js +0 -1
  642. package/dist/showcase/assets/breadcrumbs-D7vYX_5y.js +0 -1
  643. package/dist/showcase/assets/briefcase-cs9wyoxL.js +0 -1
  644. package/dist/showcase/assets/building-2-rcMEYcbf.js +0 -1
  645. package/dist/showcase/assets/button-group-D1oXfasP.js +0 -1
  646. package/dist/showcase/assets/button-oBRwhAhs.js +0 -44
  647. package/dist/showcase/assets/buttons-D_SDu9w3.js +0 -272
  648. package/dist/showcase/assets/calendar-CGTiVckW.js +0 -1
  649. package/dist/showcase/assets/calendar-ChLkVME0.js +0 -16
  650. package/dist/showcase/assets/calendar-CjMPvWfI.js +0 -1
  651. package/dist/showcase/assets/calendar-days-CNom8Y38.js +0 -1
  652. package/dist/showcase/assets/camera-D0rjOOcs.js +0 -1
  653. package/dist/showcase/assets/card-CYz4UxYz.js +0 -1
  654. package/dist/showcase/assets/card-D9updr3B.js +0 -188
  655. package/dist/showcase/assets/card-primitives-BQ0hSEWX.js +0 -1
  656. package/dist/showcase/assets/card-radio-group-CrNG04Bl.js +0 -1
  657. package/dist/showcase/assets/cards-D4Lw-AI6.js +0 -354
  658. package/dist/showcase/assets/carousel-C6Mmapzw.js +0 -449
  659. package/dist/showcase/assets/cell-renderers-BF80Z3jW.js +0 -1
  660. package/dist/showcase/assets/chart-BHgMfUB5.js +0 -358
  661. package/dist/showcase/assets/chart-column-CE_VhlUz.js +0 -1
  662. package/dist/showcase/assets/checkbox-CDLT09vU.js +0 -1
  663. package/dist/showcase/assets/checkbox-Dj24Tegr.js +0 -1
  664. package/dist/showcase/assets/chevron-down-1GeJ4hOO.js +0 -1
  665. package/dist/showcase/assets/chevron-left-wqlWv2Qy.js +0 -1
  666. package/dist/showcase/assets/chevron-up-CZAm-2rZ.js +0 -1
  667. package/dist/showcase/assets/chevrons-up-down-DgysGYWR.js +0 -1
  668. package/dist/showcase/assets/circle-C9Ooo8Lv.js +0 -1
  669. package/dist/showcase/assets/circle-alert-C6XBfkf2.js +0 -1
  670. package/dist/showcase/assets/circle-check-DvCYlVmL.js +0 -1
  671. package/dist/showcase/assets/circle-check-big-C8o9clAE.js +0 -1
  672. package/dist/showcase/assets/circle-dot-BoYf3vOR.js +0 -1
  673. package/dist/showcase/assets/circle-question-mark-DYPX0qe9.js +0 -1
  674. package/dist/showcase/assets/circle-x-GosnT0l7.js +0 -1
  675. package/dist/showcase/assets/clock-3-DklFhayq.js +0 -1
  676. package/dist/showcase/assets/clock-BvwTkk1w.js +0 -1
  677. package/dist/showcase/assets/code-xml-AGOwtN8Z.js +0 -1
  678. package/dist/showcase/assets/collapsible-CBkbr3ho.js +0 -1
  679. package/dist/showcase/assets/collapsible-CmY1SA28.js +0 -27
  680. package/dist/showcase/assets/collapsible-DfDnQ_t_.js +0 -1
  681. package/dist/showcase/assets/combobox-BsZQo7hF.js +0 -685
  682. package/dist/showcase/assets/command-B0Q84gg6.js +0 -1
  683. package/dist/showcase/assets/command-BtADdA65.js +0 -1
  684. package/dist/showcase/assets/comment-composer-BmBnkba9.js +0 -1
  685. package/dist/showcase/assets/comment-item-y5mTfSmU.js +0 -1
  686. package/dist/showcase/assets/comments-BuYiGPxI.js +0 -357
  687. package/dist/showcase/assets/commerce-21Ef_rsW.js +0 -267
  688. package/dist/showcase/assets/composite-fKT6fZFs.js +0 -1
  689. package/dist/showcase/assets/conditional-rendering-DsTG0sOE.js +0 -1
  690. package/dist/showcase/assets/contact-card-S8koA9Sr.js +0 -65
  691. package/dist/showcase/assets/content-container-B4gW5fmA.js +0 -1
  692. package/dist/showcase/assets/copyable-D2xL2rMm.js +0 -96
  693. package/dist/showcase/assets/copyable-gLrmPayI.js +0 -1
  694. package/dist/showcase/assets/course-card-B8eEvF7a.js +0 -77
  695. package/dist/showcase/assets/cpu-Cp1On3tr.js +0 -1
  696. package/dist/showcase/assets/credit-card-QbZMZB90.js +0 -1
  697. package/dist/showcase/assets/css-variables-BXICo9fV.js +0 -1205
  698. package/dist/showcase/assets/currency-D2MSLjLt.js +0 -149
  699. package/dist/showcase/assets/dark-surfaces-CJsxuvQU.js +0 -90
  700. package/dist/showcase/assets/data-view-syhKhdz9.js +0 -124
  701. package/dist/showcase/assets/data-view-znnAeb6b.js +0 -4
  702. package/dist/showcase/assets/database-isLkCvDd.js +0 -1
  703. package/dist/showcase/assets/date-block-BDn9lGVM.js +0 -1
  704. package/dist/showcase/assets/date-block-CqRL1xfo.js +0 -1
  705. package/dist/showcase/assets/date-picker-DNcmSgQk.js +0 -1
  706. package/dist/showcase/assets/date-pickers-3lQUDDS7.js +0 -73
  707. package/dist/showcase/assets/dense-info-CfvqiIpM.js +0 -106
  708. package/dist/showcase/assets/design-system-consistency-C3yRhKwF.js +0 -264
  709. package/dist/showcase/assets/dialog-DiAkrPHO.js +0 -1
  710. package/dist/showcase/assets/dialog-feUFM03m.js +0 -1
  711. package/dist/showcase/assets/dialog-ruVOqJnB.js +0 -1
  712. package/dist/showcase/assets/display-utilities-SPJxlrkp.js +0 -4
  713. package/dist/showcase/assets/display-utilities.examples-ByRydMl0.js +0 -302
  714. package/dist/showcase/assets/dist-C9DVZddl.js +0 -45
  715. package/dist/showcase/assets/dist-DNARKM_B.js +0 -1
  716. package/dist/showcase/assets/dollar-sign-CUDuWyun.js +0 -1
  717. package/dist/showcase/assets/download-CIbh9VUU.js +0 -1
  718. package/dist/showcase/assets/dropdown-menu-MoIAG0ES.js +0 -1
  719. package/dist/showcase/assets/dropzone-D0kHIUuh.js +0 -1
  720. package/dist/showcase/assets/earth-BpNTeF25.js +0 -1
  721. package/dist/showcase/assets/ellipsis-B9w0cuoH.js +0 -1
  722. package/dist/showcase/assets/ellipsis-vertical-DHbOsjTF.js +0 -1
  723. package/dist/showcase/assets/empty-DvYVgcNF.js +0 -1
  724. package/dist/showcase/assets/empty-item-oFM5kPCp.js +0 -49
  725. package/dist/showcase/assets/empty-state-DTq86muv.js +0 -1
  726. package/dist/showcase/assets/empty-state-De7XCht-.js +0 -190
  727. package/dist/showcase/assets/enhanced-activities--XHjx99M.js +0 -357
  728. package/dist/showcase/assets/enhanced-combobox-CX_mTkei.js +0 -1
  729. package/dist/showcase/assets/esm-XXqBjGGF.js +0 -2
  730. package/dist/showcase/assets/event-calendar-zTiCWOF5.js +0 -138
  731. package/dist/showcase/assets/event-log-C_zSlY6y.js +0 -330
  732. package/dist/showcase/assets/example-Cv05rz75.js +0 -1
  733. package/dist/showcase/assets/external-link-DaR-AMyf.js +0 -1
  734. package/dist/showcase/assets/eye-CDSbB0kZ.js +0 -1
  735. package/dist/showcase/assets/feature-announcement-DJ26ZDVB.js +0 -34
  736. package/dist/showcase/assets/file-DPSK5cGC.js +0 -1
  737. package/dist/showcase/assets/file-text-BBWpAppG.js +0 -1
  738. package/dist/showcase/assets/filter-layout-CZRGcd6Z.js +0 -1
  739. package/dist/showcase/assets/filters-Bn7hYUeq.js +0 -139
  740. package/dist/showcase/assets/flag-BRs-GTCx.js +0 -1
  741. package/dist/showcase/assets/folder-open-DnFjlB3X.js +0 -1
  742. package/dist/showcase/assets/form-field-SW-Yp7H7.js +0 -1
  743. package/dist/showcase/assets/format-Bki5m7M3.js +0 -1
  744. package/dist/showcase/assets/forms-CAUL2gGq.js +0 -915
  745. package/dist/showcase/assets/funnel-D6g2Suhd.js +0 -1
  746. package/dist/showcase/assets/generic-CU6JNqKO.js +0 -1
  747. package/dist/showcase/assets/getPseudoElementBounds-yqDwWA_y.js +0 -1
  748. package/dist/showcase/assets/gift-B2Qp9Vqt.js +0 -1
  749. package/dist/showcase/assets/giftcard-cards-Dk0DYoN2.js +0 -85
  750. package/dist/showcase/assets/git-branch-CPtvCNGc.js +0 -1
  751. package/dist/showcase/assets/global-search-D1ow01VA.js +0 -1
  752. package/dist/showcase/assets/global-search-DQR2AgDO.js +0 -215
  753. package/dist/showcase/assets/globe-BiZgUZFZ.js +0 -1
  754. package/dist/showcase/assets/gradient-card-D5isLy3_.js +0 -58
  755. package/dist/showcase/assets/hash-NJ5ohGOa.js +0 -1
  756. package/dist/showcase/assets/header-Df9uYSSH.js +0 -1
  757. package/dist/showcase/assets/header-notifications-sPR5NuON.js +0 -1
  758. package/dist/showcase/assets/heart-C4t7PVKW.js +0 -1
  759. package/dist/showcase/assets/hooks-0TKg0ZAK.js +0 -220
  760. package/dist/showcase/assets/house-CuLXFtjd.js +0 -1
  761. package/dist/showcase/assets/icon-badge-Cr6DD-_7.js +0 -1
  762. package/dist/showcase/assets/icon-badge-DMdMSSRL.js +0 -37
  763. package/dist/showcase/assets/image-DYjJaO0i.js +0 -1
  764. package/dist/showcase/assets/inbox-DGF8FgvV.js +0 -1
  765. package/dist/showcase/assets/index-ATou_nFA.js +0 -10
  766. package/dist/showcase/assets/index-C8U-r6l7.css +0 -2
  767. package/dist/showcase/assets/inertValue-CBi0sj8C.js +0 -1
  768. package/dist/showcase/assets/info-DLaTRPUT.js +0 -1
  769. package/dist/showcase/assets/inline-stat-DGpunTNF.js +0 -1
  770. package/dist/showcase/assets/inline-stat-rUaaOSmR.js +0 -15
  771. package/dist/showcase/assets/input-Cmrgo51H.js +0 -1
  772. package/dist/showcase/assets/input-CnmnWnGb.js +0 -1
  773. package/dist/showcase/assets/input-group-BwujFvXM.js +0 -1
  774. package/dist/showcase/assets/input-group-DvXgZtra.js +0 -47
  775. package/dist/showcase/assets/inputs-CjzW_R8z.js +0 -155
  776. package/dist/showcase/assets/installation-2dW-rmF2.js +0 -134
  777. package/dist/showcase/assets/invoice-header-DeWxMKCe.js +0 -36
  778. package/dist/showcase/assets/invoice-items-Dxb95w0e.js +0 -36
  779. package/dist/showcase/assets/invoice-mini-EMzCkmR7.js +0 -14
  780. package/dist/showcase/assets/invoice-table-ClWJaclJ.js +0 -30
  781. package/dist/showcase/assets/isSameDay-BNPzVySj.js +0 -1
  782. package/dist/showcase/assets/isToday-D6n7oLej.js +0 -1
  783. package/dist/showcase/assets/italic-B8w3dpYw.js +0 -1
  784. package/dist/showcase/assets/item-B8_dwOlT.js +0 -1
  785. package/dist/showcase/assets/item-Baq-Mmy2.js +0 -1
  786. package/dist/showcase/assets/item-BtMuqGwy.js +0 -140
  787. package/dist/showcase/assets/kanban-B-QxvKMg.js +0 -188
  788. package/dist/showcase/assets/key-round-CrBIyzIa.js +0 -1
  789. package/dist/showcase/assets/label-VWe_nbHh.js +0 -1
  790. package/dist/showcase/assets/languages-N0uGt5nC.js +0 -1
  791. package/dist/showcase/assets/layers-DEZvT5cX.js +0 -1
  792. package/dist/showcase/assets/layout-app-shell-T9UqKX2o.js +0 -608
  793. package/dist/showcase/assets/layout-auth-IVC4DuU3.js +0 -790
  794. package/dist/showcase/assets/layout-containers-naBpuH05.js +0 -101
  795. package/dist/showcase/assets/layout-header-9i_7ygKU.js +0 -203
  796. package/dist/showcase/assets/layout-page-CrEUiJpW.js +0 -315
  797. package/dist/showcase/assets/layout-primitives-DPrVHpu3.js +0 -34
  798. package/dist/showcase/assets/layout-sidebar-D7z6-kPu.js +0 -224
  799. package/dist/showcase/assets/layout-users-Cov9D84d.js +0 -117
  800. package/dist/showcase/assets/layout-workspace-Czlmi8gY.js +0 -191
  801. package/dist/showcase/assets/lib-DNMH46Rn.js +0 -1
  802. package/dist/showcase/assets/list-checks-DygDRIGi.js +0 -1
  803. package/dist/showcase/assets/lock-DqEahakB.js +0 -1
  804. package/dist/showcase/assets/lock-keyhole-CETEK3R0.js +0 -1
  805. package/dist/showcase/assets/mail-LKhBlrEc.js +0 -1
  806. package/dist/showcase/assets/mail-check-BOTjWQJf.js +0 -1
  807. package/dist/showcase/assets/map-0vJT2r8C.js +0 -124
  808. package/dist/showcase/assets/map-pin-D0qrpDJI.js +0 -1
  809. package/dist/showcase/assets/media-library-Bp99WaS9.js +0 -699
  810. package/dist/showcase/assets/mention-inline-suggestions-mlV7LRvD.js +0 -1
  811. package/dist/showcase/assets/mentions-Cmd1zxOR.js +0 -138
  812. package/dist/showcase/assets/menus-CtjFPoDr.js +0 -171
  813. package/dist/showcase/assets/message-square-BXyvikcZ.js +0 -1
  814. package/dist/showcase/assets/metadata-list-DLUBcy7E.js +0 -286
  815. package/dist/showcase/assets/metadata-list-F3bWXtZB.js +0 -1
  816. package/dist/showcase/assets/metric-CXPRptlh.js +0 -1
  817. package/dist/showcase/assets/metric-bar-BY25WVZ0.js +0 -1
  818. package/dist/showcase/assets/metric-grid-DQtf9y6E.js +0 -1
  819. package/dist/showcase/assets/metric-trend-chip-CXHpkj3U.js +0 -1
  820. package/dist/showcase/assets/metrics-analytics-bar-BIuwiVrn.js +0 -44
  821. package/dist/showcase/assets/metrics-analytics-cards-yx5lMGQf.js +0 -50
  822. package/dist/showcase/assets/metrics-comparison-BC_7jLXf.js +0 -76
  823. package/dist/showcase/assets/metrics-heatmap-C_nhCljz.js +0 -27
  824. package/dist/showcase/assets/metrics-inline-badge-3oySQnoR.js +0 -17
  825. package/dist/showcase/assets/metrics-kpi-row-zS4-oiTO.js +0 -31
  826. package/dist/showcase/assets/metrics-micro-grid-UJkA2LNR.js +0 -42
  827. package/dist/showcase/assets/metrics-overview-DQFr22ol.js +0 -192
  828. package/dist/showcase/assets/metrics-stat-cards-DnBirxKV.js +0 -54
  829. package/dist/showcase/assets/minus-BOVQEx6C.js +0 -1
  830. package/dist/showcase/assets/money-display-DV7xlrNV.js +0 -1
  831. package/dist/showcase/assets/money-display-DxnM5--7.js +0 -1
  832. package/dist/showcase/assets/month-year-picker-BzRXCrQ7.js +0 -1
  833. package/dist/showcase/assets/navigation-ChJKLv4Y.js +0 -90
  834. package/dist/showcase/assets/navigation-D7VJsKrP.js +0 -231
  835. package/dist/showcase/assets/navigation-extras-BVc1xQuB.js +0 -43
  836. package/dist/showcase/assets/notification-banner-1ivcmPLe.js +0 -1
  837. package/dist/showcase/assets/onboarding-checklist-CbARgwpX.js +0 -119
  838. package/dist/showcase/assets/overflow-tab-bar-DlqMmyTx.js +0 -1
  839. package/dist/showcase/assets/overlays-DkWO50b8.js +0 -159
  840. package/dist/showcase/assets/overlays-KKZpxWjt.js +0 -408
  841. package/dist/showcase/assets/overview-BjQe-YZE.js +0 -184
  842. package/dist/showcase/assets/package-DhQRoFDo.js +0 -1
  843. package/dist/showcase/assets/package-check-CBgGiccG.js +0 -1
  844. package/dist/showcase/assets/page-BWTmyV5J.js +0 -1
  845. package/dist/showcase/assets/page-action-button-DV-YYRA4.js +0 -1
  846. package/dist/showcase/assets/page-header-Bmg4NU_P.js +0 -1
  847. package/dist/showcase/assets/pagination-ByQ_OXRU.js +0 -1
  848. package/dist/showcase/assets/pagination-Db5CuoBb.js +0 -42
  849. package/dist/showcase/assets/paperclip-BQNPUzG_.js +0 -1
  850. package/dist/showcase/assets/password-input-CPvjzM1f.js +0 -1
  851. package/dist/showcase/assets/pencil-DuBakHme.js +0 -1
  852. package/dist/showcase/assets/phone-t94LTB1m.js +0 -1
  853. package/dist/showcase/assets/placeholder-pattern-BNou2ep-.js +0 -1
  854. package/dist/showcase/assets/plus-BRcp6JhT.js +0 -1
  855. package/dist/showcase/assets/popover-CVuJP03o.js +0 -1
  856. package/dist/showcase/assets/popover-D_P2gTn8.js +0 -1
  857. package/dist/showcase/assets/popover-menu-DGY5jEk4.js +0 -1
  858. package/dist/showcase/assets/products-8sUfDMPU.js +0 -423
  859. package/dist/showcase/assets/progress-BrMvIZIz.js +0 -1
  860. package/dist/showcase/assets/progress-CSXZAavT.js +0 -18
  861. package/dist/showcase/assets/progress-Dvqpf_O0.js +0 -1
  862. package/dist/showcase/assets/props-table-BAfz1Zc6.js +0 -1
  863. package/dist/showcase/assets/props.generated-CuVoOKYT.json +0 -41746
  864. package/dist/showcase/assets/qr-code-C-CaHJQ2.js +0 -1
  865. package/dist/showcase/assets/quote-Ci80eS0u.js +0 -1
  866. package/dist/showcase/assets/receipt-jvwbPuE3.js +0 -1
  867. package/dist/showcase/assets/receipt-text-CT0GiMQm.js +0 -1
  868. package/dist/showcase/assets/refinement-guide-BnCQ9-6f.js +0 -189
  869. package/dist/showcase/assets/refresh-cw-CXDARnCe.js +0 -1
  870. package/dist/showcase/assets/resolveValueLabel-DJanfUim.js +0 -1
  871. package/dist/showcase/assets/resource-Bir-z7ie.js +0 -139
  872. package/dist/showcase/assets/resource-D19qhfYP.js +0 -1
  873. package/dist/showcase/assets/resource-selector-card-BUbuu-QH.js +0 -43
  874. package/dist/showcase/assets/rich-text-editor-BCtz589M.js +0 -124
  875. package/dist/showcase/assets/rich-text-editor-uu9FmB8B.js +0 -143
  876. package/dist/showcase/assets/rotate-ccw-DEIVfiHA.js +0 -1
  877. package/dist/showcase/assets/route-B5vtDLsE.js +0 -1
  878. package/dist/showcase/assets/save-DQ4Up8ZB.js +0 -1
  879. package/dist/showcase/assets/schema-form-D7wbdl5u.js +0 -327
  880. package/dist/showcase/assets/scroll-area-B0QD6o1Y.js +0 -32
  881. package/dist/showcase/assets/scroll-area-BoZ1SrfI.js +0 -1
  882. package/dist/showcase/assets/section-BXsVHOsI.js +0 -1
  883. package/dist/showcase/assets/select-CW8SYsOY.js +0 -1
  884. package/dist/showcase/assets/select-DmRqLSoG.js +0 -1
  885. package/dist/showcase/assets/send-Dxs1-xSj.js +0 -1
  886. package/dist/showcase/assets/separator-BLOG_8oO.js +0 -1
  887. package/dist/showcase/assets/separator-DZC_uQU-.js +0 -1
  888. package/dist/showcase/assets/separator-OlLHRN7k.js +0 -28
  889. package/dist/showcase/assets/settings-2-BSpgytsy.js +0 -1
  890. package/dist/showcase/assets/settings-CCNP7XOu.js +0 -1
  891. package/dist/showcase/assets/sheet-DIfJjbgA.js +0 -1
  892. package/dist/showcase/assets/shield-D2gTWkwA.js +0 -1
  893. package/dist/showcase/assets/shield-alert-C-3oWpoe.js +0 -1
  894. package/dist/showcase/assets/shield-check-D11r1eJ8.js +0 -1
  895. package/dist/showcase/assets/shopping-bag-DAeaVQ5O.js +0 -1
  896. package/dist/showcase/assets/showcase-GdZcH6OR.js +0 -132
  897. package/dist/showcase/assets/sidebar-RBzHNuB7.js +0 -1
  898. package/dist/showcase/assets/sidebar.context-Dyw470Qp.js +0 -1
  899. package/dist/showcase/assets/skeleton-B7crngMw.js +0 -1
  900. package/dist/showcase/assets/skeleton-BwEVNdGJ.js +0 -1
  901. package/dist/showcase/assets/skeleton-DM73_ueB.js +0 -1
  902. package/dist/showcase/assets/skeleton-cHsWJOtO.js +0 -29
  903. package/dist/showcase/assets/slider-DRPnIs0S.js +0 -1
  904. package/dist/showcase/assets/smart-card-DER7dpD9.js +0 -1
  905. package/dist/showcase/assets/sonner-Go1YsPBH.js +0 -22
  906. package/dist/showcase/assets/sortable.esm-q6LdsxSr.js +0 -5
  907. package/dist/showcase/assets/sparkles-DqH40POl.js +0 -1
  908. package/dist/showcase/assets/spinner-C0YWWxyj.js +0 -1
  909. package/dist/showcase/assets/spinner-CpHNR13f.js +0 -30
  910. package/dist/showcase/assets/spinner-Dwvf24e9.js +0 -49
  911. package/dist/showcase/assets/square-pen-D-xHmIA0.js +0 -1
  912. package/dist/showcase/assets/stacked-avatars-C92NYKIa.js +0 -1
  913. package/dist/showcase/assets/star-dD4CAJ83.js +0 -1
  914. package/dist/showcase/assets/startOfDay-BXZshd4g.js +0 -1
  915. package/dist/showcase/assets/styles-BPJdkO_3.js +0 -1
  916. package/dist/showcase/assets/suggestions-CyhKme4Q.js +0 -126
  917. package/dist/showcase/assets/switch-C7DVTgQd.js +0 -1
  918. package/dist/showcase/assets/switch-LU6nljdS.js +0 -1
  919. package/dist/showcase/assets/sync-bERw1shm.js +0 -124
  920. package/dist/showcase/assets/table-BuIv4nqB.js +0 -686
  921. package/dist/showcase/assets/table-CDMDtBgJ.js +0 -1
  922. package/dist/showcase/assets/table-actions-DsK7d8Yb.js +0 -1
  923. package/dist/showcase/assets/tabs-BDryywGb.js +0 -19
  924. package/dist/showcase/assets/tabs-BNaZmM48.js +0 -1
  925. package/dist/showcase/assets/tags-input-CzE_5BJl.js +0 -1
  926. package/dist/showcase/assets/text-button-B1m5cpX_.js +0 -1
  927. package/dist/showcase/assets/text-link-CqjW10Ce.js +0 -1
  928. package/dist/showcase/assets/textarea-xJ3EE8R9.js +0 -1
  929. package/dist/showcase/assets/textarea-xOekToAG.js +0 -1
  930. package/dist/showcase/assets/throttle-alert-BH1HMiaI.js +0 -1
  931. package/dist/showcase/assets/timelines-DjWkuOz3.js +0 -200
  932. package/dist/showcase/assets/toggle-group-Css6pfUI.js +0 -1
  933. package/dist/showcase/assets/toggles-DhDrn3YH.js +0 -71
  934. package/dist/showcase/assets/toggles-group-e4xtKzkl.js +0 -32
  935. package/dist/showcase/assets/tooltip-DMvMUrGe.js +0 -31
  936. package/dist/showcase/assets/trash-2-zILxQmtX.js +0 -1
  937. package/dist/showcase/assets/trending-up-CRH278ig.js +0 -1
  938. package/dist/showcase/assets/truck-At9CEKg7.js +0 -1
  939. package/dist/showcase/assets/typography-B0ehvSV4.js +0 -223
  940. package/dist/showcase/assets/ui-badge-CyLWYf3f.js +0 -28
  941. package/dist/showcase/assets/ui-card-BPnLZmkJ.js +0 -30
  942. package/dist/showcase/assets/ui-table-C-zXhcOm.js +0 -42
  943. package/dist/showcase/assets/upload-tray-IyQJEM9n.js +0 -138
  944. package/dist/showcase/assets/use-layout-link-Cux4giQO.js +0 -1
  945. package/dist/showcase/assets/useAriaLabelledBy-Bo0rTGvc.js +0 -1
  946. package/dist/showcase/assets/useCollapsiblePanel-CzU-1LY3.js +0 -1
  947. package/dist/showcase/assets/useCompositeItem-CJFNnVql.js +0 -1
  948. package/dist/showcase/assets/useCompositeListItem-BAuO9hue.js +0 -1
  949. package/dist/showcase/assets/useLabelableId-HuACs9ba.js +0 -1
  950. package/dist/showcase/assets/useOpenInteractionType-MEUfJuxN.js +0 -1
  951. package/dist/showcase/assets/useRender-B-6DpRfj.js +0 -1
  952. package/dist/showcase/assets/useTriggerFocusGuards-B-mRyUJJ.js +0 -1
  953. package/dist/showcase/assets/useValueChanged-CVn_Rfso.js +0 -1
  954. package/dist/showcase/assets/user-eelwPGBI.js +0 -1
  955. package/dist/showcase/assets/user-plus-DhswMZvb.js +0 -1
  956. package/dist/showcase/assets/users-BVMmaveS.js +0 -1
  957. package/dist/showcase/assets/vendor-profile-FHaiInTe.js +0 -37
  958. package/dist/showcase/assets/video-C42fxAyj.js +0 -1
  959. package/dist/showcase/assets/visually-hidden-BwzlEinj.js +0 -1
  960. package/dist/showcase/assets/wrench-EKI7PaKp.js +0 -1
  961. package/dist/showcase/assets/x--LIqlhum.js +0 -1
  962. package/dist/showcase/assets/zap-C1fX30vt.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-OT-xIguQ.js","names":[],"sources":["../../src/components/layout/sidebar/sidebar.context.tsx","../../src/components/layout/sidebar/sidebar.settings.ts","../../src/components/layout/sidebar/sidebar.tsx","../../src/components/layout/sidebar/components/sidebar-grouped-navigation.tsx","../../src/components/layout/sidebar/components/sidebar-logo.tsx","../../src/components/layout/sidebar/components/sidebar-navigation-footer.tsx","../../src/components/layout/sidebar/sidebar.types.ts","../../src/components/layout/sidebar/components/sidebar-workspace-dropdown.tsx","../../src/components/layout/sidebar/app-sidebar.tsx","../../src/components/layout/sidebar/components/sidebar-navigation.tsx","../../src/components/layout/sidebar/components/sidebar-navigation-user.tsx"],"sourcesContent":[" \n/** SidebarProvider — layout-scoped wrapper around the shadcn sidebar context. */\nimport * as React from 'react';\n\nimport { TooltipProvider } from '@/components/base/display/tooltip';\nimport {\n\tSidebarProvider as PrimitiveSidebarProvider,\n\tuseSidebar as primitiveUseSidebar,\n} from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nexport const useSidebar = primitiveUseSidebar;\nexport type SidebarContext = ReturnType<typeof primitiveUseSidebar>;\n\nexport type SidebarProviderProps = React.ComponentProps<'div'> & {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n};\n\nexport function SidebarProvider({\n\tdefaultOpen = true,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}: SidebarProviderProps) {\n\treturn (\n\t\t<TooltipProvider delayDuration={0}>\n\t\t\t<PrimitiveSidebarProvider\n\t\t\t\tdefaultOpen={defaultOpen}\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\tstyle={style}\n\t\t\t\tclassName={cn('min-h-svh', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PrimitiveSidebarProvider>\n\t\t</TooltipProvider>\n\t);\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nexport const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nexport const SIDEBAR_WIDTH = \"16rem\"\nexport const SIDEBAR_WIDTH_MOBILE = \"18rem\"\nexport const SIDEBAR_WIDTH_ICON = \"3rem\"\nexport const SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\nexport const sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n"," \n/** Sidebar — responsive shell around the shadcn sidebar primitive pieces. */\nimport * as React from 'react';\n\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from '@/components/base/sheet';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useSidebar } from './sidebar.context';\nimport { SIDEBAR_WIDTH_MOBILE } from './sidebar.settings';\n\nexport interface SidebarStrings {\n\tmobileTitle: string;\n\tmobileDescription: string;\n}\n\nexport const defaultSidebarStrings: SidebarStrings = {\n\tmobileTitle: 'Sidebar',\n\tmobileDescription: 'Displays the mobile sidebar.',\n};\n\nexport type SidebarProps = React.ComponentProps<'div'> & {\n\tside?: 'left' | 'right';\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\tstrings?: StringsProp<SidebarStrings>;\n\tsurfaceClassName?: string;\n};\n\nexport function Sidebar({\n\tside = 'left',\n\tvariant = 'sidebar',\n\tcollapsible = 'offcanvas',\n\tclassName,\n\tsurfaceClassName,\n\tchildren,\n\tstrings: stringsProp,\n\t...props\n}: SidebarProps) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\tconst strings = useStrings(defaultSidebarStrings, stringsProp);\n\n\tif (collapsible === 'none') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tclassName={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', surfaceClassName, className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName={cn('w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden', surfaceClassName)}\n\t\t\t\t\tstyle={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>{strings.mobileTitle}</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>{strings.mobileDescription}</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer sticky top-0 hidden h-full text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t\tdata-slot=\"sidebar\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inset-y-0 z-10 hidden h-full w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n\t\t\t\t\tside === 'left'\n\t\t\t\t\t\t? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n\t\t\t\t\t\t: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? 'px-2 py-3 group-data-[collapsible=icon]:w-17'\n\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'sidebar flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/** SidebarGroupedNavigation — grouped tree navigation with composable rows. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarSeparator,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarGroupedNavigationProps, SidebarNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nfunction NavLabel({\n\titem,\n\tactive = false,\n}: {\n\titem: SidebarNavItem;\n\tactive?: boolean;\n}) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight={active ? 'bold' : 'medium'} className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarGroupedNavigation({\n\tnavigationByGroups,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\temptySlot,\n\trenderItem,\n\tclassName,\n}: SidebarGroupedNavigationProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst isActive = (href?: string): boolean => !!href && isPathMatch(currentUrl, toPath(href));\n\n\tconst bestMatchIndex = (siblings: SidebarNavItem[]): number => {\n\t\tlet bestIdx = -1;\n\t\tlet bestLen = -1;\n\t\tfor (let i = 0; i < siblings.length; i += 1) {\n\t\t\tconst sibling = siblings[i];\n\t\t\tconst path = sibling?.href ? toPath(sibling.href) : '';\n\t\t\tif (path && isPathMatch(currentUrl, path) && path.length > bestLen) {\n\t\t\t\tbestLen = path.length;\n\t\t\t\tbestIdx = i;\n\t\t\t}\n\t\t}\n\t\treturn bestIdx;\n\t};\n\n\tconst hasActiveChild = (children?: SidebarNavItem[]): boolean =>\n\t\t!!children?.some((child) => isActive(child.href) || hasActiveChild(child.children));\n\n\tconst renderDefaultItem = (item: SidebarNavItem, depth = 0, index = 0): React.ReactNode => {\n\t\tconst hasChildren = !!item.children?.length;\n\t\tconst itemActive = isActive(item.href);\n\t\tconst childActive = hasChildren ? hasActiveChild(item.children) : false;\n\t\tconst expanded = itemActive || childActive;\n\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\tconst label = getNavLabel(item);\n\t\tconst context: SidebarRenderItemContext = {\n\t\t\tdepth,\n\t\t\tactive: itemActive,\n\t\t\texpanded,\n\t\t\tbadge,\n\t\t\trenderLink: resolvedRenderLink,\n\t\t};\n\n\t\tif (renderItem) {\n\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t}\n\n\t\tif (hasChildren) {\n\t\t\tconst activeChildIdx = bestMatchIndex(item.children ?? []);\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t<NavLabel item={item} active={expanded} />\n\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t</>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\tisActive={expanded}\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, expanded) as React.ReactElement\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttooltip={{ children: label }}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\t\t\texpanded && 'font-bold data-active:font-bold data-[active=true]:font-bold',\n\t\t\t\t\t\t\titemActive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t!itemActive && childActive && 'bg-sidebar-accent/60 text-sidebar-foreground',\n\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{content}\n\t\t\t\t\t</SidebarMenuButton>\n\n\t\t\t\t\t{!!expanded && (\n\t\t\t\t\t\t<SidebarMenuSub className=\"gap-0.5\">\n\t\t\t\t\t\t\t{item.children?.map((child, childIndex) => {\n\t\t\t\t\t\t\t\tconst childActiveNow = childIndex === activeChildIdx || isActive(child.href);\n\t\t\t\t\t\t\t\tconst childBadge = resolveNavBadge(child.handle, child.badge, liveBadges);\n\t\t\t\t\t\t\t\tconst childLabel = getNavLabel(child);\n\t\t\t\t\t\t\t\tconst childContent = (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{typeof childLabel === 'string' || typeof childLabel === 'number' ? (\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tweight={childActiveNow ? 'semibold' : 'regular'}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1 truncate text-inherit\"\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{childLabel}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : childLabel}\n\t\t\t\t\t\t\t\t\t\t{!!childBadge && <NavBadge value={childBadge} size=\"small\" />}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<SidebarMenuSubItem key={getNavKey(child, childIndex)}>\n\t\t\t\t\t\t\t\t\t\t<SidebarMenuSubButton\n\t\t\t\t\t\t\t\t\t\t\tisActive={childActiveNow}\n\t\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t\tchild.href && !child.disabled\n\t\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, child, childContent, undefined, childActiveNow) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\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'w-full',\n\t\t\t\t\t\t\t\t\t\t\t\tchildActiveNow && 'bg-transparent font-semibold text-primary hover:text-primary active:text-primary data-active:text-primary data-[active=true]:text-primary',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{childContent}\n\t\t\t\t\t\t\t\t\t\t</SidebarMenuSubButton>\n\t\t\t\t\t\t\t\t\t</SidebarMenuSubItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</SidebarMenuSub>\n\t\t\t\t\t)}\n\t\t\t</SidebarMenuItem>\n\t\t);\n\t}\n\n\tconst content = (\n\t\t<>\n\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t<NavLabel item={item} active={itemActive} />\n\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t<SidebarMenuButton\n\t\t\t\tisActive={itemActive}\n\t\t\t\trender={\n\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, itemActive) as React.ReactElement\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\ttooltip={{ children: label }}\n\t\t\t\tdisabled={item.disabled}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\titemActive && 'font-bold data-active:font-bold data-[active=true]:font-bold',\n\t\t\t\t\titemActive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</SidebarMenuButton>\n\t\t</SidebarMenuItem>\n\t);\n\t};\n\n\tconst groupEntries = Object.entries(navigationByGroups).filter(([, items]) => items.length > 0);\n\tif (groupEntries.length === 0) return emptySlot ?? null;\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{groupEntries.map(([groupName, items], groupIndex) => (\n\t\t\t\t<React.Fragment key={groupName}>\n\t\t\t\t\t<SidebarGroup className=\"px-2 py-0\">\n\t\t\t\t\t\t{!groupName.startsWith('_') && <SidebarGroupLabel>{groupName}</SidebarGroupLabel>}\n\t\t\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t\t\t{items.map((item, index) => renderDefaultItem(item, 0, index))}\n\t\t\t\t\t\t</SidebarMenu>\n\t\t\t\t\t</SidebarGroup>\n\t\t\t\t\t{groupIndex < groupEntries.length - 1 && (\n\t\t\t\t\t\t<SidebarSeparator className=\"!mx-auto !my-1.5 !w-11/12 overflow-hidden px-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","/** SidebarLogo — hides its logo content when the sidebar is icon-collapsed. */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { useSidebar } from '../sidebar.context';\n\nexport interface SidebarLogoProps {\n\tlogo: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tclassName?: string;\n}\n\nexport function SidebarLogo({ logo, collapsedLogo = null, className }: SidebarLogoProps) {\n\tconst { state } = useSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst content = isCollapsed ? collapsedLogo : logo;\n\tif (!content) return null;\n\treturn <div className={cn('min-w-0', className)}>{content}</div>;\n}\n","/** SidebarNavigationFooter — secondary footer navigation using renderLink. */\nimport { ExternalLink } from 'lucide-react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarNavigationFooterProps } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport function SidebarNavigationFooter({\n\titems,\n\tlabel,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: SidebarNavigationFooterProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<SidebarGroup className={cn('group-data-[collapsible=icon]:p-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarGroupContent>\n\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\t\t\t\t\tconst labelNode = getNavLabel(item);\n\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t\t{typeof labelNode === 'string' || typeof labelNode === 'number' ? (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" className=\"truncate text-inherit\">{labelNode}</Text>\n\t\t\t\t\t\t\t\t) : labelNode}\n\t\t\t\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t\t\t\t\t{!!item.external && <ExternalLink className=\"ml-auto size-3 opacity-50\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\t\tisActive={active}\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-8 font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</SidebarMenu>\n\t\t\t</SidebarGroupContent>\n\t\t</SidebarGroup>\n\t);\n}\n","/**\n * Sidebar types — framework-neutral navigation tree, render contexts, slots,\n * strings, and composition props.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type {\n\tLayoutIconSource,\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface SidebarNavItem {\n\t/** New preferred label. */\n\tlabel?: ReactNode;\n\t/** Back-compat label used by older call sites. */\n\ttitle?: ReactNode;\n\thref?: string;\n\thandle?: string;\n\ticon?: LayoutIconSource;\n\tdisabled?: boolean;\n\tbadge?: string | number;\n\tchildren?: SidebarNavItem[];\n\tgroup?: string;\n\texternal?: boolean;\n}\n\nexport type SidebarFlatNavItem = Omit<SidebarNavItem, 'children' | 'group'>;\n\nexport interface SidebarRenderItemContext {\n\tdepth: number;\n\tactive: boolean;\n\texpanded: boolean;\n\tbadge?: string | number;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface SidebarSlots {\n\theader?: ReactNode;\n\tbeforeNavigation?: ReactNode;\n\tafterNavigation?: ReactNode;\n\tfooter?: ReactNode;\n\tempty?: ReactNode;\n\tloading?: ReactNode;\n}\n\nexport interface AppSidebarProps extends LayoutNavigationAdapter {\n\tnavigationGroups?: Record<string, SidebarNavItem[]>;\n\tfooterNavItems?: SidebarFlatNavItem[];\n\tfooterLabel?: ReactNode;\n\tlogo?: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tworkspaceLinks?: WorkspaceLink[];\n\tworkspaceStrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\tworkspaceContentClassName?: string;\n\theaderClassName?: string;\n\tlogoClassName?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tcurrentUrl?: string;\n\tliveBadges?: Record<string, string | number>;\n\tloading?: boolean;\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\tside?: 'left' | 'right';\n\tclassName?: string;\n\tsurfaceClassName?: string;\n\tcontentClassName?: string;\n\tslots?: SidebarSlots;\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface SidebarGroupedNavigationProps extends LayoutNavigationAdapter {\n\tnavigationByGroups: Record<string, SidebarNavItem[]>;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\temptySlot?: ReactNode;\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface SidebarFlatNavigationProps extends LayoutNavigationAdapter {\n\titems: SidebarFlatNavItem[];\n\tlabel?: ReactNode;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\trenderItem?: (item: SidebarFlatNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface WorkspaceLink {\n\tlabel: ReactNode;\n\turl: string;\n\ticon?: ComponentType<{ className?: string }>;\n\texternal?: boolean;\n}\n\nexport interface SidebarWorkspaceDropdownStrings {\n\tlabel: string;\n\tselect: string;\n}\n\nexport const defaultSidebarWorkspaceDropdownStrings: SidebarWorkspaceDropdownStrings = {\n\tlabel: 'Workspace',\n\tselect: 'Select workspace',\n};\n\nexport interface SidebarWorkspaceDropdownProps extends LayoutNavigationAdapter {\n\tlogo: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tworkspaceLinks: WorkspaceLink[];\n\tstrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\tcontentClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type SidebarFooterNavigationItem = SidebarFlatNavItem;\n\nexport interface SidebarNavigationFooterProps extends LayoutNavigationAdapter {\n\titems: SidebarFooterNavigationItem[];\n\tlabel?: ReactNode;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n","/** SidebarWorkspaceDropdown — workspace selector using consumer link rendering. */\nimport { ChevronsUpDown, ExternalLink } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultSidebarWorkspaceDropdownStrings,\n\ttype SidebarWorkspaceDropdownProps,\n} from '../sidebar.types';\nimport { useSidebar } from '../sidebar.context';\n\nexport function SidebarWorkspaceDropdown({\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tcontentClassName,\n}: SidebarWorkspaceDropdownProps) {\n\tconst strings = useStrings(defaultSidebarWorkspaceDropdownStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst { state } = useSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst visibleLogo = isCollapsed ? (collapsedLogo ?? logo) : logo;\n\n\treturn (\n\t\t<SidebarMenu>\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<DropdownMenu>\n\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\tclassName=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-2\">\n\t\t\t\t\t\t\t{visibleLogo}\n\t\t\t\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"sr-only\">\n\t\t\t\t\t\t\t\t\t{strings.select}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!isCollapsed && <ChevronsUpDown className=\"ml-auto size-4 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t<DropdownMenuContent className={cn('min-w-56', contentClassName)} align=\"start\" side=\"right\" sideOffset={8}>\n\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t<DropdownMenuLabel>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.label}</Text>\n\t\t\t\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t\t{workspaceLinks.map((link) => {\n\t\t\t\t\t\t\t\tconst Icon = link.icon ?? ExternalLink;\n\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{link.label}</Text>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={link.url}\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\tresolvedRenderLink({\n\t\t\t\t\t\t\t\t\t\t\t\thref: link.url,\n\t\t\t\t\t\t\t\t\t\t\t\texternal: link.external ?? true,\n\t\t\t\t\t\t\t\t\t\t\t\tchildren: null,\n\t\t\t\t\t\t\t\t\t\t\t\tclassName: 'flex items-center gap-2',\n\t\t\t\t\t\t\t\t\t\t\t}) as React.ReactElement\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\t\t{content}\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t</DropdownMenu>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n","/**\n * AppSidebar — opinionated assembly of logo/header, grouped navigation, and\n * footer links. Consumers still own framework routing through `renderLink`.\n */\nimport * as React from 'react';\n\nimport { ScrollArea } from '@/components/base/display/scroll-area';\nimport { Skeleton } from '@/components/base/display/skeleton';\nimport {\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarHeader,\n\tSidebarMenu,\n\tSidebarMenuItem,\n\tSidebarSeparator,\n} from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nimport { SidebarGroupedNavigation } from './components/sidebar-grouped-navigation';\nimport { SidebarLogo } from './components/sidebar-logo';\nimport { SidebarNavigationFooter } from './components/sidebar-navigation-footer';\nimport { SidebarWorkspaceDropdown } from './components/sidebar-workspace-dropdown';\nimport { Sidebar } from './sidebar';\nimport type { AppSidebarProps } from './sidebar.types';\n\nexport function AppSidebar({\n\tnavigationGroups,\n\tfooterNavItems = [],\n\tfooterLabel,\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks = [],\n\tworkspaceStrings,\n\tworkspaceContentClassName,\n\theaderClassName,\n\tlogoClassName,\n\ticonMap,\n\tcurrentUrl = '/',\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\tloading,\n\tcollapsible = 'icon',\n\tvariant = 'sidebar',\n\tside = 'left',\n\tclassName,\n\tsurfaceClassName,\n\tcontentClassName,\n\tslots,\n\trenderItem,\n}: AppSidebarProps) {\n\tconst hasFooter = footerNavItems.length > 0 || !!slots?.footer;\n\tconst isLoading = loading || !navigationGroups;\n\tconst hasWorkspaceLinks = workspaceLinks.length > 0;\n\n\treturn (\n\t\t<Sidebar collapsible={collapsible} variant={variant} side={side} className={cn('h-svh', className)} surfaceClassName={surfaceClassName}>\n\t\t\t{slots?.header ?? (!!logo && (\n\t\t\t\t<SidebarHeader className={headerClassName}>\n\t\t\t\t\t{hasWorkspaceLinks ? (\n\t\t\t\t\t\t<SidebarWorkspaceDropdown\n\t\t\t\t\t\t\tlogo={logo}\n\t\t\t\t\t\t\tcollapsedLogo={collapsedLogo}\n\t\t\t\t\t\t\tworkspaceLinks={workspaceLinks}\n\t\t\t\t\t\t\tstrings={workspaceStrings}\n\t\t\t\t\t\t\tcontentClassName={workspaceContentClassName}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarLogo logo={logo} collapsedLogo={collapsedLogo} className={logoClassName} />\n\t\t\t\t\t)}\n\t\t\t\t</SidebarHeader>\n\t\t\t))}\n\n\t\t\t<SidebarContent className={contentClassName}>\n\t\t\t\t<ScrollArea className=\"h-full pr-1.5 pt-4\">\n\t\t\t\t\t{slots?.beforeNavigation}\n\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\tslots?.loading ?? <AppSidebarSkeleton />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarGroupedNavigation\n\t\t\t\t\t\t\tnavigationByGroups={navigationGroups}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t\temptySlot={slots?.empty}\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{slots?.afterNavigation}\n\t\t\t\t</ScrollArea>\n\t\t\t</SidebarContent>\n\n\t\t\t{hasFooter && (\n\t\t\t\t<SidebarFooter>\n\t\t\t\t\t{slots?.footer ?? (\n\t\t\t\t\t\t<SidebarNavigationFooter\n\t\t\t\t\t\t\titems={footerNavItems}\n\t\t\t\t\t\t\tlabel={footerLabel}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SidebarFooter>\n\t\t\t)}\n\t\t</Sidebar>\n\t);\n}\n\nfunction AppSidebarSkeleton() {\n\tconst groups = [9, 3, 4, 2, 1];\n\n\treturn (\n\t\t<>\n\t\t\t{groups.map((count, groupIdx) => (\n\t\t\t\t<React.Fragment key={groupIdx}>\n\t\t\t\t\t<SidebarGroup className=\"px-2 py-0\">\n\t\t\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t\t\t{Array.from({ length: count }, (_, i) => (\n\t\t\t\t\t\t\t\t<SidebarMenuItem key={i}>\n\t\t\t\t\t\t\t\t\t<div className=\"flex h-8 items-center gap-2 px-2\">\n\t\t\t\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-4 shrink-0 rounded\" />\n\t\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-3.5 rounded\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ width: `${60 + ((groupIdx * 7 + i * 13) % 40)}px` }}\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</SidebarMenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</SidebarMenu>\n\t\t\t\t\t</SidebarGroup>\n\t\t\t\t\t{groupIdx < groups.length - 1 && (\n\t\t\t\t\t\t<SidebarSeparator className=\"!mx-auto !my-1 !w-11/12 overflow-hidden px-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t))}\n\t\t</>\n\t);\n}\n","/** SidebarNavigation — flat, framework-neutral sidebar nav list. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarFlatNavigationProps, SidebarFlatNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport { DynamicIcon } from '../sidebar.utils';\nexport { DynamicIcon as Icon } from '../sidebar.utils';\n\nfunction NavLabel({ item }: { item: SidebarFlatNavItem }) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarNavigation({\n\titems,\n\tlabel = 'Platform',\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\trenderItem,\n\tclassName,\n}: SidebarFlatNavigationProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<SidebarGroup className={cn('px-2 py-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\t\t\t\tconst context: SidebarRenderItemContext = {\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tactive,\n\t\t\t\t\t\texpanded: false,\n\t\t\t\t\t\tbadge,\n\t\t\t\t\t\trenderLink: resolvedRenderLink,\n\t\t\t\t\t};\n\t\t\t\t\tconst labelNode = getNavLabel(item);\n\n\t\t\t\t\tif (renderItem) {\n\t\t\t\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t<NavLabel item={item} />\n\t\t\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tisActive={active}\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\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{content}\n\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</SidebarMenu>\n\t\t</SidebarGroup>\n\t);\n}\n\n/** @deprecated Use `SidebarFlatNavItem` from `sidebar.types`. */\nexport type SidebarNavigationItem = SidebarFlatNavItem;\n"," \n/** SidebarNavigationUser — user profile dropdown for sidebar footer. */\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { useStrings, type StringsProp } from '@/lib/strings';\n\nimport type { LayoutUser } from '../../layout.types';\nimport { useSidebar } from '../sidebar.context';\n\nexport interface SidebarNavigationUserStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultSidebarNavigationUserStrings: SidebarNavigationUserStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface SidebarNavigationUserProps {\n\tuser: LayoutUser;\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\tstrings?: StringsProp<SidebarNavigationUserStrings>;\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nfunction deriveInitials(name: string): string {\n\treturn name\n\t\t.split(' ')\n\t\t.map((part) => part[0])\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.join('')\n\t\t.toUpperCase();\n}\n\nexport function SidebarNavigationUser({\n\tuser,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\tstrings: stringsProp,\n\trenderTrigger,\n}: SidebarNavigationUserProps) {\n\tconst strings = useStrings(defaultSidebarNavigationUserStrings, stringsProp);\n\tconst { state, isMobile } = useSidebar();\n\tconst dropdownSide = isMobile || state !== 'collapsed' ? 'bottom' : 'right';\n\tconst initials = deriveInitials(user.name);\n\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{!!onProfile && (\n\t\t\t\t<DropdownMenuItem onClick={onProfile}>\n\t\t\t\t\t<User className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.profile}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!onSettings && (\n\t\t\t\t<DropdownMenuItem onClick={onSettings}>\n\t\t\t\t\t<Settings className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.settings}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!(onProfile || onSettings) && !!onLogout && <DropdownMenuSeparator />}\n\t\t\t{!!onLogout && (\n\t\t\t\t<DropdownMenuItem onClick={onLogout}>\n\t\t\t\t\t<LogOut className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.logout}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<SidebarMenu>\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<DropdownMenu>\n\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\tclassName=\"group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderTrigger?.(user) ?? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t<Avatar className=\"size-avatar rounded-full\">\n\t\t\t\t\t\t\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t\t\t\t\t\t\t<AvatarFallback className=\"bg-sidebar-accent text-xs text-sidebar-accent-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t\t\t\t<div className=\"flex flex-1 flex-col items-start justify-center overflow-hidden\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className=\"w-full truncate\">{user.name}</Text>\n\t\t\t\t\t\t\t\t\t\t{!!user.email && <Text size=\"xs\" type=\"secondary\" className=\"w-full truncate\">{user.email}</Text>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-4 shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DropdownMenuTrigger>\n\n\t\t\t\t\t<DropdownMenuContent\n\t\t\t\t\t\tclassName=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\tsideOffset={4}\n\t\t\t\t\t>\n\t\t\t\t\t\t{customContent ?? defaultContent}\n\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t</DropdownMenu>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n\n/** @deprecated — use `LayoutUser` from `layout.types`. */\nexport type SidebarUserData = LayoutUser;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("./ui-provider-CrsJ_dGn.cjs"),n=require("../lib/utils.cjs"),r=require("./button-DEFoa7-c.cjs"),i=require("./button-CfQtOuBK.cjs"),a=require("./typography-CWEobAJV.cjs"),o=require("./badge-C65rt1M9.cjs"),s=require("./dropdown-menu-CHQzQWUK.cjs"),c=require("./input-Dvvmn96E.cjs"),l=require("./checkbox-ECGg8wjW.cjs"),u=require("./separator-BXn_fnly.cjs"),d=require("./action-menu-BYrYdpkR.cjs");let f=require("react");f=e.t(f,1);let p=require("react/jsx-runtime"),m=require("lucide-react"),h=require("@tanstack/react-table");function g({className:e,containerClassName:t,...r}){return(0,p.jsx)(`div`,{"data-slot":`table-container`,className:n.cn(`relative w-full overflow-x-auto`,t),children:(0,p.jsx)(`table`,{"data-slot":`table`,className:n.cn(`w-full caption-bottom text-sm`,e),...r})})}function _({className:e,...t}){return(0,p.jsx)(`thead`,{"data-slot":`table-header`,className:n.cn(`[&_tr]:border-b`,e),...t})}function v({className:e,...t}){return(0,p.jsx)(`tbody`,{"data-slot":`table-body`,className:n.cn(`[&_tr:last-child]:border-0`,e),...t})}function y({className:e,...t}){return(0,p.jsx)(`tr`,{"data-slot":`table-row`,className:n.cn(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,e),...t})}function b({className:e,...t}){return(0,p.jsx)(`th`,{"data-slot":`table-head`,className:n.cn(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function x({className:e,...t}){return(0,p.jsx)(`td`,{"data-slot":`table-cell`,className:n.cn(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function S({className:e,...t}){return(0,p.jsx)(`nav`,{role:`navigation`,"aria-label":`pagination`,"data-slot":`pagination`,className:n.cn(`mx-auto flex w-full justify-center`,e),...t})}function C({className:e,...t}){return(0,p.jsx)(`ul`,{"data-slot":`pagination-content`,className:n.cn(`gap-1 flex items-center`,e),...t})}function w({...e}){return(0,p.jsx)(`li`,{"data-slot":`pagination-item`,...e})}function T({className:e,isActive:t,size:i=`icon`,...a}){return(0,p.jsx)(r.t,{variant:t?`outline`:`ghost`,size:i,className:n.cn(e),nativeButton:!1,render:(0,p.jsx)(`a`,{"aria-current":t?`page`:void 0,"data-slot":`pagination-link`,"data-active":t,...a})})}function E({className:e,text:t=`Previous`,...r}){return(0,p.jsxs)(T,{"aria-label":`Go to previous page`,size:`default`,className:n.cn(`pl-2!`,e),...r,children:[(0,p.jsx)(m.ChevronLeftIcon,{"data-icon":`inline-start`}),(0,p.jsx)(`span`,{className:`hidden sm:block`,children:t})]})}function ee({className:e,text:t=`Next`,...r}){return(0,p.jsxs)(T,{"aria-label":`Go to next page`,size:`default`,className:n.cn(`pr-2!`,e),...r,children:[(0,p.jsx)(`span`,{className:`hidden sm:block`,children:t}),(0,p.jsx)(m.ChevronRightIcon,{"data-icon":`inline-end`})]})}function te({className:e,...t}){return(0,p.jsxs)(`span`,{"aria-hidden":!0,"data-slot":`pagination-ellipsis`,className:n.cn(`size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center`,e),...t,children:[(0,p.jsx)(m.MoreHorizontalIcon,{}),(0,p.jsx)(`span`,{className:`sr-only`,children:`More pages`})]})}var ne=e=>{let t=e.replace(/[_-]+/g,` `).replace(/\s+/g,` `).trim();return t?t.replace(/\b\w/g,e=>e.toUpperCase()):`Column`},D={emptyState:{message:`No results found.`},actions:{triggerLabel:`Actions`,srLabel:`Row actions menu`},filter:{searchPlaceholder:`Filter...`,columnsButton:`Columns`},columnVisibility:{title:`Toggle columns`,triggerLabel:`Columns`,formatLabel:(e,t)=>t&&t.trim().length>0?t:ne(e)},toolbar:{scrollLeft:`Scroll left`,scrollRight:`Scroll right`,columns:`Toggle columns`,dense:`Compact view`,comfortable:`Comfortable view`},pagination:{showing:`Showing`,to:`to`,of:`of`,entries:`results`,previous:`Previous`,next:`Next`,page:`Page`,rowsPerPage:`Rows per page`,ariaLabel:`Pagination navigation`},selection:{summary:(e,t)=>`${e} of ${t} row${t===1?``:`s`} selected.`,row:e=>`Select row ${e+1}`,selectAll:`Select all rows`,clear:`Clear selection`},accessibility:{scrollRegion:`Table scroll area`}},O=(e,t)=>({...e,...t??{}}),re=e=>e?{emptyState:O(D.emptyState,e.emptyState),actions:O(D.actions,e.actions),filter:O(D.filter,e.filter),columnVisibility:O(D.columnVisibility,e.columnVisibility),toolbar:O(D.toolbar,e.toolbar),pagination:O(D.pagination,e.pagination),selection:O(D.selection,e.selection),accessibility:O(D.accessibility,e.accessibility)}:D;function ie(e,t){if(t<=7)return Array.from({length:t},(e,t)=>t+1);let n=[1];e>3&&n.push(`ellipsis`);let r=Math.max(2,e-1),i=Math.min(t-1,e+1);for(let e=r;e<=i;e++)n.push(e);return e<t-2&&n.push(`ellipsis`),n.push(t),n}function ae(e,t,n){let r=new URLSearchParams;return r.set(n,String(t)),`${e}?${r.toString()}`}function oe({pagination:e,onPageChange:t,labels:r={},pageQueryKey:i}){let o={...D.pagination,...r},s=i??`page`,c=(e.current_page-1)*e.per_page+1,l=Math.min(e.current_page*e.per_page,e.total),u=(0,f.useCallback)((n,r)=>{r&&t?.(n,r,e.path||``)},[t,e.path]),d=e.prev_page_url!==null,m=e.next_page_url!==null,h=ie(e.current_page,e.last_page);return(0,p.jsxs)(`div`,{className:n.cn(`pagination--component`,`flex items-center justify-between px-5 py-3`),children:[(0,p.jsxs)(a.s,{size:`xs`,type:`secondary`,className:`tabular-nums tracking-tight`,children:[(0,p.jsxs)(a.s,{tag:`span`,weight:`medium`,className:`text-foreground`,children:[c,`–`,l]}),` `,o.of,` `,(0,p.jsx)(a.s,{tag:`span`,weight:`medium`,className:`text-foreground`,children:e.total}),` `,o.entries]}),(0,p.jsx)(S,{"aria-label":o.ariaLabel,className:`w-auto mx-0`,children:(0,p.jsxs)(C,{className:`gap-0.5`,children:[(0,p.jsx)(w,{children:(0,p.jsx)(E,{text:o.previous,href:`#`,onClick:t=>{t.preventDefault(),u(e.current_page-1,e.prev_page_url)},"aria-disabled":!d,className:`h-control-sm text-sm ${d?``:`pointer-events-none opacity-40`}`})}),h.map((t,n)=>{let r=t===`ellipsis`,i=r?`ellipsis-${e.current_page}-${n}`:`page-${t}`;return(0,p.jsx)(w,{children:r?(0,p.jsx)(te,{className:`size-control-sm`}):(0,p.jsx)(T,{href:`#`,isActive:t===e.current_page,onClick:n=>{n.preventDefault(),u(t,ae(e.path,t,s))},className:`size-control-sm text-sm`,children:t})},i)}),(0,p.jsx)(w,{children:(0,p.jsx)(ee,{text:o.next,href:`#`,onClick:t=>{t.preventDefault(),u(e.current_page+1,e.next_page_url)},"aria-disabled":!m,className:`h-control-sm text-sm ${m?``:`pointer-events-none opacity-40`}`})})]})})]})}oe.displayName=`Pagination`;function se(e){let{row:t,actions:r,menuLabel:a,displayMode:o=`menu`,responsiveBreakpoint:s=1040,strings:c}=e,l=c??D,u=a??l.actions.triggerLabel,h=(0,f.useMemo)(()=>{let e=typeof r==`function`?r(t):r;return Array.isArray(e)?e:[]},[r,t]),g=(0,f.useMemo)(()=>{let e=e=>typeof e==`function`?e(t):e;return h.filter(t=>{let n=e(t.isVisible);return n===void 0?!0:n}).map(t=>({...t,disabled:e(t.isDisabled)??t.disabled??!1}))},[h,t]),_=g.length>0,[v,y]=(0,f.useState)(!1),b=g.filter(e=>e.variant!==`destructive`),x=g.filter(e=>e.variant===`destructive`),S=[...b,...x];if((0,f.useEffect)(()=>{if(o!==`auto`||!_){y(!1);return}let e=()=>{try{y(window.innerWidth<=s)}catch{y(!1)}};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[o,_,s]),!_)return null;let C=o===`auto`?v?`menu`:`inline`:o,w=e=>{if(e){if(typeof e==`function`)return e;if((0,f.isValidElement)(e)&&typeof e.type==`function`)return e.type}},T=e=>{switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};case`link`:return{variant:`secondary`,buttonStyle:`ghost`,className:`underline underline-offset-4`};default:return{variant:`primary`,buttonStyle:`solid`}}},E=e=>{switch(e){case`default`:return`primary`;case`destructive`:return`error`;default:return`secondary`}};return C===`inline`?(0,p.jsx)(`div`,{className:n.cn(`table-actions--component`,`flex items-center gap-space-sm`),children:S.map((e,r)=>{let a=e.id||`${e.label}-${r}`,o=T(e.variant??`ghost`);return(0,p.jsxs)(i.t,{variant:o.variant,buttonStyle:o.buttonStyle,size:`small`,className:n.cn(`text-inherit leading-tight`,o.className),disabled:!!e.disabled,onClick:()=>{e.onClick?.(t)},children:[!!e.icon&&(0,p.jsx)(`span`,{className:`mr-space-sm inline-flex`,children:e.icon}),e.label]},a)})}):(0,p.jsx)(d.t,{label:void 0,icon:m.MoreHorizontal,srText:u||l.actions.srLabel,closeOnSelect:!0,align:`end`,density:`table`,children:S.map((e,n)=>{let r=e.id||`${e.label}-${n}`,i=()=>{e.onClick?.(t)},a=w(e.icon),o=e.icon?(0,p.jsx)(`span`,{className:`inline-flex items-center`,children:e.icon}):null,s=a?null:(0,p.jsxs)(`div`,{className:`flex w-full items-center gap-space-md`,children:[o,(0,p.jsx)(`span`,{children:e.label})]}),c=E(e.variant);return(0,p.jsx)(d.n,{label:e.label,icon:a,variant:c,disabled:!!e.disabled,onClick:i,children:s},r)})})}se.displayName=`DataTableActions`;var ce=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},le=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},ue=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},k=(e,t,n,r)=>{let i=``;return r&&(i+=`bg-primary/5 `),typeof n==`function`?i+=n(e,t)+` `:n&&(i+=n+` `),i.trim()},A=(e,t,n,r,i)=>{let a=``;return typeof n==`string`?a=n:n&&t&&(a=n(e,t)),r&&i?`${a} sticky left-0 z-10 bg-card shadow-[1px_0_0_0_var(--border)]`:a},de=e=>e.getSelectedRowModel().rows.map(e=>e.original),fe=(e,t=D)=>(0,p.jsx)(`div`,{className:`px-space-sm`,children:(0,p.jsx)(l.t,{className:`size-icon cursor-pointer disabled:cursor-not-allowed disabled:opacity-40`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),onCheckedChange:t=>e.toggleSelected(t===!0),onClick:e=>e.stopPropagation(),"aria-label":t.selection.row(e.index)})}),pe=(e,t=D)=>(0,p.jsx)(`div`,{className:`px-space-sm`,children:(0,p.jsx)(l.t,{className:`size-icon cursor-pointer`,checked:e.getIsAllPageRowsSelected(),indeterminate:e.getIsSomePageRowsSelected()&&!e.getIsAllPageRowsSelected(),onCheckedChange:t=>e.toggleAllPageRowsSelected(t===!0),"aria-label":t.selection.selectAll})}),me=(e,t=D)=>[{id:`selection`,header:({table:e})=>pe(e,t),cell:({row:e})=>fe(e,t),enableSorting:!1,enableResizing:!1,size:40},...e];function he({table:e,onRowClick:t,emptyStateMessage:r,emptyStateAction:i,cellClassName:o=``,rowClassName:s=``,stickyFirstColumn:c=!1,striped:l=!1,dense:u=!1,strings:d}){let f=e.getRowModel().rows,m=r??d?.emptyState.message??D.emptyState.message,g=e=>{t&&t(e)};return f.length?(0,p.jsx)(v,{children:f.map((e,r)=>{let i=e.getIsSelected(),a=e.getVisibleCells(),d=k(e,r,s,i),f=()=>{t&&g(e.original)},m=n.cn(d,l&&r%2!=0?`bg-muted/30`:``,`transition-colors duration-150`,`hover:bg-muted/35 data-[state=selected]:bg-primary/8`,t?`cursor-pointer`:``,`border-b border-border/50 last:border-b-0`);return(0,p.jsx)(y,{"data-state":i?`selected`:null,className:m,onClick:f,children:a.map((t,r)=>(0,p.jsx)(x,{className:n.cn(A(t.column.id,e,o,c,r===0),`first:pl-surface last:pr-surface`,t.column.columnDef.meta?.align===`end`&&`text-right`,t.column.columnDef.meta?.align===`center`&&`text-center`,u&&`px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface`),children:(0,h.flexRender)(t.column.columnDef.cell,t.getContext())},t.id))},e.id)})}):(0,p.jsx)(v,{className:`table-body--component`,children:(0,p.jsx)(y,{className:`hover:bg-transparent`,children:(0,p.jsx)(x,{className:`h-24 text-center`,colSpan:e.getAllColumns().length,children:(0,p.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-space-md py-12`,children:[(0,p.jsx)(`div`,{className:`mb-space-sm flex size-avatar-lg items-center justify-center rounded-full bg-muted`,children:(0,p.jsx)(`svg`,{className:`size-icon-lg text-muted-foreground/60`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,children:(0,p.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25-2.25M12 13.875V7.5M3.75 7.5h16.5`})})}),(0,p.jsx)(a.s,{type:`secondary`,weight:`medium`,children:m}),!!i&&(0,p.jsx)(`div`,{className:`mt-1`,children:i})]})})})})}he.displayName=`DataTableBody`;function ge({table:e,enableResizing:t=!1,stickyHeader:r=!1,headerClassName:i=``,cellClassName:a=``,stickyFirstColumn:o=!1,columnGroups:s,dense:c=!1,headerTransparent:l=!1}){let u=e.getHeaderGroups(),d=r?n.cn(`sticky top-0 z-20 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]`,l?`bg-background/95`:`bg-muted/95`):``,f=e=>s?s.find(t=>t.columns.includes(e)):null;return(0,p.jsxs)(_,{className:i,children:[(()=>{if(!s||s.length===0||u.length===0)return null;let e=u[0].headers,t=null,r=0,i=[];return e.forEach((a,o)=>{let s=f(a.id)?.header||``;s===t?r++:(t!==null&&r>0&&i.push((0,p.jsx)(b,{colSpan:r,className:n.cn(`h-12 border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0`,d),children:t||``},`group-${t}-${i.length}`)),t=s,r=1),o===e.length-1&&r>0&&i.push((0,p.jsx)(b,{colSpan:r,className:n.cn(`h-12 whitespace-nowrap border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0`,d),children:t||``},`group-${t}-${i.length}`))}),(0,p.jsx)(y,{className:n.cn(`table-header--component`,`border-b border-border`),children:i})})(),u.map(e=>(0,p.jsx)(y,{className:n.cn(`border-b border-border/70`,l?`bg-transparent hover:bg-transparent`:`bg-muted/45 hover:bg-muted/45`),children:e.headers.map((e,i)=>{let s=n.cn(A(e.id,null,a,o,i===0),`h-12`,`first:pl-surface last:pr-surface`,c&&`px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface`,`text-muted-foreground font-medium whitespace-nowrap`,e.column.columnDef.meta?.align===`end`&&`text-right`,e.column.columnDef.meta?.align===`center`&&`text-center`,d,r&&o&&i===0&&`z-30`,!r&&`bg-transparent`),l=t?{position:`relative`}:void 0,u=e.getResizeHandler(),f=e.column.getIsResizing(),g=(()=>{let t=e.column.columnDef.header;return typeof t==`string`?t:typeof e.id==`string`?e.id:`column`})();return(0,p.jsx)(b,{className:s,style:l,children:e.isPlaceholder?null:(0,p.jsxs)(`div`,{children:[(()=>{let t=e.column.getCanSort(),r=e.column.getIsSorted(),i=(0,h.flexRender)(e.column.columnDef.header,e.getContext()),a=r===`asc`?m.ArrowUp:r===`desc`?m.ArrowDown:m.ChevronsUpDown;return t?(0,p.jsxs)(`button`,{type:`button`,onClick:e.column.getToggleSortingHandler(),className:n.cn(`group -ml-space-sm inline-flex select-none items-center gap-space-sm rounded px-space-sm`,`hover:text-foreground transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,r&&`text-foreground`),"aria-label":`Sort ${g}`,children:[i,(0,p.jsx)(a,{className:n.cn(`size-icon-sm shrink-0 transition-opacity`,r?`opacity-100`:`opacity-30 group-hover:opacity-70`),"aria-hidden":`true`})]}):(0,p.jsx)(`div`,{className:n.cn(`flex items-center`,e.column.columnDef.meta?.align===`end`&&`justify-end`,e.column.columnDef.meta?.align===`center`&&`justify-center`),children:i})})(),!!t&&(0,p.jsx)(`button`,{type:`button`,className:n.cn(`absolute top-0 right-0 h-full w-1 cursor-col-resize select-none touch-none bg-foreground bg-opacity-50 opacity-0 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none`,f&&`!bg-primary-600 bg-opacity-100`),"aria-label":`Resize ${g}`,"aria-orientation":`vertical`,onMouseDown:u,onTouchStart:u})]})},e.id)})},e.id))]})}ge.displayName=`DataTableHeader`;function j({table:e,className:t,align:r=`end`,strings:a=D}){let[o,c]=(0,f.useState)(!1),l=e.getAllColumns().filter(e=>e.getCanHide());return l.length===0?null:(0,p.jsxs)(s.t,{open:o,onOpenChange:c,children:[(0,p.jsx)(s.g,{render:e=>(0,p.jsxs)(i.t,{...e,type:`button`,"aria-label":a.columnVisibility.triggerLabel,variant:`secondary`,buttonStyle:`outline`,size:`small`,className:n.cn(`column-visibility-toggle--component`,`flex items-center gap-space-sm`,e.className,t),children:[(0,p.jsx)(m.Settings2,{className:`size-icon-sm`,"aria-hidden":`true`}),(0,p.jsx)(`span`,{className:`hidden sm:inline`,children:a.columnVisibility.triggerLabel})]})}),(0,p.jsx)(s.r,{align:r,className:`w-56`,children:(0,p.jsxs)(s.i,{children:[(0,p.jsx)(s.o,{children:a.columnVisibility.title}),(0,p.jsx)(s.d,{}),l.map(e=>{let t=e.columnDef.header,n=a.columnVisibility.formatLabel(e.id,typeof t==`string`?t:void 0);return(0,p.jsx)(s.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:n},e.id)})]})})]})}j.displayName=`ColumnVisibilityToggle`;var _e=300,ve=`inline-flex size-control-sm items-center justify-center rounded-none text-muted-foreground/70 transition-colors duration-150 hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30`;function M({label:e,onClick:t,disabled:r,className:i,children:a}){return(0,p.jsx)(`button`,{type:`button`,"aria-label":e,className:n.cn(`table-toolbar--component`,ve,i),onClick:t,disabled:r,children:a})}function N(e){return e?e.querySelector(`[data-slot="table-container"]`):null}function ye({table:e,tableAreaRef:t,dense:r,onDenseChange:i,enableColumnVisibility:a=!1,strings:o=D}){let[s,c]=(0,f.useState)(!1),[l,u]=(0,f.useState)(!1),d=(0,f.useRef)(0),h=(0,f.useRef)(null),g=(0,f.useCallback)(()=>{let e=N(t.current);if(!e){c(!1),u(!1);return}let{scrollLeft:n,scrollWidth:r,clientWidth:i}=e;c(n>1),u(n+i<r-1)},[t]);(0,f.useEffect)(()=>{let e=window.setTimeout(()=>{let e=N(t.current);if(!e)return;g();let n=()=>{cancelAnimationFrame(d.current),d.current=requestAnimationFrame(g)};e.addEventListener(`scroll`,n,{passive:!0});let r=new ResizeObserver(g);r.observe(e),e.firstElementChild&&r.observe(e.firstElementChild),h.current=()=>{e.removeEventListener(`scroll`,n),cancelAnimationFrame(d.current),r.disconnect()}},0);return()=>{window.clearTimeout(e),h.current?.()}},[t,g,r]);let _=(0,f.useCallback)(()=>{N(t.current)?.scrollBy({left:-300,behavior:`smooth`})},[t]),v=(0,f.useCallback)(()=>{N(t.current)?.scrollBy({left:_e,behavior:`smooth`})},[t]),y=(0,f.useCallback)(()=>{i(!r)},[r,i]),b=a?e.getAllColumns().filter(e=>e.getCanHide()):[],x=s||l,S=b.length>0,C=r?o.toolbar.comfortable:o.toolbar.dense;return(0,p.jsxs)(`div`,{className:`flex items-center rounded-md border border-border bg-card`,children:[!!x&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(M,{label:o.toolbar.scrollLeft,onClick:_,disabled:!s,className:`rounded-l-[calc(theme(borderRadius.md)-1px)]`,children:(0,p.jsx)(m.ChevronLeft,{className:`size-icon-sm`})}),(0,p.jsx)(M,{label:o.toolbar.scrollRight,onClick:v,disabled:!l,children:(0,p.jsx)(m.ChevronRight,{className:`size-icon-sm`})}),(0,p.jsx)(`div`,{className:`h-4 w-px bg-border`})]}),!!S&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(j,{table:e,strings:o,className:n.cn(`h-control-sm rounded-none border-0 px-control-sm shadow-none`,!x&&`rounded-l-[calc(theme(borderRadius.md)-1px)]`)}),(0,p.jsx)(`div`,{className:`h-4 w-px bg-border`})]}),(0,p.jsx)(M,{label:C,onClick:y,className:n.cn(`rounded-r-[calc(theme(borderRadius.md)-1px)]`,!x&&!S&&`rounded-l-[calc(theme(borderRadius.md)-1px)]`),children:r?(0,p.jsx)(m.Maximize2,{className:`size-icon-sm`}):(0,p.jsx)(m.Minimize2,{className:`size-icon-sm`})})]})}ye.displayName=`DataTableToolbar`;var be=(0,f.createContext)(`sm`);function xe(){return(0,f.useContext)(be)}var Se={small:`[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y [&_td]:text-sm`,default:`[&_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`},Ce={small:`sm`,default:`sm`};function we(e){return e===`small`||e==="default"?e:e===`xs`?`small`:`default`}var Te=e=>{if(e!==void 0)return typeof e==`number`?`${e}px`:e};function P({size:e,surface:r=`card`,headerTransparent:o=!0,columns:s,data:c,columnGroups:l,rowActions:d,rowActionsMenuLabel:m,rowActionsDisplayMode:_,rowActionsBreakpoint:v,enableSorting:y=!1,manualSorting:b=!1,enableColumnVisibility:x=!1,enableRowSelection:S=!1,enableMultiRowSelection:C=!0,enableSubRowSelection:w=!1,pagination:T,pageQueryKey:E,onPageChange:ee,onSort:te,onRowClick:ne,onRowSelectionChange:D,stickyHeader:O=!1,stickyToolbar:ie=!1,stickyFirstColumn:ae=!1,maxBodyHeight:ce,fillAvailableHeight:k=!1,emptyStateMessage:A,emptyStateAction:de,className:fe=``,rowClassName:pe=``,cellClassName:j=``,headerClassName:_e=``,wrapperClassName:ve=``,innerClassName:M=`overflow-x-auto`,tableContainerClassName:N=``,getRowId:xe,rowSelection:P,initialState:F,onColumnVisibilityChange:I,strings:L,topbarContent:R,footerContent:z,selectionToolbar:B,bulkActions:V,selectionToolbarClassName:Ee,storageKey:H}){let{defaultSize:De}=t.d(),U=we(e??De),W=(0,f.useMemo)(()=>re(L),[L]),Oe=n.cn(`bg-card`,pe),ke=A??W.emptyState.message,G=E??`page`,K=Te(ce),q=Array.isArray(s)&&s.length===2&&Array.isArray(s[1])?s[0]:s,J=(0,f.useMemo)(()=>H?`dt.${H}.columns`:null,[H]),Y=(0,f.useMemo)(()=>H?`dt.${H}.dense`:null,[H]),Ae=(0,f.useMemo)(()=>{if(!J||typeof window>`u`)return F?.columnVisibility||{};try{let e=window.localStorage.getItem(J);return{...e?JSON.parse(e):{},...F?.columnVisibility||{}}}catch{return F?.columnVisibility||{}}},[J,F?.columnVisibility]),je=(0,f.useMemo)(()=>{if(!Y||typeof window>`u`)return!1;try{return window.localStorage.getItem(Y)===`1`}catch{return!1}},[Y]),[Me,Ne]=(0,f.useState)(F?.sorting||[]),[Pe,Fe]=(0,f.useState)(Ae),[Ie,Le]=(0,f.useState)(F?.rowSelection||{}),[X,Re]=(0,f.useState)(je),Z=P??Ie,ze=(0,f.useRef)(null),Be=(0,f.useCallback)(e=>{le(e,Ne,te)},[te]),Ve=(0,f.useCallback)(e=>{ue(e,Fe,e=>{if(J&&typeof window<`u`)try{window.localStorage.setItem(J,JSON.stringify(e))}catch{}I&&I(e)})},[J,I]),He=(0,f.useCallback)(e=>{let t=typeof e==`function`?e(Z):e;P===void 0&&Le(t),D?.(t)},[P,D,Z]),Ue=(0,f.useCallback)(e=>{if(Re(e),Y&&typeof window<`u`)try{window.localStorage.setItem(Y,e?`1`:`0`)}catch{}},[Y]),We=(0,f.useCallback)(e=>typeof m==`function`?m(e):m??W.actions.triggerLabel,[m,W.actions.triggerLabel]),Q=(0,h.useReactTable)({data:c,columns:(0,f.useMemo)(()=>{let e=S?me(q,W):q;if(!d)return e;let t={id:`actions`,header:W.actions.triggerLabel,cell:({row:e})=>(0,p.jsx)(se,{row:e.original,actions:d,menuLabel:We(e.original),displayMode:_,responsiveBreakpoint:v,strings:W}),enableSorting:!1,enableHiding:!1,size:40};return[...e,t]},[q,S,d,We,v,_,W]),state:{sorting:Me,columnVisibility:Pe,rowSelection:Z},enableSorting:y,manualSorting:b,enableRowSelection:S,enableMultiRowSelection:C,enableSubRowSelection:w,onSortingChange:y&&b?Be:void 0,onRowSelectionChange:S?He:void 0,onColumnVisibilityChange:Ve,getCoreRowModel:(0,h.getCoreRowModel)(),getRowId:xe}),Ge=T&&T.last_page>1,Ke=Q.getSelectedRowModel().rows.map(e=>e.original),$=Ke.length,qe=(0,f.useCallback)(()=>{Q.resetRowSelection()},[Q]),Je={table:Q,selectedRows:Ke,selectedRowCount:$,totalRowCount:c.length,rowSelection:Z,clearSelection:qe},Ye=typeof V==`function`?V(Je):V,Xe=$>0?(0,p.jsxs)(`div`,{"data-component":`data-table-selection-toolbar`,"data-slot":`data-table-selection-toolbar`,className:n.cn(`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 sm:flex-row sm:items-center sm:justify-between`,ie&&`sticky top-0 z-20 bg-card/95 backdrop-blur`,Ee),children:[(0,p.jsx)(a.s,{className:`data-table-selection-toolbar--summary min-w-0`,children:W.selection.summary($,c.length)}),(0,p.jsxs)(`div`,{"data-slot":`data-table-selection-toolbar-actions`,className:`data-table-selection-toolbar--actions flex shrink-0 flex-wrap items-center gap-space-md`,children:[Ye,(0,p.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:qe,children:W.selection.clear})]})]}):null,Ze=!S||$===0||B===null||B===!1?null:typeof B==`function`?B(Je):B??Xe,Qe=(0,f.useMemo)(()=>{if(K)return{"--data-table-body-max-height":K}},[K]),$e=X||k||K!==void 0;(0,f.useEffect)(()=>{let e=ze.current?.querySelector(`[data-slot="table-container"]`);e&&(e.tabIndex=0,e.setAttribute(`aria-label`,W.accessibility.scrollRegion))},[W.accessibility.scrollRegion]);let et=be.Provider,tt=Ce[U];return(0,p.jsx)(et,{value:tt,children:(0,p.jsxs)(`div`,{className:n.cn(X?`fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-6`:n.cn(`w-full min-w-0 max-w-full`,k&&`flex h-full min-h-0 flex-col`,r===`card`&&`overflow-hidden rounded-lg border border-border bg-card shadow-[0_1px_3px_0_color-mix(in_oklch,var(--foreground)_4%,transparent)]`,r===`glass`&&`rounded-md overflow-hidden border border-border/60`,ve)),children:[!!(R||x)&&(0,p.jsxs)(`div`,{className:n.cn(`relative`,ie&&`sticky top-0 z-20 bg-card/95 backdrop-blur`),children:[(0,p.jsxs)(`div`,{className:n.cn(`data-table-topbar flex items-end justify-between gap-space-lg px-surface py-row-y`,X?`mb-3 shrink-0`:`mb-0`),children:[(0,p.jsx)(`div`,{className:`data-table-topbar-left flex-1`,children:R}),(0,p.jsx)(`div`,{className:`data-table-topbar-right flex items-center justify-end`,children:(0,p.jsx)(ye,{table:Q,tableAreaRef:ze,dense:X,onDenseChange:Ue,enableColumnVisibility:x,strings:W})})]}),(0,p.jsx)(u.t,{})]}),Ze,(0,p.jsx)(`div`,{ref:ze,style:Qe,className:n.cn(`min-h-0`,$e?`overflow-hidden`:M,(X||k)&&`flex-1`),children:(0,p.jsxs)(g,{className:n.cn(`relative`,Se[U],fe),containerClassName:n.cn(`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,$e&&`overflow-auto`,K!==void 0&&`max-h-(--data-table-body-max-height)`,(X||k)&&`h-full min-h-0`,N),children:[(0,p.jsx)(ge,{table:Q,stickyHeader:O,headerClassName:_e,cellClassName:j,stickyFirstColumn:ae,columnGroups:l,dense:X,headerTransparent:o}),(0,p.jsx)(he,{table:Q,onRowClick:ne,emptyStateMessage:ke,emptyStateAction:de,cellClassName:j,rowClassName:Oe,stickyFirstColumn:ae,strings:W,dense:X})]})}),!!Ge&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(u.t,{}),(0,p.jsx)(oe,{pagination:T,onPageChange:ee,pageQueryKey:G,labels:W.pagination})]}),!!z&&(0,p.jsx)(`div`,{"data-slot":`data-table-footer`,className:`data-table--footer border-t border-border/70 px-surface py-row-y`,children:z})]})})}P.displayName=`DataTable`;function F({table:e,filterColumn:t,filterPlaceholder:r,enableColumnVisibility:a=!1,customContent:o,strings:l=D}){if(!t&&!a&&!o)return null;let u=r??l.filter.searchPlaceholder;return(0,p.jsxs)(`div`,{className:n.cn(`filter-bar--component`,`flex items-center justify-between p-4`),children:[(0,p.jsxs)(`div`,{className:`flex flex-1 items-center space-x-2`,children:[!!t&&(0,p.jsx)(c.t,{placeholder:u,value:e.getColumn(t)?.getFilterValue()??``,onChange:n=>{let r=n.target.value;e.getColumn(t)?.setFilterValue(r)},className:`max-w-sm`}),o]}),!!a&&(0,p.jsxs)(s.t,{children:[(0,p.jsx)(s.g,{render:e=>(0,p.jsx)(i.t,{...e,variant:`secondary`,buttonStyle:`outline`,className:`ml-auto`,children:l.columnVisibility.triggerLabel})}),(0,p.jsx)(s.r,{align:`end`,children:(0,p.jsxs)(s.i,{children:[(0,p.jsx)(s.o,{children:l.columnVisibility.title}),e.getAllColumns().filter(e=>e.getCanHide()).map(e=>{let t=e.columnDef.header,n=l.columnVisibility.formatLabel(e.id,typeof t==`string`?t:void 0);return(0,p.jsx)(s.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:n},e.id)})]})})]})]})}F.displayName=`DataTableFilterBar`;function I({table:e,selectedRowCount:t,totalRowCount:r,strings:o=D}){let s=t??e.getFilteredSelectedRowModel().rows.length,c=r??e.getFilteredRowModel().rows.length,l=o.selection.summary(s,c);return(0,p.jsxs)(`div`,{className:n.cn(`table-pagination--component`,`flex items-center justify-end space-x-2 px-4 py-4`),children:[(0,p.jsx)(`div`,{className:`flex-1`,children:(0,p.jsx)(a.s,{type:`secondary`,children:l})}),(0,p.jsx)(i.t,{variant:`secondary`,buttonStyle:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:o.pagination.previous}),(0,p.jsx)(i.t,{variant:`secondary`,buttonStyle:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:o.pagination.next})]})}I.displayName=`DataTablePagination`;function L({value:e,fallback:t=`--`,missing:r,className:i,children:o}){let s=r??(e==null||e===``);return o===void 0?s?(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,i),children:t}):(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,className:i,children:String(e)}):(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:s?`secondary`:`main`,className:n.cn(s&&`opacity-60`,i),children:o})}L.displayName=`CellValue`;var R=e=>(0,p.jsx)(`a`,{className:`text-foreground underline decoration-border decoration-dotted underline-offset-2 transition-colors duration-150 hover:text-foreground hover:decoration-muted-foreground`,...e,children:e.children});function z({value:e,map:t,emptyLabel:r=`—`,className:i}){if(!e||!(e in t))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,i),children:r});let s=t[e],c=s.icon;return(0,p.jsxs)(o.t,{variant:s.variant??`secondary`,className:n.cn(`gap-space-sm`,i),children:[!!c&&(0,p.jsx)(c,{className:`size-icon-sm`}),s.label]})}z.displayName=`StatusCell`;function B({items:e=[],emptyLabel:t=`—`,className:r,badgeClassName:i}){let s=e.filter(e=>!e.hidden);return s.length===0?(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,r),children:t}):(0,p.jsx)(`span`,{className:n.cn(`inline-flex min-w-0 flex-wrap items-center gap-space-sm`,r),children:s.map((e,t)=>{let r=e.icon;return(0,p.jsxs)(o.t,{variant:e.variant??`secondary`,dot:e.dot,className:n.cn(`shrink-0`,i),children:[!!r&&(0,p.jsx)(r,{className:`size-icon-sm`}),e.label]},e.id??t)})})}B.displayName=`StatusClusterCell`;var V={month:`short`,day:`numeric`,year:`numeric`};function Ee({value:e,options:t=V,locale:r,showIcon:i=!0,icon:o=m.Calendar,emptyLabel:s=`—`,className:c}){if(e==null||e===``)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let l=e instanceof Date?e:new Date(e);if(Number.isNaN(l.getTime()))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let u=new Intl.DateTimeFormat(r,t);return(0,p.jsxs)(`span`,{className:n.cn(`inline-flex items-center gap-space-sm tabular-nums`,c),children:[!!i&&(0,p.jsx)(o,{className:`size-icon text-muted-foreground`}),(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,children:u.format(l)})]})}Ee.displayName=`DateCell`;function H({value:e,options:t=V,locale:r,showIcon:i=!0,icon:o=m.Calendar,emptyLabel:s=`—`,className:c,primaryClassName:l,secondary:u,secondaryClassName:d}){if(e==null||e===``)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let f=e instanceof Date?e:new Date(e);if(Number.isNaN(f.getTime()))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let h=new Intl.DateTimeFormat(r,t),g=typeof u==`function`?u(f):u;return(0,p.jsxs)(`span`,{className:n.cn(`inline-flex min-w-0 items-start gap-space-sm`,c),children:[!!i&&(0,p.jsx)(o,{className:`mt-space-2xs size-icon shrink-0 text-muted-foreground`}),(0,p.jsxs)(`span`,{className:`grid min-w-0 gap-space-2xs`,children:[(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`truncate tabular-nums`,l),children:h.format(f)}),!!g&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`truncate opacity-75`,d),children:g})]})]})}H.displayName=`DateMetaCell`;function De({value:e,currency:t,locale:r,emptyLabel:i=`—`,className:o,weight:s=`semibold`}){let c=typeof e==`number`?e:Number.parseFloat(String(e??``));if(!Number.isFinite(c))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,o),children:i});let l=t?new Intl.NumberFormat(r,{style:`currency`,currency:t,maximumFractionDigits:2}).format(c):c.toFixed(2);return(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,weight:s,className:n.cn(`tabular-nums`,o),children:l})}De.displayName=`CurrencyCell`;function U(e){return e.split(/\s+/).filter(Boolean).slice(0,2).map(e=>e[0].toUpperCase()).join(``)}function W({name:e,imageUrl:t,icon:r=m.Mail,subtitle:i,emptyLabel:o=`—`,className:s}){return!e||e.trim().length===0?(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,s),children:o}):(0,p.jsxs)(`span`,{className:n.cn(`inline-flex items-center gap-space-md`,s),children:[(0,p.jsx)(`span`,{className:`relative inline-flex size-avatar-sm shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground`,children:t?(0,p.jsx)(`img`,{src:t,alt:e,className:`absolute inset-0 size-full object-cover`}):e.length>0?(0,p.jsx)(a.s,{size:`inherit`,weight:`semibold`,className:`text-sm leading-none`,children:U(e)}):(0,p.jsx)(r,{className:`size-icon`})}),(0,p.jsxs)(`span`,{className:`min-w-0 inline-flex flex-col`,children:[(0,p.jsx)(a.s,{size:`inherit`,weight:`medium`,className:`truncate`,children:e}),!!i&&(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:`truncate`,children:i})]})]})}W.displayName=`AvatarCell`;function Oe(e,t){if(e&&typeof e==`object`&&!(`type`in e)&&`label`in e){let n=e.icon;return(0,p.jsxs)(o.t,{variant:e.variant??`secondary`,dot:e.dot,children:[!!n&&(0,p.jsx)(n,{className:`size-3`}),e.label]},e.id??t)}return(0,p.jsx)(`span`,{children:e},t)}function ke(e){return e?Array.isArray(e)?(0,p.jsx)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5`,children:e.map((e,t)=>(0,p.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1`,children:[!!e.label&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`shrink-0 opacity-70`,children:e.label}),(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`truncate`,children:e.value})]},e.id??t))}):e:null}function G({title:e,subtitle:t,metadata:r,badges:i=[],imageUrl:o,icon:s=m.Mail,fallback:c,href:l,renderLink:u,emptyLabel:d=`—`,className:f,mediaClassName:h,contentClassName:g,titleClassName:_,subtitleClassName:v}){if(!e)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,f),children:d});let y=typeof e==`string`?e:void 0,b=y?U(y):``,x=(0,p.jsxs)(`span`,{className:n.cn(`resource-cell--content grid min-w-0 gap-0.5`,g),children:[(0,p.jsxs)(`span`,{className:`resource-cell--title-row flex min-w-0 items-center gap-1.5`,children:[(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,weight:`medium`,className:n.cn(`resource-cell--title truncate`,_),children:e}),i.length>0&&(0,p.jsx)(`span`,{className:`resource-cell--badges inline-flex shrink-0 items-center gap-1`,children:i.map(Oe)})]}),!!t&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`resource-cell--subtitle truncate`,v),children:t}),!!r&&(0,p.jsx)(`span`,{className:`resource-cell--metadata min-w-0`,children:ke(r)})]}),S=(0,p.jsxs)(`span`,{className:n.cn(`resource-cell--component inline-flex min-w-0 items-center gap-space-md`,f),children:[(0,p.jsx)(`span`,{className:n.cn(`resource-cell--media relative inline-flex size-avatar shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground`,h),children:o?(0,p.jsx)(`img`,{src:o,alt:y??``,className:`absolute inset-0 size-full object-cover`}):c||(b?(0,p.jsx)(a.s,{size:`inherit`,weight:`semibold`,className:`text-sm leading-none`,children:b}):(0,p.jsx)(s,{className:`size-icon`}))}),x]});if(!l)return S;let C=`resource-cell--link inline-flex min-w-0 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`;return u?u({href:l,children:S,className:C,"aria-label":y}):(0,p.jsx)(`a`,{href:l,className:C,"aria-label":y,children:S})}G.displayName=`ResourceCell`;var K=G,q=300;function J(e){return e?e.querySelector(`[data-slot="table-container"]`):null}function Y(e,t={}){let{stepPx:n=q,deps:r=[]}=t,[i,a]=(0,f.useState)(!1),[o,s]=(0,f.useState)(!1),c=(0,f.useRef)(0),l=(0,f.useCallback)(()=>{let t=J(e.current);if(!t){a(!1),s(!1);return}let{scrollLeft:n,scrollWidth:r,clientWidth:i}=t;a(n>1),s(n+i<r-1)},[e]);(0,f.useEffect)(()=>{let t=window.setTimeout(()=>{let t=J(e.current);if(!t)return;l();let n=()=>{cancelAnimationFrame(c.current),c.current=requestAnimationFrame(l)};t.addEventListener(`scroll`,n,{passive:!0});let r=new ResizeObserver(l);return r.observe(t),t.firstElementChild&&r.observe(t.firstElementChild),()=>{t.removeEventListener(`scroll`,n),cancelAnimationFrame(c.current),r.disconnect()}},0);return()=>window.clearTimeout(t)},[e,l,...r]);let u=(0,f.useCallback)(t=>{J(e.current)?.scrollBy({left:t,behavior:`smooth`})},[e]);return{canScrollLeft:i,canScrollRight:o,scrollBy:u,scrollLeft:(0,f.useCallback)(()=>u(-n),[u,n]),scrollRight:(0,f.useCallback)(()=>u(n),[u,n])}}function Ae(e,t=!1){let[n,r]=(0,f.useState)((()=>{if(!e||typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return n===`1`?!0:n===`0`?!1:t}catch{return t}})());return[n,(0,f.useCallback)(t=>{if(r(t),e&&typeof window<`u`)try{window.localStorage.setItem(e,t?`1`:`0`)}catch{}},[e])]}var je=`inline-flex size-control-sm items-center justify-center rounded-radius text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-30`;function Me({dense:e,onChange:t,denseLabel:r=`Dense`,comfortableLabel:i=`Comfortable`,className:a}){let o=e?i:r,s=e?m.Maximize2:m.Minimize2;return(0,p.jsx)(`button`,{type:`button`,"aria-label":o,"aria-pressed":e,onClick:()=>t(!e),className:n.cn(je,a),children:(0,p.jsx)(s,{className:`size-icon-sm`})})}Me.displayName=`DensityToggle`,Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return ye}});
2
+ //# sourceMappingURL=table-BVWemr79.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-BVWemr79.cjs","names":[],"sources":["../../src/components/ui/table.tsx","../../src/components/ui/pagination.tsx","../../src/components/base/table/table.strings.ts","../../src/components/base/table/pagination.tsx","../../src/components/base/table/table-actions.tsx","../../src/components/base/table/table-helpers.tsx","../../src/components/base/table/table-body.tsx","../../src/components/base/table/table-header.tsx","../../src/components/base/table/column-visibility-toggle.tsx","../../src/components/base/table/table-toolbar.tsx","../../src/components/base/table/data-table.tsx","../../src/components/base/table/filter-bar.tsx","../../src/components/base/table/table-pagination.tsx","../../src/components/base/table/partials/cell-value.tsx","../../src/components/base/table/partials/table-link.tsx","../../src/components/base/table/partials/cell-renderers.tsx","../../src/components/base/table/hooks.ts","../../src/components/base/table/partials/density-toggle.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype TableProps = React.ComponentProps<\"table\"> & {\n containerClassName?: string\n}\n\nfunction Table({ className, containerClassName, ...props }: TableProps) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", containerClassName)}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\n \"mx-auto flex w-full justify-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"gap-1 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <Button\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n className={cn(className)}\n nativeButton={false}\n render={\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n {...props}\n />\n }\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n text = \"Previous\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"pl-2!\", className)}\n {...props}\n >\n <ChevronLeftIcon data-icon=\"inline-start\" />\n <span className=\"hidden sm:block\">\n {text}\n </span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n text = \"Next\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"pr-2!\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">{text}</span>\n <ChevronRightIcon data-icon=\"inline-end\" />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\n \"size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","import { type DataTableStrings, type DataTableStringsOverride } from './table.types';\n\nconst fallbackTitleCase = (value: string): string => {\n const formatted = value\n .replace(/[_-]+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n if (!formatted) {\n return 'Column';\n }\n\n return formatted.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\nconst formatColumnLabel = (columnId: string, currentLabel?: string | null): string => {\n if (currentLabel && currentLabel.trim().length > 0) {\n return currentLabel;\n }\n\n return fallbackTitleCase(columnId);\n};\n\nexport const defaultDataTableStrings: DataTableStrings = {\n emptyState: {\n message: 'No results found.',\n },\n actions: {\n triggerLabel: 'Actions',\n srLabel: 'Row actions menu',\n },\n filter: {\n searchPlaceholder: 'Filter...',\n columnsButton: 'Columns',\n },\n columnVisibility: {\n title: 'Toggle columns',\n triggerLabel: 'Columns',\n formatLabel: formatColumnLabel,\n },\n toolbar: {\n scrollLeft: 'Scroll left',\n scrollRight: 'Scroll right',\n columns: 'Toggle columns',\n dense: 'Compact view',\n comfortable: 'Comfortable view',\n },\n pagination: {\n showing: 'Showing',\n to: 'to',\n of: 'of',\n entries: 'results',\n previous: 'Previous',\n next: 'Next',\n page: 'Page',\n rowsPerPage: 'Rows per page',\n ariaLabel: 'Pagination navigation',\n },\n selection: {\n summary: (selected, total) => `${selected} of ${total} row${total === 1 ? '' : 's'} selected.`,\n row: (index) => `Select row ${index + 1}`,\n selectAll: 'Select all rows',\n clear: 'Clear selection',\n },\n accessibility: {\n scrollRegion: 'Table scroll area',\n },\n} as const;\n\nconst mergeNested = <T extends object>(defaults: T, overrides?: Partial<T>): T => ({\n ...defaults,\n ...(overrides ?? {}),\n});\n\nexport const mergeDataTableStrings = (overrides?: DataTableStringsOverride): DataTableStrings => {\n if (!overrides) {\n return defaultDataTableStrings;\n }\n\n return {\n emptyState: mergeNested(defaultDataTableStrings.emptyState, overrides.emptyState),\n actions: mergeNested(defaultDataTableStrings.actions, overrides.actions),\n filter: mergeNested(defaultDataTableStrings.filter, overrides.filter),\n columnVisibility: mergeNested(defaultDataTableStrings.columnVisibility, overrides.columnVisibility),\n toolbar: mergeNested(defaultDataTableStrings.toolbar, overrides.toolbar),\n pagination: mergeNested(defaultDataTableStrings.pagination, overrides.pagination),\n selection: mergeNested(defaultDataTableStrings.selection, overrides.selection),\n accessibility: mergeNested(defaultDataTableStrings.accessibility, overrides.accessibility),\n };\n};\n","import { useCallback } from 'react';\nimport {\n\tPagination as PaginationRoot,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n} from '@/components/ui/pagination';\nimport { Text } from '@/components/typography';\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} as typeof defaultDataTableStrings.pagination;\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 className={cn('pagination--component', 'flex items-center justify-between px-5 py-3')}>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{firstItem}&ndash;{lastItem}</Text>{' '}\n\t\t\t\t{paginationLabels.of}{' '}\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{pagination.total}</Text>{' '}\n\t\t\t\t{paginationLabels.entries}\n\t\t\t</Text>\n\n\t\t\t<PaginationRoot aria-label={paginationLabels.ariaLabel} className=\"w-auto mx-0\">\n\t\t\t\t<PaginationContent className=\"gap-0.5\">\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t\t<PaginationPrevious\n\t\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\t\tclassName={`h-control-sm text-sm ${!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\t<PaginationEllipsis className=\"size-control-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\tisActive={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\t\tclassName=\"size-control-sm text-sm\"\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\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\t\tclassName={`h-control-sm text-sm ${!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, type LucideIcon } from 'lucide-react';\nimport { isValidElement, useEffect, useMemo, useState } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport {\n ActionMenu,\n MenuAction,\n type MenuActionProps\n} from '@/components/base/navigation/action-menu';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableActionsProps, type ActionItem, type ActionVariant } from './table.types';\n\nexport function DataTableActions<TData>(props: DataTableActionsProps<TData>) {\n const {\n row,\n actions,\n menuLabel,\n displayMode = 'menu', // preserve existing behavior\n responsiveBreakpoint = 1040,\n strings: providedStrings\n } = props;\n\n const strings = providedStrings ?? defaultDataTableStrings;\n const resolvedMenuLabel = menuLabel ?? strings.actions.triggerLabel;\n\n // Resolve actions array\n const resolvedActions = useMemo<ActionItem<TData>[]>(() => {\n const base = typeof actions === 'function' ? actions(row) : actions;\n return Array.isArray(base) ? base : [];\n }, [actions, row]);\n\n // Filter visibility and compute disabled by predicate/boolean\n const visibleActions = useMemo(() => {\n const evalFlag = (flag: boolean | ((r: TData) => boolean) | undefined): boolean | undefined => {\n if (typeof flag === 'function') return flag(row);\n return flag;\n };\n return resolvedActions\n .filter(a => {\n const v = evalFlag(a.isVisible);\n return v === undefined ? true : v;\n })\n .map(a => ({\n ...a,\n disabled: evalFlag(a.isDisabled) ?? a.disabled ?? false\n }));\n }, [resolvedActions, row]);\n\n // No actions to render\n const hasVisibleActions = visibleActions.length > 0;\n\n // Responsive auto mode: inline over breakpoint, menu under\n const [isNarrow, setIsNarrow] = useState(false);\n\n // 1. Split by variant\n const nonDestructive = visibleActions.filter((action) => action.variant !== 'destructive');\n const destructive = visibleActions.filter((action) => action.variant === 'destructive');\n\n // 2. Combine them (non-destructive first, destructive last)\n const sortedActions = [...nonDestructive, ...destructive];\n\n useEffect(() => {\n if (displayMode !== 'auto' || !hasVisibleActions) {\n setIsNarrow(false);\n return;\n }\n\n const handleResize = () => {\n try {\n setIsNarrow(window.innerWidth <= responsiveBreakpoint);\n } catch {\n setIsNarrow(false);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [displayMode, hasVisibleActions, responsiveBreakpoint]);\n\n if (!hasVisibleActions) return null;\n\n const mode: 'menu' | 'inline' = displayMode === 'auto' ? (isNarrow ? 'menu' : 'inline') : displayMode;\n\n const resolveMenuIcon = (icon: ActionItem<TData>['icon']): LucideIcon | undefined => {\n if (!icon) return undefined;\n if (typeof icon === 'function') {\n return icon as LucideIcon;\n }\n\n if (isValidElement(icon) && typeof icon.type === 'function') {\n return icon.type as LucideIcon;\n }\n\n return undefined;\n };\n\n const resolveActionButtonVariant = (variant?: ActionVariant): {\n variant: ButtonVariant;\n buttonStyle: ButtonStyle;\n className?: string\n } => {\n switch (variant) {\n case 'destructive':\n return { variant: 'error', buttonStyle: 'solid' };\n case 'outline':\n return { variant: 'secondary', buttonStyle: 'outline' };\n case 'secondary':\n return { variant: 'secondary', buttonStyle: 'solid' };\n case 'ghost':\n return { variant: 'secondary', buttonStyle: 'ghost' };\n case 'link':\n return { variant: 'secondary', buttonStyle: 'ghost', className: 'underline underline-offset-4' };\n case 'default':\n default:\n return { variant: 'primary', buttonStyle: 'solid' };\n }\n };\n\n const resolveMenuActionVariant = (\n variant?: ActionVariant\n ): NonNullable<MenuActionProps['variant']> => {\n switch (variant) {\n case 'default':\n return 'primary';\n case 'destructive':\n return 'error';\n default:\n return 'secondary';\n }\n };\n\n\t if (mode === 'inline') {\n\t return (\n\t <div className={cn('table-actions--component', 'flex items-center gap-space-sm')}>\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const resolved = resolveActionButtonVariant(action.variant ?? 'ghost');\n const onClick = () => {\n action.onClick?.(row);\n };\n return (\n <Button\n\t key={key}\n\t variant={resolved.variant}\n\t buttonStyle={resolved.buttonStyle}\n\t size=\"small\"\n\t className={cn('text-inherit leading-tight', resolved.className)}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n\t {!!action.icon && <span className=\"mr-space-sm inline-flex\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n }\n\n\n // menu mode (default) using our ActionMenu implementation\n return (\n <ActionMenu\n label={undefined}\n icon={MoreHorizontal}\n srText={resolvedMenuLabel || strings.actions.srLabel}\n closeOnSelect={true}\n align=\"end\"\n density=\"table\"\n >\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const onClick = () => {\n action.onClick?.(row);\n };\n const menuIcon = resolveMenuIcon(action.icon);\n const inlineIcon = action.icon\n ? <span className=\"inline-flex items-center\">{action.icon}</span>\n : null;\n const fallbackContent = menuIcon ? null : (\n\t <div className=\"flex w-full items-center gap-space-md\">\n {inlineIcon}\n <span>{action.label}</span>\n </div>\n );\n\n const menuActionVariant = resolveMenuActionVariant(\n action.variant\n );\n\n return (\n <MenuAction\n key={key}\n label={action.label}\n icon={menuIcon}\n variant={menuActionVariant}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n {fallbackContent}\n </MenuAction>\n );\n })}\n </ActionMenu>\n );\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 '@/components/base/forms/fields/checkbox';\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 && row) {\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 { TableBody, TableCell, TableRow } from '@/components/ui/table';\nimport Text from '@/components/typography/text';\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\tdense = 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=\"h-24 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<div className=\"flex flex-col items-center justify-center gap-space-md py-12\">\n\t\t\t\t\t\t\t<div className=\"mb-space-sm flex size-avatar-lg items-center justify-center rounded-full bg-muted\">\n\t\t\t\t\t\t\t\t<svg className=\"size-icon-lg text-muted-foreground/60\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\">\n\t\t\t\t\t\t\t\t\t<path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25-2.25M12 13.875V7.5M3.75 7.5h16.5\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{resolvedEmptyStateMessage}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!emptyStateAction && (\n\t\t\t\t\t\t\t\t<div className=\"mt-1\">{emptyStateAction}</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\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\tdense && 'px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface',\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 { TableHead, TableHeader, TableRow } from '@/components/ui/table';\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\tdense = false,\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-sm font-medium uppercase tracking-wide 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{currentGroup || ''}\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\tcolSpan={groupSpan}\n\t\t\t\t\t\tclassName={cn(\n\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-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0',\n\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{currentGroup || ''}\n\t\t\t\t\t</TableHead>\n\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\tdense && 'px-surface py-row-y-sm text-sm 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\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\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 bg-foreground bg-opacity-50 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-600 bg-opacity-100',\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)}\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 { useState } from 'react';\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ColumnVisibilityToggleProps } from './table.types';\n\nexport function ColumnVisibilityToggle<TData>({\n table,\n className,\n align = 'end',\n strings = defaultDataTableStrings,\n}: ColumnVisibilityToggleProps<TData>) {\n const [open, setOpen] = useState(false);\n const columns = table.getAllColumns()\n .filter((column) => column.getCanHide());\n\n if (columns.length === 0) return null;\n\n return (\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...triggerProps}\n type=\"button\"\n aria-label={strings.columnVisibility.triggerLabel}\n variant=\"secondary\"\n buttonStyle=\"outline\"\n size=\"small\"\n className={cn(\n 'column-visibility-toggle--component',\n 'flex items-center gap-space-sm',\n (triggerProps as { className?: string }).className,\n className,\n )}\n >\n <Settings2 className=\"size-icon-sm\" aria-hidden=\"true\" />\n <span className=\"hidden sm:inline\">{strings.columnVisibility.triggerLabel}</span>\n </Button>\n )}\n />\n <DropdownMenuContent align={align} className=\"w-56\">\n <DropdownMenuGroup>\n <DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n const header = column.columnDef.header;\n const columnName = strings.columnVisibility.formatLabel(\n column.id,\n typeof header === 'string' ? header : undefined,\n );\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(checked) => column.toggleVisibility(!!checked)}\n >\n {columnName}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nColumnVisibilityToggle.displayName = 'ColumnVisibilityToggle';\n","import { ChevronLeft, ChevronRight, Maximize2, Minimize2 } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableToolbarProps } from './table.types';\nimport { ColumnVisibilityToggle } from './column-visibility-toggle';\n\nconst SCROLL_AMOUNT = 300;\n\nconst btnBase = 'inline-flex size-control-sm items-center justify-center rounded-none text-muted-foreground/70 transition-colors duration-150 hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\n\ninterface ToolbarIconButtonProps {\n label: string;\n onClick: () => void;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction ToolbarIconButton({ label, onClick, disabled, className, children }: ToolbarIconButtonProps) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n className={cn('table-toolbar--component', btnBase, className)}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\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 if (!tableArea) return null;\n return tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport function DataTableToolbar<TData>({\n table,\n tableAreaRef,\n dense,\n onDenseChange,\n enableColumnVisibility = false,\n strings = defaultDataTableStrings,\n}: DataTableToolbarProps<TData>) {\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const rafRef = useRef(0);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n // --- Scroll overflow detection ---\n const checkOverflow = useCallback(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) {\n setCanScrollLeft(false);\n setCanScrollRight(false);\n return;\n }\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, [tableAreaRef]);\n\n useEffect(() => {\n // Defer slightly to ensure the Table primitive has rendered its container\n const timerId = window.setTimeout(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) return;\n\n // Initial check\n checkOverflow();\n\n const handleScroll = () => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(checkOverflow);\n };\n\n el.addEventListener('scroll', handleScroll, { passive: true });\n\n // ResizeObserver to detect when table width changes\n const ro = new ResizeObserver(checkOverflow);\n ro.observe(el);\n if (el.firstElementChild) {\n ro.observe(el.firstElementChild);\n }\n\n // Store cleanup references\n cleanupRef.current = () => {\n el.removeEventListener('scroll', handleScroll);\n cancelAnimationFrame(rafRef.current);\n ro.disconnect();\n };\n }, 0);\n\n return () => {\n window.clearTimeout(timerId);\n cleanupRef.current?.();\n };\n // Re-run when dense mode changes (layout shift can affect overflow)\n\n }, [tableAreaRef, checkOverflow, dense]);\n\n // --- Scroll handlers ---\n const handleScrollLeft = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: -SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n const handleScrollRight = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n // --- Dense toggle ---\n const handleDenseToggle = useCallback(() => {\n onDenseChange(!dense);\n }, [dense, onDenseChange]);\n\n // --- Column visibility ---\n const hideableColumns = enableColumnVisibility\n ? table.getAllColumns().filter((column) => column.getCanHide())\n : [];\n\n const hasScrollArrows = canScrollLeft || canScrollRight;\n const hasColumns = hideableColumns.length > 0;\n const denseToggleLabel = dense\n ? strings.toolbar.comfortable\n : strings.toolbar.dense;\n\n return (\n <div className=\"flex items-center rounded-md border border-border bg-card\">\n {/* Scroll arrows - only rendered when overflow exists */}\n {!!hasScrollArrows && (\n <>\n <ToolbarIconButton\n label={strings.toolbar.scrollLeft}\n onClick={handleScrollLeft}\n disabled={!canScrollLeft}\n className=\"rounded-l-[calc(theme(borderRadius.md)-1px)]\"\n >\n <ChevronLeft className=\"size-icon-sm\" />\n </ToolbarIconButton>\n <ToolbarIconButton\n label={strings.toolbar.scrollRight}\n onClick={handleScrollRight}\n disabled={!canScrollRight}\n >\n <ChevronRight className=\"size-icon-sm\" />\n </ToolbarIconButton>\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Column visibility dropdown */}\n {!!hasColumns && (\n <>\n <ColumnVisibilityToggle\n table={table}\n strings={strings}\n className={cn(\n 'h-control-sm rounded-none border-0 px-control-sm shadow-none',\n !hasScrollArrows && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n />\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Dense/compact toggle */}\n <ToolbarIconButton\n label={denseToggleLabel}\n onClick={handleDenseToggle}\n className={cn(\n 'rounded-r-[calc(theme(borderRadius.md)-1px)]',\n !hasScrollArrows && !hasColumns && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n >\n {dense\n ? <Maximize2 className=\"size-icon-sm\" />\n : <Minimize2 className=\"size-icon-sm\" />\n }\n </ToolbarIconButton>\n </div>\n );\n}\n\nDataTableToolbar.displayName = 'DataTableToolbar';\n","/**\n * DataTable — TanStack-powered data table with sorting, row selection, column\n * visibility, server-side pagination, dense 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 and dense mode persist to localStorage\n * when a `storageKey` is provided.\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\tuseReactTable,\n\ttype SortingState,\n\ttype VisibilityState,\n\ttype Updater,\n\ttype ColumnDef,\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 '@/components/ui/table';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Text } from '@/components/typography';\nimport { useTableConfig } from '@/lib/ui-provider';\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, handleSortingChange, handleColumnVisibilityChange } 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 actions, badges, and cell text stay aligned.\nconst sizeClassByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, string> = {\n\tsmall: '[&_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\tdefault: '[&_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\tsmall: 'sm',\n\tdefault: 'sm',\n};\n\nfunction normalizeDataTableSize(size: NonNullable<DataTableProps<object, unknown>['size']> | string | undefined) {\n\tif (size === 'small' || size === 'default') return size;\n\tif (size === 'xs') return 'small';\n\tif (size === 'sm' || size === 'base') return 'default';\n\treturn 'default';\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\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\tmanualSorting = false,\n\tenableColumnVisibility = false,\n\tenableRowSelection = false,\n\tenableMultiRowSelection = true,\n\tenableSubRowSelection = false,\n\tpagination,\n\tpageQueryKey,\n\tonPageChange,\n\tonSort,\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\tinitialState,\n\tonColumnVisibilityChange,\n\tstrings: stringsOverride,\n\ttopbarContent,\n\tfooterContent,\n\tselectionToolbar,\n\tbulkActions,\n\tselectionToolbarClassName,\n\tstorageKey,\n}: DataTableProps<TData, TValue>) {\n\tconst { defaultSize } = useTableConfig();\n\tconst resolvedSize = normalizeDataTableSize(size ?? defaultSize);\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// --- Dense mode storage key ---\n\tconst denseStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.dense` : null;\n\t}, [storageKey]);\n\n\t// --- Load initial column visibility from localStorage if persistence enabled ---\n\tconst initialColumnVisibility = useMemo<VisibilityState>(() => {\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 initialState?.columnVisibility || {};\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// Merge with initialState if provided\n\t\t\treturn { ...parsed, ...(initialState?.columnVisibility || {}) };\n\t\t} catch {\n\t\t\t// If parsing fails, fall back to initialState\n\t\t\treturn initialState?.columnVisibility || {};\n\t\t}\n\t}, [formattedStorageKey, initialState?.columnVisibility]);\n\n\t// --- Load initial dense mode from localStorage ---\n\tconst initialDense = useMemo(() => {\n\t\tif (!denseStorageKey || typeof window === 'undefined') return false;\n\t\ttry {\n\t\t\treturn window.localStorage.getItem(denseStorageKey) === '1';\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, [denseStorageKey]);\n\n\t// --- State for sorting, visibility, and dense mode ---\n\tconst [sorting, setSorting] = useState<SortingState>(initialState?.sorting || []);\n\tconst [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n\t\tinitialColumnVisibility,\n\t);\n\tconst [internalRowSelection, setInternalRowSelection] = useState<RowSelectionState>(\n\t\tinitialState?.rowSelection || {},\n\t);\n\tconst [dense, setDense] = useState(initialDense);\n\tconst rowSelection = controlledRowSelection ?? internalRowSelection;\n\n\t// --- Refs ---\n\tconst tableAreaRef = useRef<HTMLDivElement>(null);\n\n\t// --- Callbacks ---\n\tconst handleSortingChangeCallback = useCallback(\n\t\t(updater: Updater<SortingState>) => {\n\t\t\thandleSortingChange(updater, setSorting, onSort);\n\t\t},\n\t\t[onSort],\n\t);\n\n\tconst handleVisibilityChangeCallback = useCallback(\n\t\t(updater: Updater<VisibilityState>) => {\n\t\t\thandleColumnVisibilityChange(\n\t\t\t\tupdater,\n\t\t\t\tsetColumnVisibility,\n\t\t\t\t(newState) => {\n\t\t\t\t\t// Persist to localStorage if enabled\n\t\t\t\t\tif (formattedStorageKey && typeof window !== 'undefined') {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t\tformattedStorageKey,\n\t\t\t\t\t\t\t\tJSON.stringify(newState),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Silent fail - quota exceeded or other localStorage errors\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call user-provided handler\n\t\t\t\t\tif (onColumnVisibilityChange) {\n\t\t\t\t\t\tonColumnVisibilityChange(newState);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t\t[formattedStorageKey, onColumnVisibilityChange],\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 handleDenseChange = useCallback(\n\t\t(value: boolean) => {\n\t\t\tsetDense(value);\n\t\t\tif (denseStorageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(denseStorageKey, value ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t// Silent fail\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[denseStorageKey],\n\t);\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 baseColumns = enableRowSelection\n\t\t\t? addSelectionColumn<TData, TValue>(resolvedColumns, strings)\n\t\t\t: resolvedColumns;\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\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 },\n\t\tenableSorting,\n\t\tmanualSorting,\n\t\tenableRowSelection,\n\t\tenableMultiRowSelection,\n\t\tenableSubRowSelection,\n\t\tonSortingChange:\n\t\t\tenableSorting && manualSorting ? handleSortingChangeCallback : undefined,\n\t\tonRowSelectionChange:\n\t\t\tenableRowSelection ? handleRowSelectionChangeCallback : undefined,\n\t\tonColumnVisibilityChange: handleVisibilityChangeCallback,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetRowId,\n\t});\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 sm:flex-row sm:items-center sm: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\tvariant=\"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\tdense || 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<div className={cn(\n\t\t\tdense\n\t\t\t\t? 'fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-6'\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-lg 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-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{!!(topbarContent || enableColumnVisibility) && (\n\t\t\t\t<div className={cn('relative', stickyToolbar && 'sticky top-0 z-20 bg-card/95 backdrop-blur')}>\n\n <div className={cn(\n\t 'data-table-topbar flex items-end justify-between gap-space-lg px-surface py-row-y',\n dense ? 'mb-3 shrink-0' : 'mb-0',\n )}>\n <div className=\"data-table-topbar-left flex-1\">{topbarContent}</div>\n <div className=\"data-table-topbar-right flex items-center justify-end\">\n <DataTableToolbar\n table={table}\n tableAreaRef={tableAreaRef}\n dense={dense}\n onDenseChange={handleDenseChange}\n enableColumnVisibility={enableColumnVisibility}\n strings={strings}\n />\n </div>\n\n </div>\n <Separator />\n </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(dense || 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(dense || 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\tdense={dense}\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\tdense={dense}\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 <Separator />\n <Pagination\n pagination={pagination}\n onPageChange={onPageChange}\n pageQueryKey={resolvedPageQueryKey}\n labels={strings.pagination}\n />\n </>\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 { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\nimport {\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\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-4')}>\n\t\t\t<div className=\"flex flex-1 items-center space-x-2\">\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<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\tclassName=\"ml-auto\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{strings.columnVisibility.triggerLabel}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t<DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n\t\t\t\t\t\t\t\t{table\n\t\t\t\t\t\t\t\t\t.getAllColumns()\n\t\t\t\t\t\t\t\t\t.filter((column) => column.getCanHide())\n\t\t\t\t\t\t\t\t\t.map((column) => {\n\t\t\t\t\t\t\t\t\t\tconst header = column.columnDef.header;\n\t\t\t\t\t\t\t\t\t\tconst columnName = strings.columnVisibility.formatLabel(\n\t\t\t\t\t\t\t\t\t\t\tcolumn.id,\n\t\t\t\t\t\t\t\t\t\t\ttypeof header === 'string' ? header : undefined,\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"capitalize\"\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={column.getIsVisible()}\n\t\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.toggleVisibility(!!checked)\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>\n\t\t\t\t\t\t\t\t\t\t\t\t{columnName}\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\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</DropdownMenuGroup>\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDataTableFilterBar.displayName = 'DataTableFilterBar';\n","import { Button } from '@/components/base/buttons';\nimport Text from '@/components/typography/text';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTablePaginationProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\nexport function DataTablePagination({ table, selectedRowCount, totalRowCount, strings = defaultDataTableStrings }: DataTablePaginationProps) {\n // Use provided counts or get from table\n const selected = selectedRowCount ?? table.getFilteredSelectedRowModel().rows.length;\n const total = totalRowCount ?? table.getFilteredRowModel().rows.length;\n const summary = strings.selection.summary(selected, total);\n\n return (\n <div className={cn('table-pagination--component', 'flex items-center justify-end space-x-2 px-4 py-4')}>\n <div className=\"flex-1\">\n <Text type=\"secondary\">\n {summary}\n </Text>\n </div>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n {strings.pagination.previous}\n </Button>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>\n {strings.pagination.next}\n </Button>\n </div>\n );\n}\n\nDataTablePagination.displayName = 'DataTablePagination';\n","import type { ReactNode } from 'react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface CellValueProps {\n /** The value to display. When falsy, renders fallback with muted styling. */\n value?: string | number | null | undefined;\n /** Text shown when value is missing. Defaults to '--'. */\n fallback?: string;\n /** Force missing state regardless of value truthiness. */\n missing?: boolean;\n /** Additional class names (e.g. 'tabular-nums', 'font-mono'). */\n className?: string;\n /** Children override — when provided, renders children directly with missing styling applied. */\n children?: ReactNode;\n}\n\n/**\n * Table cell value with automatic missing-value treatment.\n *\n * When the value is falsy (or `missing` is explicitly true), renders\n * the fallback text at reduced opacity. Otherwise renders the value\n * with inherited table cell styling.\n *\n * @example\n * // Auto-detect missing\n * <CellValue value={phone} fallback={t('shared.tables.ui.empty')} />\n *\n * // Explicit missing flag\n * <CellValue missing={!defaultBusiness} fallback={t('vendors.tables.ui.no_default_business')} />\n *\n * // With formatting class\n * <CellValue value={date} className=\"tabular-nums\" />\n *\n * // Custom children with missing styling\n * <CellValue missing={!phone}>\n * {phone || 'No items to display'}\n * </CellValue>\n */\nexport function CellValue({ value, fallback = '--', missing, className, children }: CellValueProps) {\n const isMissing = missing ?? (value === null || value === undefined || value === '');\n\n if (children !== undefined) {\n return (\n <Text\n tag=\"span\"\n size=\"inherit\"\n type={isMissing ? 'secondary' : 'main'}\n className={cn(isMissing && 'opacity-60', className)}\n >\n {children}\n </Text>\n );\n }\n\n if (isMissing) {\n return (\n <Text tag=\"span\" size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n {fallback}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"inherit\" className={className}>\n {String(value)}\n </Text>\n );\n}\n\nCellValue.displayName = 'CellValue';\n","import type { AnchorHTMLAttributes } from 'react';\n\ntype TableLinkProps = AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const TableLink = (props: TableLinkProps) => {\n\treturn (\n\t\t<a\n\t\t\tclassName=\"text-foreground underline decoration-border decoration-dotted underline-offset-2 transition-colors duration-150 hover:text-foreground hover:decoration-muted-foreground\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\t\t</a>\n\t);\n};\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 ComposedBadgeVariant } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\n\n// ──────────────────────────────────────────────────────────────\n// StatusCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusCellEntry {\n\tlabel: ReactNode;\n\tvariant?: ComposedBadgeVariant;\n\ticon?: LucideIcon;\n\tdot?: boolean;\n}\n\nexport interface StatusCellProps<TStatus extends string> {\n\tvalue?: TStatus | null;\n\tmap: Record<TStatus, StatusCellEntry>;\n\temptyLabel?: ReactNode;\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('opacity-60', 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\tvariant={entry.variant ?? 'secondary'}\n\t\t\tclassName={cn('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\tid?: string;\n\tlabel: ReactNode;\n\tvariant?: ComposedBadgeVariant;\n\ticon?: LucideIcon;\n\tdot?: boolean;\n\thidden?: boolean;\n}\n\nexport interface StatusClusterCellProps {\n\titems?: readonly StatusClusterCellItem[];\n\temptyLabel?: ReactNode;\n\tclassName?: string;\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('opacity-60', 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('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\tvariant={item.variant ?? '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\tvalue?: string | number | Date | null;\n\t/** A Intl.DateTimeFormatOptions preset. Default: short month + day + year. */\n\toptions?: Intl.DateTimeFormatOptions;\n\tlocale?: string;\n\tshowIcon?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nconst DEFAULT_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n\tmonth: 'short',\n\tday: 'numeric',\n\tyear: 'numeric',\n};\n\nexport function DateCell({\n\tvalue,\n\toptions = DEFAULT_DATE_OPTIONS,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n}: DateCellProps) {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst date = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatter = new Intl.DateTimeFormat(locale, options);\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-space-sm tabular-nums', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"size-icon text-muted-foreground\" />}\n\t\t\t<Text size=\"inherit\" type=\"secondary\">\n\t\t\t\t{formatter.format(date)}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nDateCell.displayName = 'DateCell';\n\n// ──────────────────────────────────────────────────────────────\n// DateMetaCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateMetaCellProps extends DateCellProps {\n\tsecondary?: ReactNode | ((date: Date) => ReactNode);\n\tprimaryClassName?: string;\n\tsecondaryClassName?: string;\n}\n\nexport function DateMetaCell({\n\tvalue,\n\toptions = DEFAULT_DATE_OPTIONS,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n\tprimaryClassName,\n\tsecondary,\n\tsecondaryClassName,\n}: DateMetaCellProps) {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst date = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst formatter = new Intl.DateTimeFormat(locale, options);\n\tconst secondaryNode = typeof secondary === 'function' ? secondary(date) : secondary;\n\n\treturn (\n\t\t<span className={cn('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<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('truncate tabular-nums', primaryClassName)}\n\t\t\t\t>\n\t\t\t\t\t{formatter.format(date)}\n\t\t\t\t</Text>\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 opacity-75', 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\tvalue?: number | string | null;\n\tcurrency?: string;\n\tlocale?: string;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\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\tconst numeric = typeof value === 'number' ? value : Number.parseFloat(String(value ?? ''));\n\tif (!Number.isFinite(numeric)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatted = currency\n\t\t? new Intl.NumberFormat(locale, {\n\t\t\t\tstyle: 'currency',\n\t\t\t\tcurrency,\n\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t}).format(numeric)\n\t\t: numeric.toFixed(2);\n\treturn (\n\t\t<Text\n\t\t\ttag=\"span\"\n\t\t\tsize=\"inherit\"\n\t\t\tweight={weight}\n\t\t\tclassName={cn('tabular-nums', className)}\n\t\t>\n\t\t\t{formatted}\n\t\t</Text>\n\t);\n}\n\nCurrencyCell.displayName = 'CurrencyCell';\n\n// ──────────────────────────────────────────────────────────────\n// AvatarCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface AvatarCellProps {\n\tname?: string | null;\n\timageUrl?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tsubtitle?: ReactNode;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nfunction getInitials(name: string): string {\n\treturn name\n\t\t.split(/\\s+/)\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.map((p) => p[0]!.toUpperCase())\n\t\t.join('');\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('opacity-60', 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('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{getInitials(name)}\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\n// ──────────────────────────────────────────────────────────────\n// ResourceCell / IdentityCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface ResourceCellMetadataItem {\n\tid?: string;\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\tvariant?: ComposedBadgeVariant;\n\t\t\ticon?: LucideIcon;\n\t\t\tdot?: boolean;\n\t });\n\nexport interface ResourceCellLinkProps {\n\thref: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\t'aria-label'?: string;\n}\n\nexport interface ResourceCellProps {\n\ttitle?: ReactNode;\n\tsubtitle?: ReactNode;\n\tmetadata?: ReactNode | readonly ResourceCellMetadataItem[];\n\tbadges?: readonly ResourceCellBadge[];\n\timageUrl?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tfallback?: ReactNode;\n\thref?: string;\n\trenderLink?: (props: ResourceCellLinkProps) => ReactNode;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n\tmediaClassName?: string;\n\tcontentClassName?: string;\n\ttitleClassName?: string;\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} variant={badge.variant ?? 'secondary'} dot={badge.dot}>\n\t\t\t\t{!!Icon && <Icon className=\"size-3\" />}\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-2 gap-y-0.5\">\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-1\">\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 opacity-70\">\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={cn('opacity-60', 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 ? getInitials(titleText) : '';\n\tconst content = (\n\t\t<span className={cn('resource-cell--content grid min-w-0 gap-0.5', contentClassName)}>\n\t\t\t<span className=\"resource-cell--title-row flex min-w-0 items-center gap-1.5\">\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-1\">\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</span>\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</span>\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-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<a href={href} className={linkClassName} aria-label={titleText}>\n\t\t\t{cell}\n\t\t</a>\n\t);\n}\n\nResourceCell.displayName = 'ResourceCell';\n\nexport const IdentityCell = ResourceCell;\n","/**\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 / dense toggle 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\tconst timerId = window.setTimeout(() => {\n\t\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\t\tif (!el) return;\n\n\t\t\tmeasure();\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\treturn () => {\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 () => window.clearTimeout(timerId);\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\n/**\n * localStorage-backed boolean state for the dense / comfortable toggle.\n * `null` storageKey disables persistence (the value is purely in-memory).\n */\nexport function usePersistentDensity(\n\tstorageKey: string | null,\n\tdefaultDense = false,\n): [boolean, (next: boolean) => void] {\n\tconst initial = (() => {\n\t\tif (!storageKey || typeof window === 'undefined') return defaultDense;\n\t\ttry {\n\t\t\tconst raw = window.localStorage.getItem(storageKey);\n\t\t\tif (raw === '1') return true;\n\t\t\tif (raw === '0') return false;\n\t\t\treturn defaultDense;\n\t\t} catch {\n\t\t\treturn defaultDense;\n\t\t}\n\t})();\n\n\tconst [dense, setDenseState] = useState(initial);\n\n\tconst setDense = useCallback(\n\t\t(next: boolean) => {\n\t\t\tsetDenseState(next);\n\t\t\tif (storageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(storageKey, next ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t/* ignore quota / disabled-storage errors */\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[storageKey],\n\t);\n\n\treturn [dense, setDense];\n}\n","/**\n * DensityToggle — small icon button that flips between \"dense\" and\n * \"comfortable\" table modes. Stateless: render-time `dense` boolean +\n * `onChange` callback. Pair with `usePersistentDensity` from `../hooks`\n * when you want to persist the choice to localStorage.\n *\n * Used internally by `DataTableToolbar`; exposed for consumers building\n * custom toolbars.\n */\nimport { Maximize2, Minimize2 } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nconst buttonClass =\n\t'inline-flex size-control-sm items-center justify-center rounded-radius text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-30';\n\nexport interface DensityToggleProps {\n\tdense: boolean;\n\tonChange: (next: boolean) => void;\n\tdenseLabel?: string;\n\tcomfortableLabel?: string;\n\tclassName?: string;\n}\n\nexport function DensityToggle({\n\tdense,\n\tonChange,\n\tdenseLabel = 'Dense',\n\tcomfortableLabel = 'Comfortable',\n\tclassName,\n}: DensityToggleProps) {\n\tconst label = dense ? comfortableLabel : denseLabel;\n\tconst Icon = dense ? Maximize2 : Minimize2;\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\taria-label={label}\n\t\t\taria-pressed={dense}\n\t\t\tonClick={() => onChange(!dense)}\n\t\t\tclassName={cn(buttonClass, className)}\n\t\t>\n\t\t\t<Icon className=\"size-icon-sm\" />\n\t\t</button>\n\t);\n}\n\nDensityToggle.displayName = 'DensityToggle';\n"],"mappings":"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"}