@persona/design-system 0.2.1 → 0.3.1

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 (448) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +3 -3
  3. package/dist/{Action-DnR0YTxO.d.mts → Action-DL3kHI9Z.d.mts} +3 -3
  4. package/dist/Action.d.mts +1 -1
  5. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  6. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  7. package/dist/ArrayValueControl.d.mts +1 -1
  8. package/dist/Attribute.d.mts +4 -4
  9. package/dist/{Badge-DRn_r6is.mjs → Badge-BL0J5oMa.mjs} +3 -3
  10. package/dist/{Badge-DRn_r6is.mjs.map → Badge-BL0J5oMa.mjs.map} +1 -1
  11. package/dist/BooleanValueControl.d.mts +1 -1
  12. package/dist/{Breadcrumb-DEwZFJHF.d.mts → Breadcrumb-Czgdi0xf.d.mts} +1 -1
  13. package/dist/Breadcrumb.d.mts +1 -1
  14. package/dist/{Breadcrumbs-Byf2ye6H.mjs → Breadcrumbs-ed4wRDS7.mjs} +10 -10
  15. package/dist/{Breadcrumbs-Byf2ye6H.mjs.map → Breadcrumbs-ed4wRDS7.mjs.map} +1 -1
  16. package/dist/{Breadcrumbs-0e_3v9FF.d.mts → Breadcrumbs-zei-cpdU.d.mts} +2 -2
  17. package/dist/Breadcrumbs.d.mts +1 -1
  18. package/dist/{Button-DkjwN_Op.d.mts → Button-CKzNTpPL.d.mts} +3 -3
  19. package/dist/Button.d.mts +1 -1
  20. package/dist/Calendar-CcxN7y3e.d.mts +12 -0
  21. package/dist/Calendar.d.mts +2 -12
  22. package/dist/CalendarBase.d.mts +1 -1
  23. package/dist/{Card-CLTkZLKr.mjs → Card-CKrJtn1f.mjs} +5 -5
  24. package/dist/{Card-CLTkZLKr.mjs.map → Card-CKrJtn1f.mjs.map} +1 -1
  25. package/dist/{Card-DxFajLnx.d.mts → Card-pr4FQWjn.d.mts} +4 -4
  26. package/dist/Card.d.mts +1 -1
  27. package/dist/Card2.d.mts +4 -4
  28. package/dist/{CardV2-m9yOInMU.mjs → CardV2-D3m5EKlp.mjs} +19 -13
  29. package/dist/CardV2-D3m5EKlp.mjs.map +1 -0
  30. package/dist/{Checkbox-CU27-Aa8.mjs → Checkbox-Ccuicmlo.mjs} +8 -8
  31. package/dist/Checkbox-Ccuicmlo.mjs.map +1 -0
  32. package/dist/ChoicesValueControl.d.mts +1 -1
  33. package/dist/{Combobox-DhTUY8JT.mjs → Combobox-BGRyr_-L.mjs} +12 -12
  34. package/dist/{Combobox-DhTUY8JT.mjs.map → Combobox-BGRyr_-L.mjs.map} +1 -1
  35. package/dist/{Combobox-BgKEHP9p.d.mts → Combobox-Bf_Xe1BG.d.mts} +3 -3
  36. package/dist/Combobox.d.mts +2 -2
  37. package/dist/{ComboboxBase-Dmzn8a53.d.mts → ComboboxBase-CWzN8GML.d.mts} +7 -7
  38. package/dist/ComboboxBase.d.mts +1 -1
  39. package/dist/{ComboboxMultiSelect-BLKUKNEW.d.mts → ComboboxMultiSelect-iSuvyOx2.d.mts} +2 -2
  40. package/dist/ComboboxMultiSelect.d.mts +1 -1
  41. package/dist/{ComboboxSingleSelect-Kpl-iOok.d.mts → ComboboxSingleSelect-DVRFKPi1.d.mts} +4 -4
  42. package/dist/ComboboxSingleSelect.d.mts +1 -1
  43. package/dist/{CompactBar-E9hPDRvI.d.mts → CompactBar-C_61pgp7.d.mts} +3 -3
  44. package/dist/CompactBar.d.mts +1 -1
  45. package/dist/{ConfigFormGroup-GgzSDzgL.mjs → ConfigFormGroup-DGCTW3by.mjs} +3 -3
  46. package/dist/{ConfigFormGroup-GgzSDzgL.mjs.map → ConfigFormGroup-DGCTW3by.mjs.map} +1 -1
  47. package/dist/{ControlBar-DYrjBDzu.d.mts → ControlBar-0XwbM4yC.d.mts} +2 -2
  48. package/dist/ControlBar.d.mts +1 -1
  49. package/dist/DataTable.d.mts +3 -3
  50. package/dist/DateField-CKeSIhGy.d.mts +23 -0
  51. package/dist/DateField.d.mts +2 -23
  52. package/dist/DatePicker-B1iWrqR5.d.mts +19 -0
  53. package/dist/{DatePicker-DpGvo7Bd.mjs → DatePicker-BNnZ6L1y.mjs} +37 -19
  54. package/dist/DatePicker-BNnZ6L1y.mjs.map +1 -0
  55. package/dist/DatePicker.d.mts +2 -19
  56. package/dist/DateRangePicker-BmF9eH9R.d.mts +53 -0
  57. package/dist/DateRangePicker.d.mts +2 -53
  58. package/dist/DateRangeValueControl.d.mts +19 -0
  59. package/dist/DateValueControl.d.mts +1 -1
  60. package/dist/{DropdownButton-DGgfGW_o.mjs → DropdownButton-BlVeFbJ0.mjs} +3 -3
  61. package/dist/{DropdownButton-DGgfGW_o.mjs.map → DropdownButton-BlVeFbJ0.mjs.map} +1 -1
  62. package/dist/DropdownButton.d.mts +2 -2
  63. package/dist/{DropdownMenu-DZIFSJXD.mjs → DropdownMenu-82xH1AZr.mjs} +3 -3
  64. package/dist/{DropdownMenu-DZIFSJXD.mjs.map → DropdownMenu-82xH1AZr.mjs.map} +1 -1
  65. package/dist/{DropdownMenu-B2t3Bwky.d.mts → DropdownMenu-DuTnq9j7.d.mts} +3 -3
  66. package/dist/DropdownMenu.d.mts +1 -1
  67. package/dist/{FieldRegistry-COyIA4VU.d.mts → FieldRegistry-D1vghSC_.d.mts} +2 -2
  68. package/dist/FieldRegistry.d.mts +1 -1
  69. package/dist/{FilterBar-CS2YjiTr.d.mts → FilterBar-Ck085Dic.d.mts} +5 -8
  70. package/dist/FilterBar.d.mts +1 -1
  71. package/dist/FilterPickerMenu.d.mts +2 -2
  72. package/dist/FilterPill.d.mts +1 -1
  73. package/dist/FilterPopover.d.mts +2 -12
  74. package/dist/FloatValueControl.d.mts +1 -1
  75. package/dist/FloatingPanel.d.mts +80 -0
  76. package/dist/FloatingPanelContext.d.mts +33 -0
  77. package/dist/FloatingPanelRenderer.d.mts +7 -0
  78. package/dist/{FormControl-CZFmub1N.d.mts → FormControl-CfpwZGlD.d.mts} +2 -2
  79. package/dist/{FormControl-BIXJ-FPI.mjs → FormControl-D1HIqDKm.mjs} +6 -6
  80. package/dist/FormControl-D1HIqDKm.mjs.map +1 -0
  81. package/dist/FormControl.d.mts +1 -1
  82. package/dist/FormControlLabel.d.mts +2 -2
  83. package/dist/{FormField-8rlT8pm0.d.mts → FormField-0p4y0sS5.d.mts} +2 -2
  84. package/dist/{FormField-DcGQvgNW.mjs → FormField-CVnbsNvU.mjs} +46 -44
  85. package/dist/FormField-CVnbsNvU.mjs.map +1 -0
  86. package/dist/FormField.d.mts +1 -1
  87. package/dist/{Header-OLZuv8fF.d.mts → Header-gDUTQgWj.d.mts} +2 -2
  88. package/dist/Header.d.mts +1 -1
  89. package/dist/{HelperTooltip-CJDG7Ugp.d.mts → HelperTooltip-CqhiRb5g.d.mts} +2 -2
  90. package/dist/HelperTooltip.d.mts +1 -1
  91. package/dist/{HoverCopyableField-BHdCaR-R.mjs → HoverCopyableField-HWshrU_1.mjs} +32 -21
  92. package/dist/HoverCopyableField-HWshrU_1.mjs.map +1 -0
  93. package/dist/HoverCopyableField.d.mts +14 -3
  94. package/dist/{IconButton-DC4rh6ow.mjs → IconButton-BgL3QUVO.mjs} +9 -9
  95. package/dist/IconButton-BgL3QUVO.mjs.map +1 -0
  96. package/dist/{IconButton-Dc17jZPG.d.mts → IconButton-CLsHdYm7.d.mts} +2 -2
  97. package/dist/IconButton.d.mts +1 -1
  98. package/dist/ImageTile.d.mts +1 -1
  99. package/dist/InlineCombobox.d.mts +1 -1
  100. package/dist/InlineInput.d.mts +1 -1
  101. package/dist/{Input-DsS4J78T.d.mts → Input-BHHWpSKN.d.mts} +5 -5
  102. package/dist/{Input-PWfwMSJ7.mjs → Input-DoB8YswA.mjs} +5 -5
  103. package/dist/{Input-PWfwMSJ7.mjs.map → Input-DoB8YswA.mjs.map} +1 -1
  104. package/dist/Input.d.mts +1 -1
  105. package/dist/{InputProps-Buxtnz77.d.mts → InputProps-sHxlDiss.d.mts} +2 -2
  106. package/dist/InputProps.d.mts +1 -1
  107. package/dist/IntegerValueControl.d.mts +1 -1
  108. package/dist/LayoutLoadingSpinner.d.mts +11 -0
  109. package/dist/Link.d.mts +2 -2
  110. package/dist/{ListBox-BwD-q7wF.mjs → ListBox-B9uuMt2R.mjs} +23 -16
  111. package/dist/ListBox-B9uuMt2R.mjs.map +1 -0
  112. package/dist/{ListBox-Nl9aOBeh.d.mts → ListBox-BrY1bQ5-.d.mts} +3 -3
  113. package/dist/ListBox.d.mts +1 -1
  114. package/dist/ListBoxField.d.mts +5 -2
  115. package/dist/{LoadingShimmer-BPYPtFE1.mjs → LoadingShimmer-dsBWRdTU.mjs} +2 -2
  116. package/dist/{LoadingShimmer-BPYPtFE1.mjs.map → LoadingShimmer-dsBWRdTU.mjs.map} +1 -1
  117. package/dist/LoadingShimmer.d.mts +2 -2
  118. package/dist/{LogicRow-BAREMenx.d.mts → LogicRow-9a_klV2v.d.mts} +3 -3
  119. package/dist/LogicRow.d.mts +1 -1
  120. package/dist/MaskedInput.d.mts +2 -2
  121. package/dist/MatchHighlight.d.mts +1 -1
  122. package/dist/{Menu-DpM8o234.mjs → Menu-CHbUf9PQ.mjs} +5 -5
  123. package/dist/{Menu-DpM8o234.mjs.map → Menu-CHbUf9PQ.mjs.map} +1 -1
  124. package/dist/{Menu-DM9OoZ71.d.mts → Menu-D4Y_J-QI.d.mts} +4 -4
  125. package/dist/Menu.d.mts +1 -1
  126. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs → MiddleTruncatedText-DnF7F_1D.mjs} +2 -2
  127. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs.map → MiddleTruncatedText-DnF7F_1D.mjs.map} +1 -1
  128. package/dist/Modal.d.mts +4 -5
  129. package/dist/{PageHeader-Dq-J3san.mjs → PageHeader-XxGsFLHb.mjs} +4 -4
  130. package/dist/{PageHeader-Dq-J3san.mjs.map → PageHeader-XxGsFLHb.mjs.map} +1 -1
  131. package/dist/PageHeader.d.mts +2 -2
  132. package/dist/PageLayout.d.mts +1 -1
  133. package/dist/{PageSelector-Ca4TcyxG.d.mts → PageSelector-BDo3ge1E.d.mts} +2 -2
  134. package/dist/PageSelector.d.mts +1 -1
  135. package/dist/{Pagination-GALyid4q.mjs → Pagination-DvVKQLdC.mjs} +8 -8
  136. package/dist/{Pagination-GALyid4q.mjs.map → Pagination-DvVKQLdC.mjs.map} +1 -1
  137. package/dist/{Pii-BalLvfze.mjs → Pii-BD48BtZ0.mjs} +2 -2
  138. package/dist/{Pii-BalLvfze.mjs.map → Pii-BD48BtZ0.mjs.map} +1 -1
  139. package/dist/PillShell.d.mts +1 -1
  140. package/dist/{Popover-BZ5Bs80y.mjs → Popover-DNH8Jx1-.mjs} +4 -4
  141. package/dist/{Popover-BZ5Bs80y.mjs.map → Popover-DNH8Jx1-.mjs.map} +1 -1
  142. package/dist/{PseudoClassProps-CcSlKNev.d.mts → PseudoClassProps-DgT5G_z5.d.mts} +1 -1
  143. package/dist/PseudoClassProps.d.mts +1 -1
  144. package/dist/{Radio-CtPz3EzX.mjs → Radio-DSMPX5_2.mjs} +5 -5
  145. package/dist/Radio-DSMPX5_2.mjs.map +1 -0
  146. package/dist/{RadioGroup-sjBzFE_-.mjs → RadioGroup-D5IITQLz.mjs} +3 -3
  147. package/dist/{RadioGroup-sjBzFE_-.mjs.map → RadioGroup-D5IITQLz.mjs.map} +1 -1
  148. package/dist/{RadioGroup-Xn46ovrV.d.mts → RadioGroup-Jl1yAvGu.d.mts} +1 -1
  149. package/dist/RadioGroup.d.mts +1 -1
  150. package/dist/RuleEditorFields.d.mts +2 -2
  151. package/dist/RulesPill.d.mts +1 -1
  152. package/dist/{SearchInput-Try11aJD.d.mts → SearchInput-CaKHRC_s.d.mts} +2 -2
  153. package/dist/SearchInput.d.mts +1 -1
  154. package/dist/Section.d.mts +1 -1
  155. package/dist/SectionHeading.d.mts +77 -2
  156. package/dist/{SegmentedControl-BugnH-h2.mjs → SegmentedControl-JUgRw_M-.mjs} +3 -3
  157. package/dist/{SegmentedControl-BugnH-h2.mjs.map → SegmentedControl-JUgRw_M-.mjs.map} +1 -1
  158. package/dist/{SegmentedControl-DckAdhcD.d.mts → SegmentedControl-e6xDtoHC.d.mts} +1 -1
  159. package/dist/SegmentedControl.d.mts +1 -1
  160. package/dist/{Select-BmJ1OjXA.d.mts → Select-CPYztD4m.d.mts} +3 -3
  161. package/dist/{Select-DL-AjL0Q.mjs → Select-DX3toj6M.mjs} +10 -10
  162. package/dist/{Select-DL-AjL0Q.mjs.map → Select-DX3toj6M.mjs.map} +1 -1
  163. package/dist/Select.d.mts +1 -1
  164. package/dist/{Spacer-Ln3KChb5.mjs → Spacer-BsK8tTwA.mjs} +2 -2
  165. package/dist/{Spacer-Ln3KChb5.mjs.map → Spacer-BsK8tTwA.mjs.map} +1 -1
  166. package/dist/{Spinner-BgBCCHGo.mjs → Spinner-D3wXIoXN.mjs} +3 -3
  167. package/dist/{Spinner-BgBCCHGo.mjs.map → Spinner-D3wXIoXN.mjs.map} +1 -1
  168. package/dist/{Stack-ckRN7LrP.mjs → Stack-Bre2oiov.mjs} +2 -2
  169. package/dist/{Stack-ckRN7LrP.mjs.map → Stack-Bre2oiov.mjs.map} +1 -1
  170. package/dist/{Stack-CbcJykx9.d.mts → Stack-DHaK1-dw.d.mts} +2 -2
  171. package/dist/Stack.d.mts +1 -1
  172. package/dist/{Sticker-B0TbkV4o.mjs → Sticker-CQ6sOKUj.mjs} +6 -6
  173. package/dist/{Sticker-B0TbkV4o.mjs.map → Sticker-CQ6sOKUj.mjs.map} +1 -1
  174. package/dist/{Sticker-BIVuastf.d.mts → Sticker-DnSemOcW.d.mts} +5 -5
  175. package/dist/Sticker.d.mts +1 -1
  176. package/dist/StringValueControl.d.mts +1 -1
  177. package/dist/Tab.d.mts +2 -2
  178. package/dist/{TabBar-DLf4Hwa4.mjs → TabBar-sYllYizt.mjs} +6 -6
  179. package/dist/{TabBar-DLf4Hwa4.mjs.map → TabBar-sYllYizt.mjs.map} +1 -1
  180. package/dist/TabBarIconButton.d.mts +2 -2
  181. package/dist/{Table-C-mx8Uj0.mjs → Table-C2pkP5Xg.mjs} +7 -7
  182. package/dist/{Table-C-mx8Uj0.mjs.map → Table-C2pkP5Xg.mjs.map} +1 -1
  183. package/dist/{Table-8jXlKYLy.d.mts → Table-CFbPINKr.d.mts} +1 -1
  184. package/dist/Table.d.mts +1 -1
  185. package/dist/{TableBody-ByEcFueE.d.mts → TableBody-BQsGc4Lw.d.mts} +1 -1
  186. package/dist/TableBody.d.mts +1 -1
  187. package/dist/{TableBox-DGjKVQFO.mjs → TableBox-CaTHcR4F.mjs} +15 -15
  188. package/dist/{TableBox-DGjKVQFO.mjs.map → TableBox-CaTHcR4F.mjs.map} +1 -1
  189. package/dist/TableBox.d.mts +2 -2
  190. package/dist/{TableBoxCell-BmoPs1u1.d.mts → TableBoxCell-52g97gEg.d.mts} +7 -7
  191. package/dist/TableBoxCell.d.mts +1 -1
  192. package/dist/TableBoxField.d.mts +3 -3
  193. package/dist/{TableBoxRow-BAYvEDjT.d.mts → TableBoxRow-DnoumHIE.d.mts} +3 -3
  194. package/dist/TableBoxRow.d.mts +1 -1
  195. package/dist/{TableBoxRowActions-DRs4MdK0.d.mts → TableBoxRowActions-CDcREhP4.d.mts} +2 -2
  196. package/dist/TableBoxRowActions.d.mts +1 -1
  197. package/dist/TableCell.d.mts +1 -1
  198. package/dist/{TableControls-BK8DCsqi.mjs → TableControls-3bXyd8gS.mjs} +247 -103
  199. package/dist/TableControls-3bXyd8gS.mjs.map +1 -0
  200. package/dist/{TableControls-DscP6fyt.d.mts → TableControls-CrGGlkEG.d.mts} +4 -8
  201. package/dist/TableControls.d.mts +1 -1
  202. package/dist/{TableControlsContext-BeJ7GHPN.d.mts → TableControlsContext-BKZt2Jid.d.mts} +2 -2
  203. package/dist/TableControlsContext.d.mts +1 -1
  204. package/dist/{TableHead-g3afLl5B.d.mts → TableHead-CqVIJfjh.d.mts} +1 -1
  205. package/dist/TableHead.d.mts +1 -1
  206. package/dist/{TableHeaderCell-CWTMf2Fe.d.mts → TableHeaderCell-DK4R8vdK.d.mts} +1 -1
  207. package/dist/TableHeaderCell.d.mts +1 -1
  208. package/dist/{TableLayout-hPlVO3dD.d.mts → TableLayout-BcIazRB-.d.mts} +1 -1
  209. package/dist/TableLayout.d.mts +1 -1
  210. package/dist/{TableRow-lvjbVccA.d.mts → TableRow-DdJcjG2b.d.mts} +2 -2
  211. package/dist/TableRow.d.mts +1 -1
  212. package/dist/TableTH.d.mts +1 -1
  213. package/dist/{TableViewConfigurationDropdown-Ccxtk5dA.d.mts → TableViewConfigurationDropdown-CHBOjw7O.d.mts} +5 -3
  214. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  215. package/dist/{TechnicalSticker-BrvR0zhC.mjs → TechnicalSticker-D3eeGMDR.mjs} +6 -6
  216. package/dist/{TechnicalSticker-BrvR0zhC.mjs.map → TechnicalSticker-D3eeGMDR.mjs.map} +1 -1
  217. package/dist/{Text-hEoPeOc9.mjs → Text-B0orb-cZ.mjs} +2 -2
  218. package/dist/{Text-hEoPeOc9.mjs.map → Text-B0orb-cZ.mjs.map} +1 -1
  219. package/dist/{Text-CfIFUyHt.d.mts → Text-BIgrwIdS.d.mts} +4 -4
  220. package/dist/Text.d.mts +1 -1
  221. package/dist/{TextArea-DiKEhpfD.d.mts → TextArea-CiLttt0s.d.mts} +2 -2
  222. package/dist/{TextArea-BFsXUkuj.mjs → TextArea-DWXuV2aZ.mjs} +3 -3
  223. package/dist/{TextArea-BFsXUkuj.mjs.map → TextArea-DWXuV2aZ.mjs.map} +1 -1
  224. package/dist/TextArea.d.mts +1 -1
  225. package/dist/{TextUnderlineTooltip-Bs6Jn5yr.d.mts → TextUnderlineTooltip-_7mIrZ2-.d.mts} +3 -3
  226. package/dist/TextUnderlineTooltip.d.mts +1 -1
  227. package/dist/Tile.d.mts +1 -1
  228. package/dist/Toast.d.mts +1 -1
  229. package/dist/{Toggle-oukvAn6V.d.mts → Toggle-Cav7bMxg.d.mts} +1 -1
  230. package/dist/{Toggle-CC2FTAKS.mjs → Toggle-e8DCYa6i.mjs} +6 -6
  231. package/dist/{Toggle-CC2FTAKS.mjs.map → Toggle-e8DCYa6i.mjs.map} +1 -1
  232. package/dist/Toggle.d.mts +1 -1
  233. package/dist/{Tooltip-0iXDCV2O.d.mts → Tooltip-DX-N-szt.d.mts} +3 -3
  234. package/dist/{Tooltip-CDvOu1UN.mjs → Tooltip-iJcfJqxn.mjs} +4 -4
  235. package/dist/{Tooltip-CDvOu1UN.mjs.map → Tooltip-iJcfJqxn.mjs.map} +1 -1
  236. package/dist/Tooltip.d.mts +1 -1
  237. package/dist/{TruncatedText-CdeU19Ev.d.mts → TruncatedText-D2R7uy_y.d.mts} +2 -2
  238. package/dist/components/Attribute/index.mjs +8 -9
  239. package/dist/components/Attribute/index.mjs.map +1 -1
  240. package/dist/components/Badge/index.mjs +1 -1
  241. package/dist/components/Banner/index.mjs +3 -3
  242. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  243. package/dist/components/Breadcrumbs/index.mjs +1 -1
  244. package/dist/components/Button/index.d.mts +2 -2
  245. package/dist/components/Button/index.mjs +1 -1
  246. package/dist/components/ButtonGroup/index.mjs +3 -3
  247. package/dist/components/Card/index.d.mts +2 -2
  248. package/dist/components/Card/index.mjs +1 -1
  249. package/dist/components/CardV2/index.d.mts +3 -2
  250. package/dist/components/CardV2/index.mjs +2 -2
  251. package/dist/components/Checkbox/index.mjs +1 -1
  252. package/dist/components/Combobox/index.d.mts +2 -2
  253. package/dist/components/Combobox/index.mjs +1 -1
  254. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  255. package/dist/components/DataTable/TableControls/index.d.mts +16 -16
  256. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  257. package/dist/components/DataTable/index.mjs +22 -24
  258. package/dist/components/DataTable/index.mjs.map +1 -1
  259. package/dist/components/DataTable/types.d.mts +2 -2
  260. package/dist/components/DatePicker/index.d.mts +4 -4
  261. package/dist/components/DatePicker/index.mjs +1 -1
  262. package/dist/components/DropdownButton/index.mjs +1 -1
  263. package/dist/components/DropdownMenu/index.d.mts +1 -1
  264. package/dist/components/DropdownMenu/index.mjs +1 -1
  265. package/dist/components/FloatingPanel/index.d.mts +5 -0
  266. package/dist/components/FloatingPanel/index.mjs +635 -0
  267. package/dist/components/FloatingPanel/index.mjs.map +1 -0
  268. package/dist/components/FormControl/index.d.mts +2 -2
  269. package/dist/components/FormControl/index.mjs +2 -2
  270. package/dist/components/FormField/index.d.mts +1 -1
  271. package/dist/components/FormField/index.mjs +1 -1
  272. package/dist/components/HoverCopyableField/index.d.mts +2 -2
  273. package/dist/components/HoverCopyableField/index.mjs +2 -2
  274. package/dist/components/ImageTile/index.mjs +9 -9
  275. package/dist/components/Input/index.d.mts +1 -1
  276. package/dist/components/Input/index.mjs +1 -1
  277. package/dist/components/Link/index.mjs +3 -3
  278. package/dist/components/Link/index.mjs.map +1 -1
  279. package/dist/components/ListBox/index.d.mts +3 -3
  280. package/dist/components/ListBox/index.mjs +1 -1
  281. package/dist/components/LoadingShimmer/index.mjs +1 -1
  282. package/dist/components/MaskedInput/index.mjs +1 -1
  283. package/dist/components/MatchHighlight/index.mjs +1 -1
  284. package/dist/components/Menu/index.d.mts +1 -1
  285. package/dist/components/Menu/index.mjs +1 -1
  286. package/dist/components/Modal/index.mjs +46 -17
  287. package/dist/components/Modal/index.mjs.map +1 -1
  288. package/dist/components/PageHeader/index.mjs +1 -1
  289. package/dist/components/Pagination/index.d.mts +1 -1
  290. package/dist/components/Pagination/index.mjs +1 -1
  291. package/dist/components/Pii/index.mjs +1 -1
  292. package/dist/components/Popover/index.mjs +1 -1
  293. package/dist/components/ProgressBar/index.mjs +4 -4
  294. package/dist/components/ProgressBar/index.mjs.map +1 -1
  295. package/dist/components/ProgressIndicator/index.mjs +2 -2
  296. package/dist/components/Radio/index.mjs +1 -1
  297. package/dist/components/RadioGroup/index.d.mts +1 -1
  298. package/dist/components/RadioGroup/index.mjs +1 -1
  299. package/dist/components/SegmentedControl/index.d.mts +1 -1
  300. package/dist/components/SegmentedControl/index.mjs +1 -1
  301. package/dist/components/Select/index.d.mts +1 -1
  302. package/dist/components/Select/index.mjs +1 -1
  303. package/dist/components/Slider/index.mjs +5 -5
  304. package/dist/components/Slider/index.mjs.map +1 -1
  305. package/dist/components/Spacer/index.mjs +1 -1
  306. package/dist/components/Spinner/index.mjs +1 -1
  307. package/dist/components/Stack/index.d.mts +1 -1
  308. package/dist/components/Stack/index.mjs +1 -1
  309. package/dist/components/StatusIndicator/index.mjs +2 -2
  310. package/dist/components/Sticker/index.d.mts +1 -1
  311. package/dist/components/Sticker/index.mjs +1 -1
  312. package/dist/components/SwatchPicker/index.mjs +1 -1
  313. package/dist/components/TabBar/index.mjs +1 -1
  314. package/dist/components/Table/index.d.mts +7 -7
  315. package/dist/components/Table/index.mjs +1 -1
  316. package/dist/components/TableBox/index.d.mts +2 -2
  317. package/dist/components/TableBox/index.mjs +1 -1
  318. package/dist/components/TechnicalSticker/index.mjs +1 -1
  319. package/dist/components/Text/index.d.mts +1 -1
  320. package/dist/components/Text/index.mjs +1 -1
  321. package/dist/components/TextArea/index.d.mts +1 -1
  322. package/dist/components/TextArea/index.mjs +1 -1
  323. package/dist/components/Tile/index.mjs +5 -5
  324. package/dist/components/Toast/index.mjs +5 -5
  325. package/dist/components/Toggle/index.d.mts +1 -1
  326. package/dist/components/Toggle/index.mjs +1 -1
  327. package/dist/components/Tooltip/index.d.mts +3 -3
  328. package/dist/components/Tooltip/index.mjs +1 -1
  329. package/dist/compound-expression.d.mts +1 -1
  330. package/dist/display.d.mts +1 -1
  331. package/dist/fieldPickerOptions.d.mts +2 -2
  332. package/dist/{filter-size-context-C1TvrE_O.d.mts → filter-size-context-C7injfBh.d.mts} +2 -2
  333. package/dist/filter-size-context.d.mts +1 -1
  334. package/dist/{index-BC4edEsD.d.mts → index-BPfK-u7y.d.mts} +2 -2
  335. package/dist/{index-CdaoOvFH.d.mts → index-BxBsQi2S.d.mts} +3 -3
  336. package/dist/{index-DJn4AeE4.d.mts → index-d_fTFuMM.d.mts} +4 -4
  337. package/dist/index.d.mts +1 -1
  338. package/dist/index2.d.mts +1 -1
  339. package/dist/index3.d.mts +3 -3
  340. package/dist/index4.d.mts +11 -11
  341. package/dist/{input-D3Qd6dI8.d.mts → input-D9FuQmlI.d.mts} +2 -2
  342. package/dist/inputFields.d.mts +10 -24
  343. package/dist/{intersperse-yd3oMrQl.mjs → intersperse-CLkblj9A.mjs} +1 -1
  344. package/dist/{intersperse-yd3oMrQl.mjs.map → intersperse-CLkblj9A.mjs.map} +1 -1
  345. package/dist/lib/ConfigContext.d.mts +4 -1
  346. package/dist/lib/ConfigContext.mjs.map +1 -1
  347. package/dist/lib/GlobalStyles.mjs +1 -1
  348. package/dist/lib/HeadlessAriaButton.mjs +1 -1
  349. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  350. package/dist/lib/PDSProvider.d.mts +1 -1
  351. package/dist/lib/PDSProvider.mjs +1 -1
  352. package/dist/lib/TruncatedText.d.mts +1 -1
  353. package/dist/lib/TruncatedText.mjs +1 -1
  354. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  355. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  356. package/dist/lib/embeddedSurfaceProtocol.d.mts +13 -1
  357. package/dist/lib/embeddedSurfaceProtocol.mjs +32 -5
  358. package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
  359. package/dist/lib/message.d.mts +1 -1
  360. package/dist/lib/pseudoClass.d.mts +1 -1
  361. package/dist/lib/useEmbeddedSurface.d.mts +31 -3
  362. package/dist/lib/useEmbeddedSurface.mjs +118 -13
  363. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  364. package/dist/{message-CsK3sIq0.d.mts → message-CqKB5mko.d.mts} +1 -1
  365. package/dist/mixins/focus.d.mts +1 -1
  366. package/dist/mixins/focus.mjs +1 -1
  367. package/dist/mixins/hoverable.d.mts +2 -2
  368. package/dist/mixins/hoverable.mjs +2 -2
  369. package/dist/mixins/input.d.mts +1 -1
  370. package/dist/mixins/input.mjs +2 -2
  371. package/dist/mixins/menuItem.d.mts +2 -2
  372. package/dist/mixins/menuItem.mjs +1 -1
  373. package/dist/mixins/print/index.mjs +1 -1
  374. package/dist/mixins/text.d.mts +1 -1
  375. package/dist/mixins/text.mjs +1 -1
  376. package/dist/{operators-C_xPzItk.d.mts → operators-CgcsYzfy.d.mts} +24 -3
  377. package/dist/operators.d.mts +2 -2
  378. package/dist/patterns/LayoutLoadingShimmer/index.mjs +6 -6
  379. package/dist/patterns/LayoutLoadingSpinner/index.d.mts +2 -0
  380. package/dist/patterns/LayoutLoadingSpinner/index.mjs +56 -0
  381. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -0
  382. package/dist/patterns/PageLayout/index.mjs +1 -1
  383. package/dist/styledComponentsInterop-8zScIQyC.mjs +33 -0
  384. package/dist/styledComponentsInterop-8zScIQyC.mjs.map +1 -0
  385. package/dist/{text-BaQdW8qa.d.mts → text-xwtyWIbE.d.mts} +1 -1
  386. package/dist/{theme-D9Y6NOzb.d.mts → theme-Ftogn9Wo.d.mts} +1 -1
  387. package/dist/theme.d.mts +1 -1
  388. package/dist/{types-CjHuZoVJ.d.mts → types-0_9G0kWg.d.mts} +3 -1
  389. package/dist/{types-BKEwt0uq.d.mts → types-BrNreYUU.d.mts} +2 -2
  390. package/dist/{types-mb3woqzE.d.mts → types-D55MZSyx.d.mts} +6 -3
  391. package/dist/types.d.mts +1 -1
  392. package/dist/types2.d.mts +1 -1
  393. package/dist/types3.d.mts +1 -1
  394. package/dist/useComboboxFooterAction.d.mts +1 -1
  395. package/dist/{useFilterStateV2-CGzRyv0i.d.mts → useFilterStateV2-D8Q8QKhS.d.mts} +3 -3
  396. package/dist/useFilterStateV2.d.mts +1 -1
  397. package/dist/{useFormField-DhwEi45-.d.mts → useFormField-BBbq1izo.d.mts} +1 -1
  398. package/dist/{useFormField-eftOPiXj.mjs → useFormField-Bz2iMPBO.mjs} +2 -2
  399. package/dist/{useFormField-eftOPiXj.mjs.map → useFormField-Bz2iMPBO.mjs.map} +1 -1
  400. package/dist/useFormField.d.mts +1 -1
  401. package/dist/{useFormGroup-BMukAMAd.mjs → useFormGroup-CaTiD_Yt.mjs} +1 -1
  402. package/dist/{useFormGroup-BMukAMAd.mjs.map → useFormGroup-CaTiD_Yt.mjs.map} +1 -1
  403. package/dist/{useTableBoxDragAndDrop-CsnN52lx.d.mts → useTableBoxDragAndDrop-Bye8gJTl.d.mts} +1 -1
  404. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  405. package/dist/{useToggle-3k3EkV8V.mjs → useToggle-Bo3yd14Y.mjs} +1 -1
  406. package/dist/{useToggle-3k3EkV8V.mjs.map → useToggle-Bo3yd14Y.mjs.map} +1 -1
  407. package/dist/useTruncation.d.mts +1 -1
  408. package/dist/{utilities-DnSIlR1i.d.mts → utilities-Bmwk_DRn.d.mts} +1 -1
  409. package/dist/utilities.d.mts +1 -1
  410. package/dist/utils/storybook.mjs +1 -1
  411. package/dist/utils.d.mts +1 -1
  412. package/dist/utils2.d.mts +12 -1
  413. package/dist/utils3.d.mts +7 -0
  414. package/dist/{validation-BdP2vajF.d.mts → validation-CAtTuHO9.d.mts} +3 -3
  415. package/dist/validation.d.mts +1 -1
  416. package/dist/{value-control-resolver-CiGEHQAc.d.mts → value-control-resolver-DadI8r9a.d.mts} +2 -2
  417. package/dist/value-control-resolver.d.mts +1 -1
  418. package/dist/variables/keyframes.mjs +1 -1
  419. package/llms.txt +5 -5
  420. package/package.json +8 -3
  421. package/skills/ui-authoring/COMPONENTS.md +69 -305
  422. package/skills/ui-authoring/PATTERNS.md +362 -0
  423. package/skills/ui-authoring/SKILL.md +15 -147
  424. package/skills/ui-authoring/TOKENS.md +400 -0
  425. package/dist/CardV2-m9yOInMU.mjs.map +0 -1
  426. package/dist/Checkbox-CU27-Aa8.mjs.map +0 -1
  427. package/dist/DatePicker-DpGvo7Bd.mjs.map +0 -1
  428. package/dist/FormControl-BIXJ-FPI.mjs.map +0 -1
  429. package/dist/FormField-DcGQvgNW.mjs.map +0 -1
  430. package/dist/HoverCopyableField-BHdCaR-R.mjs.map +0 -1
  431. package/dist/IconButton-DC4rh6ow.mjs.map +0 -1
  432. package/dist/ListBox-BwD-q7wF.mjs.map +0 -1
  433. package/dist/Radio-CtPz3EzX.mjs.map +0 -1
  434. package/dist/SectionHeading-DvP9NEgN.d.mts +0 -71
  435. package/dist/TableControls-BK8DCsqi.mjs.map +0 -1
  436. package/skills/ui-authoring/EXAMPLES.md +0 -370
  437. package/skills/ui-authoring/REFERENCE.md +0 -293
  438. /package/dist/{index-7rWKHdox.d.mts → index-BSVhZrWN.d.mts} +0 -0
  439. /package/dist/{index-B4woaFSm.d.mts → index-BrGZHEgX.d.mts} +0 -0
  440. /package/dist/{index-BOn0AAue.d.mts → index-BwAfCVZH2.d.mts} +0 -0
  441. /package/dist/{index-CKKoxA9V.d.mts → index-CDGG7lCB.d.mts} +0 -0
  442. /package/dist/{index-CRo77wc3.d.mts → index-CFhUdAHM.d.mts} +0 -0
  443. /package/dist/{index-Ci-uuV07.d.mts → index-CROz1VSV.d.mts} +0 -0
  444. /package/dist/{index-DDdPqD_H.d.mts → index-DA6_cwf8.d.mts} +0 -0
  445. /package/dist/{index-Es5nKSSL.d.mts → index-DM6vVDZD.d.mts} +0 -0
  446. /package/dist/{index-FtE8MXJ_.d.mts → index-Jh0C5PIG.d.mts} +0 -0
  447. /package/dist/{index-ehD5GjMH.d.mts → index-PWQavSPf.d.mts} +0 -0
  448. /package/dist/{index-uMNhmxEh.d.mts → index-sViox9YW.d.mts} +0 -0
@@ -1,38 +1,38 @@
1
- import { isActive, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
2
- import { focusOutline, focusWithinOutline } from "./mixins/focus.mjs";
3
- import "./variables/transitions.mjs";
4
- import { paragraphMixins } from "./mixins/text.mjs";
1
+ import { a as styled, n as createGlobalStyle, r as css } from "./styledComponentsInterop-8zScIQyC.mjs";
5
2
  import { TruncatedText } from "./lib/TruncatedText.mjs";
6
- import { t as Card_default } from "./Card-CLTkZLKr.mjs";
7
- import { t as Spacer_default } from "./Spacer-Ln3KChb5.mjs";
8
- import { i as Paragraph, r as Label$1 } from "./Text-hEoPeOc9.mjs";
9
- import { a as Tooltip } from "./Tooltip-CDvOu1UN.mjs";
3
+ import { paragraphMixins } from "./mixins/text.mjs";
4
+ import { t as Card_default } from "./Card-CKrJtn1f.mjs";
5
+ import { t as Spacer_default } from "./Spacer-BsK8tTwA.mjs";
6
+ import { i as Paragraph, r as Label$1 } from "./Text-B0orb-cZ.mjs";
7
+ import "./variables/transitions.mjs";
8
+ import { a as Tooltip } from "./Tooltip-iJcfJqxn.mjs";
9
+ import { isActive, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
10
10
  import { useScrollOverflow } from "./lib/useScrollOverflow.mjs";
11
11
  import { Z_INDICES } from "./lib/zindex.mjs";
12
- import { n as Stack, t as HStack } from "./Stack-ckRN7LrP.mjs";
13
- import { n as Button, t as IconButton } from "./IconButton-DC4rh6ow.mjs";
14
- import { r as InputGroup } from "./Input-PWfwMSJ7.mjs";
12
+ import { focusOutline, focusWithinOutline } from "./mixins/focus.mjs";
13
+ import { n as Stack, t as HStack } from "./Stack-Bre2oiov.mjs";
14
+ import { n as Button, t as IconButton } from "./IconButton-BgL3QUVO.mjs";
15
+ import { r as InputGroup } from "./Input-DoB8YswA.mjs";
15
16
  import Input_default from "./components/Input/index.mjs";
16
- import { c as MenuList, s as MenuItem } from "./Menu-DpM8o234.mjs";
17
- import { n as DropdownMenu_default } from "./DropdownMenu-DZIFSJXD.mjs";
18
- import { t as Combobox } from "./Combobox-DhTUY8JT.mjs";
19
- import { s as Popover_default } from "./Popover-BZ5Bs80y.mjs";
20
- import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-DLf4Hwa4.mjs";
21
- import { t as Toggle } from "./Toggle-CC2FTAKS.mjs";
22
- import { t as ListBox } from "./ListBox-BwD-q7wF.mjs";
23
- import { m as FormField, o as ComboboxField } from "./FormField-DcGQvgNW.mjs";
24
- import { n as DatePicker } from "./DatePicker-DpGvo7Bd.mjs";
17
+ import { c as MenuList, s as MenuItem } from "./Menu-CHbUf9PQ.mjs";
18
+ import { n as DropdownMenu_default } from "./DropdownMenu-82xH1AZr.mjs";
19
+ import { t as Combobox } from "./Combobox-BGRyr_-L.mjs";
20
+ import { s as Popover_default } from "./Popover-DNH8Jx1-.mjs";
21
+ import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-sYllYizt.mjs";
22
+ import { t as Toggle } from "./Toggle-e8DCYa6i.mjs";
23
+ import { t as ListBox } from "./ListBox-B9uuMt2R.mjs";
24
+ import { m as FormField, o as ComboboxField } from "./FormField-CVnbsNvU.mjs";
25
+ import { n as DatePicker, t as DateRangePicker } from "./DatePicker-BNnZ6L1y.mjs";
25
26
  import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
26
- import styled, { createGlobalStyle, css } from "styled-components";
27
27
  import { Fragment, createContext, createElement, forwardRef, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
28
28
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
29
29
  import { CaretDownIcon, CheckIcon, CircleInfoIcon, CirclePlusIcon, CopyIcon, FilterIcon, MoreIcon, PlusIcon, RotateCcwIcon, SaveIcon, SearchIcon, SettingsIcon, TrashIcon, XIcon } from "@persona/icons";
30
30
  import { CaretDownIcon as CaretDownIcon$1, CircleInfoIcon as CircleInfoIcon$1, LockedIcon as LockedIcon$1, MoreIcon as MoreIcon$1, PlusIcon as PlusIcon$1, SearchIcon as SearchIcon$1, XIcon as XIcon$1 } from "@persona/icons/12px";
31
- import { isEqual, noop, startCase, uniqueId } from "lodash";
32
- import { debounce as debounce$1, union, uniqueId as uniqueId$1 } from "lodash/fp.js";
31
+ import { debounce, isEqual, noop, partition, startCase, union, uniqueId } from "lodash-es";
33
32
  import { useId } from "react-aria";
34
33
  import Fuse from "fuse.js";
35
34
  import { DragIcon as DragIcon$1 } from "@persona/icons/24px";
35
+ import { DateTime } from "luxon";
36
36
  import * as PopoverPrimitive from "@radix-ui/react-popover";
37
37
  import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
38
38
  import { parseDate } from "@internationalized/date";
@@ -834,8 +834,35 @@ function reorder(list, startIndex, endIndex) {
834
834
  result.splice(endIndex, 0, removed);
835
835
  return result;
836
836
  }
837
+ /**
838
+ * Translates a drag result into indices into the full list. dnd reports positions among the
839
+ * rendered rows, which diverge from the full list as soon as the view is filtered.
840
+ *
841
+ * Returns null when either end cannot be resolved, in which case the drag should be ignored
842
+ * rather than applied at the wrong position.
843
+ */
844
+ function resolveDragIndices(listKeys, renderedKeys, draggableId, destinationIndex) {
845
+ const destinationKey = renderedKeys[destinationIndex];
846
+ if (destinationKey == null) return null;
847
+ const from = listKeys.indexOf(draggableId);
848
+ const to = listKeys.indexOf(destinationKey);
849
+ return from === -1 || to === -1 ? null : {
850
+ from,
851
+ to
852
+ };
853
+ }
837
854
  //#endregion
838
855
  //#region components/DataTable/TableControls/TableViewConfigurationDropdown.tsx
856
+ const SHOWN_DROPPABLE_ID = "cases-view__configure-shown-columns";
857
+ const startsCapitalized = (label) => {
858
+ const first = label.charAt(0);
859
+ return first !== "" && first === first.toUpperCase() && first !== first.toLowerCase();
860
+ };
861
+ const byLabel = (a, b) => {
862
+ const aCapitalized = startsCapitalized(a.label);
863
+ if (aCapitalized !== startsCapitalized(b.label)) return aCapitalized ? -1 : 1;
864
+ return a.label.localeCompare(b.label, void 0, { numeric: true });
865
+ };
839
866
  const DndSection = styled("div")`
840
867
  max-height: 400px;
841
868
 
@@ -912,10 +939,20 @@ const TableViewConfigurationDropdown = ({ disabled = false, disabledTooltipMessa
912
939
  })
913
940
  })] });
914
941
  };
915
- const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateColumnConfiguration, getColumnDisabled }) => {
942
+ const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateColumnConfiguration, getColumnDisabled, sortByRelevance = false }) => {
916
943
  const [searchTerm, setSearchTerm] = useState("");
917
944
  const fuse = useMemo(() => {
918
- return new Fuse(attributeOptions, {
945
+ return new Fuse(attributeOptions, sortByRelevance ? {
946
+ shouldSort: true,
947
+ threshold: .3,
948
+ ignoreLocation: true,
949
+ includeScore: true,
950
+ minMatchCharLength: 1,
951
+ keys: [{
952
+ name: "label",
953
+ weight: 1
954
+ }]
955
+ } : {
919
956
  shouldSort: false,
920
957
  threshold: .4,
921
958
  location: 0,
@@ -926,27 +963,49 @@ const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateC
926
963
  weight: 1
927
964
  }]
928
965
  });
929
- }, [attributeOptions]);
966
+ }, [attributeOptions, sortByRelevance]);
930
967
  const allOptions = useMemo(() => union(attributeOptions, columnConfiguration), [attributeOptions, columnConfiguration]);
931
- const filteredSearchOptions = searchTerm === "" ? allOptions : fuse.search(searchTerm).map(({ item }) => item);
968
+ const filteredSearchOptions = useMemo(() => {
969
+ if (searchTerm === "") return allOptions;
970
+ const results = fuse.search(searchTerm);
971
+ if (!sortByRelevance) return results.map(({ item }) => item);
972
+ return [...results].sort((a, b) => (a.score ?? 0) - (b.score ?? 0) || byLabel(a.item, b.item)).map(({ item }) => item);
973
+ }, [
974
+ allOptions,
975
+ fuse,
976
+ searchTerm,
977
+ sortByRelevance
978
+ ]);
932
979
  const hiddenAttributes = useMemo(() => {
933
- return filteredSearchOptions.filter((attribute) => {
934
- return !columnConfiguration.map((c) => c.key).includes(attribute.key);
935
- });
936
- }, [columnConfiguration, filteredSearchOptions]);
980
+ const columnConfigurationKeys = new Set(columnConfiguration.map((c) => c.key));
981
+ const hidden = filteredSearchOptions.filter((attribute) => !columnConfigurationKeys.has(attribute.key));
982
+ if (!sortByRelevance || searchTerm !== "") return hidden;
983
+ const [systemColumns, customFields] = partition(hidden, (a) => !a.isCustomField);
984
+ return [...systemColumns, ...[...customFields].sort(byLabel)];
985
+ }, [
986
+ columnConfiguration,
987
+ filteredSearchOptions,
988
+ sortByRelevance,
989
+ searchTerm
990
+ ]);
937
991
  const filteredShownAttributes = useMemo(() => {
938
992
  return columnConfiguration.filter((column) => filteredSearchOptions.map((o) => o.key).includes(column.key));
939
993
  }, [columnConfiguration, filteredSearchOptions]);
940
994
  const handleDragEnd = (result, _provided) => {
941
995
  const { destination, source } = result;
942
996
  if (!destination || destination.droppableId === source.droppableId && destination.index === source.index) return;
943
- updateColumnConfiguration(reorder(columnConfiguration, source.index, destination.index));
997
+ const indices = resolveDragIndices(columnConfiguration.map((c) => c.key), filteredShownAttributes.map((c) => c.key), result.draggableId, destination.index);
998
+ if (!indices) return;
999
+ updateColumnConfiguration(reorder(columnConfiguration, indices.from, indices.to));
944
1000
  };
945
1001
  const generateShownAttributesToggle = (column) => () => {
946
1002
  updateColumnConfiguration(columnConfiguration.filter((a) => a.key !== column.key));
947
1003
  };
948
1004
  const generateHiddenAttributesToggle = (column) => () => {
949
- updateColumnConfiguration(columnConfiguration.concat(column));
1005
+ updateColumnConfiguration(columnConfiguration.concat({
1006
+ key: column.key,
1007
+ label: column.label
1008
+ }));
950
1009
  };
951
1010
  const shownColumnIds = useMemo(() => {
952
1011
  return columnConfiguration.map((c) => c.key);
@@ -993,7 +1052,7 @@ const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateC
993
1052
  shownDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: "Shown attributes" }), /* @__PURE__ */ jsx(DragDropContext, {
994
1053
  onDragEnd: handleDragEnd,
995
1054
  children: /* @__PURE__ */ jsx(Droppable, {
996
- droppableId: "cases-view__configure-shown-columns",
1055
+ droppableId: SHOWN_DROPPABLE_ID,
997
1056
  renderClone: (provided, _snapshot, rubric) => {
998
1057
  return /* @__PURE__ */ jsx("div", {
999
1058
  ...provided.draggableProps,
@@ -1026,41 +1085,7 @@ const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateC
1026
1085
  })
1027
1086
  })] }),
1028
1087
  /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
1029
- hiddenDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: "Hidden attributes" }), /* @__PURE__ */ jsx(DragDropContext, {
1030
- onDragEnd: handleDragEnd,
1031
- children: /* @__PURE__ */ jsx(Droppable, {
1032
- droppableId: "cases-view__configure-hidden-columns",
1033
- renderClone: (provided, _snapshot, rubric) => {
1034
- return /* @__PURE__ */ jsx("div", {
1035
- ...provided.draggableProps,
1036
- ...provided.dragHandleProps,
1037
- ref: provided.innerRef,
1038
- children: /* @__PURE__ */ jsx(AttributeDnd, { ...hiddenDndItemProps[rubric.source.index] })
1039
- });
1040
- },
1041
- children: (provided) => {
1042
- return /* @__PURE__ */ jsxs("div", {
1043
- ref: provided.innerRef,
1044
- ...provided.droppableProps,
1045
- children: [hiddenDndItemProps.map((props, idx) => {
1046
- return /* @__PURE__ */ jsx(Draggable, {
1047
- draggableId: props.column.key,
1048
- index: idx,
1049
- isDragDisabled: props.shouldDisableDrag,
1050
- children: (provided) => {
1051
- return /* @__PURE__ */ jsx("div", {
1052
- ref: provided.innerRef,
1053
- ...provided.draggableProps,
1054
- ...provided.dragHandleProps,
1055
- children: /* @__PURE__ */ jsx(AttributeDnd, { ...props })
1056
- });
1057
- }
1058
- }, `${props.column.key}`);
1059
- }), provided.placeholder]
1060
- });
1061
- }
1062
- })
1063
- })] })
1088
+ hiddenDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: "Hidden attributes" }), hiddenDndItemProps.map((props) => /* @__PURE__ */ jsx(AttributeDnd, { ...props }, props.column.key))] })
1064
1089
  ] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Paragraph, { children: "No matching attributes" }) })
1065
1090
  ] });
1066
1091
  };
@@ -1158,6 +1183,7 @@ const OPERATORS_BY_TYPE = {
1158
1183
  "is",
1159
1184
  "before",
1160
1185
  "after",
1186
+ "between",
1161
1187
  "is_empty",
1162
1188
  "is_not_empty"
1163
1189
  ],
@@ -1172,6 +1198,14 @@ const OPERATORS_BY_TYPE = {
1172
1198
  };
1173
1199
  /** Operators that have no value control (the operator itself is the predicate). */
1174
1200
  const VALUELESS_OPERATORS = new Set(["is_empty", "is_not_empty"]);
1201
+ /**
1202
+ * Operators whose value is a {@link DateRangeFilterValue} rather than the
1203
+ * scalar its field type would otherwise carry. The value control, the draft
1204
+ * seed, and every validator branch on this rather than on field type alone —
1205
+ * a `date` field carries an ISO day string for `is` / `before` / `after` and
1206
+ * a `{ startDate, endDate }` pair for `between`.
1207
+ */
1208
+ const RANGE_OPERATORS = new Set(["between"]);
1175
1209
  function getOperatorsForType(type) {
1176
1210
  return OPERATORS_BY_TYPE[type] ?? [];
1177
1211
  }
@@ -1199,6 +1233,19 @@ function getDefaultOperatorForType(type) {
1199
1233
  function isValuelessOperator(operator) {
1200
1234
  return VALUELESS_OPERATORS.has(operator);
1201
1235
  }
1236
+ function isRangeOperator(operator) {
1237
+ return RANGE_OPERATORS.has(operator);
1238
+ }
1239
+ /**
1240
+ * Whether `value` carries both endpoints of a range. Shared by the pill,
1241
+ * the validators, and the serialize boundary so "complete enough to send"
1242
+ * has one definition.
1243
+ */
1244
+ function isCompleteDateRange(value) {
1245
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
1246
+ const { startDate, endDate } = value;
1247
+ return typeof startDate === "string" && startDate.length > 0 && typeof endDate === "string" && endDate.length > 0;
1248
+ }
1202
1249
  /**
1203
1250
  * Whether a concrete field's operator selector should be shown. A field
1204
1251
  * pinned to one operator renders it as static text rather than a caret that
@@ -1220,7 +1267,8 @@ const OPERATOR_LABELS = {
1220
1267
  is_true: "is true",
1221
1268
  is_false: "is false",
1222
1269
  before: "before",
1223
- after: "after"
1270
+ after: "after",
1271
+ between: "is between"
1224
1272
  };
1225
1273
  /**
1226
1274
  * Field-type-specific label overrides. The operator vocabulary itself
@@ -1253,6 +1301,40 @@ function emptyValueForFieldType(type) {
1253
1301
  default: return "";
1254
1302
  }
1255
1303
  }
1304
+ /**
1305
+ * Empty endpoints are written as `''` rather than omitted so the object still
1306
+ * reads as a date range after a JSON round-trip — `undefined` keys don't
1307
+ * survive `JSON.stringify`, and a bare `{}` is indistinguishable from a
1308
+ * corrupted value at the validation boundary.
1309
+ */
1310
+ function emptyDateRange() {
1311
+ return {
1312
+ startDate: "",
1313
+ endDate: ""
1314
+ };
1315
+ }
1316
+ /**
1317
+ * Empty-but-present value for a concrete `(field, operator)` pair. Prefer this
1318
+ * over {@link emptyValueForFieldType} anywhere an operator is in hand: the same
1319
+ * `date` field seeds an empty string for `before` and an empty range for
1320
+ * `between`.
1321
+ */
1322
+ function emptyValueForRule(field, operator) {
1323
+ if (isValuelessOperator(operator)) return null;
1324
+ if (isRangeOperator(operator) || field.type === "date_range") return emptyDateRange();
1325
+ return emptyValueForFieldType(field.type);
1326
+ }
1327
+ /**
1328
+ * Carry `value` across an operator change, replacing it with a fresh draft
1329
+ * when the two operators disagree about value shape. Switching a date pill
1330
+ * from `after` to `between` must not leave the old ISO day string behind —
1331
+ * the range control can't read it and the wire format would reject it.
1332
+ */
1333
+ function reconcileValueForOperator(field, nextOperator, previousOperator, value) {
1334
+ if (isValuelessOperator(nextOperator)) return null;
1335
+ if (isRangeOperator(nextOperator) !== isRangeOperator(previousOperator)) return emptyValueForRule(field, nextOperator);
1336
+ return value ?? emptyValueForRule(field, nextOperator);
1337
+ }
1256
1338
  //#endregion
1257
1339
  //#region components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/display.ts
1258
1340
  function valueDisplayString(value, optionLabels) {
@@ -1266,10 +1348,16 @@ function valueDisplayString(value, optionLabels) {
1266
1348
  if (typeof value === "boolean") return value ? "true" : "false";
1267
1349
  if (typeof value === "number") return String(value);
1268
1350
  if (typeof value === "string") return value.length > 0 ? display(value) : void 0;
1351
+ if (typeof value === "object") {
1352
+ const { startDate, endDate } = value;
1353
+ if (startDate && endDate) return `${startDate} – ${endDate}`;
1354
+ return startDate || endDate || void 0;
1355
+ }
1269
1356
  }
1270
1357
  function draftValueFor(field, operator) {
1271
1358
  if (isValuelessOperator(operator)) return null;
1272
1359
  if (field.type === "boolean") return true;
1360
+ if (isRangeOperator(operator)) return emptyValueForRule(field, operator);
1273
1361
  if (field.type === "multi_choices") return [];
1274
1362
  return "";
1275
1363
  }
@@ -1745,12 +1833,17 @@ const AdvancedFilterRulesPopover = ({ registry, compound, onChange, trigger, ope
1745
1833
  const handleOperatorChange = useCallback((groupIndex, ruleIndex, nextOperator) => {
1746
1834
  const prev = compound.groups[groupIndex]?.rules[ruleIndex];
1747
1835
  if (!prev) return;
1836
+ const field = registry.get(prev.fieldId);
1748
1837
  onChange(setRuleInGroup(compound, groupIndex, ruleIndex, {
1749
1838
  fieldId: prev.fieldId,
1750
1839
  operator: nextOperator,
1751
- value: isValuelessOperator(nextOperator) ? null : prev.value
1840
+ value: field ? reconcileValueForOperator(field, nextOperator, prev.operator, prev.value) : null
1752
1841
  }));
1753
- }, [compound, onChange]);
1842
+ }, [
1843
+ compound,
1844
+ onChange,
1845
+ registry
1846
+ ]);
1754
1847
  const handleValueChange = useCallback((groupIndex, ruleIndex, nextValue) => {
1755
1848
  const prev = compound.groups[groupIndex]?.rules[ruleIndex];
1756
1849
  if (!prev) return;
@@ -2074,6 +2167,63 @@ function ChoicesValueControl({ field, operator, value, onChange, onCommit, ariaL
2074
2167
  });
2075
2168
  }
2076
2169
  //#endregion
2170
+ //#region components/DataTable/TableControls/FiltersV2/value-controls/DateRangeValueControl/DateRangeValueControl.tsx
2171
+ const CALENDAR_DATE = /^(\d{4}-\d{2}-\d{2})/;
2172
+ const parseIsoDate$1 = (value) => {
2173
+ if (typeof value !== "string") return;
2174
+ const calendarDay = CALENDAR_DATE.exec(value)?.[1];
2175
+ if (calendarDay == null) return;
2176
+ try {
2177
+ const parsed = parseDate(calendarDay);
2178
+ return DateTime.fromObject({
2179
+ year: parsed.year,
2180
+ month: parsed.month,
2181
+ day: parsed.day
2182
+ });
2183
+ } catch {
2184
+ return;
2185
+ }
2186
+ };
2187
+ const readIsoEndpoints = (value) => {
2188
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return {};
2189
+ return value;
2190
+ };
2191
+ const useDateRange = (value) => {
2192
+ const { startDate, endDate } = readIsoEndpoints(value);
2193
+ return useMemo(() => ({
2194
+ startDate: parseIsoDate$1(startDate),
2195
+ endDate: parseIsoDate$1(endDate)
2196
+ }), [startDate, endDate]);
2197
+ };
2198
+ const DateRangeValueControl = ({ field, operator, value, onChange, ariaLabel, hidePresets, portalContainer, visibleMonths }) => {
2199
+ const size = useFilterBarSize();
2200
+ const dateRange = useDateRange(value);
2201
+ const handleChange = useCallback((range) => {
2202
+ if (!range?.start || !range.end || range.start.compare(range.end) > 0) {
2203
+ onChange(null);
2204
+ return;
2205
+ }
2206
+ onChange({
2207
+ startDate: range.start.toString(),
2208
+ endDate: range.end.toString()
2209
+ });
2210
+ }, [onChange]);
2211
+ if (isValuelessOperator(operator)) return null;
2212
+ const hasCompleteRange = dateRange.startDate != null && dateRange.endDate != null;
2213
+ return /* @__PURE__ */ jsx(DateRangePicker, {
2214
+ "aria-label": ariaLabel ?? `${field.label} value`,
2215
+ calendarZIndex: Z_INDICES.modalDropdown,
2216
+ dateRange,
2217
+ hidePresets,
2218
+ label: null,
2219
+ onChange: handleChange,
2220
+ portalContainer,
2221
+ showClear: false,
2222
+ size,
2223
+ visibleMonths
2224
+ }, hasCompleteRange ? "range" : "empty");
2225
+ };
2226
+ //#endregion
2077
2227
  //#region components/DataTable/TableControls/FiltersV2/value-controls/DateValueControl/DateValueControl.tsx
2078
2228
  const parseIsoDate = (value) => {
2079
2229
  if (typeof value !== "string") return null;
@@ -2159,7 +2309,7 @@ const FloatValueControl = ({ field, operator, value, onChange, ariaLabel }) => {
2159
2309
  const size = useFilterBarSize();
2160
2310
  const [localValue, setLocalValue] = useState(() => numericDisplayValue(value));
2161
2311
  const isFocusedRef = useRef(false);
2162
- const debouncedOnChange = useMemo(() => debounce$1(300, onChange), [onChange]);
2312
+ const debouncedOnChange = useMemo(() => debounce(onChange, 300), [onChange]);
2163
2313
  useEffect(() => {
2164
2314
  const cancelPendingChange = () => {
2165
2315
  debouncedOnChange.cancel();
@@ -2230,7 +2380,7 @@ const IntegerValueControl = ({ field, operator, value, onChange, ariaLabel }) =>
2230
2380
  const size = useFilterBarSize();
2231
2381
  const [localValue, setLocalValue] = useState(() => numericDisplayValue(value));
2232
2382
  const isFocusedRef = useRef(false);
2233
- const debouncedOnChange = useMemo(() => debounce$1(300, onChange), [onChange]);
2383
+ const debouncedOnChange = useMemo(() => debounce(onChange, 300), [onChange]);
2234
2384
  useEffect(() => {
2235
2385
  const cancelPendingChange = () => {
2236
2386
  debouncedOnChange.cancel();
@@ -2280,7 +2430,7 @@ function StringValueControl({ field, operator, value, onChange, ariaLabel, input
2280
2430
  const resolvedInputType = inputType ?? (field.type === "email" ? "email" : "text");
2281
2431
  const size = useFilterBarSize();
2282
2432
  const [localValue, setLocalValue] = useState(typeof value === "string" ? value : "");
2283
- const debouncedOnChange = useMemo(() => debounce$1(DEBOUNCE_MS, onChange), [onChange]);
2433
+ const debouncedOnChange = useMemo(() => debounce(onChange, DEBOUNCE_MS), [onChange]);
2284
2434
  useEffect(() => () => {
2285
2435
  debouncedOnChange.cancel();
2286
2436
  }, [debouncedOnChange]);
@@ -2318,7 +2468,8 @@ const RESOLVERS = {
2318
2468
  ...opts
2319
2469
  }),
2320
2470
  boolean: (opts) => /* @__PURE__ */ jsx(BooleanValueControl, { ...opts }),
2321
- date: (opts) => /* @__PURE__ */ jsx(DateValueControl, { ...opts }),
2471
+ date: (opts) => isRangeOperator(opts.operator) ? /* @__PURE__ */ jsx(DateRangeValueControl, { ...opts }) : /* @__PURE__ */ jsx(DateValueControl, { ...opts }),
2472
+ date_range: (opts) => /* @__PURE__ */ jsx(DateRangeValueControl, { ...opts }),
2322
2473
  integer: (opts) => /* @__PURE__ */ jsx(IntegerValueControl, { ...opts }),
2323
2474
  float: (opts) => /* @__PURE__ */ jsx(FloatValueControl, { ...opts }),
2324
2475
  array: (opts) => /* @__PURE__ */ jsx(ArrayValueControl, { ...opts })
@@ -2618,9 +2769,10 @@ function normalizeValueToDisplay(value, optionLabels) {
2618
2769
  return value.map((entry) => lookup(String(entry)));
2619
2770
  }
2620
2771
  if (typeof value === "object") {
2621
- const record = value;
2622
- if (record.startDate && record.endDate) return [`${record.startDate} – ${record.endDate}`];
2623
- if (record.startDate || record.endDate) return [record.startDate ?? record.endDate ?? ""];
2772
+ const { startDate, endDate } = value;
2773
+ if (startDate && endDate) return [`${startDate} – ${endDate}`];
2774
+ const single = startDate || endDate;
2775
+ return single ? [single] : [];
2624
2776
  }
2625
2777
  if (typeof value === "boolean") return [value ? "True" : "False"];
2626
2778
  if (typeof value === "number") return [String(value)];
@@ -2640,7 +2792,7 @@ function buildAccessibleName(field, rule, displayedValues) {
2640
2792
  return `${field.label} ${operatorLabel} ${displayedValues.join(", ")}`;
2641
2793
  }
2642
2794
  const FilterPill = forwardRef(function FilterPill({ field, rule, onClick, onDismiss, variant = "default", optionLabels, size, ...rest }, ref) {
2643
- const reactId = useMemo(() => uniqueId$1("filter-pill-"), []);
2795
+ const reactId = useMemo(() => uniqueId("filter-pill-"), []);
2644
2796
  const resolvedSize = useFilterBarSize(size);
2645
2797
  const displayedValues = useMemo(() => rule && !isValuelessOperator(rule.operator) ? normalizeValueToDisplay(rule.value, optionLabels) : [], [rule, optionLabels]);
2646
2798
  const accessibleName = buildAccessibleName(field, rule, displayedValues);
@@ -2789,7 +2941,7 @@ const Footer = styled(HStack).attrs({
2789
2941
  * back through `onChangeOperator` and forwards open/close transitions
2790
2942
  * through Radix's controlled props.
2791
2943
  */
2792
- const FilterPopover = ({ field, operator, onChangeOperator, valueControlSlot, onClose, trigger, open, onOpenChange, size, portalContainer }) => {
2944
+ const FilterPopover = ({ field, operator, onChangeOperator, valueControlSlot, onClose, trigger, open, onOpenChange, size }) => {
2793
2945
  const resolvedSize = useFilterBarSize(size);
2794
2946
  const valueless = isValuelessOperator(operator);
2795
2947
  const CaretIcon = resolvedSize === "sm" ? CaretDownIcon$1 : CaretDownIcon;
@@ -2827,15 +2979,14 @@ const FilterPopover = ({ field, operator, onChangeOperator, valueControlSlot, on
2827
2979
  return /* @__PURE__ */ jsxs(Popover_default, {
2828
2980
  open,
2829
2981
  onOpenChange: handleOpenChange,
2830
- portalProps: portalContainer ? { container: portalContainer } : void 0,
2831
2982
  children: [/* @__PURE__ */ jsx(Popover_default.Trigger, {
2832
2983
  asChild: true,
2833
2984
  children: trigger
2834
2985
  }), /* @__PURE__ */ jsx(Popover_default.Card, {
2835
2986
  align: "start",
2836
2987
  sideOffset: 4,
2837
- avoidCollisions: portalContainer == null,
2838
- zIndex: Z_INDICES.dropdown,
2988
+ avoidCollisions: true,
2989
+ zIndex: Z_INDICES.floatingBar,
2839
2990
  "aria-label": `Edit filter for ${field.label}`,
2840
2991
  noPadding: true,
2841
2992
  children: /* @__PURE__ */ jsxs(PopoverPanel, {
@@ -2857,7 +3008,6 @@ const FilterPopover = ({ field, operator, onChangeOperator, valueControlSlot, on
2857
3008
  }),
2858
3009
  align: "start",
2859
3010
  portal: true,
2860
- portalProps: portalContainer ? { container: portalContainer } : void 0,
2861
3011
  zIndex: Z_INDICES.layeredDropdown,
2862
3012
  children: operatorOptions.map((op) => /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
2863
3013
  size: resolvedSize,
@@ -2988,7 +3138,8 @@ const OPERATOR_SET = new Set([
2988
3138
  "is_true",
2989
3139
  "is_false",
2990
3140
  "before",
2991
- "after"
3141
+ "after",
3142
+ "between"
2992
3143
  ]);
2993
3144
  /**
2994
3145
  * Returns `true` when `value` is a structurally-valid `FilterStateV2`,
@@ -3037,7 +3188,7 @@ function isFilterRuleValue(value) {
3037
3188
  }
3038
3189
  if (typeof value === "object") {
3039
3190
  const record = value;
3040
- if ("startDate" in record || "endDate" in record) {
3191
+ if (Object.keys(record).every((key) => key === "startDate" || key === "endDate")) {
3041
3192
  const { startDate, endDate } = record;
3042
3193
  return (startDate == null || typeof startDate === "string") && (endDate == null || typeof endDate === "string");
3043
3194
  }
@@ -3127,6 +3278,7 @@ function isDraftRuleValue(rule, registry) {
3127
3278
  if (isValuelessOperator(rule.operator)) return false;
3128
3279
  const field = registry.get(rule.fieldId);
3129
3280
  if (!field) return false;
3281
+ if (isRangeOperator(rule.operator)) return !isCompleteDateRange(rule.value);
3130
3282
  switch (field.type) {
3131
3283
  case "multi_choices":
3132
3284
  case "tags_conditions": return Array.isArray(rule.value) && rule.value.length === 0;
@@ -3141,18 +3293,14 @@ function isRuleAllowed(rule, registry, options = { allowDraftValues: false }) {
3141
3293
  if (!registry.operatorsFor(rule.fieldId).includes(rule.operator)) return false;
3142
3294
  if (isValuelessOperator(rule.operator)) return rule.value == null;
3143
3295
  if (options.allowDraftValues && isDraftRuleValue(rule, registry)) return true;
3296
+ if (isRangeOperator(rule.operator)) return isCompleteDateRange(rule.value);
3144
3297
  if (registry.get(rule.fieldId)?.type === "boolean") return typeof rule.value === "boolean";
3145
3298
  if (registry.get(rule.fieldId)?.type === "date") return typeof rule.value === "string" && rule.value.length > 0;
3146
3299
  if (registry.get(rule.fieldId)?.type === "multi_choices") {
3147
3300
  if (Array.isArray(rule.value)) return rule.value.length > 0;
3148
3301
  return typeof rule.value === "string" && rule.value.length > 0;
3149
3302
  }
3150
- if (registry.get(rule.fieldId)?.type === "date_range") {
3151
- const value = rule.value;
3152
- if (value == null || typeof value !== "object" || Array.isArray(value)) return false;
3153
- const { startDate, endDate } = value;
3154
- return typeof startDate === "string" && startDate.length > 0 && typeof endDate === "string" && endDate.length > 0;
3155
- }
3303
+ if (registry.get(rule.fieldId)?.type === "date_range") return isCompleteDateRange(rule.value);
3156
3304
  if (registry.get(rule.fieldId)?.type === "tags_conditions") return Array.isArray(rule.value) && rule.value.length > 0;
3157
3305
  return rule.value != null && typeof rule.value !== "boolean";
3158
3306
  }
@@ -3171,16 +3319,13 @@ function hasCompleteValue(rule, registry) {
3171
3319
  if (isValuelessOperator(rule.operator)) return rule.value == null;
3172
3320
  const { value } = rule;
3173
3321
  if (value == null) return false;
3322
+ if (isRangeOperator(rule.operator)) return isCompleteDateRange(value);
3174
3323
  switch (registry.get(rule.fieldId)?.type) {
3175
3324
  case "boolean": return typeof value === "boolean";
3176
3325
  case "date": return typeof value === "string" && value.length > 0;
3177
3326
  case "multi_choices": return Array.isArray(value) ? value.length > 0 : typeof value === "string" && value.length > 0;
3178
3327
  case "tags_conditions": return Array.isArray(value) && value.length > 0;
3179
- case "date_range": {
3180
- if (typeof value !== "object" || Array.isArray(value)) return false;
3181
- const { startDate, endDate } = value;
3182
- return typeof startDate === "string" && startDate.length > 0 && typeof endDate === "string" && endDate.length > 0;
3183
- }
3328
+ case "date_range": return isCompleteDateRange(value);
3184
3329
  default:
3185
3330
  if (typeof value === "string") return value.length > 0;
3186
3331
  if (Array.isArray(value)) return value.length > 0;
@@ -3495,7 +3640,7 @@ function useStableFieldIds(fieldIds) {
3495
3640
  if (previous == null || fieldIds == null || previous.length !== fieldIds.length || fieldIds.some((id, index) => previous[index] !== id)) stable.current = fieldIds;
3496
3641
  return stable.current;
3497
3642
  }
3498
- function FilterBar({ registry, initialState, onChange, advancedRulesEnabled = true, singleUseFields = false, size = "md", valueControlResolver, portalContainer }) {
3643
+ function FilterBar({ registry, initialState, onChange, advancedRulesEnabled = true, singleUseFields = false, size = "md", valueControlResolver }) {
3499
3644
  const filterState = useFilterStateV2({
3500
3645
  registry,
3501
3646
  initialState,
@@ -3644,7 +3789,7 @@ function FilterBar({ registry, initialState, onChange, advancedRulesEnabled = tr
3644
3789
  filterState.updateTopLevelRule(rule.id, {
3645
3790
  ...rule,
3646
3791
  operator: op,
3647
- value: isValuelessOperator(op) ? null : rule.value ?? emptyValueForFieldType(field.type)
3792
+ value: reconcileValueForOperator(field, op, rule.operator, rule.value)
3648
3793
  });
3649
3794
  },
3650
3795
  valueControlSlot: resolveValueControl({
@@ -3660,7 +3805,6 @@ function FilterBar({ registry, initialState, onChange, advancedRulesEnabled = tr
3660
3805
  onClose: () => setEditingRuleId(null),
3661
3806
  open: isOpen,
3662
3807
  onOpenChange: (open) => setEditingRuleId(open ? rule.id : null),
3663
- portalContainer,
3664
3808
  trigger: /* @__PURE__ */ jsx(FilterPill, {
3665
3809
  ref: (node) => {
3666
3810
  if (node) pillNodesRef.current.set(rule.id, node);
@@ -3926,6 +4070,6 @@ function normalizeFieldSource(raw) {
3926
4070
  return raw === "system" ? "system" : "custom";
3927
4071
  }
3928
4072
  //#endregion
3929
- export { DataTableCompactBar as S, useTableControls as _, hasCompleteValue as a, TableControls as b, EMPTY_FILTER_STATE as c, getDefaultOperatorForType as d, getOperatorsForField as f, TableControlsProvider as g, TableControlsContext as h, useFilterStateV2 as i, resolveValueControl as l, isValuelessOperator as m, buildFieldRegistry as n, isFilterStateV2 as o, getOperatorsForType as p, FilterBar_default as r, pruneToRegistry as s, FieldRegistry as t, useFilterBarSize as u, TableViewConfiguration as v, ControlBar as x, TableViewConfigurationDropdown as y };
4073
+ export { TableViewConfigurationDropdown as C, DataTableCompactBar as E, TableViewConfiguration as S, ControlBar as T, isValuelessOperator as _, hasCompleteValue as a, TableControlsProvider as b, EMPTY_FILTER_STATE as c, emptyValueForRule as d, getDefaultOperatorForType as f, isRangeOperator as g, isCompleteDateRange as h, useFilterStateV2 as i, resolveValueControl as l, getOperatorsForType as m, buildFieldRegistry as n, isFilterStateV2 as o, getOperatorsForField as p, FilterBar_default as r, pruneToRegistry as s, FieldRegistry as t, useFilterBarSize as u, reconcileValueForOperator as v, TableControls as w, useTableControls as x, TableControlsContext as y };
3930
4074
 
3931
- //# sourceMappingURL=TableControls-BK8DCsqi.mjs.map
4075
+ //# sourceMappingURL=TableControls-3bXyd8gS.mjs.map