@12-apps/ui 6.39.7 → 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 (368) 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.helpers.js +1 -1
  88. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +6 -6
  89. package/dist/_internal/components/form/Autocomplete/Autocomplete.keys.js +2 -2
  90. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +3 -3
  91. package/dist/_internal/components/form/Autocomplete/useAutocomplete.js +3 -3
  92. package/dist/_internal/components/form/Button/Button.js +2 -2
  93. package/dist/_internal/components/form/Button/Button.styles.js +2 -2
  94. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +1 -1
  95. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +1 -1
  96. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +1 -1
  97. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +1 -1
  98. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +1 -1
  99. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +1 -1
  100. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +1 -1
  101. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +1 -1
  102. package/dist/_internal/components/form/CepField/CepField.js +1 -1
  103. package/dist/_internal/components/form/Command/Command.js +2 -2
  104. package/dist/_internal/components/form/Command/Command.styles.js +2 -2
  105. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +1 -1
  106. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +1 -1
  107. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +1 -1
  108. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +1 -1
  109. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +1 -1
  110. package/dist/_internal/components/form/Input/Input.js +1 -1
  111. package/dist/_internal/components/form/Input/Input.styles.js +1 -1
  112. package/dist/_internal/components/form/InputOTP/InputOTP.js +1 -1
  113. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +1 -1
  114. package/dist/_internal/components/form/Label/Label.js +2 -2
  115. package/dist/_internal/components/form/Label/Label.styles.js +2 -2
  116. package/dist/_internal/components/form/Menubar/Menubar.item.js +2 -2
  117. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  118. package/dist/_internal/components/form/Menubar/Menubar.styles.js +2 -2
  119. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
  120. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +1 -1
  121. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +1 -1
  122. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +1 -1
  123. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +1 -1
  124. package/dist/_internal/components/form/Select/Select.js +1 -1
  125. package/dist/_internal/components/form/Switch/Switch.js +2 -2
  126. package/dist/_internal/components/form/Switch/Switch.parts.js +2 -2
  127. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  128. package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
  129. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +1 -1
  130. package/dist/_internal/components/form/Toggle/Toggle.js +1 -1
  131. package/dist/_internal/components/form/Toggle/Toggle.styles.js +1 -1
  132. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +1 -1
  133. package/dist/_internal/components/form/index.js +8 -8
  134. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +1 -1
  135. package/dist/_internal/components/form/total-form/Fields/CepField.js +1 -1
  136. package/dist/_internal/components/form/total-form/Fields/SelectField.js +1 -1
  137. package/dist/_internal/components/form/total-form/Fields/TextField.js +1 -1
  138. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +1 -1
  139. package/dist/_internal/components/form/total-form/Fields/index.js +1 -1
  140. package/dist/_internal/components/form/total-form/SubmitButton.js +2 -2
  141. package/dist/_internal/components/index.js +21 -21
  142. package/dist/_internal/components/layout/Box/Box.js +5 -5
  143. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
  144. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
  145. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
  146. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +1 -1
  147. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
  148. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
  149. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
  150. package/dist/_internal/components/layout/Stack/Stack.js +6 -6
  151. package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
  152. package/dist/_internal/components/layout/index.js +1 -1
  153. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +2 -2
  154. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  155. package/dist/_internal/components/navigation/Pagination/Pagination.js +1 -1
  156. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +1 -1
  157. package/dist/_internal/components/navigation/Tabs/Tabs.js +1 -1
  158. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +1 -1
  159. package/dist/_internal/components/navigation/index.js +2 -2
  160. package/dist/_internal/components/typography/Heading/Heading.js +5 -5
  161. package/dist/_internal/components/typography/Heading/Heading.metrics.js +3 -3
  162. package/dist/_internal/components/typography/Heading/Heading.styles.js +4 -4
  163. package/dist/_internal/components/typography/Text/Text.js +4 -4
  164. package/dist/_internal/components/typography/Text/Text.metrics.js +3 -3
  165. package/dist/_internal/components/typography/index.js +7 -7
  166. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  167. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +2 -2
  168. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +2 -2
  169. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +2 -2
  170. package/dist/_internal/components/utility/index.js +2 -2
  171. package/dist/_internal/icons/Icon.js +5 -5
  172. package/dist/_internal/provider/UiProvider.js +4 -4
  173. package/dist/_internal/provider/mui-bridge.js +3 -3
  174. package/dist/_internal/provider/use-ui-theme.js +4 -4
  175. package/dist/_internal/social-login-button/social-login-button.js +8 -8
  176. package/dist/_internal/tokens/field-height.js +1 -1
  177. package/dist/_internal/tokens/theme.js +2 -2
  178. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  179. package/dist/charts.js +2 -2
  180. package/dist/{chunk-OAEYCKBN.js → chunk-2K7WPHI3.js} +2 -2
  181. package/dist/{chunk-7RRXLCOO.js → chunk-2KWYNFVE.js} +4 -4
  182. package/dist/{chunk-JBI7ITL2.js → chunk-3BNQDOHC.js} +2 -2
  183. package/dist/{chunk-YCCY77W5.js → chunk-3IF3I3FI.js} +2 -2
  184. package/dist/{chunk-3KREF4ZF.js → chunk-3PQ5MZMJ.js} +2 -2
  185. package/dist/{chunk-L7NQCLFU.js → chunk-3RHZBO7L.js} +2 -2
  186. package/dist/{chunk-A4OCNJWW.js → chunk-3UABIEP3.js} +2 -2
  187. package/dist/{chunk-XIG3DXXX.js → chunk-5L7N5HER.js} +2 -2
  188. package/dist/{chunk-6WBKOM5K.js → chunk-7DK6YVJU.js} +2 -2
  189. package/dist/{chunk-ASYR22BJ.js → chunk-7XGHJD75.js} +3 -3
  190. package/dist/{chunk-OB56SZGL.js → chunk-B7CNP5HW.js} +2 -2
  191. package/dist/{chunk-PE4ZW3IA.js → chunk-BLW6KLDR.js} +4 -4
  192. package/dist/{chunk-POV2KL2P.js → chunk-CCK7FB2V.js} +16 -2
  193. package/dist/chunk-CCK7FB2V.js.map +1 -0
  194. package/dist/{chunk-QKMJUOVH.js → chunk-CRG24BGI.js} +2 -2
  195. package/dist/{chunk-LKMMJKXU.js → chunk-CYZZHWNK.js} +2 -2
  196. package/dist/{chunk-PH36XEB3.js → chunk-DQZCQV2C.js} +4 -4
  197. package/dist/{chunk-DUNG7D4B.js → chunk-DSF4VT7L.js} +1 -1
  198. package/dist/{chunk-YOJASBHJ.js → chunk-DYNJQ3HJ.js} +3 -3
  199. package/dist/{chunk-CXMVNYBY.js → chunk-GEB4WSZH.js} +3 -3
  200. package/dist/{chunk-RIF6L54B.js → chunk-H224XFFD.js} +2 -2
  201. package/dist/{chunk-BN742L2M.js → chunk-H6AWKLOV.js} +13 -5
  202. package/dist/chunk-H6AWKLOV.js.map +1 -0
  203. package/dist/{chunk-362OGE5J.js → chunk-HBRKA67N.js} +3 -3
  204. package/dist/{chunk-3RMDIO4G.js → chunk-I5T5PQQW.js} +2 -2
  205. package/dist/{chunk-IJFAF3A7.js → chunk-IWEUSZY3.js} +3 -3
  206. package/dist/{chunk-SZ3YFVO5.js → chunk-JGJFL3PF.js} +4 -4
  207. package/dist/{chunk-XEYLYUDM.js → chunk-JH5BKA3Y.js} +2 -2
  208. package/dist/{chunk-U4O47P6S.js → chunk-JQ3D5QP6.js} +2 -2
  209. package/dist/{chunk-XBHQT4BQ.js → chunk-JXS56EW5.js} +3 -3
  210. package/dist/{chunk-XBHQT4BQ.js.map → chunk-JXS56EW5.js.map} +1 -1
  211. package/dist/{chunk-5HQNHZ6Z.js → chunk-LH7KMYHC.js} +3 -4
  212. package/dist/chunk-LH7KMYHC.js.map +1 -0
  213. package/dist/{chunk-X4ZRPE37.js → chunk-MBHWVRV5.js} +2 -2
  214. package/dist/{chunk-JQWAANGN.js → chunk-OOCREE37.js} +2 -2
  215. package/dist/{chunk-R2XVTUVR.js → chunk-OQRG34VG.js} +2 -2
  216. package/dist/{chunk-RUEKY3VR.js → chunk-P52LYD6S.js} +2 -2
  217. package/dist/{chunk-JDFTIK4L.js → chunk-PELRSZFU.js} +2 -2
  218. package/dist/{chunk-CTKQCKRD.js → chunk-PK6TRXV4.js} +2 -2
  219. package/dist/{chunk-RGT6DM5W.js → chunk-PX6TWS5T.js} +68 -42
  220. package/dist/chunk-PX6TWS5T.js.map +1 -0
  221. package/dist/{chunk-3OBC6BOV.js → chunk-QFTBXHOY.js} +2 -2
  222. package/dist/{chunk-QTNHAX2Z.js → chunk-QS2DCLG6.js} +3 -3
  223. package/dist/{chunk-MYWROMGO.js → chunk-QU3JX53V.js} +3 -3
  224. package/dist/{chunk-5JSRM7WC.js → chunk-RB3X6CEE.js} +2 -2
  225. package/dist/{chunk-DW6F7354.js → chunk-S36NC22G.js} +2 -2
  226. package/dist/{chunk-6N4AA2Y7.js → chunk-SNYJSACF.js} +2 -2
  227. package/dist/{chunk-BOGTTXPA.js → chunk-TT3HZRU6.js} +9 -8
  228. package/dist/chunk-TT3HZRU6.js.map +1 -0
  229. package/dist/{chunk-TFMDZQK4.js → chunk-TTZPO345.js} +4 -4
  230. package/dist/{chunk-UITQ7KMK.js → chunk-TYNK662L.js} +3 -3
  231. package/dist/{chunk-YBH4SPMM.js → chunk-URHX4FAQ.js} +2 -2
  232. package/dist/{chunk-4CXCOR6F.js → chunk-V2UZQS2K.js} +2 -2
  233. package/dist/{chunk-VIRYHNEM.js → chunk-WY5PBZ7Q.js} +2 -2
  234. package/dist/{chunk-KAIUDBHM.js → chunk-WYUBTRRV.js} +6 -6
  235. package/dist/{chunk-ISFFETTG.js → chunk-XG7NTGUH.js} +3 -3
  236. package/dist/{chunk-GWEENWIS.js → chunk-Y2HPRRVP.js} +2 -2
  237. package/dist/{chunk-5CQ5HYJW.js → chunk-YMG4CXGI.js} +3 -3
  238. package/dist/{chunk-UGGJ3KDT.js → chunk-YTINPQKU.js} +2 -2
  239. package/dist/{chunk-U3PPLAFB.js → chunk-ZN6YATOG.js} +2 -2
  240. package/dist/{chunk-WHQKH57H.js → chunk-ZXIUIIUE.js} +2 -2
  241. package/dist/data-display/Alert.js +2 -2
  242. package/dist/data-display/Badge.js +2 -2
  243. package/dist/data-display/Banner.js +2 -2
  244. package/dist/data-display/CardKit.js +2 -2
  245. package/dist/data-display/Carousel.js +2 -2
  246. package/dist/data-display/Chart.js +2 -2
  247. package/dist/data-display/DataViews.js +32 -32
  248. package/dist/data-display/DescriptionItem.js +5 -5
  249. package/dist/data-display/FleetMap.js +2 -2
  250. package/dist/data-display/MapPreview.js +1 -1
  251. package/dist/data-display/Progress.js +5 -5
  252. package/dist/data-display/Sheet.js +2 -2
  253. package/dist/data-display/Table.js +5 -4
  254. package/dist/feedback/ConfirmAction.js +2 -2
  255. package/dist/feedback/NotificationStatusNotice.js +2 -2
  256. package/dist/form/AddressAutocomplete.js +1 -1
  257. package/dist/form/Autocomplete.js +6 -6
  258. package/dist/form/Button.js +2 -2
  259. package/dist/form/CategorySelect.js +1 -1
  260. package/dist/form/CepField.js +1 -1
  261. package/dist/form/Command.js +2 -2
  262. package/dist/form/CreatableSelect.js +1 -1
  263. package/dist/form/DateRangePicker.js +1 -1
  264. package/dist/form/Input.js +1 -1
  265. package/dist/form/InputOTP.js +1 -1
  266. package/dist/form/Label.js +2 -2
  267. package/dist/form/Menubar.js +2 -2
  268. package/dist/form/PhoneInput.js +1 -1
  269. package/dist/form/RadioGroup.js +1 -1
  270. package/dist/form/Select.js +1 -1
  271. package/dist/form/Switch.js +2 -2
  272. package/dist/form/Textarea.js +2 -2
  273. package/dist/form/Toggle.js +1 -1
  274. package/dist/form/ToggleGroup.js +1 -1
  275. package/dist/form/total-form.js +2 -2
  276. package/dist/icons.js +5 -5
  277. package/dist/layout/Box.js +5 -5
  278. package/dist/layout/ContentToolbar.js +1 -1
  279. package/dist/layout/Stack.js +6 -6
  280. package/dist/layout/TableFilter.js +1 -1
  281. package/dist/navigation/AppHeader.js +2 -2
  282. package/dist/navigation/Pagination.js +1 -1
  283. package/dist/navigation/Tabs.js +1 -1
  284. package/dist/provider.js +5 -5
  285. package/dist/social-login-button.js +8 -8
  286. package/dist/tokens.js +4 -4
  287. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  288. package/dist/types/components/data-display/Table/Table.hooks.d.ts +3 -2
  289. package/dist/types/components/data-display/Table/Table.hooks.d.ts.map +1 -1
  290. package/dist/types/components/data-display/Table/Table.styles.d.ts +3 -1
  291. package/dist/types/components/data-display/Table/Table.styles.d.ts.map +1 -1
  292. package/dist/types/components/data-display/Table/Table.types.d.ts +6 -4
  293. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  294. package/dist/types/components/data-display/Table/TableParts.d.ts +2 -3
  295. package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
  296. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts +6 -2
  297. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts.map +1 -1
  298. package/dist/types/components/form/Autocomplete/Autocomplete.helpers.d.ts +16 -3
  299. package/dist/types/components/form/Autocomplete/Autocomplete.helpers.d.ts.map +1 -1
  300. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
  301. package/dist/typography/Heading.js +5 -5
  302. package/dist/typography/Text.js +4 -4
  303. package/dist/user-avatar.js +5 -5
  304. package/dist/utility/WorkflowStep.js +2 -2
  305. package/package.json +1 -1
  306. package/src/components/data-display/Table/Table.hooks.ts +5 -4
  307. package/src/components/data-display/Table/Table.md +6 -0
  308. package/src/components/data-display/Table/Table.styles.ts +28 -1
  309. package/src/components/data-display/Table/Table.tsx +6 -4
  310. package/src/components/data-display/Table/Table.types.ts +6 -4
  311. package/src/components/data-display/Table/TableParts.hooks.tsx +23 -19
  312. package/src/components/data-display/Table/TableParts.tsx +112 -49
  313. package/src/components/form/Autocomplete/Autocomplete.helpers.ts +23 -5
  314. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +17 -3
  315. package/dist/chunk-5HQNHZ6Z.js.map +0 -1
  316. package/dist/chunk-BN742L2M.js.map +0 -1
  317. package/dist/chunk-BOGTTXPA.js.map +0 -1
  318. package/dist/chunk-POV2KL2P.js.map +0 -1
  319. package/dist/chunk-RGT6DM5W.js.map +0 -1
  320. /package/dist/{chunk-OAEYCKBN.js.map → chunk-2K7WPHI3.js.map} +0 -0
  321. /package/dist/{chunk-7RRXLCOO.js.map → chunk-2KWYNFVE.js.map} +0 -0
  322. /package/dist/{chunk-JBI7ITL2.js.map → chunk-3BNQDOHC.js.map} +0 -0
  323. /package/dist/{chunk-YCCY77W5.js.map → chunk-3IF3I3FI.js.map} +0 -0
  324. /package/dist/{chunk-3KREF4ZF.js.map → chunk-3PQ5MZMJ.js.map} +0 -0
  325. /package/dist/{chunk-L7NQCLFU.js.map → chunk-3RHZBO7L.js.map} +0 -0
  326. /package/dist/{chunk-A4OCNJWW.js.map → chunk-3UABIEP3.js.map} +0 -0
  327. /package/dist/{chunk-XIG3DXXX.js.map → chunk-5L7N5HER.js.map} +0 -0
  328. /package/dist/{chunk-6WBKOM5K.js.map → chunk-7DK6YVJU.js.map} +0 -0
  329. /package/dist/{chunk-ASYR22BJ.js.map → chunk-7XGHJD75.js.map} +0 -0
  330. /package/dist/{chunk-OB56SZGL.js.map → chunk-B7CNP5HW.js.map} +0 -0
  331. /package/dist/{chunk-PE4ZW3IA.js.map → chunk-BLW6KLDR.js.map} +0 -0
  332. /package/dist/{chunk-QKMJUOVH.js.map → chunk-CRG24BGI.js.map} +0 -0
  333. /package/dist/{chunk-LKMMJKXU.js.map → chunk-CYZZHWNK.js.map} +0 -0
  334. /package/dist/{chunk-PH36XEB3.js.map → chunk-DQZCQV2C.js.map} +0 -0
  335. /package/dist/{chunk-DUNG7D4B.js.map → chunk-DSF4VT7L.js.map} +0 -0
  336. /package/dist/{chunk-YOJASBHJ.js.map → chunk-DYNJQ3HJ.js.map} +0 -0
  337. /package/dist/{chunk-CXMVNYBY.js.map → chunk-GEB4WSZH.js.map} +0 -0
  338. /package/dist/{chunk-RIF6L54B.js.map → chunk-H224XFFD.js.map} +0 -0
  339. /package/dist/{chunk-362OGE5J.js.map → chunk-HBRKA67N.js.map} +0 -0
  340. /package/dist/{chunk-3RMDIO4G.js.map → chunk-I5T5PQQW.js.map} +0 -0
  341. /package/dist/{chunk-IJFAF3A7.js.map → chunk-IWEUSZY3.js.map} +0 -0
  342. /package/dist/{chunk-SZ3YFVO5.js.map → chunk-JGJFL3PF.js.map} +0 -0
  343. /package/dist/{chunk-XEYLYUDM.js.map → chunk-JH5BKA3Y.js.map} +0 -0
  344. /package/dist/{chunk-U4O47P6S.js.map → chunk-JQ3D5QP6.js.map} +0 -0
  345. /package/dist/{chunk-X4ZRPE37.js.map → chunk-MBHWVRV5.js.map} +0 -0
  346. /package/dist/{chunk-JQWAANGN.js.map → chunk-OOCREE37.js.map} +0 -0
  347. /package/dist/{chunk-R2XVTUVR.js.map → chunk-OQRG34VG.js.map} +0 -0
  348. /package/dist/{chunk-RUEKY3VR.js.map → chunk-P52LYD6S.js.map} +0 -0
  349. /package/dist/{chunk-JDFTIK4L.js.map → chunk-PELRSZFU.js.map} +0 -0
  350. /package/dist/{chunk-CTKQCKRD.js.map → chunk-PK6TRXV4.js.map} +0 -0
  351. /package/dist/{chunk-3OBC6BOV.js.map → chunk-QFTBXHOY.js.map} +0 -0
  352. /package/dist/{chunk-QTNHAX2Z.js.map → chunk-QS2DCLG6.js.map} +0 -0
  353. /package/dist/{chunk-MYWROMGO.js.map → chunk-QU3JX53V.js.map} +0 -0
  354. /package/dist/{chunk-5JSRM7WC.js.map → chunk-RB3X6CEE.js.map} +0 -0
  355. /package/dist/{chunk-DW6F7354.js.map → chunk-S36NC22G.js.map} +0 -0
  356. /package/dist/{chunk-6N4AA2Y7.js.map → chunk-SNYJSACF.js.map} +0 -0
  357. /package/dist/{chunk-TFMDZQK4.js.map → chunk-TTZPO345.js.map} +0 -0
  358. /package/dist/{chunk-UITQ7KMK.js.map → chunk-TYNK662L.js.map} +0 -0
  359. /package/dist/{chunk-YBH4SPMM.js.map → chunk-URHX4FAQ.js.map} +0 -0
  360. /package/dist/{chunk-4CXCOR6F.js.map → chunk-V2UZQS2K.js.map} +0 -0
  361. /package/dist/{chunk-VIRYHNEM.js.map → chunk-WY5PBZ7Q.js.map} +0 -0
  362. /package/dist/{chunk-KAIUDBHM.js.map → chunk-WYUBTRRV.js.map} +0 -0
  363. /package/dist/{chunk-ISFFETTG.js.map → chunk-XG7NTGUH.js.map} +0 -0
  364. /package/dist/{chunk-GWEENWIS.js.map → chunk-Y2HPRRVP.js.map} +0 -0
  365. /package/dist/{chunk-5CQ5HYJW.js.map → chunk-YMG4CXGI.js.map} +0 -0
  366. /package/dist/{chunk-UGGJ3KDT.js.map → chunk-YTINPQKU.js.map} +0 -0
  367. /package/dist/{chunk-U3PPLAFB.js.map → chunk-ZN6YATOG.js.map} +0 -0
  368. /package/dist/{chunk-WHQKH57H.js.map → chunk-ZXIUIIUE.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-7V6ZRQYW.js";
5
5
  import {
6
6
  useUiTheme
7
- } from "./chunk-A4OCNJWW.js";
7
+ } from "./chunk-3UABIEP3.js";
8
8
  import {
9
9
  resolveTestId
10
10
  } from "./chunk-TYJR4GOF.js";
@@ -63,4 +63,4 @@ export {
63
63
  layoutToSx,
64
64
  Box
65
65
  };
66
- //# sourceMappingURL=chunk-6WBKOM5K.js.map
66
+ //# sourceMappingURL=chunk-7DK6YVJU.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-5M4TYFR3.js";
4
4
  import {
5
5
  PreviewBox
6
- } from "./chunk-OB56SZGL.js";
6
+ } from "./chunk-B7CNP5HW.js";
7
7
  import {
8
8
  useDataViewsCopy
9
9
  } from "./chunk-KHG57NAE.js";
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-2EAAWOZ2.js";
29
29
  import {
30
30
  Text
31
- } from "./chunk-YBH4SPMM.js";
31
+ } from "./chunk-URHX4FAQ.js";
32
32
  import {
33
33
  sxRem
34
34
  } from "./chunk-YKCAJ2TN.js";
@@ -268,4 +268,4 @@ function SaveViewModal({
268
268
  export {
269
269
  SaveViewModal
270
270
  };
271
- //# sourceMappingURL=chunk-ASYR22BJ.js.map
271
+ //# sourceMappingURL=chunk-7XGHJD75.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-WEBEOBN5.js";
10
10
  import {
11
11
  Text
12
- } from "./chunk-YBH4SPMM.js";
12
+ } from "./chunk-URHX4FAQ.js";
13
13
  import {
14
14
  sxRem
15
15
  } from "./chunk-YKCAJ2TN.js";
@@ -54,4 +54,4 @@ function PreviewBox({ preview, testIdPrefix }) {
54
54
  export {
55
55
  PreviewBox
56
56
  };
57
- //# sourceMappingURL=chunk-OB56SZGL.js.map
57
+ //# sourceMappingURL=chunk-B7CNP5HW.js.map
@@ -9,12 +9,12 @@ import {
9
9
  import {
10
10
  HEADING_SCALE
11
11
  } from "./chunk-FZXKH2ZT.js";
12
- import {
13
- resolveFieldHeight
14
- } from "./chunk-PZBK3F52.js";
15
12
  import {
16
13
  DEFAULT_FIELD_RADIUS
17
14
  } from "./chunk-26X4CZVR.js";
15
+ import {
16
+ resolveFieldHeight
17
+ } from "./chunk-PZBK3F52.js";
18
18
  import {
19
19
  darken,
20
20
  lighten
@@ -182,4 +182,4 @@ export {
182
182
  createUiTheme,
183
183
  DEFAULT_UI_THEME
184
184
  };
185
- //# sourceMappingURL=chunk-PE4ZW3IA.js.map
185
+ //# sourceMappingURL=chunk-BLW6KLDR.js.map
@@ -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
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  useAutocomplete
3
- } from "./chunk-362OGE5J.js";
3
+ } from "./chunk-HBRKA67N.js";
4
4
  import {
5
5
  AutocompleteInput,
6
6
  ChipList,
7
7
  DefaultSuggestion,
8
8
  SuggestionListBox
9
- } from "./chunk-BN742L2M.js";
9
+ } from "./chunk-H6AWKLOV.js";
10
10
  import {
11
11
  defaultGetKey,
12
12
  defaultGetLabel,
13
13
  defaultGetSuggestionType
14
- } from "./chunk-XBHQT4BQ.js";
14
+ } from "./chunk-JXS56EW5.js";
15
15
 
16
16
  // src/components/form/Autocomplete/Autocomplete.tsx
17
17
  import Box from "@mui/material/Box/index.js";
@@ -131,4 +131,4 @@ export {
131
131
  Autocomplete,
132
132
  Autocomplete_default
133
133
  };
134
- //# sourceMappingURL=chunk-PH36XEB3.js.map
134
+ //# sourceMappingURL=chunk-DQZCQV2C.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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  highlightLabel
3
- } from "./chunk-XBHQT4BQ.js";
3
+ } from "./chunk-JXS56EW5.js";
4
4
  import {
5
5
  fieldTextFieldStyles
6
6
  } from "./chunk-CGO452DC.js";
@@ -23,6 +23,7 @@ import Popper from "@mui/material/Popper/index.js";
23
23
  import TextField from "@mui/material/TextField/index.js";
24
24
  import Typography from "@mui/material/Typography/index.js";
25
25
  import { styled, useTheme } from "@mui/material/styles/index.js";
26
+ import React from "react";
26
27
  import { jsx, jsxs } from "react/jsx-runtime";
27
28
  var StyledPopper = styled(Popper)(({ theme }) => ({
28
29
  zIndex: theme.zIndex.tooltip,
@@ -144,7 +145,7 @@ function DefaultSuggestion({
144
145
  }) {
145
146
  const label = getLabel(item);
146
147
  const description = getDescription?.(item);
147
- const displayLabel = highlightLabel(label, state.query, matchMode);
148
+ const segments = highlightLabel(label, state.query, matchMode);
148
149
  return /* @__PURE__ */ jsxs(
149
150
  Box,
150
151
  {
@@ -153,7 +154,8 @@ function DefaultSuggestion({
153
154
  alignItems: "center",
154
155
  gap: 1,
155
156
  width: "100%",
156
- // Bold the matched prefix (not a yellow <mark> highlight).
157
+ // Bold every run the query matched, in any match mode but fuzzy — not
158
+ // only a prefix, even under `startsWith` (not a yellow <mark> highlight).
157
159
  "& mark": { backgroundColor: "transparent", color: "inherit", fontWeight: 700 }
158
160
  },
159
161
  children: [
@@ -161,7 +163,13 @@ function DefaultSuggestion({
161
163
  /* @__PURE__ */ jsx(
162
164
  ListItemText,
163
165
  {
164
- primary: /* @__PURE__ */ jsx("span", { dangerouslySetInnerHTML: { __html: displayLabel } }),
166
+ primary: /* @__PURE__ */ jsx("span", { children: segments.map(
167
+ (segment, index) => (
168
+ // The runs are derived from one label and never reorder, so the
169
+ // position is a stable key.
170
+ segment.match ? /* @__PURE__ */ jsx("mark", { children: segment.text }, index) : /* @__PURE__ */ jsx(React.Fragment, { children: segment.text }, index)
171
+ )
172
+ ) }),
165
173
  secondary: description
166
174
  }
167
175
  )
@@ -267,4 +275,4 @@ export {
267
275
  NoResultsRow,
268
276
  SuggestionListBox
269
277
  };
270
- //# sourceMappingURL=chunk-BN742L2M.js.map
278
+ //# sourceMappingURL=chunk-H6AWKLOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/Autocomplete/Autocomplete.parts.tsx"],"sourcesContent":["import LinkIcon from '@mui/icons-material/Link';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Chip from '@mui/material/Chip/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport List from '@mui/material/List/index.js';\nimport ListItem from '@mui/material/ListItem/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Popper from '@mui/material/Popper/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { highlightLabel, type MatchMode } from './Autocomplete.helpers';\nimport type { SuggestionItemState, SuggestionType } from './Autocomplete.types';\nimport type { AutocompleteCopy } from '../../../copy';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\nimport { rem, sxRem } from '../../../tokens/relative';\n\nconst StyledPopper = styled(Popper)(({ theme }) => ({\n zIndex: theme.zIndex.tooltip,\n width: '100%',\n maxHeight: rem(theme, 300),\n overflow: 'auto',\n // Popper.js writes the computed position (and stamps `data-popper-placement`)\n // in a layout effect that can land AFTER the first paint. Until it does, the\n // element would paint once unpositioned — at the offset-parent origin, far\n // left and full width — then jump under the input, a visible per-keystroke\n // flash as the list re-renders. Hide that unpositioned first frame; it becomes\n // visible the instant popper assigns a placement.\n '&:not([data-popper-placement])': { visibility: 'hidden' },\n}));\n\nconst InlineSuggestionDisplay = styled('div')(({ theme }) => ({\n position: 'absolute',\n pointerEvents: 'none',\n left: rem(theme, 14), // Match TextField padding\n top: '50%',\n transform: 'translateY(-50%)',\n fontSize: 'inherit',\n fontFamily: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n zIndex: 1,\n}));\n\nconst UserTextTwin = styled('span')({\n visibility: 'hidden',\n});\n\nconst GhostText = styled('span')(({ theme }) => ({\n color: theme.palette.text.secondary,\n opacity: 0.6,\n}));\n\nconst ChipContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(0.5),\n marginBottom: theme.spacing(1),\n}));\n\n/** Leading icon for a typed suggestion (search vs. link); null for untyped items. */\nexport function suggestionTypeIcon(type: SuggestionType | undefined): React.ReactNode {\n const sx = { color: 'text.secondary', flexShrink: 0 } as const;\n if (type === 'link') return <LinkIcon fontSize=\"small\" sx={sx} />;\n if (type === 'search') return <SearchIcon fontSize=\"small\" sx={sx} />;\n return null;\n}\n\n/** The inline ghost-text overlay: an invisible twin of the typed text + the grey remainder. */\nfunction GhostOverlay({ inputValue, ghost }: { inputValue: string; ghost: string }): React.JSX.Element {\n return (\n <InlineSuggestionDisplay>\n <UserTextTwin>{inputValue}</UserTextTwin>\n <GhostText>{ghost}</GhostText>\n </InlineSuggestionDisplay>\n );\n}\n\nexport interface AutocompleteInputProps {\n id: string;\n listId: string;\n inputRef: React.RefObject<HTMLInputElement | null>;\n inputValue: string;\n ghost: string;\n showGhost: boolean;\n isInputFocused: boolean;\n open: boolean;\n activeDescendant: string | undefined;\n isLoading: boolean;\n disabled: boolean;\n autoFocus: boolean;\n placeholder: string;\n startAdornment?: React.ReactNode;\n inputAriaLabel?: string;\n inputClassName?: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n onFocus: () => void;\n onBlur: () => void;\n onCompositionStart: () => void;\n onCompositionEnd: () => void;\n}\n\n/** The combobox text field plus its inline ghost-text overlay. */\nexport function AutocompleteInput(props: AutocompleteInputProps): React.JSX.Element {\n const theme = useTheme();\n const showOverlay = Boolean(props.ghost) && props.showGhost && props.isInputFocused;\n return (\n <Box sx={{ position: 'relative' }}>\n {showOverlay && <GhostOverlay inputValue={props.inputValue} ghost={props.ghost} />}\n <TextField\n ref={props.inputRef}\n fullWidth\n sx={fieldTextFieldStyles}\n value={props.inputValue}\n onChange={props.onChange}\n onKeyDown={props.onKeyDown}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onCompositionStart={props.onCompositionStart}\n onCompositionEnd={props.onCompositionEnd}\n placeholder={props.placeholder}\n disabled={props.disabled}\n autoFocus={props.autoFocus}\n className={props.inputClassName}\n InputProps={{\n startAdornment: props.startAdornment,\n endAdornment: props.isLoading ? <CircularProgress size={rem(theme, 20)} /> : undefined,\n }}\n inputProps={{\n role: 'combobox',\n 'aria-expanded': props.open,\n 'aria-controls': props.open ? props.listId : undefined,\n 'aria-activedescendant': props.activeDescendant,\n 'aria-autocomplete': 'list',\n 'aria-label': props.inputAriaLabel,\n id: props.id,\n }}\n />\n </Box>\n );\n}\n\n/** Selected-item chips (multiple mode). */\nexport function ChipList<T>({\n items,\n getKey,\n getLabel,\n onRemove,\n chipClassName,\n}: {\n items: T[];\n getKey: (item: T) => string;\n getLabel: (item: T) => string;\n onRemove: (item: T) => void;\n chipClassName?: string;\n}): React.JSX.Element {\n return (\n <ChipContainer data-testid=\"selected-items-container\">\n {items.map((item, index) => (\n <Chip\n key={`${getKey(item)}-${index}`}\n label={getLabel(item)}\n onDelete={() => onRemove(item)}\n size=\"small\"\n className={chipClassName}\n data-testid={`selected-chip-${index}`}\n />\n ))}\n </ChipContainer>\n );\n}\n\n/** Default suggestion row: per-type icon + highlighted label + optional description. */\nexport function DefaultSuggestion<T>({\n item,\n state,\n getLabel,\n getDescription,\n getSuggestionType,\n matchMode,\n}: {\n item: T;\n state: SuggestionItemState;\n getLabel: (item: T) => string;\n getDescription?: (item: T) => string | undefined;\n getSuggestionType: (item: T) => SuggestionType | undefined;\n matchMode: MatchMode;\n}): React.JSX.Element {\n const label = getLabel(item);\n const description = getDescription?.(item);\n // Each run is a React text child, so the label is escaped however it reads.\n const segments = highlightLabel(label, state.query, matchMode);\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n width: '100%',\n // Bold every run the query matched, in any match mode but fuzzy — not\n // only a prefix, even under `startsWith` (not a yellow <mark> highlight).\n '& mark': { backgroundColor: 'transparent', color: 'inherit', fontWeight: 700 },\n }}\n >\n {suggestionTypeIcon(getSuggestionType(item))}\n <ListItemText\n primary={\n <span>\n {segments.map((segment, index) =>\n // The runs are derived from one label and never reorder, so the\n // position is a stable key.\n segment.match ? (\n <mark key={index}>{segment.text}</mark>\n ) : (\n <React.Fragment key={index}>{segment.text}</React.Fragment>\n ),\n )}\n </span>\n }\n secondary={description}\n />\n </Box>\n );\n}\n\n/** A \"Loading…\" row shown while async suggestions resolve. */\nexport function LoadingRow({ label }: { label: string }): React.JSX.Element {\n const theme = useTheme();\n return (\n <ListItem>\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n <CircularProgress size={rem(theme, 16)} />\n <Typography variant=\"body2\" color=\"text.secondary\">\n {label}\n </Typography>\n </Box>\n </ListItem>\n );\n}\n\n/** The empty \"No results found\" row. */\nexport function NoResultsRow({ label }: { label: string }): React.JSX.Element {\n return (\n <ListItem>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {label}\n </Typography>\n </ListItem>\n );\n}\n\n/** Keep the Popper the same width as its anchor input. */\nconst SAME_WIDTH_MODIFIER = {\n name: 'sameWidth',\n enabled: true,\n fn: ({ state }: { state: { elements: { reference?: unknown }; styles: { popper?: Record<string, string> }; rects: { reference: { width: number } } } }) => {\n if (state.elements.reference && state.styles.popper) {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n }\n },\n phase: 'beforeWrite' as const,\n requires: ['computeStyles'],\n};\n\nexport interface SuggestionListBoxProps<T> {\n copy: AutocompleteCopy;\n open: boolean;\n anchorEl: HTMLElement | null;\n portal: boolean | { container?: HTMLElement };\n listRef: React.RefObject<HTMLUListElement | null>;\n listId: string;\n optionIdPrefix: string;\n items: T[];\n activeIndex: number;\n isLoading: boolean;\n showNoResults: boolean;\n getKey: (item: T) => string;\n onSelect: (item: T) => void;\n onHover: (index: number) => void;\n renderItem: (item: T, active: boolean) => React.ReactNode;\n listClassName?: string;\n itemClassName?: string;\n activeItemClassName?: string;\n}\n\n/** The suggestions dropdown: a same-width Popper with the option list + loading/empty rows. */\nexport function SuggestionListBox<T>({\n copy,\n open,\n anchorEl,\n portal,\n listRef,\n listId,\n optionIdPrefix,\n items,\n activeIndex,\n isLoading,\n showNoResults,\n getKey,\n onSelect,\n onHover,\n renderItem,\n listClassName,\n itemClassName,\n activeItemClassName,\n}: SuggestionListBoxProps<T>): React.JSX.Element {\n return (\n <StyledPopper\n open={open}\n anchorEl={anchorEl}\n placement=\"bottom-start\"\n disablePortal={!portal}\n modifiers={[SAME_WIDTH_MODIFIER]}\n >\n <Paper elevation={8} className={listClassName} data-testid=\"suggestions-dropdown\">\n <List\n ref={listRef}\n role=\"listbox\"\n id={listId}\n dense\n sx={{ maxHeight: sxRem(300), overflow: 'auto' }}\n data-testid=\"suggestions-list\"\n >\n {items.map((item, index) => (\n <ListItem\n key={getKey(item)}\n id={`${optionIdPrefix}-${index}`}\n role=\"option\"\n component=\"div\"\n sx={{\n cursor: 'pointer',\n backgroundColor: index === activeIndex ? 'action.hover' : 'transparent',\n '&:hover': { backgroundColor: 'action.hover' },\n }}\n aria-selected={index === activeIndex}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => onSelect(item)}\n onMouseEnter={() => onHover(index)}\n className={`${itemClassName} ${index === activeIndex ? activeItemClassName : ''}`}\n data-testid={`suggestion-item-${index}`}\n >\n {renderItem(item, index === activeIndex)}\n </ListItem>\n ))}\n {isLoading && <LoadingRow label={copy.loading} />}\n {showNoResults && <NoResultsRow label={copy.noResults} />}\n </List>\n </Paper>\n </StyledPopper>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  handleAutocompleteKey
3
- } from "./chunk-JDFTIK4L.js";
3
+ } from "./chunk-PELRSZFU.js";
4
4
  import {
5
5
  defaultGetKey,
6
6
  defaultGetLabel,
@@ -9,7 +9,7 @@ import {
9
9
  defaultOpenLink,
10
10
  filterSuggestions,
11
11
  firstGhostSuggestion
12
- } from "./chunk-XBHQT4BQ.js";
12
+ } from "./chunk-JXS56EW5.js";
13
13
 
14
14
  // src/components/form/Autocomplete/useAutocomplete.ts
15
15
  import { useEffect, useId, useRef, useState } from "react";
@@ -258,4 +258,4 @@ function useAutocomplete(p) {
258
258
  export {
259
259
  useAutocomplete
260
260
  };
261
- //# sourceMappingURL=chunk-362OGE5J.js.map
261
+ //# sourceMappingURL=chunk-HBRKA67N.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
@@ -67,9 +67,9 @@ function escapeRegExp(value) {
67
67
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
68
68
  }
69
69
  function highlightLabel(label, query, matchMode) {
70
- if (!query || matchMode === "fuzzy") return label;
70
+ if (!query || matchMode === "fuzzy") return [{ text: label, match: false }];
71
71
  const regex = new RegExp(`(${escapeRegExp(query)})`, "gi");
72
- return label.replace(regex, "<mark>$1</mark>");
72
+ return label.split(regex).map((text, index) => ({ text, match: index % 2 === 1 })).filter((segment) => segment.text !== "");
73
73
  }
74
74
 
75
75
  export {
@@ -82,4 +82,4 @@ export {
82
82
  firstGhostSuggestion,
83
83
  highlightLabel
84
84
  };
85
- //# sourceMappingURL=chunk-XBHQT4BQ.js.map
85
+ //# sourceMappingURL=chunk-JXS56EW5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/form/Autocomplete/Autocomplete.helpers.ts"],"sourcesContent":["import type { SuggestionType } from './Autocomplete.types';\n\n/** Local filtering strategy. */\nexport type MatchMode = 'startsWith' | 'contains' | 'fuzzy';\n\n/** Default key extractor: id/key/value/label, else the item itself stringified. */\nexport const defaultGetKey = <T,>(item: T): string => {\n if (typeof item === 'string') return item;\n if (typeof item === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n return String(obj.id ?? obj.key ?? obj.value ?? obj.label ?? obj);\n }\n return String(item);\n};\n\n/** Default label extractor: label/name/text, else the item itself stringified. */\nexport const defaultGetLabel = <T,>(item: T): string => {\n if (typeof item === 'string') return item;\n if (typeof item === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n return String(obj.label ?? obj.name ?? obj.text ?? obj);\n }\n return String(item);\n};\n\n/** Default suggestion-type extractor: reads a `type: 'search' | 'link'` field. */\nexport const defaultGetSuggestionType = <T,>(item: T): SuggestionType | undefined => {\n if (typeof item === 'object' && item !== null) {\n const { type } = item as { type?: unknown };\n if (type === 'search' || type === 'link') return type;\n }\n return undefined;\n};\n\n/** Default URL extractor for `link` suggestions: reads a `url: string` field. */\nexport const defaultGetUrl = <T,>(item: T): string | undefined => {\n if (typeof item === 'object' && item !== null) {\n const { url } = item as { url?: unknown };\n if (typeof url === 'string') return url;\n }\n return undefined;\n};\n\n/** Default link opener: a new tab with `noopener,noreferrer`. SSR-guarded. */\nexport const defaultOpenLink = (url: string): void => {\n if (typeof window !== 'undefined') {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n};\n\n/** Fuzzy match: every char of `query` appears in `label`, in order. */\nfunction fuzzyMatch(label: string, query: string): boolean {\n let labelIndex = 0;\n for (let queryIndex = 0; queryIndex < query.length; queryIndex++) {\n const char = query[queryIndex];\n if (!char) continue;\n labelIndex = label.indexOf(char, labelIndex);\n if (labelIndex === -1) return false;\n labelIndex++;\n }\n return true;\n}\n\n/** True when `label` matches `query` under the given {@link MatchMode} (case-insensitive). */\nfunction matchesQuery(label: string, query: string, matchMode: MatchMode): boolean {\n const haystack = label.toLowerCase();\n const needle = query.toLowerCase();\n if (matchMode === 'startsWith') return haystack.startsWith(needle);\n if (matchMode === 'fuzzy') return fuzzyMatch(haystack, needle);\n return haystack.includes(needle);\n}\n\n/** Filter `suggestions` by `query` under `matchMode`; an empty query returns all. */\nexport function filterSuggestions<T>(\n suggestions: T[],\n query: string,\n matchMode: MatchMode,\n getLabel: (item: T) => string,\n): T[] {\n if (!query) return suggestions;\n return suggestions.filter((item) => matchesQuery(getLabel(item), query, matchMode));\n}\n\n/**\n * The first suggestion eligible for inline ghost completion: a non-`link` item\n * whose label starts with `inputValue` (case-insensitive) but isn't equal to it.\n * Shared by the ghost-text effect and ArrowRight completion.\n */\nexport function firstGhostSuggestion<T>(\n list: T[],\n inputValue: string,\n getLabel: (item: T) => string,\n getSuggestionType: (item: T) => SuggestionType | undefined,\n): T | undefined {\n const needle = inputValue.toLowerCase();\n return list.find((item) => {\n const label = getLabel(item).toLowerCase();\n return getSuggestionType(item) !== 'link' && label.startsWith(needle) && label !== needle;\n });\n}\n\n/** Escape a user query for safe use inside a `RegExp`. */\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Wrap query matches in `<mark>` for the default suggestion renderer. Skipped for\n * fuzzy mode (non-contiguous matches) and empty queries. Returns HTML.\n */\nexport function highlightLabel(label: string, query: string, matchMode: MatchMode): string {\n if (!query || matchMode === 'fuzzy') return label;\n const regex = new RegExp(`(${escapeRegExp(query)})`, 'gi');\n return label.replace(regex, '<mark>$1</mark>');\n}\n"],"mappings":";AAMO,IAAM,gBAAgB,CAAK,SAAoB;AACpD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,MAAM;AACZ,WAAO,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,GAAG;AAAA,EAClE;AACA,SAAO,OAAO,IAAI;AACpB;AAGO,IAAM,kBAAkB,CAAK,SAAoB;AACtD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,MAAM;AACZ,WAAO,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,GAAG;AAAA,EACxD;AACA,SAAO,OAAO,IAAI;AACpB;AAGO,IAAM,2BAA2B,CAAK,SAAwC;AACnF,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,EAAE,KAAK,IAAI;AACjB,QAAI,SAAS,YAAY,SAAS,OAAQ,QAAO;AAAA,EACnD;AACA,SAAO;AACT;AAGO,IAAM,gBAAgB,CAAK,SAAgC;AAChE,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,EAAE,IAAI,IAAI;AAChB,QAAI,OAAO,QAAQ,SAAU,QAAO;AAAA,EACtC;AACA,SAAO;AACT;AAGO,IAAM,kBAAkB,CAAC,QAAsB;AACpD,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,KAAK,KAAK,UAAU,qBAAqB;AAAA,EAClD;AACF;AAGA,SAAS,WAAW,OAAe,OAAwB;AACzD,MAAI,aAAa;AACjB,WAAS,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc;AAChE,UAAM,OAAO,MAAM,UAAU;AAC7B,QAAI,CAAC,KAAM;AACX,iBAAa,MAAM,QAAQ,MAAM,UAAU;AAC3C,QAAI,eAAe,GAAI,QAAO;AAC9B;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,aAAa,OAAe,OAAe,WAA+B;AACjF,QAAM,WAAW,MAAM,YAAY;AACnC,QAAM,SAAS,MAAM,YAAY;AACjC,MAAI,cAAc,aAAc,QAAO,SAAS,WAAW,MAAM;AACjE,MAAI,cAAc,QAAS,QAAO,WAAW,UAAU,MAAM;AAC7D,SAAO,SAAS,SAAS,MAAM;AACjC;AAGO,SAAS,kBACd,aACA,OACA,WACA,UACK;AACL,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,YAAY,OAAO,CAAC,SAAS,aAAa,SAAS,IAAI,GAAG,OAAO,SAAS,CAAC;AACpF;AAOO,SAAS,qBACd,MACA,YACA,UACA,mBACe;AACf,QAAM,SAAS,WAAW,YAAY;AACtC,SAAO,KAAK,KAAK,CAAC,SAAS;AACzB,UAAM,QAAQ,SAAS,IAAI,EAAE,YAAY;AACzC,WAAO,kBAAkB,IAAI,MAAM,UAAU,MAAM,WAAW,MAAM,KAAK,UAAU;AAAA,EACrF,CAAC;AACH;AAGA,SAAS,aAAa,OAAuB;AAC3C,SAAO,MAAM,QAAQ,uBAAuB,MAAM;AACpD;AAMO,SAAS,eAAe,OAAe,OAAe,WAA8B;AACzF,MAAI,CAAC,SAAS,cAAc,QAAS,QAAO;AAC5C,QAAM,QAAQ,IAAI,OAAO,IAAI,aAAa,KAAK,CAAC,KAAK,IAAI;AACzD,SAAO,MAAM,QAAQ,OAAO,iBAAiB;AAC/C;","names":[]}
1
+ {"version":3,"sources":["../src/components/form/Autocomplete/Autocomplete.helpers.ts"],"sourcesContent":["import type { SuggestionType } from './Autocomplete.types';\n\n/** Local filtering strategy. */\nexport type MatchMode = 'startsWith' | 'contains' | 'fuzzy';\n\n/** Default key extractor: id/key/value/label, else the item itself stringified. */\nexport const defaultGetKey = <T,>(item: T): string => {\n if (typeof item === 'string') return item;\n if (typeof item === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n return String(obj.id ?? obj.key ?? obj.value ?? obj.label ?? obj);\n }\n return String(item);\n};\n\n/** Default label extractor: label/name/text, else the item itself stringified. */\nexport const defaultGetLabel = <T,>(item: T): string => {\n if (typeof item === 'string') return item;\n if (typeof item === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n return String(obj.label ?? obj.name ?? obj.text ?? obj);\n }\n return String(item);\n};\n\n/** Default suggestion-type extractor: reads a `type: 'search' | 'link'` field. */\nexport const defaultGetSuggestionType = <T,>(item: T): SuggestionType | undefined => {\n if (typeof item === 'object' && item !== null) {\n const { type } = item as { type?: unknown };\n if (type === 'search' || type === 'link') return type;\n }\n return undefined;\n};\n\n/** Default URL extractor for `link` suggestions: reads a `url: string` field. */\nexport const defaultGetUrl = <T,>(item: T): string | undefined => {\n if (typeof item === 'object' && item !== null) {\n const { url } = item as { url?: unknown };\n if (typeof url === 'string') return url;\n }\n return undefined;\n};\n\n/** Default link opener: a new tab with `noopener,noreferrer`. SSR-guarded. */\nexport const defaultOpenLink = (url: string): void => {\n if (typeof window !== 'undefined') {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n};\n\n/** Fuzzy match: every char of `query` appears in `label`, in order. */\nfunction fuzzyMatch(label: string, query: string): boolean {\n let labelIndex = 0;\n for (let queryIndex = 0; queryIndex < query.length; queryIndex++) {\n const char = query[queryIndex];\n if (!char) continue;\n labelIndex = label.indexOf(char, labelIndex);\n if (labelIndex === -1) return false;\n labelIndex++;\n }\n return true;\n}\n\n/** True when `label` matches `query` under the given {@link MatchMode} (case-insensitive). */\nfunction matchesQuery(label: string, query: string, matchMode: MatchMode): boolean {\n const haystack = label.toLowerCase();\n const needle = query.toLowerCase();\n if (matchMode === 'startsWith') return haystack.startsWith(needle);\n if (matchMode === 'fuzzy') return fuzzyMatch(haystack, needle);\n return haystack.includes(needle);\n}\n\n/** Filter `suggestions` by `query` under `matchMode`; an empty query returns all. */\nexport function filterSuggestions<T>(\n suggestions: T[],\n query: string,\n matchMode: MatchMode,\n getLabel: (item: T) => string,\n): T[] {\n if (!query) return suggestions;\n return suggestions.filter((item) => matchesQuery(getLabel(item), query, matchMode));\n}\n\n/**\n * The first suggestion eligible for inline ghost completion: a non-`link` item\n * whose label starts with `inputValue` (case-insensitive) but isn't equal to it.\n * Shared by the ghost-text effect and ArrowRight completion.\n */\nexport function firstGhostSuggestion<T>(\n list: T[],\n inputValue: string,\n getLabel: (item: T) => string,\n getSuggestionType: (item: T) => SuggestionType | undefined,\n): T | undefined {\n const needle = inputValue.toLowerCase();\n return list.find((item) => {\n const label = getLabel(item).toLowerCase();\n return getSuggestionType(item) !== 'link' && label.startsWith(needle) && label !== needle;\n });\n}\n\n/** Escape a user query for safe use inside a `RegExp`. */\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/** One run of a highlighted label: plain text, or text the query matched. */\nexport interface HighlightSegment {\n text: string;\n match: boolean;\n}\n\n/**\n * Split `label` into the runs the query matches and the runs between them, in\n * order, for the default suggestion renderer to wrap the matches in `<mark>`.\n * Every occurrence of the query matches, case-insensitively and literally (regex\n * metacharacters are escaped). Fuzzy mode (non-contiguous matches) and an empty\n * query yield the whole label as one unmatched run.\n *\n * Returns TEXT, never markup: a label is caller data (in a consumer, a user's\n * own display name), so the renderer must hand each run to React as a text\n * child, which escapes it. Building an HTML string here and injecting it is how\n * a label of `<img onerror=…>` once ran script in the host page.\n */\nexport function highlightLabel(label: string, query: string, matchMode: MatchMode): HighlightSegment[] {\n if (!query || matchMode === 'fuzzy') return [{ text: label, match: false }];\n // The capturing group makes `split` keep each match, at the odd indices.\n const regex = new RegExp(`(${escapeRegExp(query)})`, 'gi');\n return label\n .split(regex)\n .map((text, index) => ({ text, match: index % 2 === 1 }))\n .filter((segment) => segment.text !== '');\n}\n"],"mappings":";AAMO,IAAM,gBAAgB,CAAK,SAAoB;AACpD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,MAAM;AACZ,WAAO,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,GAAG;AAAA,EAClE;AACA,SAAO,OAAO,IAAI;AACpB;AAGO,IAAM,kBAAkB,CAAK,SAAoB;AACtD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,MAAM;AACZ,WAAO,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,GAAG;AAAA,EACxD;AACA,SAAO,OAAO,IAAI;AACpB;AAGO,IAAM,2BAA2B,CAAK,SAAwC;AACnF,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,EAAE,KAAK,IAAI;AACjB,QAAI,SAAS,YAAY,SAAS,OAAQ,QAAO;AAAA,EACnD;AACA,SAAO;AACT;AAGO,IAAM,gBAAgB,CAAK,SAAgC;AAChE,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,UAAM,EAAE,IAAI,IAAI;AAChB,QAAI,OAAO,QAAQ,SAAU,QAAO;AAAA,EACtC;AACA,SAAO;AACT;AAGO,IAAM,kBAAkB,CAAC,QAAsB;AACpD,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,KAAK,KAAK,UAAU,qBAAqB;AAAA,EAClD;AACF;AAGA,SAAS,WAAW,OAAe,OAAwB;AACzD,MAAI,aAAa;AACjB,WAAS,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc;AAChE,UAAM,OAAO,MAAM,UAAU;AAC7B,QAAI,CAAC,KAAM;AACX,iBAAa,MAAM,QAAQ,MAAM,UAAU;AAC3C,QAAI,eAAe,GAAI,QAAO;AAC9B;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,aAAa,OAAe,OAAe,WAA+B;AACjF,QAAM,WAAW,MAAM,YAAY;AACnC,QAAM,SAAS,MAAM,YAAY;AACjC,MAAI,cAAc,aAAc,QAAO,SAAS,WAAW,MAAM;AACjE,MAAI,cAAc,QAAS,QAAO,WAAW,UAAU,MAAM;AAC7D,SAAO,SAAS,SAAS,MAAM;AACjC;AAGO,SAAS,kBACd,aACA,OACA,WACA,UACK;AACL,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,YAAY,OAAO,CAAC,SAAS,aAAa,SAAS,IAAI,GAAG,OAAO,SAAS,CAAC;AACpF;AAOO,SAAS,qBACd,MACA,YACA,UACA,mBACe;AACf,QAAM,SAAS,WAAW,YAAY;AACtC,SAAO,KAAK,KAAK,CAAC,SAAS;AACzB,UAAM,QAAQ,SAAS,IAAI,EAAE,YAAY;AACzC,WAAO,kBAAkB,IAAI,MAAM,UAAU,MAAM,WAAW,MAAM,KAAK,UAAU;AAAA,EACrF,CAAC;AACH;AAGA,SAAS,aAAa,OAAuB;AAC3C,SAAO,MAAM,QAAQ,uBAAuB,MAAM;AACpD;AAoBO,SAAS,eAAe,OAAe,OAAe,WAA0C;AACrG,MAAI,CAAC,SAAS,cAAc,QAAS,QAAO,CAAC,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC;AAE1E,QAAM,QAAQ,IAAI,OAAO,IAAI,aAAa,KAAK,CAAC,KAAK,IAAI;AACzD,SAAO,MACJ,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,WAAW,EAAE,MAAM,OAAO,QAAQ,MAAM,EAAE,EAAE,EACvD,OAAO,CAAC,YAAY,QAAQ,SAAS,EAAE;AAC5C;","names":[]}
@@ -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