@persona/design-system 0.7.2 → 0.8.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 (592) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/dist/Accordion.d.mts +1 -1
  3. package/dist/AccordionItem.d.mts +1 -1
  4. package/dist/{Action-Cyo6KCsS.d.mts → Action-BwYS9qaG.d.mts} +3 -3
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +4 -2
  7. package/dist/AdvancedFilterRulesPopover.d.mts +5 -3
  8. package/dist/ArrayValueControl.d.mts +1 -1
  9. package/dist/Attribute.d.mts +3 -3
  10. package/dist/{Badge-BD0Ut46g.mjs → Badge-D-5tbZDw.mjs} +2 -2
  11. package/dist/{Badge-BD0Ut46g.mjs.map → Badge-D-5tbZDw.mjs.map} +1 -1
  12. package/dist/BooleanValueControl.d.mts +1 -1
  13. package/dist/{Breadcrumb-CYXkrKXl.d.mts → Breadcrumb-BADja8tn.d.mts} +1 -1
  14. package/dist/Breadcrumb.d.mts +1 -1
  15. package/dist/{Breadcrumbs-CrXfUK1V.mjs → Breadcrumbs-CNpM0aXm.mjs} +5 -5
  16. package/dist/{Breadcrumbs-CrXfUK1V.mjs.map → Breadcrumbs-CNpM0aXm.mjs.map} +1 -1
  17. package/dist/{Breadcrumbs-CP7eUYUy.d.mts → Breadcrumbs-CxP7ktfM.d.mts} +2 -2
  18. package/dist/Breadcrumbs.d.mts +1 -1
  19. package/dist/{Button-Dhiund3f.d.mts → Button-CnswHEJ2.d.mts} +4 -4
  20. package/dist/Button.d.mts +1 -1
  21. package/dist/{Calendar-CMeIZ0BO.d.mts → Calendar-Cke5IlMI.d.mts} +1 -1
  22. package/dist/Calendar.d.mts +1 -1
  23. package/dist/CalendarBase.d.mts +1 -1
  24. package/dist/{Card-DCYB_mtR.d.mts → Card-Bp6L08H4.d.mts} +3 -3
  25. package/dist/Card.d.mts +1 -1
  26. package/dist/{CardV2-M3o4BELp.mjs → CardV2-DEW6mw_o.mjs} +9 -7
  27. package/dist/{CardV2-M3o4BELp.mjs.map → CardV2-DEW6mw_o.mjs.map} +1 -1
  28. package/dist/{Checkbox-fWj7GkBl.d.mts → Checkbox-DUXws1Os.d.mts} +1 -1
  29. package/dist/{Checkbox-AjL7ucoR.mjs → Checkbox-GibG2pg5.mjs} +3 -3
  30. package/dist/{Checkbox-AjL7ucoR.mjs.map → Checkbox-GibG2pg5.mjs.map} +1 -1
  31. package/dist/Checkbox.d.mts +1 -1
  32. package/dist/CheckboxGroupField-DzdOYIjo.d.mts +25 -0
  33. package/dist/CheckboxGroupField.d.mts +2 -25
  34. package/dist/ChoicesValueControl.d.mts +1 -1
  35. package/dist/{Combobox-C2b9u955.mjs → Combobox-CCDoNF9Y.mjs} +23 -10
  36. package/dist/Combobox-CCDoNF9Y.mjs.map +1 -0
  37. package/dist/{Combobox-CC-Osr57.d.mts → Combobox-CnxmKUQf.d.mts} +3 -3
  38. package/dist/Combobox.d.mts +2 -2
  39. package/dist/{ComboboxBase-Evo0FRxP.d.mts → ComboboxBase-CtNrsPO9.d.mts} +8 -5
  40. package/dist/ComboboxBase.d.mts +1 -1
  41. package/dist/{ComboboxMultiSelect-CvAc0FT3.d.mts → ComboboxMultiSelect-CMH6iVu4.d.mts} +2 -2
  42. package/dist/ComboboxMultiSelect.d.mts +1 -1
  43. package/dist/{ComboboxSingleSelect-CBm7x0oh.d.mts → ComboboxSingleSelect-BLPbLmMY.d.mts} +4 -4
  44. package/dist/ComboboxSingleSelect.d.mts +1 -1
  45. package/dist/{CompactBar-D_2qMK4y.d.mts → CompactBar-BwKIIlWz.d.mts} +4 -4
  46. package/dist/CompactBar.d.mts +1 -1
  47. package/dist/{ConfigFormGroup-Cz7GeTYd.mjs → ConfigFormGroup-BQXN2Pgj.mjs} +2 -2
  48. package/dist/{ConfigFormGroup-Cz7GeTYd.mjs.map → ConfigFormGroup-BQXN2Pgj.mjs.map} +1 -1
  49. package/dist/{ControlBar-B7j9sOr9.d.mts → ControlBar-BJUY6GOX.d.mts} +7 -2
  50. package/dist/ControlBar.d.mts +1 -1
  51. package/dist/DataTable.d.mts +4 -3
  52. package/dist/{DateField-BamAk9_w.d.mts → DateField-BojOHfrv.d.mts} +2 -2
  53. package/dist/DateField.d.mts +1 -1
  54. package/dist/{DatePicker-C3xNSkPG.d.mts → DatePicker-BHVx_i_F.d.mts} +2 -2
  55. package/dist/{DatePicker-IgiUI3Wj.mjs → DatePicker-LPIJrc0n.mjs} +77 -42
  56. package/dist/DatePicker-LPIJrc0n.mjs.map +1 -0
  57. package/dist/DatePicker.d.mts +1 -1
  58. package/dist/{DateRangePicker-C4QKMo2a.d.mts → DateRangePicker-CelDK_44.d.mts} +3 -3
  59. package/dist/DateRangePicker.d.mts +1 -1
  60. package/dist/DateRangeValueControl.d.mts +5 -3
  61. package/dist/DateValueControl.d.mts +8 -5
  62. package/dist/{DropdownButton-BWiXLMfD.mjs → DropdownButton-i5Dmxiq1.mjs} +3 -3
  63. package/dist/{DropdownButton-BWiXLMfD.mjs.map → DropdownButton-i5Dmxiq1.mjs.map} +1 -1
  64. package/dist/DropdownButton.d.mts +2 -2
  65. package/dist/{DropdownMenu-DL5ye-0m.d.mts → DropdownMenu-YtLxcNWt.d.mts} +2 -2
  66. package/dist/{DropdownMenu-CuKSNxc9.mjs → DropdownMenu-j8NWbAvM.mjs} +7 -2
  67. package/dist/DropdownMenu-j8NWbAvM.mjs.map +1 -0
  68. package/dist/DropdownMenu.d.mts +1 -1
  69. package/dist/{ErrorProps-BA0-m_Wp.d.mts → ErrorProps-6dRdJ4QQ.d.mts} +1 -1
  70. package/dist/ErrorProps.d.mts +1 -1
  71. package/dist/{FieldRegistry-bKxrF1gC.d.mts → FieldRegistry-DqO8HiYb.d.mts} +2 -2
  72. package/dist/FieldRegistry.d.mts +1 -1
  73. package/dist/{FilterBar-DhlBLWxw.d.mts → FilterBar-CpAA2Ozk.d.mts} +11 -4
  74. package/dist/FilterBar.d.mts +1 -1
  75. package/dist/FilterPickerMenu.d.mts +2 -2
  76. package/dist/FilterPill.d.mts +1 -1
  77. package/dist/FilterPopover.d.mts +8 -2
  78. package/dist/FloatValueControl.d.mts +1 -1
  79. package/dist/{FormControl-D5xyPkST.d.mts → FormControl-B-s6G9mp.d.mts} +2 -2
  80. package/dist/{FormControl-DnfZTli_.mjs → FormControl-bDxFF0hl.mjs} +3 -3
  81. package/dist/{FormControl-DnfZTli_.mjs.map → FormControl-bDxFF0hl.mjs.map} +1 -1
  82. package/dist/FormControl.d.mts +1 -1
  83. package/dist/FormControlLabel.d.mts +1 -1
  84. package/dist/{FormField-BJZUj6jg.d.mts → FormField-D3k-f3-f.d.mts} +2 -2
  85. package/dist/{FormField-74TPV8-8.mjs → FormField-DbcqNcx2.mjs} +16 -16
  86. package/dist/{FormField-74TPV8-8.mjs.map → FormField-DbcqNcx2.mjs.map} +1 -1
  87. package/dist/FormField.d.mts +1 -1
  88. package/dist/{Grid-DOyYYsvk.mjs → Grid-CeH9E5Ai.mjs} +1 -1
  89. package/dist/{Grid-DOyYYsvk.mjs.map → Grid-CeH9E5Ai.mjs.map} +1 -1
  90. package/dist/{Header-BqEKkEp5.d.mts → Header-2K49LYkR.d.mts} +1 -1
  91. package/dist/Header.d.mts +1 -1
  92. package/dist/{HelperTooltip-mOVSuEB8.d.mts → HelperTooltip-CTHUM2nC.d.mts} +2 -2
  93. package/dist/HelperTooltip.d.mts +1 -1
  94. package/dist/HighlightedText.d.mts +61 -0
  95. package/dist/{HoverCopyableField-CN3gl0ny.mjs → HoverCopyableField-BARZLhfO.mjs} +3 -3
  96. package/dist/{HoverCopyableField-CN3gl0ny.mjs.map → HoverCopyableField-BARZLhfO.mjs.map} +1 -1
  97. package/dist/{IconButton-CqTPMhjV.mjs → IconButton-BHFCjvzs.mjs} +1 -1
  98. package/dist/{IconButton-CqTPMhjV.mjs.map → IconButton-BHFCjvzs.mjs.map} +1 -1
  99. package/dist/{IconButton-CjPFhpVG.d.mts → IconButton-D5hx405r.d.mts} +2 -2
  100. package/dist/IconButton.d.mts +1 -1
  101. package/dist/ImageTile.d.mts +1 -1
  102. package/dist/InlineCombobox.d.mts +1 -1
  103. package/dist/InlineInput.d.mts +1 -1
  104. package/dist/{Input-C_3QwAAt.mjs → Input-BQN97Hzm.mjs} +7 -3
  105. package/dist/Input-BQN97Hzm.mjs.map +1 -0
  106. package/dist/{Input-CZ_6KWDN.d.mts → Input-BQbcIiVj.d.mts} +3 -3
  107. package/dist/Input.d.mts +1 -1
  108. package/dist/{InputProps-lag6BM5h.d.mts → InputProps-DT1ZReZS.d.mts} +2 -2
  109. package/dist/InputProps.d.mts +1 -1
  110. package/dist/IntegerValueControl.d.mts +1 -1
  111. package/dist/Link-Bzm4AL5J.mjs +79 -0
  112. package/dist/Link-Bzm4AL5J.mjs.map +1 -0
  113. package/dist/Link.d.mts +1 -1
  114. package/dist/{ListBox-nYAdYVQx.d.mts → ListBox-CdqRwBvA.d.mts} +7 -7
  115. package/dist/{ListBox-D4j4LCT3.mjs → ListBox-DOqN9DNl.mjs} +33 -16
  116. package/dist/ListBox-DOqN9DNl.mjs.map +1 -0
  117. package/dist/ListBox.d.mts +1 -1
  118. package/dist/ListBoxField-Bl2WLplO.d.mts +51 -0
  119. package/dist/ListBoxField.d.mts +2 -51
  120. package/dist/{LoadingShimmer-Dizk2sZu.mjs → LoadingShimmer-Ds7rvIUN.mjs} +13 -8
  121. package/dist/LoadingShimmer-Ds7rvIUN.mjs.map +1 -0
  122. package/dist/LoadingShimmer.d.mts +1 -1
  123. package/dist/{LogicRow-k4ZPtjN0.d.mts → LogicRow-CwMAn1sh.d.mts} +3 -3
  124. package/dist/LogicRow.d.mts +1 -1
  125. package/dist/MaskedInput.d.mts +1 -1
  126. package/dist/{Menu-Bu7-KBhp.d.mts → Menu-CUN9bmc1.d.mts} +3 -3
  127. package/dist/{Menu-Cd6oxjAe.mjs → Menu-DjW2b3Wk.mjs} +1 -1
  128. package/dist/{Menu-Cd6oxjAe.mjs.map → Menu-DjW2b3Wk.mjs.map} +1 -1
  129. package/dist/Menu.d.mts +1 -1
  130. package/dist/{MiddleTruncatedText-CO58jrNF.mjs → MiddleTruncatedText-DoTyfMem.mjs} +2 -2
  131. package/dist/{MiddleTruncatedText-CO58jrNF.mjs.map → MiddleTruncatedText-DoTyfMem.mjs.map} +1 -1
  132. package/dist/{Modal-Dwq-QBw_.d.mts → Modal-CGXJGrKg.d.mts} +2 -2
  133. package/dist/{Modal-BN0K8QXi.mjs → Modal-DHLPK65-.mjs} +6 -4
  134. package/dist/Modal-DHLPK65-.mjs.map +1 -0
  135. package/dist/Modal.d.mts +1 -1
  136. package/dist/{PageHeader-BTtm3hRQ.mjs → PageHeader-eI4RM_uL.mjs} +2 -2
  137. package/dist/{PageHeader-BTtm3hRQ.mjs.map → PageHeader-eI4RM_uL.mjs.map} +1 -1
  138. package/dist/PageHeader.d.mts +1 -1
  139. package/dist/{PageSelector-CeGC84N1.d.mts → PageSelector-kAfYxEky.d.mts} +3 -3
  140. package/dist/PageSelector.d.mts +1 -1
  141. package/dist/{Pagination-CPd4mSnw.mjs → Pagination-6BDOn9bX.mjs} +6 -6
  142. package/dist/Pagination-6BDOn9bX.mjs.map +1 -0
  143. package/dist/{Pagination-H-CcXrCD.d.mts → Pagination-Bhr7xyd2.d.mts} +2 -2
  144. package/dist/Pagination.d.mts +1 -1
  145. package/dist/{Pii-Dz4woKd8.mjs → Pii-DhL1gblz.mjs} +2 -2
  146. package/dist/{Pii-Dz4woKd8.mjs.map → Pii-DhL1gblz.mjs.map} +1 -1
  147. package/dist/{PillShell-BQC-k7Rl.d.mts → PillShell-CVJL1k5I.d.mts} +2 -2
  148. package/dist/PillShell.d.mts +1 -1
  149. package/dist/{Popover-opVa9Xhc.mjs → Popover-CbYaWrAy.mjs} +15 -2
  150. package/dist/Popover-CbYaWrAy.mjs.map +1 -0
  151. package/dist/{ProgressIndicator-3A4Aqci6.mjs → ProgressIndicator-BpF3XLn3.mjs} +3 -3
  152. package/dist/ProgressIndicator-BpF3XLn3.mjs.map +1 -0
  153. package/dist/{ProgressIndicator-DbOLOaxJ.d.mts → ProgressIndicator-CYyM6OSx.d.mts} +1 -1
  154. package/dist/ProgressIndicator.d.mts +1 -1
  155. package/dist/{PseudoClassProps-CHtBNv8B.d.mts → PseudoClassProps-BOVN6Etr.d.mts} +1 -1
  156. package/dist/PseudoClassProps.d.mts +1 -1
  157. package/dist/{Radio-Cxt89w8s.mjs → Radio-DPaX-9LH.mjs} +2 -2
  158. package/dist/{Radio-Cxt89w8s.mjs.map → Radio-DPaX-9LH.mjs.map} +1 -1
  159. package/dist/{RadioGroup-BjrfVPZQ.d.mts → RadioGroup-C0l0pdEt.d.mts} +1 -1
  160. package/dist/{RadioGroup-B6Cg1kdm.mjs → RadioGroup-D7f4m2Uc.mjs} +2 -2
  161. package/dist/{RadioGroup-B6Cg1kdm.mjs.map → RadioGroup-D7f4m2Uc.mjs.map} +1 -1
  162. package/dist/RadioGroup.d.mts +1 -1
  163. package/dist/{RangeCalendar-CPnLaM-J.d.mts → RangeCalendar-BJn9V3iN.d.mts} +2 -2
  164. package/dist/RangeCalendar.d.mts +1 -1
  165. package/dist/RangeCalendarPresets.d.mts +1 -1
  166. package/dist/{RouterContext-CbvHIl4K.d.mts → RouterContext-BLrzYlJ_.d.mts} +2 -2
  167. package/dist/RouterContext.d.mts +1 -1
  168. package/dist/{RouterLink-v9AG9fYa.d.mts → RouterLink-BHXjhqps.d.mts} +2 -2
  169. package/dist/RouterLink.d.mts +1 -1
  170. package/dist/RuleEditorFields.d.mts +4 -2
  171. package/dist/RulesPill.d.mts +1 -1
  172. package/dist/{SearchInput-CIjwmT8R.d.mts → SearchInput-Buh8LdIL.d.mts} +2 -2
  173. package/dist/SearchInput.d.mts +1 -1
  174. package/dist/SectionHeading.d.mts +1 -1
  175. package/dist/{SegmentedControl-Crr_aHAs.d.mts → SegmentedControl-B9qLyIIW.d.mts} +1 -1
  176. package/dist/{SegmentedControl-BcwfLuHA.mjs → SegmentedControl-zEvBtVj0.mjs} +3 -3
  177. package/dist/SegmentedControl-zEvBtVj0.mjs.map +1 -0
  178. package/dist/SegmentedControl.d.mts +1 -1
  179. package/dist/{Select-BstCz8P1.mjs → Select-BoZuM_e9.mjs} +10 -8
  180. package/dist/Select-BoZuM_e9.mjs.map +1 -0
  181. package/dist/{Select-CJQeuCiF.d.mts → Select-Cv_9PLOt.d.mts} +3 -3
  182. package/dist/Select.d.mts +1 -1
  183. package/dist/SmartTextInput.d.mts +107 -0
  184. package/dist/SmartTextInputCodeDialog.d.mts +18 -0
  185. package/dist/SmartTextInputField.d.mts +25 -0
  186. package/dist/SmartTextInputFunctionDialog.d.mts +37 -0
  187. package/dist/SmartTextInputListbox.d.mts +26 -0
  188. package/dist/SmartTextInputPopover.d.mts +45 -0
  189. package/dist/{Spinner-DplDSBqf.mjs → Spinner-CarSRiBF.mjs} +1 -1
  190. package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-CarSRiBF.mjs.map} +1 -1
  191. package/dist/{Stack-ChsImaEY.mjs → Stack-CEPzs4Pb.mjs} +1 -1
  192. package/dist/{Stack-ChsImaEY.mjs.map → Stack-CEPzs4Pb.mjs.map} +1 -1
  193. package/dist/{Stack-RVptVTVi.d.mts → Stack-XzBzPvSV.d.mts} +1 -1
  194. package/dist/Stack.d.mts +1 -1
  195. package/dist/StatusIndicator-bEnMWV_S.mjs +315 -0
  196. package/dist/StatusIndicator-bEnMWV_S.mjs.map +1 -0
  197. package/dist/{Sticker-C3Eb13OQ.mjs → Sticker-B-fU8lgu.mjs} +5 -8
  198. package/dist/Sticker-B-fU8lgu.mjs.map +1 -0
  199. package/dist/{Sticker-BVX38LKi.d.mts → Sticker-DGfNuxUK.d.mts} +4 -4
  200. package/dist/Sticker.d.mts +1 -1
  201. package/dist/StringValueControl.d.mts +1 -1
  202. package/dist/Tab.d.mts +1 -1
  203. package/dist/{TabBar-BepWbJHz.mjs → TabBar-BSl5v5aa.mjs} +4 -7
  204. package/dist/{TabBar-BepWbJHz.mjs.map → TabBar-BSl5v5aa.mjs.map} +1 -1
  205. package/dist/{Table-DFiSWroB.d.mts → Table-B2V5tlfA.d.mts} +1 -1
  206. package/dist/{Table-B1gRr2XT.mjs → Table-msXj0glu.mjs} +22 -3
  207. package/dist/Table-msXj0glu.mjs.map +1 -0
  208. package/dist/Table.d.mts +1 -1
  209. package/dist/{TableBody-Di9JYHDN.d.mts → TableBody-SlQe4Jyp.d.mts} +1 -1
  210. package/dist/TableBody.d.mts +1 -1
  211. package/dist/{TableBox-DAQ3Plqx.mjs → TableBox-CF1_Fk0j.mjs} +22 -17
  212. package/dist/TableBox-CF1_Fk0j.mjs.map +1 -0
  213. package/dist/TableBox.d.mts +2 -2
  214. package/dist/{TableBoxCell-D6h1X5ph.d.mts → TableBoxCell-BRhGeUnO.d.mts} +6 -6
  215. package/dist/TableBoxCell.d.mts +1 -1
  216. package/dist/TableBoxField-Cq9M1upV.d.mts +103 -0
  217. package/dist/TableBoxField.d.mts +2 -103
  218. package/dist/{TableBoxRow-C6l6J4mq.d.mts → TableBoxRow-DZzRYoID.d.mts} +3 -3
  219. package/dist/TableBoxRow.d.mts +1 -1
  220. package/dist/{TableBoxRowActions-CsLN1b1J.d.mts → TableBoxRowActions-4-j3flJq.d.mts} +2 -2
  221. package/dist/TableBoxRowActions.d.mts +1 -1
  222. package/dist/{TableCell-WSDXw79Q.d.mts → TableCell-D5Sqb6iO.d.mts} +2 -2
  223. package/dist/TableCell.d.mts +1 -1
  224. package/dist/{TableControls-cswMgBAr.d.mts → TableControls-B-LakH-8.d.mts} +4 -3
  225. package/dist/{TableControls-BxuPCUQS.mjs → TableControls-CqW_nyBY.mjs} +286 -78
  226. package/dist/TableControls-CqW_nyBY.mjs.map +1 -0
  227. package/dist/TableControls.d.mts +1 -1
  228. package/dist/{TableControlsContext-Cbh8wear.d.mts → TableControlsContext-Dh1YVmBM.d.mts} +2 -2
  229. package/dist/TableControlsContext.d.mts +1 -1
  230. package/dist/{TableHead-CkL1fEg2.d.mts → TableHead-BCrVa0BY.d.mts} +1 -1
  231. package/dist/TableHead.d.mts +1 -1
  232. package/dist/{TableHeaderCell-K9Ry6YqO.d.mts → TableHeaderCell-CcEkDozs.d.mts} +1 -1
  233. package/dist/TableHeaderCell.d.mts +1 -1
  234. package/dist/{TableLayout-CYRGIFEl.d.mts → TableLayout-Bhj1QBBz.d.mts} +1 -1
  235. package/dist/TableLayout.d.mts +1 -1
  236. package/dist/{TableRow-DMHlo1eg.d.mts → TableRow-Cy1y7b9S.d.mts} +2 -2
  237. package/dist/TableRow.d.mts +1 -1
  238. package/dist/TableTH.d.mts +1 -1
  239. package/dist/{TableViewConfigurationDropdown-BRbOcVNc.d.mts → TableViewConfigurationDropdown-BzygLtGm.d.mts} +2 -2
  240. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  241. package/dist/{TechnicalSticker-_LtE-PRY.mjs → TechnicalSticker-B6T7cHHc.mjs} +2 -2
  242. package/dist/{TechnicalSticker-_LtE-PRY.mjs.map → TechnicalSticker-B6T7cHHc.mjs.map} +1 -1
  243. package/dist/{Text-B69gp3X_.d.mts → Text-BVGJ-Nlw.d.mts} +3 -3
  244. package/dist/Text.d.mts +1 -1
  245. package/dist/{TextArea-Cjsdl07-.d.mts → TextArea-Bzj593VO.d.mts} +2 -2
  246. package/dist/{TextArea-CcxltuBh.mjs → TextArea-C1CmFRiz.mjs} +2 -2
  247. package/dist/{TextArea-CcxltuBh.mjs.map → TextArea-C1CmFRiz.mjs.map} +1 -1
  248. package/dist/TextArea.d.mts +1 -1
  249. package/dist/{TextUnderlineTooltip-DDzKLCeX.d.mts → TextUnderlineTooltip-CgFmtqF_.d.mts} +2 -2
  250. package/dist/TextUnderlineTooltip.d.mts +1 -1
  251. package/dist/Tile.d.mts +1 -1
  252. package/dist/Toast.d.mts +1 -1
  253. package/dist/{Toggle-DWbJOwf3.mjs → Toggle-CntyMUPJ.mjs} +9 -4
  254. package/dist/Toggle-CntyMUPJ.mjs.map +1 -0
  255. package/dist/{Toggle-B5sSdb_q.d.mts → Toggle-bSu1xAaq.d.mts} +1 -1
  256. package/dist/Toggle.d.mts +1 -1
  257. package/dist/{Tooltip-x1pFf-Mj.d.mts → Tooltip-Duw4Fz1t.d.mts} +2 -2
  258. package/dist/Tooltip.d.mts +1 -1
  259. package/dist/{TruncatedText-BE8FuEQm.d.mts → TruncatedText-CbTpX_R1.d.mts} +1 -1
  260. package/dist/VersionHistory.d.mts +23 -0
  261. package/dist/VersionHistoryItem-D05QYej7.d.mts +54 -0
  262. package/dist/VersionHistoryItem.d.mts +2 -0
  263. package/dist/WizardModal.d.mts +3 -3
  264. package/dist/{accordionTitleTypography-BYhjSN9t.d.mts → accordionTitleTypography-Leehcmb3.d.mts} +2 -2
  265. package/dist/accordionTitleTypography.d.mts +1 -1
  266. package/dist/assertNever.d.mts +5 -0
  267. package/dist/chainTypes-D8SGRGba.d.mts +17 -0
  268. package/dist/{codec-BcgsGCHE.d.mts → codec-Vsztf4fe.d.mts} +2 -2
  269. package/dist/codec.d.mts +1 -1
  270. package/dist/{color-LH7zKfKo.d.mts → color-CrlF3pba.d.mts} +9 -4
  271. package/dist/components/Accordion/index.d.mts +1 -1
  272. package/dist/components/Accordion/index.mjs +1 -1
  273. package/dist/components/Attribute/index.mjs +2 -2
  274. package/dist/components/Badge/index.mjs +1 -1
  275. package/dist/components/Banner/index.mjs +1 -1
  276. package/dist/components/BottomPanel/index.mjs +5 -3
  277. package/dist/components/BottomPanel/index.mjs.map +1 -1
  278. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  279. package/dist/components/Breadcrumbs/index.mjs +1 -1
  280. package/dist/components/Button/index.d.mts +2 -2
  281. package/dist/components/Button/index.mjs +1 -1
  282. package/dist/components/ButtonGroup/index.mjs +2 -2
  283. package/dist/components/Card/index.d.mts +2 -2
  284. package/dist/components/CardV2/index.d.mts +1 -1
  285. package/dist/components/CardV2/index.mjs +1 -1
  286. package/dist/components/Checkbox/index.d.mts +1 -1
  287. package/dist/components/Checkbox/index.mjs +1 -1
  288. package/dist/components/CodeHighlight/index.mjs +3 -1
  289. package/dist/components/CodeHighlight/index.mjs.map +1 -1
  290. package/dist/components/Combobox/index.d.mts +2 -2
  291. package/dist/components/Combobox/index.mjs +1 -1
  292. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  293. package/dist/components/DataTable/TableControls/index.d.mts +19 -19
  294. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  295. package/dist/components/DataTable/index.mjs +27 -16
  296. package/dist/components/DataTable/index.mjs.map +1 -1
  297. package/dist/components/DataTable/types.d.mts +2 -2
  298. package/dist/components/DatePicker/index.d.mts +5 -5
  299. package/dist/components/DatePicker/index.mjs +1 -1
  300. package/dist/components/DropdownButton/index.mjs +1 -1
  301. package/dist/components/DropdownMenu/index.d.mts +1 -1
  302. package/dist/components/DropdownMenu/index.mjs +1 -1
  303. package/dist/components/FloatingPanel/index.mjs +10 -7
  304. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  305. package/dist/components/FormControl/index.d.mts +2 -2
  306. package/dist/components/FormControl/index.mjs +2 -2
  307. package/dist/components/FormField/index.d.mts +6 -6
  308. package/dist/components/FormField/index.mjs +1 -1
  309. package/dist/components/Grid/index.mjs +1 -1
  310. package/dist/components/HoverCopyableField/index.mjs +1 -1
  311. package/dist/components/ImageTile/index.mjs +13 -9
  312. package/dist/components/ImageTile/index.mjs.map +1 -1
  313. package/dist/components/Input/index.d.mts +1 -1
  314. package/dist/components/Input/index.mjs +1 -1
  315. package/dist/components/Link/index.mjs +1 -78
  316. package/dist/components/ListBox/index.d.mts +3 -3
  317. package/dist/components/ListBox/index.mjs +1 -1
  318. package/dist/components/LoadingShimmer/index.mjs +1 -1
  319. package/dist/components/MaskedInput/index.mjs +1 -1
  320. package/dist/components/Menu/index.d.mts +1 -1
  321. package/dist/components/Menu/index.mjs +1 -1
  322. package/dist/components/Modal/index.d.mts +1 -1
  323. package/dist/components/Modal/index.mjs +1 -1
  324. package/dist/components/PageHeader/index.mjs +1 -1
  325. package/dist/components/Pagination/index.d.mts +3 -3
  326. package/dist/components/Pagination/index.mjs +1 -1
  327. package/dist/components/Pii/index.mjs +1 -1
  328. package/dist/components/Popover/index.mjs +1 -1
  329. package/dist/components/ProgressBar/index.mjs +1 -2
  330. package/dist/components/ProgressBar/index.mjs.map +1 -1
  331. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  332. package/dist/components/ProgressIndicator/index.mjs +1 -1
  333. package/dist/components/Radio/index.mjs +1 -1
  334. package/dist/components/RadioGroup/index.d.mts +1 -1
  335. package/dist/components/RadioGroup/index.mjs +1 -1
  336. package/dist/components/RightPanel/index.mjs +10 -7
  337. package/dist/components/RightPanel/index.mjs.map +1 -1
  338. package/dist/components/SegmentedControl/index.d.mts +1 -1
  339. package/dist/components/SegmentedControl/index.mjs +1 -1
  340. package/dist/components/Select/index.d.mts +1 -1
  341. package/dist/components/Select/index.mjs +1 -1
  342. package/dist/components/Slider/index.mjs +1 -1
  343. package/dist/components/Slider/index.mjs.map +1 -1
  344. package/dist/components/SmartTextInput/index.d.mts +5 -0
  345. package/dist/components/SmartTextInput/index.mjs +2035 -0
  346. package/dist/components/SmartTextInput/index.mjs.map +1 -0
  347. package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
  348. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +2 -105
  349. package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +1 -1
  350. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +3 -72
  351. package/dist/components/Spinner/index.mjs +1 -1
  352. package/dist/components/Stack/index.d.mts +1 -1
  353. package/dist/components/Stack/index.mjs +1 -1
  354. package/dist/components/StatusIndicator/index.mjs +1 -314
  355. package/dist/components/Sticker/index.d.mts +1 -1
  356. package/dist/components/Sticker/index.mjs +1 -1
  357. package/dist/components/TabBar/index.mjs +1 -1
  358. package/dist/components/Table/index.d.mts +8 -8
  359. package/dist/components/Table/index.mjs +1 -1
  360. package/dist/components/TableBox/index.d.mts +2 -2
  361. package/dist/components/TableBox/index.mjs +1 -1
  362. package/dist/components/TechnicalSticker/index.mjs +1 -1
  363. package/dist/components/Text/index.d.mts +1 -1
  364. package/dist/components/TextArea/index.d.mts +1 -1
  365. package/dist/components/TextArea/index.mjs +1 -1
  366. package/dist/components/Tile/index.mjs +2 -2
  367. package/dist/components/Toast/index.mjs +2 -2
  368. package/dist/components/Toast/index.mjs.map +1 -1
  369. package/dist/components/Toggle/index.d.mts +1 -1
  370. package/dist/components/Toggle/index.mjs +1 -1
  371. package/dist/components/Tooltip/index.d.mts +3 -3
  372. package/dist/components/VersionHistory/index.d.mts +3 -0
  373. package/dist/components/VersionHistory/index.mjs +389 -0
  374. package/dist/components/VersionHistory/index.mjs.map +1 -0
  375. package/dist/compound-expression.d.mts +1 -1
  376. package/dist/{constants-BpwnTzcv.d.mts → constants-CQUCM6__.d.mts} +1 -1
  377. package/dist/constants.d.mts +1 -1
  378. package/dist/{createPath-Bst12Uxr.d.mts → createPath-Bq7wYGt_.d.mts} +2 -2
  379. package/dist/createPath.d.mts +1 -1
  380. package/dist/{date-filter-CZeChs9T.mjs → date-filter-D6IfCkwp.mjs} +1 -1
  381. package/dist/{date-filter-CZeChs9T.mjs.map → date-filter-D6IfCkwp.mjs.map} +1 -1
  382. package/dist/{date-range-rule-value-C4ir2Y8W.d.mts → date-range-rule-value-DVhMQP4-.d.mts} +2 -2
  383. package/dist/date-range-rule-value.d.mts +1 -1
  384. package/dist/{date-rule-intent-gKmuxMVA.d.mts → date-rule-intent-BwQ6OTVD.d.mts} +3 -3
  385. package/dist/date-rule-intent.d.mts +1 -1
  386. package/dist/display.d.mts +2 -2
  387. package/dist/fieldPickerOptions.d.mts +2 -2
  388. package/dist/{filter-size-context-BOpH6pBm.d.mts → filter-size-context-BjTzcZwZ.d.mts} +2 -2
  389. package/dist/filter-size-context.d.mts +1 -1
  390. package/dist/format-date-value.d.mts +5 -0
  391. package/dist/helpers.d.mts +1 -1
  392. package/dist/{index-C2-PBfN3.d.mts → index-BFIFjR7Q.d.mts} +2 -2
  393. package/dist/{index-BXdrzR0c.d.mts → index-BhDvrF4l.d.mts} +4 -4
  394. package/dist/{index-c0aXmZV9.d.mts → index-C-xpEL8b.d.mts} +2 -2
  395. package/dist/index-irNqT1qQ2.d.mts +1 -0
  396. package/dist/index.d.mts +1 -1
  397. package/dist/index2.d.mts +1 -1
  398. package/dist/index3.d.mts +3 -3
  399. package/dist/index4.d.mts +1 -1
  400. package/dist/index5.d.mts +14 -14
  401. package/dist/{input-DVJhMlxU.d.mts → input-DpHBIUpP.d.mts} +3 -3
  402. package/dist/inputFields-BVDurw3L.d.mts +71 -0
  403. package/dist/inputFields.d.mts +2 -71
  404. package/dist/{intersperse-Bxcrxj2Q.mjs → intersperse-bvY2gibK.mjs} +1 -1
  405. package/dist/{intersperse-Bxcrxj2Q.mjs.map → intersperse-bvY2gibK.mjs.map} +1 -1
  406. package/dist/{jsonSchema-DmdZYC4a.d.mts → jsonSchema-Bl-qzgrr.d.mts} +34 -2
  407. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  408. package/dist/lib/PDSProvider.d.mts +2 -2
  409. package/dist/lib/TruncatedText.d.mts +1 -1
  410. package/dist/lib/TruncatedText.mjs +1 -1
  411. package/dist/lib/TruncatedText.mjs.map +1 -1
  412. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  413. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  414. package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
  415. package/dist/lib/chainTypes.d.mts +2 -0
  416. package/dist/lib/chainTypes.mjs +0 -0
  417. package/dist/lib/color.d.mts +2 -2
  418. package/dist/lib/color.mjs +18 -11
  419. package/dist/lib/color.mjs.map +1 -1
  420. package/dist/lib/customFunctionSchema.d.mts +49 -0
  421. package/dist/lib/customFunctionSchema.mjs +299 -0
  422. package/dist/lib/customFunctionSchema.mjs.map +1 -0
  423. package/dist/lib/date-filter/index.d.mts +2 -2
  424. package/dist/lib/date-filter/index.mjs +1 -1
  425. package/dist/lib/jsonSchema.d.mts +2 -2
  426. package/dist/lib/jsonSchema.mjs +26 -1
  427. package/dist/lib/jsonSchema.mjs.map +1 -1
  428. package/dist/lib/jsonSchemaType.d.mts +7 -0
  429. package/dist/lib/jsonSchemaType.mjs +31 -0
  430. package/dist/lib/jsonSchemaType.mjs.map +1 -0
  431. package/dist/lib/letPointerDownReachDocument.d.mts +22 -0
  432. package/dist/lib/letPointerDownReachDocument.mjs +25 -0
  433. package/dist/lib/letPointerDownReachDocument.mjs.map +1 -0
  434. package/dist/lib/message.d.mts +1 -1
  435. package/dist/lib/methodChain.d.mts +3 -66
  436. package/dist/lib/methodChain.mjs +1 -238
  437. package/dist/lib/methodChainNormalize.d.mts +2 -2
  438. package/dist/lib/methodChainTypes.d.mts +2 -23
  439. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  440. package/dist/lib/platformObject.d.mts +38 -0
  441. package/dist/lib/platformObject.mjs +79 -0
  442. package/dist/lib/platformObject.mjs.map +1 -0
  443. package/dist/lib/pseudoClass.d.mts +1 -1
  444. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  445. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  446. package/dist/lib/router/index.d.mts +5 -5
  447. package/dist/lib/schemaOptions.d.mts +2 -0
  448. package/dist/lib/schemaOptions.mjs +481 -0
  449. package/dist/lib/schemaOptions.mjs.map +1 -0
  450. package/dist/lib/semanticColor.d.mts +1 -1
  451. package/dist/lib/snakifyPath.d.mts +5 -0
  452. package/dist/lib/snakifyPath.mjs +11 -0
  453. package/dist/lib/snakifyPath.mjs.map +1 -0
  454. package/dist/lib/useChain.d.mts +2 -0
  455. package/dist/lib/useChain.mjs +2 -0
  456. package/dist/listbox-options-BjOkovND.d.mts +38 -0
  457. package/dist/listbox-options.d.mts +2 -0
  458. package/dist/{message-CKSLIKF0.d.mts → message-w_1-kTDE.d.mts} +1 -1
  459. package/dist/methodChain-B5vZEOff.d.mts +66 -0
  460. package/dist/methodChain-L_h8Z8Bx.mjs +241 -0
  461. package/dist/methodChain-L_h8Z8Bx.mjs.map +1 -0
  462. package/dist/methodChainTypes-BVkTI8MX.d.mts +23 -0
  463. package/dist/mixins/focus.d.mts +1 -1
  464. package/dist/mixins/hoverable.d.mts +2 -2
  465. package/dist/mixins/input.d.mts +1 -1
  466. package/dist/mixins/input.mjs +6 -14
  467. package/dist/mixins/input.mjs.map +1 -1
  468. package/dist/mixins/menuItem.d.mts +2 -2
  469. package/dist/mixins/scrollbar.d.mts +10 -0
  470. package/dist/mixins/scrollbar.mjs +31 -0
  471. package/dist/mixins/scrollbar.mjs.map +1 -0
  472. package/dist/mixins/text.d.mts +1 -1
  473. package/dist/{operators-1_jTgYRX.d.mts → operators-BG82-g3M.d.mts} +9 -3
  474. package/dist/operators.d.mts +2 -2
  475. package/dist/{palette-CMOEyNPH.d.mts → palette-C8tyI81D.d.mts} +3 -3
  476. package/dist/palette.d.mts +1 -1
  477. package/dist/{parser-Kxos6siN.mjs → parser-BeTiVjRs.mjs} +3 -2
  478. package/dist/{parser-Kxos6siN.mjs.map → parser-BeTiVjRs.mjs.map} +1 -1
  479. package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
  480. package/dist/patterns/PageLayout/index.mjs +2 -2
  481. package/dist/{components → patterns}/WizardModal/index.mjs +5 -5
  482. package/dist/patterns/WizardModal/index.mjs.map +1 -0
  483. package/dist/reactRouterFallback.d.mts +1 -1
  484. package/dist/relative-date-label.d.mts +1 -1
  485. package/dist/safe-parse.d.mts +23 -0
  486. package/dist/schemaOptions-DGca6x7E.d.mts +173 -0
  487. package/dist/{semantic-BXwNUd4a.d.mts → semantic-D1661f_6.d.mts} +2 -2
  488. package/dist/{semanticColor-Cru2gSys.d.mts → semanticColor-Bg0H3RUL.d.mts} +3 -3
  489. package/dist/{text-CxIup7HJ.d.mts → text-Iw9DKpbZ.d.mts} +1 -1
  490. package/dist/{theme-CW6qlONZ.d.mts → theme-BB1B6Wkz.d.mts} +3 -3
  491. package/dist/theme.d.mts +1 -1
  492. package/dist/time-range.d.mts +7 -0
  493. package/dist/tone.d.mts +3 -3
  494. package/dist/tree.d.mts +9 -0
  495. package/dist/{types-3iEDsymE.d.mts → types-B0ilOIfE.d.mts} +2 -2
  496. package/dist/types-BYRTxB0a.d.mts +72 -0
  497. package/dist/{types-ChkiGhjQ.d.mts → types-CI2bPi02.d.mts} +1 -1
  498. package/dist/types-Cs6CdZCO.d.mts +83 -0
  499. package/dist/{types-B-stjYNc.d.mts → types-D1DijcJv.d.mts} +1 -1
  500. package/dist/{types-YojUycQK.d.mts → types-DZTbvdpO.d.mts} +1 -1
  501. package/dist/{types-g-aqbnek.d.mts → types-DdTu747j.d.mts} +1 -1
  502. package/dist/{types-BEjWTkZV.d.mts → types-Dy3lZv9z.d.mts} +7 -2
  503. package/dist/types-M-rsm1Km.d.mts +105 -0
  504. package/dist/types.d.mts +1 -1
  505. package/dist/types2.d.mts +1 -1
  506. package/dist/types3.d.mts +1 -1
  507. package/dist/types4.d.mts +1 -1
  508. package/dist/types5.d.mts +1 -1
  509. package/dist/types6.d.mts +1 -1
  510. package/dist/types7.d.mts +2 -0
  511. package/dist/{url-state-CHK2N2fA.d.mts → url-state-DWA7UFxS.d.mts} +2 -2
  512. package/dist/url-state.d.mts +1 -1
  513. package/dist/useChain-CEsXE2Bx.d.mts +77 -0
  514. package/dist/useChain-CKqYGdx4.mjs +4589 -0
  515. package/dist/useChain-CKqYGdx4.mjs.map +1 -0
  516. package/dist/useChainAtCursor.d.mts +87 -0
  517. package/dist/useCodeChainFunctionPanel.d.mts +26 -0
  518. package/dist/useComboboxFooterAction.d.mts +1 -1
  519. package/dist/{useFilterStateV2-B26e5iUx.d.mts → useFilterStateV2-DoJ9lyJx.d.mts} +3 -3
  520. package/dist/useFilterStateV2.d.mts +1 -1
  521. package/dist/{useFormField-BzhMbl5P.mjs → useFormField-BAmkdxtA.mjs} +2 -2
  522. package/dist/{useFormField-BzhMbl5P.mjs.map → useFormField-BAmkdxtA.mjs.map} +1 -1
  523. package/dist/{useFormField-DPFClB5h.d.mts → useFormField-BtnAYcHV.d.mts} +2 -2
  524. package/dist/useFormField.d.mts +1 -1
  525. package/dist/{useFormGroup-CH3kiXoa.mjs → useFormGroup-BZayb9fZ.mjs} +1 -1
  526. package/dist/{useFormGroup-CH3kiXoa.mjs.map → useFormGroup-BZayb9fZ.mjs.map} +1 -1
  527. package/dist/{useLocationPathname-CnRd_Rzn.d.mts → useLocationPathname-pLyLOrAi.d.mts} +1 -1
  528. package/dist/useLocationPathname.d.mts +1 -1
  529. package/dist/{useTableBoxDragAndDrop-DWlG5vhl.d.mts → useTableBoxDragAndDrop-wjc_LCpC.d.mts} +1 -1
  530. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  531. package/dist/useTruncation.d.mts +1 -1
  532. package/dist/{utilities-BcGuP8Fd.d.mts → utilities-DL18UdPs.d.mts} +1 -1
  533. package/dist/utilities.d.mts +1 -1
  534. package/dist/utils/storybook.mjs +1 -1
  535. package/dist/utils/testing.d.mts +1 -1
  536. package/dist/utils.d.mts +1 -1
  537. package/dist/utils4.d.mts +111 -0
  538. package/dist/{validation-B-Om4ANo.d.mts → validation-PeVTwtd-.d.mts} +3 -3
  539. package/dist/validation.d.mts +1 -1
  540. package/dist/validation2.d.mts +64 -0
  541. package/dist/{value-control-resolver-BiyhB8zt.d.mts → value-control-resolver-Cx_wXQFv.d.mts} +3 -2
  542. package/dist/value-control-resolver.d.mts +1 -1
  543. package/dist/variables/effect.d.mts +1 -1
  544. package/dist/variables/semantic.d.mts +1 -1
  545. package/dist/variables/semantic.mjs +15 -18
  546. package/dist/variables/semantic.mjs.map +1 -1
  547. package/llms.txt +1 -1
  548. package/package.json +32 -6
  549. package/skills/ui-authoring/COMPONENTS.md +1 -1
  550. package/skills/ui-authoring/PATTERNS.md +1 -0
  551. package/dist/Combobox-C2b9u955.mjs.map +0 -1
  552. package/dist/DatePicker-IgiUI3Wj.mjs.map +0 -1
  553. package/dist/DropdownMenu-CuKSNxc9.mjs.map +0 -1
  554. package/dist/Input-C_3QwAAt.mjs.map +0 -1
  555. package/dist/ListBox-D4j4LCT3.mjs.map +0 -1
  556. package/dist/LoadingShimmer-Dizk2sZu.mjs.map +0 -1
  557. package/dist/Modal-BN0K8QXi.mjs.map +0 -1
  558. package/dist/Pagination-CPd4mSnw.mjs.map +0 -1
  559. package/dist/Popover-opVa9Xhc.mjs.map +0 -1
  560. package/dist/ProgressIndicator-3A4Aqci6.mjs.map +0 -1
  561. package/dist/SegmentedControl-BcwfLuHA.mjs.map +0 -1
  562. package/dist/Select-BstCz8P1.mjs.map +0 -1
  563. package/dist/Sticker-C3Eb13OQ.mjs.map +0 -1
  564. package/dist/Table-B1gRr2XT.mjs.map +0 -1
  565. package/dist/TableBox-DAQ3Plqx.mjs.map +0 -1
  566. package/dist/TableControls-BxuPCUQS.mjs.map +0 -1
  567. package/dist/Toggle-DWbJOwf3.mjs.map +0 -1
  568. package/dist/components/Link/index.mjs.map +0 -1
  569. package/dist/components/StatusIndicator/index.mjs.map +0 -1
  570. package/dist/components/WizardModal/index.mjs.map +0 -1
  571. package/dist/lib/methodChain.mjs.map +0 -1
  572. /package/dist/{index--p6oQT9I.d.mts → index-7in8TPrM.d.mts} +0 -0
  573. /package/dist/{index-BCh-G39Y2.d.mts → index-BCq_fh4A2.d.mts} +0 -0
  574. /package/dist/{index-BO_854F2.d.mts → index-BINnViIh.d.mts} +0 -0
  575. /package/dist/{index-BwFl_eS0.d.mts → index-BjgW3E7y.d.mts} +0 -0
  576. /package/dist/{index-C-lwXyQ6.d.mts → index-BwXb5CoQ.d.mts} +0 -0
  577. /package/dist/{index-C1o2TFfS.d.mts → index-C3usUse7.d.mts} +0 -0
  578. /package/dist/{index-C3kE54DD.d.mts → index-C9achTF6.d.mts} +0 -0
  579. /package/dist/{index-CREkvfw9.d.mts → index-CCKHlTA4.d.mts} +0 -0
  580. /package/dist/{index-CRo77wc3.d.mts → index-CFuHCx9T.d.mts} +0 -0
  581. /package/dist/{index-CfCYi7PF.d.mts → index-CP2eJYlK.d.mts} +0 -0
  582. /package/dist/{index-CoUVmp_Q.d.mts → index-CWB6exYm.d.mts} +0 -0
  583. /package/dist/{index-DCTy4zg0.d.mts → index-CryTAIZM.d.mts} +0 -0
  584. /package/dist/{index-DWIh4oP5.d.mts → index-CuheJfs-.d.mts} +0 -0
  585. /package/dist/{index-De7MV8-j.d.mts → index-D-9tW2r5.d.mts} +0 -0
  586. /package/dist/{index-DgJfEygr.d.mts → index-D9XihFV1.d.mts} +0 -0
  587. /package/dist/{index-Es5nKSSL.d.mts → index-Deol7ZWO.d.mts} +0 -0
  588. /package/dist/{index-Qwqzz3XM.d.mts → index-DjOaHFU3.d.mts} +0 -0
  589. /package/dist/{index-Wc1llEvP.d.mts → index-Iujpc9_6.d.mts} +0 -0
  590. /package/dist/{index-bHnO4ZKt.d.mts → index-e6k85DKM.d.mts} +0 -0
  591. /package/dist/{index-dhjtMp5F.d.mts → index-gpCH5158.d.mts} +0 -0
  592. /package/dist/{components → patterns}/WizardModal/index.d.mts +0 -0
@@ -0,0 +1,389 @@
1
+ import { a as styled } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
+ import { semanticColor } from "../../lib/semanticColor.mjs";
3
+ import { i as Paragraph } from "../../Text-BdluS7Fy.mjs";
4
+ import { focusOutline } from "../../mixins/focus.mjs";
5
+ import { semanticScrollbar } from "../../mixins/scrollbar.mjs";
6
+ import { n as Stack, t as HStack } from "../../Stack-CEPzs4Pb.mjs";
7
+ import { n as Button, t as IconButton } from "../../IconButton-BHFCjvzs.mjs";
8
+ import { n as DropdownMenu_default } from "../../DropdownMenu-j8NWbAvM.mjs";
9
+ import { t as Spinner } from "../../Spinner-CarSRiBF.mjs";
10
+ import { i as Modal_default } from "../../Modal-DHLPK65-.mjs";
11
+ import { t as TextAreaWithStyle } from "../../TextArea-C1CmFRiz.mjs";
12
+ import { n as StatusIndicator } from "../../StatusIndicator-bEnMWV_S.mjs";
13
+ import { Color, Spacing } from "@persona/design-tokens";
14
+ import { useCallback, useMemo, useState } from "react";
15
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
16
+ import { MoreIcon, XIcon } from "@persona/icons";
17
+ //#region components/VersionHistory/VersionHistoryItem.tsx
18
+ const DEFAULT_COMPARE_LABEL = "Compare to latest version";
19
+ const DEFAULT_RESTORE_LABEL = "Restore";
20
+ const DEFAULT_DISCARD_LABEL = "Discard";
21
+ const DEFAULT_EDIT_DESCRIPTION_LABEL = "Edit description";
22
+ const hasVersionHistoryItemActions = (item) => item.onCompare != null || item.onRestore != null || item.onDiscard != null || item.onEditDescription != null;
23
+ /** Timeline stroke; 3px is the rail weight from the source panel. */
24
+ const RAIL_THICKNESS = "3px";
25
+ const ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;
26
+ const Row = styled.div`
27
+ display: grid;
28
+ grid-template-columns: ${({ $withActionSlot }) => $withActionSlot ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}` : `${Spacing[7]} minmax(0, 1fr)`};
29
+ cursor: pointer;
30
+ background-color: ${({ theme }) => semanticColor(theme, "SurfacePrimary", Color.BackgroundPrimary)};
31
+ ${focusOutline}
32
+
33
+ &:hover:not([aria-current='true']) {
34
+ background-color: ${({ theme }) => semanticColor(theme, "SurfaceHover", Color.BackgroundSecondary)};
35
+ }
36
+
37
+ &[aria-current='true'] {
38
+ background-color: ${({ theme }) => semanticColor(theme, "SurfaceAccent", theme.color.background.highlight)};
39
+ }
40
+ `;
41
+ const RailColumn = styled.div`
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: center;
45
+ `;
46
+ const RailSegment = styled.div`
47
+ width: 0;
48
+ border-left: ${RAIL_THICKNESS} solid
49
+ ${({ theme, $selected }) => $selected ? semanticColor(theme, "FgAccent", Color.TextActive) : semanticColor(theme, "BorderDefault", Color.BorderDivider)};
50
+ flex: 1;
51
+ `;
52
+ const RailStart = styled.div`
53
+ height: ${Spacing[5]};
54
+ flex-shrink: 0;
55
+ `;
56
+ const TimelineDot = styled.span`
57
+ width: ${Spacing[2]};
58
+ height: ${Spacing[2]};
59
+ border-radius: 50%;
60
+ flex-shrink: 0;
61
+ background-color: ${({ theme, $selected }) => $selected ? semanticColor(theme, "FgAccent", Color.TextActive) : semanticColor(theme, "BorderDefault", Color.BorderDivider)};
62
+ `;
63
+ const BodyColumn = styled.div`
64
+ min-width: 0;
65
+ padding: ${Spacing[4]} 0;
66
+ `;
67
+ const ActionsColumn = styled.div`
68
+ display: flex;
69
+ flex-direction: column;
70
+ align-items: flex-end;
71
+ width: ${ACTION_SLOT_WIDTH};
72
+ padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};
73
+ box-sizing: border-box;
74
+
75
+ > * {
76
+ visibility: ${({ $revealed }) => $revealed ? "visible" : "hidden"};
77
+ }
78
+
79
+ ${Row}:hover &,
80
+ ${Row}:focus-within & {
81
+ > * {
82
+ visibility: visible;
83
+ }
84
+ }
85
+ `;
86
+ const StatusChip = ({ status }) => {
87
+ const chip = useMemo(() => {
88
+ switch (status) {
89
+ case "live": return {
90
+ label: "Deployed",
91
+ type: "success"
92
+ };
93
+ case "unsaved": return {
94
+ label: "Unsaved",
95
+ type: "critical"
96
+ };
97
+ case "saved": return {
98
+ label: "Saved",
99
+ type: "feature"
100
+ };
101
+ default: return null;
102
+ }
103
+ }, [status]);
104
+ if (chip == null) return null;
105
+ return /* @__PURE__ */ jsx(StatusIndicator, {
106
+ type: chip.type,
107
+ showIcon: false,
108
+ children: chip.label
109
+ });
110
+ };
111
+ const VersionHistoryItem = ({ id, title, status, timestamp, lastUpdater, description, compareLabel = DEFAULT_COMPARE_LABEL, restoreLabel = DEFAULT_RESTORE_LABEL, discardLabel = DEFAULT_DISCARD_LABEL, editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL, onRestore, onDiscard, onCompare, onEditDescription, isFirst, isLast, isSelected, isLoadingVersion, onSelect, showActionSlot }) => {
112
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
113
+ const [isDiscardOpen, setIsDiscardOpen] = useState(false);
114
+ const [isDiscarding, setIsDiscarding] = useState(false);
115
+ const [isEditOpen, setIsEditOpen] = useState(false);
116
+ const [draftDescription, setDraftDescription] = useState(description ?? "");
117
+ const menuItems = [
118
+ onCompare != null && {
119
+ id: `${id}__compare`,
120
+ label: compareLabel,
121
+ variant: "basic",
122
+ onClick: onCompare
123
+ },
124
+ onRestore != null && {
125
+ id: `${id}__restore`,
126
+ label: restoreLabel,
127
+ variant: "basic",
128
+ onClick: onRestore
129
+ },
130
+ onDiscard != null && {
131
+ id: `${id}__discard`,
132
+ label: discardLabel,
133
+ variant: "basic",
134
+ onClick: () => setIsDiscardOpen(true)
135
+ },
136
+ onEditDescription != null && {
137
+ id: `${id}__edit-description`,
138
+ label: editDescriptionLabel,
139
+ variant: "basic",
140
+ onClick: () => {
141
+ setDraftDescription(description ?? "");
142
+ setIsEditOpen(true);
143
+ }
144
+ }
145
+ ].filter((item) => Boolean(item));
146
+ const stopRowClick = (event) => {
147
+ event.stopPropagation();
148
+ };
149
+ const confirmDiscard = async () => {
150
+ setIsDiscarding(true);
151
+ try {
152
+ await onDiscard?.();
153
+ setIsDiscardOpen(false);
154
+ } catch {} finally {
155
+ setIsDiscarding(false);
156
+ }
157
+ };
158
+ const confirmEdit = () => {
159
+ onEditDescription?.(draftDescription);
160
+ setIsEditOpen(false);
161
+ };
162
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
163
+ /* @__PURE__ */ jsx(Modal_default, {
164
+ open: isDiscardOpen,
165
+ onOpenChange: setIsDiscardOpen,
166
+ isKeyboardDismissDisabled: isDiscarding,
167
+ contentProps: isDiscarding ? { showCloseButton: false } : void 0,
168
+ title: "Discard draft?",
169
+ footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
170
+ variant: "basic",
171
+ width: "auto",
172
+ disabled: isDiscarding,
173
+ onClick: () => setIsDiscardOpen(false),
174
+ children: "Cancel"
175
+ }), /* @__PURE__ */ jsx(Button, {
176
+ variant: "danger",
177
+ width: "auto",
178
+ isPending: isDiscarding,
179
+ onClick: confirmDiscard,
180
+ children: "Discard"
181
+ })] }),
182
+ children: /* @__PURE__ */ jsx(Paragraph, {
183
+ color: "primary",
184
+ children: "All unpublished changes in this draft will be discarded. This action is permanent and cannot be undone."
185
+ })
186
+ }),
187
+ /* @__PURE__ */ jsx(Modal_default, {
188
+ open: isEditOpen,
189
+ onOpenChange: (open) => {
190
+ setIsEditOpen(open);
191
+ if (open) setDraftDescription(description ?? "");
192
+ },
193
+ title: "Edit description",
194
+ footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
195
+ variant: "basic",
196
+ width: "auto",
197
+ onClick: () => setIsEditOpen(false),
198
+ children: "Cancel"
199
+ }), /* @__PURE__ */ jsx(Button, {
200
+ variant: "primary",
201
+ width: "auto",
202
+ onClick: confirmEdit,
203
+ children: "Confirm"
204
+ })] }),
205
+ children: /* @__PURE__ */ jsx(TextAreaWithStyle, {
206
+ autoFocus: true,
207
+ value: draftDescription,
208
+ onChange: (event) => setDraftDescription(event.target.value),
209
+ placeholder: "No description"
210
+ })
211
+ }),
212
+ /* @__PURE__ */ jsxs(Row, {
213
+ role: "listitem",
214
+ $withActionSlot: showActionSlot,
215
+ "aria-current": isSelected || void 0,
216
+ "aria-busy": isLoadingVersion || void 0,
217
+ tabIndex: 0,
218
+ onClick: () => {
219
+ if (!isSelected) onSelect();
220
+ },
221
+ onKeyDown: (event) => {
222
+ if (isSelected) return;
223
+ if (event.key === "Enter" || event.key === " ") {
224
+ event.preventDefault();
225
+ onSelect();
226
+ }
227
+ },
228
+ children: [
229
+ /* @__PURE__ */ jsxs(RailColumn, { children: [
230
+ isFirst ? /* @__PURE__ */ jsx(RailStart, {}) : /* @__PURE__ */ jsx(RailSegment, { $selected: isSelected }),
231
+ /* @__PURE__ */ jsx(TimelineDot, { $selected: isSelected }),
232
+ !isLast && /* @__PURE__ */ jsx(RailSegment, { $selected: isSelected })
233
+ ] }),
234
+ /* @__PURE__ */ jsx(BodyColumn, { children: /* @__PURE__ */ jsxs(Stack, {
235
+ spacing: Spacing[1],
236
+ children: [
237
+ /* @__PURE__ */ jsxs(HStack, {
238
+ spacing: Spacing[2],
239
+ align: "center",
240
+ children: [
241
+ /* @__PURE__ */ jsx(Paragraph, {
242
+ color: "primary",
243
+ as: "span",
244
+ children: timestamp
245
+ }),
246
+ /* @__PURE__ */ jsx(StatusChip, { status }),
247
+ isLoadingVersion && !showActionSlot && /* @__PURE__ */ jsx(Spinner, { srText: "Version loading" })
248
+ ]
249
+ }),
250
+ /* @__PURE__ */ jsxs(HStack, {
251
+ spacing: Spacing[1],
252
+ align: "center",
253
+ children: [/* @__PURE__ */ jsx(Paragraph, {
254
+ color: "secondary",
255
+ size: "sm",
256
+ children: title
257
+ }), lastUpdater && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Paragraph, {
258
+ color: "secondary",
259
+ size: "sm",
260
+ children: "·"
261
+ }), /* @__PURE__ */ jsx(Paragraph, {
262
+ color: "secondary",
263
+ size: "sm",
264
+ children: lastUpdater
265
+ })] })]
266
+ }),
267
+ description != null && description !== "" && /* @__PURE__ */ jsx(Paragraph, {
268
+ color: "secondary",
269
+ size: "sm",
270
+ children: description
271
+ })
272
+ ]
273
+ }) }),
274
+ showActionSlot && /* @__PURE__ */ jsx(ActionsColumn, {
275
+ $revealed: isLoadingVersion || isMenuOpen,
276
+ onClick: isLoadingVersion ? void 0 : stopRowClick,
277
+ children: isLoadingVersion ? /* @__PURE__ */ jsx(Spinner, { srText: "Version loading" }) : menuItems.length > 0 && /* @__PURE__ */ jsx(DropdownMenu_default, {
278
+ portal: true,
279
+ onOpenChange: setIsMenuOpen,
280
+ trigger: /* @__PURE__ */ jsx(IconButton, {
281
+ size: "md",
282
+ "aria-label": "More",
283
+ children: /* @__PURE__ */ jsx(MoreIcon, {})
284
+ }),
285
+ children: menuItems.map((item) => /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
286
+ variant: item.variant,
287
+ onClick: (event) => {
288
+ event.preventDefault();
289
+ event.stopPropagation();
290
+ item.onClick?.();
291
+ },
292
+ children: item.label
293
+ }, item.id))
294
+ })
295
+ })
296
+ ]
297
+ })
298
+ ] });
299
+ };
300
+ //#endregion
301
+ //#region components/VersionHistory/VersionHistory.tsx
302
+ const Panel = styled.nav`
303
+ display: flex;
304
+ flex-direction: column;
305
+ flex-shrink: 0;
306
+ width: ${"600px"};
307
+ height: 100%;
308
+ overflow: hidden;
309
+ background-color: ${({ theme }) => semanticColor(theme, "SurfacePrimary", Color.BackgroundPrimary)};
310
+ border-left: 1px solid
311
+ ${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
312
+ `;
313
+ const Header = styled.div`
314
+ flex-shrink: 0;
315
+ padding: ${Spacing[3]} ${Spacing[5]};
316
+ border-bottom: 1px solid
317
+ ${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
318
+ `;
319
+ const List = styled.div`
320
+ flex: 1;
321
+ overflow-x: hidden;
322
+ overflow-y: auto;
323
+ ${semanticScrollbar}
324
+ `;
325
+ const LoadingBody = styled.div`
326
+ display: flex;
327
+ flex: 1;
328
+ align-items: center;
329
+ justify-content: center;
330
+ `;
331
+ const VersionHistory = ({ items, selectedVersionId, onSelectVersion, onClose, loading = false, emptyText = "No versions yet. Save or publish your changes to create one." }) => {
332
+ const [pendingVersionId, setPendingVersionId] = useState(null);
333
+ const selectVersion = useCallback((versionId) => {
334
+ if (pendingVersionId != null) return;
335
+ const result = onSelectVersion(versionId);
336
+ if (result instanceof Promise) {
337
+ setPendingVersionId(versionId);
338
+ const clearPending = () => setPendingVersionId(null);
339
+ result.then(clearPending, clearPending);
340
+ }
341
+ }, [onSelectVersion, pendingVersionId]);
342
+ const showActionSlot = items.some(hasVersionHistoryItemActions);
343
+ return /* @__PURE__ */ jsxs(Panel, {
344
+ "aria-label": "Version History",
345
+ children: [/* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(HStack, {
346
+ justify: "space-between",
347
+ align: "center",
348
+ spacing: Spacing[2],
349
+ children: [/* @__PURE__ */ jsx(Paragraph, {
350
+ as: "h3",
351
+ size: "lg",
352
+ weight: "bold",
353
+ color: "primary",
354
+ children: "Version History"
355
+ }), onClose != null && /* @__PURE__ */ jsx(IconButton, {
356
+ size: "md",
357
+ "aria-label": "Close",
358
+ onClick: onClose,
359
+ children: /* @__PURE__ */ jsx(XIcon, {})
360
+ })]
361
+ }) }), loading ? /* @__PURE__ */ jsx(LoadingBody, { children: /* @__PURE__ */ jsx(Spinner, {
362
+ size: "md",
363
+ srText: "Loading versions..."
364
+ }) }) : items.length === 0 ? /* @__PURE__ */ jsx(Stack, {
365
+ spacing: Spacing[3],
366
+ style: { padding: Spacing[5] },
367
+ children: /* @__PURE__ */ jsx(Paragraph, {
368
+ color: "secondary",
369
+ children: emptyText
370
+ })
371
+ }) : /* @__PURE__ */ jsx(List, {
372
+ role: "list",
373
+ "aria-label": "Version history",
374
+ children: items.map((item, index) => /* @__PURE__ */ jsx(VersionHistoryItem, {
375
+ ...item,
376
+ isFirst: index === 0,
377
+ isLast: index === items.length - 1,
378
+ isSelected: item.id === (pendingVersionId ?? selectedVersionId),
379
+ isLoadingVersion: item.id === pendingVersionId,
380
+ showActionSlot,
381
+ onSelect: () => selectVersion(item.id)
382
+ }, item.id))
383
+ })]
384
+ });
385
+ };
386
+ //#endregion
387
+ export { VersionHistory, VersionHistory as default };
388
+
389
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Modal","TextArea","DropdownMenu"],"sources":["../../../components/VersionHistory/VersionHistoryItem.tsx","../../../components/VersionHistory/VersionHistory.tsx"],"sourcesContent":["import { type MouseEvent, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport Modal from 'design-system/components/Modal';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport StatusIndicator from 'design-system/components/StatusIndicator';\nimport { Paragraph } from 'design-system/components/Text';\nimport TextArea from 'design-system/components/TextArea';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { focusOutline } from 'design-system/mixins/focus';\n\nexport type VersionHistoryStatus = 'live' | 'saved' | 'unsaved' | 'published';\n\nexport type VersionHistoryItemProps = {\n id: string;\n title: string;\n status: VersionHistoryStatus;\n timestamp: string;\n lastUpdater?: string;\n description?: string;\n compareLabel?: string;\n restoreLabel?: string;\n discardLabel?: string;\n editDescriptionLabel?: string;\n onRestore?: () => void;\n onDiscard?: () => void | Promise<void>;\n onCompare?: () => void;\n onEditDescription?: (description: string) => void;\n};\n\nconst DEFAULT_COMPARE_LABEL = 'Compare to latest version';\nconst DEFAULT_RESTORE_LABEL = 'Restore';\nconst DEFAULT_DISCARD_LABEL = 'Discard';\nconst DEFAULT_EDIT_DESCRIPTION_LABEL = 'Edit description';\n\nexport const hasVersionHistoryItemActions = (item: VersionHistoryItemProps) =>\n item.onCompare != null ||\n item.onRestore != null ||\n item.onDiscard != null ||\n item.onEditDescription != null;\n\ntype VersionHistoryItemViewProps = VersionHistoryItemProps & {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n isLoadingVersion: boolean;\n onSelect: () => void;\n showActionSlot: boolean;\n};\n\n/** Timeline stroke; 3px is the rail weight from the source panel. */\nconst RAIL_THICKNESS = '3px';\n\nconst ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;\n\nconst Row = styled.div<{ $withActionSlot: boolean }>`\n display: grid;\n grid-template-columns: ${({ $withActionSlot }) =>\n $withActionSlot\n ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}`\n : `${Spacing[7]} minmax(0, 1fr)`};\n cursor: pointer;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n ${focusOutline}\n\n &:hover:not([aria-current='true']) {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceHover', Color.BackgroundSecondary)};\n }\n\n &[aria-current='true'] {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceAccent', theme.color.background.highlight)};\n }\n`;\n\nconst RailColumn = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst RailSegment = styled.div<{ $selected: boolean }>`\n width: 0;\n border-left: ${RAIL_THICKNESS} solid\n ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n flex: 1;\n`;\n\nconst RailStart = styled.div`\n height: ${Spacing[5]};\n flex-shrink: 0;\n`;\n\nconst TimelineDot = styled.span<{ $selected: boolean }>`\n width: ${Spacing[2]};\n height: ${Spacing[2]};\n border-radius: 50%;\n flex-shrink: 0;\n background-color: ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n`;\n\nconst BodyColumn = styled.div`\n min-width: 0;\n padding: ${Spacing[4]} 0;\n`;\n\nconst ActionsColumn = styled.div<{ $revealed: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: ${ACTION_SLOT_WIDTH};\n padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};\n box-sizing: border-box;\n\n > * {\n visibility: ${({ $revealed }) => ($revealed ? 'visible' : 'hidden')};\n }\n\n ${Row}:hover &,\n ${Row}:focus-within & {\n > * {\n visibility: visible;\n }\n }\n`;\n\nconst StatusChip = ({ status }: { status: VersionHistoryStatus }) => {\n const chip = useMemo(() => {\n switch (status) {\n case 'live':\n return { label: 'Deployed', type: 'success' as const };\n case 'unsaved':\n return { label: 'Unsaved', type: 'critical' as const };\n case 'saved':\n return { label: 'Saved', type: 'feature' as const };\n default:\n return null;\n }\n }, [status]);\n\n if (chip == null) {\n return null;\n }\n\n return (\n <StatusIndicator type={chip.type} showIcon={false}>\n {chip.label}\n </StatusIndicator>\n );\n};\n\nconst VersionHistoryItem = ({\n id,\n title,\n status,\n timestamp,\n lastUpdater,\n description,\n compareLabel = DEFAULT_COMPARE_LABEL,\n restoreLabel = DEFAULT_RESTORE_LABEL,\n discardLabel = DEFAULT_DISCARD_LABEL,\n editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL,\n onRestore,\n onDiscard,\n onCompare,\n onEditDescription,\n isFirst,\n isLast,\n isSelected,\n isLoadingVersion,\n onSelect,\n showActionSlot,\n}: VersionHistoryItemViewProps) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isDiscardOpen, setIsDiscardOpen] = useState(false);\n const [isDiscarding, setIsDiscarding] = useState(false);\n const [isEditOpen, setIsEditOpen] = useState(false);\n const [draftDescription, setDraftDescription] = useState(description ?? '');\n\n const menuItems = [\n onCompare != null && {\n id: `${id}__compare`,\n label: compareLabel,\n variant: 'basic' as const,\n onClick: onCompare,\n },\n onRestore != null && {\n id: `${id}__restore`,\n label: restoreLabel,\n variant: 'basic' as const,\n onClick: onRestore,\n },\n onDiscard != null && {\n id: `${id}__discard`,\n label: discardLabel,\n variant: 'basic' as const,\n onClick: () => setIsDiscardOpen(true),\n },\n onEditDescription != null && {\n id: `${id}__edit-description`,\n label: editDescriptionLabel,\n variant: 'basic' as const,\n onClick: () => {\n setDraftDescription(description ?? '');\n setIsEditOpen(true);\n },\n },\n ].filter((item): item is Exclude<typeof item, false> => Boolean(item));\n\n const stopRowClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const confirmDiscard = async () => {\n setIsDiscarding(true);\n try {\n await onDiscard?.();\n setIsDiscardOpen(false);\n } catch {\n // Keep the dialog open so the user can retry.\n } finally {\n setIsDiscarding(false);\n }\n };\n\n const confirmEdit = () => {\n onEditDescription?.(draftDescription);\n setIsEditOpen(false);\n };\n\n return (\n <>\n <Modal\n open={isDiscardOpen}\n onOpenChange={setIsDiscardOpen}\n isKeyboardDismissDisabled={isDiscarding}\n contentProps={isDiscarding ? { showCloseButton: false } : undefined}\n title='Discard draft?'\n footer={\n <>\n <Button\n variant='basic'\n width='auto'\n disabled={isDiscarding}\n onClick={() => setIsDiscardOpen(false)}\n >\n Cancel\n </Button>\n <Button variant='danger' width='auto' isPending={isDiscarding} onClick={confirmDiscard}>\n Discard\n </Button>\n </>\n }\n >\n <Paragraph color='primary'>\n All unpublished changes in this draft will be discarded. This action is permanent and\n cannot be undone.\n </Paragraph>\n </Modal>\n <Modal\n open={isEditOpen}\n onOpenChange={(open) => {\n setIsEditOpen(open);\n if (open) {\n setDraftDescription(description ?? '');\n }\n }}\n title='Edit description'\n footer={\n <>\n <Button variant='basic' width='auto' onClick={() => setIsEditOpen(false)}>\n Cancel\n </Button>\n <Button variant='primary' width='auto' onClick={confirmEdit}>\n Confirm\n </Button>\n </>\n }\n >\n <TextArea\n autoFocus\n value={draftDescription}\n onChange={(event) => setDraftDescription(event.target.value)}\n placeholder='No description'\n />\n </Modal>\n <Row\n role='listitem'\n $withActionSlot={showActionSlot}\n aria-current={isSelected || undefined}\n aria-busy={isLoadingVersion || undefined}\n tabIndex={0}\n onClick={() => {\n if (!isSelected) {\n onSelect();\n }\n }}\n onKeyDown={(event) => {\n if (isSelected) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect();\n }\n }}\n >\n <RailColumn>\n {isFirst ? <RailStart /> : <RailSegment $selected={isSelected} />}\n <TimelineDot $selected={isSelected} />\n {!isLast && <RailSegment $selected={isSelected} />}\n </RailColumn>\n <BodyColumn>\n <Stack spacing={Spacing[1]}>\n <HStack spacing={Spacing[2]} align='center'>\n <Paragraph color='primary' as='span'>\n {timestamp}\n </Paragraph>\n <StatusChip status={status} />\n {isLoadingVersion && !showActionSlot && <Spinner srText='Version loading' />}\n </HStack>\n <HStack spacing={Spacing[1]} align='center'>\n <Paragraph color='secondary' size='sm'>\n {title}\n </Paragraph>\n {lastUpdater && (\n <>\n <Paragraph color='secondary' size='sm'>\n &middot;\n </Paragraph>\n <Paragraph color='secondary' size='sm'>\n {lastUpdater}\n </Paragraph>\n </>\n )}\n </HStack>\n {description != null && description !== '' && (\n <Paragraph color='secondary' size='sm'>\n {description}\n </Paragraph>\n )}\n </Stack>\n </BodyColumn>\n {showActionSlot && (\n <ActionsColumn\n $revealed={isLoadingVersion || isMenuOpen}\n onClick={isLoadingVersion ? undefined : stopRowClick}\n >\n {isLoadingVersion ? (\n <Spinner srText='Version loading' />\n ) : (\n menuItems.length > 0 && (\n <DropdownMenu\n portal\n onOpenChange={setIsMenuOpen}\n trigger={\n <IconButton size='md' aria-label='More'>\n <MoreIcon />\n </IconButton>\n }\n >\n {menuItems.map((item) => (\n <DropdownMenu.Item\n key={item.id}\n variant={item.variant}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n item.onClick?.();\n }}\n >\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n )\n )}\n </ActionsColumn>\n )}\n </Row>\n </>\n );\n};\n\nexport default VersionHistoryItem;\n","import { useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nimport VersionHistoryItem, {\n hasVersionHistoryItemActions,\n type VersionHistoryItemProps,\n} from './VersionHistoryItem';\n\nexport type { VersionHistoryItemProps, VersionHistoryStatus } from './VersionHistoryItem';\n\n/** Matches the redesigned dashboard panel width. */\nconst PANEL_WIDTH = '600px';\n\nexport type VersionHistoryProps = {\n items: VersionHistoryItemProps[];\n selectedVersionId: string;\n onSelectVersion: (id: string) => void | Promise<void>;\n onClose?: () => void;\n loading?: boolean;\n emptyText?: string;\n};\n\nconst Panel = styled.nav`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: ${PANEL_WIDTH};\n height: 100%;\n overflow: hidden;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n border-left: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n padding: ${Spacing[3]} ${Spacing[5]};\n border-bottom: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst List = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n ${semanticScrollbar}\n`;\n\nconst LoadingBody = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n`;\n\nconst VersionHistory = ({\n items,\n selectedVersionId,\n onSelectVersion,\n onClose,\n loading = false,\n emptyText = 'No versions yet. Save or publish your changes to create one.',\n}: VersionHistoryProps) => {\n const [pendingVersionId, setPendingVersionId] = useState<string | null>(null);\n\n const selectVersion = useCallback(\n (versionId: string) => {\n if (pendingVersionId != null) {\n return;\n }\n const result = onSelectVersion(versionId);\n if (result instanceof Promise) {\n setPendingVersionId(versionId);\n const clearPending = () => setPendingVersionId(null);\n result.then(clearPending, clearPending);\n }\n },\n [onSelectVersion, pendingVersionId],\n );\n\n const showActionSlot = items.some(hasVersionHistoryItemActions);\n\n return (\n <Panel aria-label='Version History'>\n <Header>\n <HStack justify='space-between' align='center' spacing={Spacing[2]}>\n <Paragraph as='h3' size='lg' weight='bold' color='primary'>\n Version History\n </Paragraph>\n {onClose != null && (\n <IconButton size='md' aria-label='Close' onClick={onClose}>\n <XIcon />\n </IconButton>\n )}\n </HStack>\n </Header>\n {loading ? (\n <LoadingBody>\n <Spinner size='md' srText='Loading versions...' />\n </LoadingBody>\n ) : items.length === 0 ? (\n <Stack spacing={Spacing[3]} style={{ padding: Spacing[5] }}>\n <Paragraph color='secondary'>{emptyText}</Paragraph>\n </Stack>\n ) : (\n <List role='list' aria-label='Version history'>\n {items.map((item, index) => (\n <VersionHistoryItem\n key={item.id}\n {...item}\n isFirst={index === 0}\n isLast={index === items.length - 1}\n isSelected={item.id === (pendingVersionId ?? selectedVersionId)}\n isLoadingVersion={item.id === pendingVersionId}\n showActionSlot={showActionSlot}\n onSelect={() => selectVersion(item.id)}\n />\n ))}\n </List>\n )}\n </Panel>\n );\n};\n\nexport { VersionHistory };\nexport default VersionHistory;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { l as FilterRule, n as CompoundExpression } from "./types-BEjWTkZV.mjs";
1
+ import { l as FilterRule, n as CompoundExpression } from "./types-Dy3lZv9z.mjs";
2
2
 
3
3
  //#region components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/compound-expression.d.ts
4
4
  declare function addRuleToGroup(compound: CompoundExpression, groupIndex: number, rule: FilterRule): CompoundExpression;
@@ -3,4 +3,4 @@ declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
3
3
  declare const MIN_PAGE_SIZE = 10;
4
4
  //#endregion
5
5
  export { MIN_PAGE_SIZE as n, DEFAULT_PAGE_SIZE_OPTIONS as t };
6
- //# sourceMappingURL=constants-BpwnTzcv.d.mts.map
6
+ //# sourceMappingURL=constants-CQUCM6__.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-BpwnTzcv.mjs";
1
+ import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-CQUCM6__.mjs";
2
2
  export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE };
@@ -1,7 +1,7 @@
1
- import { i as To } from "./types-B-stjYNc.mjs";
1
+ import { i as To } from "./types-D1DijcJv.mjs";
2
2
 
3
3
  //#region lib/router/createPath.d.ts
4
4
  declare function createPath(to: To): string;
5
5
  //#endregion
6
6
  export { createPath as t };
7
- //# sourceMappingURL=createPath-Bst12Uxr.d.mts.map
7
+ //# sourceMappingURL=createPath-Bq7wYGt_.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as createPath } from "./createPath-Bst12Uxr.mjs";
1
+ import { t as createPath } from "./createPath-Bq7wYGt_.mjs";
2
2
  export { createPath };
@@ -173,4 +173,4 @@ function formatDateFilterValue(value) {
173
173
  //#endregion
174
174
  export { selectedPresetFor as i, parseDateFilterValue as n, resolveDateFilterValue as r, formatDateFilterValue as t };
175
175
 
176
- //# sourceMappingURL=date-filter-CZeChs9T.mjs.map
176
+ //# sourceMappingURL=date-filter-D6IfCkwp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-filter-CZeChs9T.mjs","names":[],"sources":["../lib/date-filter/types.ts","../lib/date-filter/codec.ts"],"sourcesContent":["/** Ordered preset list shared by date-filter consumers. */\nexport const DATE_FILTER_PRESETS = [\n 'last_7_days',\n 'last_14_days',\n 'last_30_days',\n 'this_month',\n 'last_month',\n 'this_year',\n 'last_year',\n] as const;\n\n/** Closed vocabulary of named presets the picker offers. */\nexport type DateFilterPreset = (typeof DATE_FILTER_PRESETS)[number];\n\nexport const DATE_FILTER_PRESET_LABELS: Record<DateFilterPreset, string> = {\n last_7_days: 'Last 7 days',\n last_14_days: 'Last 14 days',\n last_30_days: 'Last 30 days',\n this_month: 'This month',\n last_month: 'Last month',\n this_year: 'This year',\n last_year: 'Last year',\n};\n\nexport interface AbsoluteDateFilterValue {\n kind: 'absolute';\n startDate?: string;\n endDate?: string;\n}\n\nexport interface PresetRelativeDateFilterValue {\n kind: 'relative';\n preset: DateFilterPreset;\n}\n\nexport type RelativeDateFilterValue = PresetRelativeDateFilterValue;\n\nexport type DateFilterValue = AbsoluteDateFilterValue | RelativeDateFilterValue;\n\nexport interface AbsoluteDateRange {\n startDate?: string;\n endDate?: string;\n}\n","import { DateTime, Settings } from 'luxon';\n\nimport { DATE_FILTER_PRESET_LABELS, DATE_FILTER_PRESETS } from './types';\nimport type {\n AbsoluteDateFilterValue,\n AbsoluteDateRange,\n DateFilterPreset,\n DateFilterValue,\n PresetRelativeDateFilterValue,\n RelativeDateFilterValue,\n} from './types';\n\ntype InternalWindow =\n | { mode: 'rolling-days'; days: number }\n | { mode: 'calendar'; unit: 'month' | 'year'; offset: 0 | 1 };\n\nconst PRESET_WINDOWS = {\n last_7_days: { mode: 'rolling-days', days: 7 },\n last_14_days: { mode: 'rolling-days', days: 14 },\n last_30_days: { mode: 'rolling-days', days: 30 },\n this_month: { mode: 'calendar', unit: 'month', offset: 0 },\n last_month: { mode: 'calendar', unit: 'month', offset: 1 },\n this_year: { mode: 'calendar', unit: 'year', offset: 0 },\n last_year: { mode: 'calendar', unit: 'year', offset: 1 },\n} satisfies Record<DateFilterPreset, InternalWindow>;\n\nconst DATE_FILTER_PRESET_SET = new Set<DateFilterPreset>(DATE_FILTER_PRESETS);\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return typeof value === 'undefined' || typeof value === 'string';\n}\n\nfunction normalizeOptionalString(value: unknown): unknown {\n return value == null ? undefined : value;\n}\n\nfunction isAbsoluteDateFilterValue(value: unknown): value is AbsoluteDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'absolute' &&\n isOptionalString(normalizeOptionalString(record.startDate)) &&\n isOptionalString(normalizeOptionalString(record.endDate))\n );\n}\n\nfunction isPresetRelativeDateFilterValue(value: unknown): value is PresetRelativeDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'relative' &&\n typeof record.preset === 'string' &&\n DATE_FILTER_PRESET_SET.has(record.preset as DateFilterPreset)\n );\n}\n\nfunction normalizedAbsoluteDateRange(value: Record<string, unknown>): AbsoluteDateRange {\n return {\n startDate: normalizeOptionalString(value.startDate) as string | undefined,\n endDate: normalizeOptionalString(value.endDate) as string | undefined,\n };\n}\n\nexport function parseDateFilterValue(raw: unknown): DateFilterValue | null {\n if (typeof raw !== 'object' || raw == null || Array.isArray(raw)) {\n return null;\n }\n const value = raw as Record<string, unknown>;\n if (!('kind' in value)) {\n if (\n ('startDate' in value || 'endDate' in value) &&\n isOptionalString(normalizeOptionalString(value.startDate)) &&\n isOptionalString(normalizeOptionalString(value.endDate))\n ) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n return null;\n }\n if (isAbsoluteDateFilterValue(value)) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n if (isPresetRelativeDateFilterValue(value)) {\n return {\n kind: 'relative',\n preset: value.preset,\n };\n }\n return 'startDate' in value || 'endDate' in value\n ? parseDateFilterValue({ startDate: value.startDate, endDate: value.endDate })\n : null;\n}\n\nfunction relativeWindowFor(value: RelativeDateFilterValue): InternalWindow {\n return PRESET_WINDOWS[value.preset];\n}\n\nfunction dateTimeToISO(value: DateTime): string {\n const iso = value.toISO();\n if (iso == null) {\n throw new Error(\n `Unable to evaluate invalid date: ${value.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return iso;\n}\n\nfunction isValidZone(zone: string): boolean {\n return DateTime.utc().setZone(zone).isValid;\n}\n\nfunction resolvedZone(zone?: string): string {\n if (zone && isValidZone(zone)) {\n return zone;\n }\n\n const defaultZone = Settings.defaultZone.name;\n return isValidZone(defaultZone) ? defaultZone : 'UTC';\n}\n\nfunction evaluationNow(context: { zone?: string; now?: DateTime }): DateTime {\n // Constructing `DateTime.now()` uses Settings.defaultZone and is itself invalid\n // when an application has configured an unsupported default zone. UTC gives us\n // the same instant without depending on that ambient setting.\n const now = context.now ?? DateTime.utc();\n if (!now.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${now.invalidExplanation ?? 'unknown error'}`,\n );\n }\n\n const zonedNow = now.setZone(resolvedZone(context.zone));\n if (!zonedNow.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${zonedNow.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return zonedNow;\n}\n\nfunction evaluateRelative(\n value: RelativeDateFilterValue,\n context: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange> {\n const window = relativeWindowFor(value);\n const zonedNow = evaluationNow(context);\n let start: DateTime;\n let end: DateTime;\n\n if (window.mode === 'rolling-days') {\n end = zonedNow.endOf('day');\n // Preserve the established picker and legacy-filter contract: `days` is a\n // lookback offset, so the start date and today are both included.\n start = zonedNow.minus({ days: window.days }).startOf('day');\n } else {\n const referencedPeriod = zonedNow.minus({ [window.unit]: window.offset });\n start = referencedPeriod.startOf(window.unit);\n end = window.offset === 0 ? zonedNow.endOf('day') : referencedPeriod.endOf(window.unit);\n }\n\n return { startDate: dateTimeToISO(start), endDate: dateTimeToISO(end) };\n}\n\nexport function resolveDateFilterValue(\n value: RelativeDateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange>;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): AbsoluteDateRange;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context: { zone?: string; now?: DateTime } = {},\n): AbsoluteDateRange {\n if (!isRelative(value)) {\n return {\n startDate: value.startDate,\n endDate: value.endDate,\n };\n }\n return evaluateRelative(value, context);\n}\n\n/**\n * Which preset a control should render as selected.\n *\n * Only stored metadata makes a value semantic. Once writes are enabled an absolute\n * value means the user picked dates, so inferring a preset from them would relabel\n * their choice; with writes disabled no metadata is ever stored, so inference is\n * the only thing that can highlight a preset at all.\n *\n * `undefined` asks the picker to infer from the dates, `null` selects nothing.\n */\nexport function selectedPresetFor(\n value: DateFilterValue | null,\n writesEnabled: boolean,\n): DateFilterPreset | null | undefined {\n if (value != null && isRelative(value)) {\n return value.preset;\n }\n return writesEnabled ? null : undefined;\n}\n\nexport function isRelative(value: DateFilterValue): value is RelativeDateFilterValue {\n return value.kind === 'relative';\n}\n\nexport function formatDateFilterValue(value: DateFilterValue): string | null {\n if (!isRelative(value)) {\n return null;\n }\n return DATE_FILTER_PRESET_LABELS[value.preset];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-filter-D6IfCkwp.mjs","names":[],"sources":["../lib/date-filter/types.ts","../lib/date-filter/codec.ts"],"sourcesContent":["/** Ordered preset list shared by date-filter consumers. */\nexport const DATE_FILTER_PRESETS = [\n 'last_7_days',\n 'last_14_days',\n 'last_30_days',\n 'this_month',\n 'last_month',\n 'this_year',\n 'last_year',\n] as const;\n\n/** Closed vocabulary of named presets the picker offers. */\nexport type DateFilterPreset = (typeof DATE_FILTER_PRESETS)[number];\n\nexport const DATE_FILTER_PRESET_LABELS: Record<DateFilterPreset, string> = {\n last_7_days: 'Last 7 days',\n last_14_days: 'Last 14 days',\n last_30_days: 'Last 30 days',\n this_month: 'This month',\n last_month: 'Last month',\n this_year: 'This year',\n last_year: 'Last year',\n};\n\nexport interface AbsoluteDateFilterValue {\n kind: 'absolute';\n startDate?: string;\n endDate?: string;\n}\n\nexport interface PresetRelativeDateFilterValue {\n kind: 'relative';\n preset: DateFilterPreset;\n}\n\nexport type RelativeDateFilterValue = PresetRelativeDateFilterValue;\n\nexport type DateFilterValue = AbsoluteDateFilterValue | RelativeDateFilterValue;\n\nexport interface AbsoluteDateRange {\n startDate?: string;\n endDate?: string;\n}\n","import { DateTime, Settings } from 'luxon';\n\nimport { DATE_FILTER_PRESET_LABELS, DATE_FILTER_PRESETS } from './types';\nimport type {\n AbsoluteDateFilterValue,\n AbsoluteDateRange,\n DateFilterPreset,\n DateFilterValue,\n PresetRelativeDateFilterValue,\n RelativeDateFilterValue,\n} from './types';\n\ntype InternalWindow =\n | { mode: 'rolling-days'; days: number }\n | { mode: 'calendar'; unit: 'month' | 'year'; offset: 0 | 1 };\n\nconst PRESET_WINDOWS = {\n last_7_days: { mode: 'rolling-days', days: 7 },\n last_14_days: { mode: 'rolling-days', days: 14 },\n last_30_days: { mode: 'rolling-days', days: 30 },\n this_month: { mode: 'calendar', unit: 'month', offset: 0 },\n last_month: { mode: 'calendar', unit: 'month', offset: 1 },\n this_year: { mode: 'calendar', unit: 'year', offset: 0 },\n last_year: { mode: 'calendar', unit: 'year', offset: 1 },\n} satisfies Record<DateFilterPreset, InternalWindow>;\n\nconst DATE_FILTER_PRESET_SET = new Set<DateFilterPreset>(DATE_FILTER_PRESETS);\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return typeof value === 'undefined' || typeof value === 'string';\n}\n\nfunction normalizeOptionalString(value: unknown): unknown {\n return value == null ? undefined : value;\n}\n\nfunction isAbsoluteDateFilterValue(value: unknown): value is AbsoluteDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'absolute' &&\n isOptionalString(normalizeOptionalString(record.startDate)) &&\n isOptionalString(normalizeOptionalString(record.endDate))\n );\n}\n\nfunction isPresetRelativeDateFilterValue(value: unknown): value is PresetRelativeDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'relative' &&\n typeof record.preset === 'string' &&\n DATE_FILTER_PRESET_SET.has(record.preset as DateFilterPreset)\n );\n}\n\nfunction normalizedAbsoluteDateRange(value: Record<string, unknown>): AbsoluteDateRange {\n return {\n startDate: normalizeOptionalString(value.startDate) as string | undefined,\n endDate: normalizeOptionalString(value.endDate) as string | undefined,\n };\n}\n\nexport function parseDateFilterValue(raw: unknown): DateFilterValue | null {\n if (typeof raw !== 'object' || raw == null || Array.isArray(raw)) {\n return null;\n }\n const value = raw as Record<string, unknown>;\n if (!('kind' in value)) {\n if (\n ('startDate' in value || 'endDate' in value) &&\n isOptionalString(normalizeOptionalString(value.startDate)) &&\n isOptionalString(normalizeOptionalString(value.endDate))\n ) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n return null;\n }\n if (isAbsoluteDateFilterValue(value)) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n if (isPresetRelativeDateFilterValue(value)) {\n return {\n kind: 'relative',\n preset: value.preset,\n };\n }\n return 'startDate' in value || 'endDate' in value\n ? parseDateFilterValue({ startDate: value.startDate, endDate: value.endDate })\n : null;\n}\n\nfunction relativeWindowFor(value: RelativeDateFilterValue): InternalWindow {\n return PRESET_WINDOWS[value.preset];\n}\n\nfunction dateTimeToISO(value: DateTime): string {\n const iso = value.toISO();\n if (iso == null) {\n throw new Error(\n `Unable to evaluate invalid date: ${value.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return iso;\n}\n\nfunction isValidZone(zone: string): boolean {\n return DateTime.utc().setZone(zone).isValid;\n}\n\nfunction resolvedZone(zone?: string): string {\n if (zone && isValidZone(zone)) {\n return zone;\n }\n\n const defaultZone = Settings.defaultZone.name;\n return isValidZone(defaultZone) ? defaultZone : 'UTC';\n}\n\nfunction evaluationNow(context: { zone?: string; now?: DateTime }): DateTime {\n // Constructing `DateTime.now()` uses Settings.defaultZone and is itself invalid\n // when an application has configured an unsupported default zone. UTC gives us\n // the same instant without depending on that ambient setting.\n const now = context.now ?? DateTime.utc();\n if (!now.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${now.invalidExplanation ?? 'unknown error'}`,\n );\n }\n\n const zonedNow = now.setZone(resolvedZone(context.zone));\n if (!zonedNow.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${zonedNow.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return zonedNow;\n}\n\nfunction evaluateRelative(\n value: RelativeDateFilterValue,\n context: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange> {\n const window = relativeWindowFor(value);\n const zonedNow = evaluationNow(context);\n let start: DateTime;\n let end: DateTime;\n\n if (window.mode === 'rolling-days') {\n end = zonedNow.endOf('day');\n // Preserve the established picker and legacy-filter contract: `days` is a\n // lookback offset, so the start date and today are both included.\n start = zonedNow.minus({ days: window.days }).startOf('day');\n } else {\n const referencedPeriod = zonedNow.minus({ [window.unit]: window.offset });\n start = referencedPeriod.startOf(window.unit);\n end = window.offset === 0 ? zonedNow.endOf('day') : referencedPeriod.endOf(window.unit);\n }\n\n return { startDate: dateTimeToISO(start), endDate: dateTimeToISO(end) };\n}\n\nexport function resolveDateFilterValue(\n value: RelativeDateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange>;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): AbsoluteDateRange;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context: { zone?: string; now?: DateTime } = {},\n): AbsoluteDateRange {\n if (!isRelative(value)) {\n return {\n startDate: value.startDate,\n endDate: value.endDate,\n };\n }\n return evaluateRelative(value, context);\n}\n\n/**\n * Which preset a control should render as selected.\n *\n * Only stored metadata makes a value semantic. Once writes are enabled an absolute\n * value means the user picked dates, so inferring a preset from them would relabel\n * their choice; with writes disabled no metadata is ever stored, so inference is\n * the only thing that can highlight a preset at all.\n *\n * `undefined` asks the picker to infer from the dates, `null` selects nothing.\n */\nexport function selectedPresetFor(\n value: DateFilterValue | null,\n writesEnabled: boolean,\n): DateFilterPreset | null | undefined {\n if (value != null && isRelative(value)) {\n return value.preset;\n }\n return writesEnabled ? null : undefined;\n}\n\nexport function isRelative(value: DateFilterValue): value is RelativeDateFilterValue {\n return value.kind === 'relative';\n}\n\nexport function formatDateFilterValue(value: DateFilterValue): string | null {\n if (!isRelative(value)) {\n return null;\n }\n return DATE_FILTER_PRESET_LABELS[value.preset];\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from "./types-BEjWTkZV.mjs";
1
+ import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from "./types-Dy3lZv9z.mjs";
2
2
 
3
3
  //#region components/DataTable/TableControls/FiltersV2/date-range-rule-value.d.ts
4
4
  /**
@@ -14,4 +14,4 @@ import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from
14
14
  declare function resolveDateRangeRuleValue(rule: Pick<FilterRule, 'operator' | 'relativeDate' | 'value'>, fieldType?: FilterFieldType): DateRangeFilterValue | null;
15
15
  //#endregion
16
16
  export { resolveDateRangeRuleValue as t };
17
- //# sourceMappingURL=date-range-rule-value-C4ir2Y8W.d.mts.map
17
+ //# sourceMappingURL=date-range-rule-value-DVhMQP4-.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-C4ir2Y8W.mjs";
1
+ import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-DVhMQP4-.mjs";
2
2
  export { resolveDateRangeRuleValue };
@@ -1,5 +1,5 @@
1
- import { a as DateFilterPreset } from "./types-YojUycQK.mjs";
2
- import { t as DateFilterChange } from "./DateRangePicker-C4QKMo2a.mjs";
1
+ import { a as DateFilterPreset } from "./types-DZTbvdpO.mjs";
2
+ import { t as DateFilterChange } from "./DateRangePicker-CelDK_44.mjs";
3
3
  import { DateValue } from "@internationalized/date";
4
4
  import { RangeValue } from "@react-types/shared";
5
5
 
@@ -17,4 +17,4 @@ type DateRuleIntent = {
17
17
  declare function dateRuleIntent(change: DateFilterChange, writesEnabled: boolean): DateRuleIntent;
18
18
  //#endregion
19
19
  export { dateRuleIntent as t };
20
- //# sourceMappingURL=date-rule-intent-gKmuxMVA.d.mts.map
20
+ //# sourceMappingURL=date-rule-intent-BwQ6OTVD.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as dateRuleIntent } from "./date-rule-intent-gKmuxMVA.mjs";
1
+ import { t as dateRuleIntent } from "./date-rule-intent-BwQ6OTVD.mjs";
2
2
  export { dateRuleIntent };
@@ -1,7 +1,7 @@
1
- import { a as FilterField, c as FilterOperator, l as FilterRule, u as FilterRuleValue } from "./types-BEjWTkZV.mjs";
1
+ import { a as FilterField, c as FilterOperator, l as FilterRule, s as FilterFieldType, u as FilterRuleValue } from "./types-Dy3lZv9z.mjs";
2
2
 
3
3
  //#region components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/display.d.ts
4
- declare function valueDisplayString(value: FilterRuleValue, optionLabels?: Record<string, string>, relativeDate?: FilterRule['relativeDate']): string | undefined;
4
+ declare function valueDisplayString(value: FilterRuleValue, optionLabels?: Record<string, string>, relativeDate?: FilterRule['relativeDate'], fieldType?: FilterFieldType): string | undefined;
5
5
  declare function draftValueFor(field: FilterField, operator: FilterOperator): FilterRuleValue;
6
6
  //#endregion
7
7
  export { draftValueFor, valueDisplayString };
@@ -1,5 +1,5 @@
1
- import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-Evo0FRxP.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-bKxrF1gC.mjs";
1
+ import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-CtNrsPO9.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-DqO8HiYb.mjs";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/fieldPickerOptions.d.ts
5
5
  declare const FIELDS_SUBMENU_LABEL = "Fields";
@@ -1,4 +1,4 @@
1
- import { f as FilterSize } from "./types-BEjWTkZV.mjs";
1
+ import { f as FilterSize } from "./types-Dy3lZv9z.mjs";
2
2
  import * as _$react from "react";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/filter-size-context.d.ts
@@ -49,4 +49,4 @@ declare const FILTER_SIZE_TOKENS: Record<FilterSize, FilterSizeTokens>;
49
49
  declare function useFilterSizeTokens(override?: FilterSize): FilterSizeTokens;
50
50
  //#endregion
51
51
  export { useFilterBarSize as a, FilterSizeTokens as i, FilterBarContext as n, useFilterSizeTokens as o, FilterBarContextValue as r, FILTER_SIZE_TOKENS as t };
52
- //# sourceMappingURL=filter-size-context-BOpH6pBm.d.mts.map
52
+ //# sourceMappingURL=filter-size-context-BjTzcZwZ.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-BOpH6pBm.mjs";
1
+ import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-BjTzcZwZ.mjs";
2
2
  export { FILTER_SIZE_TOKENS, FilterBarContext, FilterBarContextValue, FilterSizeTokens, useFilterBarSize, useFilterSizeTokens };
@@ -0,0 +1,5 @@
1
+ //#region components/DataTable/TableControls/FiltersV2/format-date-value.d.ts
2
+ declare function formatDateValueForDisplay(value: string): string;
3
+ //#endregion
4
+ export { formatDateValueForDisplay };
5
+ //# sourceMappingURL=format-date-value.d.mts.map
@@ -1,4 +1,4 @@
1
- import { n as CheckboxProps } from "./Checkbox-fWj7GkBl.mjs";
1
+ import { n as CheckboxProps } from "./Checkbox-DUXws1Os.mjs";
2
2
  import { DataTableColumnFormat, DataTableColumnImageFormat, DataTableColumnPiiFormat, DataTableColumnStringFormat, DateConfig, DatetimeConfig, RenderValueStickerFormatConfig } from "./components/DataTable/types.mjs";
3
3
  import { ReactNode } from "react";
4
4