@persona/design-system 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +1 -1
  3. package/dist/Accordion.d.mts +1 -1
  4. package/dist/AccordionItem.d.mts +1 -1
  5. package/dist/{Action-DcK0fRrq.d.mts → Action-DT8WqfEg.d.mts} +3 -3
  6. package/dist/Action.d.mts +1 -1
  7. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  8. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  9. package/dist/ArrayValueControl.d.mts +1 -1
  10. package/dist/Attribute.d.mts +3 -3
  11. package/dist/{Badge-DLuyKRCQ.mjs → Badge-Bvn3afds.mjs} +2 -2
  12. package/dist/{Badge-DLuyKRCQ.mjs.map → Badge-Bvn3afds.mjs.map} +1 -1
  13. package/dist/BooleanValueControl.d.mts +1 -1
  14. package/dist/{Breadcrumb-CEHEUe8l.d.mts → Breadcrumb-BDbY1Ffu.d.mts} +1 -1
  15. package/dist/Breadcrumb.d.mts +1 -1
  16. package/dist/{Breadcrumbs-BQ-Gj6UV.d.mts → Breadcrumbs-C2ThOYJ-.d.mts} +2 -2
  17. package/dist/{Breadcrumbs-B8aXFPdV.mjs → Breadcrumbs-CQUe9VTM.mjs} +4 -4
  18. package/dist/{Breadcrumbs-B8aXFPdV.mjs.map → Breadcrumbs-CQUe9VTM.mjs.map} +1 -1
  19. package/dist/Breadcrumbs.d.mts +1 -1
  20. package/dist/{Button-DKUomFPj.d.mts → Button-CyjqQa5v.d.mts} +4 -4
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/{Calendar-BvsTQ3e1.d.mts → Calendar-DAfQCLOJ.d.mts} +1 -1
  23. package/dist/Calendar.d.mts +1 -1
  24. package/dist/CalendarBase.d.mts +1 -1
  25. package/dist/{Card-DMXDx1W7.d.mts → Card-CzRHVUFo.d.mts} +3 -3
  26. package/dist/Card.d.mts +1 -1
  27. package/dist/CardGrouping.d.mts +2 -2
  28. package/dist/{CardV2-JPGFAqui.mjs → CardV2-Dp4eHSE-.mjs} +6 -6
  29. package/dist/{CardV2-JPGFAqui.mjs.map → CardV2-Dp4eHSE-.mjs.map} +1 -1
  30. package/dist/{Checkbox-CVa8WOf2.d.mts → Checkbox-B2MZShdu.d.mts} +1 -1
  31. package/dist/{Checkbox-iSBIpu0l.mjs → Checkbox-BaJ-dGdX.mjs} +7 -3
  32. package/dist/{Checkbox-iSBIpu0l.mjs.map → Checkbox-BaJ-dGdX.mjs.map} +1 -1
  33. package/dist/Checkbox.d.mts +1 -1
  34. package/dist/{CheckboxGroupField-BMJwuTpJ.d.mts → CheckboxGroupField-BYB4OBlW.d.mts} +3 -3
  35. package/dist/CheckboxGroupField.d.mts +1 -1
  36. package/dist/ChoicesValueControl.d.mts +1 -1
  37. package/dist/{Combobox-BkpRqaxB.mjs → Combobox-CcFJo68g.mjs} +16 -8
  38. package/dist/Combobox-CcFJo68g.mjs.map +1 -0
  39. package/dist/{Combobox-C2R9eTPr.d.mts → Combobox-DH5ycYlG.d.mts} +3 -3
  40. package/dist/Combobox.d.mts +2 -2
  41. package/dist/{ComboboxBase-BghIk4Vk.d.mts → ComboboxBase-BQQSKUBU.d.mts} +6 -6
  42. package/dist/ComboboxBase.d.mts +1 -1
  43. package/dist/{ComboboxMultiSelect-CIOHnhrv.d.mts → ComboboxMultiSelect-Da3Gv1k5.d.mts} +2 -2
  44. package/dist/ComboboxMultiSelect.d.mts +1 -1
  45. package/dist/{ComboboxSingleSelect-C1JZxli3.d.mts → ComboboxSingleSelect-BUDovONU.d.mts} +4 -4
  46. package/dist/ComboboxSingleSelect.d.mts +1 -1
  47. package/dist/{CompactBar-DPJAY1NB.d.mts → CompactBar-D12R7Nm2.d.mts} +3 -3
  48. package/dist/CompactBar.d.mts +1 -1
  49. package/dist/{ConfigFormGroup-BBIJsQgy.mjs → ConfigFormGroup-CidT_cE9.mjs} +2 -2
  50. package/dist/{ConfigFormGroup-BBIJsQgy.mjs.map → ConfigFormGroup-CidT_cE9.mjs.map} +1 -1
  51. package/dist/{ControlBar-Cg36sjz3.d.mts → ControlBar-D9KflqmH.d.mts} +22 -9
  52. package/dist/ControlBar.d.mts +1 -1
  53. package/dist/DataTable-95ZxiPlV.mjs +1547 -0
  54. package/dist/DataTable-95ZxiPlV.mjs.map +1 -0
  55. package/dist/DataTable-fZ7SNbIH.d.mts +439 -0
  56. package/dist/DataTable.d.mts +2 -396
  57. package/dist/{DateField-BXUuqbnb.d.mts → DateField-DLz13Ksl.d.mts} +2 -2
  58. package/dist/DateField.d.mts +1 -1
  59. package/dist/{DatePicker-CjuR6ORz.mjs → DatePicker-D0cvVbzq.mjs} +369 -369
  60. package/dist/DatePicker-D0cvVbzq.mjs.map +1 -0
  61. package/dist/{DatePicker-Cmn1vViU.d.mts → DatePicker-DYVWmbrb.d.mts} +2 -2
  62. package/dist/DatePicker.d.mts +1 -1
  63. package/dist/{DateRangePicker-CKhp9Obv.d.mts → DateRangePicker-Be8TYtjz.d.mts} +3 -3
  64. package/dist/DateRangePicker.d.mts +1 -1
  65. package/dist/DateRangeValueControl.d.mts +2 -2
  66. package/dist/DateValueControl.d.mts +1 -1
  67. package/dist/{DropdownButton-CRJDAGjJ.mjs → DropdownButton-5oNcpsOq.mjs} +3 -3
  68. package/dist/{DropdownButton-CRJDAGjJ.mjs.map → DropdownButton-5oNcpsOq.mjs.map} +1 -1
  69. package/dist/DropdownButton.d.mts +2 -2
  70. package/dist/{DropdownMenu-C2BHv8Lc.mjs → DropdownMenu-CedsmO5h.mjs} +2 -2
  71. package/dist/{DropdownMenu-C2BHv8Lc.mjs.map → DropdownMenu-CedsmO5h.mjs.map} +1 -1
  72. package/dist/{DropdownMenu-CNkQDiJr.d.mts → DropdownMenu-DAa2kNrt.d.mts} +2 -2
  73. package/dist/DropdownMenu.d.mts +1 -1
  74. package/dist/{ErrorProps-oCHtJzEB.d.mts → ErrorProps-DH0fzeGf.d.mts} +1 -1
  75. package/dist/ErrorProps.d.mts +1 -1
  76. package/dist/{FieldRegistry-B7P4wC7y.d.mts → FieldRegistry-d5tGpSch.d.mts} +2 -2
  77. package/dist/FieldRegistry.d.mts +1 -1
  78. package/dist/{FilterBar-clWmrKkT.d.mts → FilterBar-Bh18VyOK.d.mts} +4 -4
  79. package/dist/FilterBar.d.mts +1 -1
  80. package/dist/FilterPickerMenu.d.mts +2 -2
  81. package/dist/FilterPill.d.mts +1 -1
  82. package/dist/FilterPopover.d.mts +1 -1
  83. package/dist/FloatValueControl.d.mts +5 -4
  84. package/dist/FloatingActionBar-CpvLefPm.d.mts +41 -0
  85. package/dist/FloatingActionBar.d.mts +2 -41
  86. package/dist/{FormControl-jfjKwUfK.mjs → FormControl-C4CiA0H-.mjs} +3 -3
  87. package/dist/{FormControl-jfjKwUfK.mjs.map → FormControl-C4CiA0H-.mjs.map} +1 -1
  88. package/dist/{FormControl-C44o35FL.d.mts → FormControl-DEG_0oXt.d.mts} +2 -2
  89. package/dist/FormControl.d.mts +1 -1
  90. package/dist/FormControlLabel.d.mts +1 -1
  91. package/dist/{FormField-C3nUzhGT.mjs → FormField-cSG93kuo.mjs} +15 -15
  92. package/dist/{FormField-C3nUzhGT.mjs.map → FormField-cSG93kuo.mjs.map} +1 -1
  93. package/dist/{FormField-CXznMtuS.d.mts → FormField-mLbXDJ9B.d.mts} +2 -2
  94. package/dist/FormField.d.mts +1 -1
  95. package/dist/{Grid-D0mlxk8_.mjs → Grid-DXVkhyNQ.mjs} +1 -1
  96. package/dist/{Grid-D0mlxk8_.mjs.map → Grid-DXVkhyNQ.mjs.map} +1 -1
  97. package/dist/{Header-DvpIsOUN.d.mts → Header-ayDu4VWE.d.mts} +1 -1
  98. package/dist/Header.d.mts +1 -1
  99. package/dist/{HelperTooltip-C4tgbLYw.d.mts → HelperTooltip-BB9Vznnx.d.mts} +2 -2
  100. package/dist/HelperTooltip.d.mts +1 -1
  101. package/dist/HighlightedText.d.mts +2 -2
  102. package/dist/{HoverCopyableField-1_LHm80n.mjs → HoverCopyableField-D-BubaRd.mjs} +2 -2
  103. package/dist/{HoverCopyableField-1_LHm80n.mjs.map → HoverCopyableField-D-BubaRd.mjs.map} +1 -1
  104. package/dist/{I18nContext-DlvagRAO.d.mts → I18nContext-TXS9M8t5.d.mts} +2 -2
  105. package/dist/I18nContext.d.mts +1 -1
  106. package/dist/{IconButton-Bt3WyiGq.d.mts → IconButton-Bigvu1Q4.d.mts} +2 -2
  107. package/dist/{IconButton-Cqxfmrea.mjs → IconButton-HWx5Hlmi.mjs} +8 -5
  108. package/dist/{IconButton-Cqxfmrea.mjs.map → IconButton-HWx5Hlmi.mjs.map} +1 -1
  109. package/dist/IconButton.d.mts +1 -1
  110. package/dist/ImageTile.d.mts +4 -3
  111. package/dist/IndexTableLayout.d.mts +45 -0
  112. package/dist/InlineCombobox.d.mts +1 -1
  113. package/dist/InlineInput.d.mts +1 -1
  114. package/dist/{Input-CAsOWM0S.d.mts → Input-Bg4bi6VZ.d.mts} +3 -3
  115. package/dist/{Input-Cg2HxteL.mjs → Input-Dap055xf.mjs} +3 -3
  116. package/dist/{Input-Cg2HxteL.mjs.map → Input-Dap055xf.mjs.map} +1 -1
  117. package/dist/Input.d.mts +1 -1
  118. package/dist/{InputProps-BU9iiBBz.d.mts → InputProps-Bl-G826g.d.mts} +2 -2
  119. package/dist/InputProps.d.mts +1 -1
  120. package/dist/Inserter-BKVrJ4M5.d.mts +12 -0
  121. package/dist/Inserter.d.mts +2 -12
  122. package/dist/IntegerValueControl.d.mts +5 -4
  123. package/dist/Link.d.mts +1 -1
  124. package/dist/{ListBox--IH6uofo.d.mts → ListBox-Bj5c626-.d.mts} +3 -3
  125. package/dist/{ListBox-CjNokYs6.mjs → ListBox-C80J7DCG.mjs} +7 -7
  126. package/dist/{ListBox-CjNokYs6.mjs.map → ListBox-C80J7DCG.mjs.map} +1 -1
  127. package/dist/ListBox.d.mts +1 -1
  128. package/dist/{ListBoxField-BUKop1Ca.d.mts → ListBoxField-DsJRabgE.d.mts} +4 -4
  129. package/dist/ListBoxField.d.mts +1 -1
  130. package/dist/{LoadingShimmer-C73hJqaW.mjs → LoadingShimmer-Bqjdut7i.mjs} +1 -1
  131. package/dist/{LoadingShimmer-C73hJqaW.mjs.map → LoadingShimmer-Bqjdut7i.mjs.map} +1 -1
  132. package/dist/LoadingShimmer.d.mts +1 -1
  133. package/dist/{LogicRow-C8Hdl8xB.d.mts → LogicRow-CcpD-Kk3.d.mts} +3 -3
  134. package/dist/LogicRow.d.mts +1 -1
  135. package/dist/MaskedInput.d.mts +2 -2
  136. package/dist/{Menu-BSHJpKyL.d.mts → Menu-C0FU9WEF.d.mts} +2 -2
  137. package/dist/{Menu-CwKmfxKI.mjs → Menu-Dw6Rcpk6.mjs} +1 -1
  138. package/dist/{Menu-CwKmfxKI.mjs.map → Menu-Dw6Rcpk6.mjs.map} +1 -1
  139. package/dist/Menu.d.mts +1 -1
  140. package/dist/{Modal-CoUHxtgN.d.mts → Modal-BuxggahW.d.mts} +6 -2
  141. package/dist/{Modal-BBIJVhv2.mjs → Modal-kjUptzg1.mjs} +7 -5
  142. package/dist/Modal-kjUptzg1.mjs.map +1 -0
  143. package/dist/Modal.d.mts +1 -1
  144. package/dist/PageHeader-Czj42pyK.d.mts +40 -0
  145. package/dist/{PageHeader-5GyfuGLe.mjs → PageHeader-DJF7nxgN.mjs} +2 -2
  146. package/dist/{PageHeader-5GyfuGLe.mjs.map → PageHeader-DJF7nxgN.mjs.map} +1 -1
  147. package/dist/PageHeader.d.mts +2 -40
  148. package/dist/{PageLayout-C7hDmoy_.d.mts → PageLayout-TBemv7oL.d.mts} +1 -1
  149. package/dist/{PageLayout-C7ZC7GBA.mjs → PageLayout-fXJW7daI.mjs} +2 -2
  150. package/dist/{PageLayout-C7ZC7GBA.mjs.map → PageLayout-fXJW7daI.mjs.map} +1 -1
  151. package/dist/PageLayout.d.mts +1 -1
  152. package/dist/{PageLayoutFrame--HlvI4Pp.d.mts → PageLayoutFrame-DzwlkNZ1.d.mts} +1 -1
  153. package/dist/PageLayoutFrame.d.mts +1 -1
  154. package/dist/{PageSelector-CrUb586l.d.mts → PageSelector-DXCeBUoU.d.mts} +3 -3
  155. package/dist/PageSelector.d.mts +1 -1
  156. package/dist/{Pagination-C67fsrxl.d.mts → Pagination-COcFWlha.d.mts} +2 -2
  157. package/dist/{Pagination-c4YBCy5d.mjs → Pagination-DtK-jbEY.mjs} +5 -5
  158. package/dist/{Pagination-c4YBCy5d.mjs.map → Pagination-DtK-jbEY.mjs.map} +1 -1
  159. package/dist/Pagination.d.mts +1 -1
  160. package/dist/{Pii-oW_2TUUc.mjs → Pii-DueIK287.mjs} +2 -2
  161. package/dist/{Pii-oW_2TUUc.mjs.map → Pii-DueIK287.mjs.map} +1 -1
  162. package/dist/{PillShell-BkYHghx0.d.mts → PillShell-CXROf8gO.d.mts} +2 -2
  163. package/dist/PillShell.d.mts +1 -1
  164. package/dist/{ProgressIndicator-CdhC2LVI.d.mts → ProgressIndicator-C5sbFQcd.d.mts} +1 -1
  165. package/dist/{ProgressIndicator-STyTM0Hq.mjs → ProgressIndicator-CM37EU1B.mjs} +1 -1
  166. package/dist/{ProgressIndicator-STyTM0Hq.mjs.map → ProgressIndicator-CM37EU1B.mjs.map} +1 -1
  167. package/dist/ProgressIndicator.d.mts +1 -1
  168. package/dist/{PseudoClassProps-CverE9Ni.d.mts → PseudoClassProps-BFFh2-u8.d.mts} +1 -1
  169. package/dist/PseudoClassProps.d.mts +1 -1
  170. package/dist/{Radio-CHme6WTz.mjs → Radio-DDT_l8rd.mjs} +2 -2
  171. package/dist/{Radio-CHme6WTz.mjs.map → Radio-DDT_l8rd.mjs.map} +1 -1
  172. package/dist/{RadioGroup-CDEfCg-b.d.mts → RadioGroup-BxEmipHa.d.mts} +1 -1
  173. package/dist/{RadioGroup-DOLRqHIZ.mjs → RadioGroup-CmD8NFCL.mjs} +2 -2
  174. package/dist/{RadioGroup-DOLRqHIZ.mjs.map → RadioGroup-CmD8NFCL.mjs.map} +1 -1
  175. package/dist/RadioGroup.d.mts +1 -1
  176. package/dist/{RangeCalendar-BOt59kTG.d.mts → RangeCalendar-cZSYjuOZ.d.mts} +2 -2
  177. package/dist/RangeCalendar.d.mts +1 -1
  178. package/dist/RangeCalendarPresets.d.mts +1 -1
  179. package/dist/{RouterContext-D7HBESqO.d.mts → RouterContext-CoDbEb_X.d.mts} +2 -2
  180. package/dist/RouterContext.d.mts +1 -1
  181. package/dist/{RouterLink-dppNWLgP.d.mts → RouterLink-BnIEi8d4.d.mts} +2 -2
  182. package/dist/RouterLink.d.mts +1 -1
  183. package/dist/RuleEditorFields.d.mts +2 -2
  184. package/dist/RulesPill.d.mts +1 -1
  185. package/dist/{SearchInput-B7JYHJZI.d.mts → SearchInput-DLC7-A7K.d.mts} +2 -2
  186. package/dist/SearchInput.d.mts +1 -1
  187. package/dist/SectionHeading.d.mts +1 -1
  188. package/dist/{SegmentedControl-d9tHqWce.mjs → SegmentedControl-CcKPfxBR.mjs} +2 -2
  189. package/dist/{SegmentedControl-d9tHqWce.mjs.map → SegmentedControl-CcKPfxBR.mjs.map} +1 -1
  190. package/dist/{SegmentedControl-C_7mTcuL.d.mts → SegmentedControl-xjU-2IsJ.d.mts} +1 -1
  191. package/dist/SegmentedControl.d.mts +1 -1
  192. package/dist/{Select-Da6UZicF.mjs → Select-BJ9ACmRD.mjs} +5 -5
  193. package/dist/{Select-Da6UZicF.mjs.map → Select-BJ9ACmRD.mjs.map} +1 -1
  194. package/dist/{Select-Ek-A2Cpo.d.mts → Select-sBEBrNgo.d.mts} +3 -3
  195. package/dist/Select.d.mts +1 -1
  196. package/dist/{SingleColumnLayout-ByWxiD7d.d.mts → SingleColumnLayout-CBynMc76.d.mts} +2 -2
  197. package/dist/SingleColumnLayout.d.mts +1 -1
  198. package/dist/SmartTextInput.d.mts +6 -6
  199. package/dist/SmartTextInputField.d.mts +2 -2
  200. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  201. package/dist/SmartTextInputListbox.d.mts +2 -2
  202. package/dist/SmartTextInputPopover.d.mts +1 -1
  203. package/dist/{Spinner-C4UyK9If.mjs → Spinner-uVZyOh1T.mjs} +1 -1
  204. package/dist/{Spinner-C4UyK9If.mjs.map → Spinner-uVZyOh1T.mjs.map} +1 -1
  205. package/dist/{SplitColumnLayout-DYyJabQ3.d.mts → SplitColumnLayout-BVzGbEDC.d.mts} +2 -2
  206. package/dist/SplitColumnLayout.d.mts +1 -1
  207. package/dist/{Stack-D0Dt776K.d.mts → Stack-BZyboHQl.d.mts} +1 -1
  208. package/dist/Stack.d.mts +1 -1
  209. package/dist/{StatusIndicator-akDwBiBW.mjs → StatusIndicator-Bunn9YLV.mjs} +1 -1
  210. package/dist/{StatusIndicator-akDwBiBW.mjs.map → StatusIndicator-Bunn9YLV.mjs.map} +1 -1
  211. package/dist/{Sticker-Cit5EKiU.d.mts → Sticker-CsUSNIH-.d.mts} +4 -4
  212. package/dist/{Sticker-_vmpUMfk.mjs → Sticker-yhxtIYH8.mjs} +2 -2
  213. package/dist/{Sticker-_vmpUMfk.mjs.map → Sticker-yhxtIYH8.mjs.map} +1 -1
  214. package/dist/Sticker.d.mts +1 -1
  215. package/dist/StringValueControl.d.mts +1 -1
  216. package/dist/Tab.d.mts +1 -1
  217. package/dist/{TabBar-CmYqreN0.mjs → TabBar-SX8E9-Bk.mjs} +3 -3
  218. package/dist/{TabBar-CmYqreN0.mjs.map → TabBar-SX8E9-Bk.mjs.map} +1 -1
  219. package/dist/{Table-CV8nogHu.mjs → Table--o4ZLRbb.mjs} +2 -2
  220. package/dist/{Table-CV8nogHu.mjs.map → Table--o4ZLRbb.mjs.map} +1 -1
  221. package/dist/{Table-BtNYI6QX.d.mts → Table-CadXF71E.d.mts} +1 -1
  222. package/dist/Table.d.mts +1 -1
  223. package/dist/{TableBody-DQ7pivxP.d.mts → TableBody-BKSHNSTo.d.mts} +1 -1
  224. package/dist/TableBody.d.mts +1 -1
  225. package/dist/{TableBox-vCTkOPlC.mjs → TableBox-3qunC9Nl.mjs} +7 -7
  226. package/dist/{TableBox-vCTkOPlC.mjs.map → TableBox-3qunC9Nl.mjs.map} +1 -1
  227. package/dist/TableBox.d.mts +2 -2
  228. package/dist/{TableBoxCell-BkJ587Lf.d.mts → TableBoxCell-BRECnVTs.d.mts} +6 -6
  229. package/dist/TableBoxCell.d.mts +1 -1
  230. package/dist/{TableBoxField-Dj9Cx9NP.d.mts → TableBoxField-Lm_tn73M.d.mts} +5 -5
  231. package/dist/TableBoxField.d.mts +1 -1
  232. package/dist/{TableBoxRow-CpR9Cti1.d.mts → TableBoxRow-BS8Dc-zw.d.mts} +3 -3
  233. package/dist/TableBoxRow.d.mts +1 -1
  234. package/dist/{TableBoxRowActions-Bj-LZaI7.d.mts → TableBoxRowActions-oLMb8XcM.d.mts} +2 -2
  235. package/dist/TableBoxRowActions.d.mts +1 -1
  236. package/dist/{TableCell-DOjW6ADs.d.mts → TableCell-4u5_BgTC.d.mts} +2 -2
  237. package/dist/TableCell.d.mts +1 -1
  238. package/dist/{TableControls-BtKBTGYR.mjs → TableControls-DxSFqRwJ.mjs} +693 -133
  239. package/dist/TableControls-DxSFqRwJ.mjs.map +1 -0
  240. package/dist/{TableControls-Cw7LDHWj.d.mts → TableControls-UfObf-ZN.d.mts} +14 -7
  241. package/dist/TableControls.d.mts +1 -1
  242. package/dist/{TableControlsContext-DgoZhMpQ.d.mts → TableControlsContext-Bhtb0cMs.d.mts} +4 -4
  243. package/dist/TableControlsContext.d.mts +1 -1
  244. package/dist/{TableHead-BGUg_aXc.d.mts → TableHead-BuCQeDAq.d.mts} +1 -1
  245. package/dist/TableHead.d.mts +1 -1
  246. package/dist/{TableHeaderCell-DcZcMQyR.d.mts → TableHeaderCell-DIcQlZps.d.mts} +1 -1
  247. package/dist/TableHeaderCell.d.mts +1 -1
  248. package/dist/{TableLayout-CwYQaZlA.d.mts → TableLayout-ScEVdvvA.d.mts} +1 -1
  249. package/dist/TableLayout.d.mts +1 -1
  250. package/dist/{TableRow-Dad6_CoD.d.mts → TableRow-lCsvG0a-.d.mts} +2 -2
  251. package/dist/TableRow.d.mts +1 -1
  252. package/dist/TableTH.d.mts +1 -1
  253. package/dist/{TableViewConfigurationDropdown-BGuWAarQ.d.mts → TableViewConfigurationDropdown-BDXe2Q1Y.d.mts} +2 -2
  254. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  255. package/dist/{TechnicalSticker-BhUxOU-L.mjs → TechnicalSticker-CALVwnrT.mjs} +1 -1
  256. package/dist/{TechnicalSticker-BhUxOU-L.mjs.map → TechnicalSticker-CALVwnrT.mjs.map} +1 -1
  257. package/dist/{Text-CUhW_agW.d.mts → Text-RSzei6Se.d.mts} +3 -3
  258. package/dist/Text.d.mts +1 -1
  259. package/dist/{TextArea-J_EscGvm.mjs → TextArea-CFf0Lspu.mjs} +2 -2
  260. package/dist/{TextArea-J_EscGvm.mjs.map → TextArea-CFf0Lspu.mjs.map} +1 -1
  261. package/dist/{TextArea-Djd1uT3B.d.mts → TextArea-DFn4XuG-.d.mts} +2 -2
  262. package/dist/TextArea.d.mts +1 -1
  263. package/dist/{TextUnderlineTooltip-DCVONTD0.d.mts → TextUnderlineTooltip-B0iYaPM1.d.mts} +2 -2
  264. package/dist/TextUnderlineTooltip.d.mts +1 -1
  265. package/dist/Tile.d.mts +1 -1
  266. package/dist/Toast.d.mts +1 -1
  267. package/dist/{Toggle-BEOoATjS.mjs → Toggle-BLdemkh_.mjs} +2 -2
  268. package/dist/{Toggle-BEOoATjS.mjs.map → Toggle-BLdemkh_.mjs.map} +1 -1
  269. package/dist/{Toggle-EYpW34LO.d.mts → Toggle-xtPgGaGD.d.mts} +1 -1
  270. package/dist/Toggle.d.mts +1 -1
  271. package/dist/{Tooltip-DLK9Q2Rg.d.mts → Tooltip-Blfhi2gT.d.mts} +2 -2
  272. package/dist/Tooltip.d.mts +1 -1
  273. package/dist/{TruncatedText-B_u70y6w.d.mts → TruncatedText-BMQmveJG.d.mts} +1 -1
  274. package/dist/VersionHistory.d.mts +1 -1
  275. package/dist/{VersionHistoryItem-iUabmk_y.d.mts → VersionHistoryItem-BExp7oSr.d.mts} +1 -1
  276. package/dist/VersionHistoryItem.d.mts +1 -1
  277. package/dist/WizardModal.d.mts +2 -2
  278. package/dist/{accordionTitleTypography-C7VVJvlx.d.mts → accordionTitleTypography-PMKnfoy0.d.mts} +2 -2
  279. package/dist/accordionTitleTypography.d.mts +1 -1
  280. package/dist/{chainTypes-DT-9j_sG.d.mts → chainTypes-BbFZn8a9.d.mts} +4 -4
  281. package/dist/clientFilterUtils-c5xzvoBj.d.mts +20 -0
  282. package/dist/clientFilterUtils.d.mts +2 -0
  283. package/dist/{codec-CGj8cwcj.d.mts → codec-DIp7dhcN.d.mts} +2 -2
  284. package/dist/codec.d.mts +1 -1
  285. package/dist/{color-BOm5A1Si.d.mts → color-C5B1pN1D.d.mts} +2 -2
  286. package/dist/components/Accordion/index.d.mts +1 -1
  287. package/dist/components/Attribute/index.mjs +2 -2
  288. package/dist/components/Badge/index.mjs +1 -1
  289. package/dist/components/Banner/index.mjs +1 -1
  290. package/dist/components/BottomPanel/index.mjs +3 -3
  291. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  292. package/dist/components/Breadcrumbs/index.mjs +1 -1
  293. package/dist/components/Button/index.d.mts +2 -2
  294. package/dist/components/Button/index.mjs +1 -1
  295. package/dist/components/ButtonGroup/index.mjs +2 -2
  296. package/dist/components/Card/index.d.mts +2 -2
  297. package/dist/components/CardV2/index.d.mts +1 -1
  298. package/dist/components/CardV2/index.mjs +1 -1
  299. package/dist/components/Checkbox/index.d.mts +1 -1
  300. package/dist/components/Checkbox/index.mjs +1 -1
  301. package/dist/components/CodeHighlight/index.mjs +1 -1
  302. package/dist/components/Combobox/index.d.mts +2 -2
  303. package/dist/components/Combobox/index.mjs +1 -1
  304. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  305. package/dist/components/DataTable/TableControls/index.d.mts +22 -20
  306. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  307. package/dist/components/DataTable/index.d.mts +9 -8
  308. package/dist/components/DataTable/index.mjs +2 -1474
  309. package/dist/components/DataTable/types.d.mts +2 -166
  310. package/dist/components/DatePicker/index.d.mts +5 -5
  311. package/dist/components/DatePicker/index.mjs +1 -1
  312. package/dist/components/DropdownButton/index.mjs +1 -1
  313. package/dist/components/DropdownMenu/index.d.mts +1 -1
  314. package/dist/components/DropdownMenu/index.mjs +1 -1
  315. package/dist/components/FloatingPanel/index.mjs +1 -1
  316. package/dist/components/FormControl/index.d.mts +2 -2
  317. package/dist/components/FormControl/index.mjs +2 -2
  318. package/dist/components/FormField/index.d.mts +5 -5
  319. package/dist/components/FormField/index.mjs +1 -1
  320. package/dist/components/Grid/index.mjs +1 -1
  321. package/dist/components/HoverCopyableField/index.mjs +1 -1
  322. package/dist/components/ImageTile/index.mjs +28 -15
  323. package/dist/components/ImageTile/index.mjs.map +1 -1
  324. package/dist/components/Input/index.d.mts +1 -1
  325. package/dist/components/Input/index.mjs +1 -1
  326. package/dist/components/ListBox/index.d.mts +3 -3
  327. package/dist/components/ListBox/index.mjs +1 -1
  328. package/dist/components/LoadingShimmer/index.mjs +1 -1
  329. package/dist/components/MaskedInput/index.mjs +1 -1
  330. package/dist/components/Menu/index.d.mts +1 -1
  331. package/dist/components/Menu/index.mjs +1 -1
  332. package/dist/components/Modal/index.d.mts +1 -1
  333. package/dist/components/Modal/index.mjs +1 -1
  334. package/dist/components/PageHeader/index.d.mts +1 -1
  335. package/dist/components/PageHeader/index.mjs +1 -1
  336. package/dist/components/Pagination/index.d.mts +3 -3
  337. package/dist/components/Pagination/index.mjs +1 -1
  338. package/dist/components/Pii/index.mjs +1 -1
  339. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  340. package/dist/components/ProgressIndicator/index.mjs +1 -1
  341. package/dist/components/Radio/index.mjs +1 -1
  342. package/dist/components/RadioGroup/index.d.mts +1 -1
  343. package/dist/components/RadioGroup/index.mjs +1 -1
  344. package/dist/components/RightPanel/index.mjs +2 -2
  345. package/dist/components/SegmentedControl/index.d.mts +1 -1
  346. package/dist/components/SegmentedControl/index.mjs +1 -1
  347. package/dist/components/Select/index.d.mts +1 -1
  348. package/dist/components/Select/index.mjs +1 -1
  349. package/dist/components/SmartTextInput/index.d.mts +2 -2
  350. package/dist/components/SmartTextInput/index.mjs +7 -6
  351. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  352. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  353. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  354. package/dist/components/Spinner/index.mjs +1 -1
  355. package/dist/components/Stack/index.d.mts +1 -1
  356. package/dist/components/StatusIndicator/index.mjs +1 -1
  357. package/dist/components/Sticker/index.d.mts +1 -1
  358. package/dist/components/Sticker/index.mjs +1 -1
  359. package/dist/components/TabBar/index.mjs +1 -1
  360. package/dist/components/Table/index.d.mts +8 -8
  361. package/dist/components/Table/index.mjs +1 -1
  362. package/dist/components/TableBox/index.d.mts +2 -2
  363. package/dist/components/TableBox/index.mjs +1 -1
  364. package/dist/components/TechnicalSticker/index.mjs +1 -1
  365. package/dist/components/Text/index.d.mts +1 -1
  366. package/dist/components/TextArea/index.d.mts +1 -1
  367. package/dist/components/TextArea/index.mjs +1 -1
  368. package/dist/components/Tile/index.mjs +1 -1
  369. package/dist/components/Toast/index.mjs +1 -1
  370. package/dist/components/Toggle/index.d.mts +1 -1
  371. package/dist/components/Toggle/index.mjs +1 -1
  372. package/dist/components/Tooltip/index.d.mts +3 -3
  373. package/dist/components/VersionHistory/index.d.mts +1 -1
  374. package/dist/components/VersionHistory/index.mjs +6 -6
  375. package/dist/compound-expression.d.mts +1 -1
  376. package/dist/{constants-CwzbyAdc.d.mts → constants-4rSh8e5G.d.mts} +1 -1
  377. package/dist/constants-BaMvTUbS.d.mts +10 -0
  378. package/dist/constants.d.mts +1 -1
  379. package/dist/constants2.d.mts +2 -10
  380. package/dist/{createPath-C4jIHe68.d.mts → createPath-B_CLq82C.d.mts} +2 -2
  381. package/dist/createPath.d.mts +1 -1
  382. package/dist/{date-filter-B8PKh5vg.mjs → date-filter-D0ys8s0D.mjs} +1 -1
  383. package/dist/{date-filter-B8PKh5vg.mjs.map → date-filter-D0ys8s0D.mjs.map} +1 -1
  384. package/dist/{date-range-rule-value-BTlHwhVf.d.mts → date-range-rule-value-D01nn054.d.mts} +2 -2
  385. package/dist/date-range-rule-value.d.mts +1 -1
  386. package/dist/{date-rule-intent-zdKP-tW_.d.mts → date-rule-intent-B4hQ_APa.d.mts} +3 -3
  387. package/dist/date-rule-intent.d.mts +1 -1
  388. package/dist/display.d.mts +2 -2
  389. package/dist/fieldPickerOptions.d.mts +2 -2
  390. package/dist/{filter-size-context-D3ZSzFKe.d.mts → filter-size-context-Dj7Idc8j.d.mts} +2 -2
  391. package/dist/filter-size-context.d.mts +1 -1
  392. package/dist/filters-DDrsgRYy.d.mts +22 -0
  393. package/dist/filters.d.mts +2 -0
  394. package/dist/{formatDateTime-zyRMjfH8.d.mts → formatDateTime-Dd9inM5H.d.mts} +1 -1
  395. package/dist/formatDateTime.d.mts +1 -1
  396. package/dist/helpers-D8_2I4ZX.d.mts +90 -0
  397. package/dist/helpers.d.mts +2 -90
  398. package/dist/{i18n-DeJa-arS.mjs → i18n-BscB9FUy.mjs} +18 -3
  399. package/dist/i18n-BscB9FUy.mjs.map +1 -0
  400. package/dist/{index-B13LwAGD.d.mts → index-DkXly4xw.d.mts} +2 -2
  401. package/dist/{index-DHmZDtDG.d.mts → index-DsjvDLF8.d.mts} +3 -3
  402. package/dist/{index-B7KIL3U6.d.mts → index-EGvEhP1j.d.mts} +2 -2
  403. package/dist/index-K614ZhWK.d.mts +1 -0
  404. package/dist/index-NKYLt_R9.d.mts +1 -0
  405. package/dist/index-VWno75SQ.d.mts +1 -0
  406. package/dist/index.d.mts +1 -1
  407. package/dist/index2.d.mts +1 -1
  408. package/dist/index3.d.mts +3 -3
  409. package/dist/index4.d.mts +1 -1
  410. package/dist/index5.d.mts +15 -15
  411. package/dist/{input-DMPo8gRT.d.mts → input-CKhARTlS.d.mts} +3 -3
  412. package/dist/{inputFields-DHdFgzS2.d.mts → inputFields-DyOZHse2.d.mts} +11 -11
  413. package/dist/inputFields.d.mts +1 -1
  414. package/dist/{intersperse-DWUGtKug.mjs → intersperse-ObkRVOag.mjs} +1 -1
  415. package/dist/{intersperse-DWUGtKug.mjs.map → intersperse-ObkRVOag.mjs.map} +1 -1
  416. package/dist/{jsonSchema-6mcLrVG3.d.mts → jsonSchema-COo0XQLA.d.mts} +1 -1
  417. package/dist/lib/PDSProvider.d.mts +3 -3
  418. package/dist/lib/PDSProvider.mjs +1 -1
  419. package/dist/lib/TruncatedText.d.mts +1 -1
  420. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  421. package/dist/lib/chainTypes.d.mts +1 -1
  422. package/dist/lib/color.d.mts +1 -1
  423. package/dist/lib/customFunctionSchema.d.mts +1 -1
  424. package/dist/lib/date-filter/index.d.mts +2 -2
  425. package/dist/lib/date-filter/index.mjs +1 -1
  426. package/dist/lib/i18n/index.d.mts +3 -3
  427. package/dist/lib/i18n/index.mjs +1 -1
  428. package/dist/lib/jsonSchema.d.mts +1 -1
  429. package/dist/lib/jsonSchemaType.d.mts +1 -1
  430. package/dist/lib/message.d.mts +1 -1
  431. package/dist/lib/methodChain.d.mts +2 -2
  432. package/dist/lib/methodChainNormalize.d.mts +2 -2
  433. package/dist/lib/methodChainTypes.d.mts +1 -1
  434. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  435. package/dist/lib/platformObject.d.mts +1 -1
  436. package/dist/lib/pseudoClass.d.mts +1 -1
  437. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  438. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  439. package/dist/lib/router/index.d.mts +5 -5
  440. package/dist/lib/schemaOptions.d.mts +1 -1
  441. package/dist/lib/semanticColor.d.mts +1 -1
  442. package/dist/lib/useChain.d.mts +1 -1
  443. package/dist/{listbox-options-yLjqZp4H.d.mts → listbox-options-D-DyLUdi.d.mts} +3 -3
  444. package/dist/listbox-options.d.mts +1 -1
  445. package/dist/{message-C5n7wFiN.d.mts → message-Dti22dmx.d.mts} +1 -1
  446. package/dist/{methodChain-BNDytoaD.d.mts → methodChain-BAUFBbR9.d.mts} +4 -4
  447. package/dist/{methodChainTypes-BuwpPC73.d.mts → methodChainTypes-a7kHYhs7.d.mts} +2 -2
  448. package/dist/mixins/focus.d.mts +1 -1
  449. package/dist/mixins/hoverable.d.mts +2 -2
  450. package/dist/mixins/input.d.mts +1 -1
  451. package/dist/mixins/menuItem.d.mts +2 -2
  452. package/dist/mixins/scrollbar.d.mts +1 -1
  453. package/dist/mixins/text.d.mts +1 -1
  454. package/dist/{operators-B12UYEsV.d.mts → operators-DjQXVNVI.d.mts} +33 -5
  455. package/dist/operators.d.mts +2 -2
  456. package/dist/{palette-BCszfY7I.d.mts → palette-Bp5G-S_5.d.mts} +3 -3
  457. package/dist/palette.d.mts +1 -1
  458. package/dist/patterns/CardGrouping/index.mjs +4 -4
  459. package/dist/patterns/IndexTableLayout/index.d.mts +3 -0
  460. package/dist/patterns/IndexTableLayout/index.mjs +87 -0
  461. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -0
  462. package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
  463. package/dist/patterns/PageLayout/index.d.mts +4 -4
  464. package/dist/patterns/PageLayout/index.mjs +1 -1
  465. package/dist/patterns/WizardModal/index.mjs +3 -3
  466. package/dist/reactRouterFallback.d.mts +1 -1
  467. package/dist/relative-date-label.d.mts +1 -1
  468. package/dist/safe-parse.d.mts +1 -1
  469. package/dist/{schemaOptions-DBOUChxi.d.mts → schemaOptions-D536qhSd.d.mts} +3 -3
  470. package/dist/{semantic-Duoh2Pxp.d.mts → semantic-DjKvtUi8.d.mts} +1 -1
  471. package/dist/{semanticColor-BuG977_M.d.mts → semanticColor-CmGmGRj8.d.mts} +3 -3
  472. package/dist/{strings-DQ3vxBj8.d.mts → strings-FWNWdSn1.d.mts} +18 -2
  473. package/dist/strings.d.mts +1 -1
  474. package/dist/{text-B7hx6G99.d.mts → text-BNfECpa5.d.mts} +1 -1
  475. package/dist/{theme-BKg55Zk1.d.mts → theme-VNhXxAF3.d.mts} +3 -3
  476. package/dist/theme.d.mts +1 -1
  477. package/dist/tone.d.mts +3 -3
  478. package/dist/tree.d.mts +1 -1
  479. package/dist/{types-CM8L7-ij.d.mts → types-BMpEizJP.d.mts} +6 -2
  480. package/dist/{types-eemD0jxb.d.mts → types-BhHdS6QP.d.mts} +2 -2
  481. package/dist/{types-6QeQmbFm.d.mts → types-CFe4tA8Q.d.mts} +1 -1
  482. package/dist/types-CjQzH0MM.d.mts +180 -0
  483. package/dist/{types-CEQWndtF.d.mts → types-DFU6M0OL.d.mts} +4 -4
  484. package/dist/{types-BjMJFNYH.d.mts → types-DHTFd-5t.d.mts} +1 -1
  485. package/dist/{types-VgGkS4JB.d.mts → types-DfpVVjso.d.mts} +2 -2
  486. package/dist/types-Dx8PgO8a.d.mts +95 -0
  487. package/dist/{types-CgKSEQyB.d.mts → types-HxiGiwQN.d.mts} +1 -1
  488. package/dist/{types-4wnr5R9P.d.mts → types-Kmnood9Y.d.mts} +1 -1
  489. package/dist/types.d.mts +1 -1
  490. package/dist/types2.d.mts +2 -2
  491. package/dist/types3.d.mts +1 -1
  492. package/dist/types4.d.mts +2 -2
  493. package/dist/types5.d.mts +2 -2
  494. package/dist/types6.d.mts +2 -2
  495. package/dist/types7.d.mts +1 -1
  496. package/dist/{url-state-BW1mN6WQ.d.mts → url-state-D1muieS7.d.mts} +2 -2
  497. package/dist/url-state.d.mts +1 -1
  498. package/dist/{useChain-BreIP4fW.d.mts → useChain-D5LvupTW.d.mts} +6 -6
  499. package/dist/useChainAtCursor.d.mts +6 -6
  500. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  501. package/dist/useColumnConfiguration.d.mts +34 -0
  502. package/dist/useComboboxFooterAction.d.mts +1 -1
  503. package/dist/{useFilterStateV2-B8VebPBe.d.mts → useFilterStateV2-MH3zbQFr.d.mts} +3 -3
  504. package/dist/useFilterStateV2.d.mts +1 -1
  505. package/dist/{useFormField-DAwApAKK.d.mts → useFormField-Ba8rh1CH.d.mts} +2 -2
  506. package/dist/{useFormField-J0LiPcpm.mjs → useFormField-CbNYbDdp.mjs} +2 -2
  507. package/dist/{useFormField-J0LiPcpm.mjs.map → useFormField-CbNYbDdp.mjs.map} +1 -1
  508. package/dist/useFormField.d.mts +1 -1
  509. package/dist/{useFormGroup-CALbrUkl.mjs → useFormGroup-CsKC93Pt.mjs} +1 -1
  510. package/dist/{useFormGroup-CALbrUkl.mjs.map → useFormGroup-CsKC93Pt.mjs.map} +1 -1
  511. package/dist/{useLocationPathname-BHL0pgiu.d.mts → useLocationPathname-OsvI7mH5.d.mts} +1 -1
  512. package/dist/useLocationPathname.d.mts +1 -1
  513. package/dist/{useTableBoxDragAndDrop-Dq30b6yY.d.mts → useTableBoxDragAndDrop-CKPIY98e.d.mts} +1 -1
  514. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  515. package/dist/useTableColumns-rLskKJhd.d.mts +72 -0
  516. package/dist/useTableColumns.d.mts +2 -72
  517. package/dist/useTruncation.d.mts +1 -1
  518. package/dist/{utilities-B2ry7_20.d.mts → utilities-BrEUGFGq.d.mts} +1 -1
  519. package/dist/utilities.d.mts +1 -1
  520. package/dist/utils/testing.d.mts +1 -1
  521. package/dist/utils.d.mts +1 -1
  522. package/dist/utils4.d.mts +5 -5
  523. package/dist/{validation-ZHnFPRP6.d.mts → validation-Csi2SJxm.d.mts} +3 -3
  524. package/dist/validation.d.mts +1 -1
  525. package/dist/validation2.d.mts +4 -4
  526. package/dist/{value-control-resolver-D3qzy8Kk.d.mts → value-control-resolver-BoBFvQ_0.d.mts} +2 -2
  527. package/dist/value-control-resolver.d.mts +1 -1
  528. package/dist/variables/effect.d.mts +1 -1
  529. package/dist/variables/semantic.d.mts +1 -1
  530. package/llms.txt +6 -2
  531. package/package.json +5 -3
  532. package/skills/ui-authoring/COMPONENTS.md +1 -0
  533. package/skills/ui-authoring/PATTERNS.md +4 -2
  534. package/skills/ui-authoring/SKILL.md +9 -2
  535. package/skills/ui-authoring/TOKENS.md +457 -119
  536. package/dist/Combobox-BkpRqaxB.mjs.map +0 -1
  537. package/dist/DatePicker-CjuR6ORz.mjs.map +0 -1
  538. package/dist/Modal-BBIJVhv2.mjs.map +0 -1
  539. package/dist/TableControls-BtKBTGYR.mjs.map +0 -1
  540. package/dist/components/DataTable/index.mjs.map +0 -1
  541. package/dist/i18n-DeJa-arS.mjs.map +0 -1
  542. package/dist/types-CwzwClJx.d.mts +0 -27
  543. /package/dist/{index-7in8TPrM.d.mts → index-AnhM47-e2.d.mts} +0 -0
  544. /package/dist/{index-8SLBz2NH.d.mts → index-B33elXxm.d.mts} +0 -0
  545. /package/dist/{index-B24gUwOx.d.mts → index-B4woaFSm.d.mts} +0 -0
  546. /package/dist/{index-B8M0Grl_2.d.mts → index-B6T7ov8p.d.mts} +0 -0
  547. /package/dist/{index-BFnNtGdX.d.mts → index-BNRXMhlr.d.mts} +0 -0
  548. /package/dist/{index-BjgW3E7y.d.mts → index-BOaE2xDE.d.mts} +0 -0
  549. /package/dist/{index-BwFl_eS0.d.mts → index-BPiqSRRl.d.mts} +0 -0
  550. /package/dist/{index-C3kE54DD.d.mts → index-BYd3Btr1.d.mts} +0 -0
  551. /package/dist/{index-C3usUse7.d.mts → index-BcsXXrHq.d.mts} +0 -0
  552. /package/dist/{index-C6HcjJiY.d.mts → index-Bo9LXG4r.d.mts} +0 -0
  553. /package/dist/{index-CP2eJYlK.d.mts → index-BrGZHEgX.d.mts} +0 -0
  554. /package/dist/{index-CSf15oCd.d.mts → index-Bt4QNofW.d.mts} +0 -0
  555. /package/dist/{index-CX869wwk.d.mts → index-CFuHCx9T.d.mts} +0 -0
  556. /package/dist/{index-CXaDbCtw.d.mts → index-CLTQPxoD.d.mts} +0 -0
  557. /package/dist/{index-D4DUvwPf.d.mts → index-CaqYCRmZ.d.mts} +0 -0
  558. /package/dist/{index-DB7t8whN.d.mts → index-CjDodOH2.d.mts} +0 -0
  559. /package/dist/{index-Deol7ZWO.d.mts → index-CjmAoxrR2.d.mts} +0 -0
  560. /package/dist/{index-DhiymMxa.d.mts → index-Cx0vQ6ld.d.mts} +0 -0
  561. /package/dist/{index-DjOaHFU3.d.mts → index-CzItj62a.d.mts} +0 -0
  562. /package/dist/{index-DkrC-i1D.d.mts → index-CzUpNo0e.d.mts} +0 -0
  563. /package/dist/{index-DvwPIy8X.d.mts → index-DBGd4WeR.d.mts} +0 -0
  564. /package/dist/{index-Oio5ygqN.d.mts → index-DMRtRo7y.d.mts} +0 -0
  565. /package/dist/{index-Wc1llEvP.d.mts → index-DNjQe1D8.d.mts} +0 -0
  566. /package/dist/{index-bHnO4ZKt.d.mts → index-DW3xeuzq.d.mts} +0 -0
  567. /package/dist/{index-dzI_9J-Z.d.mts → index-DZlqSwCF.d.mts} +0 -0
  568. /package/dist/{index-gpCH5158.d.mts → index-De7MV8-j.d.mts} +0 -0
  569. /package/dist/{index-lIMqGGJz.d.mts → index-DjG1RCY5.d.mts} +0 -0
  570. /package/dist/{index-luywJTzJ.d.mts → index-Dlcv6Ku22.d.mts} +0 -0
  571. /package/dist/{index-sViox9YW.d.mts → index-DrK1_jKY.d.mts} +0 -0
  572. /package/dist/{index-xAZnxq0d2.d.mts → index-IJ_PXwxI2.d.mts} +0 -0
@@ -0,0 +1,1547 @@
1
+ import { a as styled, r as css } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
+ import { c as usePDSLocale, i as formatDateTime, l as usePDSStrings, r as formatDate, u as DEFAULT_COMMON_STRINGS } from "./i18n-BscB9FUy.mjs";
3
+ import { n as RouterLink } from "./router-COrZcVkf.mjs";
4
+ import { semanticColor, semanticOnly } from "./lib/semanticColor.mjs";
5
+ import { i as Paragraph, o as TabularNumber } from "./Text-CSwFifQF.mjs";
6
+ import "./variables/transitions.mjs";
7
+ import { t as TextUnderlineTooltip } from "./Tooltip-B-0VRuKT.mjs";
8
+ import { isFocused } from "./lib/pseudoClass.mjs";
9
+ import { Z_INDICES } from "./lib/zindex.mjs";
10
+ import { focusOutline } from "./mixins/focus.mjs";
11
+ import "./variables/effect.mjs";
12
+ import { semanticScrollbar } from "./mixins/scrollbar.mjs";
13
+ import { t as HStack } from "./Stack-BkC7FCdF.mjs";
14
+ import { n as Button, t as IconButton } from "./IconButton-HWx5Hlmi.mjs";
15
+ import { n as Sticker } from "./Sticker-yhxtIYH8.mjs";
16
+ import { n as DropdownMenu_default } from "./DropdownMenu-CedsmO5h.mjs";
17
+ import { t as Checkbox } from "./Checkbox-BaJ-dGdX.mjs";
18
+ import { t as Pagination_default } from "./Pagination-DtK-jbEY.mjs";
19
+ import { a as StickyTH, d as TableTR, f as TableTH, i as StickyTD, o as TableActionTD, p as TableRow, s as TableCell, t as TableLayout, u as TableTD } from "./Table--o4ZLRbb.mjs";
20
+ import { t as HoverCopyableField } from "./HoverCopyableField-D-BubaRd.mjs";
21
+ import { t as Link } from "./Link-Cf__H8gD.mjs";
22
+ import { t as Pii_default } from "./Pii-DueIK287.mjs";
23
+ import { I as isFilterActive, N as TableViewConfigurationDropdown, j as TableControls } from "./TableControls-DxSFqRwJ.mjs";
24
+ import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
25
+ import { createElement, useCallback, useEffect, useMemo, useRef, useState } from "react";
26
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
27
+ import { DateTime } from "luxon";
28
+ import { ChevronDownIcon, ChevronRightIcon, ImageIcon, MoreIcon, XIcon } from "@persona/icons";
29
+ import { PlusIcon as PlusIcon$1 } from "@persona/icons/12px";
30
+ import { kebabCase, startCase } from "lodash-es";
31
+ import { createColumnHelper, flexRender, getCoreRowModel, getFilteredRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, memo as memo$1, useReactTable } from "@tanstack/react-table";
32
+ //#region components/DataTable/clientFilterUtils.ts
33
+ const getFilterFnName = (filterType) => {
34
+ switch (filterType) {
35
+ case "select": return "equals";
36
+ case "multiselect":
37
+ case "multiselect-alt":
38
+ case "multiselect-legacy": return "arrIncludesSome";
39
+ case "input": return "includesString";
40
+ default: return "equals";
41
+ }
42
+ };
43
+ const isEmptyFilterValue = (value) => {
44
+ return value == null || value === "" || Array.isArray(value) && value.length === 0;
45
+ };
46
+ const isClientFilterConfig = (filter) => {
47
+ if (typeof filter !== "object" || filter === null || !("type" in filter)) return false;
48
+ return filter.type === "select" || filter.type === "multiselect" || filter.type === "input";
49
+ };
50
+ /** Converts column-level client filters into controls backed by TanStack's column-filter state. */
51
+ const generateClientFilters = (columns, columnFilters, setColumnFilters) => {
52
+ return columns.flatMap((column) => {
53
+ const filterConfig = column.filter;
54
+ if (!isClientFilterConfig(filterConfig) || filterConfig.enabled === false) return [];
55
+ const columnId = column.id || column.accessor;
56
+ const name = typeof column.header === "string" ? column.header : columnId;
57
+ const currentValue = columnFilters.find((filter) => filter.id === columnId)?.value;
58
+ const onChange = (value) => {
59
+ setColumnFilters((previousFilters) => {
60
+ if (isEmptyFilterValue(value)) return previousFilters.filter((filter) => filter.id !== columnId);
61
+ if (previousFilters.some((filter) => filter.id === columnId)) return previousFilters.map((filter) => filter.id === columnId ? {
62
+ ...filter,
63
+ value
64
+ } : filter);
65
+ return [...previousFilters, {
66
+ id: columnId,
67
+ value
68
+ }];
69
+ });
70
+ };
71
+ const baseConfig = {
72
+ id: columnId,
73
+ name,
74
+ placeholder: filterConfig.placeholder,
75
+ enabled: true
76
+ };
77
+ switch (filterConfig.type) {
78
+ case "select": return [{
79
+ ...baseConfig,
80
+ type: "select",
81
+ value: currentValue ?? "",
82
+ options: filterConfig.options ?? [],
83
+ onChange
84
+ }];
85
+ case "multiselect": return [{
86
+ ...baseConfig,
87
+ type: "multiselect",
88
+ value: currentValue ?? [],
89
+ options: filterConfig.options ?? [],
90
+ onChange
91
+ }];
92
+ case "input": return [{
93
+ ...baseConfig,
94
+ type: "input",
95
+ value: currentValue ?? "",
96
+ onChange,
97
+ onDelete: () => onChange("")
98
+ }];
99
+ default: return [];
100
+ }
101
+ });
102
+ };
103
+ //#endregion
104
+ //#region components/DataTable/constants.ts
105
+ function getColumnWidths(compact) {
106
+ return {
107
+ EXPAND_COLUMN_WIDTH: compact ? 32 : 36,
108
+ SELECT_COLUMN_WIDTH: compact ? 32 : 40,
109
+ ACTION_COLUMN_WIDTH: compact ? 32 : 40,
110
+ NEST_SPACING: compact ? 24 : 32
111
+ };
112
+ }
113
+ //#endregion
114
+ //#region components/DataTable/FloatingActionBar.tsx
115
+ const Bar = styled.div`
116
+ display: flex;
117
+ justify-content: space-between;
118
+ align-items: center;
119
+ background-color: ${({ theme }) => semanticColor(theme, "SurfaceElevated", theme.color.background.primary)};
120
+ width: 100%;
121
+ padding: ${Spacing[2]};
122
+ border-radius: ${BorderRadius.Md};
123
+ box-shadow: ${"0px 8px 14px 0px rgba(0, 0, 0, 0.06), 0px 3px 24px 0px rgba(0, 0, 0, 0.06)"};
124
+ gap: ${Spacing[8]};
125
+ min-width: 380px;
126
+ `;
127
+ const FloatingActionBar = ({ selectedCount, onClearSelection, extraContent, actions }) => {
128
+ const strings = usePDSStrings();
129
+ return /* @__PURE__ */ jsxs(Bar, { children: [/* @__PURE__ */ jsxs(HStack, {
130
+ align: "center",
131
+ children: [/* @__PURE__ */ jsx(IconButton, {
132
+ size: "sm",
133
+ onClick: onClearSelection,
134
+ "aria-label": strings.clearSelection,
135
+ children: /* @__PURE__ */ jsx(XIcon, {})
136
+ }), /* @__PURE__ */ jsx(Paragraph, {
137
+ color: "primary",
138
+ children: strings.selectedItems(selectedCount)
139
+ })]
140
+ }), /* @__PURE__ */ jsxs(HStack, {
141
+ align: "center",
142
+ spacing: Spacing[2],
143
+ children: [extraContent, actions.map((action, index) => {
144
+ const key = "label" in action ? action.label : `action-${index}`;
145
+ if ("popover" in action) {
146
+ let trigger = null;
147
+ if ("icon" in action && "aria-label" in action) trigger = /* @__PURE__ */ jsx(IconButton, {
148
+ size: "sm",
149
+ "aria-label": action["aria-label"],
150
+ children: action.icon
151
+ }, key);
152
+ else trigger = /* @__PURE__ */ jsx(Button, {
153
+ variant: action.variant || "basic",
154
+ size: "sm",
155
+ children: "label" in action ? action.label : ""
156
+ }, key);
157
+ return /* @__PURE__ */ jsx(DropdownMenu_default, {
158
+ trigger,
159
+ align: "center",
160
+ portal: true,
161
+ children: (action.popover?.options ?? []).map((option) => /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
162
+ id: option.value,
163
+ onClick: () => action.popover.onOptionSelect(option.value),
164
+ children: option.label
165
+ }, option.value))
166
+ }, key);
167
+ } else if ("icon" in action && "aria-label" in action) return /* @__PURE__ */ jsx(IconButton, {
168
+ size: "sm",
169
+ "aria-label": action["aria-label"],
170
+ onClick: action.onClick,
171
+ children: action.icon
172
+ }, key);
173
+ else return /* @__PURE__ */ jsx(Button, {
174
+ onClick: action.onClick,
175
+ variant: action.variant || "basic",
176
+ size: "sm",
177
+ children: "label" in action ? action.label : ""
178
+ }, key);
179
+ })]
180
+ })] });
181
+ };
182
+ //#endregion
183
+ //#region components/DataTable/helpers.tsx
184
+ const EmptyCellText = styled(Paragraph)`
185
+ ${semanticOnly((tokens) => `color: ${tokens.FgSecondaryStatic};`)}
186
+ `;
187
+ const renderAsCheckbox = ({ rowId, isChecked, onChange, onValueChange, columnHeader, disabled, indeterminate, strings = DEFAULT_COMMON_STRINGS }) => {
188
+ return /* @__PURE__ */ jsx(Checkbox, {
189
+ checked: isChecked,
190
+ onChange: (e) => {
191
+ onChange?.(e);
192
+ onValueChange?.(rowId, e.target.checked);
193
+ },
194
+ containerProps: { onClick: (e) => {
195
+ e.stopPropagation();
196
+ } },
197
+ "aria-label": columnHeader ? strings.selectRowForColumn(columnHeader, rowId) : strings.selectRow(rowId),
198
+ indeterminate,
199
+ disabled
200
+ });
201
+ };
202
+ const renderAsCheckboxHeader = ({ header, isChecked, isIndeterminate, onChange, onValueChange, strings = DEFAULT_COMMON_STRINGS }) => {
203
+ const checkbox = /* @__PURE__ */ jsx(Checkbox, {
204
+ checked: isChecked,
205
+ indeterminate: isIndeterminate,
206
+ onChange: (e) => {
207
+ onChange?.(e);
208
+ onValueChange?.(e.target.checked);
209
+ },
210
+ containerProps: { onClick: (e) => {
211
+ e.stopPropagation();
212
+ } },
213
+ "aria-label": header ? strings.selectAllOf(header) : strings.selectAll
214
+ });
215
+ if (header) return /* @__PURE__ */ jsxs(HStack, {
216
+ spacing: Spacing[3],
217
+ align: "center",
218
+ children: [checkbox, /* @__PURE__ */ jsx("span", { children: header })]
219
+ });
220
+ return checkbox;
221
+ };
222
+ const renderAsString = (value) => {
223
+ if (value == null) return "";
224
+ return typeof value === "string" ? value : typeof value === "object" ? JSON.stringify(value, null, 2) : String(value);
225
+ };
226
+ const renderAsDate = (value, config, locale) => {
227
+ if (value == null || typeof value !== "string") return "";
228
+ const date = DateTime.fromISO(value);
229
+ return date.isValid ? formatDate(date, {
230
+ locale,
231
+ format: config?.format,
232
+ showTimeZone: config?.showTimeZone
233
+ }) : "";
234
+ };
235
+ const renderAsDatetime = (value, config, locale) => {
236
+ if (value == null || typeof value !== "string") return "";
237
+ const date = DateTime.fromISO(value);
238
+ return date.isValid ? formatDateTime(date, {
239
+ locale,
240
+ format: config?.format,
241
+ showTimeZone: config?.showTimeZone
242
+ }) : "";
243
+ };
244
+ const renderAsURL = (value) => {
245
+ if (value == null || typeof value !== "string" || value.length === 0) return "";
246
+ return /* @__PURE__ */ jsx(Link, {
247
+ url: value,
248
+ target: "_blank",
249
+ children: value
250
+ });
251
+ };
252
+ const renderAsNumber = (value) => {
253
+ if (value == null) return "";
254
+ return /* @__PURE__ */ jsx(TabularNumber, { children: value });
255
+ };
256
+ const createSticker = (item, config, key) => {
257
+ const displayLabel = config?.labels?.[item] ?? item;
258
+ return /* @__PURE__ */ jsx(Sticker, {
259
+ variant: config?.colors?.[item] ?? config?.defaultColor,
260
+ children: displayLabel
261
+ }, key);
262
+ };
263
+ const renderAsSticker = (value, config) => {
264
+ if (value == null) return "";
265
+ if (Array.isArray(value)) {
266
+ if (value.length === 0) return "";
267
+ return /* @__PURE__ */ jsx("span", {
268
+ style: {
269
+ display: "flex",
270
+ flexWrap: "wrap",
271
+ gap: "4px",
272
+ alignItems: "center"
273
+ },
274
+ children: value.map((item, index) => typeof item === "string" ? createSticker(item, config, `${item}-${index}`) : null)
275
+ });
276
+ }
277
+ if (typeof value !== "string") return "";
278
+ return createSticker(value, config);
279
+ };
280
+ /** Inline monospace text — private DataTable primitive, avoids the dashboard Typography dep. */
281
+ const MonoText = styled.span`
282
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
283
+ font-size: 0.875em;
284
+ `;
285
+ const WrappingText = styled.span`
286
+ display: inline-block;
287
+ max-width: 100%;
288
+ word-break: break-word;
289
+ overflow-wrap: break-word;
290
+ `;
291
+ const EmptyImageContainer = styled.div`
292
+ display: flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ border-radius: ${BorderRadius.Md};
296
+ background-color: ${({ theme }) => semanticColor(theme, "SurfaceSecondary", theme.color.background.secondary)};
297
+ width: ${({ $width }) => $width ?? "200px"};
298
+ height: ${({ $height }) => $height ?? "144px"};
299
+ svg {
300
+ color: ${({ theme }) => semanticColor(theme, "FgDisabled", theme.color.border.disabled)};
301
+ }
302
+ `;
303
+ const LightweightImg = styled.img`
304
+ object-fit: ${({ $fit }) => $fit ?? "cover"};
305
+ display: block;
306
+ `;
307
+ const renderAsCopyableString = (value, config) => {
308
+ const valueAsString = renderAsString(value);
309
+ const content = config?.mono ? /* @__PURE__ */ jsx(MonoText, { children: valueAsString }) : valueAsString;
310
+ if (!valueAsString) return /* @__PURE__ */ jsx(EmptyCellText, { children: config?.emptyText ?? "" });
311
+ return /* @__PURE__ */ jsx(WrappingText, { children: config?.copyable ? /* @__PURE__ */ jsx(HoverCopyableField, {
312
+ copyValue: valueAsString,
313
+ children: content
314
+ }) : content });
315
+ };
316
+ const renderAsPii = (row, config) => {
317
+ if (!config || !row) return "";
318
+ const { isRedacted, piiValue, emptyText } = config;
319
+ const piiValueString = piiValue(row);
320
+ if (piiValueString == null || piiValueString.length === 0) return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(EmptyCellText, { children: emptyText }), config.subComponent?.(row)] });
321
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Pii_default, {
322
+ isRedacted: isRedacted(row),
323
+ children: piiValueString
324
+ }), config.subComponent?.(row)] });
325
+ };
326
+ const renderAsLightweightImage = (value, config, strings = DEFAULT_COMMON_STRINGS) => {
327
+ if (value == null || value === "" || Array.isArray(value) && value.length === 0) return config?.fallback ? /* @__PURE__ */ jsx(Fragment$1, { children: config.fallback }) : /* @__PURE__ */ jsx(EmptyImageContainer, {
328
+ $width: config?.width,
329
+ $height: config?.height,
330
+ "aria-label": config?.alt ?? "image",
331
+ children: /* @__PURE__ */ jsx(ImageIcon, {
332
+ size: 24,
333
+ "aria-label": strings.noImage
334
+ })
335
+ });
336
+ return /* @__PURE__ */ jsx(LightweightImg, {
337
+ src: typeof value === "string" ? value : "",
338
+ alt: config?.alt ?? "image",
339
+ width: config?.width ?? "200px",
340
+ height: config?.height ?? "144px",
341
+ $fit: config?.fit
342
+ });
343
+ };
344
+ /**
345
+ * Default PDS cell renderer. Handles all generic format types built into the design system.
346
+ * Hosts should supply their own `renderFormat` prop to DataTable for format types that require
347
+ * application-specific components (e.g. tags, files, PII masking, status indicators).
348
+ */
349
+ const renderAsPDSFormat = (value, format, row, options = {}) => {
350
+ switch (format?.type) {
351
+ case "date": return renderAsDate(value, format.config, options.locale);
352
+ case "datetime": return renderAsDatetime(value, format.config, options.locale);
353
+ case "sticker": return renderAsSticker(value, format.config);
354
+ case "url": return renderAsURL(value);
355
+ case "number": return renderAsNumber(value);
356
+ case "image": return renderAsLightweightImage(value, format.config, options.strings);
357
+ case "checkbox": return "";
358
+ case "id": return renderAsCopyableString(value, {
359
+ copyable: true,
360
+ mono: true,
361
+ ...format.config
362
+ });
363
+ case "pii": return renderAsPii(row, format.config);
364
+ default: return renderAsCopyableString(value, format?.config);
365
+ }
366
+ };
367
+ //#endregion
368
+ //#region components/DataTable/Inserter.tsx
369
+ const InserterTableCell = styled(TableCell)`
370
+ padding: 0 !important;
371
+ ${({ $nestSpacing }) => $nestSpacing ? `padding-left: ${$nestSpacing}px !important` : ""};
372
+ height: 0;
373
+ position: relative;
374
+ border: 0;
375
+ z-index: ${Z_INDICES.withShadow};
376
+ `;
377
+ const AddRowLine = styled.div`
378
+ position: absolute;
379
+ top: -1px;
380
+ background-color: ${({ theme }) => semanticColor(theme, "BorderAccent", theme.color.primary.brand)};
381
+ width: ${({ $nestSpacing }) => $nestSpacing ? `calc(100% - ${$nestSpacing}px)` : "100%"};
382
+ transition-duration: ${"200ms"};
383
+ transition-property: opacity;
384
+ transition-timing-function: ease-in;
385
+ `;
386
+ const StyledPlusButton = styled.button`
387
+ position: absolute;
388
+ top: -7px;
389
+ left: calc(50% - 8px);
390
+ border-radius: 50%;
391
+ height: 14px;
392
+ width: 14px;
393
+ background-color: ${({ theme }) => semanticColor(theme, "ActionPrimary", theme.color.primary.brand)};
394
+ color: ${({ theme }) => semanticColor(theme, "FgInverse", Color.BackgroundButtonInverse)};
395
+ cursor: pointer;
396
+ z-index: ${Z_INDICES.withShadow};
397
+ // TODO: Add a focus style
398
+
399
+ opacity: 0;
400
+
401
+ &:hover {
402
+ opacity: 1;
403
+ }
404
+
405
+ &:hover ~ ${AddRowLine} {
406
+ opacity: 1;
407
+ height: 2px;
408
+ }
409
+ `;
410
+ const StyledTableRow = styled(TableRow)`
411
+ &${isFocused} {
412
+ box-shadow: none;
413
+ }
414
+ cursor: pointer;
415
+ &:hover > ${AddRowLine}, &:focus > ${AddRowLine} {
416
+ opacity: 1;
417
+ height: 2px;
418
+ }
419
+
420
+ &:hover > ${StyledPlusButton}, &:focus > ${StyledPlusButton} {
421
+ opacity: 1;
422
+ }
423
+ `;
424
+ const HoverArea = styled.div`
425
+ position: absolute;
426
+ height: 12px;
427
+ top: -6px;
428
+ width: ${({ $nestSpacing }) => $nestSpacing ? `calc(100% - ${$nestSpacing}px)` : "100%"};
429
+ z-index: ${Z_INDICES.withShadow};
430
+ &:hover ~ ${AddRowLine} {
431
+ opacity: 1;
432
+ height: 2px;
433
+ }
434
+
435
+ &:hover ~ ${StyledPlusButton} {
436
+ opacity: 1;
437
+ }
438
+ `;
439
+ const StyledPlusIcon = styled(PlusIcon$1)`
440
+ position: absolute;
441
+ top: 1px;
442
+ left: 1px;
443
+ `;
444
+ const Inserter = ({ priorRowLabel, colSpan, nestSpacing = 0, label, onAddRow }) => {
445
+ return /* @__PURE__ */ jsx(StyledTableRow, {
446
+ onKeyDown: (evt) => {
447
+ if (evt.key === " " || evt.key === "Enter") {
448
+ evt.preventDefault();
449
+ evt.stopPropagation();
450
+ onAddRow();
451
+ }
452
+ },
453
+ tabIndex: 0,
454
+ children: /* @__PURE__ */ jsxs(InserterTableCell, {
455
+ colSpan,
456
+ $nestSpacing: nestSpacing,
457
+ children: [
458
+ /* @__PURE__ */ jsx(HoverArea, {
459
+ $nestSpacing: nestSpacing,
460
+ role: "presentation",
461
+ "aria-label": label || `Insert a row after ${priorRowLabel}`,
462
+ onClick: onAddRow
463
+ }),
464
+ /* @__PURE__ */ jsx(StyledPlusButton, {
465
+ id: `${kebabCase(priorRowLabel)}-inserter`,
466
+ "aria-label": label || `Insert a row after ${priorRowLabel}`,
467
+ onClick: onAddRow,
468
+ type: "button",
469
+ children: /* @__PURE__ */ jsx(StyledPlusIcon, { color: "currentColor" })
470
+ }),
471
+ /* @__PURE__ */ jsx(AddRowLine, {
472
+ $nestSpacing: nestSpacing,
473
+ onClick: onAddRow
474
+ })
475
+ ]
476
+ })
477
+ });
478
+ };
479
+ //#endregion
480
+ //#region components/DataTable/useTableColumns.tsx
481
+ const ExpandButton = styled.button`
482
+ background: none;
483
+ border: none;
484
+ cursor: pointer;
485
+ display: flex;
486
+ align-items: center;
487
+ justify-content: center;
488
+ padding: 0;
489
+ margin: 0;
490
+ color: ${({ theme }) => semanticColor(theme, "FgPrimary", theme.color.text.primary)};
491
+ `;
492
+ const ExpandColumnPlaceholder = styled.span`
493
+ display: flex;
494
+ align-items: center;
495
+ justify-content: center;
496
+ width: 100%;
497
+ `;
498
+ function useTableColumns({ columns, data, compact, sort, clientSearch, clientFiltering, expandColumnVisibility = "auto", showControls, enableRowSelection = false, enableSubRowSelection = true, rowActions, getRowId, expandedRows, toggleRowExpansion, canRowExpand, checkboxColumnStates, handleCheckboxCellChange, handleSelectAllCheckboxCell, getSelfAndNestedRowIds, handleRowSelectionWithShift, renderFormat }) {
499
+ const { EXPAND_COLUMN_WIDTH, SELECT_COLUMN_WIDTH, ACTION_COLUMN_WIDTH } = getColumnWidths(compact);
500
+ const strings = usePDSStrings();
501
+ const stringsRef = useRef(strings);
502
+ stringsRef.current = strings;
503
+ const rowActionsRef = useRef(rowActions);
504
+ rowActionsRef.current = rowActions;
505
+ const renderActionCell = useCallback((props) => {
506
+ const currentRowActions = rowActionsRef.current;
507
+ const actions = typeof currentRowActions === "function" ? currentRowActions(props.row.original) : currentRowActions;
508
+ if (!actions || actions.length === 0) return null;
509
+ return /* @__PURE__ */ jsx(DropdownMenu_default, {
510
+ trigger: /* @__PURE__ */ jsx(Button, {
511
+ id: `data-table__row-actions-button--${props.row.id}`,
512
+ variant: "text",
513
+ width: "icon",
514
+ size: "sm",
515
+ onClick: (e) => {
516
+ e.preventDefault();
517
+ e.stopPropagation();
518
+ },
519
+ "aria-label": stringsRef.current.viewRowActions(props.row.index + 1),
520
+ children: /* @__PURE__ */ jsx(MoreIcon, {})
521
+ }),
522
+ portal: true,
523
+ children: actions.map(({ label, onClick, ...menuItemProps }, i) => /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
524
+ id: `data-table__row-actions--${props.row.id}-${i}`,
525
+ onClick: (e) => {
526
+ e.preventDefault();
527
+ e.stopPropagation();
528
+ onClick(props.row.id);
529
+ },
530
+ ...menuItemProps,
531
+ children: label
532
+ }, label.toLowerCase().replace(/ /g, "-")))
533
+ });
534
+ }, []);
535
+ const hasRowActions = rowActions != null;
536
+ return useMemo(() => {
537
+ const columnHelper = createColumnHelper();
538
+ const tableColumns = columns.map((column) => {
539
+ if (typeof column === "object") {
540
+ const columnHelperOptions = {
541
+ header: column.header,
542
+ id: column.id || column.accessor,
543
+ sortUndefined: -1,
544
+ meta: {
545
+ align: column.align,
546
+ format: column.format,
547
+ minWidth: column.minWidth,
548
+ width: column.width,
549
+ headerTooltip: column.headerTooltip
550
+ },
551
+ minSize: column.minWidth
552
+ };
553
+ if (column.renderCell != null) {
554
+ const renderCell = column.renderCell;
555
+ columnHelperOptions.cell = (props) => renderCell({
556
+ cellValue: props.getValue(),
557
+ row: props.row.original
558
+ });
559
+ columnHelperOptions.enableSorting = sort != null && (column.enableSorting ?? false);
560
+ } else if (column.format?.type === "checkbox") {
561
+ const columnId = column.id || column.accessor;
562
+ columnHelperOptions.header = (headerProps) => {
563
+ const columnState = checkboxColumnStates[columnId] || /* @__PURE__ */ new Set();
564
+ const allRowIds = data.flatMap((row, index) => getSelfAndNestedRowIds(row, [index]));
565
+ const isChecked = allRowIds.length > 0 && allRowIds.every((id) => columnState.has(id));
566
+ const isIndeterminate = !isChecked && allRowIds.some((id) => columnState.has(id));
567
+ if (typeof column.header === "function") return column.header(headerProps);
568
+ return renderAsCheckboxHeader({
569
+ header: column.header,
570
+ isChecked,
571
+ isIndeterminate,
572
+ onValueChange: (checked) => handleSelectAllCheckboxCell(columnId, checked),
573
+ strings
574
+ });
575
+ };
576
+ columnHelperOptions.cell = (props) => {
577
+ const rowId = getRowId ? getRowId(props.row.original) : props.row.id;
578
+ return renderAsCheckbox({
579
+ rowId,
580
+ isChecked: (checkboxColumnStates[columnId] || /* @__PURE__ */ new Set()).has(rowId),
581
+ onValueChange: (rowId, checked) => handleCheckboxCellChange(columnId, rowId, checked),
582
+ columnHeader: typeof column.header === "string" ? column.header : void 0,
583
+ strings
584
+ });
585
+ };
586
+ columnHelperOptions.enableSorting = false;
587
+ } else {
588
+ columnHelperOptions.cell = (props) => renderFormat(props?.getValue(), column.format, props.row.original);
589
+ columnHelperOptions.enableSorting = sort != null && column.enableSorting;
590
+ }
591
+ columnHelperOptions.enableGlobalFilter = clientSearch && (column.searchable ?? true);
592
+ columnHelperOptions.enablePinning = column.pinned ?? false;
593
+ if (clientFiltering && column.filter) {
594
+ const filterConfig = column.filter;
595
+ if (filterConfig.enabled !== false) {
596
+ columnHelperOptions.enableColumnFilter = true;
597
+ if (filterConfig.filterFn) columnHelperOptions.filterFn = filterConfig.filterFn;
598
+ }
599
+ }
600
+ return columnHelper.accessor(column.accessor, columnHelperOptions);
601
+ }
602
+ return columnHelper.accessor(column, {
603
+ header: startCase(column),
604
+ enableGlobalFilter: Boolean(clientSearch),
605
+ enableSorting: sort != null
606
+ });
607
+ });
608
+ if (showControls && enableRowSelection) tableColumns.unshift(columnHelper.display({
609
+ id: "select-col",
610
+ enablePinning: true,
611
+ enableResizing: false,
612
+ size: SELECT_COLUMN_WIDTH,
613
+ meta: { width: SELECT_COLUMN_WIDTH },
614
+ header: ({ table }) => renderAsCheckboxHeader({
615
+ isChecked: table.getIsAllRowsSelected(),
616
+ isIndeterminate: table.getIsSomeRowsSelected() || table.getIsAllRowsSelected(),
617
+ onChange: table.getToggleAllRowsSelectedHandler(),
618
+ strings
619
+ }),
620
+ cell: ({ row, table }) => renderAsCheckbox({
621
+ rowId: row.id,
622
+ isChecked: row.getIsSelected(),
623
+ onChange: (e) => handleRowSelectionWithShift(row, table, e.target.checked, e.nativeEvent instanceof MouseEvent && e.nativeEvent.shiftKey),
624
+ indeterminate: enableSubRowSelection && row.getIsSomeSelected(),
625
+ disabled: !row.getCanSelect(),
626
+ strings
627
+ })
628
+ }));
629
+ if (expandColumnVisibility === "always" || data.some(canRowExpand)) tableColumns.unshift(columnHelper.display({
630
+ id: "expand-col",
631
+ enablePinning: true,
632
+ enableResizing: false,
633
+ size: EXPAND_COLUMN_WIDTH,
634
+ meta: { width: EXPAND_COLUMN_WIDTH },
635
+ header: "",
636
+ cell: ({ row }) => {
637
+ const rowData = row.original;
638
+ if (!canRowExpand(rowData)) return /* @__PURE__ */ jsx(ExpandColumnPlaceholder, { "aria-hidden": true });
639
+ const rowId = getRowId ? getRowId(rowData) : row.id;
640
+ const isExpanded = expandedRows.has(rowId);
641
+ return /* @__PURE__ */ jsx(ExpandColumnPlaceholder, { children: /* @__PURE__ */ jsx(ExpandButton, {
642
+ type: "button",
643
+ id: `datatable-expand-${rowId}`,
644
+ onClick: (e) => {
645
+ e.stopPropagation();
646
+ toggleRowExpansion(rowId);
647
+ },
648
+ onKeyDown: (e) => {
649
+ if (e.key === "Enter" || e.key === " ") {
650
+ e.preventDefault();
651
+ e.stopPropagation();
652
+ toggleRowExpansion(rowId);
653
+ }
654
+ },
655
+ "aria-label": isExpanded ? `Hide details for row ${rowId}` : `View details for row ${rowId}`,
656
+ "aria-expanded": isExpanded,
657
+ children: isExpanded ? /* @__PURE__ */ jsx(ChevronDownIcon, {}) : /* @__PURE__ */ jsx(ChevronRightIcon, {})
658
+ }) });
659
+ }
660
+ }));
661
+ if (hasRowActions) {
662
+ const emptyHeader = () => /* @__PURE__ */ jsx(Fragment$1, {});
663
+ tableColumns.push(columnHelper.display({
664
+ id: "action-col",
665
+ enableResizing: false,
666
+ size: ACTION_COLUMN_WIDTH,
667
+ meta: { width: ACTION_COLUMN_WIDTH },
668
+ header: emptyHeader,
669
+ cell: renderActionCell
670
+ }));
671
+ }
672
+ return [tableColumns, columns.map((column) => {
673
+ const key = typeof column === "object" ? column.id || column.accessor : column;
674
+ return {
675
+ key,
676
+ label: typeof column === "object" ? typeof column.header === "string" ? column.header : key : startCase(column)
677
+ };
678
+ })];
679
+ }, [
680
+ columns,
681
+ enableRowSelection,
682
+ hasRowActions,
683
+ renderActionCell,
684
+ showControls,
685
+ sort,
686
+ clientSearch,
687
+ clientFiltering,
688
+ data,
689
+ canRowExpand,
690
+ expandColumnVisibility,
691
+ expandedRows,
692
+ toggleRowExpansion,
693
+ getRowId,
694
+ checkboxColumnStates,
695
+ handleCheckboxCellChange,
696
+ handleSelectAllCheckboxCell,
697
+ handleRowSelectionWithShift,
698
+ renderFormat,
699
+ strings
700
+ ]);
701
+ }
702
+ //#endregion
703
+ //#region components/DataTable/DataTable.tsx
704
+ const forwardedRowLinkClicks = /* @__PURE__ */ new WeakSet();
705
+ const TableEmptyState = styled.td`
706
+ vertical-align: middle;
707
+ text-align: center;
708
+ width: 100%;
709
+ height: 176px;
710
+ `;
711
+ const StyledTableLayout = styled(TableLayout)`
712
+ ${({ $onAddRow }) => $onAddRow && css`
713
+ padding-bottom: ${Spacing[3]};
714
+ `}
715
+ `;
716
+ const TableContainer = styled.div`
717
+ position: relative;
718
+ ${semanticScrollbar}
719
+
720
+ ${({ $stickyHeader }) => $stickyHeader && css`
721
+ flex-grow: 1;
722
+ overflow: auto;
723
+ display: flex;
724
+ flex-direction: column;
725
+ `}
726
+ `;
727
+ const RowLink = styled(RouterLink)`
728
+ /* Match surrounding cell text. The row is still a link; only URL cells use accent. */
729
+ color: inherit;
730
+ text-decoration: none;
731
+ ${focusOutline}
732
+
733
+ &:link,
734
+ &:visited,
735
+ &:hover,
736
+ &:active {
737
+ color: inherit;
738
+ }
739
+ `;
740
+ const DataTableControls = styled(TableControls)``;
741
+ const DataTableContainer = styled.div`
742
+ ${({ $stickyHeader }) => $stickyHeader && css`
743
+ display: flex;
744
+ flex-direction: column;
745
+ height: 100%;
746
+ `}
747
+ `;
748
+ const StyledTableActionTD = styled(TableActionTD)`
749
+ ${({ $nestSpacing }) => css`
750
+ ${$nestSpacing && css`
751
+ position: relative;
752
+ left: ${$nestSpacing}px;
753
+ `}
754
+ `}
755
+ `;
756
+ const StyledTableTD = styled(TableTD)`
757
+ // Move the cell to the right by the amount of the nest spacing, and
758
+ // add same amount of padding to the right to not overlap with the next cell
759
+ ${({ $nestSpacing, $isFeatureCol }) => css`
760
+ ${$nestSpacing && css`
761
+ position: relative;
762
+ left: ${$nestSpacing}px;
763
+ `}
764
+ ${!$isFeatureCol && css`
765
+ padding-right: ${$nestSpacing}px;
766
+ `}
767
+ `}
768
+ `;
769
+ const DetailsTD = styled(TableTD)`
770
+ padding: 0;
771
+ border-top: none;
772
+ border-left: none;
773
+ border-right: none;
774
+ `;
775
+ const StickyDetailsTD = styled(StickyTD)`
776
+ padding: 0;
777
+ border-top: none;
778
+ border-left: none;
779
+ border-right: none;
780
+ `;
781
+ const StickyTDWithGapCoverage = styled(StickyTD)`
782
+ ${({ $gapCoverage }) => $gapCoverage && css`
783
+ &::before {
784
+ content: '';
785
+ position: absolute;
786
+ top: 0;
787
+ left: ${-$gapCoverage}px;
788
+ width: ${$gapCoverage}px;
789
+ height: calc(100% + 1px); // +1px to cover the bottom border
790
+ background: inherit;
791
+ }
792
+ `}
793
+ `;
794
+ const FloatingActionBarContainer = styled.div`
795
+ position: absolute;
796
+ top: 0;
797
+ left: 50%;
798
+ transform: translateX(-50%);
799
+ `;
800
+ const isServerPagination = (pagination) => {
801
+ return typeof pagination === "object" && !("clientPagination" in pagination);
802
+ };
803
+ const isClientPagination = (pagination) => {
804
+ return typeof pagination === "object" && "clientPagination" in pagination;
805
+ };
806
+ const isServerSorting = (sort) => {
807
+ return typeof sort === "object";
808
+ };
809
+ const isRowWithDetails = (row) => {
810
+ return row != null && typeof row === "object" && "_details" in row && row._details != null;
811
+ };
812
+ const isRowWithSubrows = (row) => {
813
+ return row != null && typeof row === "object" && "subrows" in row && row.subrows != null;
814
+ };
815
+ const isRowWithSubrowsToAlwaysShowIds = (row) => {
816
+ return row != null && typeof row === "object" && "subrowsToAlwaysShowIds" in row && row.subrowsToAlwaysShowIds != null;
817
+ };
818
+ const isRowWithTourTarget = (row) => {
819
+ return row != null && typeof row === "object" && "dataTourTarget" in row && typeof row.dataTourTarget === "string";
820
+ };
821
+ const DISPLAYED_ROW_IDS_SEPARATOR = "";
822
+ /**
823
+ * The DataTable component is the core of Persona's table experiences.
824
+ *
825
+ * This component implements `@tanstack/react-table` and exposes a simplified, easy to use API.
826
+ *
827
+ * Planned functionality
828
+ * - Column visibility, reordering
829
+ * - Row selection
830
+ * - Cell types (e.g. links, buttons, Stickers)
831
+ *
832
+ * Client-side support
833
+ * - ✅ Sorting
834
+ * - ✅ Search (enable with clientSearch prop)
835
+ * - ✅ Pagination
836
+ * - ✅ Filtering (requires explicit filter configuration in TableControls)
837
+ *
838
+ * Server-side support
839
+ * - ✅ Sorting
840
+ * - ✅ Filtering
841
+ * - ✅ Pagination
842
+ *
843
+ * @example
844
+ * // Basic usage with client-side search
845
+ * <DataTable
846
+ * data={data}
847
+ * columns={columns}
848
+ * showControls={true}
849
+ * clientSearch={{ placeholder: "Search accounts..." }}
850
+ * />
851
+ *
852
+ * @example
853
+ * // Column-level search control
854
+ * const columns = [
855
+ * { accessor: 'id', header: 'ID', searchable: false },
856
+ * { accessor: 'name', header: 'Name' }, // searchable by default
857
+ * { accessor: 'email', header: 'Email' },
858
+ * ];
859
+ */
860
+ const DataTable = ({ data, columns, detailComponent, expandColumnVisibility = "auto", showControls, controls, emptyState, isLoading, pagination, sort, sortDescFirst, enableSortingRemoval, showColumnProperties = false, onUpdateColumnProperties, enableRowSelection = false, enableSubRowSelection = true, getRowId, getRowLabel, getRowSelectable, getLinkToRow, rowLinkPrefix, rowLinkColumnId, rowLinkComponent, compact, disableRowHover, title, clientSearch = false, searchTerm: controlledSearchTerm, onSearchTermChange, manualFiltering, expandedRowIds: controlledExpandedRowIds, onExpandedRowsChange, clientFiltering = false, columnFilters: controlledColumnFilters, hasExternalActiveFilters = false, onColumnFiltersChange, renderFormat, rowActions, bulkActions, getAvailableBulkActions, onRowSelectionChange, onAddRow, stickyHeader = false, canAddAfterRow, onRowClick, activeRowId, onDisplayedRowIdsChange, pinnedColumnLeftOffset = 0, scrollsHorizontally = true, floatingBarContent }) => {
861
+ const DEFAULT_SEARCH_PLACEHOLDER = "Search...";
862
+ const { NEST_SPACING, EXPAND_COLUMN_WIDTH } = getColumnWidths(compact);
863
+ const [columnVisibility, setColumnVisibility] = useState(() => {
864
+ const visibility = {};
865
+ columns.forEach((column) => {
866
+ const columnId = typeof column === "object" ? column.id ?? column.accessor : column;
867
+ visibility[columnId] = typeof column === "object" ? column.visibility ?? true : true;
868
+ });
869
+ return visibility;
870
+ });
871
+ const [columnOrder, setColumnOrder] = useState([]);
872
+ const [rowSelection, setRowSelection] = useState({});
873
+ const lastSelectedRowIdRef = useRef(null);
874
+ const isSearchControlled = controlledSearchTerm != null;
875
+ const [internalSearchTerm, setInternalSearchTerm] = useState(typeof clientSearch === "object" ? clientSearch.initialValue || "" : "");
876
+ const globalFilter = isSearchControlled ? controlledSearchTerm : internalSearchTerm;
877
+ const setGlobalFilter = useCallback((value) => {
878
+ if (isSearchControlled) onSearchTermChange?.(value);
879
+ else setInternalSearchTerm(value);
880
+ }, [isSearchControlled, onSearchTermChange]);
881
+ const isColumnFiltersControlled = controlledColumnFilters != null;
882
+ const [internalColumnFilters, setInternalColumnFilters] = useState([]);
883
+ const columnFilters = isColumnFiltersControlled ? controlledColumnFilters : internalColumnFilters;
884
+ const setColumnFilters = useCallback((updater) => {
885
+ const next = typeof updater === "function" ? updater(columnFilters) : updater;
886
+ if (!isColumnFiltersControlled) setInternalColumnFilters(next);
887
+ onColumnFiltersChange?.(next);
888
+ }, [
889
+ columnFilters,
890
+ isColumnFiltersControlled,
891
+ onColumnFiltersChange
892
+ ]);
893
+ const isExpansionControlled = controlledExpandedRowIds != null;
894
+ const [internalExpandedRows, setInternalExpandedRows] = useState(/* @__PURE__ */ new Set());
895
+ const expandedRows = isExpansionControlled ? controlledExpandedRowIds : internalExpandedRows;
896
+ const setExpandedRows = useCallback((updater) => {
897
+ if (isExpansionControlled) {
898
+ const newValue = updater(expandedRows);
899
+ onExpandedRowsChange?.(newValue);
900
+ } else setInternalExpandedRows(updater);
901
+ }, [
902
+ expandedRows,
903
+ isExpansionControlled,
904
+ onExpandedRowsChange
905
+ ]);
906
+ const [checkboxColumnStates, setCheckboxColumnStates] = useState({});
907
+ const orderMap = columnOrder.reduce((acc, columnId, index) => {
908
+ acc[columnId] = index;
909
+ return acc;
910
+ }, {});
911
+ /**
912
+ * If basic client pagination is enabled, create a configuration object for client pagination.
913
+ */
914
+ if (pagination === true) pagination = {
915
+ clientPagination: true,
916
+ pageSize: 10
917
+ };
918
+ const canRowExpand = useCallback((rowData) => {
919
+ if (isRowWithSubrows(rowData)) return rowData.subrows.length > 0;
920
+ if (isRowWithDetails(rowData)) return Boolean(rowData._details);
921
+ return detailComponent != null;
922
+ }, [detailComponent]);
923
+ const initialColumnPinning = useMemo(() => {
924
+ const pinnedColumns = [];
925
+ if (columns.some((column) => typeof column === "object" && column.pinned)) {
926
+ if (expandColumnVisibility === "always" || data.some(canRowExpand)) pinnedColumns.push("expand-col");
927
+ if (showControls && enableRowSelection) pinnedColumns.push("select-col");
928
+ columns.forEach((column) => {
929
+ if (typeof column === "object" && column.pinned) pinnedColumns.push(column.accessor);
930
+ });
931
+ }
932
+ return { left: pinnedColumns };
933
+ }, [
934
+ columns,
935
+ data,
936
+ canRowExpand,
937
+ expandColumnVisibility,
938
+ showControls,
939
+ enableRowSelection
940
+ ]);
941
+ const toggleRowExpansion = useCallback((rowId) => {
942
+ setExpandedRows((prev) => {
943
+ const newSet = new Set(prev);
944
+ if (newSet.has(rowId)) newSet.delete(rowId);
945
+ else newSet.add(rowId);
946
+ return newSet;
947
+ });
948
+ }, [setExpandedRows]);
949
+ const dispatchCheckboxCellOnUpdate = useCallback((columnId, columnState) => {
950
+ const column = columns.find((col) => typeof col === "object" && col.accessor === columnId && col.format?.type === "checkbox");
951
+ if (column && typeof column === "object" && column.format?.type === "checkbox") column.format.onUpdate(Array.from(columnState));
952
+ }, [columns]);
953
+ const handleCheckboxCellChange = useCallback((columnId, rowId, checked) => {
954
+ setCheckboxColumnStates((prev) => {
955
+ const newStates = { ...prev };
956
+ if (!newStates[columnId]) newStates[columnId] = /* @__PURE__ */ new Set();
957
+ const columnState = new Set(newStates[columnId]);
958
+ if (checked) columnState.add(rowId);
959
+ else columnState.delete(rowId);
960
+ newStates[columnId] = columnState;
961
+ dispatchCheckboxCellOnUpdate(columnId, columnState);
962
+ return newStates;
963
+ });
964
+ }, [dispatchCheckboxCellOnUpdate]);
965
+ const getSelfAndNestedRowIds = useCallback((row, indexPath) => {
966
+ const rowId = getRowId ? getRowId(row) : indexPath.join(".");
967
+ if (isRowWithSubrows(row)) return [rowId, ...(row.subrows ?? []).map((subrow, subrowIndex) => getSelfAndNestedRowIds(subrow, [...indexPath, subrowIndex])).flat()];
968
+ return [rowId];
969
+ }, [getRowId]);
970
+ const handleSelectAllCheckboxCell = useCallback((columnId, checked) => {
971
+ setCheckboxColumnStates((prev) => {
972
+ const newStates = { ...prev };
973
+ let columnState;
974
+ if (checked) {
975
+ const allRowIds = data.flatMap((row, index) => getSelfAndNestedRowIds(row, [index]));
976
+ columnState = new Set(allRowIds);
977
+ } else columnState = /* @__PURE__ */ new Set();
978
+ newStates[columnId] = columnState;
979
+ dispatchCheckboxCellOnUpdate(columnId, columnState);
980
+ return newStates;
981
+ });
982
+ }, [
983
+ data,
984
+ getRowId,
985
+ dispatchCheckboxCellOnUpdate
986
+ ]);
987
+ const tableOptions = useMemo(() => {
988
+ const options = {};
989
+ if (isClientPagination(pagination)) {
990
+ options.getPaginationRowModel = getPaginationRowModel();
991
+ options.initialState = { pagination: { pageSize: pagination.pageSize } };
992
+ } else if (isServerPagination(pagination)) {
993
+ const currentPage = pagination.paginationParams?.["current-page"] || 1;
994
+ const pageSize = pagination.pageSize || 10;
995
+ options.manualPagination = true;
996
+ options.onPaginationChange = (updaterOrValue) => {
997
+ const oldPageSize = pageSize;
998
+ const oldPageIndex = currentPage - 1;
999
+ if (typeof updaterOrValue === "function") {
1000
+ const newPaginationState = updaterOrValue({
1001
+ pageSize,
1002
+ pageIndex: currentPage - 1
1003
+ });
1004
+ if (newPaginationState.pageSize !== oldPageSize) pagination.handlePageSizeClick(newPaginationState.pageSize);
1005
+ if (newPaginationState.pageIndex !== oldPageIndex) pagination.handlePageLinkClick(newPaginationState.pageIndex + 1);
1006
+ }
1007
+ };
1008
+ options.state = { pagination: {
1009
+ pageSize,
1010
+ pageIndex: currentPage - 1
1011
+ } };
1012
+ options.rowCount = pagination?.paginationParams?.["total-count"];
1013
+ options.pageCount = pagination?.paginationParams?.["total-pages"];
1014
+ }
1015
+ if (sort === true) {
1016
+ options.getSortedRowModel = getSortedRowModel();
1017
+ options.enableSorting = true;
1018
+ } else if (isServerSorting(sort)) {
1019
+ options.manualSorting = true;
1020
+ options.enableSorting = true;
1021
+ options.onSortingChange = (updaterOrValue) => {
1022
+ if (typeof updaterOrValue === "function") {
1023
+ const newSortingState = updaterOrValue(sort.state);
1024
+ sort.handleSortClick(newSortingState);
1025
+ }
1026
+ };
1027
+ options.state = {
1028
+ ...options.state ? options.state : {},
1029
+ sorting: sort.state
1030
+ };
1031
+ } else options.enableSorting = false;
1032
+ if (showControls && enableRowSelection) {
1033
+ options.enableRowSelection = getRowSelectable ? (row) => getRowSelectable(row.original) : true;
1034
+ options.onRowSelectionChange = setRowSelection;
1035
+ }
1036
+ if (!enableSubRowSelection) options.enableSubRowSelection = false;
1037
+ if (clientSearch) {
1038
+ if (manualFiltering) options.manualFiltering = true;
1039
+ else {
1040
+ options.getFilteredRowModel = getFilteredRowModel();
1041
+ options.globalFilterFn = "includesString";
1042
+ }
1043
+ options.onGlobalFilterChange = setGlobalFilter;
1044
+ }
1045
+ if (clientFiltering) {
1046
+ options.getFilteredRowModel = getFilteredRowModel();
1047
+ options.onColumnFiltersChange = setColumnFilters;
1048
+ }
1049
+ const columnOptionsVisibility = {};
1050
+ columns.forEach((column) => {
1051
+ const columnId = typeof column === "object" ? column.id || column.accessor : column;
1052
+ if (typeof column === "object" && "visibility" in column && column.visibility != null) columnOptionsVisibility[columnId] = column.visibility;
1053
+ else columnOptionsVisibility[columnId] = columnVisibility[columnId] ?? true;
1054
+ });
1055
+ options.state = {
1056
+ ...options.state,
1057
+ columnVisibility: columnOptionsVisibility
1058
+ };
1059
+ const expandedState = {};
1060
+ for (const rowId of expandedRows) expandedState[rowId] = true;
1061
+ options.state = {
1062
+ ...options.state,
1063
+ columnOrder,
1064
+ rowSelection,
1065
+ columnPinning: initialColumnPinning,
1066
+ expanded: expandedState,
1067
+ ...clientSearch && { globalFilter },
1068
+ ...clientFiltering && { columnFilters }
1069
+ };
1070
+ options.onColumnVisibilityChange = setColumnVisibility;
1071
+ options.onColumnOrderChange = setColumnOrder;
1072
+ options.enableSortingRemoval = enableSortingRemoval;
1073
+ options.sortDescFirst = sortDescFirst;
1074
+ options.enableColumnPinning = initialColumnPinning.left && initialColumnPinning.left.length > 0;
1075
+ return options;
1076
+ }, [
1077
+ pagination,
1078
+ columnVisibility,
1079
+ columnOrder,
1080
+ enableRowSelection,
1081
+ enableSubRowSelection,
1082
+ rowSelection,
1083
+ showControls,
1084
+ sort,
1085
+ enableSortingRemoval,
1086
+ sortDescFirst,
1087
+ clientSearch,
1088
+ globalFilter,
1089
+ clientFiltering,
1090
+ columnFilters,
1091
+ columns,
1092
+ initialColumnPinning,
1093
+ expandedRows
1094
+ ]);
1095
+ const handleRowSelectionWithShift = useCallback((clickedRow, table, checked, isShiftKey) => {
1096
+ const displayedRows = table.getRowModel().rows;
1097
+ const currentIndex = displayedRows.findIndex((r) => r.id === clickedRow.id);
1098
+ const lastSelectedRowId = lastSelectedRowIdRef.current;
1099
+ const lastIndex = lastSelectedRowId != null ? displayedRows.findIndex((r) => r.id === lastSelectedRowId) : -1;
1100
+ if (isShiftKey && lastIndex !== -1 && currentIndex !== -1) {
1101
+ const startIndex = Math.min(lastIndex, currentIndex);
1102
+ const endIndex = Math.max(lastIndex, currentIndex);
1103
+ displayedRows.slice(startIndex, endIndex + 1).forEach((rangeRow) => {
1104
+ if (rangeRow.getCanSelect()) rangeRow.toggleSelected(checked);
1105
+ });
1106
+ } else clickedRow.toggleSelected(checked);
1107
+ lastSelectedRowIdRef.current = clickedRow.id;
1108
+ }, []);
1109
+ const columnsWithFilterFn = useMemo(() => {
1110
+ if (!clientFiltering) return columns;
1111
+ return columns.map((column) => {
1112
+ if (typeof column === "object" && column.filter != null && typeof column.filter === "object" && "type" in column.filter && typeof column.filter.type === "string") {
1113
+ const filterType = column.filter.type;
1114
+ return {
1115
+ ...column,
1116
+ filter: {
1117
+ ...column.filter,
1118
+ filterFn: getFilterFnName(filterType)
1119
+ }
1120
+ };
1121
+ }
1122
+ return column;
1123
+ });
1124
+ }, [columns, clientFiltering]);
1125
+ const strings = usePDSStrings();
1126
+ const locale = usePDSLocale();
1127
+ const defaultRenderFormat = useCallback((value, format, row) => renderAsPDSFormat(value, format, row, {
1128
+ locale,
1129
+ strings
1130
+ }), [locale, strings]);
1131
+ const [tableColumns, columnOptions] = useTableColumns({
1132
+ columns: columnsWithFilterFn,
1133
+ data,
1134
+ compact,
1135
+ sort,
1136
+ clientSearch,
1137
+ clientFiltering,
1138
+ expandColumnVisibility,
1139
+ showControls,
1140
+ enableRowSelection,
1141
+ enableSubRowSelection,
1142
+ rowActions,
1143
+ getRowId,
1144
+ expandedRows,
1145
+ toggleRowExpansion,
1146
+ canRowExpand,
1147
+ checkboxColumnStates,
1148
+ handleCheckboxCellChange,
1149
+ handleSelectAllCheckboxCell,
1150
+ getSelfAndNestedRowIds,
1151
+ handleRowSelectionWithShift,
1152
+ renderFormat: renderFormat ?? defaultRenderFormat
1153
+ });
1154
+ const expandRowsCustom = useCallback((rowModel) => {
1155
+ const expandedRows = [];
1156
+ const handleRow = (row) => {
1157
+ expandedRows.push(row);
1158
+ if (row.subRows?.length && row.getIsExpanded()) row.subRows.forEach(handleRow);
1159
+ else if (isRowWithSubrowsToAlwaysShowIds(row.original)) row.subRows.filter((subrow) => row.original.subrowsToAlwaysShowIds.includes(subrow.id)).forEach(handleRow);
1160
+ };
1161
+ rowModel.rows.forEach(handleRow);
1162
+ return {
1163
+ rows: expandedRows,
1164
+ flatRows: rowModel.flatRows,
1165
+ rowsById: rowModel.rowsById
1166
+ };
1167
+ }, []);
1168
+ function getExpandedRowModelCustom() {
1169
+ return (table) => memo$1(() => [
1170
+ table.getState().expanded,
1171
+ table.getPreExpandedRowModel(),
1172
+ table.options.paginateExpandedRows
1173
+ ], (expanded, rowModel, paginateExpandedRows) => {
1174
+ if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded ?? {}).length) return expandRowsCustom(rowModel);
1175
+ if (!paginateExpandedRows) return rowModel;
1176
+ return expandRowsCustom(rowModel);
1177
+ }, getMemoOptions(table.options, "debugTable", "getExpandedRowModel"));
1178
+ }
1179
+ const table = useReactTable({
1180
+ data,
1181
+ columns: tableColumns,
1182
+ getSubRows: (row) => isRowWithSubrows(row) ? row.subrows : [],
1183
+ getCoreRowModel: getCoreRowModel(),
1184
+ getExpandedRowModel: getExpandedRowModelCustom(),
1185
+ getRowId,
1186
+ ...tableOptions
1187
+ });
1188
+ const tableHeaderGroup = table.getHeaderGroups()[0];
1189
+ const unprocessedRows = table.getCoreRowModel().rows;
1190
+ const rows = table.getRowModel().rows;
1191
+ const displayedRowIdsKey = rows.map((row) => row.id).join(DISPLAYED_ROW_IDS_SEPARATOR);
1192
+ useEffect(() => {
1193
+ onDisplayedRowIdsChange?.(displayedRowIdsKey ? displayedRowIdsKey.split(DISPLAYED_ROW_IDS_SEPARATOR) : []);
1194
+ }, [displayedRowIdsKey, onDisplayedRowIdsChange]);
1195
+ useEffect(() => {
1196
+ const states = {};
1197
+ const checkboxColumns = columns.filter((column) => typeof column === "object" && column.format?.type === "checkbox");
1198
+ for (const column of checkboxColumns) {
1199
+ const columnId = column.id || column.accessor;
1200
+ const checkedRowIds = /* @__PURE__ */ new Set();
1201
+ const getSelfAndNestedRows = (row) => [row, ...row.subRows.map(getSelfAndNestedRows).flat()];
1202
+ const rootAndNestedRows = unprocessedRows.flatMap(getSelfAndNestedRows);
1203
+ for (const row of rootAndNestedRows) {
1204
+ const rowId = row.id;
1205
+ if (row.original[column.accessor]) checkedRowIds.add(rowId);
1206
+ }
1207
+ states[columnId] = checkedRowIds;
1208
+ }
1209
+ setCheckboxColumnStates(states);
1210
+ }, [unprocessedRows, columns]);
1211
+ const generatedSearchProps = clientSearch ? {
1212
+ value: globalFilter,
1213
+ handleInput: setGlobalFilter,
1214
+ placeholder: typeof clientSearch === "object" ? clientSearch.placeholder || DEFAULT_SEARCH_PLACEHOLDER : DEFAULT_SEARCH_PLACEHOLDER,
1215
+ ...typeof clientSearch === "object" && clientSearch
1216
+ } : void 0;
1217
+ const unifiedFilters = useMemo(() => {
1218
+ const configuredFilters = controls?.filters ?? [];
1219
+ if (!clientFiltering) return [...configuredFilters];
1220
+ const clientFilters = generateClientFilters(columns.filter((column) => typeof column === "object"), columnFilters, setColumnFilters);
1221
+ return [...configuredFilters, ...clientFilters];
1222
+ }, [
1223
+ clientFiltering,
1224
+ columnFilters,
1225
+ columns,
1226
+ controls?.filters,
1227
+ setColumnFilters
1228
+ ]);
1229
+ const getCommonPinningStyles = useCallback((column) => {
1230
+ const isPinned = column.getIsPinned();
1231
+ const isLastPinned = isPinned === "left" && column.getIsLastColumn("left");
1232
+ return {
1233
+ left: isPinned === "left" ? `${column.getStart("left") + pinnedColumnLeftOffset}px` : void 0,
1234
+ position: isPinned ? "sticky" : "relative",
1235
+ hasRightBorder: isLastPinned
1236
+ };
1237
+ }, [pinnedColumnLeftOffset]);
1238
+ /**
1239
+ * Check if the column is a table feature column.
1240
+ * Feature columns are special columns set by the table to
1241
+ * allow a user to perform an action.
1242
+ */
1243
+ const isFeatureCol = (columnId) => {
1244
+ return [
1245
+ "select-col",
1246
+ "expand-col",
1247
+ "action-col"
1248
+ ].includes(columnId);
1249
+ };
1250
+ const selectedRows = table.getFilteredSelectedRowModel().flatRows;
1251
+ useEffect(() => {
1252
+ onRowSelectionChange?.(selectedRows.map((row) => row.original));
1253
+ }, [selectedRows, onRowSelectionChange]);
1254
+ const actions = useMemo(() => {
1255
+ return (getAvailableBulkActions ? getAvailableBulkActions(selectedRows.map((row) => row.original)) : bulkActions || controls?.bulkActions)?.map((action) => {
1256
+ const clearSelection = () => table.setRowSelection({});
1257
+ const baseAction = {
1258
+ ...action,
1259
+ onClick: async () => {
1260
+ await action.onClick(selectedRows.map((row) => row.id), clearSelection);
1261
+ }
1262
+ };
1263
+ if ("popover" in action && action.popover) {
1264
+ const popoverConfig = action.popover;
1265
+ return {
1266
+ ...baseAction,
1267
+ popover: {
1268
+ options: popoverConfig.options,
1269
+ onOptionSelect: async (option) => {
1270
+ await popoverConfig.onOptionSelect(option, selectedRows.map((row) => row.id));
1271
+ table.setRowSelection({});
1272
+ }
1273
+ }
1274
+ };
1275
+ }
1276
+ return baseAction;
1277
+ });
1278
+ }, [
1279
+ bulkActions,
1280
+ getAvailableBulkActions,
1281
+ selectedRows,
1282
+ table,
1283
+ controls?.bulkActions
1284
+ ]);
1285
+ const shouldShowFloatingActionBar = compact && actions && actions.length > 0 && selectedRows.length > 0;
1286
+ const hasGlobalFilter = clientSearch && globalFilter && globalFilter.trim().length > 0;
1287
+ const hasFilters = columnFilters.length > 0 || controls?.filterPanel == null && unifiedFilters.some((filter) => filter.enabled !== false && isFilterActive(filter, controls?.filterResolver));
1288
+ const hasActiveFilters = hasGlobalFilter || hasFilters || hasExternalActiveFilters;
1289
+ return /* @__PURE__ */ jsxs(DataTableContainer, {
1290
+ $stickyHeader: stickyHeader,
1291
+ children: [
1292
+ showControls && /* @__PURE__ */ jsx(DataTableControls, {
1293
+ compact,
1294
+ title,
1295
+ propertiesButton: showColumnProperties && /* @__PURE__ */ jsx(TableViewConfigurationDropdown, {
1296
+ disabled: false,
1297
+ columnConfiguration: table.getVisibleFlatColumns().filter((column) => !isFeatureCol(column.columnDef.id ?? "")).map((column) => ({
1298
+ key: column.id,
1299
+ label: column.columnDef.header?.toString() || column.id
1300
+ })).sort((a, b) => {
1301
+ return (orderMap[a.key] || 0) - (orderMap[b.key] || 0);
1302
+ }),
1303
+ attributeOptions: columnOptions,
1304
+ updateColumnConfiguration: (newConfiguration) => {
1305
+ table.getAllColumns().map((column) => {
1306
+ column.toggleVisibility(!!newConfiguration.find((c) => c.key === column.id));
1307
+ });
1308
+ setColumnOrder(newConfiguration.map((c) => c.key));
1309
+ if (onUpdateColumnProperties) onUpdateColumnProperties(newConfiguration);
1310
+ },
1311
+ size: compact ? "sm" : void 0,
1312
+ variant: compact ? "text" : "basic"
1313
+ }),
1314
+ selectedRows: table.getFilteredSelectedRowModel().flatRows.map((row) => row.id),
1315
+ onClearSelection: () => table.setRowSelection({}),
1316
+ searchProps: generatedSearchProps,
1317
+ ...controls,
1318
+ bulkActions: actions,
1319
+ filters: unifiedFilters
1320
+ }),
1321
+ /* @__PURE__ */ jsxs(TableContainer, {
1322
+ $stickyHeader: stickyHeader,
1323
+ children: [/* @__PURE__ */ jsx(StyledTableLayout, {
1324
+ $onAddRow: !!onAddRow,
1325
+ stickyHeader,
1326
+ containerScrollsHorizontally: scrollsHorizontally,
1327
+ headerTR: /* @__PURE__ */ jsx(Fragment$1, { children: tableHeaderGroup.headers.map((header) => {
1328
+ const pinningStyles = getCommonPinningStyles(header.column);
1329
+ const isPinned = pinningStyles.position === "sticky";
1330
+ const width = header.column.columnDef.meta?.width ? `${header.column.columnDef.meta?.width}px` : void 0;
1331
+ const minWidth = header.column.columnDef.meta?.minWidth ? `${header.column.columnDef.meta?.minWidth}px` : width ?? `${header.column.getSize()}px`;
1332
+ const thProps = {
1333
+ id: header.id,
1334
+ sortable: isFeatureCol(header.id) ? false : header.column.getCanSort(),
1335
+ onClick: isFeatureCol(header.id) ? void 0 : header.column.getToggleSortingHandler(),
1336
+ sortDirection: isFeatureCol(header.id) ? void 0 : header.column.getIsSorted(),
1337
+ colSpan: header.colSpan,
1338
+ align: header.column.columnDef.meta?.align,
1339
+ width: header.column.columnDef.meta?.width ? `${header.column.columnDef.meta?.width}px` : void 0,
1340
+ size: compact ? "sm" : "md",
1341
+ style: { minWidth }
1342
+ };
1343
+ if (isPinned) return /* @__PURE__ */ createElement(StickyTH, {
1344
+ ...thProps,
1345
+ key: header.id,
1346
+ left: pinningStyles.left ? parseInt(pinningStyles.left) : 0,
1347
+ hasRightBorder: pinningStyles.hasRightBorder
1348
+ }, flexRender(header.column.columnDef.header, header.getContext()));
1349
+ return /* @__PURE__ */ createElement(TableTH, {
1350
+ ...thProps,
1351
+ key: header.id
1352
+ }, header.column.columnDef.meta?.headerTooltip ? /* @__PURE__ */ jsx(TextUnderlineTooltip, {
1353
+ side: "top",
1354
+ tooltip: header.column.columnDef.meta.headerTooltip,
1355
+ zIndex: Z_INDICES.topNavTooltip,
1356
+ children: flexRender(header.column.columnDef.header, header.getContext())
1357
+ }) : flexRender(header.column.columnDef.header, header.getContext()));
1358
+ }) }),
1359
+ nullState: /* @__PURE__ */ jsx("p", { children: strings.noResults }),
1360
+ isLoading,
1361
+ size: compact ? "sm" : void 0,
1362
+ children: columns.length === 0 ? /* @__PURE__ */ jsx(TableTR, {
1363
+ disableHoverBackground: true,
1364
+ children: /* @__PURE__ */ jsx(TableEmptyState, {
1365
+ colSpan: 1,
1366
+ children: /* @__PURE__ */ jsx(Paragraph, {
1367
+ size: "lg",
1368
+ weight: "bold",
1369
+ color: "primary",
1370
+ children: strings.noColumnsConfigured
1371
+ })
1372
+ })
1373
+ }) : rows.length === 0 ? /* @__PURE__ */ jsx(TableTR, {
1374
+ disableHoverBackground: true,
1375
+ children: /* @__PURE__ */ jsxs(TableEmptyState, {
1376
+ colSpan: tableHeaderGroup.headers.length,
1377
+ children: [/* @__PURE__ */ jsx(Paragraph, {
1378
+ size: "lg",
1379
+ weight: "bold",
1380
+ color: "primary",
1381
+ children: emptyState?.title || (hasActiveFilters ? strings.noResultsTryFilters : strings.noResults)
1382
+ }), emptyState?.description && /* @__PURE__ */ jsx(Paragraph, {
1383
+ size: "md",
1384
+ color: "secondary",
1385
+ children: emptyState.description
1386
+ })]
1387
+ })
1388
+ }) : rows.map((row) => {
1389
+ const rowData = row.original;
1390
+ const rowId = getRowId ? getRowId(rowData) : row.id;
1391
+ const rowLabel = getRowLabel?.(rowData);
1392
+ const isExpanded = expandedRows.has(rowId);
1393
+ const canExpand = canRowExpand(rowData);
1394
+ const rowLinkHref = getLinkToRow ? getLinkToRow(row.original) : rowLinkPrefix ? `${rowLinkPrefix}/${rowId}` : void 0;
1395
+ const dynamicNestSpacing = showControls && enableRowSelection ? NEST_SPACING + 8 : NEST_SPACING;
1396
+ const visibleCells = row.getVisibleCells();
1397
+ const isLinkableCell = (cell) => !isFeatureCol(cell.column.id) && cell.column.columnDef.meta?.format?.type !== "url";
1398
+ const rowLinkCellId = rowLinkHref ? visibleCells.find((cell) => cell.column.id === rowLinkColumnId && isLinkableCell(cell))?.column.id ?? visibleCells.find(isLinkableCell)?.column.id : void 0;
1399
+ const RowLinkComponent = rowLinkComponent ?? RouterLink;
1400
+ const renderCellContent = (cell) => {
1401
+ const content = flexRender(cell.column.columnDef.cell, cell.getContext());
1402
+ if (!rowLinkHref || cell.column.id !== rowLinkCellId) return content;
1403
+ const value = cell.getValue();
1404
+ return /* @__PURE__ */ jsx(RowLink, {
1405
+ as: RowLinkComponent,
1406
+ to: rowLinkHref,
1407
+ "data-row-link": true,
1408
+ "aria-label": value == null || value === "" ? rowLabel : void 0,
1409
+ children: content
1410
+ });
1411
+ };
1412
+ let leftMostNonSpecialColumnFound = false;
1413
+ const rowElements = visibleCells.map((cell) => {
1414
+ const pinningStyles = getCommonPinningStyles(cell.column);
1415
+ const isPinned = pinningStyles.position === "sticky";
1416
+ if (cell.column.id === "action-col") return /* @__PURE__ */ jsx(StyledTableActionTD, {
1417
+ style: { textAlign: cell.column.columnDef.meta?.align },
1418
+ $nestSpacing: row.depth * dynamicNestSpacing,
1419
+ children: renderCellContent(cell)
1420
+ }, cell.id);
1421
+ if (isPinned) {
1422
+ const leftBumpFromNesting = !leftMostNonSpecialColumnFound ? row.depth * dynamicNestSpacing : 0;
1423
+ const width = cell.column.columnDef.meta?.width ? `${cell.column.columnDef.meta?.width}px` : void 0;
1424
+ const minWidth = cell.column.columnDef.meta?.minWidth ? `${cell.column.columnDef.meta?.minWidth}px` : width ?? `${cell.column.getSize()}px`;
1425
+ const stickyTableCell = cell.column.id === "expand-col" ? /* @__PURE__ */ jsx(StickyTDWithGapCoverage, {
1426
+ left: (pinningStyles.left ? parseInt(pinningStyles.left) : 0) + leftBumpFromNesting,
1427
+ style: {
1428
+ minWidth,
1429
+ textAlign: cell.column.columnDef.meta?.align
1430
+ },
1431
+ hasRightBorder: pinningStyles.hasRightBorder,
1432
+ $gapCoverage: leftBumpFromNesting,
1433
+ children: renderCellContent(cell)
1434
+ }, cell.id) : /* @__PURE__ */ jsx(StickyTD, {
1435
+ left: (pinningStyles.left ? parseInt(pinningStyles.left) : 0) + leftBumpFromNesting,
1436
+ style: {
1437
+ minWidth,
1438
+ textAlign: cell.column.columnDef.meta?.align
1439
+ },
1440
+ hasRightBorder: pinningStyles.hasRightBorder,
1441
+ children: renderCellContent(cell)
1442
+ }, cell.id);
1443
+ if (!leftMostNonSpecialColumnFound && !isFeatureCol(cell.column.id)) leftMostNonSpecialColumnFound = true;
1444
+ return stickyTableCell;
1445
+ }
1446
+ const tableCell = /* @__PURE__ */ jsx(StyledTableTD, {
1447
+ style: { textAlign: cell.column.columnDef.meta?.align },
1448
+ width: isFeatureCol(cell.column.id) ? "1%" : void 0,
1449
+ $nestSpacing: leftMostNonSpecialColumnFound ? void 0 : row.depth * dynamicNestSpacing,
1450
+ $isFeatureCol: isFeatureCol(cell.column.id),
1451
+ children: renderCellContent(cell)
1452
+ }, cell.id);
1453
+ if (!leftMostNonSpecialColumnFound && !isFeatureCol(cell.column.id)) leftMostNonSpecialColumnFound = true;
1454
+ return tableCell;
1455
+ });
1456
+ const isRowActive = rowId === activeRowId;
1457
+ const handleRowClick = onRowClick != null ? () => {
1458
+ onRowClick(rowId);
1459
+ } : canExpand ? () => {
1460
+ toggleRowExpansion(rowId);
1461
+ } : void 0;
1462
+ const handleRowClickWithLink = (event) => {
1463
+ if (forwardedRowLinkClicks.has(event.nativeEvent)) return;
1464
+ handleRowClick?.();
1465
+ if (!rowLinkHref || event.defaultPrevented || event.target.closest("a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"menuitem\"]")) return;
1466
+ const link = event.currentTarget.querySelector("a[data-row-link]");
1467
+ const ownerWindow = link?.ownerDocument.defaultView;
1468
+ if (!link || !ownerWindow) return;
1469
+ const forwardedClick = new ownerWindow.MouseEvent("click", {
1470
+ bubbles: true,
1471
+ cancelable: true,
1472
+ button: event.button,
1473
+ ctrlKey: event.ctrlKey,
1474
+ metaKey: event.metaKey,
1475
+ shiftKey: event.shiftKey,
1476
+ altKey: event.altKey
1477
+ });
1478
+ forwardedRowLinkClicks.add(forwardedClick);
1479
+ link.dispatchEvent(forwardedClick);
1480
+ };
1481
+ const elements = [/* @__PURE__ */ jsx(TableTR, {
1482
+ "aria-label": rowLabel,
1483
+ onClick: handleRowClickWithLink,
1484
+ $isActive: isRowActive,
1485
+ disableHoverBackground: disableRowHover,
1486
+ css: { cursor: rowLinkHref || handleRowClick ? "pointer" : void 0 },
1487
+ ...isRowWithTourTarget(row.original) && { "data-tour-target": row.original.dataTourTarget },
1488
+ children: rowElements
1489
+ }, rowId)];
1490
+ if (canExpand && isExpanded) {
1491
+ let detailContent = null;
1492
+ if (isRowWithDetails(rowData) && rowData._details) if (typeof rowData._details === "function") detailContent = rowData._details(rowData);
1493
+ else detailContent = rowData._details;
1494
+ else if (detailComponent) detailContent = /* @__PURE__ */ jsx(detailComponent, { rowData });
1495
+ if (detailContent) {
1496
+ const detailCells = initialColumnPinning?.left?.length ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(StickyTD, {
1497
+ colSpan: 1,
1498
+ left: pinnedColumnLeftOffset
1499
+ }), /* @__PURE__ */ jsx(StickyDetailsTD, {
1500
+ colSpan: tableHeaderGroup.headers.length - 1,
1501
+ left: EXPAND_COLUMN_WIDTH + pinnedColumnLeftOffset,
1502
+ children: detailContent
1503
+ })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TableTD, { colSpan: 1 }), /* @__PURE__ */ jsx(DetailsTD, {
1504
+ colSpan: tableHeaderGroup.headers.length - 1,
1505
+ children: detailContent
1506
+ })] });
1507
+ elements.push(/* @__PURE__ */ jsx(TableTR, {
1508
+ disableHoverBackground: true,
1509
+ children: detailCells
1510
+ }, `${row.id}-details`));
1511
+ }
1512
+ }
1513
+ if (onAddRow && (!canAddAfterRow || canAddAfterRow?.(rowData, row.getIsExpanded() && isRowWithSubrows(rowData)))) elements.push(/* @__PURE__ */ jsx(Inserter, {
1514
+ priorRowLabel: `Row ${rowId}`,
1515
+ colSpan: tableHeaderGroup.headers.length,
1516
+ onAddRow: () => onAddRow(rowId, row.getIsExpanded() && isRowWithSubrows(rowData)),
1517
+ nestSpacing: row.depth * dynamicNestSpacing
1518
+ }, `${rowId}-inserter`));
1519
+ return elements;
1520
+ })
1521
+ }), shouldShowFloatingActionBar && actions && /* @__PURE__ */ jsx(FloatingActionBarContainer, { children: /* @__PURE__ */ jsx(FloatingActionBar, {
1522
+ selectedCount: selectedRows.length,
1523
+ onClearSelection: () => table.setRowSelection({}),
1524
+ actions,
1525
+ extraContent: floatingBarContent
1526
+ }) })]
1527
+ }),
1528
+ pagination && data.length > 0 && /* @__PURE__ */ jsx(Pagination_default, {
1529
+ pageSize: table.getState().pagination.pageSize,
1530
+ pageSizeOptions: typeof pagination === "object" ? pagination.pageSizeOptions : void 0,
1531
+ showPageSizeSelector: isServerPagination(pagination) ? pagination.showPageSizeSelector : void 0,
1532
+ paginationParams: {
1533
+ "current-page": table.getState().pagination.pageIndex + 1,
1534
+ "total-count": table.getRowCount(),
1535
+ "total-pages": table.getPageCount()
1536
+ },
1537
+ handlePageLinkClick: (pageNumber) => table.setPageIndex(pageNumber - 1),
1538
+ handlePageSizeClick: table.setPageSize,
1539
+ onPageChange: isServerPagination(pagination) ? pagination.onPageChange : void 0
1540
+ })
1541
+ ]
1542
+ });
1543
+ };
1544
+ //#endregion
1545
+ export { getFilterFnName as S, renderAsString as _, useTableColumns as a, getColumnWidths as b, renderAsCheckboxHeader as c, renderAsDatetime as d, renderAsLightweightImage as f, renderAsSticker as g, renderAsPii as h, FloatingActionBarContainer as i, renderAsCopyableString as l, renderAsPDSFormat as m, DataTableContainer as n, Inserter as o, renderAsNumber as p, DataTableControls as r, renderAsCheckbox as s, DataTable as t, renderAsDate as u, renderAsURL as v, generateClientFilters as x, FloatingActionBar as y };
1546
+
1547
+ //# sourceMappingURL=DataTable-95ZxiPlV.mjs.map