@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
@@ -1,5 +1,5 @@
1
1
  import { a as styled, n as createGlobalStyle, r as css } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
- import { c as usePDSLocale, i as formatDateTime, l as usePDSStrings, u as DEFAULT_COMMON_STRINGS } from "./i18n-DeJa-arS.mjs";
2
+ import { c as usePDSLocale, i as formatDateTime, l as usePDSStrings, u as DEFAULT_COMMON_STRINGS } from "./i18n-BscB9FUy.mjs";
3
3
  import { TruncatedText } from "./lib/TruncatedText.mjs";
4
4
  import { semanticColor, semanticOnly, semanticTokens } from "./lib/semanticColor.mjs";
5
5
  import { paragraphMixins } from "./mixins/text.mjs";
@@ -17,20 +17,21 @@ import { Z_INDICES } from "./lib/zindex.mjs";
17
17
  import { focusOutline, focusWithinOutline } from "./mixins/focus.mjs";
18
18
  import { semanticScrollbar } from "./mixins/scrollbar.mjs";
19
19
  import { n as Stack, t as HStack } from "./Stack-BkC7FCdF.mjs";
20
- import { i as selectedPresetFor, n as parseDateFilterValue, r as resolveDateFilterValue, t as formatDateFilterValue } from "./date-filter-B8PKh5vg.mjs";
21
- import { n as Button, t as IconButton } from "./IconButton-Cqxfmrea.mjs";
22
- import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-CmYqreN0.mjs";
23
- import { r as InputGroup } from "./Input-Cg2HxteL.mjs";
20
+ import { n as Button, t as IconButton } from "./IconButton-HWx5Hlmi.mjs";
21
+ import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-SX8E9-Bk.mjs";
22
+ import { r as InputGroup } from "./Input-Dap055xf.mjs";
24
23
  import Input_default from "./components/Input/index.mjs";
25
- import { c as MenuList, s as MenuItem } from "./Menu-CwKmfxKI.mjs";
26
- import { n as DropdownMenu_default } from "./DropdownMenu-C2BHv8Lc.mjs";
27
- import { t as Combobox } from "./Combobox-BkpRqaxB.mjs";
24
+ import { c as MenuList, s as MenuItem } from "./Menu-Dw6Rcpk6.mjs";
25
+ import { n as DropdownMenu_default } from "./DropdownMenu-CedsmO5h.mjs";
26
+ import { t as Combobox } from "./Combobox-CcFJo68g.mjs";
27
+ import { n as Select, r as SelectHeader, t as Option } from "./Select-BJ9ACmRD.mjs";
28
28
  import { s as Popover_default } from "./Popover-BcII7usF.mjs";
29
- import { i as Modal_default } from "./Modal-BBIJVhv2.mjs";
30
- import { t as Toggle } from "./Toggle-BEOoATjS.mjs";
31
- import { t as ListBox } from "./ListBox-CjNokYs6.mjs";
32
- import { m as FormField, o as ComboboxField } from "./FormField-C3nUzhGT.mjs";
33
- import { r as DatePicker, t as DateRangePicker } from "./DatePicker-CjuR6ORz.mjs";
29
+ import { i as Modal_default } from "./Modal-kjUptzg1.mjs";
30
+ import { r as DateRangePicker, t as DatePicker } from "./DatePicker-D0cvVbzq.mjs";
31
+ import { t as Toggle } from "./Toggle-BLdemkh_.mjs";
32
+ import { i as selectedPresetFor, n as parseDateFilterValue, r as resolveDateFilterValue, t as formatDateFilterValue } from "./date-filter-D0ys8s0D.mjs";
33
+ import { t as ListBox } from "./ListBox-C80J7DCG.mjs";
34
+ import { m as FormField, o as ComboboxField } from "./FormField-cSG93kuo.mjs";
34
35
  import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
35
36
  import { Fragment, createContext, createElement, forwardRef, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
36
37
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -45,8 +46,8 @@ import { DragIcon as DragIcon$1 } from "@persona/icons/24px";
45
46
  import * as PopoverPrimitive from "@radix-ui/react-popover";
46
47
  import { DndContext, PointerSensor, closestCenter, pointerWithin, useSensor, useSensors } from "@dnd-kit/core";
47
48
  import { SortableContext, horizontalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
48
- import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
49
49
  import { parseAbsolute, parseDate, toCalendarDate, toZoned } from "@internationalized/date";
50
+ import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
50
51
  import { v4 } from "uuid";
51
52
  //#region components/DataTable/FormControlLabel/FormControlLabel.ts
52
53
  const FormControlLabel = styled(Label$1).attrs(() => ({
@@ -403,9 +404,10 @@ const TabOverflowContainer = styled.div`
403
404
  position: absolute;
404
405
  height: 32px;
405
406
  `;
406
- const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditViews, handleNameChange, onDuplicateView, onRequestDeleteView, onSelectView, onResetCurrentView, onSaveView, onSetDefaultView, onViewHiddenChange, onHideView, onKeyboardMove, isHidden = false, isViewDirty, showTabContextMenu, setShowTabContextMenu, className, ...rest }) => {
407
+ const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditViews, handleNameChange, onDuplicateView, onRequestDeleteView, onSelectView, onResetCurrentView, onSaveView, onRequestSetDefaultView, onRequestUnsetDefaultView, onViewHiddenChange, onHideView, onKeyboardMove, isHidden = false, isViewDirty, showTabContextMenu, setShowTabContextMenu, className, ...rest }) => {
407
408
  const strings = usePDSStrings();
408
409
  const showMenu = selected && (canEditViews || !!onViewHiddenChange);
410
+ const onRequestDefaultViewChange = view.isDefault ? onRequestUnsetDefaultView : onRequestSetDefaultView;
409
411
  const inputRef = useRef(null);
410
412
  const lastSubmittedNameRef = useRef(null);
411
413
  const submitNameChange = (newName) => {
@@ -491,16 +493,15 @@ const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditView
491
493
  onKeyDown: enterProxiesClick,
492
494
  children: strings.saveViewMenuItem
493
495
  }),
494
- canEditViews && onSetDefaultView && /* @__PURE__ */ jsx(MenuItem, {
495
- id: "table-controls__view__menu-set-default",
496
+ canEditViews && onRequestDefaultViewChange && /* @__PURE__ */ jsx(MenuItem, {
497
+ id: `table-controls__view__menu-${view.isDefault ? "unset" : "set"}-default`,
496
498
  prefixIcon: /* @__PURE__ */ jsx(StarIcon, {}),
497
- disabled: view.isDefault,
498
- onClick: async () => {
499
- await onSetDefaultView(view.id);
499
+ onClick: () => {
500
500
  setShowTabContextMenu(false);
501
+ onRequestDefaultViewChange(view);
501
502
  },
502
503
  onKeyDown: enterProxiesClick,
503
- children: view.isDefault ? strings.alreadyDefaultView : strings.setAsDefaultView
504
+ children: view.isDefault ? strings.unsetDefaultView : strings.setAsDefaultView
504
505
  }),
505
506
  onViewHiddenChange && /* @__PURE__ */ jsx(MenuItem, {
506
507
  id: "table-controls__view__menu-toggle-hidden",
@@ -670,24 +671,26 @@ const ProductTourStyles = createGlobalStyle`
670
671
  }
671
672
  }
672
673
  `;
673
- const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewIds, onAddView, onDuplicateView, onDeleteView, onViewNameChange, onReorderViews, onViewHiddenChange, onSaveView, onSetDefaultView, isViewDirty, canEditViews, showFilters, setShowFilters, searchProps, filtersId, propertiesButton, tableActions, isLoading, isFilterPanelLoading, showViews, selectedRows = [], bulkActions, onResetCurrentView, onClearSelection, title, "data-tour-target": dataTourTarget, compact, onError, filterPanel }) => {
674
+ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewIds, onAddView, onDuplicateView, onDeleteView, onViewNameChange, onReorderViews, onViewHiddenChange, onSaveView, onSetDefaultView, onUnsetDefaultView, isViewDirty, canEditViews, showFilters, setShowFilters, searchProps, filtersId, propertiesButton, tableActions, isLoading, isFilterPanelLoading, showViews, selectedRows = [], bulkActions, onResetCurrentView, onClearSelection, title, "data-tour-target": dataTourTarget, compact, onError, filterPanel }) => {
674
675
  const strings = usePDSStrings();
675
676
  const tabListRef = useRef(null);
676
677
  const tabOverflowRef = useRef(null);
677
678
  const [overflowViews, setOverflowViews] = useState([]);
678
679
  const [showTabContextMenu, setShowTabContextMenu] = useState(false);
679
- const [pendingDeleteView, setPendingDeleteView] = useState(null);
680
- const previousPendingDeleteViewRef = useRef(null);
681
- const [isDeletingView, setIsDeletingView] = useState(false);
680
+ const [viewAction, setViewAction] = useState(null);
681
+ const pendingViewAction = viewAction?.isOpen ? viewAction : null;
682
+ const previousPendingViewRef = useRef(null);
683
+ const isChangingViewRef = useRef(false);
684
+ const [isChangingView, setIsChangingView] = useState(false);
682
685
  const [isAddingView, setIsAddingView] = useState(false);
683
686
  const [overflowLeft, setOverflowLeft] = useState(null);
684
687
  const [tabOverflowWidth, setTabOverflowWidth] = useState(null);
685
688
  const [isAddViewOverflowing, setIsAddViewOverflowing] = useState(false);
686
689
  useEffect(() => {
687
- const previousPendingDeleteView = previousPendingDeleteViewRef.current;
688
- if (!pendingDeleteView && previousPendingDeleteView) (document.getElementById(`${OVERFLOW_TAB_ID_PREFIX}${previousPendingDeleteView.id}`) ?? document.getElementById(`${TAB_ID_PREFIX}${previousPendingDeleteView.id}`))?.focus({ preventScroll: true });
689
- previousPendingDeleteViewRef.current = pendingDeleteView;
690
- }, [pendingDeleteView]);
690
+ const previousPendingView = previousPendingViewRef.current;
691
+ if (!pendingViewAction && previousPendingView) (document.getElementById(`${OVERFLOW_TAB_ID_PREFIX}${previousPendingView.id}`) ?? document.getElementById(`${TAB_ID_PREFIX}${previousPendingView.id}`))?.focus({ preventScroll: true });
692
+ previousPendingViewRef.current = pendingViewAction?.view ?? null;
693
+ }, [pendingViewAction]);
691
694
  const [shownViews, hiddenViews] = useMemo(() => {
692
695
  const hiddenIds = new Set(hiddenViewIds);
693
696
  const allViews = views ?? [];
@@ -826,15 +829,65 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
826
829
  const handleNameChange = (view, newName) => {
827
830
  if (canEditViews && view.name !== newName) onViewNameChange?.(view.id, newName);
828
831
  };
829
- const onRequestDeleteView = onDeleteView ? (view) => setPendingDeleteView(view) : void 0;
830
- const confirmDeleteView = async () => {
831
- if (!pendingDeleteView || !onDeleteView) return;
832
- setIsDeletingView(true);
832
+ const onRequestDeleteView = onDeleteView ? (view) => setViewAction({
833
+ view,
834
+ action: "delete",
835
+ isOpen: true
836
+ }) : void 0;
837
+ const onRequestSetDefaultView = onSetDefaultView ? (view) => setViewAction({
838
+ view,
839
+ action: "set-default",
840
+ isOpen: true
841
+ }) : void 0;
842
+ const onRequestUnsetDefaultView = onUnsetDefaultView ? (view) => setViewAction({
843
+ view,
844
+ action: "unset-default",
845
+ isOpen: true
846
+ }) : void 0;
847
+ const getViewActionConfig = (action) => {
848
+ switch (action) {
849
+ case "set-default": return {
850
+ title: strings.setDefaultViewTitle,
851
+ confirmation: strings.setDefaultViewConfirmation,
852
+ label: strings.setAsDefaultView,
853
+ onConfirm: onSetDefaultView
854
+ };
855
+ case "unset-default": return {
856
+ title: strings.unsetDefaultViewTitle,
857
+ confirmation: strings.unsetDefaultViewConfirmation,
858
+ label: strings.unsetDefaultView,
859
+ onConfirm: onUnsetDefaultView
860
+ };
861
+ case "delete": return {
862
+ title: strings.deleteViewTitle,
863
+ confirmation: strings.deleteViewConfirmation,
864
+ label: strings.delete,
865
+ onConfirm: onDeleteView
866
+ };
867
+ }
868
+ };
869
+ const displayedActionConfig = getViewActionConfig(viewAction?.action ?? "delete");
870
+ const closeViewAction = () => {
871
+ setViewAction((previous) => previous && {
872
+ ...previous,
873
+ isOpen: false
874
+ });
875
+ };
876
+ const confirmViewAction = async () => {
877
+ if (!pendingViewAction || isChangingViewRef.current) return;
878
+ const onConfirm = getViewActionConfig(pendingViewAction.action).onConfirm;
879
+ if (!onConfirm) {
880
+ closeViewAction();
881
+ return;
882
+ }
883
+ isChangingViewRef.current = true;
884
+ setIsChangingView(true);
833
885
  try {
834
- await onDeleteView(pendingDeleteView.id);
835
- setPendingDeleteView(null);
886
+ await onConfirm(pendingViewAction.view.id);
887
+ closeViewAction();
836
888
  } catch {} finally {
837
- setIsDeletingView(false);
889
+ isChangingViewRef.current = false;
890
+ setIsChangingView(false);
838
891
  }
839
892
  };
840
893
  if (compact) return /* @__PURE__ */ jsx(CompactBar, {
@@ -891,7 +944,8 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
891
944
  onSelectView,
892
945
  onResetCurrentView,
893
946
  onSaveView,
894
- onSetDefaultView,
947
+ onRequestSetDefaultView,
948
+ onRequestUnsetDefaultView,
895
949
  onViewHiddenChange,
896
950
  isViewDirty: isViewDirty ?? false,
897
951
  selected: view.id === currentView,
@@ -968,7 +1022,8 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
968
1022
  onRequestDeleteView,
969
1023
  onResetCurrentView,
970
1024
  onSaveView,
971
- onSetDefaultView,
1025
+ onRequestSetDefaultView,
1026
+ onRequestUnsetDefaultView,
972
1027
  onViewHiddenChange,
973
1028
  onHideView: hideView,
974
1029
  isViewDirty: isViewDirty ?? false,
@@ -1019,94 +1074,438 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
1019
1074
  }),
1020
1075
  showFilters && filterPanel,
1021
1076
  /* @__PURE__ */ jsx(Modal_default, {
1022
- open: pendingDeleteView != null,
1077
+ open: pendingViewAction != null,
1023
1078
  onOpenChange: (open) => {
1024
- if (!open && !isDeletingView) setPendingDeleteView(null);
1079
+ if (!open && !isChangingViewRef.current) closeViewAction();
1025
1080
  },
1026
- isKeyboardDismissDisabled: isDeletingView,
1027
- contentProps: isDeletingView ? { showCloseButton: false } : void 0,
1028
- title: strings.deleteViewTitle,
1081
+ isKeyboardDismissDisabled: isChangingView,
1082
+ contentProps: isChangingView ? { showCloseButton: false } : void 0,
1083
+ title: displayedActionConfig.title,
1029
1084
  footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
1030
1085
  variant: "basic",
1031
1086
  width: "auto",
1032
- disabled: isDeletingView,
1033
- onClick: () => setPendingDeleteView(null),
1087
+ disabled: isChangingView,
1088
+ onClick: () => {
1089
+ if (!isChangingViewRef.current) closeViewAction();
1090
+ },
1034
1091
  children: strings.cancel
1035
1092
  }), /* @__PURE__ */ jsx(Button, {
1036
- id: "table-controls__view__delete-confirm",
1037
- variant: "danger",
1093
+ id: `table-controls__view__${viewAction?.action ?? "delete"}-confirm`,
1094
+ variant: viewAction?.action === "delete" ? "danger" : "primary",
1038
1095
  width: "auto",
1039
- isPending: isDeletingView,
1040
- onClick: confirmDeleteView,
1041
- children: strings.delete
1096
+ isPending: isChangingView,
1097
+ onClick: confirmViewAction,
1098
+ children: displayedActionConfig.label
1042
1099
  })] }),
1043
- children: /* @__PURE__ */ jsx(Paragraph, { children: strings.deleteViewConfirmation(pendingDeleteView?.name ?? "") })
1100
+ children: /* @__PURE__ */ jsx(Paragraph, { children: displayedActionConfig.confirmation(viewAction?.view.name ?? "") })
1044
1101
  })
1045
1102
  ] });
1046
1103
  };
1047
1104
  //#endregion
1048
- //#region components/DataTable/TableControls/TableControls.tsx
1049
- const TableControls = ({ filterPanel, searchProps, defaultShowFilters, showFilters: controlledShowFilters, setShowFilters: controlledSetShowFilters, className, tableActions, propertiesButton, isLoading, isFilterPanelLoading, showViews, canEditViews, onSelectView, views, hiddenViewIds, currentView, onAddView, onViewNameChange, onReorderViews, onViewHiddenChange, onDuplicateView, onDeleteView, onSaveView, onSetDefaultView, isViewDirty, selectedRows, bulkActions, onClearSelection, title, presetViews, compact, columnConfigurationProps, showFiltersAlways = false, onError, "data-tour-target": dataTourTarget }) => {
1050
- const filtersId = useId();
1051
- const [internalShowFilters, internalSetShowFilters] = useState(defaultShowFilters ?? false);
1052
- const showFilters = controlledShowFilters != null ? controlledShowFilters : internalShowFilters;
1053
- const setShowFilters = controlledSetShowFilters != null ? controlledSetShowFilters : internalSetShowFilters;
1054
- const enhancedPropertiesButton = useMemo(() => {
1055
- if (!columnConfigurationProps && !propertiesButton) return;
1056
- const elements = [];
1057
- if (propertiesButton) elements.push(propertiesButton);
1058
- if (columnConfigurationProps) elements.push(/* @__PURE__ */ jsx(TableViewConfigurationDropdown, {
1059
- disabled: false,
1060
- ...columnConfigurationProps
1061
- }, "column-config"));
1062
- if (elements.length === 1) return elements[0];
1063
- return /* @__PURE__ */ jsx(StyledEnhancedPropertiesButton, { children: elements });
1064
- }, [columnConfigurationProps, propertiesButton]);
1065
- return /* @__PURE__ */ jsx(Container, {
1066
- className,
1067
- children: /* @__PURE__ */ jsx(ControlBar, {
1068
- showViews: compact ? false : showViews,
1069
- views: compact ? void 0 : views,
1070
- hiddenViewIds: compact ? void 0 : hiddenViewIds,
1071
- onSelectView: compact ? void 0 : onSelectView,
1072
- currentView: compact ? void 0 : currentView,
1073
- onAddView: compact ? void 0 : onAddView,
1074
- onDeleteView: compact ? void 0 : onDeleteView,
1075
- onDuplicateView: compact ? void 0 : onDuplicateView,
1076
- onViewNameChange: compact ? void 0 : onViewNameChange,
1077
- onReorderViews: compact ? void 0 : onReorderViews,
1078
- onViewHiddenChange: compact ? void 0 : onViewHiddenChange,
1079
- onSaveView: compact ? void 0 : onSaveView,
1080
- onSetDefaultView: compact ? void 0 : onSetDefaultView,
1081
- isViewDirty,
1082
- canEditViews: compact ? false : canEditViews,
1083
- showFilters: showFilters && (showFiltersAlways || !isFilterPanelLoading),
1084
- setShowFilters: (filterPanel != null || isFilterPanelLoading) && !showFiltersAlways ? setShowFilters : void 0,
1085
- filtersId,
1086
- searchProps,
1087
- propertiesButton: enhancedPropertiesButton,
1088
- tableActions,
1089
- isLoading,
1090
- isFilterPanelLoading,
1091
- selectedRows,
1092
- bulkActions,
1093
- onClearSelection,
1094
- title,
1095
- "data-tour-target": dataTourTarget,
1096
- presetViews: compact ? void 0 : presetViews,
1105
+ //#region components/DataTable/TableControls/TableControlsContext.ts
1106
+ const TableControlsContext = createContext({
1107
+ filters: [],
1108
+ activeFilters: [],
1109
+ setActiveFilters: () => {}
1110
+ });
1111
+ function useTableControls() {
1112
+ return useContext(TableControlsContext);
1113
+ }
1114
+ function TableControlsProvider({ children, ...value }) {
1115
+ return createElement(TableControlsContext.Provider, { value }, children);
1116
+ }
1117
+ //#endregion
1118
+ //#region components/DataTable/TableControls/filters.tsx
1119
+ const SegmentedControl = styled.div`
1120
+ display: grid;
1121
+ grid-template-columns: min-content minmax(auto, max-content);
1122
+
1123
+ > *:first-child:not(:last-child) {
1124
+ border-top-right-radius: 0;
1125
+ border-bottom-right-radius: 0;
1126
+ }
1127
+
1128
+ > *:last-child:not(:first-child) {
1129
+ border-top-left-radius: 0;
1130
+ border-bottom-left-radius: 0;
1131
+ margin-left: -1px;
1132
+ }
1133
+
1134
+ /* Segments overlap by a pixel, so lift the focused one to keep its outline on top. */
1135
+ > *:focus-visible,
1136
+ > *:has(:focus-visible) {
1137
+ position: relative;
1138
+ z-index: 1;
1139
+ }
1140
+ `;
1141
+ const AddFilterButton = styled(Button)`
1142
+ opacity: 0;
1143
+ color: ${({ theme }) => theme.color.text.secondary};
1144
+
1145
+ @media (hover: none) {
1146
+ opacity: 1;
1147
+ }
1148
+
1149
+ &:focus-visible {
1150
+ opacity: 1;
1151
+ }
1152
+ `;
1153
+ const FiltersContainer = styled.div`
1154
+ display: flex;
1155
+ flex-wrap: wrap;
1156
+ gap: ${Spacing[2]};
1157
+ width: 100%;
1158
+
1159
+ &:hover {
1160
+ ${AddFilterButton} {
1161
+ opacity: 1;
1162
+ }
1163
+ }
1164
+ `;
1165
+ const FilterCombobox = styled.div`
1166
+ min-width: ${({ $compact }) => $compact ? "150px" : "200px"};
1167
+ max-width: ${({ $compact, $multiple }) => $compact && !$multiple ? "150px" : "250px"};
1168
+
1169
+ ${({ $isFilterSelectSibling }) => $isFilterSelectSibling && css`
1170
+ input[role='combobox'] {
1171
+ border-top-left-radius: 0;
1172
+ border-bottom-left-radius: 0;
1173
+ }
1174
+ `}
1175
+ `;
1176
+ const InputFilter = ({ config, compact, onActiveChange }) => {
1177
+ const [value, setValue] = useState(config.value);
1178
+ const onChangeRef = useRef(config.onChange);
1179
+ onChangeRef.current = config.onChange;
1180
+ const onActiveChangeRef = useRef(onActiveChange);
1181
+ onActiveChangeRef.current = onActiveChange;
1182
+ const debouncedOnChange = useMemo(() => debounce((nextValue) => {
1183
+ onActiveChangeRef.current(nextValue.length > 0);
1184
+ onChangeRef.current(nextValue);
1185
+ }, 300), []);
1186
+ useEffect(() => setValue(config.value), [config.value]);
1187
+ useEffect(() => () => debouncedOnChange.cancel(), [debouncedOnChange]);
1188
+ return /* @__PURE__ */ jsx(Input_default, {
1189
+ "aria-label": config.name,
1190
+ placeholder: config.placeholder,
1191
+ size: compact ? "sm" : void 0,
1192
+ value,
1193
+ onChange: ({ target: { value: nextValue } }) => {
1194
+ setValue(nextValue);
1195
+ debouncedOnChange(nextValue);
1196
+ }
1197
+ });
1198
+ };
1199
+ const SelectFilter = ({ config, compact, onActiveChange }) => {
1200
+ const strings = usePDSStrings();
1201
+ return /* @__PURE__ */ jsx(Select, {
1202
+ "aria-label": config.name,
1203
+ placeholder: config.placeholder ?? strings.selectFilterOption,
1204
+ value: config.value,
1205
+ width: "auto",
1206
+ minWidth: 150,
1207
+ size: compact ? "sm" : void 0,
1208
+ onValueChange: (value) => {
1209
+ onActiveChange(Boolean(value));
1210
+ config.onChange(value);
1211
+ },
1212
+ portal: true,
1213
+ children: config.options.map((option) => /* @__PURE__ */ jsx(Option, {
1214
+ value: option.value,
1215
+ children: option.label ?? option.value
1216
+ }, option.value))
1217
+ });
1218
+ };
1219
+ const builtInDefinitions = {
1220
+ input: {
1221
+ render: ({ config, compact, onActiveChange }) => {
1222
+ if (config.type !== "input") return null;
1223
+ return /* @__PURE__ */ jsx(InputFilter, {
1224
+ config,
1225
+ compact,
1226
+ onActiveChange
1227
+ }, config.id);
1228
+ },
1229
+ isActive: (config) => config.type === "input" && Boolean(config.value),
1230
+ clear: (config) => {
1231
+ if (config.type === "input") if (config.onDelete) config.onDelete();
1232
+ else config.onChange("");
1233
+ }
1234
+ },
1235
+ select: {
1236
+ render: ({ config, compact, onActiveChange }) => {
1237
+ if (config.type !== "select") return null;
1238
+ return /* @__PURE__ */ jsx(SelectFilter, {
1239
+ config,
1240
+ compact,
1241
+ onActiveChange
1242
+ });
1243
+ },
1244
+ isActive: (config) => config.type === "select" && Boolean(config.value),
1245
+ clear: (config) => config.type === "select" && config.onChange("")
1246
+ },
1247
+ multiselect: {
1248
+ render: ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1249
+ if (config.type !== "multiselect") return null;
1250
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1251
+ $compact: compact,
1252
+ $isFilterSelectSibling: isFilterSelectSibling,
1253
+ $multiple: true,
1254
+ children: /* @__PURE__ */ jsx(Combobox, {
1255
+ "aria-label": config.name,
1256
+ multiple: true,
1257
+ options: config.options.map((option) => ({
1258
+ ...option,
1259
+ label: option.label ?? option.value
1260
+ })),
1261
+ values: config.value,
1262
+ onValuesChange: (values) => {
1263
+ onActiveChange(values.length > 0);
1264
+ config.onChange(values);
1265
+ },
1266
+ placeholder: config.placeholder,
1267
+ size: compact ? "sm" : void 0,
1268
+ truncate: true
1269
+ })
1270
+ });
1271
+ },
1272
+ isActive: (config) => config.type === "multiselect" && config.value.length > 0,
1273
+ clear: (config) => config.type === "multiselect" && config.onChange([])
1274
+ },
1275
+ combobox: {
1276
+ render: ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1277
+ if (config.type !== "combobox") return null;
1278
+ return /* @__PURE__ */ jsx(ComboboxFilter, {
1279
+ config,
1280
+ compact,
1281
+ isFilterSelectSibling,
1282
+ onActiveChange
1283
+ });
1284
+ },
1285
+ isActive: (config) => config.type === "combobox" && (config.multiple ? Boolean(config.values?.length) : Boolean(config.value)),
1286
+ clear: (config) => {
1287
+ if (config.type === "combobox") if (config.multiple) config.onValuesChange?.([]);
1288
+ else config.onChange?.(null);
1289
+ }
1290
+ },
1291
+ daterange: {
1292
+ render: ({ config, compact, onActiveChange }) => {
1293
+ if (config.type !== "daterange") return null;
1294
+ return /* @__PURE__ */ jsx(DateRangePicker, {
1295
+ "aria-label": config.name,
1296
+ dateRange: config.value,
1297
+ label: null,
1298
+ onChange: (range) => {
1299
+ onActiveChange(range != null);
1300
+ config.onChange(range);
1301
+ },
1302
+ showClear: false,
1303
+ size: compact ? "sm" : void 0
1304
+ });
1305
+ },
1306
+ isActive: (config) => config.type === "daterange" && Boolean(config.value?.startDate || config.value?.endDate),
1307
+ clear: (config) => config.type === "daterange" && config.onChange(null)
1308
+ }
1309
+ };
1310
+ const ComboboxFilter = ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1311
+ if (config.multiple) {
1312
+ const { id: _id, name: _name, type: _type, enabled: _enabled, disabledReason: _disabledReason, required: _required, onFilterSelect: _onFilterSelect, defaultVisible: _defaultVisible, group: _group, htmlId: _htmlId, ...comboboxProps } = config;
1313
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1314
+ $compact: compact,
1315
+ $isFilterSelectSibling: isFilterSelectSibling,
1316
+ $multiple: true,
1317
+ children: /* @__PURE__ */ jsx(Combobox, {
1318
+ ...comboboxProps,
1319
+ "aria-label": config.name,
1320
+ size: compact ? "sm" : void 0,
1321
+ onValuesChange: (values) => {
1322
+ onActiveChange(values.length > 0);
1323
+ config.onValuesChange?.(values);
1324
+ }
1325
+ })
1326
+ });
1327
+ }
1328
+ const { id: _id, name: _name, type: _type, enabled: _enabled, disabledReason: _disabledReason, required: _required, onFilterSelect: _onFilterSelect, defaultVisible: _defaultVisible, group: _group, htmlId: _htmlId, ...comboboxProps } = config;
1329
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1330
+ $compact: compact,
1331
+ $isFilterSelectSibling: isFilterSelectSibling,
1332
+ $multiple: false,
1333
+ children: /* @__PURE__ */ jsx(Combobox, {
1334
+ ...comboboxProps,
1335
+ "aria-label": config.name,
1336
+ size: compact ? "sm" : void 0,
1337
+ onChange: (value) => {
1338
+ onActiveChange(Boolean(value));
1339
+ config.onChange?.(value);
1340
+ }
1341
+ })
1342
+ });
1343
+ };
1344
+ function resolveFilterTypeDefinition(config, filterResolver) {
1345
+ return filterResolver?.(config) ?? builtInDefinitions[config.type];
1346
+ }
1347
+ function isFilterActive(config, filterResolver) {
1348
+ return config.required === true || resolveFilterTypeDefinition(config, filterResolver)?.isActive(config) === true;
1349
+ }
1350
+ const getHighestId = (activeFilters) => activeFilters.reduce((highestId, filter) => Math.max(highestId, filter.id), 0);
1351
+ const getActiveFilters = (filters, activeFilters = [], includeDefaultVisible = false, filterResolver) => {
1352
+ let currentId = getHighestId(activeFilters);
1353
+ const activeByConfigId = new Map(activeFilters.flatMap((filter) => filter.config ? [[filter.config.id, filter]] : []));
1354
+ return filters.filter((filter) => isFilterActive(filter, filterResolver) || includeDefaultVisible && filter.defaultVisible).map((filter) => {
1355
+ return {
1356
+ id: activeByConfigId.get(filter.id)?.id ?? ++currentId,
1357
+ config: filter,
1358
+ isConfiguring: false
1359
+ };
1360
+ }).sort((first, second) => first.id - second.id);
1361
+ };
1362
+ const createUnsetFilter = (activeFilters) => ({
1363
+ id: getHighestId(activeFilters) + 1,
1364
+ isConfiguring: true
1365
+ });
1366
+ const synchronizeActiveFilters = (filters, activeFilters, filterResolver) => {
1367
+ if (filters.length === 0) return activeFilters.length === 0 ? activeFilters : [];
1368
+ const refreshed = activeFilters.flatMap((active) => {
1369
+ if (!active.config) return [active];
1370
+ const config = filters.find((filter) => filter.id === active.config?.id);
1371
+ if (config) return [{
1372
+ ...active,
1373
+ config
1374
+ }];
1375
+ return active.isConfiguring ? [active] : [];
1376
+ });
1377
+ const activeFromConfig = getActiveFilters(filters, refreshed, false, filterResolver);
1378
+ const activeConfigIds = new Set(activeFromConfig.flatMap((active) => active.config ? [active.config.id] : []));
1379
+ const retainedDefaultVisible = refreshed.filter((active) => active.config?.defaultVisible && !activeConfigIds.has(active.config.id));
1380
+ const configuring = refreshed.filter((active) => active.isConfiguring && (!active.config || !activeConfigIds.has(active.config.id)));
1381
+ const next = [
1382
+ ...activeFromConfig,
1383
+ ...retainedDefaultVisible,
1384
+ ...configuring
1385
+ ].sort((first, second) => first.id - second.id);
1386
+ return next.length === 0 ? [createUnsetFilter(activeFilters)] : next;
1387
+ };
1388
+ const Filter = ({ config, compact, hideFilterSelection, filterResolver }) => {
1389
+ const { activeFilters, setActiveFilters } = useTableControls();
1390
+ const strings = usePDSStrings();
1391
+ const definition = config ? resolveFilterTypeDefinition(config, filterResolver) : void 0;
1392
+ const onActiveChange = (active) => {
1393
+ setActiveFilters(activeFilters.map((filter) => filter.config?.id === config?.id ? {
1394
+ ...filter,
1395
+ isConfiguring: !active
1396
+ } : filter));
1397
+ };
1398
+ const content = config && definition?.render({
1399
+ config,
1400
+ compact,
1401
+ isFilterSelectSibling: !hideFilterSelection,
1402
+ onActiveChange
1403
+ });
1404
+ if (hideFilterSelection) return /* @__PURE__ */ jsx(Fragment$1, { children: content });
1405
+ return /* @__PURE__ */ jsxs(SegmentedControl, {
1406
+ id: config?.htmlId,
1407
+ role: "group",
1408
+ "aria-label": config?.name ? strings.filterGroupLabel(config.name) : strings.filter,
1409
+ children: [/* @__PURE__ */ jsx(FilterSelection, {
1410
+ value: config?.id,
1411
+ disabled: config?.required,
1097
1412
  compact,
1098
- onError,
1099
- filterPanel
1413
+ filterResolver
1414
+ }), content]
1415
+ });
1416
+ };
1417
+ const FilterSelection = ({ value, disabled, compact, filterResolver }) => {
1418
+ const strings = usePDSStrings();
1419
+ const { filters, activeFilters, setActiveFilters } = useTableControls();
1420
+ const options = useMemo(() => filters.filter((filter) => filter.id === value || !activeFilters.some((active) => active.config?.id === filter.id)).filter((filter) => !filter.group || filter.id === value || !activeFilters.some((active) => active.config?.group === filter.group && active.config?.id !== value)), [
1421
+ activeFilters,
1422
+ filters,
1423
+ value
1424
+ ]);
1425
+ const replaceFilter = (nextId) => {
1426
+ const next = filters.find((filter) => filter.id === nextId);
1427
+ const previous = filters.find((filter) => filter.id === value);
1428
+ if (!next) return;
1429
+ if (!value) {
1430
+ setActiveFilters(activeFilters.map((active) => active.config ? active : {
1431
+ ...active,
1432
+ config: next
1433
+ }));
1434
+ next.onFilterSelect?.();
1435
+ return;
1436
+ }
1437
+ if (previous) resolveFilterTypeDefinition(previous, filterResolver)?.clear(previous);
1438
+ setActiveFilters(activeFilters.map((active) => active.config?.id === value ? {
1439
+ ...active,
1440
+ config: next,
1441
+ isConfiguring: true
1442
+ } : active));
1443
+ next.onFilterSelect?.();
1444
+ };
1445
+ const removeFilter = () => {
1446
+ const current = filters.find((filter) => filter.id === value);
1447
+ if (current) resolveFilterTypeDefinition(current, filterResolver)?.clear(current);
1448
+ setActiveFilters(activeFilters.filter((active) => active.config?.id !== value));
1449
+ };
1450
+ return /* @__PURE__ */ jsx(Select, {
1451
+ "aria-label": strings.filterType,
1452
+ width: "auto",
1453
+ minWidth: 120,
1454
+ placeholder: strings.selectFilterType,
1455
+ value,
1456
+ size: compact ? "sm" : void 0,
1457
+ disabled,
1458
+ onValueChange: replaceFilter,
1459
+ portal: true,
1460
+ header: /* @__PURE__ */ jsx(SelectHeader, {
1461
+ title: strings.filterType,
1462
+ menuTriggerLabel: strings.filterActions,
1463
+ menuItems: /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
1464
+ onClick: removeFilter,
1465
+ children: strings.deleteFilter
1466
+ })
1467
+ }),
1468
+ children: options.map((filter) => {
1469
+ const isDisabled = Boolean(filter.disabledReason) && filter.id !== value;
1470
+ const option = /* @__PURE__ */ jsx(Option, {
1471
+ value: filter.id,
1472
+ disabled: isDisabled,
1473
+ style: isDisabled ? { pointerEvents: "auto" } : void 0,
1474
+ children: filter.name
1475
+ }, filter.id);
1476
+ return isDisabled ? /* @__PURE__ */ jsx(Tooltip, {
1477
+ trigger: option,
1478
+ side: "top",
1479
+ children: filter.disabledReason
1480
+ }, filter.id) : option;
1100
1481
  })
1101
1482
  });
1102
1483
  };
1103
- const Container = styled(Stack)`
1104
- margin-bottom: ${Spacing[2]};
1105
- `;
1106
- const StyledEnhancedPropertiesButton = styled.div`
1107
- display: flex;
1108
- gap: ${Spacing[1]};
1109
- `;
1484
+ const Filters = ({ compact, filterResolver, ...props }) => {
1485
+ const strings = usePDSStrings();
1486
+ const { filters, activeFilters, setActiveFilters } = useTableControls();
1487
+ const hasNewFilter = activeFilters.some((filter) => !filter.config);
1488
+ const hideFilterSelection = Boolean(compact && filters.length > 0 && filters.every((filter) => filter.required));
1489
+ return /* @__PURE__ */ jsxs(FiltersContainer, {
1490
+ ...props,
1491
+ children: [activeFilters.map((filter) => /* @__PURE__ */ jsx(Filter, {
1492
+ config: filter.config,
1493
+ compact,
1494
+ hideFilterSelection,
1495
+ filterResolver
1496
+ }, filter.id)), /* @__PURE__ */ jsx(AddFilterButton, {
1497
+ id: "table-controls__add-filter-button",
1498
+ type: "button",
1499
+ variant: "text",
1500
+ width: "icon",
1501
+ size: compact ? "sm" : "md",
1502
+ "aria-label": strings.addFilter,
1503
+ disabled: hasNewFilter || activeFilters.length >= filters.length,
1504
+ onClick: () => setActiveFilters([...activeFilters, createUnsetFilter(activeFilters)]),
1505
+ children: /* @__PURE__ */ jsx(CirclePlusIcon, {})
1506
+ })]
1507
+ });
1508
+ };
1110
1509
  //#endregion
1111
1510
  //#region components/DataTable/dnd/StyledIconDrag.tsx
1112
1511
  const StyledIconDrag = styled(DragIcon$1)`
@@ -1431,18 +1830,111 @@ const AttributeDnd = ({ column, index, isDisabled = false, isToggled, shouldDisa
1431
1830
  ] }, `${column.key}-${index}`);
1432
1831
  };
1433
1832
  //#endregion
1434
- //#region components/DataTable/TableControls/TableControlsContext.ts
1435
- const TableControlsContext = createContext({
1436
- filters: [],
1437
- activeFilters: [],
1438
- setActiveFilters: () => {}
1439
- });
1440
- function useTableControls() {
1441
- return useContext(TableControlsContext);
1442
- }
1443
- function TableControlsProvider({ children, ...value }) {
1444
- return createElement(TableControlsContext.Provider, { value }, children);
1445
- }
1833
+ //#region components/DataTable/TableControls/TableControls.tsx
1834
+ const EMPTY_FILTERS = [];
1835
+ const resolveFilterArea = (filterPanel, configuredFilterPanel) => filterPanel ?? configuredFilterPanel;
1836
+ const hasNewFilterId = (currentIds, previousIds) => {
1837
+ const previous = new Set(previousIds.split("\0").filter(Boolean));
1838
+ return currentIds.split("\0").some((id) => id !== "" && !previous.has(id));
1839
+ };
1840
+ const TableControls = ({ filters = EMPTY_FILTERS, filterResolver, filterPanel, searchProps, defaultShowFilters, showFilters: controlledShowFilters, setShowFilters: controlledSetShowFilters, className, tableActions, propertiesButton, isLoading, isFilterPanelLoading, showViews, canEditViews, onSelectView, views, hiddenViewIds, currentView, onAddView, onViewNameChange, onReorderViews, onViewHiddenChange, onDuplicateView, onDeleteView, onSaveView, onSetDefaultView, onUnsetDefaultView, isViewDirty, selectedRows, bulkActions, onClearSelection, title, presetViews, compact, columnConfigurationProps, showFiltersAlways = false, onError, "data-tour-target": dataTourTarget }) => {
1841
+ const filtersId = useId();
1842
+ const enabledFilters = useMemo(() => filters.filter((filter) => filter.enabled !== false), [filters]);
1843
+ const [activeFilters, setActiveFilters] = useState(() => getActiveFilters(enabledFilters, [], true, filterResolver));
1844
+ const resolvedFilterPanel = resolveFilterArea(filterPanel, enabledFilters.length > 0 ? /* @__PURE__ */ jsx(TableControlsProvider, {
1845
+ filters: enabledFilters,
1846
+ activeFilters,
1847
+ setActiveFilters,
1848
+ children: /* @__PURE__ */ jsx(Filters, {
1849
+ id: filtersId,
1850
+ compact,
1851
+ filterResolver
1852
+ })
1853
+ }) : void 0);
1854
+ const [internalShowFilters, internalSetShowFilters] = useState(defaultShowFilters ?? (filterPanel == null && activeFilters.length > 0));
1855
+ useEffect(() => {
1856
+ setActiveFilters((current) => synchronizeActiveFilters(enabledFilters, current, filterResolver));
1857
+ }, [enabledFilters, filterResolver]);
1858
+ const activeFilterIds = enabledFilters.filter((filter) => isFilterActive(filter, filterResolver)).map((filter) => filter.id).sort().join("\0");
1859
+ const configuredFilterIds = activeFilters.flatMap((filter) => filter.config ? [filter.config.id] : []).sort().join("\0");
1860
+ const previousActiveFilterIds = useRef(activeFilterIds);
1861
+ const previousConfiguredFilterIds = useRef(configuredFilterIds);
1862
+ useEffect(() => {
1863
+ const becameActive = hasNewFilterId(activeFilterIds, previousActiveFilterIds.current);
1864
+ const newlyConfigured = hasNewFilterId(configuredFilterIds, previousConfiguredFilterIds.current);
1865
+ previousActiveFilterIds.current = activeFilterIds;
1866
+ previousConfiguredFilterIds.current = configuredFilterIds;
1867
+ if (defaultShowFilters == null && filterPanel == null && (becameActive || newlyConfigured)) internalSetShowFilters(true);
1868
+ }, [
1869
+ activeFilterIds,
1870
+ configuredFilterIds,
1871
+ defaultShowFilters,
1872
+ filterPanel
1873
+ ]);
1874
+ const showFilters = controlledShowFilters != null ? controlledShowFilters : internalShowFilters;
1875
+ const setShowFilters = controlledSetShowFilters != null ? controlledSetShowFilters : internalSetShowFilters;
1876
+ const enhancedPropertiesButton = useMemo(() => {
1877
+ if (!columnConfigurationProps && !propertiesButton) return;
1878
+ const elements = [];
1879
+ if (propertiesButton) elements.push(propertiesButton);
1880
+ if (columnConfigurationProps) elements.push(/* @__PURE__ */ jsx(TableViewConfigurationDropdown, {
1881
+ disabled: false,
1882
+ ...columnConfigurationProps
1883
+ }, "column-config"));
1884
+ if (elements.length === 1) return elements[0];
1885
+ return /* @__PURE__ */ jsx(StyledEnhancedPropertiesButton, { children: elements });
1886
+ }, [columnConfigurationProps, propertiesButton]);
1887
+ return /* @__PURE__ */ jsx(Container, {
1888
+ className,
1889
+ children: /* @__PURE__ */ jsx(ControlBar, {
1890
+ showViews: compact ? false : showViews,
1891
+ views: compact ? void 0 : views,
1892
+ hiddenViewIds: compact ? void 0 : hiddenViewIds,
1893
+ onSelectView: compact ? void 0 : onSelectView,
1894
+ currentView: compact ? void 0 : currentView,
1895
+ onAddView: compact ? void 0 : onAddView,
1896
+ onDeleteView: compact ? void 0 : onDeleteView,
1897
+ onDuplicateView: compact ? void 0 : onDuplicateView,
1898
+ onViewNameChange: compact ? void 0 : onViewNameChange,
1899
+ onReorderViews: compact ? void 0 : onReorderViews,
1900
+ onViewHiddenChange: compact ? void 0 : onViewHiddenChange,
1901
+ onSaveView: compact ? void 0 : onSaveView,
1902
+ ...!compact && onSetDefaultView ? {
1903
+ onSetDefaultView,
1904
+ onUnsetDefaultView
1905
+ } : {
1906
+ onSetDefaultView: void 0,
1907
+ onUnsetDefaultView: void 0
1908
+ },
1909
+ isViewDirty,
1910
+ canEditViews: compact ? false : canEditViews,
1911
+ showFilters: showFilters && (showFiltersAlways || !isFilterPanelLoading),
1912
+ setShowFilters: (resolvedFilterPanel != null || isFilterPanelLoading) && !showFiltersAlways ? setShowFilters : void 0,
1913
+ filtersId,
1914
+ searchProps,
1915
+ propertiesButton: enhancedPropertiesButton,
1916
+ tableActions,
1917
+ isLoading,
1918
+ isFilterPanelLoading,
1919
+ selectedRows,
1920
+ bulkActions,
1921
+ onClearSelection,
1922
+ title,
1923
+ "data-tour-target": dataTourTarget,
1924
+ presetViews: compact ? void 0 : presetViews,
1925
+ compact,
1926
+ onError,
1927
+ filterPanel: resolvedFilterPanel
1928
+ })
1929
+ });
1930
+ };
1931
+ const Container = styled(Stack)`
1932
+ margin-bottom: ${Spacing[2]};
1933
+ `;
1934
+ const StyledEnhancedPropertiesButton = styled.div`
1935
+ display: flex;
1936
+ gap: ${Spacing[1]};
1937
+ `;
1446
1938
  //#endregion
1447
1939
  //#region components/DataTable/TableControls/FiltersV2/date-rule-intent.ts
1448
1940
  function dateRuleIntent(change, writesEnabled) {
@@ -1528,6 +2020,55 @@ const OPERATORS_BY_TYPE = {
1528
2020
  signals: ["is"],
1529
2021
  date_range: ["is"]
1530
2022
  };
2023
+ /**
2024
+ * Numeric comparison operators. Together with `is` (is equal to) they give
2025
+ * `integer` and `float` fields greater-than / less-than / equal-to filtering.
2026
+ * Inclusive bounds are deliberately not offered: "at least 5" is
2027
+ * `gt 5` OR `is 5`, built with the Rules editor.
2028
+ *
2029
+ * They are opt-in rather than part of the default numeric vocabulary above:
2030
+ * a host whose backend serializes them lists them in the field's
2031
+ * `allowedOperators` (e.g. `['is', ...NUMERIC_COMPARISON_OPERATORS]`).
2032
+ * Adding them to the default vocabulary would surface operators in every
2033
+ * existing numeric field whose host can't serialize them.
2034
+ */
2035
+ const NUMERIC_COMPARISON_OPERATORS = ["gt", "lt"];
2036
+ const NUMERIC_COMPARISON_OPERATOR_SET = new Set(NUMERIC_COMPARISON_OPERATORS);
2037
+ const NUMERIC_FIELD_TYPES = new Set(["integer", "float"]);
2038
+ function isNumericComparisonOperator(operator) {
2039
+ return NUMERIC_COMPARISON_OPERATOR_SET.has(operator);
2040
+ }
2041
+ /**
2042
+ * Whether a comparison value is complete for a numeric field: a finite
2043
+ * number, and a safe integer when the field is an `integer`. Strings are
2044
+ * rejected — the numeric value controls always emit numbers, so a string
2045
+ * here is a corrupted or hand-crafted rule the backend can't compare.
2046
+ */
2047
+ function isCompleteNumericComparisonValue(value, fieldType) {
2048
+ if (typeof value !== "number" || !Number.isFinite(value)) return false;
2049
+ return fieldType === "integer" ? Number.isSafeInteger(value) : true;
2050
+ }
2051
+ /**
2052
+ * Carry `value` into a numeric comparison. Equality rules on numeric fields
2053
+ * tolerate strings (v1 URLs hydrate `'5'`), but a comparison is only complete
2054
+ * with a number, so a numeric string is converted — truncated on `integer`
2055
+ * fields, matching what `IntegerValueControl` emits — and anything else
2056
+ * becomes an empty draft rather than a committed rule validation rejects.
2057
+ */
2058
+ function numericComparisonValue(value, fieldType) {
2059
+ const parsed = typeof value === "number" ? value : typeof value === "string" && value.trim() !== "" ? Number(value) : NaN;
2060
+ if (!Number.isFinite(parsed)) return "";
2061
+ const normalized = fieldType === "integer" ? Math.trunc(parsed) : parsed;
2062
+ return isCompleteNumericComparisonValue(normalized, fieldType) ? normalized : "";
2063
+ }
2064
+ /**
2065
+ * Whether `(fieldType, operator)` is a built-in numeric comparison — the
2066
+ * case validators and labels specialize. Comparisons on non-numeric types
2067
+ * (only reachable through `condition`) are not.
2068
+ */
2069
+ function isNumericComparison(operator, fieldType) {
2070
+ return fieldType != null && NUMERIC_FIELD_TYPES.has(fieldType) && isNumericComparisonOperator(operator);
2071
+ }
1531
2072
  /** Operators that have no value control (the operator itself is the predicate). */
1532
2073
  const VALUELESS_OPERATORS = new Set(["is_empty", "is_not_empty"]);
1533
2074
  /**
@@ -1652,10 +2193,24 @@ const OPERATOR_LABEL_KEYS = {
1652
2193
  * Only present for `(fieldType, operator)` pairs that diverge from the
1653
2194
  * generic label; everything else falls through to `OPERATOR_LABEL_KEYS`.
1654
2195
  */
1655
- const OPERATOR_LABEL_KEYS_BY_TYPE = { multi_choices: {
1656
- is: "operatorIsAnyOf",
1657
- is_not: "operatorIsNoneOf"
1658
- } };
2196
+ /**
2197
+ * Numeric fields read as a sentence ("Members is equal to 5", "Members is greater
2198
+ * than 5") rather than the generic "is" / bare `>` labels. `is_not` keeps the
2199
+ * generic "is not".
2200
+ */
2201
+ const NUMERIC_LABEL_KEYS = {
2202
+ is: "operatorIsEqualTo",
2203
+ gt: "operatorIsGreaterThan",
2204
+ lt: "operatorIsLessThan"
2205
+ };
2206
+ const OPERATOR_LABEL_KEYS_BY_TYPE = {
2207
+ multi_choices: {
2208
+ is: "operatorIsAnyOf",
2209
+ is_not: "operatorIsNoneOf"
2210
+ },
2211
+ integer: NUMERIC_LABEL_KEYS,
2212
+ float: NUMERIC_LABEL_KEYS
2213
+ };
1659
2214
  /**
1660
2215
  * The label for `operator`, specialized for `fieldType` where the generic label is ambiguous.
1661
2216
  * Pass `strings` from `usePDSStrings()` to translate it; English when omitted.
@@ -1721,6 +2276,7 @@ function reconcileValueForOperator(field, nextOperator, previousOperator, value)
1721
2276
  if (isValuelessOperator(nextOperator, field)) return null;
1722
2277
  if (field.condition != null) return getConditionOperator(field, nextOperator)?.valueType === getConditionOperator(field, previousOperator)?.valueType ? value ?? emptyValueForRule(field, nextOperator) : emptyValueForRule(field, nextOperator);
1723
2278
  if (isRangeOperator(nextOperator) !== isRangeOperator(previousOperator)) return emptyValueForRule(field, nextOperator);
2279
+ if (isNumericComparison(nextOperator, field.type)) return numericComparisonValue(value, field.type);
1724
2280
  if (field.type === "date" && nextOperator === "is" && typeof value === "string" && TIME_COMPONENT$1.test(value)) return DateTime.fromISO(value).setZone(Settings.defaultZone).toISODate();
1725
2281
  if (field.type === "date" && (previousOperator === "before" || previousOperator === "after") && (nextOperator === "before" || nextOperator === "after") && previousOperator !== nextOperator && typeof value === "string" && TIME_COMPONENT$1.test(value)) {
1726
2282
  const dateTime = DateTime.fromISO(value, { setZone: true });
@@ -2931,10 +3487,11 @@ function numericDisplayValue(value) {
2931
3487
  /**
2932
3488
  * Float-typed value control for the Filter UI v2 popover.
2933
3489
  *
2934
- * Used for `float` fields with operators `is` / `is_not`. The popover
3490
+ * Used for `float` fields with operators `is` / `is_not`, and with the
3491
+ * opt-in comparisons `gt` / `lt` when the field's
3492
+ * `allowedOperators` lists them — all carry a single number. The popover
2935
3493
  * renders nothing when the operator is valueless (`is_empty` /
2936
- * `is_not_empty`). Range operators are not part of the current numeric
2937
- * field vocabulary.
3494
+ * `is_not_empty`). Range operators are not part of the numeric vocabulary.
2938
3495
  *
2939
3496
  * The control accepts decimal input and emits a `number` via `onChange`.
2940
3497
  * We keep local display state as a string so partial input like `"3."` is
@@ -3008,10 +3565,11 @@ const FloatValueControl = ({ field, operator, value, onChange, ariaLabel }) => {
3008
3565
  /**
3009
3566
  * Integer-typed value control for the Filter UI v2 popover.
3010
3567
  *
3011
- * Used for `integer` fields with operators `is` / `is_not`. The popover
3568
+ * Used for `integer` fields with operators `is` / `is_not`, and with the
3569
+ * opt-in comparisons `gt` / `lt` when the field's
3570
+ * `allowedOperators` lists them — all carry a single number. The popover
3012
3571
  * renders nothing when the operator is valueless (`is_empty` /
3013
- * `is_not_empty`). Range operators are not part of the current numeric
3014
- * field vocabulary.
3572
+ * `is_not_empty`). Range operators are not part of the numeric vocabulary.
3015
3573
  *
3016
3574
  * The control accepts any numeric input but always emits an integer via
3017
3575
  * `onChange`. We truncate (rather than round) so that typing `3` -> `3.` -> `3.7`
@@ -4050,6 +4608,7 @@ function isRuleAllowed(rule, registry, options = { allowDraftValues: false }) {
4050
4608
  if (isValuelessOperator(rule.operator)) return rule.value == null;
4051
4609
  if (options.allowDraftValues && isDraftRuleValue(rule, registry)) return true;
4052
4610
  if (isRangeOperator(rule.operator)) return isCompleteDateRange(rule.value);
4611
+ if (isNumericComparison(rule.operator, field.type)) return isCompleteNumericComparisonValue(rule.value, field.type);
4053
4612
  if (registry.get(rule.fieldId)?.type === "boolean") return typeof rule.value === "boolean";
4054
4613
  if (registry.get(rule.fieldId)?.type === "date") return typeof rule.value === "string" && rule.value.length > 0;
4055
4614
  if (registry.get(rule.fieldId)?.type === "multi_choices") {
@@ -4079,6 +4638,7 @@ function hasCompleteValue(rule, registry) {
4079
4638
  const { value } = rule;
4080
4639
  if (value == null) return false;
4081
4640
  if (isRangeOperator(rule.operator)) return isCompleteDateRange(value);
4641
+ if (field != null && isNumericComparison(rule.operator, field.type)) return isCompleteNumericComparisonValue(value, field.type);
4082
4642
  switch (registry.get(rule.fieldId)?.type) {
4083
4643
  case "boolean": return typeof value === "boolean";
4084
4644
  case "date": return typeof value === "string" && value.length > 0;
@@ -4930,6 +5490,6 @@ function decodeBase64(input) {
4930
5490
  return decodeURIComponent(escape(atob(input)));
4931
5491
  }
4932
5492
  //#endregion
4933
- export { TableControlsProvider as A, getOperatorsForType as C, reconcileValueForOperator as D, isValuelessOperator as E, ControlBar as F, DataTableCompactBar as I, TableViewConfiguration as M, TableViewConfigurationDropdown as N, dateRuleIntent as O, TableControls as P, getOperatorsForField as S, isRangeOperator as T, FILTER_SIZE_TOKENS as _, encodeFilterStateToUrlParam as a, emptyValueForRule as b, FilterBar_default as c, isFilterStateV2 as d, pruneToRegistry as f, resolveValueControl as g, PillShell as h, decodeFilterStateFromUrl as i, useTableControls as j, TableControlsContext as k, useFilterStateV2 as l, isEmptyState as m, applyFilterStateToSearchParams as n, FieldRegistry as o, EMPTY_FILTER_STATE as p, decodeFilterStateFromString as r, buildFieldRegistry as s, FILTER_STATE_URL_PARAM as t, hasCompleteValue as u, useFilterBarSize as v, isCompleteDateRange as w, getDefaultOperatorForType as x, resolveDateRangeRuleValue as y };
5493
+ export { dateRuleIntent as A, useTableControls as B, getOperatorsForField as C, isRangeOperator as D, isNumericComparisonOperator as E, getActiveFilters as F, DataTableCompactBar as H, isFilterActive as I, resolveFilterTypeDefinition as L, TableViewConfiguration as M, TableViewConfigurationDropdown as N, isValuelessOperator as O, FiltersContainer as P, TableControlsContext as R, getDefaultOperatorForType as S, isCompleteDateRange as T, ControlBar as V, FILTER_SIZE_TOKENS as _, encodeFilterStateToUrlParam as a, NUMERIC_COMPARISON_OPERATORS as b, FilterBar_default as c, isFilterStateV2 as d, pruneToRegistry as f, resolveValueControl as g, PillShell as h, decodeFilterStateFromUrl as i, TableControls as j, reconcileValueForOperator as k, useFilterStateV2 as l, isEmptyState as m, applyFilterStateToSearchParams as n, FieldRegistry as o, EMPTY_FILTER_STATE as p, decodeFilterStateFromString as r, buildFieldRegistry as s, FILTER_STATE_URL_PARAM as t, hasCompleteValue as u, useFilterBarSize as v, getOperatorsForType as w, emptyValueForRule as x, resolveDateRangeRuleValue as y, TableControlsProvider as z };
4934
5494
 
4935
- //# sourceMappingURL=TableControls-BtKBTGYR.mjs.map
5495
+ //# sourceMappingURL=TableControls-DxSFqRwJ.mjs.map