@12-apps/ui 6.39.8 → 6.39.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 (349) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
  2. package/dist/_internal/components/data-display/Alert/Alert.metrics.js +2 -2
  3. package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
  4. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  5. package/dist/_internal/components/data-display/Badge/Badge.styles.js +2 -2
  6. package/dist/_internal/components/data-display/Badge/BadgeContent.js +2 -2
  7. package/dist/_internal/components/data-display/Banner/Banner.js +2 -2
  8. package/dist/_internal/components/data-display/Banner/Banner.styles.js +2 -2
  9. package/dist/_internal/components/data-display/CardKit/CardKebab.js +2 -2
  10. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +2 -2
  11. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +2 -2
  12. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +2 -2
  13. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +2 -2
  14. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  15. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +2 -2
  16. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +2 -2
  17. package/dist/_internal/components/data-display/Chart/Chart.js +2 -2
  18. package/dist/_internal/components/data-display/Chart/SpecChart.js +2 -2
  19. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  20. package/dist/_internal/components/data-display/Chart/chart-internals.js +2 -2
  21. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  22. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +5 -5
  23. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +21 -21
  24. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +27 -27
  25. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +5 -5
  26. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
  27. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +6 -6
  28. package/dist/_internal/components/data-display/DataViews/base-card.js +5 -5
  29. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +7 -7
  30. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +6 -6
  31. package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
  32. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +1 -1
  33. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  34. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +5 -5
  35. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +2 -2
  36. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +1 -1
  37. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +8 -8
  38. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +5 -5
  39. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  40. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  41. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +1 -1
  42. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +7 -7
  43. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +2 -2
  44. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +20 -20
  45. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +5 -5
  46. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +7 -7
  47. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +5 -5
  48. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +6 -6
  49. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +1 -1
  50. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +1 -1
  51. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +1 -1
  52. package/dist/_internal/components/data-display/DataViews/data-views-search.js +1 -1
  53. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  54. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +11 -11
  55. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +8 -8
  56. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +10 -10
  57. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  58. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +5 -5
  59. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  60. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +5 -5
  61. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +1 -1
  62. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +1 -1
  63. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +2 -2
  64. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +1 -1
  65. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +1 -1
  66. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +1 -1
  67. package/dist/_internal/components/data-display/Progress/Progress.js +5 -5
  68. package/dist/_internal/components/data-display/Progress/Progress.metrics.js +3 -3
  69. package/dist/_internal/components/data-display/Progress/Progress.styles.js +4 -4
  70. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +2 -2
  71. package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
  72. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +2 -2
  73. package/dist/_internal/components/data-display/Table/Table.hooks.js +1 -1
  74. package/dist/_internal/components/data-display/Table/Table.js +5 -4
  75. package/dist/_internal/components/data-display/Table/Table.styles.js +1 -1
  76. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -1
  77. package/dist/_internal/components/data-display/Table/TableParts.js +2 -1
  78. package/dist/_internal/components/data-display/index.js +12 -12
  79. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +2 -2
  80. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +2 -2
  81. package/dist/_internal/components/feedback/index.js +2 -2
  82. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +1 -1
  83. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +1 -1
  84. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +1 -1
  85. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +1 -1
  86. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +1 -1
  87. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +1 -1
  88. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +1 -1
  89. package/dist/_internal/components/form/Button/Button.js +2 -2
  90. package/dist/_internal/components/form/Button/Button.styles.js +2 -2
  91. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +1 -1
  92. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +1 -1
  93. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +1 -1
  94. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +1 -1
  95. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +1 -1
  96. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +1 -1
  97. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +1 -1
  98. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +1 -1
  99. package/dist/_internal/components/form/CepField/CepField.js +1 -1
  100. package/dist/_internal/components/form/Command/Command.js +2 -2
  101. package/dist/_internal/components/form/Command/Command.styles.js +2 -2
  102. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +1 -1
  103. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +1 -1
  104. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +1 -1
  105. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +1 -1
  106. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +1 -1
  107. package/dist/_internal/components/form/Input/Input.js +1 -1
  108. package/dist/_internal/components/form/Input/Input.styles.js +1 -1
  109. package/dist/_internal/components/form/InputOTP/InputOTP.js +1 -1
  110. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +1 -1
  111. package/dist/_internal/components/form/Label/Label.js +2 -2
  112. package/dist/_internal/components/form/Label/Label.styles.js +2 -2
  113. package/dist/_internal/components/form/Menubar/Menubar.item.js +2 -2
  114. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  115. package/dist/_internal/components/form/Menubar/Menubar.styles.js +2 -2
  116. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
  117. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +1 -1
  118. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +1 -1
  119. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +1 -1
  120. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +1 -1
  121. package/dist/_internal/components/form/Select/Select.js +1 -1
  122. package/dist/_internal/components/form/Switch/Switch.js +2 -2
  123. package/dist/_internal/components/form/Switch/Switch.parts.js +2 -2
  124. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  125. package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
  126. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +1 -1
  127. package/dist/_internal/components/form/Toggle/Toggle.js +1 -1
  128. package/dist/_internal/components/form/Toggle/Toggle.styles.js +1 -1
  129. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +1 -1
  130. package/dist/_internal/components/form/index.js +3 -3
  131. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +1 -1
  132. package/dist/_internal/components/form/total-form/Fields/CepField.js +1 -1
  133. package/dist/_internal/components/form/total-form/Fields/SelectField.js +1 -1
  134. package/dist/_internal/components/form/total-form/Fields/TextField.js +1 -1
  135. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +1 -1
  136. package/dist/_internal/components/form/total-form/Fields/index.js +1 -1
  137. package/dist/_internal/components/form/total-form/SubmitButton.js +2 -2
  138. package/dist/_internal/components/index.js +16 -16
  139. package/dist/_internal/components/layout/Box/Box.js +5 -5
  140. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
  141. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
  142. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
  143. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +1 -1
  144. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
  145. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
  146. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
  147. package/dist/_internal/components/layout/Stack/Stack.js +6 -6
  148. package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
  149. package/dist/_internal/components/layout/index.js +1 -1
  150. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +2 -2
  151. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  152. package/dist/_internal/components/navigation/Pagination/Pagination.js +1 -1
  153. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +1 -1
  154. package/dist/_internal/components/navigation/Tabs/Tabs.js +1 -1
  155. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +1 -1
  156. package/dist/_internal/components/navigation/index.js +2 -2
  157. package/dist/_internal/components/typography/Heading/Heading.js +5 -5
  158. package/dist/_internal/components/typography/Heading/Heading.metrics.js +3 -3
  159. package/dist/_internal/components/typography/Heading/Heading.styles.js +4 -4
  160. package/dist/_internal/components/typography/Text/Text.js +4 -4
  161. package/dist/_internal/components/typography/Text/Text.metrics.js +3 -3
  162. package/dist/_internal/components/typography/index.js +7 -7
  163. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  164. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +2 -2
  165. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +2 -2
  166. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +2 -2
  167. package/dist/_internal/components/utility/index.js +2 -2
  168. package/dist/_internal/icons/Icon.js +5 -5
  169. package/dist/_internal/provider/UiProvider.js +4 -4
  170. package/dist/_internal/provider/mui-bridge.js +3 -3
  171. package/dist/_internal/provider/use-ui-theme.js +4 -4
  172. package/dist/_internal/social-login-button/social-login-button.js +8 -8
  173. package/dist/_internal/tokens/field-height.js +1 -1
  174. package/dist/_internal/tokens/theme.js +2 -2
  175. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  176. package/dist/charts.js +2 -2
  177. package/dist/{chunk-OAEYCKBN.js → chunk-2K7WPHI3.js} +2 -2
  178. package/dist/{chunk-7RRXLCOO.js → chunk-2KWYNFVE.js} +4 -4
  179. package/dist/{chunk-JBI7ITL2.js → chunk-3BNQDOHC.js} +2 -2
  180. package/dist/{chunk-YCCY77W5.js → chunk-3IF3I3FI.js} +2 -2
  181. package/dist/{chunk-3KREF4ZF.js → chunk-3PQ5MZMJ.js} +2 -2
  182. package/dist/{chunk-L7NQCLFU.js → chunk-3RHZBO7L.js} +2 -2
  183. package/dist/{chunk-A4OCNJWW.js → chunk-3UABIEP3.js} +2 -2
  184. package/dist/{chunk-XIG3DXXX.js → chunk-5L7N5HER.js} +2 -2
  185. package/dist/{chunk-6WBKOM5K.js → chunk-7DK6YVJU.js} +2 -2
  186. package/dist/{chunk-ASYR22BJ.js → chunk-7XGHJD75.js} +3 -3
  187. package/dist/{chunk-OB56SZGL.js → chunk-B7CNP5HW.js} +2 -2
  188. package/dist/{chunk-PE4ZW3IA.js → chunk-BLW6KLDR.js} +4 -4
  189. package/dist/{chunk-POV2KL2P.js → chunk-CCK7FB2V.js} +16 -2
  190. package/dist/chunk-CCK7FB2V.js.map +1 -0
  191. package/dist/{chunk-QKMJUOVH.js → chunk-CRG24BGI.js} +2 -2
  192. package/dist/{chunk-LKMMJKXU.js → chunk-CYZZHWNK.js} +2 -2
  193. package/dist/{chunk-DUNG7D4B.js → chunk-DSF4VT7L.js} +1 -1
  194. package/dist/{chunk-YOJASBHJ.js → chunk-DYNJQ3HJ.js} +3 -3
  195. package/dist/{chunk-CXMVNYBY.js → chunk-GEB4WSZH.js} +3 -3
  196. package/dist/{chunk-RIF6L54B.js → chunk-H224XFFD.js} +2 -2
  197. package/dist/{chunk-3RMDIO4G.js → chunk-I5T5PQQW.js} +2 -2
  198. package/dist/{chunk-IJFAF3A7.js → chunk-IWEUSZY3.js} +3 -3
  199. package/dist/{chunk-SZ3YFVO5.js → chunk-JGJFL3PF.js} +4 -4
  200. package/dist/{chunk-XEYLYUDM.js → chunk-JH5BKA3Y.js} +2 -2
  201. package/dist/{chunk-U4O47P6S.js → chunk-JQ3D5QP6.js} +2 -2
  202. package/dist/{chunk-5HQNHZ6Z.js → chunk-LH7KMYHC.js} +3 -4
  203. package/dist/chunk-LH7KMYHC.js.map +1 -0
  204. package/dist/{chunk-X4ZRPE37.js → chunk-MBHWVRV5.js} +2 -2
  205. package/dist/{chunk-JQWAANGN.js → chunk-OOCREE37.js} +2 -2
  206. package/dist/{chunk-R2XVTUVR.js → chunk-OQRG34VG.js} +2 -2
  207. package/dist/{chunk-RUEKY3VR.js → chunk-P52LYD6S.js} +2 -2
  208. package/dist/{chunk-CTKQCKRD.js → chunk-PK6TRXV4.js} +2 -2
  209. package/dist/{chunk-RGT6DM5W.js → chunk-PX6TWS5T.js} +68 -42
  210. package/dist/chunk-PX6TWS5T.js.map +1 -0
  211. package/dist/{chunk-3OBC6BOV.js → chunk-QFTBXHOY.js} +2 -2
  212. package/dist/{chunk-QTNHAX2Z.js → chunk-QS2DCLG6.js} +3 -3
  213. package/dist/{chunk-MYWROMGO.js → chunk-QU3JX53V.js} +3 -3
  214. package/dist/{chunk-5JSRM7WC.js → chunk-RB3X6CEE.js} +2 -2
  215. package/dist/{chunk-DW6F7354.js → chunk-S36NC22G.js} +2 -2
  216. package/dist/{chunk-6N4AA2Y7.js → chunk-SNYJSACF.js} +2 -2
  217. package/dist/{chunk-BOGTTXPA.js → chunk-TT3HZRU6.js} +9 -8
  218. package/dist/chunk-TT3HZRU6.js.map +1 -0
  219. package/dist/{chunk-TFMDZQK4.js → chunk-TTZPO345.js} +4 -4
  220. package/dist/{chunk-UITQ7KMK.js → chunk-TYNK662L.js} +3 -3
  221. package/dist/{chunk-YBH4SPMM.js → chunk-URHX4FAQ.js} +2 -2
  222. package/dist/{chunk-4CXCOR6F.js → chunk-V2UZQS2K.js} +2 -2
  223. package/dist/{chunk-VIRYHNEM.js → chunk-WY5PBZ7Q.js} +2 -2
  224. package/dist/{chunk-KAIUDBHM.js → chunk-WYUBTRRV.js} +6 -6
  225. package/dist/{chunk-ISFFETTG.js → chunk-XG7NTGUH.js} +3 -3
  226. package/dist/{chunk-GWEENWIS.js → chunk-Y2HPRRVP.js} +2 -2
  227. package/dist/{chunk-5CQ5HYJW.js → chunk-YMG4CXGI.js} +3 -3
  228. package/dist/{chunk-UGGJ3KDT.js → chunk-YTINPQKU.js} +2 -2
  229. package/dist/{chunk-U3PPLAFB.js → chunk-ZN6YATOG.js} +2 -2
  230. package/dist/{chunk-WHQKH57H.js → chunk-ZXIUIIUE.js} +2 -2
  231. package/dist/data-display/Alert.js +2 -2
  232. package/dist/data-display/Badge.js +2 -2
  233. package/dist/data-display/Banner.js +2 -2
  234. package/dist/data-display/CardKit.js +2 -2
  235. package/dist/data-display/Carousel.js +2 -2
  236. package/dist/data-display/Chart.js +2 -2
  237. package/dist/data-display/DataViews.js +32 -32
  238. package/dist/data-display/DescriptionItem.js +5 -5
  239. package/dist/data-display/FleetMap.js +2 -2
  240. package/dist/data-display/MapPreview.js +1 -1
  241. package/dist/data-display/Progress.js +5 -5
  242. package/dist/data-display/Sheet.js +2 -2
  243. package/dist/data-display/Table.js +5 -4
  244. package/dist/feedback/ConfirmAction.js +2 -2
  245. package/dist/feedback/NotificationStatusNotice.js +2 -2
  246. package/dist/form/AddressAutocomplete.js +1 -1
  247. package/dist/form/Autocomplete.js +1 -1
  248. package/dist/form/Button.js +2 -2
  249. package/dist/form/CategorySelect.js +1 -1
  250. package/dist/form/CepField.js +1 -1
  251. package/dist/form/Command.js +2 -2
  252. package/dist/form/CreatableSelect.js +1 -1
  253. package/dist/form/DateRangePicker.js +1 -1
  254. package/dist/form/Input.js +1 -1
  255. package/dist/form/InputOTP.js +1 -1
  256. package/dist/form/Label.js +2 -2
  257. package/dist/form/Menubar.js +2 -2
  258. package/dist/form/PhoneInput.js +1 -1
  259. package/dist/form/RadioGroup.js +1 -1
  260. package/dist/form/Select.js +1 -1
  261. package/dist/form/Switch.js +2 -2
  262. package/dist/form/Textarea.js +2 -2
  263. package/dist/form/Toggle.js +1 -1
  264. package/dist/form/ToggleGroup.js +1 -1
  265. package/dist/form/total-form.js +2 -2
  266. package/dist/icons.js +5 -5
  267. package/dist/layout/Box.js +5 -5
  268. package/dist/layout/ContentToolbar.js +1 -1
  269. package/dist/layout/Stack.js +6 -6
  270. package/dist/layout/TableFilter.js +1 -1
  271. package/dist/navigation/AppHeader.js +2 -2
  272. package/dist/navigation/Pagination.js +1 -1
  273. package/dist/navigation/Tabs.js +1 -1
  274. package/dist/provider.js +5 -5
  275. package/dist/social-login-button.js +8 -8
  276. package/dist/tokens.js +4 -4
  277. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  278. package/dist/types/components/data-display/Table/Table.hooks.d.ts +3 -2
  279. package/dist/types/components/data-display/Table/Table.hooks.d.ts.map +1 -1
  280. package/dist/types/components/data-display/Table/Table.styles.d.ts +3 -1
  281. package/dist/types/components/data-display/Table/Table.styles.d.ts.map +1 -1
  282. package/dist/types/components/data-display/Table/Table.types.d.ts +6 -4
  283. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  284. package/dist/types/components/data-display/Table/TableParts.d.ts +2 -3
  285. package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
  286. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts +6 -2
  287. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts.map +1 -1
  288. package/dist/typography/Heading.js +5 -5
  289. package/dist/typography/Text.js +4 -4
  290. package/dist/user-avatar.js +5 -5
  291. package/dist/utility/WorkflowStep.js +2 -2
  292. package/package.json +1 -1
  293. package/src/components/data-display/Table/Table.hooks.ts +5 -4
  294. package/src/components/data-display/Table/Table.md +6 -0
  295. package/src/components/data-display/Table/Table.styles.ts +28 -1
  296. package/src/components/data-display/Table/Table.tsx +6 -4
  297. package/src/components/data-display/Table/Table.types.ts +6 -4
  298. package/src/components/data-display/Table/TableParts.hooks.tsx +23 -19
  299. package/src/components/data-display/Table/TableParts.tsx +112 -49
  300. package/dist/chunk-5HQNHZ6Z.js.map +0 -1
  301. package/dist/chunk-BOGTTXPA.js.map +0 -1
  302. package/dist/chunk-POV2KL2P.js.map +0 -1
  303. package/dist/chunk-RGT6DM5W.js.map +0 -1
  304. /package/dist/{chunk-OAEYCKBN.js.map → chunk-2K7WPHI3.js.map} +0 -0
  305. /package/dist/{chunk-7RRXLCOO.js.map → chunk-2KWYNFVE.js.map} +0 -0
  306. /package/dist/{chunk-JBI7ITL2.js.map → chunk-3BNQDOHC.js.map} +0 -0
  307. /package/dist/{chunk-YCCY77W5.js.map → chunk-3IF3I3FI.js.map} +0 -0
  308. /package/dist/{chunk-3KREF4ZF.js.map → chunk-3PQ5MZMJ.js.map} +0 -0
  309. /package/dist/{chunk-L7NQCLFU.js.map → chunk-3RHZBO7L.js.map} +0 -0
  310. /package/dist/{chunk-A4OCNJWW.js.map → chunk-3UABIEP3.js.map} +0 -0
  311. /package/dist/{chunk-XIG3DXXX.js.map → chunk-5L7N5HER.js.map} +0 -0
  312. /package/dist/{chunk-6WBKOM5K.js.map → chunk-7DK6YVJU.js.map} +0 -0
  313. /package/dist/{chunk-ASYR22BJ.js.map → chunk-7XGHJD75.js.map} +0 -0
  314. /package/dist/{chunk-OB56SZGL.js.map → chunk-B7CNP5HW.js.map} +0 -0
  315. /package/dist/{chunk-PE4ZW3IA.js.map → chunk-BLW6KLDR.js.map} +0 -0
  316. /package/dist/{chunk-QKMJUOVH.js.map → chunk-CRG24BGI.js.map} +0 -0
  317. /package/dist/{chunk-LKMMJKXU.js.map → chunk-CYZZHWNK.js.map} +0 -0
  318. /package/dist/{chunk-DUNG7D4B.js.map → chunk-DSF4VT7L.js.map} +0 -0
  319. /package/dist/{chunk-YOJASBHJ.js.map → chunk-DYNJQ3HJ.js.map} +0 -0
  320. /package/dist/{chunk-CXMVNYBY.js.map → chunk-GEB4WSZH.js.map} +0 -0
  321. /package/dist/{chunk-RIF6L54B.js.map → chunk-H224XFFD.js.map} +0 -0
  322. /package/dist/{chunk-3RMDIO4G.js.map → chunk-I5T5PQQW.js.map} +0 -0
  323. /package/dist/{chunk-IJFAF3A7.js.map → chunk-IWEUSZY3.js.map} +0 -0
  324. /package/dist/{chunk-SZ3YFVO5.js.map → chunk-JGJFL3PF.js.map} +0 -0
  325. /package/dist/{chunk-XEYLYUDM.js.map → chunk-JH5BKA3Y.js.map} +0 -0
  326. /package/dist/{chunk-U4O47P6S.js.map → chunk-JQ3D5QP6.js.map} +0 -0
  327. /package/dist/{chunk-X4ZRPE37.js.map → chunk-MBHWVRV5.js.map} +0 -0
  328. /package/dist/{chunk-JQWAANGN.js.map → chunk-OOCREE37.js.map} +0 -0
  329. /package/dist/{chunk-R2XVTUVR.js.map → chunk-OQRG34VG.js.map} +0 -0
  330. /package/dist/{chunk-RUEKY3VR.js.map → chunk-P52LYD6S.js.map} +0 -0
  331. /package/dist/{chunk-CTKQCKRD.js.map → chunk-PK6TRXV4.js.map} +0 -0
  332. /package/dist/{chunk-3OBC6BOV.js.map → chunk-QFTBXHOY.js.map} +0 -0
  333. /package/dist/{chunk-QTNHAX2Z.js.map → chunk-QS2DCLG6.js.map} +0 -0
  334. /package/dist/{chunk-MYWROMGO.js.map → chunk-QU3JX53V.js.map} +0 -0
  335. /package/dist/{chunk-5JSRM7WC.js.map → chunk-RB3X6CEE.js.map} +0 -0
  336. /package/dist/{chunk-DW6F7354.js.map → chunk-S36NC22G.js.map} +0 -0
  337. /package/dist/{chunk-6N4AA2Y7.js.map → chunk-SNYJSACF.js.map} +0 -0
  338. /package/dist/{chunk-TFMDZQK4.js.map → chunk-TTZPO345.js.map} +0 -0
  339. /package/dist/{chunk-UITQ7KMK.js.map → chunk-TYNK662L.js.map} +0 -0
  340. /package/dist/{chunk-YBH4SPMM.js.map → chunk-URHX4FAQ.js.map} +0 -0
  341. /package/dist/{chunk-4CXCOR6F.js.map → chunk-V2UZQS2K.js.map} +0 -0
  342. /package/dist/{chunk-VIRYHNEM.js.map → chunk-WY5PBZ7Q.js.map} +0 -0
  343. /package/dist/{chunk-KAIUDBHM.js.map → chunk-WYUBTRRV.js.map} +0 -0
  344. /package/dist/{chunk-ISFFETTG.js.map → chunk-XG7NTGUH.js.map} +0 -0
  345. /package/dist/{chunk-GWEENWIS.js.map → chunk-Y2HPRRVP.js.map} +0 -0
  346. /package/dist/{chunk-5CQ5HYJW.js.map → chunk-YMG4CXGI.js.map} +0 -0
  347. /package/dist/{chunk-UGGJ3KDT.js.map → chunk-YTINPQKU.js.map} +0 -0
  348. /package/dist/{chunk-U3PPLAFB.js.map → chunk-ZN6YATOG.js.map} +0 -0
  349. /package/dist/{chunk-WHQKH57H.js.map → chunk-ZXIUIIUE.js.map} +0 -0
@@ -94,6 +94,18 @@ var TABLE_VARIANTS = {
94
94
  })
95
95
  };
96
96
  var tableVariantStyles = (args, customVariant) => customVariant ? TABLE_VARIANTS[customVariant]?.(args) ?? {} : {};
97
+ var virtualisedStyles = (theme) => ({
98
+ tableLayout: "fixed",
99
+ "& .MuiTableBody-root .MuiTableCell-root": {
100
+ paddingTop: 0,
101
+ paddingBottom: 0,
102
+ height: "auto"
103
+ },
104
+ "& .MuiTableHead-root .MuiTableCell-paddingCheckbox, & .MuiTableBody-root .MuiTableCell-paddingCheckbox": {
105
+ paddingLeft: rem(theme, 4),
106
+ paddingRight: 0
107
+ }
108
+ });
97
109
  var stickyHeaderStyles = (theme, densityConfig) => ({
98
110
  "& .MuiTableHead-root": {
99
111
  position: "sticky",
@@ -165,7 +177,8 @@ var tableStyles = ({
165
177
  hoverable,
166
178
  density,
167
179
  stickyHeader,
168
- stripeColor = "neutral"
180
+ stripeColor = "neutral",
181
+ virtualised
169
182
  }) => {
170
183
  const densityConfig = getDensityConfig(theme, density);
171
184
  return {
@@ -184,6 +197,7 @@ var tableStyles = ({
184
197
  ...stickyHeader ? stickyHeaderStyles(theme, densityConfig) : {},
185
198
  ...hoverable ? hoverableRowStyles(theme) : {},
186
199
  ...emphasisStyles(theme, glow, pulse),
200
+ ...virtualised ? virtualisedStyles(theme) : {},
187
201
  // Variant styles
188
202
  // Hoverable rows
189
203
  // Selection styles
@@ -202,4 +216,4 @@ var tableStyles = ({
202
216
  export {
203
217
  tableStyles
204
218
  };
205
- //# sourceMappingURL=chunk-POV2KL2P.js.map
219
+ //# sourceMappingURL=chunk-CCK7FB2V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Table/Table.styles.ts"],"sourcesContent":["import { alpha, keyframes } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type { TableDensity, TableStripeColor } from './Table.types';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst pulseAnimation = (theme: Theme) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 1;\n }\n 70% {\n box-shadow: 0 0 0 ${rem(theme, 10)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n// Density configurations. The row height stays design px (`…Px`) and goes\n// through `rem` where the cell is drawn.\nconst getDensityConfig = (theme: Theme, density: TableDensity = 'normal') => {\n const configs = {\n compact: {\n rowHeightPx: 36,\n cellPadding: rems(theme, 6, 12),\n fontSize: rem(theme, 13),\n headerPadding: rems(theme, 8, 12) },\n normal: {\n rowHeightPx: 52,\n cellPadding: rems(theme, 12, 16),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 16, 16) },\n comfortable: {\n rowHeightPx: 68,\n cellPadding: rems(theme, 18, 24),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 20, 24) } };\n return configs[density];\n};\n\nconst getStripeColorFromTheme = (theme: { palette: { primary: { main: string }; secondary: { main: string }; info: { main: string }; success: { main: string }; warning: { main: string }; error: { main: string }; action: { hover: string } } }, stripeColor: TableStripeColor = 'neutral') => {\n const colorMap: Record<TableStripeColor, string> = {\n primary: theme.palette.primary.main,\n secondary: theme.palette.secondary.main,\n info: theme.palette.info.main,\n success: theme.palette.success.main,\n warning: theme.palette.warning.main,\n danger: theme.palette.error.main,\n neutral: theme.palette.action.hover };\n return colorMap[stripeColor];\n};\n\n/**\n * The zebra stripe for one body row.\n *\n * `neutral` — the default — resolves to `palette.action.hover`, which ALREADY\n * carries its subtlety in its own alpha (`rgba(0,0,0,0.04)` in the light\n * theme). MUI's `alpha()` REPLACES that channel rather than multiplying it, so\n * re-alpha-ing it at 0.5 amplified the tint 12.5× into `rgba(0,0,0,0.5)` —\n * solid #808080 on a white card, which reads as a selected or errored row\n * rather than as a stripe (FUT-755). It is used as-is instead.\n *\n * The named colours are opaque `*.main` values with no alpha of their own, so\n * they still need one.\n */\nconst stripeRowColor = (\n theme: Parameters<typeof getStripeColorFromTheme>[0],\n stripeColor: TableStripeColor = 'neutral',\n): string => {\n const color = getStripeColorFromTheme(theme, stripeColor);\n return stripeColor === 'neutral' ? color : alpha(color, 0.15);\n};\n\n// One variant applies at a time, so a lookup replaces the mutually exclusive\n// spreads.\nconst TABLE_VARIANTS: Record<string, (args: VariantArgs) => CSSObject> = {\n default: ({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableHead-root': {\n backgroundColor: alpha(theme.palette.primary.main, 0.1) } }),\n striped: ({ theme, stripeColor }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableBody-root .MuiTableRow-root:nth-of-type(even)': {\n backgroundColor: stripeRowColor(theme, stripeColor) } }),\n glass: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}` }),\n minimal: ({ theme }) => ({\n backgroundColor: 'transparent',\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.1)}` } }),\n gradient: ({ theme }) => ({\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.05)}, ${alpha(theme.palette.secondary.main, 0.05)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n '& .MuiTableHead-root': {\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.15)}, ${alpha(theme.palette.secondary.main, 0.15)})` },\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.15)}` } }) };\n\ntype VariantArgs = {\n theme: Theme;\n densityConfig: ReturnType<typeof getDensityConfig>;\n stripeColor?: TableStripeColor;\n};\n\nconst tableVariantStyles = (args: VariantArgs, customVariant?: string): CSSObject =>\n customVariant ? (TABLE_VARIANTS[customVariant]?.(args) ?? {}) : {};\n\n/**\n * A virtualised table (FUT-2668). Fixed layout takes the column widths from the\n * header — a column's declared `width`, the rest sharing what is left — so they\n * hold still while different rows mount (it ignores a column's `minWidth`). A\n * body cell drops its vertical padding and the density's height: the pitch is\n * `rowHeight`, and the cell's content wrapper is exactly that tall.\n *\n * The checkbox column is MUI's 48 wide, and fixed layout holds it there. The\n * density's side padding would leave its checkbox 16 of that and clip it in the\n * body, so it keeps MUI's own checkbox padding (4 on the left, none on the\n * right), in the header and the body alike. After the sticky header's rule,\n * which it would otherwise lose to.\n */\nconst virtualisedStyles = (theme: Theme): CSSObject => ({\n tableLayout: 'fixed',\n '& .MuiTableBody-root .MuiTableCell-root': {\n paddingTop: 0,\n paddingBottom: 0,\n height: 'auto' },\n '& .MuiTableHead-root .MuiTableCell-paddingCheckbox, & .MuiTableBody-root .MuiTableCell-paddingCheckbox': {\n paddingLeft: rem(theme, 4),\n paddingRight: 0 } });\n\n// Sticky headers and row hover are independent of the variant.\nconst stickyHeaderStyles = (\n theme: Theme,\n densityConfig: ReturnType<typeof getDensityConfig>,\n): CSSObject => ({\n '& .MuiTableHead-root': {\n position: 'sticky',\n top: 0,\n zIndex: 100,\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableCell-root': {\n borderBottom: `${rem(theme, 2)} solid ${theme.palette.divider}`,\n fontWeight: 600,\n padding: densityConfig.headerPadding } } });\n\nconst hoverableRowStyles = (theme: Theme): CSSObject => ({\n '& .MuiTableBody-root .MuiTableRow-root:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n cursor: 'pointer',\n transition: 'background-color 0.15s ease-in-out' } });\n\n// glow and pulse combine into three distinct looks, spelled out rather than\n// layered — the glow-only shadow differs from the one used when both are on.\nconst emphasisStyles = (theme: Theme, glow?: boolean, pulse?: boolean): CSSObject => {\n if (glow && pulse) return ({\n position: 'relative',\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n if (glow) return ({\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)' });\n if (pulse) return ({\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n\n return {};\n};\n\n// The table's own styling, lifted out so the styled() callback just forwards\n// its props.\nexport const tableStyles = ({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor = 'neutral',\n virtualised }: {\n theme: Theme;\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n /** The body is a virtual window, drawn at `rowHeight`. */\n virtualised?: boolean;\n}): CSSObject => {\n const densityConfig = getDensityConfig(theme, density);\n \n return {\n borderRadius: theme.spacing(1),\n overflow: 'hidden',\n transition: 'all 0.3s ease',\n position: 'relative',\n\n // Density styles\n '& .MuiTableCell-root': {\n padding: densityConfig.cellPadding,\n fontSize: densityConfig.fontSize,\n height: rem(theme, densityConfig.rowHeightPx) },\n\n // Sticky header\n ...tableVariantStyles({ theme, densityConfig, stripeColor }, customVariant),\n ...(stickyHeader ? stickyHeaderStyles(theme, densityConfig) : {}),\n ...(hoverable ? hoverableRowStyles(theme) : {}),\n ...emphasisStyles(theme, glow, pulse),\n ...(virtualised ? virtualisedStyles(theme) : {}),\n\n\n // Variant styles\n\n\n\n\n\n\n\n\n\n\n // Hoverable rows\n\n\n // Selection styles\n '& .MuiTableRow-root.selected': {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.16) } },\n\n // Glow effect\n\n\n // Pulse animation\n\n\n // Both glow and pulse\n\n };\n}\n"],"mappings":"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","names":[]}
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-RTSK5OZT.js";
10
10
  import {
11
11
  useUiTheme
12
- } from "./chunk-A4OCNJWW.js";
12
+ } from "./chunk-3UABIEP3.js";
13
13
  import {
14
14
  resolveTestId
15
15
  } from "./chunk-TYJR4GOF.js";
@@ -48,4 +48,4 @@ Icon.displayName = "Icon";
48
48
  export {
49
49
  Icon
50
50
  };
51
- //# sourceMappingURL=chunk-QKMJUOVH.js.map
51
+ //# sourceMappingURL=chunk-CRG24BGI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FONT_WEIGHTS
3
- } from "./chunk-PE4ZW3IA.js";
3
+ } from "./chunk-BLW6KLDR.js";
4
4
  import {
5
5
  HEADING_SCALE
6
6
  } from "./chunk-FZXKH2ZT.js";
@@ -57,4 +57,4 @@ export {
57
57
  headingGradient,
58
58
  headingGradientStops
59
59
  };
60
- //# sourceMappingURL=chunk-LKMMJKXU.js.map
60
+ //# sourceMappingURL=chunk-CYZZHWNK.js.map
@@ -225,4 +225,4 @@ Textarea.displayName = "Textarea";
225
225
  export {
226
226
  Textarea
227
227
  };
228
- //# sourceMappingURL=chunk-DUNG7D4B.js.map
228
+ //# sourceMappingURL=chunk-DSF4VT7L.js.map
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-O4AHF45C.js";
4
4
  import {
5
5
  DescriptionItem
6
- } from "./chunk-VIRYHNEM.js";
6
+ } from "./chunk-WY5PBZ7Q.js";
7
7
  import {
8
8
  default as default2
9
9
  } from "./chunk-6DPAWXZ3.js";
10
10
  import {
11
11
  Text
12
- } from "./chunk-YBH4SPMM.js";
12
+ } from "./chunk-URHX4FAQ.js";
13
13
  import {
14
14
  rem,
15
15
  sxRem
@@ -226,4 +226,4 @@ export {
226
226
  ListCardActions,
227
227
  ListCardTail
228
228
  };
229
- //# sourceMappingURL=chunk-YOJASBHJ.js.map
229
+ //# sourceMappingURL=chunk-DYNJQ3HJ.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-XZTRZ3HO.js";
4
4
  import {
5
5
  muiThemeOptionsFrom
6
- } from "./chunk-XEYLYUDM.js";
6
+ } from "./chunk-JH5BKA3Y.js";
7
7
  import {
8
8
  createUiTheme
9
- } from "./chunk-PE4ZW3IA.js";
9
+ } from "./chunk-BLW6KLDR.js";
10
10
 
11
11
  // src/provider/UiProvider.tsx
12
12
  import { createTheme, ThemeProvider } from "@mui/material/styles/index.js";
@@ -22,4 +22,4 @@ UiProvider.displayName = "UiProvider";
22
22
  export {
23
23
  UiProvider
24
24
  };
25
- //# sourceMappingURL=chunk-CXMVNYBY.js.map
25
+ //# sourceMappingURL=chunk-GEB4WSZH.js.map
@@ -7,7 +7,7 @@ import {
7
7
  GLOW_BRIGHTNESS,
8
8
  PROGRESS_SIZES,
9
9
  PULSE
10
- } from "./chunk-RUEKY3VR.js";
10
+ } from "./chunk-P52LYD6S.js";
11
11
  import {
12
12
  softNeutral
13
13
  } from "./chunk-FQ6UW7IY.js";
@@ -97,4 +97,4 @@ export {
97
97
  barEmphasisStyles,
98
98
  circularEmphasisStyles
99
99
  };
100
- //# sourceMappingURL=chunk-RIF6L54B.js.map
100
+ //# sourceMappingURL=chunk-H224XFFD.js.map
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk-WN5PNP6F.js";
27
27
  import {
28
28
  Text
29
- } from "./chunk-YBH4SPMM.js";
29
+ } from "./chunk-URHX4FAQ.js";
30
30
  import {
31
31
  rem,
32
32
  sxRem
@@ -268,4 +268,4 @@ function BaseCard(props) {
268
268
  export {
269
269
  BaseCard
270
270
  };
271
- //# sourceMappingURL=chunk-3RMDIO4G.js.map
271
+ //# sourceMappingURL=chunk-I5T5PQQW.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  headingSx
3
- } from "./chunk-5JSRM7WC.js";
3
+ } from "./chunk-RB3X6CEE.js";
4
4
  import {
5
5
  HEADING_DEFAULT_COLOR,
6
6
  HEADING_DEFAULT_LEVEL,
7
7
  HEADING_DEFAULT_WEIGHT,
8
8
  HEADING_RANK,
9
9
  stepOf
10
- } from "./chunk-LKMMJKXU.js";
10
+ } from "./chunk-CYZZHWNK.js";
11
11
  import {
12
12
  resolveTestId,
13
13
  withoutTestIdProps
@@ -61,4 +61,4 @@ Heading.displayName = "Heading";
61
61
  export {
62
62
  Heading
63
63
  };
64
- //# sourceMappingURL=chunk-IJFAF3A7.js.map
64
+ //# sourceMappingURL=chunk-IWEUSZY3.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  DeleteViewDialog
3
- } from "./chunk-GWEENWIS.js";
3
+ } from "./chunk-Y2HPRRVP.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-U4O47P6S.js";
6
+ } from "./chunk-JQ3D5QP6.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
10
10
  import {
11
11
  ViewDialogs,
12
12
  ViewMutationErrorAlert
13
- } from "./chunk-QTNHAX2Z.js";
13
+ } from "./chunk-QS2DCLG6.js";
14
14
  import {
15
15
  useSavedViewsController
16
16
  } from "./chunk-HR7YTBR7.js";
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
178
178
  export {
179
179
  DataViewsTableBase
180
180
  };
181
- //# sourceMappingURL=chunk-SZ3YFVO5.js.map
181
+ //# sourceMappingURL=chunk-JGJFL3PF.js.map
@@ -15,7 +15,7 @@ import {
15
15
  TYPE_SIZES,
16
16
  WEB_FONT_FAMILY,
17
17
  WEB_MONOSPACE_FONT_FAMILY
18
- } from "./chunk-PE4ZW3IA.js";
18
+ } from "./chunk-BLW6KLDR.js";
19
19
  import {
20
20
  cssLengthToPx,
21
21
  cssTrackingToEm
@@ -144,4 +144,4 @@ export {
144
144
  uiThemeFromMui,
145
145
  muiThemeOptionsFrom
146
146
  };
147
- //# sourceMappingURL=chunk-XEYLYUDM.js.map
147
+ //# sourceMappingURL=chunk-JH5BKA3Y.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-KAIUDBHM.js";
3
+ } from "./chunk-WYUBTRRV.js";
4
4
  import {
5
5
  useDataViewsState
6
6
  } from "./chunk-EDKLXA5W.js";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-U4O47P6S.js.map
30
+ //# sourceMappingURL=chunk-JQ3D5QP6.js.map
@@ -1,5 +1,4 @@
1
1
  import {
2
- rem,
3
2
  remPx
4
3
  } from "./chunk-YKCAJ2TN.js";
5
4
 
@@ -24,8 +23,8 @@ var useVirtualScrolling = (data, rowHeight, containerHeight, overscan = 5, heade
24
23
  startIndex: start,
25
24
  endIndex: end,
26
25
  items: data.slice(start, end),
27
- totalHeight: rem(theme, data.length * rowHeight),
28
- offsetY: start * rowHeight
26
+ offsetY: start * rowHeight,
27
+ trailingPx: (data.length - end) * rowHeight
29
28
  };
30
29
  }, [data, rowHeight, containerHeight, scroll, overscan, theme]);
31
30
  const handleScroll = useCallback((e) => {
@@ -119,4 +118,4 @@ export {
119
118
  useVirtualScrolling,
120
119
  useTableSelection
121
120
  };
122
- //# sourceMappingURL=chunk-5HQNHZ6Z.js.map
121
+ //# sourceMappingURL=chunk-LH7KMYHC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Table/Table.hooks.ts"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { remPx } from '../../../tokens/relative';\n\nimport type { ColumnConfig, TableProps, VirtualWindow } from './Table.types';\n\n/**\n * The virtual window. `rowHeight` and `containerHeight` are design px: the\n * window is computed in the px `scrollTop` is measured in (`remPx`), and what it\n * hands back to draw with stays in design px (`offsetY`, `trailingPx` — the\n * spacer rows either side of the window), so the rows and the window share one\n * pitch at any type scale.\n *\n * The scroller holds the header as well as the body, so the `<tbody>` starts\n * the header's height into it. `handleScroll` measures that height from\n * `headerRef` in the same live px as `scrollTop`, and the window subtracts it\n * before dividing by the pitch (FUT-2658).\n */\nexport const useVirtualScrolling = (\n data: Record<string, unknown>[],\n rowHeight: number,\n containerHeight: number,\n overscan: number = 5,\n headerRef?: React.RefObject<HTMLElement | null>,\n) => {\n const theme = useTheme();\n // Both live px, as the browser measures them.\n const [scroll, setScroll] = useState({ scrollTop: 0, headerPx: 0 });\n \n const visibleItems = useMemo((): VirtualWindow => {\n const pitch = remPx(theme, rowHeight);\n const bodyScrollTop = Math.max(0, scroll.scrollTop - scroll.headerPx);\n const startIndex = Math.floor(bodyScrollTop / pitch);\n const endIndex = Math.min(\n data.length,\n Math.ceil((bodyScrollTop + remPx(theme, containerHeight)) / pitch)\n );\n \n const start = Math.max(0, startIndex - overscan);\n const end = Math.min(data.length, endIndex + overscan);\n \n return {\n startIndex: start,\n endIndex: end,\n items: data.slice(start, end),\n offsetY: start * rowHeight,\n trailingPx: (data.length - end) * rowHeight,\n };\n }, [data, rowHeight, containerHeight, scroll, overscan, theme]);\n\n const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {\n setScroll({\n scrollTop: e.currentTarget.scrollTop,\n headerPx: headerRef?.current?.offsetHeight ?? 0,\n });\n }, [headerRef]);\n\n return { visibleItems, handleScroll };\n};\n\n// Responsive Hook\n\nconst useResponsive = (\n columns: ColumnConfig[],\n columnPriorities?: number[]\n) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const isTablet = useMediaQuery(theme.breakpoints.down('lg'));\n \n const [hiddenColumns, setHiddenColumns] = useState<number[]>([]);\n const [columnMenuAnchor, setColumnMenuAnchor] = useState<null | HTMLElement>(null);\n\n useEffect(() => {\n if (!columnPriorities) return;\n \n let columnsToHide: number[] = [];\n \n if (isMobile) {\n // Hide lowest priority columns on mobile\n columnsToHide = columnPriorities\n .map((priority, index) => ({ priority, index }))\n .sort((a, b) => b.priority - a.priority)\n .slice(0, Math.floor(columns.length / 2))\n .map(item => item.index);\n } else if (isTablet) {\n // Hide some columns on tablet\n columnsToHide = columnPriorities\n .map((priority, index) => ({ priority, index }))\n .sort((a, b) => b.priority - a.priority)\n .slice(0, Math.floor(columns.length / 3))\n .map(item => item.index);\n }\n \n setHiddenColumns(columnsToHide);\n }, [isMobile, isTablet, columnPriorities, columns.length]);\n\n const visibleColumns = columns.filter((_, index) => !hiddenColumns.includes(index));\n\n return {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n };\n};\n\n// Enhanced Table Header Component\n// Visible/hidden column split for responsive mode, plus row selection.\nexport const useTableSelection = ({\n columns,\n data,\n responsive,\n columnPriorities,\n selectedRows,\n rowKeyExtractor,\n onSelectionChange,\n}: {\n columns?: ColumnConfig[];\n data: TableProps['data'];\n responsive?: boolean;\n columnPriorities?: number[];\n selectedRows: (string | number)[];\n rowKeyExtractor?: (row: Record<string, unknown>, index: number) => string | number;\n onSelectionChange?: TableProps['onSelectionChange'];\n}) => {\n \n // Use responsive hook if responsive mode is enabled\n const {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n } = useResponsive(\n columns || [],\n responsive ? columnPriorities : undefined\n );\n\n // Handle selection changes\n const handleSelectionChange = useCallback((rowKey: string | number, selected: boolean) => {\n if (!onSelectionChange) return;\n \n let newSelection: (string | number)[];\n if (selected) {\n newSelection = [...selectedRows, rowKey];\n } else {\n newSelection = selectedRows.filter(key => key !== rowKey);\n }\n onSelectionChange(newSelection);\n }, [selectedRows, onSelectionChange]);\n\n const handleSelectAll = useCallback((selected: boolean) => {\n if (!onSelectionChange || !data) return;\n \n if (selected) {\n const allKeys = data.map((rowData, index) => \n rowKeyExtractor ? rowKeyExtractor(rowData, index) : (rowData.id as string | number) || index\n );\n onSelectionChange(allKeys);\n } else {\n onSelectionChange([]);\n }\n }, [data, onSelectionChange, rowKeyExtractor]);\n\n // Loading state\n\n return {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n handleSelectionChange,\n handleSelectAll,\n };\n};\n"],"mappings":"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","names":[]}
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-6DPAWXZ3.js";
16
16
  import {
17
17
  Text
18
- } from "./chunk-YBH4SPMM.js";
18
+ } from "./chunk-URHX4FAQ.js";
19
19
  import {
20
20
  fieldHeight
21
21
  } from "./chunk-CGO452DC.js";
@@ -201,4 +201,4 @@ export {
201
201
  fieldClearing,
202
202
  MoreGroup
203
203
  };
204
- //# sourceMappingURL=chunk-X4ZRPE37.js.map
204
+ //# sourceMappingURL=chunk-MBHWVRV5.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-2EAAWOZ2.js";
10
10
  import {
11
11
  Text
12
- } from "./chunk-YBH4SPMM.js";
12
+ } from "./chunk-URHX4FAQ.js";
13
13
 
14
14
  // src/user-avatar/user-avatar.tsx
15
15
  import Box from "@mui/material/Box/index.js";
@@ -74,4 +74,4 @@ export {
74
74
  UserAvatar,
75
75
  UserMenu
76
76
  };
77
- //# sourceMappingURL=chunk-JQWAANGN.js.map
77
+ //# sourceMappingURL=chunk-OOCREE37.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6DPAWXZ3.js";
7
7
  import {
8
8
  Text
9
- } from "./chunk-YBH4SPMM.js";
9
+ } from "./chunk-URHX4FAQ.js";
10
10
  import {
11
11
  sxRem
12
12
  } from "./chunk-YKCAJ2TN.js";
@@ -184,4 +184,4 @@ function MoveButton({
184
184
  export {
185
185
  ColumnsTab
186
186
  };
187
- //# sourceMappingURL=chunk-R2XVTUVR.js.map
187
+ //# sourceMappingURL=chunk-OQRG34VG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GREY
3
- } from "./chunk-PE4ZW3IA.js";
3
+ } from "./chunk-BLW6KLDR.js";
4
4
  import {
5
5
  contrastText
6
6
  } from "./chunk-2BYKTBDL.js";
@@ -67,4 +67,4 @@ export {
67
67
  LINEAR_INDETERMINATE,
68
68
  progressPalette
69
69
  };
70
- //# sourceMappingURL=chunk-RUEKY3VR.js.map
70
+ //# sourceMappingURL=chunk-P52LYD6S.js.map
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-2EAAWOZ2.js";
20
20
  import {
21
21
  Text
22
- } from "./chunk-YBH4SPMM.js";
22
+ } from "./chunk-URHX4FAQ.js";
23
23
 
24
24
  // src/components/data-display/DataViews/ManageViewsDialog.tsx
25
25
  import { useMemo } from "react";
@@ -128,4 +128,4 @@ function ManageViewsDialog({
128
128
  export {
129
129
  ManageViewsDialog
130
130
  };
131
- //# sourceMappingURL=chunk-CTKQCKRD.js.map
131
+ //# sourceMappingURL=chunk-PK6TRXV4.js.map
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  tableRowHeight
3
3
  } from "./chunk-XS3REOPN.js";
4
+ import {
5
+ FIELD_BORDER_WIDTH
6
+ } from "./chunk-PZBK3F52.js";
4
7
  import {
5
8
  rem
6
9
  } from "./chunk-YKCAJ2TN.js";
@@ -99,11 +102,36 @@ var EnhancedTableHeader = React.memo(({
99
102
  ] }) });
100
103
  });
101
104
  EnhancedTableHeader.displayName = "EnhancedTableHeader";
105
+ var JUSTIFY = {
106
+ left: "flex-start",
107
+ center: "center",
108
+ right: "flex-end"
109
+ };
110
+ var VirtualCellContent = ({ rowHeight, align, children }) => {
111
+ const theme = useTheme();
112
+ return /* @__PURE__ */ jsx(
113
+ "div",
114
+ {
115
+ style: {
116
+ height: `calc(${rem(theme, rowHeight)} - ${FIELD_BORDER_WIDTH}px)`,
117
+ display: "flex",
118
+ alignItems: "center",
119
+ justifyContent: JUSTIFY[align],
120
+ overflow: "hidden"
121
+ },
122
+ children
123
+ }
124
+ );
125
+ };
126
+ var cellContent = (column, rowData, index, renderCell) => {
127
+ const value = rowData[column.key];
128
+ if (renderCell) return renderCell(value, column, rowData, index);
129
+ return column.render ? column.render(value, rowData) : value;
130
+ };
102
131
  var TableDataRow = ({
103
132
  rowData,
104
133
  rowKey,
105
134
  index,
106
- offsetY,
107
135
  columns,
108
136
  selected,
109
137
  selectable,
@@ -112,10 +140,12 @@ var TableDataRow = ({
112
140
  onRowFocus,
113
141
  onRowBlur,
114
142
  onSelect,
115
- virtualScrolling,
143
+ virtualised,
116
144
  renderCell
117
145
  }) => {
118
146
  const theme = useTheme();
147
+ const pitch = tableRowHeight(rowHeight);
148
+ const fit = (align, content) => virtualised ? /* @__PURE__ */ jsx(VirtualCellContent, { rowHeight: pitch, align, children: content }) : content;
119
149
  return /* @__PURE__ */ jsxs(
120
150
  TableRow,
121
151
  {
@@ -124,55 +154,52 @@ var TableDataRow = ({
124
154
  onClick: (event) => onRowClick?.(event, rowData),
125
155
  onFocus: (event) => onRowFocus?.(event, rowData),
126
156
  onBlur: (event) => onRowBlur?.(event, rowData),
127
- style: virtualScrolling ? {
128
- transform: `translateY(${rem(theme, offsetY)})`,
129
- position: "absolute",
130
- top: 0,
131
- left: 0,
132
- right: 0,
133
- height: rem(theme, tableRowHeight(rowHeight))
134
- } : void 0,
157
+ style: virtualised ? { height: rem(theme, pitch) } : void 0,
135
158
  children: [
136
- selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsx(
137
- Checkbox,
138
- {
139
- checked: selected,
140
- onChange: (event) => onSelect(event, rowKey),
141
- onClick: (event) => event.stopPropagation(),
142
- inputProps: { "aria-label": `select row ${index + 1}` }
143
- }
159
+ selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: fit(
160
+ "left",
161
+ /* @__PURE__ */ jsx(
162
+ Checkbox,
163
+ {
164
+ checked: selected,
165
+ onChange: (event) => onSelect(event, rowKey),
166
+ onClick: (event) => event.stopPropagation(),
167
+ inputProps: { "aria-label": `select row ${index + 1}` }
168
+ }
169
+ )
144
170
  ) }),
145
- columns.map((column) => {
146
- const value = rowData[column.key];
147
- return /* @__PURE__ */ jsx(TableCell, { align: column.align || "left", children: renderCell ? renderCell(value, column, rowData, index) : column.render ? column.render(value, rowData) : value }, column.key);
148
- })
171
+ columns.map((column) => /* @__PURE__ */ jsx(TableCell, { align: column.align || "left", children: fit(column.align || "left", cellContent(column, rowData, index, renderCell)) }, column.key))
149
172
  ]
150
173
  },
151
174
  String(rowKey)
152
175
  );
153
176
  };
154
- var VirtualisedBody = ({ visibleItems, rowHeight, renderTableRow }) => /* @__PURE__ */ jsx(
155
- TableBody,
156
- {
157
- style: {
158
- height: visibleItems.totalHeight,
159
- position: "relative"
160
- },
161
- children: visibleItems.items.map(
162
- (rowData, index) => renderTableRow(rowData, visibleItems.startIndex + index, visibleItems.offsetY + index * rowHeight)
163
- )
164
- }
165
- );
177
+ var SpacerRow = ({ heightPx, colSpan }) => {
178
+ const theme = useTheme();
179
+ if (heightPx <= 0) return null;
180
+ return /* @__PURE__ */ jsx("tr", { "aria-hidden": "true", style: { height: rem(theme, heightPx) }, children: /* @__PURE__ */ jsx("td", { colSpan, style: { padding: 0, border: 0 } }) });
181
+ };
182
+ var VirtualisedBody = ({ visibleItems, colSpan, renderTableRow }) => /* @__PURE__ */ jsxs(TableBody, { children: [
183
+ /* @__PURE__ */ jsx(SpacerRow, { heightPx: visibleItems.offsetY, colSpan }),
184
+ visibleItems.items.map(
185
+ (rowData, index) => renderTableRow(rowData, visibleItems.startIndex + index)
186
+ ),
187
+ /* @__PURE__ */ jsx(SpacerRow, { heightPx: visibleItems.trailingPx, colSpan })
188
+ ] });
166
189
  var PlainBody = ({ data, renderTableRow }) => /* @__PURE__ */ jsx(TableBody, { children: data.map((rowData, index) => renderTableRow(rowData, index)) });
167
190
  var EnhancedTableBody = React.memo((props) => {
168
191
  const { data, virtualWindow } = props;
169
- const renderTableRow = useTableRowRenderer({ ...props, selectedRows: props.selectedRows ?? [] });
192
+ const renderTableRow = useTableRowRenderer({
193
+ ...props,
194
+ selectedRows: props.selectedRows ?? [],
195
+ virtualised: Boolean(virtualWindow)
196
+ });
170
197
  if (virtualWindow) {
171
198
  return /* @__PURE__ */ jsx(
172
199
  VirtualisedBody,
173
200
  {
174
201
  visibleItems: virtualWindow,
175
- rowHeight: tableRowHeight(props.rowHeight),
202
+ colSpan: props.columns.length + (props.selectable ? 1 : 0),
176
203
  renderTableRow
177
204
  }
178
205
  );
@@ -209,7 +236,7 @@ var useTableRowRenderer = ({
209
236
  selectable,
210
237
  renderRow,
211
238
  renderCell,
212
- virtualScrolling,
239
+ virtualised,
213
240
  rowHeight
214
241
  }) => {
215
242
  const getRowKey = useRowKey(rowKeyExtractor);
@@ -219,7 +246,7 @@ var useTableRowRenderer = ({
219
246
  );
220
247
  const handleRowSelection = useRowSelection({ selectedRows, onSelectionChange });
221
248
  const renderTableRow = useCallback2(
222
- (rowData, index, offsetY = 0) => {
249
+ (rowData, index) => {
223
250
  const rowKey = getRowKey(rowData, index);
224
251
  const selected = isRowSelected(rowKey);
225
252
  if (renderRow) return renderRow(rowData, index, selected);
@@ -229,7 +256,6 @@ var useTableRowRenderer = ({
229
256
  rowData,
230
257
  rowKey,
231
258
  index,
232
- offsetY,
233
259
  columns,
234
260
  selected,
235
261
  selectable,
@@ -238,7 +264,7 @@ var useTableRowRenderer = ({
238
264
  onRowFocus,
239
265
  onRowBlur,
240
266
  onSelect: handleRowSelection,
241
- virtualScrolling,
267
+ virtualised,
242
268
  renderCell
243
269
  },
244
270
  rowKey
@@ -256,7 +282,7 @@ var useTableRowRenderer = ({
256
282
  renderCell,
257
283
  rowHeight,
258
284
  selectable,
259
- virtualScrolling
285
+ virtualised
260
286
  ]
261
287
  );
262
288
  return renderTableRow;
@@ -268,4 +294,4 @@ export {
268
294
  TableDataRow,
269
295
  EnhancedTableBody
270
296
  };
271
- //# sourceMappingURL=chunk-RGT6DM5W.js.map
297
+ //# sourceMappingURL=chunk-PX6TWS5T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Table/TableParts.hooks.tsx","../src/components/data-display/Table/TableParts.tsx"],"sourcesContent":["import type React from 'react';\nimport { useCallback } from 'react';\n\nimport { TableDataRow } from './TableParts';\nimport type { TableBodyProps } from './Table.types';\n\n// Row identity, selection and the row element itself. Split out of\n// EnhancedTableBody so that component is just the virtualised/plain choice.\n// A row's identity: the caller's extractor, else its id, else its position.\nconst useRowKey = (rowKeyExtractor: TableBodyProps['rowKeyExtractor']) =>\n useCallback(\n (rowData: Record<string, unknown>, index: number): string | number =>\n rowKeyExtractor ? rowKeyExtractor(rowData, index) : (rowData.id as string | number) || index,\n [rowKeyExtractor],\n );\n\nconst useRowSelection = ({\n selectedRows,\n onSelectionChange,\n}: {\n selectedRows: Array<string | number>;\n onSelectionChange: TableBodyProps['onSelectionChange'];\n}) =>\n useCallback(\n (event: React.MouseEvent | React.ChangeEvent, rowKey: string | number) => {\n // Stop propagation so selecting does not also fire the row click.\n event.stopPropagation();\n if (!onSelectionChange) return;\n onSelectionChange(rowKey, !selectedRows.includes(rowKey));\n },\n [onSelectionChange, selectedRows],\n );\n\ntype RowRendererProps = Pick<\n TableBodyProps,\n | 'columns'\n | 'onRowClick'\n | 'onRowFocus'\n | 'onRowBlur'\n | 'onSelectionChange'\n | 'rowKeyExtractor'\n | 'selectable'\n | 'renderRow'\n | 'renderCell'\n | 'rowHeight'\n> & {\n selectedRows: Array<string | number>;\n /** Whether the rows are a virtual window's, drawn at exactly `rowHeight`. */\n virtualised: boolean;\n};\n\nexport const useTableRowRenderer = ({\n columns,\n selectedRows,\n onRowClick,\n onRowFocus,\n onRowBlur,\n onSelectionChange,\n rowKeyExtractor,\n selectable,\n renderRow,\n renderCell,\n virtualised,\n rowHeight,\n}: RowRendererProps) => {\n const getRowKey = useRowKey(rowKeyExtractor);\n const isRowSelected = useCallback(\n (rowKey: string | number) => selectedRows.includes(rowKey),\n [selectedRows],\n );\n const handleRowSelection = useRowSelection({ selectedRows, onSelectionChange });\n\n const renderTableRow = useCallback(\n (rowData: Record<string, unknown>, index: number) => {\n const rowKey = getRowKey(rowData, index);\n const selected = isRowSelected(rowKey);\n\n if (renderRow) return renderRow(rowData, index, selected);\n\n return (\n <TableDataRow\n key={rowKey}\n rowData={rowData}\n rowKey={rowKey}\n index={index}\n columns={columns}\n selected={selected}\n selectable={selectable}\n rowHeight={rowHeight}\n onRowClick={onRowClick}\n onRowFocus={onRowFocus}\n onRowBlur={onRowBlur}\n onSelect={handleRowSelection}\n virtualised={virtualised}\n renderCell={renderCell}\n />\n );\n },\n [\n columns,\n getRowKey,\n isRowSelected,\n handleRowSelection,\n onRowClick,\n onRowFocus,\n onRowBlur,\n renderRow,\n renderCell,\n rowHeight,\n selectable,\n virtualised,\n ],\n );\n\n return renderTableRow;\n};\n","import Checkbox from '@mui/material/Checkbox/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableHead from '@mui/material/TableHead/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport TableSortLabel from '@mui/material/TableSortLabel/index.js';\nimport { useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React, { useCallback } from 'react';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem } from '../../../tokens/relative';\n\nimport { tableRowHeight } from './Table.helpers';\nimport { useTableRowRenderer } from './TableParts.hooks';\nimport type { ColumnConfig, TableBodyProps, TableHeaderProps, VirtualWindow } from './Table.types';\n\n// Mirrors the visible sort indicator for assistive technology; undefined when\n// the column is not sorted, which is what removes the attribute entirely.\nconst ariaSortFor = (\n canSort: boolean,\n isSorted: boolean,\n direction?: 'asc' | 'desc',\n): 'ascending' | 'descending' | undefined => {\n if (!canSort || !isSorted) return undefined;\n\n return direction === 'asc' ? 'ascending' : 'descending';\n};\n\n/** A column's `width`/`minWidth` as CSS: a number is design px, a string as given. */\nconst columnLength = (theme: Theme, value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? rem(theme, value) : value;\n\n// One header cell. Sorting is offered when the table is sortable and the column\n// has not opted out; aria-sort mirrors the visible indicator.\nconst HeaderCell: React.FC<{\n column: ColumnConfig;\n sortable?: boolean;\n sortConfig?: { key: string; direction: 'asc' | 'desc' };\n onSort: (columnKey: string) => void;\n}> = ({ column, sortable, sortConfig, onSort }) => {\n const theme = useTheme();\n const canSort = Boolean(sortable) && column.sortable !== false;\n const isSorted = sortConfig?.key === column.key;\n\n return (\n <TableCell\n align={column.align || 'left'}\n style={{\n minWidth: columnLength(theme, column.minWidth),\n width: columnLength(theme, column.width),\n }}\n aria-sort={ariaSortFor(canSort, isSorted, sortConfig?.direction)}\n >\n {canSort ? (\n <TableSortLabel\n active={isSorted}\n direction={isSorted ? sortConfig?.direction : 'asc'}\n onClick={() => onSort(column.key)}\n data-testid=\"sort-indicator\"\n aria-label={`Sort by ${column.label}`}\n >\n {column.label}\n </TableSortLabel>\n ) : (\n column.label\n )}\n </TableCell>\n );\n};\n\nexport const EnhancedTableHeader: React.FC<TableHeaderProps> = React.memo(({\n columns,\n data,\n sortable,\n sortConfig,\n onSortChange,\n selectable,\n selectedRows = [],\n onSelectAll,\n headRef }) => {\n const handleSort = useCallback(\n (columnKey: string) => {\n if (!sortable || !onSortChange) return;\n \n const direction = \n sortConfig?.key === columnKey && sortConfig.direction === 'asc' ? 'desc' : 'asc';\n onSortChange(columnKey, direction);\n },\n [sortable, onSortChange, sortConfig]\n );\n\n const handleSelectAll = useCallback(\n (event: React.ChangeEvent<globalThis.HTMLInputElement>) => {\n if (!onSelectAll) return;\n onSelectAll(event.target.checked);\n },\n [onSelectAll]\n );\n\n return (\n <TableHead ref={headRef}>\n <TableRow>\n {selectable && (\n <TableCell padding=\"checkbox\">\n <Checkbox\n indeterminate={selectedRows.length > 0 && selectedRows.length < data.length}\n checked={selectedRows.length === data.length && data.length > 0}\n onChange={handleSelectAll}\n inputProps={{ 'aria-label': 'select all' }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <HeaderCell\n key={column.key}\n column={column}\n sortable={sortable}\n sortConfig={sortConfig}\n onSort={handleSort}\n />\n ))}\n </TableRow>\n </TableHead>\n );\n});\n\nEnhancedTableHeader.displayName = 'EnhancedTableHeader';\n\n/** How a virtual cell's wrapper places its content along the row, per `align`. */\nconst JUSTIFY: Record<NonNullable<ColumnConfig['align']>, React.CSSProperties['justifyContent']> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n};\n\n/**\n * A virtual cell's content (FUT-2668). The cell has no vertical padding, and\n * this fills its content box — the pitch less the cell's bottom rule, the one\n * hairline every variant draws — so the cell's border box is exactly the pitch\n * whatever it holds. Centred vertically, placed by the column's `align`, and\n * clipped rather than allowed to grow the row.\n */\nconst VirtualCellContent: React.FC<{\n rowHeight: number;\n align: NonNullable<ColumnConfig['align']>;\n children: React.ReactNode;\n}> = ({ rowHeight, align, children }) => {\n const theme = useTheme();\n return (\n <div\n style={{\n height: `calc(${rem(theme, rowHeight)} - ${FIELD_BORDER_WIDTH}px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: JUSTIFY[align],\n overflow: 'hidden',\n }}\n >\n {children}\n </div>\n );\n};\n\n/** What one cell shows: the caller's `renderCell`, else the column's `render`, else the value. */\nconst cellContent = (\n column: ColumnConfig,\n rowData: Record<string, unknown>,\n index: number,\n renderCell: TableBodyProps['renderCell'],\n): React.ReactNode => {\n const value = rowData[column.key];\n if (renderCell) return renderCell(value, column, rowData, index);\n return column.render ? column.render(value, rowData) : (value as React.ReactNode);\n};\n\n// One data row. Split out of the memoised renderTableRow callback so the\n// callback stays a short dispatch and the row markup is readable on its own.\n// A virtualised row stays in the table's flow at `rowHeight`, and each of its\n// cells holds its content in a `VirtualCellContent` (FUT-2668); a plain row is\n// drawn as MUI draws it.\nexport const TableDataRow: React.FC<{\n rowData: Record<string, unknown>;\n rowKey: string | number;\n index: number;\n columns: ColumnConfig[];\n selected: boolean;\n selectable?: boolean;\n /** Design px; 52 when unset (`tableRowHeight`). */\n rowHeight?: number;\n onRowClick?: TableBodyProps['onRowClick'];\n onRowFocus?: TableBodyProps['onRowFocus'];\n onRowBlur?: TableBodyProps['onRowBlur'];\n onSelect: (event: React.MouseEvent | React.ChangeEvent, rowKey: string | number) => void;\n /** Whether the row is one of a virtual window's. */\n virtualised: boolean;\n renderCell?: TableBodyProps['renderCell'];\n}> = ({\n rowData,\n rowKey,\n index,\n columns,\n selected,\n selectable,\n rowHeight,\n onRowClick,\n onRowFocus,\n onRowBlur,\n onSelect,\n virtualised,\n renderCell }) => {\n const theme = useTheme();\n const pitch = tableRowHeight(rowHeight);\n const fit = (align: NonNullable<ColumnConfig['align']>, content: React.ReactNode) =>\n virtualised ? (\n <VirtualCellContent rowHeight={pitch} align={align}>\n {content}\n </VirtualCellContent>\n ) : (\n content\n );\n\n return (\n <TableRow\n key={String(rowKey)}\n selected={selected}\n className={selected ? 'selected' : ''}\n onClick={(event: React.MouseEvent<globalThis.HTMLTableRowElement>) => onRowClick?.(event, rowData)}\n onFocus={(event: React.FocusEvent<globalThis.HTMLTableRowElement>) => onRowFocus?.(event, rowData)}\n onBlur={(event: React.FocusEvent<globalThis.HTMLTableRowElement>) => onRowBlur?.(event, rowData)}\n style={virtualised ? { height: rem(theme, pitch) } : undefined}\n >\n {selectable && (\n <TableCell padding=\"checkbox\">\n {fit(\n 'left',\n <Checkbox\n checked={selected}\n onChange={(event) => onSelect(event, rowKey)}\n onClick={(event) => event.stopPropagation()}\n inputProps={{ 'aria-label': `select row ${index + 1}` }}\n />,\n )}\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell key={column.key} align={column.align || 'left'}>\n {fit(column.align || 'left', cellContent(column, rowData, index, renderCell))}\n </TableCell>\n ))}\n </TableRow>\n );\n};\n\n/**\n * A stand-in for the rows outside the window, `heightPx` design px tall. A bare\n * `<tr>` and `<td>` with no padding or border: none of MUI's row or cell\n * classes, so hover, striping and cell padding never reach it. Not rendered at\n * all when there is nothing to stand in for.\n */\nconst SpacerRow: React.FC<{ heightPx: number; colSpan: number }> = ({ heightPx, colSpan }) => {\n const theme = useTheme();\n if (heightPx <= 0) return null;\n return (\n <tr aria-hidden=\"true\" style={{ height: rem(theme, heightPx) }}>\n <td colSpan={colSpan} style={{ padding: 0, border: 0 }} />\n </tr>\n );\n};\n\n// Only the rows in view are rendered, in the table's own flow between two\n// spacer rows standing in for the rest (FUT-2668) — an absolutely positioned\n// `<tr>` is blockified and leaves the column grid. Every height is design px,\n// drawn through `rem`. The `<tbody>` sits directly in the `<table>`; the one\n// scroll container wraps the whole table, header included (FUT-2658).\nconst VirtualisedBody: React.FC<{\n visibleItems: VirtualWindow;\n colSpan: number;\n renderTableRow: (rowData: Record<string, unknown>, index: number) => React.ReactNode;\n}> = ({ visibleItems, colSpan, renderTableRow }) => (\n <TableBody>\n <SpacerRow heightPx={visibleItems.offsetY} colSpan={colSpan} />\n {visibleItems.items.map((rowData, index) =>\n renderTableRow(rowData, visibleItems.startIndex + index)\n )}\n <SpacerRow heightPx={visibleItems.trailingPx} colSpan={colSpan} />\n </TableBody>\n);\n\nconst PlainBody: React.FC<{\n data: TableBodyProps['data'];\n renderTableRow: (rowData: Record<string, unknown>, index: number) => React.ReactNode;\n}> = ({ data, renderTableRow }) => (\n\n <TableBody>\n {data.map((rowData, index) => renderTableRow(rowData, index))}\n </TableBody>\n);\n\n// Enhanced Table Body Component \nexport const EnhancedTableBody: React.FC<TableBodyProps> = React.memo((props) => {\n const { data, virtualWindow } = props;\n // The row renderer takes the body's own props; its `rowHeight` stays the\n // caller's design px, and the row resolves the default where it draws it.\n const renderTableRow = useTableRowRenderer({\n ...props,\n selectedRows: props.selectedRows ?? [],\n virtualised: Boolean(virtualWindow),\n });\n\n if (virtualWindow) {\n return (\n <VirtualisedBody\n visibleItems={virtualWindow}\n colSpan={props.columns.length + (props.selectable ? 1 : 0)}\n renderTableRow={renderTableRow}\n />\n );\n }\n\n return (\n <PlainBody data={data} renderTableRow={renderTableRow} />\n );\n});\n\nEnhancedTableBody.displayName = 'EnhancedTableBody';\n\n// Main Table Component\n"],"mappings":"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","names":["useCallback","jsx","useCallback"]}