@persona/design-system 0.10.11 → 0.10.13

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 (375) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{Action-sLO73eKq.d.mts → Action-CHWYwpYR.d.mts} +2 -2
  3. package/dist/Action.d.mts +1 -1
  4. package/dist/AdvancedFilterRuleRow.d.mts +3 -0
  5. package/dist/AdvancedFilterRulesPopover.d.mts +4 -0
  6. package/dist/Attribute.d.mts +2 -2
  7. package/dist/{Badge-DZq6ByIU.mjs → Badge-B2AJMf3d.mjs} +2 -2
  8. package/dist/{Badge-DZq6ByIU.mjs.map → Badge-B2AJMf3d.mjs.map} +1 -1
  9. package/dist/{Breadcrumbs-DpsNZWF9.mjs → Breadcrumbs-DRs9eo1o.mjs} +8 -8
  10. package/dist/{Breadcrumbs-DpsNZWF9.mjs.map → Breadcrumbs-DRs9eo1o.mjs.map} +1 -1
  11. package/dist/{Button-C4a4BTjL.d.mts → Button-DjD8QxcY.d.mts} +2 -2
  12. package/dist/Button.d.mts +1 -1
  13. package/dist/CalendarBase.d.mts +1 -1
  14. package/dist/{Card-CPV4_mHk.d.mts → Card-DiUHtYg_.d.mts} +4 -4
  15. package/dist/Card.d.mts +1 -1
  16. package/dist/Card2.d.mts +1 -1
  17. package/dist/CardGrouping.d.mts +1 -1
  18. package/dist/{CardV2-DCoDfEvr.mjs → CardV2-DO-8COfu.mjs} +12 -12
  19. package/dist/{CardV2-DCoDfEvr.mjs.map → CardV2-DO-8COfu.mjs.map} +1 -1
  20. package/dist/{Checkbox-C3z7UUSC.mjs → Checkbox-BAh-wF_F.mjs} +5 -5
  21. package/dist/{Checkbox-C3z7UUSC.mjs.map → Checkbox-BAh-wF_F.mjs.map} +1 -1
  22. package/dist/{CheckboxGroupField-BT87OVOF.d.mts → CheckboxGroupField-BW_BcW3L.d.mts} +2 -2
  23. package/dist/CheckboxGroupField.d.mts +1 -1
  24. package/dist/{Combobox-aOJDTjzC.d.mts → Combobox-DgYwerwd.d.mts} +3 -3
  25. package/dist/{Combobox-BkK_tosd.mjs → Combobox-DmFQ5cAy.mjs} +92 -89
  26. package/dist/Combobox-DmFQ5cAy.mjs.map +1 -0
  27. package/dist/Combobox.d.mts +2 -2
  28. package/dist/{ComboboxBase-Brgv5nxk.d.mts → ComboboxBase-DoKiRjgS.d.mts} +6 -6
  29. package/dist/ComboboxBase.d.mts +1 -1
  30. package/dist/{ComboboxMultiSelect-DJyAv0Eg.d.mts → ComboboxMultiSelect-DsoIMJiZ.d.mts} +2 -2
  31. package/dist/ComboboxMultiSelect.d.mts +1 -1
  32. package/dist/{ComboboxSingleSelect-CP8-HLKl.d.mts → ComboboxSingleSelect-CKsqOAGB.d.mts} +3 -3
  33. package/dist/ComboboxSingleSelect.d.mts +1 -1
  34. package/dist/{CompactBar-B0LhjrYV.d.mts → CompactBar-tNtY2EhN.d.mts} +3 -3
  35. package/dist/CompactBar.d.mts +1 -1
  36. package/dist/{ConfigFormGroup-DAUqAhJW.mjs → ConfigFormGroup-BCTWCws5.mjs} +2 -2
  37. package/dist/{ConfigFormGroup-DAUqAhJW.mjs.map → ConfigFormGroup-BCTWCws5.mjs.map} +1 -1
  38. package/dist/{ControlBar-B3Jn8G0k.d.mts → ControlBar-CDb6b1_6.d.mts} +5 -3
  39. package/dist/ControlBar.d.mts +1 -1
  40. package/dist/{DataTable-DiwzhNMt.mjs → DataTable-DZ0B2Zm9.mjs} +159 -90
  41. package/dist/DataTable-DZ0B2Zm9.mjs.map +1 -0
  42. package/dist/{DataTable-CSl5Jn3E.d.mts → DataTable-on3vGhyi.d.mts} +32 -8
  43. package/dist/DataTable.d.mts +1 -1
  44. package/dist/{DatePicker-BK7ioKBm.mjs → DatePicker-CHVYVKB-.mjs} +375 -375
  45. package/dist/DatePicker-CHVYVKB-.mjs.map +1 -0
  46. package/dist/{DropdownButton-Dp-MZ5tA.mjs → DropdownButton-BxZ5hn0X.mjs} +3 -3
  47. package/dist/{DropdownButton-Dp-MZ5tA.mjs.map → DropdownButton-BxZ5hn0X.mjs.map} +1 -1
  48. package/dist/DropdownButton.d.mts +2 -2
  49. package/dist/{DropdownMenu-jJSHQaih.mjs → DropdownMenu-Ip75l4Th.mjs} +21 -4
  50. package/dist/DropdownMenu-Ip75l4Th.mjs.map +1 -0
  51. package/dist/{DropdownMenu-BnHPeHOm.d.mts → DropdownMenu-eVY-Yjpq.d.mts} +3 -3
  52. package/dist/DropdownMenu.d.mts +1 -1
  53. package/dist/{FilterBar-DDyk14sx.d.mts → FilterBar-CA4mDAXK.d.mts} +10 -2
  54. package/dist/FilterBar.d.mts +1 -1
  55. package/dist/{FloatingActionBar-BUgSKimy.d.mts → FloatingActionBar-CfgjHs81.d.mts} +5 -1
  56. package/dist/FloatingActionBar.d.mts +1 -1
  57. package/dist/{FloatingToolbar-rfKurDs8.mjs → FloatingToolbar-BA8Fqmrz.mjs} +4 -4
  58. package/dist/{FloatingToolbar-rfKurDs8.mjs.map → FloatingToolbar-BA8Fqmrz.mjs.map} +1 -1
  59. package/dist/{FormControl-DPYbLcBK.d.mts → FormControl-BQe3GRhi.d.mts} +2 -2
  60. package/dist/{FormControl--pbTH3bY.mjs → FormControl-BoKGiWdQ.mjs} +3 -3
  61. package/dist/{FormControl--pbTH3bY.mjs.map → FormControl-BoKGiWdQ.mjs.map} +1 -1
  62. package/dist/FormControl.d.mts +1 -1
  63. package/dist/FormControlLabel.d.mts +2 -2
  64. package/dist/{FormField-CYNGm2bJ.d.mts → FormField-BW5uMzId.d.mts} +2 -2
  65. package/dist/{FormField-DMxjftFw.mjs → FormField-BfVrDOY0.mjs} +13 -13
  66. package/dist/{FormField-DMxjftFw.mjs.map → FormField-BfVrDOY0.mjs.map} +1 -1
  67. package/dist/FormField.d.mts +1 -1
  68. package/dist/{Grid-DVC0SSEZ.mjs → Grid-CYpOqTUu.mjs} +2 -2
  69. package/dist/{Grid-DVC0SSEZ.mjs.map → Grid-CYpOqTUu.mjs.map} +1 -1
  70. package/dist/{Header-DaaUprCL.d.mts → Header-CV0Lcf0C.d.mts} +2 -2
  71. package/dist/Header.d.mts +1 -1
  72. package/dist/{HelperTooltip-C5BDdJSI.d.mts → HelperTooltip-BNM3pTM-.d.mts} +2 -2
  73. package/dist/HelperTooltip.d.mts +1 -1
  74. package/dist/HighlightedText.d.mts +1 -1
  75. package/dist/{HoverCopyableField-B2-xlwUt.mjs → HoverCopyableField-CJ_p3llp.mjs} +5 -5
  76. package/dist/{HoverCopyableField-B2-xlwUt.mjs.map → HoverCopyableField-CJ_p3llp.mjs.map} +1 -1
  77. package/dist/{IconButton-kSjnfhWt.mjs → IconButton-Bj1fry_K.mjs} +8 -8
  78. package/dist/{IconButton-kSjnfhWt.mjs.map → IconButton-Bj1fry_K.mjs.map} +1 -1
  79. package/dist/{IconButton-7k-wjvH3.d.mts → IconButton-C_ReZm8v.d.mts} +2 -2
  80. package/dist/IconButton.d.mts +1 -1
  81. package/dist/ImageTile.d.mts +1 -1
  82. package/dist/IndexTableLayout.d.mts +12 -4
  83. package/dist/InlineCombobox.d.mts +1 -1
  84. package/dist/InlineInput.d.mts +1 -1
  85. package/dist/{Input-CwvrBsiS.d.mts → Input-DH-5dKor.d.mts} +3 -3
  86. package/dist/{Input-TRmTBEav.mjs → Input-DcbzPaax.mjs} +5 -5
  87. package/dist/{Input-TRmTBEav.mjs.map → Input-DcbzPaax.mjs.map} +1 -1
  88. package/dist/Input.d.mts +1 -1
  89. package/dist/{Link-XvzUN8sY.mjs → Link-Df3zJrj2.mjs} +4 -4
  90. package/dist/{Link-XvzUN8sY.mjs.map → Link-Df3zJrj2.mjs.map} +1 -1
  91. package/dist/{ListBox-DahM1PgU.mjs → ListBox-BRgjgUSp.mjs} +12 -12
  92. package/dist/{ListBox-DahM1PgU.mjs.map → ListBox-BRgjgUSp.mjs.map} +1 -1
  93. package/dist/{ListBox-BePQBYR7.d.mts → ListBox-Bgug8YZF.d.mts} +3 -3
  94. package/dist/ListBox.d.mts +1 -1
  95. package/dist/{ListBoxField-lj7JN1BX.d.mts → ListBoxField-Cc1sX2bo.d.mts} +4 -4
  96. package/dist/ListBoxField.d.mts +1 -1
  97. package/dist/{LoadingShimmer-CpfKTSUs.mjs → LoadingShimmer-BVVdBeN-.mjs} +18 -21
  98. package/dist/LoadingShimmer-BVVdBeN-.mjs.map +1 -0
  99. package/dist/LoadingShimmer.d.mts +1 -1
  100. package/dist/{LogicRow-Do7t7Suf.d.mts → LogicRow-B1_35ZJT.d.mts} +2 -2
  101. package/dist/LogicRow.d.mts +1 -1
  102. package/dist/MaskedInput.d.mts +2 -2
  103. package/dist/MatchHighlight.d.mts +1 -1
  104. package/dist/{Menu-BvMzSH2I.mjs → Menu-BVn1jh46.mjs} +5 -5
  105. package/dist/{Menu-BvMzSH2I.mjs.map → Menu-BVn1jh46.mjs.map} +1 -1
  106. package/dist/{Menu-Ca5ftvo6.d.mts → Menu-keVl-eKm.d.mts} +4 -4
  107. package/dist/Menu.d.mts +1 -1
  108. package/dist/{MiddleTruncatedText--jzGTD00.mjs → MiddleTruncatedText-DicQsLDG.mjs} +2 -2
  109. package/dist/{MiddleTruncatedText--jzGTD00.mjs.map → MiddleTruncatedText-DicQsLDG.mjs.map} +1 -1
  110. package/dist/{Modal-BPfFyzkw.d.mts → Modal-CujB7DuB.d.mts} +3 -3
  111. package/dist/{Modal-B6X5AgWj.mjs → Modal-SnCo7ecm.mjs} +8 -7
  112. package/dist/Modal-SnCo7ecm.mjs.map +1 -0
  113. package/dist/Modal.d.mts +1 -1
  114. package/dist/{PageHeader-bhQTjuZF.mjs → PageHeader-6KvtGED-.mjs} +2 -2
  115. package/dist/{PageHeader-bhQTjuZF.mjs.map → PageHeader-6KvtGED-.mjs.map} +1 -1
  116. package/dist/{PageHeader-BeBmYmUX.d.mts → PageHeader-UPiqJpIF.d.mts} +2 -2
  117. package/dist/PageHeader.d.mts +1 -1
  118. package/dist/{PageLayout-BXM_pyrU.d.mts → PageLayout-BdVM37bV.d.mts} +2 -2
  119. package/dist/{PageLayout-DgEGcZgB.mjs → PageLayout-CPiVnS_r.mjs} +5 -3
  120. package/dist/PageLayout-CPiVnS_r.mjs.map +1 -0
  121. package/dist/PageLayout.d.mts +1 -1
  122. package/dist/{PageSelector-C14ABZVL.d.mts → PageSelector-B5CcAzss.d.mts} +2 -2
  123. package/dist/PageSelector.d.mts +1 -1
  124. package/dist/{Pagination-DE8wT55m.mjs → Pagination-CqFvnlXc.mjs} +5 -5
  125. package/dist/{Pagination-DE8wT55m.mjs.map → Pagination-CqFvnlXc.mjs.map} +1 -1
  126. package/dist/{Pii-C42ZY88Y.mjs → Pii-BYPkrBuT.mjs} +2 -2
  127. package/dist/{Pii-C42ZY88Y.mjs.map → Pii-BYPkrBuT.mjs.map} +1 -1
  128. package/dist/{Popover-DuFjaSoq.mjs → Popover-DP9DXReH.mjs} +48 -20
  129. package/dist/Popover-DP9DXReH.mjs.map +1 -0
  130. package/dist/Popover.d.mts +1 -1
  131. package/dist/ProgressBar.d.mts +1 -1
  132. package/dist/{ProgressIndicator-hy1P-RG1.mjs → ProgressIndicator-zt3ndT9U.mjs} +3 -3
  133. package/dist/{ProgressIndicator-hy1P-RG1.mjs.map → ProgressIndicator-zt3ndT9U.mjs.map} +1 -1
  134. package/dist/{Radio-B4TBAho6.mjs → Radio-B1H_S-Qj.mjs} +4 -4
  135. package/dist/{Radio-B4TBAho6.mjs.map → Radio-B1H_S-Qj.mjs.map} +1 -1
  136. package/dist/{RadioGroup-Bf24GKOb.mjs → RadioGroup-7hdcVhsp.mjs} +3 -3
  137. package/dist/{RadioGroup-Bf24GKOb.mjs.map → RadioGroup-7hdcVhsp.mjs.map} +1 -1
  138. package/dist/RichTextEditor.d.mts +1 -1
  139. package/dist/SectionHeading.d.mts +1 -1
  140. package/dist/{SegmentedControl-BpR7sUWO.mjs → SegmentedControl-BNOJ1FYQ.mjs} +3 -3
  141. package/dist/{SegmentedControl-BpR7sUWO.mjs.map → SegmentedControl-BNOJ1FYQ.mjs.map} +1 -1
  142. package/dist/{Select-DYdn73Nh.d.mts → Select-CiofH5-f.d.mts} +2 -2
  143. package/dist/{Select-RdTT2KoH.mjs → Select-DbWEgH5c.mjs} +9 -9
  144. package/dist/{Select-RdTT2KoH.mjs.map → Select-DbWEgH5c.mjs.map} +1 -1
  145. package/dist/Select.d.mts +1 -1
  146. package/dist/SmartTextInput.d.mts +1 -1
  147. package/dist/SmartTextInputField.d.mts +2 -2
  148. package/dist/SmartTextInputFunctionDialog.d.mts +1 -1
  149. package/dist/SmartTextInputListbox.d.mts +8 -3
  150. package/dist/SmartTextInputPopover.d.mts +1 -1
  151. package/dist/{Spinner-vcApnJzv.mjs → Spinner-k9ZiOdTr.mjs} +2 -2
  152. package/dist/{Spinner-vcApnJzv.mjs.map → Spinner-k9ZiOdTr.mjs.map} +1 -1
  153. package/dist/{Stack-B6MrjJeW.d.mts → Stack-CODxfzhl.d.mts} +2 -2
  154. package/dist/Stack.d.mts +1 -1
  155. package/dist/{StatusIndicator-lwt35J6B.mjs → StatusIndicator-CzRaEFSz.mjs} +3 -3
  156. package/dist/{StatusIndicator-lwt35J6B.mjs.map → StatusIndicator-CzRaEFSz.mjs.map} +1 -1
  157. package/dist/{Sticker-jfOM4Yi6.mjs → Sticker-4VdGEFAu.mjs} +5 -5
  158. package/dist/{Sticker-jfOM4Yi6.mjs.map → Sticker-4VdGEFAu.mjs.map} +1 -1
  159. package/dist/{Sticker-C7Wv3Obx.d.mts → Sticker-CLvRB8V5.d.mts} +4 -4
  160. package/dist/Sticker.d.mts +1 -1
  161. package/dist/Tab.d.mts +2 -2
  162. package/dist/{TabBar-DwHgbIQ6.mjs → TabBar-d4sdknti.mjs} +6 -6
  163. package/dist/{TabBar-DwHgbIQ6.mjs.map → TabBar-d4sdknti.mjs.map} +1 -1
  164. package/dist/{Table-SMJAWqoe.mjs → Table-9mNn8Q-d.mjs} +10 -10
  165. package/dist/{Table-SMJAWqoe.mjs.map → Table-9mNn8Q-d.mjs.map} +1 -1
  166. package/dist/{TableBox-DS8mpN3-.mjs → TableBox-RxpwflEb.mjs} +14 -14
  167. package/dist/{TableBox-DS8mpN3-.mjs.map → TableBox-RxpwflEb.mjs.map} +1 -1
  168. package/dist/TableBox.d.mts +1 -1
  169. package/dist/{TableBoxCell-Bo5xYEmR.d.mts → TableBoxCell-C65YFYqj.d.mts} +6 -6
  170. package/dist/TableBoxCell.d.mts +1 -1
  171. package/dist/{TableBoxField-CdgjSGLK.d.mts → TableBoxField-CHpClgsE.d.mts} +5 -5
  172. package/dist/TableBoxField.d.mts +1 -1
  173. package/dist/{TableBoxRow-DuWS2iRC.d.mts → TableBoxRow-CK-b79uD.d.mts} +2 -2
  174. package/dist/TableBoxRow.d.mts +1 -1
  175. package/dist/{TableBoxRowActions-zW74DkXt.d.mts → TableBoxRowActions-CRaabjaY.d.mts} +2 -2
  176. package/dist/TableBoxRowActions.d.mts +1 -1
  177. package/dist/{TableCell-uv_jqT5e.d.mts → TableCell-CQsF7t4e.d.mts} +2 -2
  178. package/dist/TableCell.d.mts +1 -1
  179. package/dist/{TableControls-CX7BvgD2.mjs → TableControls-DM4RddQ_.mjs} +77 -36
  180. package/dist/TableControls-DM4RddQ_.mjs.map +1 -0
  181. package/dist/{TableControls-9vz-HfDu.d.mts → TableControls-v1NmlFTW.d.mts} +5 -5
  182. package/dist/TableControls.d.mts +1 -1
  183. package/dist/{TableControlsContext-D0Hn3rwL.d.mts → TableControlsContext-DHYICXxy.d.mts} +2 -2
  184. package/dist/TableControlsContext.d.mts +1 -1
  185. package/dist/{TableViewConfigurationDropdown-CZcLH8uR.d.mts → TableViewConfigurationDropdown-1nT8wneI.d.mts} +2 -2
  186. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  187. package/dist/{TechnicalSticker-DrN45Vut.mjs → TechnicalSticker-DtV7Gawf.mjs} +7 -7
  188. package/dist/{TechnicalSticker-DrN45Vut.mjs.map → TechnicalSticker-DtV7Gawf.mjs.map} +1 -1
  189. package/dist/{Text-CdHeSHCc.d.mts → Text-CvaqognH.d.mts} +2 -2
  190. package/dist/Text.d.mts +1 -1
  191. package/dist/{TextUnderlineTooltip-By1VVsSs.d.mts → TextUnderlineTooltip-Bd5e8KH3.d.mts} +3 -3
  192. package/dist/TextUnderlineTooltip.d.mts +1 -1
  193. package/dist/Tile.d.mts +1 -1
  194. package/dist/{Toggle-DjmkjJlw.mjs → Toggle-CzHoIR-n.mjs} +6 -6
  195. package/dist/{Toggle-DjmkjJlw.mjs.map → Toggle-CzHoIR-n.mjs.map} +1 -1
  196. package/dist/{Tooltip-C2VB8I6y.mjs → Tooltip-CVBxc1yf.mjs} +4 -4
  197. package/dist/{Tooltip-C2VB8I6y.mjs.map → Tooltip-CVBxc1yf.mjs.map} +1 -1
  198. package/dist/{Tooltip-OxVvOfn8.d.mts → Tooltip-Ddy2Jq0K.d.mts} +3 -3
  199. package/dist/Tooltip.d.mts +1 -1
  200. package/dist/{TruncatedText-Dqj94BFK.d.mts → TruncatedText-sr9Fhm3N.d.mts} +2 -2
  201. package/dist/WizardModal.d.mts +1 -1
  202. package/dist/{clientFilterUtils-CMLuN8kK.d.mts → clientFilterUtils-CaF2QZBy.d.mts} +2 -2
  203. package/dist/clientFilterUtils.d.mts +1 -1
  204. package/dist/components/Accordion/index.mjs +5 -5
  205. package/dist/components/Attribute/index.mjs +6 -6
  206. package/dist/components/Badge/index.mjs +1 -1
  207. package/dist/components/Banner/index.mjs +3 -3
  208. package/dist/components/BottomPanel/index.mjs +7 -7
  209. package/dist/components/Breadcrumbs/index.mjs +1 -1
  210. package/dist/components/Button/index.d.mts +2 -2
  211. package/dist/components/Button/index.mjs +1 -1
  212. package/dist/components/ButtonGroup/index.mjs +2 -2
  213. package/dist/components/Card/index.d.mts +2 -2
  214. package/dist/components/CardV2/index.d.mts +1 -1
  215. package/dist/components/CardV2/index.mjs +1 -1
  216. package/dist/components/Checkbox/index.mjs +1 -1
  217. package/dist/components/CodeHighlight/index.mjs +4 -4
  218. package/dist/components/Combobox/index.d.mts +4 -4
  219. package/dist/components/Combobox/index.mjs +1 -1
  220. package/dist/components/ConfigFormGroup/index.mjs +1 -1
  221. package/dist/components/DataTable/TableControls/index.d.mts +9 -9
  222. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  223. package/dist/components/DataTable/index.d.mts +6 -6
  224. package/dist/components/DataTable/index.mjs +1 -1
  225. package/dist/components/DataTable/types.d.mts +1 -1
  226. package/dist/components/DatePicker/index.mjs +1 -1
  227. package/dist/components/DropdownButton/index.mjs +1 -1
  228. package/dist/components/DropdownMenu/index.d.mts +1 -1
  229. package/dist/components/DropdownMenu/index.mjs +1 -1
  230. package/dist/components/FloatingPanel/index.mjs +8 -8
  231. package/dist/components/FloatingToolbar/index.mjs +1 -1
  232. package/dist/components/FormControl/index.d.mts +1 -1
  233. package/dist/components/FormControl/index.mjs +1 -1
  234. package/dist/components/FormField/index.d.mts +5 -5
  235. package/dist/components/FormField/index.mjs +1 -1
  236. package/dist/components/Grid/index.mjs +1 -1
  237. package/dist/components/HoverCopyableField/index.mjs +1 -1
  238. package/dist/components/ImageTile/index.mjs +8 -8
  239. package/dist/components/Input/index.d.mts +1 -1
  240. package/dist/components/Input/index.mjs +1 -1
  241. package/dist/components/Link/index.mjs +1 -1
  242. package/dist/components/ListBox/index.d.mts +3 -3
  243. package/dist/components/ListBox/index.mjs +1 -1
  244. package/dist/components/LoadingShimmer/index.mjs +1 -1
  245. package/dist/components/MaskedInput/index.mjs +1 -1
  246. package/dist/components/Menu/index.d.mts +1 -1
  247. package/dist/components/Menu/index.mjs +1 -1
  248. package/dist/components/Modal/index.d.mts +1 -1
  249. package/dist/components/Modal/index.mjs +1 -1
  250. package/dist/components/PageHeader/index.d.mts +1 -1
  251. package/dist/components/PageHeader/index.mjs +1 -1
  252. package/dist/components/Pagination/index.d.mts +1 -1
  253. package/dist/components/Pagination/index.mjs +1 -1
  254. package/dist/components/Pii/index.mjs +1 -1
  255. package/dist/components/Popover/index.mjs +1 -1
  256. package/dist/components/ProgressBar/index.mjs +2 -2
  257. package/dist/components/ProgressIndicator/index.mjs +1 -1
  258. package/dist/components/Radio/index.mjs +1 -1
  259. package/dist/components/RadioGroup/index.mjs +1 -1
  260. package/dist/components/RichTextEditor/index.mjs +9 -9
  261. package/dist/components/RightPanel/index.mjs +4 -4
  262. package/dist/components/SegmentedControl/index.mjs +1 -1
  263. package/dist/components/Select/index.d.mts +1 -1
  264. package/dist/components/Select/index.mjs +1 -1
  265. package/dist/components/SelectionCard/index.mjs +5 -5
  266. package/dist/components/Slider/index.mjs +4 -4
  267. package/dist/components/SmartTextInput/index.mjs +112 -118
  268. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  269. package/dist/{safe-parse.d.mts → components/SmartTextInput/parser/safe-parse.d.mts} +1 -1
  270. package/dist/components/SmartTextInput/parser/safe-parse.mjs +30 -0
  271. package/dist/components/SmartTextInput/parser/safe-parse.mjs.map +1 -0
  272. package/dist/{tree.d.mts → components/SmartTextInput/parser/tree.d.mts} +1 -1
  273. package/dist/components/SmartTextInput/parser/tree.mjs +42 -0
  274. package/dist/components/SmartTextInput/parser/tree.mjs.map +1 -0
  275. package/dist/components/Spinner/index.mjs +1 -1
  276. package/dist/components/Stack/index.d.mts +1 -1
  277. package/dist/components/StatusIndicator/index.mjs +1 -1
  278. package/dist/components/Sticker/index.d.mts +1 -1
  279. package/dist/components/Sticker/index.mjs +1 -1
  280. package/dist/components/SwatchPicker/index.mjs +1 -1
  281. package/dist/components/TabBar/index.mjs +1 -1
  282. package/dist/components/Table/index.d.mts +1 -1
  283. package/dist/components/Table/index.mjs +1 -1
  284. package/dist/components/TableBox/index.d.mts +1 -1
  285. package/dist/components/TableBox/index.mjs +1 -1
  286. package/dist/components/TechnicalSticker/index.mjs +1 -1
  287. package/dist/components/Text/index.d.mts +1 -1
  288. package/dist/components/Tile/index.mjs +2 -2
  289. package/dist/components/Toast/index.mjs +4 -4
  290. package/dist/components/Toggle/index.mjs +1 -1
  291. package/dist/components/Tooltip/index.d.mts +3 -3
  292. package/dist/components/Tooltip/index.mjs +1 -1
  293. package/dist/components/VersionHistory/index.mjs +7 -7
  294. package/dist/fieldPickerOptions.d.mts +1 -1
  295. package/dist/{filters-By_TYKAZ.d.mts → filters-CShP0Jag.d.mts} +3 -3
  296. package/dist/filters.d.mts +1 -1
  297. package/dist/{helpers-BIHsqdyX.d.mts → helpers-Bbi1LyMW.d.mts} +5 -3
  298. package/dist/helpers.d.mts +1 -1
  299. package/dist/{index-CZJp4Af6.d.mts → index-3-eDlpcj.d.mts} +3 -3
  300. package/dist/{index-BozzRwby.d.mts → index-DTM_t7OG.d.mts} +2 -2
  301. package/dist/index2.d.mts +1 -1
  302. package/dist/index4.d.mts +2 -2
  303. package/dist/index6.d.mts +2 -2
  304. package/dist/{inputFields-BqO2H-Kj.d.mts → inputFields-Dobwb4kT.d.mts} +6 -6
  305. package/dist/inputFields.d.mts +1 -1
  306. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  307. package/dist/lib/PDSProvider.d.mts +2 -1
  308. package/dist/lib/PDSProvider.mjs +8 -3
  309. package/dist/lib/PDSProvider.mjs.map +1 -1
  310. package/dist/lib/TruncatedText.d.mts +1 -1
  311. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  312. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  313. package/dist/lib/colorMode.d.mts +19 -8
  314. package/dist/lib/colorMode.mjs +47 -13
  315. package/dist/lib/colorMode.mjs.map +1 -1
  316. package/dist/lib/schemaOptions.mjs +1 -1
  317. package/dist/lib/schemaOptions.mjs.map +1 -1
  318. package/dist/lib/useChain.d.mts +1 -1
  319. package/dist/lib/useCloseFocus.d.mts +45 -0
  320. package/dist/lib/useCloseFocus.mjs +123 -0
  321. package/dist/lib/useCloseFocus.mjs.map +1 -0
  322. package/dist/mixins/focus.mjs +1 -1
  323. package/dist/mixins/hoverable.mjs +1 -1
  324. package/dist/mixins/input.mjs +2 -2
  325. package/dist/mixins/motion.d.mts +6 -2
  326. package/dist/mixins/motion.mjs +25 -3
  327. package/dist/mixins/motion.mjs.map +1 -1
  328. package/dist/patterns/CardGrouping/index.mjs +8 -8
  329. package/dist/patterns/IndexTableLayout/index.mjs +23 -16
  330. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
  331. package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
  332. package/dist/patterns/LayoutLoadingSpinner/index.mjs +1 -1
  333. package/dist/patterns/PageLayout/index.d.mts +1 -1
  334. package/dist/patterns/PageLayout/index.mjs +1 -1
  335. package/dist/patterns/WizardModal/index.mjs +4 -4
  336. package/dist/tone.d.mts +1 -1
  337. package/dist/{types-C_CncajO.d.mts → types-BTaKBrxG.d.mts} +2 -2
  338. package/dist/{types-D5txFacG.d.mts → types-CUnL8JJj.d.mts} +7 -5
  339. package/dist/types5.d.mts +1 -1
  340. package/dist/{useChain-x9fd9Fyq.d.mts → useChain-B--KAtdN.d.mts} +2 -2
  341. package/dist/useChainAtCursor.d.mts +1 -1
  342. package/dist/useColumnConfiguration.d.mts +2 -2
  343. package/dist/useComboboxFooterAction.d.mts +1 -1
  344. package/dist/{useTableColumns-BEKJNrb1.d.mts → useTableColumns-BuxN7Usm.d.mts} +17 -2
  345. package/dist/useTableColumns.d.mts +1 -1
  346. package/dist/useTruncation.d.mts +1 -1
  347. package/dist/utils4.d.mts +1 -1
  348. package/dist/value-labels.d.mts +12 -0
  349. package/dist/withDisabledReason.d.mts +19 -0
  350. package/llms.txt +5 -4
  351. package/package.json +10 -12
  352. package/skills/ui-authoring/COMPONENTS.md +1 -2
  353. package/skills/ui-authoring/PATTERNS.md +6 -66
  354. package/skills/ui-authoring/STANDARD.md +11 -1
  355. package/skills/ui-authoring/TOKENS.md +14 -25
  356. package/dist/ChartFrame.d.mts +0 -61
  357. package/dist/ChartLegend.d.mts +0 -60
  358. package/dist/ChartPopover.d.mts +0 -155
  359. package/dist/Combobox-BkK_tosd.mjs.map +0 -1
  360. package/dist/DataTable-DiwzhNMt.mjs.map +0 -1
  361. package/dist/DatePicker-BK7ioKBm.mjs.map +0 -1
  362. package/dist/DropdownMenu-jJSHQaih.mjs.map +0 -1
  363. package/dist/LoadingShimmer-CpfKTSUs.mjs.map +0 -1
  364. package/dist/Modal-B6X5AgWj.mjs.map +0 -1
  365. package/dist/PageLayout-DgEGcZgB.mjs.map +0 -1
  366. package/dist/Popover-DuFjaSoq.mjs.map +0 -1
  367. package/dist/TableControls-CX7BvgD2.mjs.map +0 -1
  368. package/dist/chartColors.d.mts +0 -92
  369. package/dist/chartFrameLayout.d.mts +0 -46
  370. package/dist/components/Chart/index.d.mts +0 -9
  371. package/dist/components/Chart/index.mjs +0 -680
  372. package/dist/components/Chart/index.mjs.map +0 -1
  373. package/dist/useChartColors.d.mts +0 -30
  374. package/dist/useChartSeriesVisibility.d.mts +0 -22
  375. package/dist/useChartStyles.d.mts +0 -108
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@persona/design-system",
3
- "version": "0.10.11",
3
+ "version": "0.10.13",
4
4
  "description": "React components for Persona UI",
5
5
  "keywords": [
6
6
  "tanstack-intent"
@@ -41,7 +41,6 @@
41
41
  "./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
42
42
  "./components/Card": "./dist/components/Card/index.mjs",
43
43
  "./components/CardV2": "./dist/components/CardV2/index.mjs",
44
- "./components/Chart": "./dist/components/Chart/index.mjs",
45
44
  "./components/Checkbox": "./dist/components/Checkbox/index.mjs",
46
45
  "./components/CodeHighlight": "./dist/components/CodeHighlight/index.mjs",
47
46
  "./components/CodeHighlight/PrismWithLanguages": "./dist/components/CodeHighlight/PrismWithLanguages.mjs",
@@ -85,8 +84,10 @@
85
84
  "./components/SmartTextInput": "./dist/components/SmartTextInput/index.mjs",
86
85
  "./components/SmartTextInput/parser/method-chain/parser": "./dist/components/SmartTextInput/parser/method-chain/parser.mjs",
87
86
  "./components/SmartTextInput/parser/method-chain/types": "./dist/components/SmartTextInput/parser/method-chain/types.mjs",
87
+ "./components/SmartTextInput/parser/safe-parse": "./dist/components/SmartTextInput/parser/safe-parse.mjs",
88
88
  "./components/SmartTextInput/parser/smart-text/parser": "./dist/components/SmartTextInput/parser/smart-text/parser.mjs",
89
89
  "./components/SmartTextInput/parser/smart-text/types": "./dist/components/SmartTextInput/parser/smart-text/types.mjs",
90
+ "./components/SmartTextInput/parser/tree": "./dist/components/SmartTextInput/parser/tree.mjs",
90
91
  "./components/SmartTextInput/PillType": "./dist/components/SmartTextInput/PillType.mjs",
91
92
  "./components/Spacer": "./dist/components/Spacer/index.mjs",
92
93
  "./components/Spinner": "./dist/components/Spinner/index.mjs",
@@ -143,6 +144,7 @@
143
144
  "./lib/TruncatedText": "./dist/lib/TruncatedText.mjs",
144
145
  "./lib/TruncatedTextWithTooltip": "./dist/lib/TruncatedTextWithTooltip.mjs",
145
146
  "./lib/useChain": "./dist/lib/useChain.mjs",
147
+ "./lib/useCloseFocus": "./dist/lib/useCloseFocus.mjs",
146
148
  "./lib/useControlled": "./dist/lib/useControlled.mjs",
147
149
  "./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
148
150
  "./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
@@ -184,7 +186,6 @@
184
186
  "build": "tsdown && node scripts/assert-no-node-imports.mjs && node scripts/assert-styled-components-interop.mjs && node scripts/assert-parser-declarations.mjs",
185
187
  "release": "scripts/release.sh --dry-run",
186
188
  "skills:validate": "intent validate skills",
187
- "typecheck:charts": "node scripts/typecheck-charts.mjs",
188
189
  "tokens:generate": "node scripts/generate-semantic-tokens.mjs && node scripts/generate-charting-tokens.mjs",
189
190
  "tokens:check": "node scripts/generate-semantic-tokens.mjs --check && node scripts/generate-charting-tokens.mjs --check",
190
191
  "skills:stale": "intent stale"
@@ -225,7 +226,7 @@
225
226
  "color": "^5.0.3",
226
227
  "csstype": "^3.1.2",
227
228
  "dompurify": "^3.4.17",
228
- "downshift": "^9.0.9",
229
+ "downshift": "^9.4.0",
229
230
  "framer-motion": "^6.5.1",
230
231
  "fuse.js": "^7.1.0",
231
232
  "lodash-es": "^4.18.1",
@@ -245,8 +246,8 @@
245
246
  "@faker-js/faker": "^10.5.0",
246
247
  "@figma/code-connect": "^1.4.4",
247
248
  "@oxlint/plugins": "1.72.0",
248
- "@persona/design-tokens": "0.4.25",
249
- "@persona/icons": "0.1.14",
249
+ "@persona/design-tokens": "0.4.27",
250
+ "@persona/icons": "0.1.16",
250
251
  "@storybook/react": "^10.6.2",
251
252
  "@storybook/react-vite": "^10.6.2",
252
253
  "@tanstack/intent": "^0.3.6",
@@ -279,7 +280,6 @@
279
280
  "react-dom": "^17.0.2",
280
281
  "react-router-dom": "^6.30.5",
281
282
  "recharts": "^2.13.3",
282
- "recharts-v3": "npm:recharts@^3.2.1",
283
283
  "storybook": "^10.6.2",
284
284
  "styled-components": "^5.3.5",
285
285
  "tsdown": "^0.21.0",
@@ -297,7 +297,6 @@
297
297
  "react": ">=17",
298
298
  "react-dom": ">=17",
299
299
  "react-router-dom": "^6.30.1 || ^7.18.2",
300
- "recharts": "^2.13.3 || ^3",
301
300
  "styled-components": "^5.3.5"
302
301
  },
303
302
  "peerDependenciesMeta": {
@@ -309,9 +308,6 @@
309
308
  },
310
309
  "oxlint": {
311
310
  "optional": true
312
- },
313
- "recharts": {
314
- "optional": true
315
311
  }
316
312
  },
317
313
  "publishConfig": {
@@ -327,7 +323,6 @@
327
323
  "./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
328
324
  "./components/Card": "./dist/components/Card/index.mjs",
329
325
  "./components/CardV2": "./dist/components/CardV2/index.mjs",
330
- "./components/Chart": "./dist/components/Chart/index.mjs",
331
326
  "./components/Checkbox": "./dist/components/Checkbox/index.mjs",
332
327
  "./components/CodeHighlight": "./dist/components/CodeHighlight/index.mjs",
333
328
  "./components/CodeHighlight/PrismWithLanguages": "./dist/components/CodeHighlight/PrismWithLanguages.mjs",
@@ -371,8 +366,10 @@
371
366
  "./components/SmartTextInput": "./dist/components/SmartTextInput/index.mjs",
372
367
  "./components/SmartTextInput/parser/method-chain/parser": "./dist/components/SmartTextInput/parser/method-chain/parser.mjs",
373
368
  "./components/SmartTextInput/parser/method-chain/types": "./dist/components/SmartTextInput/parser/method-chain/types.mjs",
369
+ "./components/SmartTextInput/parser/safe-parse": "./dist/components/SmartTextInput/parser/safe-parse.mjs",
374
370
  "./components/SmartTextInput/parser/smart-text/parser": "./dist/components/SmartTextInput/parser/smart-text/parser.mjs",
375
371
  "./components/SmartTextInput/parser/smart-text/types": "./dist/components/SmartTextInput/parser/smart-text/types.mjs",
372
+ "./components/SmartTextInput/parser/tree": "./dist/components/SmartTextInput/parser/tree.mjs",
376
373
  "./components/SmartTextInput/PillType": "./dist/components/SmartTextInput/PillType.mjs",
377
374
  "./components/Spacer": "./dist/components/Spacer/index.mjs",
378
375
  "./components/Spinner": "./dist/components/Spinner/index.mjs",
@@ -429,6 +426,7 @@
429
426
  "./lib/TruncatedText": "./dist/lib/TruncatedText.mjs",
430
427
  "./lib/TruncatedTextWithTooltip": "./dist/lib/TruncatedTextWithTooltip.mjs",
431
428
  "./lib/useChain": "./dist/lib/useChain.mjs",
429
+ "./lib/useCloseFocus": "./dist/lib/useCloseFocus.mjs",
432
430
  "./lib/useControlled": "./dist/lib/useControlled.mjs",
433
431
  "./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
434
432
  "./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
@@ -17,7 +17,6 @@ exists. If there is no `.mdx`, use the published type declarations
17
17
  | `Button` | Triggering an action. Use `IconButton` when there is no label | `@persona/design-system/components/Button` |
18
18
  | `ButtonGroup` | Choosing among related modes in a compact connected button set (often icons, e.g. alignment). Use `Toggle` for a single on/off setting; `RadioGroup` for a visible list of labeled choices | `@persona/design-system/components/ButtonGroup` |
19
19
  | `Card` + `Card.Section` | Grouping related content and actions so they're easier to scan. Collapsible sections on long settings pages | `@persona/design-system/components/CardV2` |
20
- | `ChartFrame`, `ChartLegend`, `ChartPopover` | Experimental (beta). Charts built on `recharts` (optional peer, 2.x or 3.x): `ChartFrame` lays out legend and plot, `ChartLegend` keys and toggles series, `ChartPopover` is the `<Tooltip>` content. Colour series with `useChartColors` / `resolveSeriesColors`; style hand-built Recharts parts with `useChartStyles`. See Storybook Charts → Design | `@persona/design-system/components/Chart` |
21
20
  | `Checkbox` | Selecting one or more options from a visible list | `@persona/design-system/components/Checkbox` |
22
21
  | `Combobox` | Picking from a long list that needs search (single or multi). Use `RadioGroup` when every choice should stay visible (one); `Checkbox` when every choice should stay visible (several); `Select` for a short closed list with no search | `@persona/design-system/components/Combobox` |
23
22
  | `ConfigFormGroup` | Form fields — spacing a group of config fields and setting `configField` via context. Pair with `TextField` / `TextAreaField` | `@persona/design-system/components/ConfigFormGroup` |
@@ -26,7 +25,7 @@ exists. If there is no `.mdx`, use the published type declarations
26
25
  | `SplitColumnLayout` | An 8:4 main and aside page. Same optional regions as `SingleColumnLayout`. Stacks main then aside below 768px | `@persona/design-system/patterns/PageLayout` |
27
26
  | `DataTable` | Data table — browsing tabular data with filtering, bulk actions, search, pagination, and sorting | `@persona/design-system/components/DataTable` |
28
27
  | `IndexTableLayout` | Standard page shell for a DataTable index; hosts supply controls and own saved-view persistence | `@persona/design-system/patterns/IndexTableLayout` |
29
- | `FilterBar` | Structured filters with native Rules; opt-in field `condition`, `pickerGroup`, and `disabledReason` support individual host-defined predicates. Hosts own flags and serialization; see DataTable.mdx | `@persona/design-system/components/DataTable/TableControls` |
28
+ | `FilterBar` | Structured filters with native Rules; opt-in field `condition`, `pickerGroup`, and `disabledReason` support individual host-defined predicates. Optional `getValueLabel(fieldId, value)` supplies display-only choice labels for pills/Rules before registry/raw fallbacks. Hosts re-render when names arrive and own fetching, editors, flags and serialization; see DataTable.mdx | `@persona/design-system/components/DataTable/TableControls` |
30
29
  | `DatePicker` | Picking a date or date range from a calendar | `@persona/design-system/components/DatePicker` |
31
30
  | `DropdownButton` | Opening a menu of related actions from a button | `@persona/design-system/components/DropdownButton` |
32
31
  | `DropdownMenu` | Showing a temporary action list on a custom trigger | `@persona/design-system/components/DropdownMenu` |
@@ -11,7 +11,6 @@ Which pattern to use, and for what. Patterns with a dedicated doc link to
11
11
  | [Forms](../../patterns/Forms/Forms.mdx) | Labeled fields in a `Modal`, `RightPanel`, or page. Unlabeled controls (search, toolbars) stay as `Input` |
12
12
  | Stack / HStack | A heading above content, a cancel/save pair, a title next to an add button, or a wrapping row of tags |
13
13
  | EmptyStates | A list, table, or card has no items yet and you want to invite adding one |
14
- | Charting | Build charts with `recharts` and the experimental `@persona/design-system/components/Chart` pieces; colour series from the chart palettes, never hex |
15
14
  | Indicators | A record’s open, pending, completed, or failed state next to other content. An in-page notice the user shouldn’t miss (success, warning, error). Use `Toast` if it can auto-dismiss |
16
15
  | [SingleColumnLayout](../../patterns/PageLayout/SingleColumnLayout.mdx) | One page column under `PageHeader`, with optional tabs and a page notice. `width="wide"` uses the fluid grid |
17
16
  | [SplitColumnLayout](../../patterns/PageLayout/SplitColumnLayout.mdx) | An 8:4 main and aside page. Same optional regions. Stacks main then aside below 768px |
@@ -26,14 +25,18 @@ Which pattern to use, and for what. Patterns with a dedicated doc link to
26
25
 
27
26
  ## Page layouts
28
27
 
29
- Index pages backed by `DataTable` use `IndexTableLayout`, which owns its `Container`, `PageHeader`,
30
- `Section`, and `Card` shell. Import it from `@persona/design-system/patterns/IndexTableLayout`;
28
+ Index pages backed by `DataTable` use `IndexTableLayout`, which composes `PageHeader`,
29
+ `SingleColumnLayout` (wide by default), and `Card`; don't wrap it in `Container` or `Section`.
30
+ Import it from `@persona/design-system/patterns/IndexTableLayout`;
31
31
  never copy it, persona-web's `DashboardDataTable` wrapper (PDS does not ship one), or
32
32
  `TableControls`/filter panels into an app. Pass app-specific filters through the `controls` prop
33
33
  (`controls={{ filters, filterResolver }}` or `controls={{ filterPanel }}`), and if the pattern lacks
34
34
  a slot you need, add it here instead of forking the layout. Other pages render `PageHeader`, then `SingleColumnLayout` or
35
35
  `SplitColumnLayout`. Do not wrap those templates in `Container` or `Section`.
36
36
 
37
+ For bulk actions on an index page, always set `floatingBulkActions` with `bulkActions` or
38
+ `getAvailableBulkActions`; inline bulk-action buttons in the table controls are legacy.
39
+
37
40
  ```tsx
38
41
  import Header from '@persona/design-system/components/PageHeader';
39
42
  import { SingleColumnLayout, SplitColumnLayout } from '@persona/design-system/patterns/PageLayout';
@@ -294,66 +297,3 @@ Message-only (no CTA):
294
297
 
295
298
  For `ListBox`, pass `emptyText="No items"` prop directly.
296
299
  For `Card.Section`, pass `empty={true}` to show the built-in empty state.
297
-
298
-
299
-
300
- ## Charting
301
-
302
- Experimental (beta). Build charts with `recharts` (an optional peer, 2.x or 3.x) and the pieces in
303
- `@persona/design-system/components/Chart`. Full usage guidance comes later; until then see Storybook
304
- **Charts → Design** (Chart frame, Elements, Themes) and **Charts → Chart types** (Bar chart, Line
305
- chart).
306
-
307
- - `ChartFrame`: legend and plot layout, full width, 300px plot height by default.
308
- - `ChartLegend`: series key; with `onToggle` (and `useChartSeriesVisibility`) it shows and hides series.
309
- - `ChartPopover`: the content of a Recharts `<Tooltip>`.
310
- - `useChartStyles()`: PDS props for Recharts' grid, axes and tooltip cursor in a hand-built chart.
311
- - `useChartColors()` / `resolveSeriesColors()`: series colours from a chart palette.
312
-
313
- ```tsx
314
- import {
315
- ChartFrame,
316
- ChartLegend,
317
- ChartPopover,
318
- CHART_PLOT_MARGIN,
319
- useChartColors,
320
- useChartStyles,
321
- } from '@persona/design-system/components/Chart';
322
- import { Bar, BarChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';
323
-
324
- const colors = useChartColors().resolve(series); // { [series.key]: Color }
325
- const styles = useChartStyles();
326
- const items = series.map((s) => ({ ...s, color: colors[s.key] }));
327
-
328
- <ChartFrame aria-label='Tickets by status' legend={<ChartLegend items={items} />}>
329
- <ResponsiveContainer width='100%' height='100%'>
330
- <BarChart data={data} margin={CHART_PLOT_MARGIN}>
331
- <Tooltip cursor={styles.barCursor} content={<ChartPopover series={items} />} />
332
- <CartesianGrid {...styles.grid} />
333
- <XAxis dataKey='month' {...styles.xAxis} />
334
- <YAxis {...styles.yAxis} />
335
- {items.map((s) => <Bar key={s.key} dataKey={s.key} name={s.label} fill={s.color} />)}
336
- </BarChart>
337
- </ResponsiveContainer>
338
- </ChartFrame>
339
- ```
340
-
341
- ### Palettes
342
-
343
- | Data | Palette (`useChartColors(palette)`) | Colours |
344
- |------|-------------------------------------|---------|
345
- | Distinct, unordered series (default) | `'qualitative'` | 12 |
346
- | Ordered magnitude in one hue | `'sequentialMono'` | 8 |
347
- | Values diverging around a midpoint | `'sequentialDivergent'` | 10 |
348
-
349
- Take Qualitative colours in palette order: the order is tuned for readability. Override a series
350
- only with a Persona token, `chartColor(Color.X)` or a `{ light, dark }` pair of tokens; never hex.
351
-
352
- **Legacy:** `ChartingColors.Sequential` and `ChartingColors.Categorical` from
353
- `@persona/design-tokens` are deprecated for new charts. Existing charts may keep them until they
354
- move to the palettes above.
355
-
356
- **Anti-patterns:**
357
- - Hardcoding hex values for series colours
358
- - Picking Qualitative colours out of order
359
- - Using `'sequentialMono'` for unordered categories
@@ -79,7 +79,7 @@ nearest number.
79
79
  | Control state (checkbox, radio, toggle, tab, segmented control, focus ring) | `Fast`, `Move` | same | colour as in full; travel jumps |
80
80
  | Hover reveal (row actions, copy button, inserter) | `Fast`, `Enter` | `Faster`, `Exit` | fade |
81
81
  | Tooltip | `Fast`, `Enter`, after the 300 ms open delay | `Faster`, `Exit`, no delay | fade |
82
- | Popover, menu, select or combobox list: fade and scale from 0.96 at the trigger's edge | `Fast`, `Enter` | Closes at once: an exit would hold the content mounted and delay focus restoring to the trigger or field | fade in |
82
+ | Popover, menu, select or combobox list: fade and scale from 0.96 at the trigger's edge | `Fast`, `Enter` | `Faster`, `Exit`, focus returning when the close starts; `modal` content, Select and Combobox close at once | fade |
83
83
  | Modal: overlay fade, card rises 8 px | `Fast`, `Enter` | `Faster`, `Exit`, fade only | fade |
84
84
  | Toast: fade, rise and scale from 0.96 | `Medium`, `Enter` | `MediumFast`, `Exit` | fade |
85
85
  | Side panel | `Medium`, `Enter` | `MediumFast`, `Exit` | size jumps; content fades |
@@ -96,8 +96,18 @@ translate, scale or size change. Colour isn't movement, so a colour change keeps
96
96
  a close or a hover-out; a delay only filters accidental triggers.
97
97
  - **Enter on `Enter`, leave on `Exit`, change on `Move`.** None of the curves overshoot.
98
98
  - **Nothing over `Medium` (400 ms) is a state change.** `OneSecond` is for loop periods.
99
+ - **Prefer CSS for motion.** Use `transition` or styled-components `keyframes` whenever CSS can
100
+ express the motion, and always for loops (shimmers, pulses, spinners) and simple enter, exit or
101
+ state changes. Use framer-motion only for what CSS can't do: layout or shared-element animation,
102
+ drag and gesture, spring physics, or exit coordination where there is no `[data-exiting]` or
103
+ `[data-state='closed']` hook. A JavaScript animation runs on the main thread every frame, and an
104
+ infinite one can keep an unmounted screen's DOM alive.
99
105
  - **Exits are keyframe animations** on `[data-exiting]` (React Aria) or `[data-state='closed']`
100
106
  (Radix), because both unmount when the element's animations finish.
107
+ - **Focus leaves when the close starts, not when the exit ends.** Radix returns focus only at
108
+ unmount, so PDS's Popover, DropdownMenu and AdvancedFilterRulesPopover use `useCloseFocus`
109
+ (`@persona/design-system/lib/useCloseFocus`): it runs `onCloseAutoFocus` and focuses the trigger
110
+ at close start, and makes the closing content inert. Raw Radix content with an exit uses it too.
101
111
 
102
112
  persona-motion owns the motion language these rules come from; PDS owns the values.
103
113
 
@@ -490,7 +490,8 @@ Apps embedded in the dashboard follow its mode with
490
490
  `<PDSProvider colorMode={readDocumentColorMode()}>` (`@persona/design-system/lib/colorMode`). That
491
491
  installs the semantic palette for PDS components and publishes it as `--pds-*` CSS variables
492
492
  (`FgPrimary` -> `var(--pds-fg-primary)`) for plain stylesheets. Wrap a subtree in
493
- `<ColorModeScope mode='dark'>` to render it in the other mode. Plain CSS inside a portaled overlay
493
+ `<ColorModeScope mode='dark'>` to render it in the other mode, and read the mode in effect (for
494
+ iframes, canvases or charts) with `useColorMode()`. Plain CSS inside a portaled overlay
494
495
  reads the `:root` variables, not the scope's. Don't copy these helpers into an app. See
495
496
  `tokens/README.md` ("Colour mode in apps").
496
497
 
@@ -702,35 +703,23 @@ const Menu = styled.div`
702
703
 
703
704
  ## Charts
704
705
 
705
- Experimental (beta). Colour chart series with the chart palettes from
706
- `@persona/design-system/components/Chart`: `useChartColors(palette)` (follows the PDS colour mode)
707
- or `resolveSeriesColors()`. See the Charting section of [PATTERNS.md](PATTERNS.md) and Storybook
708
- **Charts → Design → Themes**.
706
+ Experimental (beta). Colour chart series with the chart palette tokens: `ChartingColors` from
707
+ `@persona/design-tokens` (light), or `chartingLight` / `chartingDark` from
708
+ `@persona/design-system/variables/charting`. `chartingColors(theme)` from
709
+ `@persona/design-system/lib/semanticColor` returns the palettes for the theme's colour mode.
709
710
 
710
- | Need | Palette | Token palette | Colours |
711
- |------|---------|---------------|---------|
712
- | Distinct, unordered series (default) | `'qualitative'` | `ChartingColors.Qualitative` | 12 |
713
- | Ordered magnitude in one hue | `'sequentialMono'` | `ChartingColors.SequentialMono` | 8 |
714
- | Values diverging around a midpoint | `'sequentialDivergent'` | `ChartingColors.SequentialDivergent` | 10 |
711
+ | Need | Token palette | Colours |
712
+ |------|---------------|---------|
713
+ | Distinct, unordered series (default) | `ChartingColors.Qualitative` | 12 |
714
+ | Ordered magnitude in one hue | `ChartingColors.SequentialMono` | 8 |
715
+ | Values diverging around a midpoint | `ChartingColors.SequentialDivergent` | 10 |
715
716
 
716
717
  - Take Qualitative colours in order; the order is tuned for readability.
717
- - Override a series only with a Persona token: `chartColor(Color.X)` or a `{ light, dark }` pair.
718
- Never hex: `ChartColor` does not accept a hex string, and the `pds/semantic-color` lint rule
719
- rejects it.
720
-
721
- ```tsx
722
- import { useChartColors } from '@persona/design-system/components/Chart';
723
-
724
- const colors = useChartColors().resolve([
725
- { key: 'approved', label: 'Approved' },
726
- { key: 'declined', label: 'Declined' },
727
- ]);
728
- <Bar dataKey='approved' fill={colors.approved} />;
729
- ```
718
+ - Override a series only with a Persona token, never hex; the `pds/semantic-color` lint rule
719
+ rejects hex.
730
720
 
731
721
  **Legacy (deprecated for new charts):** `ChartingColors.Sequential` (8) and
732
- `ChartingColors.Categorical` (14), also exposed under a colour mode through `chartingColors(theme)`
733
- from `@persona/design-system/lib/semanticColor`. Existing charts may keep them until they move to
722
+ `ChartingColors.Categorical` (14), also exposed under a colour mode through `chartingColors(theme)`. Existing charts may keep them until they move to
734
723
  the palettes above.
735
724
 
736
725
  ## Token Verification
@@ -1,61 +0,0 @@
1
- import { ChartLegendPosition } from "./chartFrameLayout.mjs";
2
- import { ChartLegendProps } from "./ChartLegend.mjs";
3
- import { ReactElement } from "react";
4
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
-
6
- //#region src/components/Chart/ChartFrame.d.ts
7
- type ChartFrameLabel = {
8
- 'aria-label': string;
9
- 'aria-labelledby'?: never;
10
- } | {
11
- 'aria-labelledby': string;
12
- 'aria-label'?: never;
13
- };
14
- /** @experimental */
15
- type ChartFrameProps = ChartFrameLabel & {
16
- /**
17
- * The chart's legend. Pass `null` to omit it, e.g. for a single-series chart whose surrounding
18
- * heading already names the series.
19
- */
20
- legend: ReactElement<ChartLegendProps> | null;
21
- /**
22
- * `'stack'` (default) puts the legend left-aligned above the plot; `'right'` puts it inline to
23
- * the right of the plot, as wide as its longest label up to 200px (longer labels end in an
24
- * ellipsis). The legend and plot are `Spacing[4]` apart when stacked and `Spacing[3]` apart inline.
25
- */
26
- legendPosition?: ChartLegendPosition;
27
- /**
28
- * Plot area height in px. Defaults to 300 (`CHART_DEFAULT_HEIGHT`). The plot always fills 100%
29
- * of the frame's width, and the frame fills its container.
30
- */
31
- height?: number;
32
- /**
33
- * The plot: a Recharts chart, sized by the frame (e.g. wrapped in `ResponsiveContainer`). Give it
34
- * `margin={CHART_PLOT_MARGIN}` so the frame's spacing is the only gap around the plot.
35
- */
36
- children: ReactElement; /** Applied to the root `<figure>`, e.g. to position or size the frame. */
37
- className?: string;
38
- };
39
- /**
40
- * Lays out a chart: its legend and the plot area, `Spacing[4]` apart stacked (`Spacing[3]` inline), with the legend left-aligned
41
- * above the plot (`legendPosition='stack'`, the default) or inline on its right (`'right'`). The
42
- * frame has no header, border or surface of its own: titles, descriptions and controls belong to
43
- * the surrounding container (for example a `CardV2`), which also names the chart via
44
- * `aria-labelledby`.
45
- *
46
- * Size: the chart fills 100% of its container's width, and the plot is 300px tall
47
- * (`CHART_DEFAULT_HEIGHT`) unless `height` overrides it.
48
- *
49
- * @experimental Part of the in-progress PDS charting components; the API may change.
50
- */
51
- declare function ChartFrame({
52
- legend,
53
- legendPosition,
54
- height,
55
- children,
56
- className,
57
- ...label
58
- }: ChartFrameProps): _$react_jsx_runtime0.JSX.Element;
59
- //#endregion
60
- export { ChartFrame, ChartFrame as default, ChartFrameProps };
61
- //# sourceMappingURL=ChartFrame.d.mts.map
@@ -1,60 +0,0 @@
1
- import { Color } from "@persona/design-tokens";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
-
4
- //#region src/components/Chart/ChartLegend.d.ts
5
- /** One series in a {@link ChartLegend}. @experimental */
6
- interface ChartLegendItem<K extends string = string> {
7
- key: K;
8
- label: string;
9
- /** The series colour, from `useChartColors().resolve(...)` or `resolveSeriesColors(...)`. */
10
- color: Color;
11
- }
12
- /** A titled set of legend items, e.g. the series sharing an axis. @experimental */
13
- interface ChartLegendGroup<K extends string = string> {
14
- key: string;
15
- /** Shown above the group's items in uppercase mono text. */
16
- label: string;
17
- items: readonly ChartLegendItem<K>[];
18
- }
19
- /** Either flat `items` or titled `groups`; groups are optional. @experimental */
20
- type ChartLegendContent<K extends string = string> = {
21
- items: readonly ChartLegendItem<K>[];
22
- groups?: never;
23
- } | {
24
- groups: readonly ChartLegendGroup<K>[];
25
- items?: never;
26
- };
27
- /** @experimental */
28
- type ChartLegendProps<K extends string = string> = ChartLegendContent<K> & {
29
- /** Keys of the series currently hidden. Pair with {@link useChartSeriesVisibility}. */hidden?: readonly K[];
30
- /**
31
- * Called with a series key when its legend item is clicked. When set, every item is a toggle
32
- * button (`aria-pressed` is true while the series is shown); when omitted, the legend is static.
33
- * Every series may be hidden.
34
- */
35
- onToggle?: (key: K) => void; /** Names the legend for assistive tech. Defaults to "Chart legend". */
36
- 'aria-label'?: string; /** Applied to the legend's root element (the list, or the group wrapper with `groups`). */
37
- className?: string;
38
- };
39
- /**
40
- * The series key for a chart: a square colour swatch and a `TextMedium` label per series, laid out
41
- * in a row that wraps (a column when it sits right of the plot in a `ChartFrame`). With `onToggle`,
42
- * each item toggles its series; a hidden series keeps a filled swatch at 65% opacity and gets a
43
- * muted label.
44
- *
45
- * Pass `groups` instead of `items` for a grouped legend: groups stack `Spacing[2]` apart, each with
46
- * an uppercase mono title `Spacing[1]` above its row of items.
47
- *
48
- * @experimental Part of the in-progress PDS charting components; the API may change.
49
- */
50
- declare function ChartLegend<K extends string>({
51
- items,
52
- groups,
53
- hidden,
54
- onToggle,
55
- 'aria-label': ariaLabel,
56
- className
57
- }: ChartLegendProps<K>): _$react_jsx_runtime0.JSX.Element;
58
- //#endregion
59
- export { ChartLegend, ChartLegend as default, ChartLegendContent, ChartLegendGroup, ChartLegendItem, ChartLegendProps };
60
- //# sourceMappingURL=ChartLegend.d.mts.map
@@ -1,155 +0,0 @@
1
- import { Color } from "@persona/design-tokens";
2
- import { ReactNode } from "react";
3
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
-
5
- //#region src/components/Chart/ChartPopover.d.ts
6
- /**
7
- * The popover density. `'default'` is the standalone chart popover (256px wide). `'condensed'` is
8
- * for small charts inside table cells (210px wide): the same text, tighter padding and row gaps,
9
- * and never a total row.
10
- *
11
- * @experimental Part of the in-progress PDS charting components; the API may change.
12
- */
13
- type ChartPopoverSize = 'default' | 'condensed';
14
- /**
15
- * One series the popover may list. `series` sets the row order, the label and the swatch colour; a
16
- * Recharts payload entry is matched to a series by its `dataKey`.
17
- *
18
- * @experimental
19
- */
20
- interface ChartPopoverSeries<K extends string = string> {
21
- key: K;
22
- label: ReactNode;
23
- /** The series colour token, e.g. from `useChartColors().resolve(...)`. Falls back to the payload colour. */
24
- color?: Color;
25
- }
26
- /**
27
- * One Recharts tooltip payload entry, typed structurally so the same component accepts the
28
- * payloads of Recharts 2 (`TooltipProps`) and Recharts 3 (`TooltipContentProps`).
29
- *
30
- * @experimental
31
- */
32
- interface ChartPopoverPayloadEntry {
33
- dataKey?: unknown;
34
- name?: unknown;
35
- value?: unknown;
36
- color?: string;
37
- fill?: string;
38
- stroke?: string;
39
- /** Set by Recharts 3 for a series rendered with `hide`. */
40
- hide?: boolean;
41
- /** Set for legend-inactive series. */
42
- inactive?: boolean;
43
- /** `'none'` marks an entry Recharts itself keeps out of its tooltip. */
44
- type?: string;
45
- payload?: unknown;
46
- }
47
- /** One rendered row. @experimental */
48
- interface ChartPopoverRow {
49
- key: string;
50
- label: ReactNode;
51
- /** The swatch colour: a Persona chart colour token. */
52
- color?: string;
53
- value: number | string | null | undefined;
54
- }
55
- interface ChartPopoverPanelOwnProps<K extends string = string> {
56
- /** The header, e.g. the formatted x-axis category. Omitted when empty. */
57
- label?: ReactNode;
58
- /** The rows, top to bottom. */
59
- rows: readonly ChartPopoverRow[];
60
- /** Formats each row value and the total. Defaults to locale number formatting. */
61
- valueFormatter?: (value: number | string, seriesKey: K | 'total') => ReactNode;
62
- /** Appends a total row summing the numeric values of the visible rows. Ignored when `condensed`. */
63
- showTotal?: boolean;
64
- /** Overrides the computed total. */
65
- total?: number;
66
- /** Label of the total row. Defaults to `'Total'`. */
67
- totalLabel?: ReactNode;
68
- /** Defaults to `'default'`. */
69
- size?: ChartPopoverSize;
70
- /**
71
- * Popover width in px. Defaults to 256 (`'default'`) or 210 (`'condensed'`); pass a larger number
72
- * for long series names. The height always follows the rows. Series names that still do not fit
73
- * are truncated with an ellipsis; values never truncate or wrap.
74
- */
75
- width?: number;
76
- /**
77
- * The series the pointer is on (`useChartActiveSeries().activeSeries`). Its row stays at full
78
- * strength and the other series rows drop to 65% opacity; the total row is unaffected.
79
- */
80
- activeSeries?: K;
81
- className?: string;
82
- }
83
- /** @experimental */
84
- type ChartPopoverPanelProps<K extends string = string> = ChartPopoverPanelOwnProps<K>;
85
- /** @experimental */
86
- interface ChartPopoverProps<K extends string = string> extends Omit<ChartPopoverPanelOwnProps<K>, 'rows' | 'label'> {
87
- /** Injected by Recharts `<Tooltip>`. */
88
- active?: boolean;
89
- /** Injected by Recharts `<Tooltip>`. */
90
- payload?: readonly ChartPopoverPayloadEntry[];
91
- /** Injected by Recharts `<Tooltip>`: the hovered category. */
92
- label?: unknown;
93
- /**
94
- * The chart's series, in display order. Rows follow this order and only series listed here are
95
- * shown. Without it, rows follow the payload order and use the payload's names and colours.
96
- */
97
- series?: readonly ChartPopoverSeries<K>[];
98
- /** Series keys hidden by the legend; they get no row. */
99
- hiddenSeries?: Iterable<K>;
100
- /** Formats the header from the hovered category. Defaults to the category as is. */
101
- labelFormatter?: (label: unknown, payload: readonly ChartPopoverPayloadEntry[]) => ReactNode;
102
- }
103
- /** Default popover widths in px (Figma). @experimental */
104
- declare const CHART_POPOVER_WIDTH: Record<ChartPopoverSize, number>;
105
- /**
106
- * The chart popover body: an optional header, one row per series (swatch, name, right-aligned
107
- * value) and an optional total row. Use it directly for a popover drawn outside Recharts; inside a
108
- * Recharts chart use {@link ChartPopover}.
109
- *
110
- * @experimental Part of the in-progress PDS charting components; the API may change.
111
- */
112
- declare function ChartPopoverPanel<K extends string = string>({
113
- label,
114
- rows,
115
- valueFormatter,
116
- showTotal,
117
- total,
118
- totalLabel,
119
- size,
120
- width,
121
- activeSeries,
122
- className
123
- }: ChartPopoverPanelProps<K>): _$react_jsx_runtime0.JSX.Element;
124
- /**
125
- * Builds the popover rows from a Recharts tooltip payload: drops hidden and inactive series, then
126
- * orders, labels and colours the rest by `series` (or keeps the payload order without it).
127
- *
128
- * @experimental
129
- */
130
- declare function chartPopoverRows<K extends string>(payload: readonly ChartPopoverPayloadEntry[], series?: readonly ChartPopoverSeries<K>[], hiddenSeries?: Iterable<K>): ChartPopoverRow[];
131
- /**
132
- * Chart popover (tooltip) content for Recharts 2 and 3. Pass it to `<Tooltip content={...} />`;
133
- * Recharts injects `active`, `payload` and `label`.
134
- *
135
- * ```tsx
136
- * const series = [{ key: 'approved', label: 'Approved', color: colors.approved }, ...];
137
- * <Tooltip cursor={false} content={<ChartPopover series={series} hiddenSeries={hidden} />} />
138
- * ```
139
- *
140
- * Renders nothing while inactive or when every series is hidden.
141
- *
142
- * @experimental Part of the in-progress PDS charting components; the API may change.
143
- */
144
- declare function ChartPopover<K extends string = string>({
145
- active,
146
- payload,
147
- label,
148
- series,
149
- hiddenSeries,
150
- labelFormatter,
151
- ...panelProps
152
- }: ChartPopoverProps<K>): _$react_jsx_runtime0.JSX.Element | null;
153
- //#endregion
154
- export { CHART_POPOVER_WIDTH, ChartPopover, ChartPopoverPanel, ChartPopoverPanelProps, ChartPopoverPayloadEntry, ChartPopoverProps, ChartPopoverRow, ChartPopoverSeries, ChartPopoverSize, chartPopoverRows };
155
- //# sourceMappingURL=ChartPopover.d.mts.map