@persona/design-system 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +9 -9
  3. package/dist/Accordion.d.mts +38 -0
  4. package/dist/AccordionItem.d.mts +31 -0
  5. package/dist/{Action-C7INft7X.d.mts → Action-B-AiHknZ.d.mts} +3 -3
  6. package/dist/Action.d.mts +1 -1
  7. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  8. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  9. package/dist/ArrayValueControl.d.mts +1 -1
  10. package/dist/Attribute.d.mts +3 -3
  11. package/dist/{Badge-BD0Ut46g.mjs → Badge-COqUjFQu.mjs} +2 -2
  12. package/dist/{Badge-BD0Ut46g.mjs.map → Badge-COqUjFQu.mjs.map} +1 -1
  13. package/dist/BooleanValueControl.d.mts +1 -1
  14. package/dist/{Breadcrumb-DtW1R9xW.d.mts → Breadcrumb-DRFY46ZW.d.mts} +1 -1
  15. package/dist/Breadcrumb.d.mts +1 -1
  16. package/dist/{Breadcrumbs-B6JyoS8n.d.mts → Breadcrumbs-DUSbT1I7.d.mts} +2 -2
  17. package/dist/{Breadcrumbs-CrXfUK1V.mjs → Breadcrumbs-DXS7rU7_.mjs} +5 -5
  18. package/dist/{Breadcrumbs-CrXfUK1V.mjs.map → Breadcrumbs-DXS7rU7_.mjs.map} +1 -1
  19. package/dist/Breadcrumbs.d.mts +1 -1
  20. package/dist/{Button-HodDf_bB.d.mts → Button-xZ6DC5XC.d.mts} +4 -4
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/{Calendar-DrdTvzAa.d.mts → Calendar-dPmo2dkj.d.mts} +1 -1
  23. package/dist/Calendar.d.mts +1 -1
  24. package/dist/CalendarBase.d.mts +1 -1
  25. package/dist/{Card-CpDwATnX.d.mts → Card-CUeM8Lh8.d.mts} +3 -3
  26. package/dist/Card.d.mts +1 -1
  27. package/dist/{CardV2-M3o4BELp.mjs → CardV2-D9p7D7jX.mjs} +9 -7
  28. package/dist/{CardV2-M3o4BELp.mjs.map → CardV2-D9p7D7jX.mjs.map} +1 -1
  29. package/dist/{Checkbox-CyWXhuby.mjs → Checkbox-DQynkc_I.mjs} +3 -3
  30. package/dist/{Checkbox-CyWXhuby.mjs.map → Checkbox-DQynkc_I.mjs.map} +1 -1
  31. package/dist/{Checkbox-C-hMfItK.d.mts → Checkbox-DoJpxPEz.d.mts} +1 -1
  32. package/dist/Checkbox.d.mts +1 -1
  33. package/dist/CheckboxGroupField.d.mts +1 -1
  34. package/dist/ChoicesValueControl.d.mts +1 -1
  35. package/dist/{Combobox-1M6EwVmq.mjs → Combobox-C_kCY3P3.mjs} +28 -12
  36. package/dist/Combobox-C_kCY3P3.mjs.map +1 -0
  37. package/dist/{Combobox-DyNllwt8.d.mts → Combobox-D7hyf-jA.d.mts} +3 -3
  38. package/dist/Combobox.d.mts +2 -2
  39. package/dist/{ComboboxBase-B3YqkjQp.d.mts → ComboboxBase-BMCY6O7Y.d.mts} +10 -5
  40. package/dist/ComboboxBase.d.mts +1 -1
  41. package/dist/{ComboboxMultiSelect-BuwVssvZ.d.mts → ComboboxMultiSelect-L0KYMkmm.d.mts} +2 -2
  42. package/dist/ComboboxMultiSelect.d.mts +1 -1
  43. package/dist/{ComboboxSingleSelect-gJC4v7ER.d.mts → ComboboxSingleSelect-v5oNrJ7M.d.mts} +4 -4
  44. package/dist/ComboboxSingleSelect.d.mts +1 -1
  45. package/dist/{CompactBar-DhHh7Roq.d.mts → CompactBar-DjFaUAsN.d.mts} +4 -4
  46. package/dist/CompactBar.d.mts +1 -1
  47. package/dist/{ConfigFormGroup-Cz7GeTYd.mjs → ConfigFormGroup-DLOZOuLf.mjs} +2 -2
  48. package/dist/{ConfigFormGroup-Cz7GeTYd.mjs.map → ConfigFormGroup-DLOZOuLf.mjs.map} +1 -1
  49. package/dist/{ControlBar-C8kagIck.d.mts → ControlBar-Cegjxa6-.d.mts} +7 -2
  50. package/dist/ControlBar.d.mts +1 -1
  51. package/dist/DataTable.d.mts +4 -3
  52. package/dist/{DateField-2aigfD4u.d.mts → DateField-Dk5ykLdr.d.mts} +2 -2
  53. package/dist/DateField.d.mts +1 -1
  54. package/dist/{DatePicker-D9JurBBj.mjs → DatePicker-C7z1yodK.mjs} +77 -42
  55. package/dist/DatePicker-C7z1yodK.mjs.map +1 -0
  56. package/dist/{DatePicker-DC_RKjdM.d.mts → DatePicker-Dtvv0V45.d.mts} +2 -2
  57. package/dist/DatePicker.d.mts +1 -1
  58. package/dist/{DateRangePicker-ByD6IsLB.d.mts → DateRangePicker-HPYsa4wC.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-CQrFHOIW.mjs} +3 -3
  63. package/dist/{DropdownButton-BWiXLMfD.mjs.map → DropdownButton-CQrFHOIW.mjs.map} +1 -1
  64. package/dist/DropdownButton.d.mts +2 -2
  65. package/dist/{DropdownMenu-Xl1BYXsY.d.mts → DropdownMenu-D1qvgGTZ.d.mts} +2 -2
  66. package/dist/{DropdownMenu-CuKSNxc9.mjs → DropdownMenu-rm9Nnxn7.mjs} +7 -2
  67. package/dist/DropdownMenu-rm9Nnxn7.mjs.map +1 -0
  68. package/dist/DropdownMenu.d.mts +1 -1
  69. package/dist/{ErrorProps-Dgu98PkH.d.mts → ErrorProps-B8-Mqf1W.d.mts} +1 -1
  70. package/dist/ErrorProps.d.mts +1 -1
  71. package/dist/{FieldRegistry-BdtxI1N2.d.mts → FieldRegistry-0LmSQ-jc.d.mts} +2 -2
  72. package/dist/FieldRegistry.d.mts +1 -1
  73. package/dist/{FilterBar-jYjPeD7F.d.mts → FilterBar-BMM4Swbt.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 +1 -1
  78. package/dist/FloatValueControl.d.mts +1 -1
  79. package/dist/{FormControl-BEk4F1EV.mjs → FormControl-DXrxoJLl.mjs} +26 -11
  80. package/dist/FormControl-DXrxoJLl.mjs.map +1 -0
  81. package/dist/{FormControl-CJfYdgZF.d.mts → FormControl-Dg8doZq2.d.mts} +6 -2
  82. package/dist/FormControl.d.mts +1 -1
  83. package/dist/FormControlLabel.d.mts +1 -1
  84. package/dist/{FormField-CK8o1sMB.d.mts → FormField-BeLigf9j.d.mts} +4 -2
  85. package/dist/{FormField-ByT0avVx.mjs → FormField-Crp3F-hv.mjs} +31 -21
  86. package/dist/FormField-Crp3F-hv.mjs.map +1 -0
  87. package/dist/FormField.d.mts +1 -1
  88. package/dist/Grid-eMLuyRzV.mjs +92 -0
  89. package/dist/Grid-eMLuyRzV.mjs.map +1 -0
  90. package/dist/Grid.d.mts +4 -1
  91. package/dist/{Header-ZnHGm8fs.d.mts → Header-DxJ6TfPw.d.mts} +1 -1
  92. package/dist/Header.d.mts +1 -1
  93. package/dist/{HelperTooltip-CQpPO16Q.d.mts → HelperTooltip-DcyrpEZI.d.mts} +2 -2
  94. package/dist/HelperTooltip.d.mts +1 -1
  95. package/dist/{HoverCopyableField-CN3gl0ny.mjs → HoverCopyableField-12bBuG-d.mjs} +3 -3
  96. package/dist/{HoverCopyableField-CN3gl0ny.mjs.map → HoverCopyableField-12bBuG-d.mjs.map} +1 -1
  97. package/dist/{IconButton-zu-VNp1h.d.mts → IconButton-BUMMN-gH.d.mts} +2 -2
  98. package/dist/{IconButton-CqTPMhjV.mjs → IconButton-CCLMYWVN.mjs} +1 -1
  99. package/dist/{IconButton-CqTPMhjV.mjs.map → IconButton-CCLMYWVN.mjs.map} +1 -1
  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-Ce8FvSYf.d.mts → Input-2N2e5JCf.d.mts} +3 -3
  105. package/dist/{Input-Bc2yWH3j.mjs → Input-Cl4o41k4.mjs} +7 -3
  106. package/dist/Input-Cl4o41k4.mjs.map +1 -0
  107. package/dist/Input.d.mts +1 -1
  108. package/dist/{InputProps-B1Xod4wm.d.mts → InputProps-TWzig3QO.d.mts} +2 -2
  109. package/dist/InputProps.d.mts +1 -1
  110. package/dist/IntegerValueControl.d.mts +1 -1
  111. package/dist/Link-I9Bklen-.mjs +79 -0
  112. package/dist/Link-I9Bklen-.mjs.map +1 -0
  113. package/dist/Link.d.mts +1 -1
  114. package/dist/{ListBox-D-8iwYVj.d.mts → ListBox-BcoXOt73.d.mts} +3 -3
  115. package/dist/{ListBox-CFBhILRy.mjs → ListBox-sqeLBiKS.mjs} +33 -16
  116. package/dist/ListBox-sqeLBiKS.mjs.map +1 -0
  117. package/dist/ListBox.d.mts +1 -1
  118. package/dist/ListBoxField.d.mts +3 -2
  119. package/dist/{LoadingShimmer-Dizk2sZu.mjs → LoadingShimmer-dRSkdlqD.mjs} +13 -8
  120. package/dist/LoadingShimmer-dRSkdlqD.mjs.map +1 -0
  121. package/dist/LoadingShimmer.d.mts +1 -1
  122. package/dist/{LogicRow-CgPds2tq.d.mts → LogicRow-DXywXdYt.d.mts} +3 -3
  123. package/dist/LogicRow.d.mts +1 -1
  124. package/dist/MaskedInput.d.mts +2 -2
  125. package/dist/{Menu-CSwzFqdv.d.mts → Menu-BekLwm8w.d.mts} +3 -3
  126. package/dist/{Menu-Cd6oxjAe.mjs → Menu-CwlI7BMN.mjs} +1 -1
  127. package/dist/{Menu-Cd6oxjAe.mjs.map → Menu-CwlI7BMN.mjs.map} +1 -1
  128. package/dist/Menu.d.mts +1 -1
  129. package/dist/Modal-CMiFcXC9.mjs +260 -0
  130. package/dist/Modal-CMiFcXC9.mjs.map +1 -0
  131. package/dist/Modal-ymxlGYKt.d.mts +145 -0
  132. package/dist/Modal.d.mts +2 -145
  133. package/dist/{PageHeader-DJOlcAiW.mjs → PageHeader-D_0p7UK_.mjs} +2 -2
  134. package/dist/{PageHeader-DJOlcAiW.mjs.map → PageHeader-D_0p7UK_.mjs.map} +1 -1
  135. package/dist/PageHeader.d.mts +1 -1
  136. package/dist/PageLayoutFrame.d.mts +28 -0
  137. package/dist/{PageSelector-BMz2Q4P6.d.mts → PageSelector-Bxulu6vU.d.mts} +3 -3
  138. package/dist/PageSelector.d.mts +1 -1
  139. package/dist/{Pagination-B1u203DE.mjs → Pagination-Co9CfyFQ.mjs} +5 -5
  140. package/dist/{Pagination-B1u203DE.mjs.map → Pagination-Co9CfyFQ.mjs.map} +1 -1
  141. package/dist/{Pagination-ne9hnVoe.d.mts → Pagination-Dg-4O7F7.d.mts} +2 -2
  142. package/dist/Pagination.d.mts +1 -1
  143. package/dist/{Pii-Dz4woKd8.mjs → Pii-JGV9gP95.mjs} +2 -2
  144. package/dist/{Pii-Dz4woKd8.mjs.map → Pii-JGV9gP95.mjs.map} +1 -1
  145. package/dist/{PillShell-ChTB_koa.d.mts → PillShell-BA7KK1zS.d.mts} +2 -2
  146. package/dist/PillShell.d.mts +1 -1
  147. package/dist/{Popover-opVa9Xhc.mjs → Popover-ZAj03lws.mjs} +15 -2
  148. package/dist/Popover-ZAj03lws.mjs.map +1 -0
  149. package/dist/ProgressIndicator-CQg08vuA.mjs +188 -0
  150. package/dist/ProgressIndicator-CQg08vuA.mjs.map +1 -0
  151. package/dist/ProgressIndicator-D85HQGSx.d.mts +66 -0
  152. package/dist/ProgressIndicator.d.mts +2 -66
  153. package/dist/{PseudoClassProps-CdRF3QNn.d.mts → PseudoClassProps-BHs8TX_3.d.mts} +1 -1
  154. package/dist/PseudoClassProps.d.mts +1 -1
  155. package/dist/{Radio-Ds1pODKw.mjs → Radio-CYV290JI.mjs} +2 -2
  156. package/dist/{Radio-Ds1pODKw.mjs.map → Radio-CYV290JI.mjs.map} +1 -1
  157. package/dist/{RadioGroup-CxL6LW4q.d.mts → RadioGroup-Cq3KV1TN.d.mts} +1 -1
  158. package/dist/{RadioGroup-HIC9V2hO.mjs → RadioGroup-lWMMtu9V.mjs} +2 -2
  159. package/dist/{RadioGroup-HIC9V2hO.mjs.map → RadioGroup-lWMMtu9V.mjs.map} +1 -1
  160. package/dist/RadioGroup.d.mts +1 -1
  161. package/dist/{RangeCalendar-B7TwRJbg.d.mts → RangeCalendar-Mh7h74Tp.d.mts} +2 -2
  162. package/dist/RangeCalendar.d.mts +1 -1
  163. package/dist/RangeCalendarPresets.d.mts +1 -1
  164. package/dist/{RouterContext-B7N12wkK.d.mts → RouterContext-B3IU1jb0.d.mts} +2 -2
  165. package/dist/RouterContext.d.mts +1 -1
  166. package/dist/{RouterLink-Bq36EGjc.d.mts → RouterLink-CwAqTLC2.d.mts} +2 -2
  167. package/dist/RouterLink.d.mts +1 -1
  168. package/dist/RuleEditorFields.d.mts +2 -2
  169. package/dist/RulesPill.d.mts +1 -1
  170. package/dist/{SearchInput-D69WxMNq.d.mts → SearchInput-BGyUUcoz.d.mts} +2 -2
  171. package/dist/SearchInput.d.mts +1 -1
  172. package/dist/SectionHeading.d.mts +1 -1
  173. package/dist/{SegmentedControl-OHrfJiw0.mjs → SegmentedControl-BEbIcV3g.mjs} +13 -6
  174. package/dist/SegmentedControl-BEbIcV3g.mjs.map +1 -0
  175. package/dist/{SegmentedControl-vCnGsdXo.d.mts → SegmentedControl-DgDabSgr.d.mts} +2 -1
  176. package/dist/SegmentedControl.d.mts +1 -1
  177. package/dist/{Select-sQb4dQwT.d.mts → Select-wqTtGyga.d.mts} +3 -3
  178. package/dist/{Select-DE7uv9C8.mjs → Select-yC2t_gZb.mjs} +10 -8
  179. package/dist/Select-yC2t_gZb.mjs.map +1 -0
  180. package/dist/Select.d.mts +1 -1
  181. package/dist/SingleColumnLayout.d.mts +16 -0
  182. package/dist/{Spinner-DplDSBqf.mjs → Spinner-BlAg8_OX.mjs} +1 -1
  183. package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-BlAg8_OX.mjs.map} +1 -1
  184. package/dist/SplitColumnLayout.d.mts +19 -0
  185. package/dist/{Stack-ChsImaEY.mjs → Stack-Bkn0TUDe.mjs} +1 -1
  186. package/dist/{Stack-ChsImaEY.mjs.map → Stack-Bkn0TUDe.mjs.map} +1 -1
  187. package/dist/{Stack-8KGPQp0u.d.mts → Stack-CYqjBXe8.d.mts} +1 -1
  188. package/dist/Stack.d.mts +1 -1
  189. package/dist/StatusIndicator-DT2zNbkp.mjs +315 -0
  190. package/dist/StatusIndicator-DT2zNbkp.mjs.map +1 -0
  191. package/dist/{Sticker-C3Eb13OQ.mjs → Sticker-BLbgJxcH.mjs} +5 -8
  192. package/dist/Sticker-BLbgJxcH.mjs.map +1 -0
  193. package/dist/{Sticker-Bf9rhSkv.d.mts → Sticker-BmyKaxwx.d.mts} +4 -4
  194. package/dist/Sticker.d.mts +1 -1
  195. package/dist/StringValueControl.d.mts +1 -1
  196. package/dist/Tab.d.mts +1 -1
  197. package/dist/{TabBar-BepWbJHz.mjs → TabBar-Bj84q1Mr.mjs} +4 -7
  198. package/dist/{TabBar-BepWbJHz.mjs.map → TabBar-Bj84q1Mr.mjs.map} +1 -1
  199. package/dist/{Table-BefytM6w.d.mts → Table-DhdHUQ8V.d.mts} +1 -1
  200. package/dist/{Table-B1gRr2XT.mjs → Table-WqNfjasd.mjs} +22 -3
  201. package/dist/Table-WqNfjasd.mjs.map +1 -0
  202. package/dist/Table.d.mts +1 -1
  203. package/dist/{TableBody-BZ34-_wV.d.mts → TableBody-qoSvQDds.d.mts} +1 -1
  204. package/dist/TableBody.d.mts +1 -1
  205. package/dist/{TableBox-NP6bhtKb.mjs → TableBox-obl64W5Y.mjs} +22 -17
  206. package/dist/TableBox-obl64W5Y.mjs.map +1 -0
  207. package/dist/TableBox.d.mts +2 -2
  208. package/dist/{TableBoxCell-CHGw9HVj.d.mts → TableBoxCell-DzYMx4Ju.d.mts} +6 -6
  209. package/dist/TableBoxCell.d.mts +1 -1
  210. package/dist/TableBoxField.d.mts +4 -3
  211. package/dist/{TableBoxRow-BljsXKrL.d.mts → TableBoxRow-B4rFCvWK.d.mts} +3 -3
  212. package/dist/TableBoxRow.d.mts +1 -1
  213. package/dist/{TableBoxRowActions-h6HNEv9F.d.mts → TableBoxRowActions-qMKcVuTL.d.mts} +2 -2
  214. package/dist/TableBoxRowActions.d.mts +1 -1
  215. package/dist/{TableCell-DorRxyke.d.mts → TableCell-CGPQRc5g.d.mts} +2 -2
  216. package/dist/TableCell.d.mts +1 -1
  217. package/dist/{TableControls-CYTpBlQN.mjs → TableControls-RS_ozBsI.mjs} +219 -70
  218. package/dist/TableControls-RS_ozBsI.mjs.map +1 -0
  219. package/dist/{TableControls-BtGFiZeD.d.mts → TableControls-WP78qtET.d.mts} +4 -3
  220. package/dist/TableControls.d.mts +1 -1
  221. package/dist/{TableControlsContext-C3DYeUmB.d.mts → TableControlsContext-DZIZSyfX.d.mts} +2 -2
  222. package/dist/TableControlsContext.d.mts +1 -1
  223. package/dist/{TableHead-B0Fdldgw.d.mts → TableHead-36j-_oyn.d.mts} +1 -1
  224. package/dist/TableHead.d.mts +1 -1
  225. package/dist/{TableHeaderCell-C_7X8QAT.d.mts → TableHeaderCell-C7gp9j1X.d.mts} +1 -1
  226. package/dist/TableHeaderCell.d.mts +1 -1
  227. package/dist/{TableLayout-CXVVzq0e.d.mts → TableLayout-CQqIV0vj.d.mts} +1 -1
  228. package/dist/TableLayout.d.mts +1 -1
  229. package/dist/{TableRow-Dr61XJNw.d.mts → TableRow-BJZM8I8i.d.mts} +2 -2
  230. package/dist/TableRow.d.mts +1 -1
  231. package/dist/TableTH.d.mts +1 -1
  232. package/dist/{TableViewConfigurationDropdown-CCtwcB3I.d.mts → TableViewConfigurationDropdown-Dwy_9FBz.d.mts} +2 -2
  233. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  234. package/dist/{TechnicalSticker-_LtE-PRY.mjs → TechnicalSticker-CL0zkOAj.mjs} +1 -1
  235. package/dist/{TechnicalSticker-_LtE-PRY.mjs.map → TechnicalSticker-CL0zkOAj.mjs.map} +1 -1
  236. package/dist/{Text-DD_W_ixb.d.mts → Text-DbtTa83E.d.mts} +3 -3
  237. package/dist/Text.d.mts +1 -1
  238. package/dist/{TextArea-DOofaXJi.d.mts → TextArea-CbxF6u7z.d.mts} +2 -2
  239. package/dist/{TextArea-8TuVvmvj.mjs → TextArea-CfZr5Sk4.mjs} +2 -2
  240. package/dist/{TextArea-8TuVvmvj.mjs.map → TextArea-CfZr5Sk4.mjs.map} +1 -1
  241. package/dist/TextArea.d.mts +1 -1
  242. package/dist/{TextUnderlineTooltip-BPLKU9wu.d.mts → TextUnderlineTooltip-BgLQuK38.d.mts} +2 -2
  243. package/dist/TextUnderlineTooltip.d.mts +1 -1
  244. package/dist/Tile.d.mts +1 -1
  245. package/dist/Toast.d.mts +1 -1
  246. package/dist/{Toggle-2nrUX591.d.mts → Toggle-BYMLrPXk.d.mts} +3 -1
  247. package/dist/{Toggle-Dcn2Rqgm.mjs → Toggle-D4ZaUcVt.mjs} +11 -5
  248. package/dist/Toggle-D4ZaUcVt.mjs.map +1 -0
  249. package/dist/Toggle.d.mts +1 -1
  250. package/dist/{Tooltip-Cnqf1-tx.d.mts → Tooltip-4pshzB_i.d.mts} +2 -2
  251. package/dist/Tooltip.d.mts +1 -1
  252. package/dist/{TruncatedText-g2T5HlqX.d.mts → TruncatedText-O7hE3w0O.d.mts} +1 -1
  253. package/dist/VersionHistory.d.mts +23 -0
  254. package/dist/VersionHistoryItem-CIcEgl0K.d.mts +54 -0
  255. package/dist/VersionHistoryItem.d.mts +2 -0
  256. package/dist/WizardModal.d.mts +41 -0
  257. package/dist/accordionTitleTypography-CNB1w3kn.d.mts +17 -0
  258. package/dist/accordionTitleTypography.d.mts +2 -0
  259. package/dist/assertNever.d.mts +5 -0
  260. package/dist/{codec-CoX6LfOY.d.mts → codec-BXVBsB8Y.d.mts} +2 -2
  261. package/dist/codec.d.mts +1 -1
  262. package/dist/{color-Bt0Lv1e3.d.mts → color-3UO63ocQ.d.mts} +9 -4
  263. package/dist/components/Accordion/index.d.mts +4 -0
  264. package/dist/components/Accordion/index.mjs +330 -0
  265. package/dist/components/Accordion/index.mjs.map +1 -0
  266. package/dist/components/Attribute/index.mjs +2 -2
  267. package/dist/components/Badge/index.mjs +1 -1
  268. package/dist/components/Banner/index.mjs +1 -1
  269. package/dist/components/BottomPanel/index.mjs +5 -3
  270. package/dist/components/BottomPanel/index.mjs.map +1 -1
  271. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  272. package/dist/components/Breadcrumbs/index.mjs +1 -1
  273. package/dist/components/Button/index.d.mts +2 -2
  274. package/dist/components/Button/index.mjs +1 -1
  275. package/dist/components/ButtonGroup/index.mjs +2 -2
  276. package/dist/components/Card/index.d.mts +2 -2
  277. package/dist/components/CardV2/index.d.mts +1 -1
  278. package/dist/components/CardV2/index.mjs +1 -1
  279. package/dist/components/Checkbox/index.d.mts +1 -1
  280. package/dist/components/Checkbox/index.mjs +1 -1
  281. package/dist/components/CodeHighlight/index.mjs +3 -1
  282. package/dist/components/CodeHighlight/index.mjs.map +1 -1
  283. package/dist/components/Combobox/index.d.mts +2 -2
  284. package/dist/components/Combobox/index.mjs +1 -1
  285. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  286. package/dist/components/DataTable/TableControls/index.d.mts +19 -19
  287. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  288. package/dist/components/DataTable/index.mjs +27 -16
  289. package/dist/components/DataTable/index.mjs.map +1 -1
  290. package/dist/components/DataTable/types.d.mts +2 -2
  291. package/dist/components/DatePicker/index.d.mts +5 -5
  292. package/dist/components/DatePicker/index.mjs +1 -1
  293. package/dist/components/DropdownButton/index.mjs +1 -1
  294. package/dist/components/DropdownMenu/index.d.mts +1 -1
  295. package/dist/components/DropdownMenu/index.mjs +1 -1
  296. package/dist/components/FloatingPanel/index.mjs +10 -7
  297. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  298. package/dist/components/FormControl/index.d.mts +2 -2
  299. package/dist/components/FormControl/index.mjs +2 -2
  300. package/dist/components/FormField/index.d.mts +1 -1
  301. package/dist/components/FormField/index.mjs +1 -1
  302. package/dist/components/Grid/index.d.mts +2 -2
  303. package/dist/components/Grid/index.mjs +2 -85
  304. package/dist/components/HoverCopyableField/index.mjs +1 -1
  305. package/dist/components/ImageTile/index.mjs +13 -9
  306. package/dist/components/ImageTile/index.mjs.map +1 -1
  307. package/dist/components/Input/index.d.mts +1 -1
  308. package/dist/components/Input/index.mjs +1 -1
  309. package/dist/components/Link/index.mjs +1 -78
  310. package/dist/components/ListBox/index.d.mts +3 -3
  311. package/dist/components/ListBox/index.mjs +1 -1
  312. package/dist/components/LoadingShimmer/index.mjs +1 -1
  313. package/dist/components/MaskedInput/index.mjs +1 -1
  314. package/dist/components/Menu/index.d.mts +1 -1
  315. package/dist/components/Menu/index.mjs +1 -1
  316. package/dist/components/Modal/index.d.mts +1 -1
  317. package/dist/components/Modal/index.mjs +1 -257
  318. package/dist/components/PageHeader/index.mjs +1 -1
  319. package/dist/components/Pagination/index.d.mts +3 -3
  320. package/dist/components/Pagination/index.mjs +1 -1
  321. package/dist/components/Pii/index.mjs +1 -1
  322. package/dist/components/Popover/index.mjs +1 -1
  323. package/dist/components/ProgressBar/index.mjs +1 -2
  324. package/dist/components/ProgressBar/index.mjs.map +1 -1
  325. package/dist/components/ProgressIndicator/index.d.mts +2 -2
  326. package/dist/components/ProgressIndicator/index.mjs +1 -187
  327. package/dist/components/Radio/index.mjs +1 -1
  328. package/dist/components/RadioGroup/index.d.mts +1 -1
  329. package/dist/components/RadioGroup/index.mjs +1 -1
  330. package/dist/components/RightPanel/index.mjs +10 -7
  331. package/dist/components/RightPanel/index.mjs.map +1 -1
  332. package/dist/components/SegmentedControl/index.d.mts +1 -1
  333. package/dist/components/SegmentedControl/index.mjs +1 -1
  334. package/dist/components/Select/index.d.mts +1 -1
  335. package/dist/components/Select/index.mjs +1 -1
  336. package/dist/components/Slider/index.mjs +1 -1
  337. package/dist/components/Slider/index.mjs.map +1 -1
  338. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +2 -105
  339. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +1 -1
  340. package/dist/components/Spinner/index.mjs +1 -1
  341. package/dist/components/Stack/index.d.mts +1 -1
  342. package/dist/components/Stack/index.mjs +1 -1
  343. package/dist/components/StatusIndicator/index.mjs +1 -314
  344. package/dist/components/Sticker/index.d.mts +1 -1
  345. package/dist/components/Sticker/index.mjs +1 -1
  346. package/dist/components/TabBar/index.mjs +1 -1
  347. package/dist/components/Table/index.d.mts +8 -8
  348. package/dist/components/Table/index.mjs +1 -1
  349. package/dist/components/TableBox/index.d.mts +2 -2
  350. package/dist/components/TableBox/index.mjs +1 -1
  351. package/dist/components/TechnicalSticker/index.mjs +1 -1
  352. package/dist/components/Text/index.d.mts +1 -1
  353. package/dist/components/TextArea/index.d.mts +1 -1
  354. package/dist/components/TextArea/index.mjs +1 -1
  355. package/dist/components/Tile/index.mjs +2 -2
  356. package/dist/components/Toast/index.mjs +2 -2
  357. package/dist/components/Toast/index.mjs.map +1 -1
  358. package/dist/components/Toggle/index.d.mts +1 -1
  359. package/dist/components/Toggle/index.mjs +1 -1
  360. package/dist/components/Tooltip/index.d.mts +3 -3
  361. package/dist/components/VersionHistory/index.d.mts +3 -0
  362. package/dist/components/VersionHistory/index.mjs +389 -0
  363. package/dist/components/VersionHistory/index.mjs.map +1 -0
  364. package/dist/components/WizardModal/index.d.mts +2 -0
  365. package/dist/components/WizardModal/index.mjs +106 -0
  366. package/dist/components/WizardModal/index.mjs.map +1 -0
  367. package/dist/compound-expression.d.mts +1 -1
  368. package/dist/{constants-D8bzZ-7B.d.mts → constants-BOxzLX-O.d.mts} +1 -1
  369. package/dist/constants.d.mts +1 -1
  370. package/dist/{createPath-BDYRvl57.d.mts → createPath-OeTC9kvS.d.mts} +2 -2
  371. package/dist/createPath.d.mts +1 -1
  372. package/dist/{date-filter-CZeChs9T.mjs → date-filter-BnzR6NxT.mjs} +1 -1
  373. package/dist/{date-filter-CZeChs9T.mjs.map → date-filter-BnzR6NxT.mjs.map} +1 -1
  374. package/dist/{date-range-rule-value-jZAHuxZJ.d.mts → date-range-rule-value-BRp5Bi7R.d.mts} +2 -2
  375. package/dist/date-range-rule-value.d.mts +1 -1
  376. package/dist/{date-rule-intent-CC1LdkE7.d.mts → date-rule-intent-CDBtV0ET.d.mts} +3 -3
  377. package/dist/date-rule-intent.d.mts +1 -1
  378. package/dist/display.d.mts +2 -2
  379. package/dist/fieldPickerOptions.d.mts +2 -2
  380. package/dist/{filter-size-context-BGczB5R9.d.mts → filter-size-context-CqvQ190x.d.mts} +2 -2
  381. package/dist/filter-size-context.d.mts +1 -1
  382. package/dist/format-date-value.d.mts +5 -0
  383. package/dist/helpers.d.mts +1 -1
  384. package/dist/{index-DalP_w0c.d.mts → index-BXSe73Xn.d.mts} +2 -2
  385. package/dist/{index-BRKXhLGa.d.mts → index-CyAok7As.d.mts} +2 -2
  386. package/dist/index-gVcIuWLd.d.mts +1 -0
  387. package/dist/{index-BZmGEbsA.d.mts → index-wKK9f9La.d.mts} +3 -3
  388. package/dist/index-zeAhjge4.d.mts +1 -0
  389. package/dist/index.d.mts +1 -1
  390. package/dist/index2.d.mts +1 -1
  391. package/dist/index3.d.mts +3 -3
  392. package/dist/index4.d.mts +1 -1
  393. package/dist/index5.d.mts +14 -14
  394. package/dist/{input-DCJivcWf.d.mts → input-C6cyiqm2.d.mts} +3 -3
  395. package/dist/inputFields.d.mts +14 -12
  396. package/dist/{intersperse-Bxcrxj2Q.mjs → intersperse-Df9zw7Bk.mjs} +1 -1
  397. package/dist/{intersperse-Bxcrxj2Q.mjs.map → intersperse-Df9zw7Bk.mjs.map} +1 -1
  398. package/dist/{jsonSchema-c_EfAj8y.d.mts → jsonSchema-CfGi1bzI.d.mts} +67 -11
  399. package/dist/lib/PDSProvider.d.mts +2 -2
  400. package/dist/lib/TruncatedText.d.mts +1 -1
  401. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  402. package/dist/lib/chainTypes.d.mts +17 -0
  403. package/dist/lib/chainTypes.mjs +0 -0
  404. package/dist/lib/color.d.mts +2 -2
  405. package/dist/lib/color.mjs +18 -11
  406. package/dist/lib/color.mjs.map +1 -1
  407. package/dist/lib/customFunctionSchema.d.mts +49 -0
  408. package/dist/lib/customFunctionSchema.mjs +299 -0
  409. package/dist/lib/customFunctionSchema.mjs.map +1 -0
  410. package/dist/lib/date-filter/index.d.mts +2 -2
  411. package/dist/lib/date-filter/index.mjs +1 -1
  412. package/dist/lib/jsonSchema.d.mts +2 -2
  413. package/dist/lib/jsonSchema.mjs +36 -11
  414. package/dist/lib/jsonSchema.mjs.map +1 -1
  415. package/dist/lib/jsonSchemaType.d.mts +7 -0
  416. package/dist/lib/jsonSchemaType.mjs +31 -0
  417. package/dist/lib/jsonSchemaType.mjs.map +1 -0
  418. package/dist/lib/letPointerDownReachDocument.d.mts +22 -0
  419. package/dist/lib/letPointerDownReachDocument.mjs +25 -0
  420. package/dist/lib/letPointerDownReachDocument.mjs.map +1 -0
  421. package/dist/lib/message.d.mts +1 -1
  422. package/dist/lib/methodChain.d.mts +3 -66
  423. package/dist/lib/methodChain.mjs +1 -237
  424. package/dist/lib/methodChainNormalize.d.mts +2 -2
  425. package/dist/lib/methodChainTypes.d.mts +2 -23
  426. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  427. package/dist/lib/platformObject.d.mts +38 -0
  428. package/dist/lib/platformObject.mjs +79 -0
  429. package/dist/lib/platformObject.mjs.map +1 -0
  430. package/dist/lib/pseudoClass.d.mts +1 -1
  431. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  432. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  433. package/dist/lib/router/index.d.mts +5 -5
  434. package/dist/lib/schemaOptions.d.mts +173 -0
  435. package/dist/lib/schemaOptions.mjs +481 -0
  436. package/dist/lib/schemaOptions.mjs.map +1 -0
  437. package/dist/lib/semanticColor.d.mts +1 -1
  438. package/dist/lib/snakifyPath.d.mts +5 -0
  439. package/dist/lib/snakifyPath.mjs +11 -0
  440. package/dist/lib/snakifyPath.mjs.map +1 -0
  441. package/dist/{message-CjIHdhX1.d.mts → message-CblP0EjG.d.mts} +1 -1
  442. package/dist/methodChain-DAQxLgxt.mjs +241 -0
  443. package/dist/methodChain-DAQxLgxt.mjs.map +1 -0
  444. package/dist/methodChain-Pk1C3i_E.d.mts +66 -0
  445. package/dist/methodChainTypes-CqWzfx0M.d.mts +23 -0
  446. package/dist/mixins/focus.d.mts +1 -1
  447. package/dist/mixins/hoverable.d.mts +2 -2
  448. package/dist/mixins/input.d.mts +1 -1
  449. package/dist/mixins/input.mjs +6 -14
  450. package/dist/mixins/input.mjs.map +1 -1
  451. package/dist/mixins/menuItem.d.mts +2 -2
  452. package/dist/mixins/scrollbar.d.mts +10 -0
  453. package/dist/mixins/scrollbar.mjs +31 -0
  454. package/dist/mixins/scrollbar.mjs.map +1 -0
  455. package/dist/mixins/text.d.mts +1 -1
  456. package/dist/{operators-x_ZENhrT.d.mts → operators-CoXL5Hv6.d.mts} +2 -2
  457. package/dist/operators.d.mts +1 -1
  458. package/dist/{palette-qgPRWgUN.d.mts → palette-CxXUs1Fu.d.mts} +3 -3
  459. package/dist/palette.d.mts +1 -1
  460. package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
  461. package/dist/patterns/PageLayout/index.d.mts +4 -1
  462. package/dist/patterns/PageLayout/index.mjs +99 -2
  463. package/dist/patterns/PageLayout/index.mjs.map +1 -1
  464. package/dist/reactRouterFallback.d.mts +1 -1
  465. package/dist/relative-date-label.d.mts +1 -1
  466. package/dist/scrollExpandedItemIntoView.d.mts +12 -0
  467. package/dist/{semantic-DUctmpu_.d.mts → semantic-CFMBsuiJ.d.mts} +2 -2
  468. package/dist/{semanticColor-IAhXS17y.d.mts → semanticColor-DuJCmDrH.d.mts} +3 -3
  469. package/dist/{text-DjTGRUM1.d.mts → text-D8HPjiEX.d.mts} +1 -1
  470. package/dist/{theme-DKiszVRN.d.mts → theme-BcaR-Au5.d.mts} +3 -3
  471. package/dist/theme.d.mts +1 -1
  472. package/dist/time-range.d.mts +7 -0
  473. package/dist/tone.d.mts +3 -3
  474. package/dist/{types-CcZbBH0e.d.mts → types-BCiq4hGv.d.mts} +1 -1
  475. package/dist/types-BGMmkUpy.d.mts +105 -0
  476. package/dist/{types-N8PYonjD.d.mts → types-C4WUSW3e.d.mts} +7 -2
  477. package/dist/{types-CuQSgl1F.d.mts → types-CkpixGWr.d.mts} +1 -1
  478. package/dist/{types-D8rWSj3z.d.mts → types-Cl-w8tYc.d.mts} +1 -1
  479. package/dist/{types-gnF3MPfk2.d.mts → types-CoVZwrMW.d.mts} +2 -2
  480. package/dist/{types-RWjW1d9I.d.mts → types-DgyGecdM.d.mts} +1 -1
  481. package/dist/types.d.mts +1 -1
  482. package/dist/types2.d.mts +1 -1
  483. package/dist/types3.d.mts +1 -1
  484. package/dist/types4.d.mts +1 -1
  485. package/dist/types5.d.mts +1 -1
  486. package/dist/types6.d.mts +1 -1
  487. package/dist/{url-state-C2gl07_y.d.mts → url-state-8j_ef8Uf.d.mts} +2 -2
  488. package/dist/url-state.d.mts +1 -1
  489. package/dist/useComboboxFooterAction.d.mts +1 -1
  490. package/dist/{useFilterStateV2-BQYcAdKR.d.mts → useFilterStateV2-CW6eght1.d.mts} +3 -3
  491. package/dist/useFilterStateV2.d.mts +1 -1
  492. package/dist/{useFormField-DDbo-ExT.d.mts → useFormField-CLRZkUZt.d.mts} +4 -2
  493. package/dist/{useFormField-DsvC5dOb.mjs → useFormField-XezSxho_.mjs} +3 -2
  494. package/dist/useFormField-XezSxho_.mjs.map +1 -0
  495. package/dist/useFormField.d.mts +1 -1
  496. package/dist/{useFormGroup-CH3kiXoa.mjs → useFormGroup-C7Cax8zO.mjs} +1 -1
  497. package/dist/{useFormGroup-CH3kiXoa.mjs.map → useFormGroup-C7Cax8zO.mjs.map} +1 -1
  498. package/dist/{useLocationPathname-K2N4fw8j.d.mts → useLocationPathname-DH5Tdq5X.d.mts} +1 -1
  499. package/dist/useLocationPathname.d.mts +1 -1
  500. package/dist/{useTableBoxDragAndDrop-CbbH3pMK.d.mts → useTableBoxDragAndDrop-Da4TiYBT.d.mts} +1 -1
  501. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  502. package/dist/useTruncation.d.mts +1 -1
  503. package/dist/{utilities-D0EhDri-.d.mts → utilities-DcsbI71T.d.mts} +1 -1
  504. package/dist/utilities.d.mts +1 -1
  505. package/dist/utils/storybook.mjs +1 -1
  506. package/dist/utils/testing.d.mts +1 -1
  507. package/dist/utils/testing.mjs.map +1 -1
  508. package/dist/utils.d.mts +1 -1
  509. package/dist/{validation-CMtfUd-R.d.mts → validation-BgwNghi2.d.mts} +3 -3
  510. package/dist/validation.d.mts +1 -1
  511. package/dist/{value-control-resolver-Au9JNS5z.d.mts → value-control-resolver-B0HDRxRN.d.mts} +3 -2
  512. package/dist/value-control-resolver.d.mts +1 -1
  513. package/dist/variables/effect.d.mts +1 -1
  514. package/dist/variables/semantic.d.mts +1 -1
  515. package/dist/variables/semantic.mjs +15 -18
  516. package/dist/variables/semantic.mjs.map +1 -1
  517. package/llms.txt +10 -1
  518. package/package.json +27 -6
  519. package/skills/ui-authoring/COMPONENTS.md +6 -1
  520. package/skills/ui-authoring/PATTERNS.md +74 -115
  521. package/dist/Combobox-1M6EwVmq.mjs.map +0 -1
  522. package/dist/DatePicker-D9JurBBj.mjs.map +0 -1
  523. package/dist/DropdownMenu-CuKSNxc9.mjs.map +0 -1
  524. package/dist/FormControl-BEk4F1EV.mjs.map +0 -1
  525. package/dist/FormField-ByT0avVx.mjs.map +0 -1
  526. package/dist/Input-Bc2yWH3j.mjs.map +0 -1
  527. package/dist/ListBox-CFBhILRy.mjs.map +0 -1
  528. package/dist/LoadingShimmer-Dizk2sZu.mjs.map +0 -1
  529. package/dist/Popover-opVa9Xhc.mjs.map +0 -1
  530. package/dist/SegmentedControl-OHrfJiw0.mjs.map +0 -1
  531. package/dist/Select-DE7uv9C8.mjs.map +0 -1
  532. package/dist/Sticker-C3Eb13OQ.mjs.map +0 -1
  533. package/dist/Table-B1gRr2XT.mjs.map +0 -1
  534. package/dist/TableBox-NP6bhtKb.mjs.map +0 -1
  535. package/dist/TableControls-CYTpBlQN.mjs.map +0 -1
  536. package/dist/Toggle-Dcn2Rqgm.mjs.map +0 -1
  537. package/dist/components/Grid/index.mjs.map +0 -1
  538. package/dist/components/Link/index.mjs.map +0 -1
  539. package/dist/components/Modal/index.mjs.map +0 -1
  540. package/dist/components/ProgressIndicator/index.mjs.map +0 -1
  541. package/dist/components/StatusIndicator/index.mjs.map +0 -1
  542. package/dist/fieldSchemaTypes-BVYSm74B.d.mts +0 -39
  543. package/dist/lib/fieldSchemaTypes.d.mts +0 -2
  544. package/dist/lib/fieldSchemaTypes.mjs +0 -41
  545. package/dist/lib/fieldSchemaTypes.mjs.map +0 -1
  546. package/dist/lib/methodChain.mjs.map +0 -1
  547. package/dist/useFormField-DsvC5dOb.mjs.map +0 -1
  548. /package/dist/{index--p6oQT9I.d.mts → index-B24gUwOx.d.mts} +0 -0
  549. /package/dist/{index-B33elXxm.d.mts → index-BFnNtGdX.d.mts} +0 -0
  550. /package/dist/{index-BO_854F2.d.mts → index-BNRXMhlr.d.mts} +0 -0
  551. /package/dist/{index-BrGZHEgX.d.mts → index-BPiqSRRl.d.mts} +0 -0
  552. /package/dist/{index-BwAfCVZH2.d.mts → index-BYd3Btr1.d.mts} +0 -0
  553. /package/dist/{index-CRo77wc3.d.mts → index-Bt4QNofW.d.mts} +0 -0
  554. /package/dist/{index-CX869wwk.d.mts → index-CEqOS-7M.d.mts} +0 -0
  555. /package/dist/{index-CsuikFeJ.d.mts → index-CIABef8t.d.mts} +0 -0
  556. /package/dist/{index-CuYZJcK3.d.mts → index-CTHojwxd.d.mts} +0 -0
  557. /package/dist/{index-CzItj62a.d.mts → index-Cm-1i165.d.mts} +0 -0
  558. /package/dist/{index-D13oYj4_.d.mts → index-DB7t8whN.d.mts} +0 -0
  559. /package/dist/{index-D4DUvwPf.d.mts → index-DBGd4WeR.d.mts} +0 -0
  560. /package/dist/{index-DMRtRo7y.d.mts → index-DGsJdI5l.d.mts} +0 -0
  561. /package/dist/{index-DXJd7-2Z.d.mts → index-DWfPppPU.d.mts} +0 -0
  562. /package/dist/{index-DZlqSwCF.d.mts → index-DedbSZMv.d.mts} +0 -0
  563. /package/dist/{index-Dflz2i1X.d.mts → index-Jh0C5PIG.d.mts} +0 -0
  564. /package/dist/{index-DkrC-i1D.d.mts → index-NKYLt_R9.d.mts} +0 -0
  565. /package/dist/{index-DztUdPP_.d.mts → index-Qwqzz3XM.d.mts} +0 -0
  566. /package/dist/{index-Rvd9MEUQ.d.mts → index-VWno75SQ.d.mts} +0 -0
  567. /package/dist/{index-bHnO4ZKt.d.mts → index-fxXoW-qc.d.mts} +0 -0
@@ -0,0 +1,5 @@
1
+ //#region lib/assertNever.d.ts
2
+ declare function assertNever(value: never): never;
3
+ //#endregion
4
+ export { assertNever };
5
+ //# sourceMappingURL=assertNever.d.mts.map
@@ -1,4 +1,4 @@
1
- import { a as DateFilterPreset, c as RelativeDateFilterValue, n as AbsoluteDateRange, o as DateFilterValue } from "./types-D8rWSj3z.mjs";
1
+ import { a as DateFilterPreset, c as RelativeDateFilterValue, n as AbsoluteDateRange, o as DateFilterValue } from "./types-Cl-w8tYc.mjs";
2
2
  import { DateTime } from "luxon";
3
3
 
4
4
  //#region lib/date-filter/codec.d.ts
@@ -26,4 +26,4 @@ declare function isRelative(value: DateFilterValue): value is RelativeDateFilter
26
26
  declare function formatDateFilterValue(value: DateFilterValue): string | null;
27
27
  //#endregion
28
28
  export { selectedPresetFor as a, resolveDateFilterValue as i, isRelative as n, parseDateFilterValue as r, formatDateFilterValue as t };
29
- //# sourceMappingURL=codec-CoX6LfOY.d.mts.map
29
+ //# sourceMappingURL=codec-BXVBsB8Y.d.mts.map
package/dist/codec.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as selectedPresetFor, i as resolveDateFilterValue, n as isRelative, r as parseDateFilterValue, t as formatDateFilterValue } from "./codec-CoX6LfOY.mjs";
1
+ import { a as selectedPresetFor, i as resolveDateFilterValue, n as isRelative, r as parseDateFilterValue, t as formatDateFilterValue } from "./codec-BXVBsB8Y.mjs";
2
2
  export { formatDateFilterValue, isRelative, parseDateFilterValue, resolveDateFilterValue, selectedPresetFor };
@@ -1,4 +1,4 @@
1
- import { t as CssPercentage } from "./semantic-DUctmpu_.mjs";
1
+ import { t as CssPercentage } from "./semantic-CFMBsuiJ.mjs";
2
2
  import { Color } from "@persona/design-tokens";
3
3
 
4
4
  //#region lib/color.d.ts
@@ -13,8 +13,13 @@ type PdsColor = Color | CssColor;
13
13
  declare const transparent: CssColor;
14
14
  /** Percentage token as a unitless `opacity`; percentage `opacity` is below the browserslist floor. */
15
15
  declare const opacityOf: (amount: CssPercentage) => string;
16
- /** `rgba()` rather than `color-mix()`: browserslist still includes IE 11 and iOS Safari < 16.2. */
16
+ /** Full alpha collapses to `rgb()`; partial alpha stays `rgba()`. */
17
17
  declare const withAlpha: (color: Color, amount: CssPercentage) => CssColor;
18
+ /**
19
+ * Source-over composite of `overlay` at `amount` onto `base`, as an opaque `rgb()`.
20
+ * Sticky cells that inherit a translucent wash paint it a second time.
21
+ */
22
+ declare const opaqueOver: (overlay: Color, amount: CssPercentage, base: Color) => CssColor;
18
23
  //#endregion
19
- export { withAlpha as a, transparent as i, PdsColor as n, opacityOf as r, CssColor as t };
20
- //# sourceMappingURL=color-Bt0Lv1e3.d.mts.map
24
+ export { transparent as a, opaqueOver as i, PdsColor as n, withAlpha as o, opacityOf as r, CssColor as t };
25
+ //# sourceMappingURL=color-3UO63ocQ.d.mts.map
@@ -0,0 +1,4 @@
1
+ import { n as AccordionTitleTypography, t as AccordionSize } from "../../accordionTitleTypography-CNB1w3kn.mjs";
2
+ import { AccordionTitleHeadingAs } from "../../AccordionItem.mjs";
3
+ import { Accordion, AccordionItemProps, AccordionProps } from "../../Accordion.mjs";
4
+ export { Accordion, Accordion as default, type AccordionItemProps, type AccordionProps, type AccordionSize, type AccordionTitleHeadingAs, type AccordionTitleTypography };
@@ -0,0 +1,330 @@
1
+ import { a as styled, r as css } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
+ import { HeadlessAriaButton } from "../../lib/HeadlessAriaButton.mjs";
3
+ import { TruncatedText } from "../../lib/TruncatedText.mjs";
4
+ import { semanticColor } from "../../lib/semanticColor.mjs";
5
+ import { i as Paragraph, n as Heading$1 } from "../../Text-BdluS7Fy.mjs";
6
+ import "../../variables/transitions.mjs";
7
+ import { isFocusedVisible, isNotDisabled } from "../../lib/pseudoClass.mjs";
8
+ import { focusOutlineControlled } from "../../mixins/focus.mjs";
9
+ import { n as Stack, t as HStack } from "../../Stack-Bkn0TUDe.mjs";
10
+ import { Color, Spacing } from "@persona/design-tokens";
11
+ import { useLayoutEffect, useRef } from "react";
12
+ import { Disclosure, DisclosurePanel } from "react-aria-components";
13
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
14
+ import { ChevronDownIcon, ChevronRightIcon } from "@persona/icons/12px";
15
+ //#region components/Accordion/scrollExpandedItemIntoView.ts
16
+ const SCROLL_ALIGN_THRESHOLD_PX = 4;
17
+ const prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
18
+ const getScrollBehavior = () => prefersReducedMotion() ? "auto" : "smooth";
19
+ const isScrollableOverflow = (overflowY) => overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay";
20
+ const findScrollContainer = (element) => {
21
+ let parent = element.parentElement;
22
+ while (parent) {
23
+ const { overflowY } = getComputedStyle(parent);
24
+ if (isScrollableOverflow(overflowY) && parent.scrollHeight > parent.clientHeight) return parent;
25
+ parent = parent.parentElement;
26
+ }
27
+ return null;
28
+ };
29
+ const getContainerRect = (container) => {
30
+ if (container) return container.getBoundingClientRect();
31
+ return {
32
+ top: 0,
33
+ bottom: window.innerHeight
34
+ };
35
+ };
36
+ const scrollBy = (container, deltaY) => {
37
+ if (Math.abs(deltaY) <= SCROLL_ALIGN_THRESHOLD_PX) return;
38
+ const behavior = getScrollBehavior();
39
+ if (container) {
40
+ container.scrollTo({
41
+ top: container.scrollTop + deltaY,
42
+ behavior
43
+ });
44
+ return;
45
+ }
46
+ window.scrollBy({
47
+ top: deltaY,
48
+ behavior
49
+ });
50
+ };
51
+ const scrollExpandedItemIntoView = (target) => {
52
+ if (!target) return;
53
+ const { itemElement, triggerElement } = target;
54
+ const container = findScrollContainer(itemElement);
55
+ const containerRect = getContainerRect(container);
56
+ const itemRect = itemElement.getBoundingClientRect();
57
+ const triggerRect = triggerElement.getBoundingClientRect();
58
+ const overflowBottom = itemRect.bottom - containerRect.bottom;
59
+ if (overflowBottom > SCROLL_ALIGN_THRESHOLD_PX) {
60
+ const maxScrollWithoutHidingTrigger = Math.max(0, triggerRect.top - containerRect.top);
61
+ scrollBy(container, Math.min(overflowBottom, maxScrollWithoutHidingTrigger));
62
+ }
63
+ };
64
+ const scrollExpandedItemIntoViewAfterExpand = (target) => {
65
+ scrollExpandedItemIntoView(target);
66
+ if (!target) return;
67
+ const cleanups = [];
68
+ const resyncScroll = () => scrollExpandedItemIntoView(target);
69
+ const timeoutId = window.setTimeout(resyncScroll, .2 * 1e3);
70
+ cleanups.push(() => window.clearTimeout(timeoutId));
71
+ const panel = target.itemElement.querySelector("[data-accordion-panel]");
72
+ if (panel) {
73
+ const onTransitionEnd = (event) => {
74
+ if (event.target !== panel || event.propertyName !== "height") return;
75
+ resyncScroll();
76
+ };
77
+ panel.addEventListener("transitionend", onTransitionEnd);
78
+ cleanups.push(() => panel.removeEventListener("transitionend", onTransitionEnd));
79
+ }
80
+ const rafId = window.requestAnimationFrame(() => {
81
+ const innerRafId = window.requestAnimationFrame(resyncScroll);
82
+ cleanups.push(() => window.cancelAnimationFrame(innerRafId));
83
+ });
84
+ cleanups.push(() => window.cancelAnimationFrame(rafId));
85
+ return () => {
86
+ cleanups.forEach((cleanup) => cleanup());
87
+ };
88
+ };
89
+ const resolveAccordionTriggerElement = (itemElement) => {
90
+ if (!itemElement) return null;
91
+ return itemElement.querySelector("[slot=\"trigger\"]") ?? itemElement.querySelector("button");
92
+ };
93
+ //#endregion
94
+ //#region components/Accordion/AccordionItem.tsx
95
+ const SIZE_HEIGHT = {
96
+ sm: Spacing[5],
97
+ md: Spacing[6],
98
+ lg: Spacing[7]
99
+ };
100
+ const ItemContainer = styled(Disclosure)`
101
+ display: flex;
102
+ flex-direction: column;
103
+ position: relative;
104
+
105
+ &:focus-within {
106
+ z-index: 1;
107
+ }
108
+
109
+ ${({ $showDivider }) => $showDivider && css`
110
+ border-top: 1px solid
111
+ ${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
112
+ `}
113
+ `;
114
+ const ChevronContainer = styled.span`
115
+ display: flex;
116
+ flex-shrink: 0;
117
+ align-items: center;
118
+ justify-content: center;
119
+ width: ${Spacing[3]};
120
+ height: ${Spacing[3]};
121
+ color: ${({ theme }) => semanticColor(theme, "FgSecondary", Color.BorderIconSecondary)};
122
+ transition: color ${"200ms"} ease;
123
+
124
+ @media (prefers-reduced-motion: reduce) {
125
+ transition: none;
126
+ }
127
+ `;
128
+ const TriggerButton = styled(HeadlessAriaButton)`
129
+ width: 100%;
130
+ min-height: ${({ $size }) => SIZE_HEIGHT[$size]};
131
+ height: ${({ $size, $usesTitleTypographyOverride }) => $usesTitleTypographyOverride ? "auto" : SIZE_HEIGHT[$size]};
132
+ display: flex;
133
+ align-items: center;
134
+ text-align: left;
135
+ border-radius: 0;
136
+ background-color: transparent;
137
+ color: ${({ theme }) => semanticColor(theme, "FgPrimary", theme.color.text.primary)};
138
+ transition: background-color ${"200ms"} ease-in-out;
139
+ ${focusOutlineControlled}
140
+
141
+ @media (prefers-reduced-motion: reduce) {
142
+ transition: none;
143
+ }
144
+
145
+ &${isFocusedVisible}${isNotDisabled} {
146
+ position: relative;
147
+ z-index: 1;
148
+ }
149
+
150
+ &:disabled {
151
+ cursor: default;
152
+ color: ${({ theme }) => semanticColor(theme, "FgDisabled", theme.color.text.disabled)};
153
+ background-color: transparent;
154
+
155
+ ${ChevronContainer} {
156
+ color: ${({ theme }) => semanticColor(theme, "FgDisabled", Color.BorderIconDisabled)};
157
+ }
158
+ }
159
+
160
+ &:hover:not(:disabled) {
161
+ background-color: ${({ theme }) => semanticColor(theme, "SurfaceHover", Color.BackgroundInteractiveHover)};
162
+ }
163
+
164
+ &:not(:disabled):hover ${ChevronContainer},
165
+ &${isFocusedVisible}${isNotDisabled} ${ChevronContainer} {
166
+ color: ${({ theme }) => semanticColor(theme, "FgPrimary", Color.BorderIconPrimary)};
167
+ }
168
+ `;
169
+ const CollapseTitle = styled(HStack)`
170
+ width: 100%;
171
+ min-width: 0;
172
+ `;
173
+ const TitleWrapper = styled.span`
174
+ display: flex;
175
+ align-items: center;
176
+ min-width: 0;
177
+ `;
178
+ const Panel = styled(DisclosurePanel)`
179
+ height: var(--disclosure-panel-height);
180
+ overflow: clip;
181
+ transition: height ${"200ms"} ease-out;
182
+
183
+ @media (prefers-reduced-motion: reduce) {
184
+ transition: none;
185
+ }
186
+ `;
187
+ const TitleHeading = styled(Heading$1)`
188
+ margin: 0;
189
+ width: 100%;
190
+ min-width: 0;
191
+ font: inherit;
192
+ font-size: inherit;
193
+ line-height: inherit;
194
+ font-weight: inherit;
195
+ letter-spacing: inherit;
196
+ `;
197
+ const PanelContent = styled.div`
198
+ padding: ${Spacing[3]} ${Spacing[4]};
199
+ `;
200
+ const TitleText = styled.span`
201
+ min-width: 0;
202
+ flex: 1;
203
+ `;
204
+ const renderTitleLabel = (title, titleTypography, disabled) => {
205
+ const content = /* @__PURE__ */ jsx(TruncatedText, { children: title });
206
+ const textColor = disabled ? "disabled" : "primary";
207
+ if (titleTypography.variant === "heading") return /* @__PURE__ */ jsx(TitleText, { children: /* @__PURE__ */ jsx(TitleWrapper, { children: /* @__PURE__ */ jsx(Heading$1, {
208
+ as: "span",
209
+ color: textColor,
210
+ size: titleTypography.size,
211
+ children: content
212
+ }) }) });
213
+ return /* @__PURE__ */ jsx(TitleText, { children: /* @__PURE__ */ jsx(TitleWrapper, { children: /* @__PURE__ */ jsx(Paragraph, {
214
+ as: "span",
215
+ color: textColor,
216
+ size: titleTypography.size,
217
+ weight: titleTypography.weight ?? "normal",
218
+ children: content
219
+ }) }) });
220
+ };
221
+ const renderChevron = (isExpanded) => isExpanded ? /* @__PURE__ */ jsx(ChevronDownIcon, {}) : /* @__PURE__ */ jsx(ChevronRightIcon, {});
222
+ const ExpandScrollSync = ({ disabled, isExpanded, itemRef }) => {
223
+ const wasExpandedRef = useRef(isExpanded);
224
+ useLayoutEffect(() => {
225
+ if (disabled) {
226
+ wasExpandedRef.current = isExpanded;
227
+ return;
228
+ }
229
+ const didExpand = isExpanded && !wasExpandedRef.current;
230
+ wasExpandedRef.current = isExpanded;
231
+ const itemElement = itemRef.current;
232
+ const triggerElement = resolveAccordionTriggerElement(itemElement);
233
+ if (!didExpand || !itemElement || !triggerElement) return;
234
+ return scrollExpandedItemIntoViewAfterExpand({
235
+ itemElement,
236
+ triggerElement
237
+ });
238
+ }, [
239
+ disabled,
240
+ isExpanded,
241
+ itemRef
242
+ ]);
243
+ return null;
244
+ };
245
+ const AccordionItem = ({ title, children, defaultExpanded = false, disabled = false, showDivider = false, size, titleTypography, usesTitleTypographyOverride, titleHeadingAs }) => {
246
+ const itemRef = useRef(null);
247
+ return /* @__PURE__ */ jsx(ItemContainer, {
248
+ ref: itemRef,
249
+ defaultExpanded: disabled ? false : defaultExpanded,
250
+ isDisabled: disabled,
251
+ $showDivider: showDivider,
252
+ children: ({ isExpanded }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
253
+ /* @__PURE__ */ jsx(ExpandScrollSync, {
254
+ disabled,
255
+ isExpanded,
256
+ itemRef
257
+ }),
258
+ /* @__PURE__ */ jsx(TitleHeading, {
259
+ forwardedAs: titleHeadingAs,
260
+ size: "xsm",
261
+ children: /* @__PURE__ */ jsx(TriggerButton, {
262
+ slot: "trigger",
263
+ $size: size,
264
+ $usesTitleTypographyOverride: usesTitleTypographyOverride,
265
+ isDisabled: disabled,
266
+ children: /* @__PURE__ */ jsxs(CollapseTitle, {
267
+ align: "center",
268
+ spacing: Spacing[1],
269
+ children: [/* @__PURE__ */ jsx(ChevronContainer, {
270
+ "aria-hidden": "true",
271
+ children: renderChevron(isExpanded)
272
+ }), renderTitleLabel(title, titleTypography, disabled)]
273
+ })
274
+ })
275
+ }),
276
+ /* @__PURE__ */ jsx(Panel, {
277
+ "data-accordion-panel": true,
278
+ children: /* @__PURE__ */ jsx(PanelContent, { children })
279
+ })
280
+ ] })
281
+ });
282
+ };
283
+ //#endregion
284
+ //#region components/Accordion/accordionTitleTypography.ts
285
+ const getDefaultTitleTypography = (size) => {
286
+ if (size === "lg") return {
287
+ variant: "heading",
288
+ size: "xsm"
289
+ };
290
+ if (size === "sm") return {
291
+ variant: "paragraph",
292
+ size: "sm",
293
+ weight: "normal"
294
+ };
295
+ return {
296
+ variant: "paragraph",
297
+ size: "md",
298
+ weight: "bold"
299
+ };
300
+ };
301
+ const resolveTitleTypography = (size, titleTypography) => titleTypography ?? getDefaultTitleTypography(size);
302
+ //#endregion
303
+ //#region components/Accordion/Accordion.tsx
304
+ const Accordion = ({ items, size = "md", dividers = false, titleTypography, titleHeadingAs = "h3", "aria-label": ariaLabel = "Accordion", className }) => {
305
+ if (items.length === 0) return null;
306
+ const resolvedTitleTypography = resolveTitleTypography(size, titleTypography);
307
+ const usesTitleTypographyOverride = titleTypography != null;
308
+ return /* @__PURE__ */ jsx(Stack, {
309
+ "aria-label": ariaLabel,
310
+ className,
311
+ fullWidth: true,
312
+ role: "group",
313
+ spacing: Spacing[0],
314
+ children: items.map((item, index) => /* @__PURE__ */ jsx(AccordionItem, {
315
+ defaultExpanded: item.defaultExpanded,
316
+ disabled: item.disabled,
317
+ showDivider: dividers,
318
+ size,
319
+ title: item.title,
320
+ titleHeadingAs,
321
+ titleTypography: resolvedTitleTypography,
322
+ usesTitleTypographyOverride,
323
+ children: item.children
324
+ }, item.id ?? `${item.title}-${index}`))
325
+ });
326
+ };
327
+ //#endregion
328
+ export { Accordion, Accordion as default };
329
+
330
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Heading"],"sources":["../../../components/Accordion/scrollExpandedItemIntoView.ts","../../../components/Accordion/AccordionItem.tsx","../../../components/Accordion/accordionTitleTypography.ts","../../../components/Accordion/Accordion.tsx"],"sourcesContent":["import { TransitionDurationInSeconds } from 'design-system/variables/transitions';\n\nexport type ScrollExpandedItemTarget = {\n itemElement: HTMLElement;\n triggerElement: HTMLElement;\n};\n\nconst SCROLL_ALIGN_THRESHOLD_PX = 4;\n\nconst prefersReducedMotion = () =>\n typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\nconst getScrollBehavior = (): ScrollBehavior => (prefersReducedMotion() ? 'auto' : 'smooth');\n\nconst isScrollableOverflow = (overflowY: string) =>\n overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay';\n\nexport const findScrollContainer = (element: HTMLElement): HTMLElement | null => {\n let parent = element.parentElement;\n\n while (parent) {\n const { overflowY } = getComputedStyle(parent);\n if (isScrollableOverflow(overflowY) && parent.scrollHeight > parent.clientHeight) {\n return parent;\n }\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst getContainerRect = (container: HTMLElement | null) => {\n if (container) {\n return container.getBoundingClientRect();\n }\n\n return {\n top: 0,\n bottom: window.innerHeight,\n } as Pick<DOMRect, 'top' | 'bottom'>;\n};\n\nconst scrollBy = (container: HTMLElement | null, deltaY: number) => {\n if (Math.abs(deltaY) <= SCROLL_ALIGN_THRESHOLD_PX) {\n return;\n }\n\n const behavior = getScrollBehavior();\n\n if (container) {\n container.scrollTo({ top: container.scrollTop + deltaY, behavior });\n return;\n }\n\n window.scrollBy({ top: deltaY, behavior });\n};\n\nexport const scrollExpandedItemIntoView = (target: ScrollExpandedItemTarget | null) => {\n if (!target) {\n return;\n }\n\n const { itemElement, triggerElement } = target;\n const container = findScrollContainer(itemElement);\n const containerRect = getContainerRect(container);\n const itemRect = itemElement.getBoundingClientRect();\n const triggerRect = triggerElement.getBoundingClientRect();\n const overflowBottom = itemRect.bottom - containerRect.bottom;\n\n if (overflowBottom > SCROLL_ALIGN_THRESHOLD_PX) {\n const maxScrollWithoutHidingTrigger = Math.max(0, triggerRect.top - containerRect.top);\n const deltaY = Math.min(overflowBottom, maxScrollWithoutHidingTrigger);\n scrollBy(container, deltaY);\n }\n};\n\nexport const scrollExpandedItemIntoViewAfterExpand = (target: ScrollExpandedItemTarget | null) => {\n scrollExpandedItemIntoView(target);\n\n if (!target) {\n return undefined;\n }\n\n const cleanups: Array<() => void> = [];\n const resyncScroll = () => scrollExpandedItemIntoView(target);\n\n const timeoutId = window.setTimeout(resyncScroll, TransitionDurationInSeconds.Fast * 1000);\n cleanups.push(() => window.clearTimeout(timeoutId));\n\n const panel = target.itemElement.querySelector<HTMLElement>('[data-accordion-panel]');\n if (panel) {\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.target !== panel || event.propertyName !== 'height') {\n return;\n }\n\n resyncScroll();\n };\n\n panel.addEventListener('transitionend', onTransitionEnd);\n cleanups.push(() => panel.removeEventListener('transitionend', onTransitionEnd));\n }\n\n const rafId = window.requestAnimationFrame(() => {\n const innerRafId = window.requestAnimationFrame(resyncScroll);\n cleanups.push(() => window.cancelAnimationFrame(innerRafId));\n });\n cleanups.push(() => window.cancelAnimationFrame(rafId));\n\n return () => {\n cleanups.forEach((cleanup) => cleanup());\n };\n};\n\nexport const resolveAccordionTriggerElement = (itemElement: HTMLElement | null) => {\n if (!itemElement) {\n return null;\n }\n\n return (\n itemElement.querySelector<HTMLElement>('[slot=\"trigger\"]') ??\n itemElement.querySelector<HTMLElement>('button')\n );\n};\n","import type { ReactNode, RefObject } from 'react';\nimport { useLayoutEffect, useRef } from 'react';\nimport { Disclosure, DisclosurePanel } from 'react-aria-components';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { ChevronDownIcon, ChevronRightIcon } from '@persona/icons/12px';\nimport { HStack } from 'design-system/components/Stack';\nimport { Heading, Paragraph } from 'design-system/components/Text';\nimport { HeadlessAriaButton } from 'design-system/lib/HeadlessAriaButton';\nimport { isFocusedVisible, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { focusOutlineControlled } from 'design-system/mixins/focus';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport type { AccordionSize, AccordionTitleTypography } from './accordionTitleTypography';\nimport {\n scrollExpandedItemIntoViewAfterExpand,\n resolveAccordionTriggerElement,\n} from './scrollExpandedItemIntoView';\n\nexport type AccordionTitleHeadingAs = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport type { AccordionSize, AccordionTitleTypography };\n\nconst SIZE_HEIGHT: Record<AccordionSize, string> = {\n sm: Spacing[5],\n md: Spacing[6],\n lg: Spacing[7],\n};\n\nconst ItemContainer = styled(Disclosure)<{ $showDivider: boolean }>`\n display: flex;\n flex-direction: column;\n position: relative;\n\n &:focus-within {\n z-index: 1;\n }\n\n ${({ $showDivider }) =>\n $showDivider &&\n css`\n border-top: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n `}\n`;\n\nconst ChevronContainer = styled.span`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: ${Spacing[3]};\n height: ${Spacing[3]};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n transition: color ${TransitionDuration.Fast} ease;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n`;\n\nconst TriggerButton = styled(HeadlessAriaButton)<{\n $size: AccordionSize;\n $usesTitleTypographyOverride: boolean;\n}>`\n width: 100%;\n min-height: ${({ $size }) => SIZE_HEIGHT[$size]};\n height: ${({ $size, $usesTitleTypographyOverride }) =>\n $usesTitleTypographyOverride ? 'auto' : SIZE_HEIGHT[$size]};\n display: flex;\n align-items: center;\n text-align: left;\n border-radius: 0;\n background-color: transparent;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', theme.color.text.primary)};\n transition: background-color ${TransitionDuration.Fast} ease-in-out;\n ${focusOutlineControlled}\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &${isFocusedVisible}${isNotDisabled} {\n position: relative;\n z-index: 1;\n }\n\n &:disabled {\n cursor: default;\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n background-color: transparent;\n\n ${ChevronContainer} {\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', Color.BorderIconDisabled)};\n }\n }\n\n &:hover:not(:disabled) {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceHover', Color.BackgroundInteractiveHover)};\n }\n\n &:not(:disabled):hover ${ChevronContainer},\n &${isFocusedVisible}${isNotDisabled} ${ChevronContainer} {\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.BorderIconPrimary)};\n }\n`;\n\nconst CollapseTitle = styled(HStack)`\n width: 100%;\n min-width: 0;\n`;\n\nconst TitleWrapper = styled.span`\n display: flex;\n align-items: center;\n min-width: 0;\n`;\n\nconst Panel = styled(DisclosurePanel)`\n height: var(--disclosure-panel-height);\n overflow: clip;\n transition: height ${TransitionDuration.Fast} ease-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n`;\n\nconst TitleHeading = styled(Heading)`\n margin: 0;\n width: 100%;\n min-width: 0;\n font: inherit;\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n`;\n\nconst PanelContent = styled.div`\n padding: ${Spacing[3]} ${Spacing[4]};\n`;\n\nconst TitleText = styled.span`\n min-width: 0;\n flex: 1;\n`;\n\nexport type AccordionItemComponentProps = {\n title: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n disabled?: boolean;\n showDivider?: boolean;\n size: AccordionSize;\n titleTypography: AccordionTitleTypography;\n usesTitleTypographyOverride: boolean;\n titleHeadingAs: AccordionTitleHeadingAs;\n};\n\nconst renderTitleLabel = (\n title: string,\n titleTypography: AccordionTitleTypography,\n disabled: boolean,\n) => {\n const content = <TruncatedText>{title}</TruncatedText>;\n const textColor = disabled ? 'disabled' : 'primary';\n\n if (titleTypography.variant === 'heading') {\n return (\n <TitleText>\n <TitleWrapper>\n <Heading as='span' color={textColor} size={titleTypography.size}>\n {content}\n </Heading>\n </TitleWrapper>\n </TitleText>\n );\n }\n\n return (\n <TitleText>\n <TitleWrapper>\n <Paragraph\n as='span'\n color={textColor}\n size={titleTypography.size}\n weight={titleTypography.weight ?? 'normal'}\n >\n {content}\n </Paragraph>\n </TitleWrapper>\n </TitleText>\n );\n};\n\nconst renderChevron = (isExpanded: boolean) =>\n isExpanded ? <ChevronDownIcon /> : <ChevronRightIcon />;\n\nconst ExpandScrollSync = ({\n disabled,\n isExpanded,\n itemRef,\n}: {\n disabled: boolean;\n isExpanded: boolean;\n itemRef: RefObject<HTMLElement | null>;\n}) => {\n const wasExpandedRef = useRef(isExpanded);\n\n useLayoutEffect(() => {\n if (disabled) {\n wasExpandedRef.current = isExpanded;\n return undefined;\n }\n\n const didExpand = isExpanded && !wasExpandedRef.current;\n wasExpandedRef.current = isExpanded;\n\n const itemElement = itemRef.current;\n const triggerElement = resolveAccordionTriggerElement(itemElement);\n\n if (!didExpand || !itemElement || !triggerElement) {\n return undefined;\n }\n\n return scrollExpandedItemIntoViewAfterExpand({\n itemElement,\n triggerElement,\n });\n }, [disabled, isExpanded, itemRef]);\n\n return null;\n};\n\nconst AccordionItem = ({\n title,\n children,\n defaultExpanded = false,\n disabled = false,\n showDivider = false,\n size,\n titleTypography,\n usesTitleTypographyOverride,\n titleHeadingAs,\n}: AccordionItemComponentProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n\n return (\n <ItemContainer\n ref={itemRef}\n defaultExpanded={disabled ? false : defaultExpanded}\n isDisabled={disabled}\n $showDivider={showDivider}\n >\n {({ isExpanded }) => (\n <>\n <ExpandScrollSync disabled={disabled} isExpanded={isExpanded} itemRef={itemRef} />\n <TitleHeading forwardedAs={titleHeadingAs} size='xsm'>\n <TriggerButton\n slot='trigger'\n $size={size}\n $usesTitleTypographyOverride={usesTitleTypographyOverride}\n isDisabled={disabled}\n >\n <CollapseTitle align='center' spacing={Spacing[1]}>\n <ChevronContainer aria-hidden='true'>{renderChevron(isExpanded)}</ChevronContainer>\n {renderTitleLabel(title, titleTypography, disabled)}\n </CollapseTitle>\n </TriggerButton>\n </TitleHeading>\n <Panel data-accordion-panel>\n <PanelContent>{children}</PanelContent>\n </Panel>\n </>\n )}\n </ItemContainer>\n );\n};\n\nexport default AccordionItem;\n","import type { HeadingSize, ParagraphSize } from 'design-system/mixins/text';\n\nexport type AccordionSize = 'sm' | 'md' | 'lg';\n\nexport type AccordionTitleTypography =\n | { variant: 'heading'; size: HeadingSize }\n | {\n variant: 'paragraph';\n size: Extract<ParagraphSize, 'sm' | 'md' | 'lg'>;\n weight?: 'normal' | 'bold';\n };\n\nexport const getDefaultTitleTypography = (size: AccordionSize): AccordionTitleTypography => {\n if (size === 'lg') {\n return { variant: 'heading', size: 'xsm' };\n }\n\n if (size === 'sm') {\n return { variant: 'paragraph', size: 'sm', weight: 'normal' };\n }\n\n return { variant: 'paragraph', size: 'md', weight: 'bold' };\n};\n\nexport const resolveTitleTypography = (\n size: AccordionSize,\n titleTypography?: AccordionTitleTypography,\n): AccordionTitleTypography => titleTypography ?? getDefaultTitleTypography(size);\n","import type { ReactNode } from 'react';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { Stack } from 'design-system/components/Stack';\n\nimport AccordionItem, {\n type AccordionSize,\n type AccordionTitleHeadingAs,\n type AccordionTitleTypography,\n} from './AccordionItem';\nimport { resolveTitleTypography } from './accordionTitleTypography';\n\nexport type AccordionItemProps = {\n id?: string;\n title: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n disabled?: boolean;\n};\n\nexport type AccordionProps = {\n items: AccordionItemProps[];\n size?: AccordionSize;\n dividers?: boolean;\n titleTypography?: AccordionTitleTypography;\n /**\n * Heading element for each item title (inside the trigger), matching Card section headings.\n * Defaults to `h3`; use a lower level when the page already uses higher headings.\n */\n titleHeadingAs?: AccordionTitleHeadingAs;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport const Accordion = ({\n items,\n size = 'md',\n dividers = false,\n titleTypography,\n titleHeadingAs = 'h3',\n 'aria-label': ariaLabel = 'Accordion',\n className,\n}: AccordionProps) => {\n if (items.length === 0) {\n return null;\n }\n\n const resolvedTitleTypography = resolveTitleTypography(size, titleTypography);\n const usesTitleTypographyOverride = titleTypography != null;\n\n return (\n <Stack aria-label={ariaLabel} className={className} fullWidth role='group' spacing={Spacing[0]}>\n {items.map((item, index) => (\n <AccordionItem\n key={item.id ?? `${item.title}-${index}`}\n defaultExpanded={item.defaultExpanded}\n disabled={item.disabled}\n showDivider={dividers}\n size={size}\n title={item.title}\n titleHeadingAs={titleHeadingAs}\n titleTypography={resolvedTitleTypography}\n usesTitleTypographyOverride={usesTitleTypographyOverride}\n >\n {item.children}\n </AccordionItem>\n ))}\n </Stack>\n );\n};\n\nexport default Accordion;\n"],"mappings":"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"}
@@ -3,8 +3,8 @@ import { semanticColor, semanticOnly } from "../../lib/semanticColor.mjs";
3
3
  import { i as Paragraph } from "../../Text-BdluS7Fy.mjs";
4
4
  import { r as HelperTooltip } from "../../Tooltip-C0FuZS1C.mjs";
5
5
  import { isHovered, isNotDisabled } from "../../lib/pseudoClass.mjs";
6
- import { t as IconButton } from "../../IconButton-CqTPMhjV.mjs";
7
- import { n as Sticker } from "../../Sticker-C3Eb13OQ.mjs";
6
+ import { t as IconButton } from "../../IconButton-CCLMYWVN.mjs";
7
+ import { n as Sticker } from "../../Sticker-BLbgJxcH.mjs";
8
8
  import { Color, Spacing, Typography } from "@persona/design-tokens";
9
9
  import { createContext, useContext, useEffect, useMemo, useRef } from "react";
10
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { t as Badge } from "../../Badge-BD0Ut46g.mjs";
1
+ import { t as Badge } from "../../Badge-COqUjFQu.mjs";
2
2
  export { Badge, Badge as default };
@@ -3,7 +3,7 @@ import { semanticOnly, semanticTokens } from "../../lib/semanticColor.mjs";
3
3
  import { paragraphMixins } from "../../mixins/text.mjs";
4
4
  import { withAlpha } from "../../lib/color.mjs";
5
5
  import { isActive, isFocused, isHovered, isNotDisabled } from "../../lib/pseudoClass.mjs";
6
- import { n as Button } from "../../IconButton-CqTPMhjV.mjs";
6
+ import { n as Button } from "../../IconButton-CCLMYWVN.mjs";
7
7
  import { Color, Spacing } from "@persona/design-tokens";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { XIcon } from "@persona/icons";
@@ -1,9 +1,10 @@
1
1
  import { a as styled, r as css } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { useResizablePanel } from "../../lib/useResizablePanel.mjs";
3
3
  import { Z_INDICES } from "../../lib/zindex.mjs";
4
- import { t as IconButton } from "../../IconButton-CqTPMhjV.mjs";
5
- import { t as Badge } from "../../Badge-BD0Ut46g.mjs";
6
- import { i as TabBar, r as Tab } from "../../TabBar-BepWbJHz.mjs";
4
+ import { semanticScrollbar } from "../../mixins/scrollbar.mjs";
5
+ import { t as IconButton } from "../../IconButton-CCLMYWVN.mjs";
6
+ import { t as Badge } from "../../Badge-COqUjFQu.mjs";
7
+ import { i as TabBar, r as Tab } from "../../TabBar-Bj84q1Mr.mjs";
7
8
  import { Color, Spacing } from "@persona/design-tokens";
8
9
  import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from "react";
9
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -151,6 +152,7 @@ const ContentContainer = styled.div`
151
152
  /* offset by the top row container height */
152
153
  height: calc(100% - ${Spacing[6]});
153
154
  overflow: auto;
155
+ ${semanticScrollbar}
154
156
  display: flex;
155
157
  flex-direction: column;
156
158
  min-height: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../components/BottomPanel/ResizeHandle.tsx","../../../components/BottomPanel/ResizableVerticalPanel.tsx","../../../components/BottomPanel/BottomPanel.tsx"],"sourcesContent":["import { type FC, type RefObject, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Z_INDICES } from '@persona/design-system/lib/zindex';\nimport { Spacing } from '@persona/design-tokens';\n\nconst DRAGGING_CLASSNAME = 'dragging';\n\ninterface ResizeHandleProps {\n ariaLabel: string;\n /** Fires on double-click or Enter/Space so the host can toggle/reset the size. */\n onDoubleClick?: () => void;\n /** Called on each pointer move with the new top edge position (clientY) in px. */\n onMoveTo: (position: number) => void;\n /** Called once when the drag ends (pointerup, cancel, or lost capture). */\n onRelease?: () => void;\n /** The panel being resized; its edge seeds the grab offset so the handle doesn't jump. */\n panelRef: RefObject<HTMLDivElement>;\n}\n\n// The visible line is 2px tall on the panel's top border; the hitbox is Spacing[2] tall and\n// straddles that border so it is easy to grab without covering the header row's controls.\nconst ResizeHandleContainer = styled.div`\n cursor: row-resize;\n position: absolute;\n height: ${Spacing[2]};\n top: -${Spacing[1]};\n left: 0;\n right: 0;\n z-index: ${Z_INDICES.dropdown};\n touch-action: none;\n\n &::after {\n content: '';\n position: absolute;\n top: ${Spacing[1]};\n left: 0;\n right: 0;\n height: 2px;\n background-color: transparent;\n transition: background-color 0.15s ease-in;\n transition-delay: 0.025s;\n }\n\n &:hover::after,\n &.${DRAGGING_CLASSNAME}::after {\n background-color: ${({ theme }) => theme.color.border.active};\n }\n`;\n\n/** Vertical resize handle pinned to the top edge of a bottom-anchored panel. */\nexport const ResizeHandle: FC<ResizeHandleProps> = ({\n ariaLabel,\n onDoubleClick,\n onMoveTo,\n onRelease,\n panelRef,\n}) => {\n const resizeHandleRef = useRef<HTMLDivElement>(null);\n const panelOffsetRef = useRef(0);\n const activePointerIdRef = useRef<number | null>(null);\n const documentListenersRef = useRef<{\n handleEnd: (event: PointerEvent) => void;\n handleMove: (event: PointerEvent) => void;\n } | null>(null);\n // Document listeners are registered once per drag; reading the callbacks through\n // refs keeps them on the latest props without re-registering mid-drag.\n const onMoveToRef = useRef(onMoveTo);\n const onReleaseRef = useRef(onRelease);\n onMoveToRef.current = onMoveTo;\n onReleaseRef.current = onRelease;\n\n const removeDocumentListeners = () => {\n const listeners = documentListenersRef.current;\n if (!listeners) {\n return;\n }\n\n document.removeEventListener('pointermove', listeners.handleMove);\n document.removeEventListener('pointerup', listeners.handleEnd);\n document.removeEventListener('pointercancel', listeners.handleEnd);\n documentListenersRef.current = null;\n };\n\n // Pointer capture routes events through the handle (including over iframes), but\n // some surfaces still drop pointerup. Document-level listeners during an active\n // drag are the release safety net. Only the pointer that started the drag may\n // move or end it.\n const endDrag = (pointerId: number) => {\n if (activePointerIdRef.current !== pointerId) {\n return;\n }\n\n activePointerIdRef.current = null;\n removeDocumentListeners();\n try {\n resizeHandleRef.current?.releasePointerCapture(pointerId);\n } catch {\n // No active capture (or unsupported, e.g. jsdom) — nothing to release.\n }\n\n resizeHandleRef.current?.classList.remove(DRAGGING_CLASSNAME);\n panelOffsetRef.current = 0;\n onReleaseRef.current?.();\n };\n\n const handleDocumentPointerMove = (event: PointerEvent) => {\n if (activePointerIdRef.current !== event.pointerId) {\n return;\n }\n\n onMoveToRef.current(event.clientY + panelOffsetRef.current);\n };\n\n const addDocumentListeners = () => {\n removeDocumentListeners();\n\n const listeners = {\n handleEnd: (event: PointerEvent) => endDrag(event.pointerId),\n handleMove: handleDocumentPointerMove,\n };\n documentListenersRef.current = listeners;\n document.addEventListener('pointermove', listeners.handleMove);\n document.addEventListener('pointerup', listeners.handleEnd);\n document.addEventListener('pointercancel', listeners.handleEnd);\n };\n\n const endDragRef = useRef(endDrag);\n endDragRef.current = endDrag;\n useEffect(() => {\n return () => {\n const activePointerId = activePointerIdRef.current;\n if (activePointerId != null) {\n endDragRef.current(activePointerId);\n }\n };\n }, []);\n\n return (\n <ResizeHandleContainer\n aria-label={ariaLabel}\n onDoubleClick={onDoubleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onDoubleClick?.();\n e.preventDefault();\n }\n }}\n onLostPointerCapture={(e) => endDrag(e.pointerId)}\n onPointerCancel={(e) => endDrag(e.pointerId)}\n onPointerDown={(e) => {\n // Primary button / touch / pen only; ignore secondary and middle clicks,\n // and a second pointer while a drag is already active.\n if (e.button !== 0 || activePointerIdRef.current != null) {\n return;\n }\n const panelRect = panelRef.current?.getBoundingClientRect();\n panelOffsetRef.current = panelRect ? panelRect.top - e.clientY : 0;\n activePointerIdRef.current = e.pointerId;\n resizeHandleRef.current?.classList.add(DRAGGING_CLASSNAME);\n addDocumentListeners();\n try {\n resizeHandleRef.current?.setPointerCapture(e.pointerId);\n } catch {\n // Pointer capture unsupported (e.g. jsdom) — document listeners still\n // route move/up events for the duration of the drag.\n }\n e.preventDefault();\n e.stopPropagation();\n }}\n onPointerUp={(e) => endDrag(e.pointerId)}\n ref={resizeHandleRef}\n role='button'\n tabIndex={0}\n />\n );\n};\n","import { type FC, type ReactNode, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport { PanelState, type ResizablePanelState } from '@persona/design-system/lib/useResizablePanel';\nimport { Z_INDICES } from '@persona/design-system/lib/zindex';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { ArrowCollapseIcon, ArrowExpandIcon, XIcon } from '@persona/icons';\n\nimport { ResizeHandle } from './ResizeHandle';\n\ninterface ResizableVerticalPanelProps {\n /** Panel body, rendered in the scrollable content area below the header. */\n children: ReactNode;\n /** Content for the header row, left of the maximize/minimize/close buttons. */\n headerContent?: ReactNode;\n /** State and drag/resize handlers from `useResizablePanel`. */\n hookState: ResizablePanelState;\n /** Minimum panel height in px. */\n minHeight: number;\n}\n\nconst TriStatePanel = styled.div.attrs<{\n customHeight: number | null;\n minHeight: number;\n panelState: PanelState;\n}>(({ customHeight, minHeight, panelState }) => ({\n style: {\n height: panelState === PanelState.Maximized ? '100%' : `${customHeight ?? minHeight}px`,\n },\n}))<{\n customHeight: number | null;\n minHeight: number;\n panelState: PanelState;\n}>`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n background-color: ${({ theme }) => theme.color.background.primary};\n position: relative;\n min-height: ${({ minHeight }) => minHeight}px;\n width: 100%;\n border-top: 1px solid ${Color.BorderDivider};\n z-index: ${Z_INDICES.topNav};\n`;\n\nconst TopRowContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n box-shadow: inset 0px -1px 0px 0px ${Color.BorderDivider};\n`;\n\nconst TopRightIconsContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 0 ${Spacing[2]};\n gap: ${Spacing[2]};\n flex-direction: row;\n`;\n\nconst ContentContainer = styled.div`\n /* offset by the top row container height */\n height: calc(100% - ${Spacing[6]});\n overflow: auto;\n display: flex;\n flex-direction: column;\n min-height: 0;\n`;\n\n/**\n * Bottom-anchored panel with a drag-to-resize top edge, a header row, and\n * maximize/minimize/close controls.\n */\nexport const ResizableVerticalPanel: FC<ResizableVerticalPanelProps> = ({\n children,\n headerContent,\n hookState,\n minHeight,\n}) => {\n const {\n collapse,\n handleDragMove: handlePanelDragMove,\n handleDragRelease,\n maximize,\n panelState,\n restore,\n size,\n toggleMaximized,\n } = hookState;\n const panelRef = useRef<HTMLDivElement>(null);\n // Controls only make sense once the drawer is taller than its collapsed header.\n const showControls = (size != null && size > minHeight) || panelState === PanelState.Maximized;\n // Converts the dragged top edge (clientY) into a panel height bounded by the\n // panel's container.\n const handleDragMove = (clientY: number) => {\n const panel = panelRef.current;\n const container = panel?.parentElement;\n if (!panel || !container) {\n return;\n }\n const panelBottom = panel.getBoundingClientRect().bottom;\n const containerTop = container.getBoundingClientRect().top;\n handlePanelDragMove(panelBottom - clientY, panelBottom - containerTop);\n };\n\n return (\n <TriStatePanel\n aria-label='Bottom panel'\n customHeight={size}\n minHeight={minHeight}\n panelState={panelState}\n ref={panelRef}\n role='region'\n >\n <ResizeHandle\n ariaLabel='Drag to resize bottom panel'\n onDoubleClick={toggleMaximized}\n onMoveTo={handleDragMove}\n onRelease={handleDragRelease}\n panelRef={panelRef}\n />\n\n <TopRowContainer>\n {headerContent}\n\n {showControls && (\n <TopRightIconsContainer>\n {panelState === PanelState.Maximized ? (\n <IconButton aria-label='Restore the bottom panel' onClick={restore} size='sm'>\n <ArrowCollapseIcon />\n </IconButton>\n ) : (\n <IconButton aria-label='Maximize the bottom panel' onClick={maximize} size='sm'>\n <ArrowExpandIcon />\n </IconButton>\n )}\n <IconButton aria-label='Close bottom panel' onClick={collapse} size='sm'>\n <XIcon />\n </IconButton>\n </TopRightIconsContainer>\n )}\n </TopRowContainer>\n\n <ContentContainer>{children}</ContentContainer>\n </TriStatePanel>\n );\n};\n","import {\n forwardRef,\n type ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { useId } from 'react-aria';\nimport styled, { css } from 'styled-components';\n\nimport Badge from '@persona/design-system/components/Badge';\nimport TabBar, { Tab } from '@persona/design-system/components/TabBar';\nimport { PanelState, useResizablePanel } from '@persona/design-system/lib/useResizablePanel';\nimport { Spacing } from '@persona/design-tokens';\n\nimport { ResizableVerticalPanel } from './ResizableVerticalPanel';\n\n// One-pixel panel top border plus the 32px header row sets the collapsed drawer height.\nconst PANEL_MIN_HEIGHT = 33;\n// Where the drawer opens to when a collapsed tab is selected; the user can drag from there.\nconst OPEN_HEIGHT = 200;\n\nexport interface BottomPanelItemProps {\n /** Tab text; also the key `openPanel(label)` looks up. Unique per BottomPanel. */\n label: string;\n /**\n * Tab body. Every panel stays mounted while another tab is selected, so local\n * state (scroll, expanded rows) survives a switch.\n */\n content: ReactNode;\n /** Count shown as a badge on the tab. `0`/`undefined` hides it. */\n badge?: number;\n}\n\nexport interface BottomPanelHandle {\n /** Select the tab and expand the drawer if collapsed. No-op for an unknown label. */\n openPanel: (label: string) => void;\n}\n\nexport interface BottomPanelProps {\n /** Tabs to show, in order. */\n panels: BottomPanelItemProps[];\n}\n\nconst Header = styled.div`\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n padding-left: ${Spacing[4]};\n`;\n\n// The header row draws the divider edge to edge; the tab bar must not add its own.\nconst HeaderTabBar = styled(TabBar)`\n border-bottom: none;\n`;\n\nconst PanelContent = styled.div<{ $hidden: boolean }>`\n ${({ $hidden }) =>\n $hidden\n ? css`\n position: absolute;\n inset: 0;\n overflow: hidden;\n visibility: hidden;\n pointer-events: none;\n `\n : css`\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n `}\n`;\n\n/**\n * Resizable drawer anchored to the bottom of its container with one tab per\n * panel. Owns the tab bar, expand/collapse/resize, and always-mounted content;\n * the caller owns what each panel shows.\n */\nconst BottomPanel = forwardRef<BottomPanelHandle, BottomPanelProps>(function BottomPanel(\n { panels },\n ref,\n) {\n const baseId = useId();\n const [selected, setSelected] = useState<string | undefined>(panels[0]?.label);\n // Falls back to the first panel when the selected label has left `panels`, and\n // commits the fallback so the old label does not regain selection if it returns.\n const hasSelected = panels.some((panel) => panel.label === selected);\n const selectedLabel = hasSelected ? selected : panels[0]?.label;\n useEffect(() => {\n if (!hasSelected) {\n setSelected(selectedLabel);\n }\n }, [hasSelected, selectedLabel]);\n\n const resizablePanelState = useResizablePanel({\n initialSize: PANEL_MIN_HEIGHT,\n minSize: PANEL_MIN_HEIGHT,\n });\n const { expandTo, panelState, size } = resizablePanelState;\n\n // Selecting a tab opens a collapsed drawer but leaves a maximized one as is.\n const openPanel = useCallback(\n (label: string) => {\n if (panelState === PanelState.Drawer && (size == null || size <= PANEL_MIN_HEIGHT)) {\n expandTo(OPEN_HEIGHT);\n }\n setSelected(label);\n },\n [expandTo, panelState, size],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n openPanel: (label: string) => {\n if (panels.some((panel) => panel.label === label)) {\n openPanel(label);\n }\n },\n }),\n [openPanel, panels],\n );\n\n return (\n <ResizableVerticalPanel\n headerContent={\n <Header>\n <HeaderTabBar>\n {panels.map((panel, index) => (\n <Tab\n aria-controls={`${baseId}-panel-${index}`}\n badge={panel.badge ? <Badge>{panel.badge}</Badge> : undefined}\n id={`${baseId}-tab-${index}`}\n key={panel.label}\n onClick={() => openPanel(panel.label)}\n selected={selectedLabel === panel.label}\n >\n {panel.label}\n </Tab>\n ))}\n </HeaderTabBar>\n </Header>\n }\n hookState={resizablePanelState}\n minHeight={PANEL_MIN_HEIGHT}\n >\n {panels.map((panel, index) => {\n const isSelected = selectedLabel === panel.label;\n return (\n <PanelContent\n $hidden={!isSelected}\n aria-hidden={!isSelected}\n aria-labelledby={`${baseId}-tab-${index}`}\n id={`${baseId}-panel-${index}`}\n key={panel.label}\n role='tabpanel'\n >\n {panel.content}\n </PanelContent>\n );\n })}\n </ResizableVerticalPanel>\n );\n});\n\nexport default BottomPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../components/BottomPanel/ResizeHandle.tsx","../../../components/BottomPanel/ResizableVerticalPanel.tsx","../../../components/BottomPanel/BottomPanel.tsx"],"sourcesContent":["import { type FC, type RefObject, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Z_INDICES } from '@persona/design-system/lib/zindex';\nimport { Spacing } from '@persona/design-tokens';\n\nconst DRAGGING_CLASSNAME = 'dragging';\n\ninterface ResizeHandleProps {\n ariaLabel: string;\n /** Fires on double-click or Enter/Space so the host can toggle/reset the size. */\n onDoubleClick?: () => void;\n /** Called on each pointer move with the new top edge position (clientY) in px. */\n onMoveTo: (position: number) => void;\n /** Called once when the drag ends (pointerup, cancel, or lost capture). */\n onRelease?: () => void;\n /** The panel being resized; its edge seeds the grab offset so the handle doesn't jump. */\n panelRef: RefObject<HTMLDivElement>;\n}\n\n// The visible line is 2px tall on the panel's top border; the hitbox is Spacing[2] tall and\n// straddles that border so it is easy to grab without covering the header row's controls.\nconst ResizeHandleContainer = styled.div`\n cursor: row-resize;\n position: absolute;\n height: ${Spacing[2]};\n top: -${Spacing[1]};\n left: 0;\n right: 0;\n z-index: ${Z_INDICES.dropdown};\n touch-action: none;\n\n &::after {\n content: '';\n position: absolute;\n top: ${Spacing[1]};\n left: 0;\n right: 0;\n height: 2px;\n background-color: transparent;\n transition: background-color 0.15s ease-in;\n transition-delay: 0.025s;\n }\n\n &:hover::after,\n &.${DRAGGING_CLASSNAME}::after {\n background-color: ${({ theme }) => theme.color.border.active};\n }\n`;\n\n/** Vertical resize handle pinned to the top edge of a bottom-anchored panel. */\nexport const ResizeHandle: FC<ResizeHandleProps> = ({\n ariaLabel,\n onDoubleClick,\n onMoveTo,\n onRelease,\n panelRef,\n}) => {\n const resizeHandleRef = useRef<HTMLDivElement>(null);\n const panelOffsetRef = useRef(0);\n const activePointerIdRef = useRef<number | null>(null);\n const documentListenersRef = useRef<{\n handleEnd: (event: PointerEvent) => void;\n handleMove: (event: PointerEvent) => void;\n } | null>(null);\n // Document listeners are registered once per drag; reading the callbacks through\n // refs keeps them on the latest props without re-registering mid-drag.\n const onMoveToRef = useRef(onMoveTo);\n const onReleaseRef = useRef(onRelease);\n onMoveToRef.current = onMoveTo;\n onReleaseRef.current = onRelease;\n\n const removeDocumentListeners = () => {\n const listeners = documentListenersRef.current;\n if (!listeners) {\n return;\n }\n\n document.removeEventListener('pointermove', listeners.handleMove);\n document.removeEventListener('pointerup', listeners.handleEnd);\n document.removeEventListener('pointercancel', listeners.handleEnd);\n documentListenersRef.current = null;\n };\n\n // Pointer capture routes events through the handle (including over iframes), but\n // some surfaces still drop pointerup. Document-level listeners during an active\n // drag are the release safety net. Only the pointer that started the drag may\n // move or end it.\n const endDrag = (pointerId: number) => {\n if (activePointerIdRef.current !== pointerId) {\n return;\n }\n\n activePointerIdRef.current = null;\n removeDocumentListeners();\n try {\n resizeHandleRef.current?.releasePointerCapture(pointerId);\n } catch {\n // No active capture (or unsupported, e.g. jsdom) — nothing to release.\n }\n\n resizeHandleRef.current?.classList.remove(DRAGGING_CLASSNAME);\n panelOffsetRef.current = 0;\n onReleaseRef.current?.();\n };\n\n const handleDocumentPointerMove = (event: PointerEvent) => {\n if (activePointerIdRef.current !== event.pointerId) {\n return;\n }\n\n onMoveToRef.current(event.clientY + panelOffsetRef.current);\n };\n\n const addDocumentListeners = () => {\n removeDocumentListeners();\n\n const listeners = {\n handleEnd: (event: PointerEvent) => endDrag(event.pointerId),\n handleMove: handleDocumentPointerMove,\n };\n documentListenersRef.current = listeners;\n document.addEventListener('pointermove', listeners.handleMove);\n document.addEventListener('pointerup', listeners.handleEnd);\n document.addEventListener('pointercancel', listeners.handleEnd);\n };\n\n const endDragRef = useRef(endDrag);\n endDragRef.current = endDrag;\n useEffect(() => {\n return () => {\n const activePointerId = activePointerIdRef.current;\n if (activePointerId != null) {\n endDragRef.current(activePointerId);\n }\n };\n }, []);\n\n return (\n <ResizeHandleContainer\n aria-label={ariaLabel}\n onDoubleClick={onDoubleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onDoubleClick?.();\n e.preventDefault();\n }\n }}\n onLostPointerCapture={(e) => endDrag(e.pointerId)}\n onPointerCancel={(e) => endDrag(e.pointerId)}\n onPointerDown={(e) => {\n // Primary button / touch / pen only; ignore secondary and middle clicks,\n // and a second pointer while a drag is already active.\n if (e.button !== 0 || activePointerIdRef.current != null) {\n return;\n }\n const panelRect = panelRef.current?.getBoundingClientRect();\n panelOffsetRef.current = panelRect ? panelRect.top - e.clientY : 0;\n activePointerIdRef.current = e.pointerId;\n resizeHandleRef.current?.classList.add(DRAGGING_CLASSNAME);\n addDocumentListeners();\n try {\n resizeHandleRef.current?.setPointerCapture(e.pointerId);\n } catch {\n // Pointer capture unsupported (e.g. jsdom) — document listeners still\n // route move/up events for the duration of the drag.\n }\n e.preventDefault();\n e.stopPropagation();\n }}\n onPointerUp={(e) => endDrag(e.pointerId)}\n ref={resizeHandleRef}\n role='button'\n tabIndex={0}\n />\n );\n};\n","import { type FC, type ReactNode, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport { PanelState, type ResizablePanelState } from '@persona/design-system/lib/useResizablePanel';\nimport { Z_INDICES } from '@persona/design-system/lib/zindex';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { ArrowCollapseIcon, ArrowExpandIcon, XIcon } from '@persona/icons';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nimport { ResizeHandle } from './ResizeHandle';\n\ninterface ResizableVerticalPanelProps {\n /** Panel body, rendered in the scrollable content area below the header. */\n children: ReactNode;\n /** Content for the header row, left of the maximize/minimize/close buttons. */\n headerContent?: ReactNode;\n /** State and drag/resize handlers from `useResizablePanel`. */\n hookState: ResizablePanelState;\n /** Minimum panel height in px. */\n minHeight: number;\n}\n\nconst TriStatePanel = styled.div.attrs<{\n customHeight: number | null;\n minHeight: number;\n panelState: PanelState;\n}>(({ customHeight, minHeight, panelState }) => ({\n style: {\n height: panelState === PanelState.Maximized ? '100%' : `${customHeight ?? minHeight}px`,\n },\n}))<{\n customHeight: number | null;\n minHeight: number;\n panelState: PanelState;\n}>`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n background-color: ${({ theme }) => theme.color.background.primary};\n position: relative;\n min-height: ${({ minHeight }) => minHeight}px;\n width: 100%;\n border-top: 1px solid ${Color.BorderDivider};\n z-index: ${Z_INDICES.topNav};\n`;\n\nconst TopRowContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n box-shadow: inset 0px -1px 0px 0px ${Color.BorderDivider};\n`;\n\nconst TopRightIconsContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 0 ${Spacing[2]};\n gap: ${Spacing[2]};\n flex-direction: row;\n`;\n\nconst ContentContainer = styled.div`\n /* offset by the top row container height */\n height: calc(100% - ${Spacing[6]});\n overflow: auto;\n ${semanticScrollbar}\n display: flex;\n flex-direction: column;\n min-height: 0;\n`;\n\n/**\n * Bottom-anchored panel with a drag-to-resize top edge, a header row, and\n * maximize/minimize/close controls.\n */\nexport const ResizableVerticalPanel: FC<ResizableVerticalPanelProps> = ({\n children,\n headerContent,\n hookState,\n minHeight,\n}) => {\n const {\n collapse,\n handleDragMove: handlePanelDragMove,\n handleDragRelease,\n maximize,\n panelState,\n restore,\n size,\n toggleMaximized,\n } = hookState;\n const panelRef = useRef<HTMLDivElement>(null);\n // Controls only make sense once the drawer is taller than its collapsed header.\n const showControls = (size != null && size > minHeight) || panelState === PanelState.Maximized;\n // Converts the dragged top edge (clientY) into a panel height bounded by the\n // panel's container.\n const handleDragMove = (clientY: number) => {\n const panel = panelRef.current;\n const container = panel?.parentElement;\n if (!panel || !container) {\n return;\n }\n const panelBottom = panel.getBoundingClientRect().bottom;\n const containerTop = container.getBoundingClientRect().top;\n handlePanelDragMove(panelBottom - clientY, panelBottom - containerTop);\n };\n\n return (\n <TriStatePanel\n aria-label='Bottom panel'\n customHeight={size}\n minHeight={minHeight}\n panelState={panelState}\n ref={panelRef}\n role='region'\n >\n <ResizeHandle\n ariaLabel='Drag to resize bottom panel'\n onDoubleClick={toggleMaximized}\n onMoveTo={handleDragMove}\n onRelease={handleDragRelease}\n panelRef={panelRef}\n />\n\n <TopRowContainer>\n {headerContent}\n\n {showControls && (\n <TopRightIconsContainer>\n {panelState === PanelState.Maximized ? (\n <IconButton aria-label='Restore the bottom panel' onClick={restore} size='sm'>\n <ArrowCollapseIcon />\n </IconButton>\n ) : (\n <IconButton aria-label='Maximize the bottom panel' onClick={maximize} size='sm'>\n <ArrowExpandIcon />\n </IconButton>\n )}\n <IconButton aria-label='Close bottom panel' onClick={collapse} size='sm'>\n <XIcon />\n </IconButton>\n </TopRightIconsContainer>\n )}\n </TopRowContainer>\n\n <ContentContainer>{children}</ContentContainer>\n </TriStatePanel>\n );\n};\n","import {\n forwardRef,\n type ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { useId } from 'react-aria';\nimport styled, { css } from 'styled-components';\n\nimport Badge from '@persona/design-system/components/Badge';\nimport TabBar, { Tab } from '@persona/design-system/components/TabBar';\nimport { PanelState, useResizablePanel } from '@persona/design-system/lib/useResizablePanel';\nimport { Spacing } from '@persona/design-tokens';\n\nimport { ResizableVerticalPanel } from './ResizableVerticalPanel';\n\n// One-pixel panel top border plus the 32px header row sets the collapsed drawer height.\nconst PANEL_MIN_HEIGHT = 33;\n// Where the drawer opens to when a collapsed tab is selected; the user can drag from there.\nconst OPEN_HEIGHT = 200;\n\nexport interface BottomPanelItemProps {\n /** Tab text; also the key `openPanel(label)` looks up. Unique per BottomPanel. */\n label: string;\n /**\n * Tab body. Every panel stays mounted while another tab is selected, so local\n * state (scroll, expanded rows) survives a switch.\n */\n content: ReactNode;\n /** Count shown as a badge on the tab. `0`/`undefined` hides it. */\n badge?: number;\n}\n\nexport interface BottomPanelHandle {\n /** Select the tab and expand the drawer if collapsed. No-op for an unknown label. */\n openPanel: (label: string) => void;\n}\n\nexport interface BottomPanelProps {\n /** Tabs to show, in order. */\n panels: BottomPanelItemProps[];\n}\n\nconst Header = styled.div`\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n padding-left: ${Spacing[4]};\n`;\n\n// The header row draws the divider edge to edge; the tab bar must not add its own.\nconst HeaderTabBar = styled(TabBar)`\n border-bottom: none;\n`;\n\nconst PanelContent = styled.div<{ $hidden: boolean }>`\n ${({ $hidden }) =>\n $hidden\n ? css`\n position: absolute;\n inset: 0;\n overflow: hidden;\n visibility: hidden;\n pointer-events: none;\n `\n : css`\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n `}\n`;\n\n/**\n * Resizable drawer anchored to the bottom of its container with one tab per\n * panel. Owns the tab bar, expand/collapse/resize, and always-mounted content;\n * the caller owns what each panel shows.\n */\nconst BottomPanel = forwardRef<BottomPanelHandle, BottomPanelProps>(function BottomPanel(\n { panels },\n ref,\n) {\n const baseId = useId();\n const [selected, setSelected] = useState<string | undefined>(panels[0]?.label);\n // Falls back to the first panel when the selected label has left `panels`, and\n // commits the fallback so the old label does not regain selection if it returns.\n const hasSelected = panels.some((panel) => panel.label === selected);\n const selectedLabel = hasSelected ? selected : panels[0]?.label;\n useEffect(() => {\n if (!hasSelected) {\n setSelected(selectedLabel);\n }\n }, [hasSelected, selectedLabel]);\n\n const resizablePanelState = useResizablePanel({\n initialSize: PANEL_MIN_HEIGHT,\n minSize: PANEL_MIN_HEIGHT,\n });\n const { expandTo, panelState, size } = resizablePanelState;\n\n // Selecting a tab opens a collapsed drawer but leaves a maximized one as is.\n const openPanel = useCallback(\n (label: string) => {\n if (panelState === PanelState.Drawer && (size == null || size <= PANEL_MIN_HEIGHT)) {\n expandTo(OPEN_HEIGHT);\n }\n setSelected(label);\n },\n [expandTo, panelState, size],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n openPanel: (label: string) => {\n if (panels.some((panel) => panel.label === label)) {\n openPanel(label);\n }\n },\n }),\n [openPanel, panels],\n );\n\n return (\n <ResizableVerticalPanel\n headerContent={\n <Header>\n <HeaderTabBar>\n {panels.map((panel, index) => (\n <Tab\n aria-controls={`${baseId}-panel-${index}`}\n badge={panel.badge ? <Badge>{panel.badge}</Badge> : undefined}\n id={`${baseId}-tab-${index}`}\n key={panel.label}\n onClick={() => openPanel(panel.label)}\n selected={selectedLabel === panel.label}\n >\n {panel.label}\n </Tab>\n ))}\n </HeaderTabBar>\n </Header>\n }\n hookState={resizablePanelState}\n minHeight={PANEL_MIN_HEIGHT}\n >\n {panels.map((panel, index) => {\n const isSelected = selectedLabel === panel.label;\n return (\n <PanelContent\n $hidden={!isSelected}\n aria-hidden={!isSelected}\n aria-labelledby={`${baseId}-tab-${index}`}\n id={`${baseId}-panel-${index}`}\n key={panel.label}\n role='tabpanel'\n >\n {panel.content}\n </PanelContent>\n );\n })}\n </ResizableVerticalPanel>\n );\n});\n\nexport default BottomPanel;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { n as BreadcrumbsItemProps, r as BreadcrumbsProps, t as Breadcrumbs } from "../../Breadcrumbs-B6JyoS8n.mjs";
1
+ import { n as BreadcrumbsItemProps, r as BreadcrumbsProps, t as Breadcrumbs } from "../../Breadcrumbs-DUSbT1I7.mjs";
2
2
  export { Breadcrumbs, Breadcrumbs as default, BreadcrumbsItemProps, BreadcrumbsProps };
@@ -1,2 +1,2 @@
1
- import { t as Breadcrumbs } from "../../Breadcrumbs-CrXfUK1V.mjs";
1
+ import { t as Breadcrumbs } from "../../Breadcrumbs-DXS7rU7_.mjs";
2
2
  export { Breadcrumbs, Breadcrumbs as default };
@@ -1,3 +1,3 @@
1
- import { a as SuffixIconContainer, i as StyledButton, n as ButtonChildren, r as ButtonProps, t as Button } from "../../Button-HodDf_bB.mjs";
2
- import { t as IconButton } from "../../IconButton-zu-VNp1h.mjs";
1
+ import { a as SuffixIconContainer, i as StyledButton, n as ButtonChildren, r as ButtonProps, t as Button } from "../../Button-xZ6DC5XC.mjs";
2
+ import { t as IconButton } from "../../IconButton-BUMMN-gH.mjs";
3
3
  export { Button, Button as default, ButtonChildren, ButtonProps, IconButton, StyledButton, SuffixIconContainer };
@@ -1,2 +1,2 @@
1
- import { a as SuffixIconContainer, i as StyledButton, n as Button, r as ButtonChildren, t as IconButton } from "../../IconButton-CqTPMhjV.mjs";
1
+ import { a as SuffixIconContainer, i as StyledButton, n as Button, r as ButtonChildren, t as IconButton } from "../../IconButton-CCLMYWVN.mjs";
2
2
  export { Button, Button as default, ButtonChildren, IconButton, StyledButton, SuffixIconContainer };
@@ -1,8 +1,8 @@
1
1
  import { a as styled, r as css } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { semanticOnly } from "../../lib/semanticColor.mjs";
3
3
  import { withAlpha } from "../../lib/color.mjs";
4
- import { o as buttonPalette, t as IconButton } from "../../IconButton-CqTPMhjV.mjs";
5
- import { n as useFormField } from "../../useFormField-DsvC5dOb.mjs";
4
+ import { o as buttonPalette, t as IconButton } from "../../IconButton-CCLMYWVN.mjs";
5
+ import { n as useFormField } from "../../useFormField-XezSxho_.mjs";
6
6
  import { BorderRadius } from "@persona/design-tokens";
7
7
  import { forwardRef } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
@@ -1,3 +1,3 @@
1
- import { a as Root, i as HeaderProps, n as Header, o as Title, r as HeaderContainer, s as TitleContainer, t as ActionsContainer } from "../../Header-ZnHGm8fs.mjs";
2
- import { n as SectionProps, r as _default, t as CardProps } from "../../Card-CpDwATnX.mjs";
1
+ import { a as Root, i as HeaderProps, n as Header, o as Title, r as HeaderContainer, s as TitleContainer, t as ActionsContainer } from "../../Header-DxJ6TfPw.mjs";
2
+ import { n as SectionProps, r as _default, t as CardProps } from "../../Card-CUeM8Lh8.mjs";
3
3
  export { ActionsContainer, CardProps, Header, HeaderContainer, HeaderProps, Root, SectionProps, Title, TitleContainer, _default as default };
@@ -1,4 +1,4 @@
1
- import { i as TextAction, n as IconAction, r as MenuAction } from "../../Action-C7INft7X.mjs";
1
+ import { i as TextAction, n as IconAction, r as MenuAction } from "../../Action-B-AiHknZ.mjs";
2
2
  import { CARD_HEADING_STICKY_OFFSET } from "../../SectionHeading.mjs";
3
3
  import _default from "../../Card2.mjs";
4
4
  export { CARD_HEADING_STICKY_OFFSET, _default as Card, _default as default, type IconAction, type MenuAction, type TextAction };