@epilot/zenith-react 0.2.0-next.1 → 0.2.0-next.4

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 (273) hide show
  1. package/README.md +25 -0
  2. package/codemods/README.md +168 -0
  3. package/codemods/migrate/base-elements/accordion.ts +132 -0
  4. package/codemods/migrate/base-elements/alert.ts +81 -0
  5. package/codemods/migrate/base-elements/avatar.ts +116 -0
  6. package/codemods/migrate/base-elements/button.ts +188 -0
  7. package/codemods/migrate/base-elements/checkbox.ts +17 -0
  8. package/codemods/migrate/base-elements/chip.ts +87 -0
  9. package/codemods/migrate/base-elements/chip360.ts +162 -0
  10. package/codemods/migrate/base-elements/circular-progress.ts +73 -0
  11. package/codemods/migrate/base-elements/dialog.ts +323 -0
  12. package/codemods/migrate/base-elements/divider.ts +61 -0
  13. package/codemods/migrate/base-elements/feedback-message.ts +95 -0
  14. package/codemods/migrate/base-elements/icon-button.ts +203 -0
  15. package/codemods/migrate/base-elements/index.ts +55 -0
  16. package/codemods/migrate/base-elements/mui-props.ts +29 -0
  17. package/codemods/migrate/base-elements/notification.ts +98 -0
  18. package/codemods/migrate/base-elements/paper.ts +78 -0
  19. package/codemods/migrate/base-elements/select.ts +328 -0
  20. package/codemods/migrate/base-elements/shared.ts +910 -0
  21. package/codemods/migrate/base-elements/skeleton.ts +83 -0
  22. package/codemods/migrate/base-elements/switch.ts +19 -0
  23. package/codemods/migrate/base-elements/tabs.ts +222 -0
  24. package/codemods/migrate/base-elements/text-field.ts +425 -0
  25. package/codemods/migrate/base-elements/toggle-button.ts +185 -0
  26. package/codemods/migrate/base-elements/tooltip.ts +231 -0
  27. package/codemods/migrate/base-elements/typography.ts +247 -0
  28. package/codemods/migrate/base-elements/unsupported.ts +277 -0
  29. package/codemods/migrate/from-base-elements.ts +20 -0
  30. package/codemods/migrate/from-volt.ts +20 -0
  31. package/codemods/migrate/lib/imports.ts +399 -0
  32. package/codemods/migrate/lib/jsx.ts +313 -0
  33. package/codemods/migrate/lib/run-migration.ts +528 -0
  34. package/codemods/migrate/lib/source.ts +6 -0
  35. package/codemods/migrate/lib/todo.ts +107 -0
  36. package/codemods/migrate/lib/types.ts +114 -0
  37. package/codemods/migrate/volt/class-helpers.ts +37 -0
  38. package/codemods/migrate/volt/index.ts +18 -0
  39. package/codemods/migrate/volt/pagination.ts +26 -0
  40. package/codemods/migrate/volt/same-name.ts +293 -0
  41. package/codemods/migrate/volt/stylesheets.ts +18 -0
  42. package/codemods/migrate/volt/tanstack-types.ts +20 -0
  43. package/codemods/radix-to-base-ui.ts +389 -0
  44. package/dist/_virtual/_zenith-runtime-family_accordion.js +7 -0
  45. package/dist/_virtual/_zenith-runtime-family_accordion.js.map +1 -0
  46. package/dist/_virtual/_zenith-runtime-family_alert-dialog.js +7 -0
  47. package/dist/_virtual/_zenith-runtime-family_alert-dialog.js.map +1 -0
  48. package/dist/_virtual/_zenith-runtime-family_avatar.js +7 -0
  49. package/dist/_virtual/_zenith-runtime-family_avatar.js.map +1 -0
  50. package/dist/_virtual/_zenith-runtime-family_button.js +7 -0
  51. package/dist/_virtual/_zenith-runtime-family_button.js.map +1 -0
  52. package/dist/_virtual/_zenith-runtime-family_checkbox.js +7 -0
  53. package/dist/_virtual/_zenith-runtime-family_checkbox.js.map +1 -0
  54. package/dist/_virtual/_zenith-runtime-family_csp-provider.js +7 -0
  55. package/dist/_virtual/_zenith-runtime-family_csp-provider.js.map +1 -0
  56. package/dist/_virtual/_zenith-runtime-family_dialog.js +7 -0
  57. package/dist/_virtual/_zenith-runtime-family_dialog.js.map +1 -0
  58. package/dist/_virtual/_zenith-runtime-family_direction-provider.js +8 -0
  59. package/dist/_virtual/_zenith-runtime-family_direction-provider.js.map +1 -0
  60. package/dist/_virtual/_zenith-runtime-family_menu.js +7 -0
  61. package/dist/_virtual/_zenith-runtime-family_menu.js.map +1 -0
  62. package/dist/_virtual/_zenith-runtime-family_merge-props.js +11 -0
  63. package/dist/_virtual/_zenith-runtime-family_merge-props.js.map +1 -0
  64. package/dist/_virtual/_zenith-runtime-family_popover.js +7 -0
  65. package/dist/_virtual/_zenith-runtime-family_popover.js.map +1 -0
  66. package/dist/_virtual/_zenith-runtime-family_radio-group.js +7 -0
  67. package/dist/_virtual/_zenith-runtime-family_radio-group.js.map +1 -0
  68. package/dist/_virtual/_zenith-runtime-family_radio.js +7 -0
  69. package/dist/_virtual/_zenith-runtime-family_radio.js.map +1 -0
  70. package/dist/_virtual/_zenith-runtime-family_scroll-area.js +7 -0
  71. package/dist/_virtual/_zenith-runtime-family_scroll-area.js.map +1 -0
  72. package/dist/_virtual/_zenith-runtime-family_select.js +7 -0
  73. package/dist/_virtual/_zenith-runtime-family_select.js.map +1 -0
  74. package/dist/_virtual/_zenith-runtime-family_separator.js +7 -0
  75. package/dist/_virtual/_zenith-runtime-family_separator.js.map +1 -0
  76. package/dist/_virtual/_zenith-runtime-family_switch.js +7 -0
  77. package/dist/_virtual/_zenith-runtime-family_switch.js.map +1 -0
  78. package/dist/_virtual/_zenith-runtime-family_tabs.js +7 -0
  79. package/dist/_virtual/_zenith-runtime-family_tabs.js.map +1 -0
  80. package/dist/_virtual/_zenith-runtime-family_toast.js +7 -0
  81. package/dist/_virtual/_zenith-runtime-family_toast.js.map +1 -0
  82. package/dist/_virtual/_zenith-runtime-family_toggle-group.js +7 -0
  83. package/dist/_virtual/_zenith-runtime-family_toggle-group.js.map +1 -0
  84. package/dist/_virtual/_zenith-runtime-family_toggle.js +7 -0
  85. package/dist/_virtual/_zenith-runtime-family_toggle.js.map +1 -0
  86. package/dist/_virtual/_zenith-runtime-family_tooltip.js +7 -0
  87. package/dist/_virtual/_zenith-runtime-family_tooltip.js.map +1 -0
  88. package/dist/_virtual/_zenith-runtime-family_use-render.js +7 -0
  89. package/dist/_virtual/_zenith-runtime-family_use-render.js.map +1 -0
  90. package/dist/components/accordion/accordion.js +179 -96
  91. package/dist/components/accordion/accordion.js.map +1 -1
  92. package/dist/components/alert-dialog/alert-dialog.js +243 -206
  93. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  94. package/dist/components/avatar/avatar.js +94 -82
  95. package/dist/components/avatar/avatar.js.map +1 -1
  96. package/dist/components/badge/badge.js +11 -11
  97. package/dist/components/breadcrumb/breadcrumb.js +69 -70
  98. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  99. package/dist/components/button/button.js +119 -102
  100. package/dist/components/button/button.js.map +1 -1
  101. package/dist/components/checkbox/checkbox.js +68 -51
  102. package/dist/components/checkbox/checkbox.js.map +1 -1
  103. package/dist/components/data-table/data-table-header.js +113 -99
  104. package/dist/components/data-table/data-table-header.js.map +1 -1
  105. package/dist/components/data-table/data-table-row.js +49 -40
  106. package/dist/components/data-table/data-table-row.js.map +1 -1
  107. package/dist/components/date-range-picker/date-range-picker.js +100 -90
  108. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  109. package/dist/components/date-time-picker/date-time-picker-input.js +118 -108
  110. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  111. package/dist/components/date-time-picker/date-time-picker-panel.js +91 -94
  112. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  113. package/dist/components/dialog/dialog.js +238 -228
  114. package/dist/components/dialog/dialog.js.map +1 -1
  115. package/dist/components/drawer/drawer.js +260 -322
  116. package/dist/components/drawer/drawer.js.map +1 -1
  117. package/dist/components/dropdown-menu/dropdown-menu.js +533 -279
  118. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  119. package/dist/components/field/field-combobox.js +87 -77
  120. package/dist/components/field/field-combobox.js.map +1 -1
  121. package/dist/components/list/list-sortable.js +104 -0
  122. package/dist/components/list/list-sortable.js.map +1 -0
  123. package/dist/components/list/list.js +246 -324
  124. package/dist/components/list/list.js.map +1 -1
  125. package/dist/components/option-card/option-card.js +121 -117
  126. package/dist/components/option-card/option-card.js.map +1 -1
  127. package/dist/components/pill/pill.js +7 -7
  128. package/dist/components/popover/popover.js +223 -127
  129. package/dist/components/popover/popover.js.map +1 -1
  130. package/dist/components/radio/radio-group-base.js +54 -0
  131. package/dist/components/radio/radio-group-base.js.map +1 -0
  132. package/dist/components/radio/radio.js +71 -60
  133. package/dist/components/radio/radio.js.map +1 -1
  134. package/dist/components/scroll-area/scroll-area.js +142 -108
  135. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  136. package/dist/components/scroll-overflow/scroll-overflow.js +156 -127
  137. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  138. package/dist/components/segmented-control/segmented-control.js +93 -81
  139. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  140. package/dist/components/select/select.js +485 -310
  141. package/dist/components/select/select.js.map +1 -1
  142. package/dist/components/separator/separator.js.map +1 -1
  143. package/dist/components/slot/compose-as-child.js +15 -12
  144. package/dist/components/slot/compose-as-child.js.map +1 -1
  145. package/dist/components/switch/switch.js +75 -68
  146. package/dist/components/switch/switch.js.map +1 -1
  147. package/dist/components/table/table-pagination.js +212 -175
  148. package/dist/components/table/table-pagination.js.map +1 -1
  149. package/dist/components/tabs/tabs.js +193 -190
  150. package/dist/components/tabs/tabs.js.map +1 -1
  151. package/dist/components/toast/toast.js +610 -148
  152. package/dist/components/toast/toast.js.map +1 -1
  153. package/dist/components/toggle/toggle-group.js +143 -32
  154. package/dist/components/toggle/toggle-group.js.map +1 -1
  155. package/dist/components/toggle/toggle.js +83 -53
  156. package/dist/components/toggle/toggle.js.map +1 -1
  157. package/dist/components/tooltip/tooltip.js +298 -138
  158. package/dist/components/tooltip/tooltip.js.map +1 -1
  159. package/dist/index.d.ts +2335 -2129
  160. package/dist/index.js +24 -23
  161. package/dist/list/sortable/index.d.ts +29 -0
  162. package/dist/list/sortable/index.js +5 -0
  163. package/dist/{_virtual → list/sortable}/index.js.map +1 -1
  164. package/dist/packages/tokens/dist/delivery/index.js +10 -10
  165. package/dist/packages/tokens/dist/delivery/index.js.map +1 -1
  166. package/dist/packages/tokens/dist/generated/core.generated.js +6 -15
  167. package/dist/packages/tokens/dist/generated/core.generated.js.map +1 -1
  168. package/dist/packages/tokens/dist/generated/palette.generated.js +4 -5
  169. package/dist/packages/tokens/dist/generated/palette.generated.js.map +1 -1
  170. package/dist/packages/tokens/dist/generated/palette.meta.generated.js +5 -0
  171. package/dist/packages/tokens/dist/generated/palette.meta.generated.js.map +1 -0
  172. package/dist/packages/tokens/dist/install.js +40 -17
  173. package/dist/packages/tokens/dist/install.js.map +1 -1
  174. package/dist/renderer/runtime-contract.generated.js +8 -0
  175. package/dist/renderer/runtime-contract.generated.js.map +1 -0
  176. package/dist/renderer/served.js +34 -0
  177. package/dist/renderer/served.js.map +1 -0
  178. package/dist/tokens/core.meta.generated.js +2 -2
  179. package/dist/tokens/core.meta.generated.js.map +1 -1
  180. package/dist/tokens/index.d.ts +1028 -1028
  181. package/dist/tokens/index.js +863 -863
  182. package/dist/tokens/index.js.map +1 -1
  183. package/dist/tokens/palette.meta.generated.js +5 -0
  184. package/dist/tokens/palette.meta.generated.js.map +1 -0
  185. package/dist/tokens.json +1 -1
  186. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js +57 -62
  187. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js.map +1 -1
  188. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +32 -38
  189. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +1 -1
  190. package/package.json +29 -21
  191. package/scripts/migration-diagnostics-core.mjs +18 -10
  192. package/scripts/migration-diagnostics.mjs +31 -8
  193. package/dist/_virtual/index.js +0 -6
  194. package/dist/_virtual/index2.js +0 -5
  195. package/dist/_virtual/index2.js.map +0 -1
  196. package/dist/_virtual/use-sync-external-store-shim.development.js +0 -5
  197. package/dist/_virtual/use-sync-external-store-shim.development.js.map +0 -1
  198. package/dist/_virtual/use-sync-external-store-shim.production.js +0 -5
  199. package/dist/_virtual/use-sync-external-store-shim.production.js.map +0 -1
  200. package/dist/tokens/palette.generated.js +0 -5
  201. package/dist/tokens/palette.generated.js.map +0 -1
  202. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js +0 -512
  203. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js.map +0 -1
  204. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js +0 -396
  205. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js.map +0 -1
  206. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js +0 -233
  207. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +0 -1
  208. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js +0 -137
  209. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +0 -1
  210. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js +0 -129
  211. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js.map +0 -1
  212. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js +0 -7
  213. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js.map +0 -1
  214. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js +0 -240
  215. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js.map +0 -1
  216. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js +0 -128
  217. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js.map +0 -1
  218. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js +0 -25
  219. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js.map +0 -1
  220. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js +0 -76
  221. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js.map +0 -1
  222. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js +0 -252
  223. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js.map +0 -1
  224. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js +0 -121
  225. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js.map +0 -1
  226. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js +0 -49
  227. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js.map +0 -1
  228. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js +0 -11
  229. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js.map +0 -1
  230. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js +0 -228
  231. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js.map +0 -1
  232. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js +0 -653
  233. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js.map +0 -1
  234. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js +0 -244
  235. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js.map +0 -1
  236. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js +0 -222
  237. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js.map +0 -1
  238. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js +0 -239
  239. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js.map +0 -1
  240. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js +0 -184
  241. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js.map +0 -1
  242. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js +0 -535
  243. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js.map +0 -1
  244. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js +0 -863
  245. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js.map +0 -1
  246. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +0 -63
  247. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +0 -1
  248. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js +0 -133
  249. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js.map +0 -1
  250. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js +0 -164
  251. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js.map +0 -1
  252. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js +0 -138
  253. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js.map +0 -1
  254. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js +0 -34
  255. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js.map +0 -1
  256. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js +0 -340
  257. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js.map +0 -1
  258. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js +0 -16
  259. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js.map +0 -1
  260. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js +0 -9
  261. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js.map +0 -1
  262. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js +0 -28
  263. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js.map +0 -1
  264. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js +0 -33
  265. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js.map +0 -1
  266. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js +0 -747
  267. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js.map +0 -1
  268. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -68
  269. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
  270. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -56
  271. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
  272. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js +0 -11
  273. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-header.js","sources":["../../../src/components/data-table/data-table-header.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback, useMemo } from \"react\"\nimport { flexRender, type Header } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type Modifier,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n horizontalListSortingStrategy,\n arrayMove,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { TableHeader, TableRow, TableHead } from \"../table/table\"\nimport {\n useDataTable,\n useDataTableContent,\n useDataTableVirtualizer,\n} from \"./hooks\"\nimport { DataTableHeaderDraggable } from \"./data-table-header-draggable\"\nimport {\n getPinnedColumnOffset,\n isLastLeftPinnedColumn,\n isFirstRightPinnedColumn,\n} from \"./data-table-pinning-utils\"\n\n// Restrict drag movement to horizontal axis only\nconst restrictToHorizontalAxis: Modifier = ({ transform }) => ({\n ...transform,\n y: 0,\n})\n\n// TanStack Table's default column width\nconst DEFAULT_COLUMN_WIDTH = 150\n\n/** Check if a column can be reordered */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isColumnReorderable(column: Header<any, unknown>[\"column\"]): boolean {\n if (column.id === \"select\") return false\n const meta = column.columnDef.meta as { enableOrdering?: boolean } | undefined\n if (meta?.enableOrdering === false) return false\n return true\n}\n\nconst useStyles = makeZenithStyles({\n headerTitle: {\n display: \"block\",\n ...shorthands.overflow(\"hidden\"),\n whiteSpace: \"nowrap\",\n fontWeight: tokens.fontWeightSemibold,\n },\n shadowLeft: {\n boxShadow: \"2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n shadowRight: {\n boxShadow: \"-2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n})\n\nexport type DataTableHeaderProps = {\n /** Additional class name */\n className?: string\n /** Whether to make header sticky */\n sticky?: boolean\n /** Background color for sticky header. Default: tokens.gray2 */\n stickyBackground?: string\n}\n\n/**\n * Renders the table header with column headers.\n * Must be used within a DataTable component.\n */\nexport const DataTableHeader = React.forwardRef<\n HTMLTableSectionElement,\n DataTableHeaderProps\n>(function DataTableHeader(\n { className, sticky, stickyBackground = tokens.gray2 },\n ref\n) {\n const styles = useStyles()\n const {\n table,\n disableColumnResizing,\n showHeaderBorder,\n fitHeaderWidth,\n enableColumnOrdering,\n } = useDataTable()\n const enableColumnResizing = !disableColumnResizing\n const virtualizerContext = useDataTableVirtualizer()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n // Auto-enable sticky when virtualization is active\n const isSticky = sticky ?? Boolean(virtualizerContext)\n\n // DnD sensors for column reordering\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 5 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : table.getAllLeafColumns().map((c) => c.id)\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [table]\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const renderHeaders = (headers: Header<any, unknown>[]) =>\n headers.map((header) => {\n const isPinned = header.column.getIsPinned()\n const pinnedOffset = isPinned\n ? getPinnedColumnOffset(header.column, table)\n : undefined\n const isLastLeft = isLastLeftPinnedColumn(header.column, table)\n const isFirstRight = isFirstRightPinnedColumn(header.column, table)\n const columnMeta = header.column.columnDef.meta as\n { align?: \"left\" | \"center\" | \"right\" } | undefined\n const align = columnMeta?.align\n\n const cellStyle: React.CSSProperties = {\n width: enableColumnResizing\n ? header.getSize()\n : header.getSize() !== DEFAULT_COLUMN_WIDTH\n ? header.getSize()\n : undefined,\n minWidth: fitHeaderWidth ? \"max-content\" : undefined,\n backgroundColor: isSticky || isPinned ? stickyBackground : undefined,\n position:\n isSticky || isPinned\n ? \"sticky\"\n : enableColumnResizing\n ? \"relative\"\n : undefined,\n top: isSticky ? 0 : undefined,\n left: isPinned === \"left\" ? `${pinnedOffset}px` : undefined,\n right: isPinned === \"right\" ? `${pinnedOffset}px` : undefined,\n zIndex: isPinned ? 30 : isSticky ? 10 : undefined,\n // Reduce padding for sortable headers\n ...(() => {\n const meta = header.column.columnDef.meta as\n | {\n _sortableHeaderWrapped?: boolean\n align?: \"left\" | \"right\" | \"center\"\n }\n | undefined\n const shouldReducePadding =\n meta?._sortableHeaderWrapped ||\n (header.column.getCanSort() &&\n typeof header.column.columnDef.header === \"function\")\n if (!shouldReducePadding) return {}\n return meta?.align === \"right\"\n ? { paddingRight: 8 }\n : { paddingLeft: 8 }\n })(),\n }\n\n const cellClassName = mergeClasses(\n isLastLeft && styles.shadowLeft,\n isFirstRight && styles.shadowRight\n )\n\n const ariaSort =\n header.column.getIsSorted() === \"asc\"\n ? (\"ascending\" as const)\n : header.column.getIsSorted() === \"desc\"\n ? (\"descending\" as const)\n : header.column.getCanSort()\n ? (\"none\" as const)\n : undefined\n\n const headerContent = (\n <span className={styles.headerTitle}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n )\n\n if (enableColumnOrdering) {\n const canReorder = isColumnReorderable(header.column) && !isPinned\n\n return (\n <DataTableHeaderDraggable\n key={header.id}\n headerId={header.column.id}\n disabled={!canReorder}\n align={align}\n aria-sort={ariaSort}\n style={cellStyle}\n className={cellClassName}\n >\n {headerContent}\n </DataTableHeaderDraggable>\n )\n }\n\n return (\n <TableHead\n key={header.id}\n align={align}\n aria-sort={ariaSort}\n style={cellStyle}\n className={cellClassName}\n >\n {headerContent}\n </TableHead>\n )\n })\n\n // Get column IDs for SortableContext\n const orderedColumnIds = table.getAllLeafColumns().map((col) => col.id)\n\n const headerContent = (\n <TableHeader\n ref={ref}\n data-slot=\"data-table-header\"\n {...{ [SLOT_ATTR]: \"data-table-header\" }}\n data-fs-element=\"DataTable-Header\"\n className={className}\n >\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n noHover\n style={{\n boxShadow:\n showHeaderBorder !== false\n ? `inset 0 -1px 0 0 ${tokens.grayA6}`\n : \"none\",\n }}\n >\n {enableColumnOrdering ? (\n <SortableContext\n items={orderedColumnIds}\n strategy={horizontalListSortingStrategy}\n >\n {renderHeaders(headerGroup.headers)}\n </SortableContext>\n ) : (\n renderHeaders(headerGroup.headers)\n )}\n {/* Spacer cell - absorbs remaining width when columns < container */}\n {spacerWidth > 0 && (\n <TableHead\n data-spacer\n aria-hidden=\"true\"\n style={{\n width: spacerWidth,\n padding: 0,\n backgroundColor: isSticky ? stickyBackground : undefined,\n position: isSticky ? \"sticky\" : undefined,\n top: isSticky ? 0 : undefined,\n zIndex: isSticky ? 5 : undefined,\n }}\n />\n )}\n </TableRow>\n ))}\n </TableHeader>\n )\n\n const a11yContainer = useMemo(\n () =>\n enableColumnOrdering && typeof document !== \"undefined\"\n ? document.body\n : undefined,\n [enableColumnOrdering]\n )\n\n // Wrap with DndContext; portal a11y elements to body to avoid invalid DOM nesting in <table>\n if (enableColumnOrdering) {\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToHorizontalAxis]}\n accessibility={{ container: a11yContainer }}\n >\n {headerContent}\n </DndContext>\n )\n }\n\n return headerContent\n})\n"],"names":["restrictToHorizontalAxis","transform","DEFAULT_COLUMN_WIDTH","isColumnReorderable","column","meta","useStyles","makeZenithStyles","shorthands","tokens.fontWeightSemibold","DataTableHeader","React","className","sticky","stickyBackground","tokens.gray2","ref","styles","table","disableColumnResizing","showHeaderBorder","fitHeaderWidth","enableColumnOrdering","useDataTable","enableColumnResizing","virtualizerContext","useDataTableVirtualizer","contentContext","useDataTableContent","spacerWidth","isSticky","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","currentOrder","c","oldIndex","newIndex","newOrder","arrayMove","renderHeaders","headers","header","isPinned","pinnedOffset","getPinnedColumnOffset","isLastLeft","isLastLeftPinnedColumn","isFirstRight","isFirstRightPinnedColumn","columnMeta","align","cellStyle","cellClassName","mergeClasses","ariaSort","headerContent","jsx","flexRender","canReorder","DataTableHeaderDraggable","TableHead","orderedColumnIds","col","TableHeader","SLOT_ATTR","headerGroup","jsxs","TableRow","tokens.grayA6","SortableContext","horizontalListSortingStrategy","a11yContainer","useMemo","DndContext","closestCenter"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-header.js","sources":["../../../src/components/data-table/data-table-header.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback, useMemo } from \"react\"\nimport { flexRender, type Header } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type Modifier,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n horizontalListSortingStrategy,\n arrayMove,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { TableHeader, TableRow, TableHead } from \"../table/table\"\nimport {\n useDataTable,\n useDataTableContent,\n useDataTableVirtualizer,\n} from \"./hooks\"\nimport { DataTableHeaderDraggable } from \"./data-table-header-draggable\"\nimport {\n getPinnedColumnOffset,\n isLastLeftPinnedColumn,\n isFirstRightPinnedColumn,\n} from \"./data-table-pinning-utils\"\n\n// Restrict drag movement to horizontal axis only\nconst restrictToHorizontalAxis: Modifier = ({ transform }) => ({\n ...transform,\n y: 0,\n})\n\n// TanStack Table's default column width\nconst DEFAULT_COLUMN_WIDTH = 150\n\n/** Check if a column can be reordered */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isColumnReorderable(column: Header<any, unknown>[\"column\"]): boolean {\n if (column.id === \"select\") return false\n const meta = column.columnDef.meta as { enableOrdering?: boolean } | undefined\n if (meta?.enableOrdering === false) return false\n return true\n}\n\nconst useStyles = makeZenithStyles({\n // Painted on the cells, as DataTableRow's rule is: WebKit draws no\n // box-shadow on a <tr>.\n headerRowBorder: {\n \"& > th\": {\n backgroundImage: `linear-gradient(${tokens.grayA6}, ${tokens.grayA6})`,\n backgroundSize: \"100% 1px\",\n backgroundPosition: \"bottom\",\n backgroundRepeat: \"no-repeat\",\n },\n },\n headerTitle: {\n display: \"block\",\n ...shorthands.overflow(\"hidden\"),\n whiteSpace: \"nowrap\",\n fontWeight: tokens.fontWeightSemibold,\n // The clip truncates long titles, but a control in the header (the\n // select-all checkbox) needs its focus ring drawn outside its box: give\n // the clip room for it, and take that room back so layout is unchanged.\n boxSizing: \"border-box\",\n ...shorthands.padding(tokens.spacingElement1),\n ...shorthands.margin(`calc(${tokens.spacingElement1} * -1)`),\n },\n shadowLeft: {\n boxShadow: \"2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n shadowRight: {\n boxShadow: \"-2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n})\n\nexport type DataTableHeaderProps = {\n /** Additional class name */\n className?: string\n /** Whether to make header sticky */\n sticky?: boolean\n /** Background color for sticky header. Default: tokens.gray2 */\n stickyBackground?: string\n}\n\n/**\n * Renders the table header with column headers.\n * Must be used within a DataTable component.\n */\nexport const DataTableHeader = React.forwardRef<\n HTMLTableSectionElement,\n DataTableHeaderProps\n>(function DataTableHeader(\n { className, sticky, stickyBackground = tokens.gray2 },\n ref\n) {\n const styles = useStyles()\n const {\n table,\n disableColumnResizing,\n showHeaderBorder,\n fitHeaderWidth,\n enableColumnOrdering,\n } = useDataTable()\n const enableColumnResizing = !disableColumnResizing\n const virtualizerContext = useDataTableVirtualizer()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n // Auto-enable sticky when virtualization is active\n const isSticky = sticky ?? Boolean(virtualizerContext)\n\n // DnD sensors for column reordering\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 5 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : table.getAllLeafColumns().map((c) => c.id)\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [table]\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const renderHeaders = (headers: Header<any, unknown>[]) =>\n headers.map((header) => {\n const isPinned = header.column.getIsPinned()\n const pinnedOffset = isPinned\n ? getPinnedColumnOffset(header.column, table)\n : undefined\n const isLastLeft = isLastLeftPinnedColumn(header.column, table)\n const isFirstRight = isFirstRightPinnedColumn(header.column, table)\n const columnMeta = header.column.columnDef.meta as\n { align?: \"left\" | \"center\" | \"right\" } | undefined\n const align = columnMeta?.align\n\n const cellStyle: React.CSSProperties = {\n width: enableColumnResizing\n ? header.getSize()\n : header.getSize() !== DEFAULT_COLUMN_WIDTH\n ? header.getSize()\n : undefined,\n minWidth: fitHeaderWidth ? \"max-content\" : undefined,\n backgroundColor: isSticky || isPinned ? stickyBackground : undefined,\n position:\n isSticky || isPinned\n ? \"sticky\"\n : enableColumnResizing\n ? \"relative\"\n : undefined,\n top: isSticky ? 0 : undefined,\n left: isPinned === \"left\" ? `${pinnedOffset}px` : undefined,\n right: isPinned === \"right\" ? `${pinnedOffset}px` : undefined,\n zIndex: isPinned ? 30 : isSticky ? 10 : undefined,\n // Reduce padding for sortable headers\n ...(() => {\n const meta = header.column.columnDef.meta as\n | {\n _sortableHeaderWrapped?: boolean\n align?: \"left\" | \"right\" | \"center\"\n }\n | undefined\n const shouldReducePadding =\n meta?._sortableHeaderWrapped ||\n (header.column.getCanSort() &&\n typeof header.column.columnDef.header === \"function\")\n if (!shouldReducePadding) return {}\n return meta?.align === \"right\"\n ? { paddingRight: 8 }\n : { paddingLeft: 8 }\n })(),\n }\n\n const cellClassName = mergeClasses(\n isLastLeft && styles.shadowLeft,\n isFirstRight && styles.shadowRight\n )\n\n const ariaSort =\n header.column.getIsSorted() === \"asc\"\n ? (\"ascending\" as const)\n : header.column.getIsSorted() === \"desc\"\n ? (\"descending\" as const)\n : header.column.getCanSort()\n ? (\"none\" as const)\n : undefined\n\n const headerContent = (\n <span className={styles.headerTitle}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n )\n\n if (enableColumnOrdering) {\n const canReorder = isColumnReorderable(header.column) && !isPinned\n\n return (\n <DataTableHeaderDraggable\n key={header.id}\n headerId={header.column.id}\n disabled={!canReorder}\n align={align}\n aria-sort={ariaSort}\n style={cellStyle}\n className={cellClassName}\n >\n {headerContent}\n </DataTableHeaderDraggable>\n )\n }\n\n return (\n <TableHead\n key={header.id}\n align={align}\n aria-sort={ariaSort}\n style={cellStyle}\n className={cellClassName}\n >\n {headerContent}\n </TableHead>\n )\n })\n\n // Get column IDs for SortableContext\n const orderedColumnIds = table.getAllLeafColumns().map((col) => col.id)\n\n const headerContent = (\n <TableHeader\n ref={ref}\n data-slot=\"data-table-header\"\n {...{ [SLOT_ATTR]: \"data-table-header\" }}\n data-fs-element=\"DataTable-Header\"\n className={className}\n >\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n noHover\n className={\n showHeaderBorder !== false ? styles.headerRowBorder : undefined\n }\n >\n {enableColumnOrdering ? (\n <SortableContext\n items={orderedColumnIds}\n strategy={horizontalListSortingStrategy}\n >\n {renderHeaders(headerGroup.headers)}\n </SortableContext>\n ) : (\n renderHeaders(headerGroup.headers)\n )}\n {/* Spacer cell - absorbs remaining width when columns < container */}\n {spacerWidth > 0 && (\n <TableHead\n data-spacer\n aria-hidden=\"true\"\n style={{\n width: spacerWidth,\n padding: 0,\n backgroundColor: isSticky ? stickyBackground : undefined,\n position: isSticky ? \"sticky\" : undefined,\n top: isSticky ? 0 : undefined,\n zIndex: isSticky ? 5 : undefined,\n }}\n />\n )}\n </TableRow>\n ))}\n </TableHeader>\n )\n\n const a11yContainer = useMemo(\n () =>\n enableColumnOrdering && typeof document !== \"undefined\"\n ? document.body\n : undefined,\n [enableColumnOrdering]\n )\n\n // Wrap with DndContext; portal a11y elements to body to avoid invalid DOM nesting in <table>\n if (enableColumnOrdering) {\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToHorizontalAxis]}\n accessibility={{ container: a11yContainer }}\n >\n {headerContent}\n </DndContext>\n )\n }\n\n return headerContent\n})\n"],"names":["restrictToHorizontalAxis","transform","DEFAULT_COLUMN_WIDTH","isColumnReorderable","column","meta","useStyles","makeZenithStyles","tokens.grayA6","shorthands","tokens.fontWeightSemibold","tokens.spacingElement1","DataTableHeader","React","className","sticky","stickyBackground","tokens.gray2","ref","styles","table","disableColumnResizing","showHeaderBorder","fitHeaderWidth","enableColumnOrdering","useDataTable","enableColumnResizing","virtualizerContext","useDataTableVirtualizer","contentContext","useDataTableContent","spacerWidth","isSticky","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","currentOrder","c","oldIndex","newIndex","newOrder","arrayMove","renderHeaders","headers","header","isPinned","pinnedOffset","getPinnedColumnOffset","isLastLeft","isLastLeftPinnedColumn","isFirstRight","isFirstRightPinnedColumn","columnMeta","align","cellStyle","cellClassName","mergeClasses","ariaSort","headerContent","jsx","flexRender","canReorder","DataTableHeaderDraggable","TableHead","orderedColumnIds","col","TableHeader","SLOT_ATTR","headerGroup","jsxs","TableRow","SortableContext","horizontalListSortingStrategy","a11yContainer","useMemo","DndContext","closestCenter"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { jsxs as A, jsx as b } from "react/jsx-runtime";
1
+ import { jsxs as A, jsx as p } from "react/jsx-runtime";
2
2
  import * as B from "react";
3
3
  import { flexRender as N } from "../../vendor/.bun/@tanstack_react-table@8.21.3_6f4b9a1cfb20c0ae/vendor/@tanstack/react-table/build/lib/index.js";
4
- import { mergeClasses as p, SLOT_ATTR as f, shorthands as h } from "@epilot/zenith-runtime/v1";
5
- import { makeZenithStyles as P } from "../../styles/make-styles.js";
6
- import { boxModel as g } from "../../styles/host-reset.js";
7
- import { grayA6 as $, accentA3 as x } from "../../tokens/index.js";
4
+ import { mergeClasses as w, SLOT_ATTR as u, shorthands as g } from "@epilot/zenith-runtime/v1";
5
+ import { makeZenithStyles as $ } from "../../styles/make-styles.js";
6
+ import { boxModel as h } from "../../styles/host-reset.js";
7
+ import { grayA6 as k, accentA3 as x } from "../../tokens/index.js";
8
8
  import { TableRow as z, TableCell as C } from "../table/table.js";
9
9
  import { getPinnedColumnOffset as j, isLastLeftPinnedColumn as F, isFirstRightPinnedColumn as K } from "./data-table-pinning-utils.js";
10
10
  import { useDataTable as V } from "./hooks/use-data-table.js";
@@ -17,7 +17,7 @@ function q(t) {
17
17
  const a = t.column.columnDef.meta;
18
18
  return a == null ? void 0 : a.align;
19
19
  }
20
- const k = [
20
+ const R = [
21
21
  "button",
22
22
  "a",
23
23
  "input",
@@ -36,8 +36,8 @@ const k = [
36
36
  '[role="switch"]',
37
37
  '[role="tab"]',
38
38
  "[data-radix-collection-item]",
39
- `[${f}="checkbox"]`
40
- ], G = P({
39
+ `[${u}="checkbox"]`
40
+ ], G = $({
41
41
  rowClickable: {
42
42
  cursor: "pointer",
43
43
  ":hover": {
@@ -47,23 +47,32 @@ const k = [
47
47
  rowSelected: {
48
48
  backgroundColor: x
49
49
  },
50
+ // The rule is painted on the cells: WebKit draws no box-shadow on a <tr>,
51
+ // and row borders don't paint under DataTableContent's
52
+ // `border-collapse: separate`. A background image also stays clear of the
53
+ // pinned cells' own box-shadow and adds no height.
50
54
  rowBorder: {
51
- boxShadow: `inset 0 -1px 0 0 ${$}`,
52
- "&:last-child": {
53
- boxShadow: "none"
55
+ "& > td": {
56
+ backgroundImage: `linear-gradient(${k}, ${k})`,
57
+ backgroundSize: "100% 1px",
58
+ backgroundPosition: "bottom",
59
+ backgroundRepeat: "no-repeat"
60
+ },
61
+ "&:last-child > td": {
62
+ backgroundImage: "none"
54
63
  }
55
64
  },
56
65
  cellTruncate: {
57
- ...g,
66
+ ...h,
58
67
  maxWidth: 0,
59
- ...h.overflow("hidden"),
68
+ ...g.overflow("hidden"),
60
69
  textOverflow: "ellipsis",
61
70
  whiteSpace: "nowrap"
62
71
  },
63
72
  cellWrap: {
64
- ...g,
73
+ ...h,
65
74
  maxWidth: 0,
66
- ...h.overflow("hidden"),
75
+ ...g.overflow("hidden"),
67
76
  overflowWrap: "break-word",
68
77
  wordBreak: "break-word"
69
78
  },
@@ -78,21 +87,21 @@ function H({ row: t, style: a, className: n }, v) {
78
87
  const r = G(), {
79
88
  table: c,
80
89
  onRowClick: i,
81
- clickableRowClassName: R,
82
- selectedRowClassName: T,
83
- cellOverflow: S = "truncate",
90
+ clickableRowClassName: T,
91
+ selectedRowClassName: S,
92
+ cellOverflow: I = "truncate",
84
93
  showRowBorders: D,
85
- disableColumnResizing: I
86
- } = V(), d = _(), u = (d == null ? void 0 : d.spacerWidth) ?? 0, y = !I, s = !!i, E = (e) => {
94
+ disableColumnResizing: y
95
+ } = V(), d = _(), f = (d == null ? void 0 : d.spacerWidth) ?? 0, E = !y, s = !!i, O = (e) => {
87
96
  if (!i) return;
88
97
  const l = e.target;
89
- k.some(
98
+ R.some(
90
99
  (o) => l.closest(o)
91
100
  ) || i(t, e);
92
- }, O = (e) => {
101
+ }, L = (e) => {
93
102
  if (i && (e.key === "Enter" || e.key === " ")) {
94
103
  const l = e.target;
95
- if (k.some(
104
+ if (R.some(
96
105
  (o) => l.closest(o)
97
106
  ))
98
107
  return;
@@ -104,53 +113,53 @@ function H({ row: t, style: a, className: n }, v) {
104
113
  {
105
114
  ref: v,
106
115
  "data-slot": "data-table-row",
107
- [f]: "data-table-row",
116
+ [u]: "data-table-row",
108
117
  "data-fs-element": "DataTable-Row",
109
118
  "data-state": t.getIsSelected() ? "selected" : void 0,
110
119
  "data-clickable": s ? "true" : void 0,
111
120
  style: a,
112
- className: p(
121
+ className: w(
113
122
  D !== !1 && r.rowBorder,
114
- s && (R ?? r.rowClickable),
115
- t.getIsSelected() && (T ?? r.rowSelected),
123
+ s && (T ?? r.rowClickable),
124
+ t.getIsSelected() && (S ?? r.rowSelected),
116
125
  n
117
126
  ),
118
- onClick: s ? E : void 0,
127
+ onClick: s ? O : void 0,
119
128
  tabIndex: s ? 0 : void 0,
120
- onKeyDown: s ? O : void 0,
129
+ onKeyDown: s ? L : void 0,
121
130
  children: [
122
131
  t.getVisibleCells().map((e) => {
123
- const l = Z(e, S), m = q(e), o = e.column.getIsPinned(), w = o ? j(e.column, c) : void 0, L = F(e.column, c), W = K(e.column, c);
124
- return /* @__PURE__ */ b(
132
+ const l = Z(e, I), m = q(e), o = e.column.getIsPinned(), b = o ? j(e.column, c) : void 0, W = F(e.column, c), P = K(e.column, c);
133
+ return /* @__PURE__ */ p(
125
134
  C,
126
135
  {
127
136
  "data-slot": "data-table-cell",
128
- [f]: "data-table-cell",
137
+ [u]: "data-table-cell",
129
138
  "data-fs-element": "DataTable-Cell",
130
139
  "data-pinned": o || void 0,
131
140
  align: m,
132
141
  style: {
133
- width: y || o ? e.column.getSize() : void 0,
134
- left: o === "left" ? `${w}px` : void 0,
135
- right: o === "right" ? `${w}px` : void 0
142
+ width: E || o ? e.column.getSize() : void 0,
143
+ left: o === "left" ? `${b}px` : void 0,
144
+ right: o === "right" ? `${b}px` : void 0
136
145
  },
137
- className: p(
146
+ className: w(
138
147
  l === "truncate" && r.cellTruncate,
139
148
  l === "wrap" && r.cellWrap,
140
- L && r.shadowLeft,
141
- W && r.shadowRight
149
+ W && r.shadowLeft,
150
+ P && r.shadowRight
142
151
  ),
143
152
  children: N(e.column.columnDef.cell, e.getContext())
144
153
  },
145
154
  e.id
146
155
  );
147
156
  }),
148
- u > 0 && /* @__PURE__ */ b(
157
+ f > 0 && /* @__PURE__ */ p(
149
158
  C,
150
159
  {
151
160
  "data-spacer": !0,
152
161
  "aria-hidden": "true",
153
- style: { width: u, padding: 0 }
162
+ style: { width: f, padding: 0 }
154
163
  }
155
164
  )
156
165
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-row.js","sources":["../../../src/components/data-table/data-table-row.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { CSSProperties, MouseEvent, KeyboardEvent } from \"react\"\nimport type { Row, Cell } from \"@tanstack/react-table\"\nimport { flexRender } from \"@tanstack/react-table\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { TableRow, TableCell } from \"../table/table\"\nimport { useDataTable, useDataTableContent } from \"./hooks\"\nimport type { DataTableCellOverflow } from \"./data-table-context\"\nimport {\n getPinnedColumnOffset,\n isLastLeftPinnedColumn,\n isFirstRightPinnedColumn,\n} from \"./data-table-pinning-utils\"\n\ntype CellAlign = \"left\" | \"center\" | \"right\"\n\n/**\n * Gets the cell overflow mode, checking column meta first, then falling back to table default.\n */\nfunction getCellOverflow<TData>(\n cell: Cell<TData, unknown>,\n tableDefault: DataTableCellOverflow\n): DataTableCellOverflow {\n const columnMeta = cell.column.columnDef.meta as\n { cellOverflow?: DataTableCellOverflow } | undefined\n return columnMeta?.cellOverflow ?? tableDefault\n}\n\n/**\n * Gets the cell alignment from column meta.\n */\nfunction getCellAlign<TData>(\n cell: Cell<TData, unknown>\n): CellAlign | undefined {\n const columnMeta = cell.column.columnDef.meta as\n { align?: CellAlign } | undefined\n return columnMeta?.align\n}\n\n// Interactive element selectors that should NOT trigger row click\nconst INTERACTIVE_SELECTORS = [\n \"button\",\n \"a\",\n \"input\",\n \"select\",\n \"textarea\",\n '[role=\"button\"]',\n '[role=\"checkbox\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"radio\"]',\n '[role=\"slider\"]',\n '[role=\"spinbutton\"]',\n '[role=\"switch\"]',\n '[role=\"tab\"]',\n \"[data-radix-collection-item]\",\n `[${SLOT_ATTR}=\"checkbox\"]`,\n]\n\nconst useStyles = makeZenithStyles({\n rowClickable: {\n cursor: \"pointer\",\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowSelected: {\n backgroundColor: tokens.accentA3,\n },\n rowBorder: {\n boxShadow: `inset 0 -1px 0 0 ${tokens.grayA6}`,\n \"&:last-child\": {\n boxShadow: \"none\",\n },\n },\n cellTruncate: {\n ...boxModel,\n maxWidth: 0,\n ...shorthands.overflow(\"hidden\"),\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n cellWrap: {\n ...boxModel,\n maxWidth: 0,\n ...shorthands.overflow(\"hidden\"),\n overflowWrap: \"break-word\",\n wordBreak: \"break-word\",\n },\n shadowLeft: {\n boxShadow: \"2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n shadowRight: {\n boxShadow: \"-2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n})\n\nexport type DataTableRowProps<TData> = {\n /** The row instance from TanStack Table */\n row: Row<TData>\n /** Optional style (used for virtualized row heights) */\n style?: CSSProperties\n /** Additional class name */\n className?: string\n}\n\n/**\n * Renders a single table row with its cells.\n * Supports clickable rows when onRowClick is provided via DataTable context.\n */\nfunction DataTableRowInner<TData>(\n { row, style, className }: DataTableRowProps<TData>,\n ref: React.ForwardedRef<HTMLTableRowElement>\n) {\n const styles = useStyles()\n const {\n table,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow: tableCellOverflow = \"truncate\",\n showRowBorders,\n disableColumnResizing,\n } = useDataTable<TData>()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n const enableColumnResizing = !disableColumnResizing\n const isClickable = Boolean(onRowClick)\n\n const handleClick = (event: MouseEvent<HTMLTableRowElement>) => {\n if (!onRowClick) return\n\n // Check if click originated from an interactive element\n const target = event.target as HTMLElement\n const isInteractiveElement = INTERACTIVE_SELECTORS.some((selector) =>\n target.closest(selector)\n )\n\n if (isInteractiveElement) {\n return // Don't trigger row click for interactive elements\n }\n\n onRowClick(row, event)\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTableRowElement>) => {\n if (!onRowClick) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n // Check if key event originated from an interactive element\n const target = event.target as HTMLElement\n const isInteractiveElement = INTERACTIVE_SELECTORS.some((selector) =>\n target.closest(selector)\n )\n\n if (isInteractiveElement) {\n return // Let the interactive element handle the event\n }\n\n event.preventDefault()\n onRowClick(row, event as unknown as MouseEvent<HTMLTableRowElement>)\n }\n }\n\n return (\n <TableRow\n ref={ref}\n data-slot=\"data-table-row\"\n {...{ [SLOT_ATTR]: \"data-table-row\" }}\n data-fs-element=\"DataTable-Row\"\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n data-clickable={isClickable ? \"true\" : undefined}\n style={style}\n className={mergeClasses(\n showRowBorders !== false && styles.rowBorder,\n isClickable && (clickableRowClassName ?? styles.rowClickable),\n row.getIsSelected() && (selectedRowClassName ?? styles.rowSelected),\n className\n )}\n onClick={isClickable ? handleClick : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onKeyDown={isClickable ? handleKeyDown : undefined}\n >\n {row.getVisibleCells().map((cell) => {\n const overflow = getCellOverflow(cell, tableCellOverflow)\n const align = getCellAlign(cell)\n const isPinned = cell.column.getIsPinned()\n const pinnedOffset = isPinned\n ? getPinnedColumnOffset(cell.column, table)\n : undefined\n const isLastLeft = isLastLeftPinnedColumn(cell.column, table)\n const isFirstRight = isFirstRightPinnedColumn(cell.column, table)\n\n return (\n <TableCell\n key={cell.id}\n data-slot=\"data-table-cell\"\n {...{ [SLOT_ATTR]: \"data-table-cell\" }}\n data-fs-element=\"DataTable-Cell\"\n data-pinned={isPinned || undefined}\n align={align}\n style={{\n width:\n enableColumnResizing || isPinned\n ? cell.column.getSize()\n : undefined,\n left: isPinned === \"left\" ? `${pinnedOffset}px` : undefined,\n right: isPinned === \"right\" ? `${pinnedOffset}px` : undefined,\n }}\n className={mergeClasses(\n overflow === \"truncate\" && styles.cellTruncate,\n overflow === \"wrap\" && styles.cellWrap,\n isLastLeft && styles.shadowLeft,\n isFirstRight && styles.shadowRight\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n {/* Spacer cell - matches header spacer column */}\n {spacerWidth > 0 && (\n <TableCell\n data-spacer\n aria-hidden=\"true\"\n style={{ width: spacerWidth, padding: 0 }}\n />\n )}\n </TableRow>\n )\n}\n\nexport const DataTableRow = React.forwardRef(DataTableRowInner) as <TData>(\n props: DataTableRowProps<TData> & {\n ref?: React.Ref<HTMLTableRowElement>\n }\n) => React.ReactElement | null\n"],"names":["getCellOverflow","cell","tableDefault","columnMeta","getCellAlign","INTERACTIVE_SELECTORS","SLOT_ATTR","useStyles","makeZenithStyles","tokens.accentA3","tokens.grayA6","boxModel","shorthands","DataTableRowInner","row","style","className","ref","styles","table","onRowClick","clickableRowClassName","selectedRowClassName","tableCellOverflow","showRowBorders","disableColumnResizing","useDataTable","contentContext","useDataTableContent","spacerWidth","enableColumnResizing","isClickable","handleClick","event","target","selector","handleKeyDown","jsxs","TableRow","mergeClasses","overflow","align","isPinned","pinnedOffset","getPinnedColumnOffset","isLastLeft","isLastLeftPinnedColumn","isFirstRight","isFirstRightPinnedColumn","jsx","TableCell","DataTableRow","React"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-row.js","sources":["../../../src/components/data-table/data-table-row.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { CSSProperties, MouseEvent, KeyboardEvent } from \"react\"\nimport type { Row, Cell } from \"@tanstack/react-table\"\nimport { flexRender } from \"@tanstack/react-table\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { TableRow, TableCell } from \"../table/table\"\nimport { useDataTable, useDataTableContent } from \"./hooks\"\nimport type { DataTableCellOverflow } from \"./data-table-context\"\nimport {\n getPinnedColumnOffset,\n isLastLeftPinnedColumn,\n isFirstRightPinnedColumn,\n} from \"./data-table-pinning-utils\"\n\ntype CellAlign = \"left\" | \"center\" | \"right\"\n\n/**\n * Gets the cell overflow mode, checking column meta first, then falling back to table default.\n */\nfunction getCellOverflow<TData>(\n cell: Cell<TData, unknown>,\n tableDefault: DataTableCellOverflow\n): DataTableCellOverflow {\n const columnMeta = cell.column.columnDef.meta as\n { cellOverflow?: DataTableCellOverflow } | undefined\n return columnMeta?.cellOverflow ?? tableDefault\n}\n\n/**\n * Gets the cell alignment from column meta.\n */\nfunction getCellAlign<TData>(\n cell: Cell<TData, unknown>\n): CellAlign | undefined {\n const columnMeta = cell.column.columnDef.meta as\n { align?: CellAlign } | undefined\n return columnMeta?.align\n}\n\n// Interactive element selectors that should NOT trigger row click\nconst INTERACTIVE_SELECTORS = [\n \"button\",\n \"a\",\n \"input\",\n \"select\",\n \"textarea\",\n '[role=\"button\"]',\n '[role=\"checkbox\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"radio\"]',\n '[role=\"slider\"]',\n '[role=\"spinbutton\"]',\n '[role=\"switch\"]',\n '[role=\"tab\"]',\n \"[data-radix-collection-item]\",\n `[${SLOT_ATTR}=\"checkbox\"]`,\n]\n\nconst useStyles = makeZenithStyles({\n rowClickable: {\n cursor: \"pointer\",\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowSelected: {\n backgroundColor: tokens.accentA3,\n },\n // The rule is painted on the cells: WebKit draws no box-shadow on a <tr>,\n // and row borders don't paint under DataTableContent's\n // `border-collapse: separate`. A background image also stays clear of the\n // pinned cells' own box-shadow and adds no height.\n rowBorder: {\n \"& > td\": {\n backgroundImage: `linear-gradient(${tokens.grayA6}, ${tokens.grayA6})`,\n backgroundSize: \"100% 1px\",\n backgroundPosition: \"bottom\",\n backgroundRepeat: \"no-repeat\",\n },\n \"&:last-child > td\": {\n backgroundImage: \"none\",\n },\n },\n cellTruncate: {\n ...boxModel,\n maxWidth: 0,\n ...shorthands.overflow(\"hidden\"),\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n cellWrap: {\n ...boxModel,\n maxWidth: 0,\n ...shorthands.overflow(\"hidden\"),\n overflowWrap: \"break-word\",\n wordBreak: \"break-word\",\n },\n shadowLeft: {\n boxShadow: \"2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n shadowRight: {\n boxShadow: \"-2px 0 5px -2px rgba(0,0,0,0.1)\",\n },\n})\n\nexport type DataTableRowProps<TData> = {\n /** The row instance from TanStack Table */\n row: Row<TData>\n /** Optional style (used for virtualized row heights) */\n style?: CSSProperties\n /** Additional class name */\n className?: string\n}\n\n/**\n * Renders a single table row with its cells.\n * Supports clickable rows when onRowClick is provided via DataTable context.\n */\nfunction DataTableRowInner<TData>(\n { row, style, className }: DataTableRowProps<TData>,\n ref: React.ForwardedRef<HTMLTableRowElement>\n) {\n const styles = useStyles()\n const {\n table,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow: tableCellOverflow = \"truncate\",\n showRowBorders,\n disableColumnResizing,\n } = useDataTable<TData>()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n const enableColumnResizing = !disableColumnResizing\n const isClickable = Boolean(onRowClick)\n\n const handleClick = (event: MouseEvent<HTMLTableRowElement>) => {\n if (!onRowClick) return\n\n // Check if click originated from an interactive element\n const target = event.target as HTMLElement\n const isInteractiveElement = INTERACTIVE_SELECTORS.some((selector) =>\n target.closest(selector)\n )\n\n if (isInteractiveElement) {\n return // Don't trigger row click for interactive elements\n }\n\n onRowClick(row, event)\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTableRowElement>) => {\n if (!onRowClick) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n // Check if key event originated from an interactive element\n const target = event.target as HTMLElement\n const isInteractiveElement = INTERACTIVE_SELECTORS.some((selector) =>\n target.closest(selector)\n )\n\n if (isInteractiveElement) {\n return // Let the interactive element handle the event\n }\n\n event.preventDefault()\n onRowClick(row, event as unknown as MouseEvent<HTMLTableRowElement>)\n }\n }\n\n return (\n <TableRow\n ref={ref}\n data-slot=\"data-table-row\"\n {...{ [SLOT_ATTR]: \"data-table-row\" }}\n data-fs-element=\"DataTable-Row\"\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n data-clickable={isClickable ? \"true\" : undefined}\n style={style}\n className={mergeClasses(\n showRowBorders !== false && styles.rowBorder,\n isClickable && (clickableRowClassName ?? styles.rowClickable),\n row.getIsSelected() && (selectedRowClassName ?? styles.rowSelected),\n className\n )}\n onClick={isClickable ? handleClick : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onKeyDown={isClickable ? handleKeyDown : undefined}\n >\n {row.getVisibleCells().map((cell) => {\n const overflow = getCellOverflow(cell, tableCellOverflow)\n const align = getCellAlign(cell)\n const isPinned = cell.column.getIsPinned()\n const pinnedOffset = isPinned\n ? getPinnedColumnOffset(cell.column, table)\n : undefined\n const isLastLeft = isLastLeftPinnedColumn(cell.column, table)\n const isFirstRight = isFirstRightPinnedColumn(cell.column, table)\n\n return (\n <TableCell\n key={cell.id}\n data-slot=\"data-table-cell\"\n {...{ [SLOT_ATTR]: \"data-table-cell\" }}\n data-fs-element=\"DataTable-Cell\"\n data-pinned={isPinned || undefined}\n align={align}\n style={{\n width:\n enableColumnResizing || isPinned\n ? cell.column.getSize()\n : undefined,\n left: isPinned === \"left\" ? `${pinnedOffset}px` : undefined,\n right: isPinned === \"right\" ? `${pinnedOffset}px` : undefined,\n }}\n className={mergeClasses(\n overflow === \"truncate\" && styles.cellTruncate,\n overflow === \"wrap\" && styles.cellWrap,\n isLastLeft && styles.shadowLeft,\n isFirstRight && styles.shadowRight\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n {/* Spacer cell - matches header spacer column */}\n {spacerWidth > 0 && (\n <TableCell\n data-spacer\n aria-hidden=\"true\"\n style={{ width: spacerWidth, padding: 0 }}\n />\n )}\n </TableRow>\n )\n}\n\nexport const DataTableRow = React.forwardRef(DataTableRowInner) as <TData>(\n props: DataTableRowProps<TData> & {\n ref?: React.Ref<HTMLTableRowElement>\n }\n) => React.ReactElement | null\n"],"names":["getCellOverflow","cell","tableDefault","columnMeta","getCellAlign","INTERACTIVE_SELECTORS","SLOT_ATTR","useStyles","makeZenithStyles","tokens.accentA3","tokens.grayA6","boxModel","shorthands","DataTableRowInner","row","style","className","ref","styles","table","onRowClick","clickableRowClassName","selectedRowClassName","tableCellOverflow","showRowBorders","disableColumnResizing","useDataTable","contentContext","useDataTableContent","spacerWidth","enableColumnResizing","isClickable","handleClick","event","target","selector","handleKeyDown","jsxs","TableRow","mergeClasses","overflow","align","isPinned","pinnedOffset","getPinnedColumnOffset","isLastLeft","isLastLeftPinnedColumn","isFirstRight","isFirstRightPinnedColumn","jsx","TableCell","DataTableRow","React"],"mappings":";;;;;;;;;;;AAwBA,SAASA,EACPC,GACAC,GACuB;AACvB,QAAMC,IAAaF,EAAK,OAAO,UAAU;AAEzC,UAAOE,KAAA,gBAAAA,EAAY,iBAAgBD;AACrC;AAKA,SAASE,EACPH,GACuB;AACvB,QAAME,IAAaF,EAAK,OAAO,UAAU;AAEzC,SAAOE,KAAA,gBAAAA,EAAY;AACrB;AAGA,MAAME,IAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,IAAIC,CAAS;AACf,GAEMC,IAAYC,EAAiB;AAAA,EACjC,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,MACR,iBAAiBC;AAAAA,IAAO;AAAA,EAC1B;AAAA,EAEF,aAAa;AAAA,IACX,iBAAiBA;AAAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1B,WAAW;AAAA,IACT,UAAU;AAAA,MACR,iBAAiB,mBAAmBC,CAAa,KAAKA,CAAa;AAAA,MACnE,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,IAAA;AAAA,IAEpB,qBAAqB;AAAA,MACnB,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAAA,EAEF,cAAc;AAAA,IACZ,GAAGC;AAAA,IACH,UAAU;AAAA,IACV,GAAGC,EAAW,SAAS,QAAQ;AAAA,IAC/B,cAAc;AAAA,IACd,YAAY;AAAA,EAAA;AAAA,EAEd,UAAU;AAAA,IACR,GAAGD;AAAA,IACH,UAAU;AAAA,IACV,GAAGC,EAAW,SAAS,QAAQ;AAAA,IAC/B,cAAc;AAAA,IACd,WAAW;AAAA,EAAA;AAAA,EAEb,YAAY;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,aAAa;AAAA,IACX,WAAW;AAAA,EAAA;AAEf,CAAC;AAeD,SAASC,EACP,EAAE,KAAAC,GAAK,OAAAC,GAAO,WAAAC,EAAA,GACdC,GACA;AACA,QAAMC,IAASX,EAAA,GACT;AAAA,IACJ,OAAAY;AAAA,IACA,YAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,cAAcC,IAAoB;AAAA,IAClC,gBAAAC;AAAA,IACA,uBAAAC;AAAA,EAAA,IACEC,EAAA,GACEC,IAAiBC,EAAA,GACjBC,KAAcF,KAAA,gBAAAA,EAAgB,gBAAe,GAE7CG,IAAuB,CAACL,GACxBM,IAAc,EAAQX,GAEtBY,IAAc,CAACC,MAA2C;AAC9D,QAAI,CAACb,EAAY;AAGjB,UAAMc,IAASD,EAAM;AAKrB,IAJ6B5B,EAAsB;AAAA,MAAK,CAAC8B,MACvDD,EAAO,QAAQC,CAAQ;AAAA,IAAA,KAOzBf,EAAWN,GAAKmB,CAAK;AAAA,EACvB,GAEMG,IAAgB,CAACH,MAA8C;AACnE,QAAKb,MAEDa,EAAM,QAAQ,WAAWA,EAAM,QAAQ,MAAK;AAE9C,YAAMC,IAASD,EAAM;AAKrB,UAJ6B5B,EAAsB;AAAA,QAAK,CAAC8B,MACvDD,EAAO,QAAQC,CAAQ;AAAA,MAAA;AAIvB;AAGF,MAAAF,EAAM,eAAA,GACNb,EAAWN,GAAKmB,CAAmD;AAAA,IACrE;AAAA,EACF;AAEA,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAArB;AAAA,MACA,aAAU;AAAA,MACJ,CAACX,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,cAAYQ,EAAI,cAAA,IAAkB,aAAa;AAAA,MAC/C,kBAAgBiB,IAAc,SAAS;AAAA,MACvC,OAAAhB;AAAA,MACA,WAAWwB;AAAA,QACTf,MAAmB,MAASN,EAAO;AAAA,QACnCa,MAAgBV,KAAyBH,EAAO;AAAA,QAChDJ,EAAI,cAAA,MAAoBQ,KAAwBJ,EAAO;AAAA,QACvDF;AAAA,MAAA;AAAA,MAEF,SAASe,IAAcC,IAAc;AAAA,MACrC,UAAUD,IAAc,IAAI;AAAA,MAC5B,WAAWA,IAAcK,IAAgB;AAAA,MAExC,UAAA;AAAA,QAAAtB,EAAI,gBAAA,EAAkB,IAAI,CAACb,MAAS;AACnC,gBAAMuC,IAAWxC,EAAgBC,GAAMsB,CAAiB,GAClDkB,IAAQrC,EAAaH,CAAI,GACzByC,IAAWzC,EAAK,OAAO,YAAA,GACvB0C,IAAeD,IACjBE,EAAsB3C,EAAK,QAAQkB,CAAK,IACxC,QACE0B,IAAaC,EAAuB7C,EAAK,QAAQkB,CAAK,GACtD4B,IAAeC,EAAyB/C,EAAK,QAAQkB,CAAK;AAEhE,iBACE,gBAAA8B;AAAA,YAACC;AAAA,YAAA;AAAA,cAEC,aAAU;AAAA,cACJ,CAAC5C,CAAS,GAAG;AAAA,cACnB,mBAAgB;AAAA,cAChB,eAAaoC,KAAY;AAAA,cACzB,OAAAD;AAAA,cACA,OAAO;AAAA,gBACL,OACEX,KAAwBY,IACpBzC,EAAK,OAAO,YACZ;AAAA,gBACN,MAAMyC,MAAa,SAAS,GAAGC,CAAY,OAAO;AAAA,gBAClD,OAAOD,MAAa,UAAU,GAAGC,CAAY,OAAO;AAAA,cAAA;AAAA,cAEtD,WAAWJ;AAAA,gBACTC,MAAa,cAActB,EAAO;AAAA,gBAClCsB,MAAa,UAAUtB,EAAO;AAAA,gBAC9B2B,KAAc3B,EAAO;AAAA,gBACrB6B,KAAgB7B,EAAO;AAAA,cAAA;AAAA,cAGxB,YAAWjB,EAAK,OAAO,UAAU,MAAMA,EAAK,YAAY;AAAA,YAAA;AAAA,YArBpDA,EAAK;AAAA,UAAA;AAAA,QAwBhB,CAAC;AAAA,QAEA4B,IAAc,KACb,gBAAAoB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,eAAW;AAAA,YACX,eAAY;AAAA,YACZ,OAAO,EAAE,OAAOrB,GAAa,SAAS,EAAA;AAAA,UAAE;AAAA,QAAA;AAAA,MAC1C;AAAA,IAAA;AAAA,EAAA;AAIR;AAEO,MAAMsB,KAAeC,EAAM,WAAWvC,CAAiB;"}