@persona/design-system 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +3 -3
  3. package/dist/{Action-CnNf5T-l.d.mts → Action-DL3kHI9Z.d.mts} +3 -3
  4. package/dist/Action.d.mts +1 -1
  5. package/dist/AdvancedFilterRuleRow.d.mts +3 -3
  6. package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
  7. package/dist/ArrayValueControl.d.mts +1 -1
  8. package/dist/Attribute.d.mts +5 -5
  9. package/dist/AttributeGrid.d.mts +1 -1
  10. package/dist/{Badge-BqS6Nk4J.mjs → Badge-BL0J5oMa.mjs} +3 -3
  11. package/dist/{Badge-BqS6Nk4J.mjs.map → Badge-BL0J5oMa.mjs.map} +1 -1
  12. package/dist/Banner.d.mts +1 -1
  13. package/dist/BooleanValueControl.d.mts +1 -1
  14. package/dist/{Breadcrumb-DEwZFJHF.d.mts → Breadcrumb-Czgdi0xf.d.mts} +1 -1
  15. package/dist/Breadcrumb.d.mts +1 -1
  16. package/dist/{Breadcrumbs-CqKtnZqu.mjs → Breadcrumbs-ed4wRDS7.mjs} +12 -12
  17. package/dist/{Breadcrumbs-CqKtnZqu.mjs.map → Breadcrumbs-ed4wRDS7.mjs.map} +1 -1
  18. package/dist/{Breadcrumbs-0e_3v9FF.d.mts → Breadcrumbs-zei-cpdU.d.mts} +2 -2
  19. package/dist/Breadcrumbs.d.mts +1 -1
  20. package/dist/{Button-C0F0F2IL.d.mts → Button-CKzNTpPL.d.mts} +4 -4
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/ButtonGroup.d.mts +1 -1
  23. package/dist/{Calendar-BvLNcHQM.d.mts → Calendar-CcxN7y3e.d.mts} +2 -2
  24. package/dist/Calendar.d.mts +1 -1
  25. package/dist/CalendarBase.d.mts +1 -1
  26. package/dist/{Card-BMCB9eFC.mjs → Card-CKrJtn1f.mjs} +4 -4
  27. package/dist/{Card-BMCB9eFC.mjs.map → Card-CKrJtn1f.mjs.map} +1 -1
  28. package/dist/{Card-BxNoIQWw.d.mts → Card-pr4FQWjn.d.mts} +4 -4
  29. package/dist/Card.d.mts +1 -1
  30. package/dist/Card2.d.mts +3 -3
  31. package/dist/{CardV2-B0ZweQYk.mjs → CardV2-D3m5EKlp.mjs} +19 -19
  32. package/dist/{CardV2-B0ZweQYk.mjs.map → CardV2-D3m5EKlp.mjs.map} +1 -1
  33. package/dist/{Checkbox-Bm8exUfH.d.mts → Checkbox-Bmm-r5ei.d.mts} +1 -1
  34. package/dist/{Checkbox-DAvbgZgO.mjs → Checkbox-Ccuicmlo.mjs} +8 -8
  35. package/dist/{Checkbox-DAvbgZgO.mjs.map → Checkbox-Ccuicmlo.mjs.map} +1 -1
  36. package/dist/Checkbox.d.mts +1 -1
  37. package/dist/CheckboxGroupField.d.mts +2 -2
  38. package/dist/ChoicesValueControl.d.mts +1 -1
  39. package/dist/{Combobox-xBrxiUAu.mjs → Combobox-BGRyr_-L.mjs} +22 -22
  40. package/dist/Combobox-BGRyr_-L.mjs.map +1 -0
  41. package/dist/{Combobox-C8ue0cBP.d.mts → Combobox-Bf_Xe1BG.d.mts} +3 -3
  42. package/dist/Combobox.d.mts +2 -2
  43. package/dist/{ComboboxBase-DJGTMf1_.d.mts → ComboboxBase-CWzN8GML.d.mts} +8 -8
  44. package/dist/ComboboxBase.d.mts +1 -1
  45. package/dist/{ComboboxMultiSelect-D7A2bbWU.d.mts → ComboboxMultiSelect-iSuvyOx2.d.mts} +2 -2
  46. package/dist/ComboboxMultiSelect.d.mts +1 -1
  47. package/dist/{ComboboxSingleSelect-D1uzEyKj.d.mts → ComboboxSingleSelect-DVRFKPi1.d.mts} +4 -4
  48. package/dist/ComboboxSingleSelect.d.mts +1 -1
  49. package/dist/{CompactBar-DMuvqaV5.d.mts → CompactBar-C_61pgp7.d.mts} +3 -3
  50. package/dist/CompactBar.d.mts +1 -1
  51. package/dist/{ConfigFormGroup-D2_sajXe.mjs → ConfigFormGroup-DGCTW3by.mjs} +4 -4
  52. package/dist/{ConfigFormGroup-D2_sajXe.mjs.map → ConfigFormGroup-DGCTW3by.mjs.map} +1 -1
  53. package/dist/{ControlBar-Dg8JeU8f.d.mts → ControlBar-0XwbM4yC.d.mts} +2 -2
  54. package/dist/ControlBar.d.mts +1 -1
  55. package/dist/DataTable.d.mts +4 -4
  56. package/dist/{DateField-Com9f2-j.d.mts → DateField-CKeSIhGy.d.mts} +2 -2
  57. package/dist/DateField.d.mts +1 -1
  58. package/dist/{DatePicker-BGO6doLx.d.mts → DatePicker-B1iWrqR5.d.mts} +2 -2
  59. package/dist/{DatePicker-BlnE2MBD.mjs → DatePicker-BNnZ6L1y.mjs} +29 -12
  60. package/dist/DatePicker-BNnZ6L1y.mjs.map +1 -0
  61. package/dist/DatePicker.d.mts +1 -1
  62. package/dist/{DateRangePicker-DfRBm9z4.d.mts → DateRangePicker-BmF9eH9R.d.mts} +2 -2
  63. package/dist/DateRangePicker.d.mts +1 -1
  64. package/dist/DateRangeValueControl.d.mts +2 -2
  65. package/dist/DateValueControl.d.mts +1 -1
  66. package/dist/{DropdownButton-CpWNRUma.mjs → DropdownButton-BlVeFbJ0.mjs} +3 -3
  67. package/dist/{DropdownButton-CpWNRUma.mjs.map → DropdownButton-BlVeFbJ0.mjs.map} +1 -1
  68. package/dist/DropdownButton.d.mts +2 -2
  69. package/dist/{DropdownMenu-BCyV8nC0.mjs → DropdownMenu-82xH1AZr.mjs} +4 -4
  70. package/dist/{DropdownMenu-BCyV8nC0.mjs.map → DropdownMenu-82xH1AZr.mjs.map} +1 -1
  71. package/dist/{DropdownMenu-CnaK78rP.d.mts → DropdownMenu-DuTnq9j7.d.mts} +3 -3
  72. package/dist/DropdownMenu.d.mts +1 -1
  73. package/dist/{ErrorProps-CN2XjaOX.d.mts → ErrorProps-DX50vo-U.d.mts} +1 -1
  74. package/dist/ErrorProps.d.mts +1 -1
  75. package/dist/{FieldRegistry-DdA63Vnh.d.mts → FieldRegistry-D1vghSC_.d.mts} +2 -2
  76. package/dist/FieldRegistry.d.mts +1 -1
  77. package/dist/{FilterBar-CxNsBVrn.d.mts → FilterBar-Ck085Dic.d.mts} +4 -4
  78. package/dist/FilterBar.d.mts +1 -1
  79. package/dist/FilterPickerMenu.d.mts +3 -3
  80. package/dist/FilterPill.d.mts +1 -1
  81. package/dist/FilterPopover.d.mts +2 -2
  82. package/dist/FloatValueControl.d.mts +1 -1
  83. package/dist/FloatingPanel.d.mts +1 -1
  84. package/dist/FloatingPanelContext.d.mts +1 -1
  85. package/dist/{FormControl-Doj2gvF0.d.mts → FormControl-CfpwZGlD.d.mts} +4 -4
  86. package/dist/{FormControl-HVzZEqJH.mjs → FormControl-D1HIqDKm.mjs} +6 -6
  87. package/dist/{FormControl-HVzZEqJH.mjs.map → FormControl-D1HIqDKm.mjs.map} +1 -1
  88. package/dist/FormControl.d.mts +1 -1
  89. package/dist/FormControlLabel.d.mts +2 -2
  90. package/dist/{FormField-D8dHbqZZ.d.mts → FormField-0p4y0sS5.d.mts} +2 -2
  91. package/dist/{FormField-B9P3BWvS.mjs → FormField-CVnbsNvU.mjs} +22 -22
  92. package/dist/FormField-CVnbsNvU.mjs.map +1 -0
  93. package/dist/FormField.d.mts +1 -1
  94. package/dist/{Header-CBlB65NY.d.mts → Header-gDUTQgWj.d.mts} +2 -2
  95. package/dist/Header.d.mts +1 -1
  96. package/dist/{HelperTooltip-C28h1zFl.d.mts → HelperTooltip-CqhiRb5g.d.mts} +3 -3
  97. package/dist/HelperTooltip.d.mts +1 -1
  98. package/dist/{HoverCopyableField-0Bzygbp9.mjs → HoverCopyableField-HWshrU_1.mjs} +31 -20
  99. package/dist/HoverCopyableField-HWshrU_1.mjs.map +1 -0
  100. package/dist/HoverCopyableField.d.mts +15 -4
  101. package/dist/{IconButton-BfDlic2K.mjs → IconButton-BgL3QUVO.mjs} +9 -9
  102. package/dist/{IconButton-BfDlic2K.mjs.map → IconButton-BgL3QUVO.mjs.map} +1 -1
  103. package/dist/{IconButton-CBcW7ZU8.d.mts → IconButton-CLsHdYm7.d.mts} +2 -2
  104. package/dist/IconButton.d.mts +1 -1
  105. package/dist/ImageTile.d.mts +2 -2
  106. package/dist/InlineCombobox.d.mts +2 -2
  107. package/dist/InlineInput.d.mts +1 -1
  108. package/dist/{Input-CVdjkX88.d.mts → Input-BHHWpSKN.d.mts} +6 -6
  109. package/dist/{Input-Bimw8KFj.mjs → Input-DoB8YswA.mjs} +6 -6
  110. package/dist/{Input-Bimw8KFj.mjs.map → Input-DoB8YswA.mjs.map} +1 -1
  111. package/dist/Input.d.mts +1 -1
  112. package/dist/{InputProps-BwKkmImn.d.mts → InputProps-sHxlDiss.d.mts} +2 -2
  113. package/dist/InputProps.d.mts +1 -1
  114. package/dist/IntegerValueControl.d.mts +1 -1
  115. package/dist/LayoutLoadingSpinner.d.mts +11 -0
  116. package/dist/Link.d.mts +3 -3
  117. package/dist/{ListBox-DKZpGYjo.mjs → ListBox-B9uuMt2R.mjs} +15 -15
  118. package/dist/{ListBox-DKZpGYjo.mjs.map → ListBox-B9uuMt2R.mjs.map} +1 -1
  119. package/dist/{ListBox-CDl5oZPX.d.mts → ListBox-BrY1bQ5-.d.mts} +5 -5
  120. package/dist/ListBox.d.mts +1 -1
  121. package/dist/ListBoxField.d.mts +3 -3
  122. package/dist/{LoadingShimmer-DC2vqicd.mjs → LoadingShimmer-dsBWRdTU.mjs} +2 -2
  123. package/dist/{LoadingShimmer-DC2vqicd.mjs.map → LoadingShimmer-dsBWRdTU.mjs.map} +1 -1
  124. package/dist/LoadingShimmer.d.mts +2 -2
  125. package/dist/{LogicRow-CkbyvrUw.d.mts → LogicRow-9a_klV2v.d.mts} +4 -4
  126. package/dist/LogicRow.d.mts +1 -1
  127. package/dist/MaskedInput.d.mts +2 -2
  128. package/dist/MatchHighlight.d.mts +1 -1
  129. package/dist/{Menu-Dir03WA9.mjs → Menu-CHbUf9PQ.mjs} +6 -6
  130. package/dist/{Menu-Dir03WA9.mjs.map → Menu-CHbUf9PQ.mjs.map} +1 -1
  131. package/dist/{Menu-CYRdEnfo.d.mts → Menu-D4Y_J-QI.d.mts} +4 -4
  132. package/dist/Menu.d.mts +1 -1
  133. package/dist/{MiddleTruncatedText-GXI-CPvs.mjs → MiddleTruncatedText-DnF7F_1D.mjs} +4 -4
  134. package/dist/{MiddleTruncatedText-GXI-CPvs.mjs.map → MiddleTruncatedText-DnF7F_1D.mjs.map} +1 -1
  135. package/dist/Modal.d.mts +4 -5
  136. package/dist/{PageHeader-C2IUKhCg.mjs → PageHeader-XxGsFLHb.mjs} +4 -4
  137. package/dist/{PageHeader-C2IUKhCg.mjs.map → PageHeader-XxGsFLHb.mjs.map} +1 -1
  138. package/dist/PageHeader.d.mts +2 -2
  139. package/dist/PageLayout.d.mts +1 -1
  140. package/dist/{PageSelector-vay4jpMp.d.mts → PageSelector-BDo3ge1E.d.mts} +3 -3
  141. package/dist/PageSelector.d.mts +1 -1
  142. package/dist/{Pagination-ygLutOst.d.mts → Pagination-Dcmv7bVe.d.mts} +2 -2
  143. package/dist/{Pagination-0VhVdXv0.mjs → Pagination-DvVKQLdC.mjs} +8 -8
  144. package/dist/{Pagination-0VhVdXv0.mjs.map → Pagination-DvVKQLdC.mjs.map} +1 -1
  145. package/dist/Pagination.d.mts +1 -1
  146. package/dist/{Pii-C7pA72Bh.mjs → Pii-BD48BtZ0.mjs} +2 -2
  147. package/dist/{Pii-C7pA72Bh.mjs.map → Pii-BD48BtZ0.mjs.map} +1 -1
  148. package/dist/Pii.d.mts +1 -1
  149. package/dist/PillShell.d.mts +1 -1
  150. package/dist/{Popover-BkDpDdaO.mjs → Popover-DNH8Jx1-.mjs} +6 -6
  151. package/dist/{Popover-BkDpDdaO.mjs.map → Popover-DNH8Jx1-.mjs.map} +1 -1
  152. package/dist/Popover.d.mts +1 -1
  153. package/dist/ProgressBar.d.mts +1 -1
  154. package/dist/ProgressIndicator.d.mts +1 -1
  155. package/dist/{PseudoClassProps-CcSlKNev.d.mts → PseudoClassProps-DgT5G_z5.d.mts} +1 -1
  156. package/dist/PseudoClassProps.d.mts +1 -1
  157. package/dist/{Radio-BaFutxgV.mjs → Radio-DSMPX5_2.mjs} +5 -5
  158. package/dist/{Radio-BaFutxgV.mjs.map → Radio-DSMPX5_2.mjs.map} +1 -1
  159. package/dist/{RadioGroup-ClMzOZl0.mjs → RadioGroup-D5IITQLz.mjs} +4 -4
  160. package/dist/{RadioGroup-ClMzOZl0.mjs.map → RadioGroup-D5IITQLz.mjs.map} +1 -1
  161. package/dist/{RadioGroup-BuJaitgG.d.mts → RadioGroup-Jl1yAvGu.d.mts} +1 -1
  162. package/dist/RadioGroup.d.mts +1 -1
  163. package/dist/RangeCalendar.d.mts +1 -1
  164. package/dist/RangeCalendarPresets.d.mts +1 -1
  165. package/dist/RuleEditorFields.d.mts +3 -3
  166. package/dist/RulesPill.d.mts +1 -1
  167. package/dist/{SearchInput-Ca3_np5e.d.mts → SearchInput-CaKHRC_s.d.mts} +3 -3
  168. package/dist/SearchInput.d.mts +1 -1
  169. package/dist/SectionHeading.d.mts +1 -1
  170. package/dist/{SegmentedControl-DgyJL4uN.mjs → SegmentedControl-JUgRw_M-.mjs} +5 -5
  171. package/dist/{SegmentedControl-DgyJL4uN.mjs.map → SegmentedControl-JUgRw_M-.mjs.map} +1 -1
  172. package/dist/{SegmentedControl-_I4sWeD7.d.mts → SegmentedControl-e6xDtoHC.d.mts} +2 -2
  173. package/dist/SegmentedControl.d.mts +1 -1
  174. package/dist/{Select-vwXGlHuW.d.mts → Select-CPYztD4m.d.mts} +4 -4
  175. package/dist/{Select-D6MqSYVa.mjs → Select-DX3toj6M.mjs} +12 -12
  176. package/dist/{Select-D6MqSYVa.mjs.map → Select-DX3toj6M.mjs.map} +1 -1
  177. package/dist/Select.d.mts +1 -1
  178. package/dist/Slider.d.mts +1 -1
  179. package/dist/SliderRHF.d.mts +1 -1
  180. package/dist/SliderThumb.d.mts +1 -1
  181. package/dist/{Spacer-CJp0lwkL.mjs → Spacer-BsK8tTwA.mjs} +2 -2
  182. package/dist/{Spacer-CJp0lwkL.mjs.map → Spacer-BsK8tTwA.mjs.map} +1 -1
  183. package/dist/{Spinner-BgBCCHGo.mjs → Spinner-D3wXIoXN.mjs} +3 -3
  184. package/dist/{Spinner-BgBCCHGo.mjs.map → Spinner-D3wXIoXN.mjs.map} +1 -1
  185. package/dist/{Stack-Bl54WmhY.mjs → Stack-Bre2oiov.mjs} +2 -2
  186. package/dist/{Stack-Bl54WmhY.mjs.map → Stack-Bre2oiov.mjs.map} +1 -1
  187. package/dist/{Stack-CkV7k7TE.d.mts → Stack-DHaK1-dw.d.mts} +2 -2
  188. package/dist/Stack.d.mts +1 -1
  189. package/dist/StatusIndicator.d.mts +1 -1
  190. package/dist/{Sticker-xtDMuOoN.mjs → Sticker-CQ6sOKUj.mjs} +6 -6
  191. package/dist/{Sticker-xtDMuOoN.mjs.map → Sticker-CQ6sOKUj.mjs.map} +1 -1
  192. package/dist/{Sticker-Dhx2wqTL.d.mts → Sticker-DnSemOcW.d.mts} +6 -6
  193. package/dist/Sticker.d.mts +1 -1
  194. package/dist/StringValueControl.d.mts +1 -1
  195. package/dist/SwatchPicker.d.mts +1 -1
  196. package/dist/Tab.d.mts +3 -3
  197. package/dist/{TabBar-D6UocZXi.mjs → TabBar-sYllYizt.mjs} +7 -7
  198. package/dist/{TabBar-D6UocZXi.mjs.map → TabBar-sYllYizt.mjs.map} +1 -1
  199. package/dist/TabBarIconButton.d.mts +2 -2
  200. package/dist/{Table-D1WyUQuv.mjs → Table-C2pkP5Xg.mjs} +8 -8
  201. package/dist/{Table-D1WyUQuv.mjs.map → Table-C2pkP5Xg.mjs.map} +1 -1
  202. package/dist/{Table-cO7ZwGPM.d.mts → Table-CFbPINKr.d.mts} +1 -1
  203. package/dist/Table.d.mts +1 -1
  204. package/dist/{TableBody-CirMgfAV.d.mts → TableBody-BQsGc4Lw.d.mts} +1 -1
  205. package/dist/TableBody.d.mts +1 -1
  206. package/dist/{TableBox-C5qWhr82.mjs → TableBox-CaTHcR4F.mjs} +16 -16
  207. package/dist/{TableBox-C5qWhr82.mjs.map → TableBox-CaTHcR4F.mjs.map} +1 -1
  208. package/dist/TableBox.d.mts +2 -2
  209. package/dist/{TableBoxCell-DmVX_tgn.d.mts → TableBoxCell-52g97gEg.d.mts} +8 -8
  210. package/dist/TableBoxCell.d.mts +1 -1
  211. package/dist/TableBoxField.d.mts +4 -4
  212. package/dist/{TableBoxRow-nwq41Bpi.d.mts → TableBoxRow-DnoumHIE.d.mts} +4 -4
  213. package/dist/TableBoxRow.d.mts +1 -1
  214. package/dist/{TableBoxRowActions-B4_ojiQo.d.mts → TableBoxRowActions-CDcREhP4.d.mts} +2 -2
  215. package/dist/TableBoxRowActions.d.mts +1 -1
  216. package/dist/TableCell.d.mts +1 -1
  217. package/dist/{TableControls-CZ9iu3ma.mjs → TableControls-3bXyd8gS.mjs} +104 -79
  218. package/dist/TableControls-3bXyd8gS.mjs.map +1 -0
  219. package/dist/{TableControls-RwIPBxyU.d.mts → TableControls-CrGGlkEG.d.mts} +5 -9
  220. package/dist/TableControls.d.mts +1 -1
  221. package/dist/{TableControlsContext-D_SBFZN1.d.mts → TableControlsContext-BKZt2Jid.d.mts} +2 -2
  222. package/dist/TableControlsContext.d.mts +1 -1
  223. package/dist/{TableHead-DMq_q_W0.d.mts → TableHead-CqVIJfjh.d.mts} +1 -1
  224. package/dist/TableHead.d.mts +1 -1
  225. package/dist/{TableHeaderCell-C2pqXBYO.d.mts → TableHeaderCell-DK4R8vdK.d.mts} +1 -1
  226. package/dist/TableHeaderCell.d.mts +1 -1
  227. package/dist/{TableLayout-DQKu6Rcj.d.mts → TableLayout-BcIazRB-.d.mts} +1 -1
  228. package/dist/TableLayout.d.mts +1 -1
  229. package/dist/{TableRow-CPqZ8DK3.d.mts → TableRow-DdJcjG2b.d.mts} +2 -2
  230. package/dist/TableRow.d.mts +1 -1
  231. package/dist/TableTH.d.mts +1 -1
  232. package/dist/{TableViewConfigurationDropdown-BYPh4dIP.d.mts → TableViewConfigurationDropdown-CHBOjw7O.d.mts} +5 -3
  233. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  234. package/dist/{TechnicalSticker-DTjg6d2F.mjs → TechnicalSticker-D3eeGMDR.mjs} +6 -6
  235. package/dist/{TechnicalSticker-DTjg6d2F.mjs.map → TechnicalSticker-D3eeGMDR.mjs.map} +1 -1
  236. package/dist/TechnicalSticker.d.mts +1 -1
  237. package/dist/{Text-RcEfNFLx.mjs → Text-B0orb-cZ.mjs} +2 -2
  238. package/dist/{Text-RcEfNFLx.mjs.map → Text-B0orb-cZ.mjs.map} +1 -1
  239. package/dist/{Text-CfIFUyHt.d.mts → Text-BIgrwIdS.d.mts} +4 -4
  240. package/dist/Text.d.mts +1 -1
  241. package/dist/{TextArea-DhPBI_1-.d.mts → TextArea-CiLttt0s.d.mts} +2 -2
  242. package/dist/{TextArea-ZMgbE_Lh.mjs → TextArea-DWXuV2aZ.mjs} +4 -4
  243. package/dist/{TextArea-ZMgbE_Lh.mjs.map → TextArea-DWXuV2aZ.mjs.map} +1 -1
  244. package/dist/TextArea.d.mts +1 -1
  245. package/dist/{TextUnderlineTooltip-BzmmiJlC.d.mts → TextUnderlineTooltip-_7mIrZ2-.d.mts} +3 -3
  246. package/dist/TextUnderlineTooltip.d.mts +1 -1
  247. package/dist/Tile.d.mts +2 -2
  248. package/dist/Toast.d.mts +1 -1
  249. package/dist/{Toggle-BGGQ4Ukl.d.mts → Toggle-Cav7bMxg.d.mts} +1 -1
  250. package/dist/{Toggle-BPgfSjuu.mjs → Toggle-e8DCYa6i.mjs} +7 -7
  251. package/dist/{Toggle-BPgfSjuu.mjs.map → Toggle-e8DCYa6i.mjs.map} +1 -1
  252. package/dist/Toggle.d.mts +1 -1
  253. package/dist/{Tooltip-D_a-RwAN.d.mts → Tooltip-DX-N-szt.d.mts} +3 -3
  254. package/dist/{Tooltip-BvDbmXak.mjs → Tooltip-iJcfJqxn.mjs} +5 -5
  255. package/dist/{Tooltip-BvDbmXak.mjs.map → Tooltip-iJcfJqxn.mjs.map} +1 -1
  256. package/dist/Tooltip.d.mts +1 -1
  257. package/dist/{TruncatedText-BJnowVTx.d.mts → TruncatedText-D2R7uy_y.d.mts} +2 -2
  258. package/dist/components/Attribute/index.mjs +7 -7
  259. package/dist/components/Attribute/index.mjs.map +1 -1
  260. package/dist/components/Badge/index.mjs +1 -1
  261. package/dist/components/Banner/index.mjs +3 -3
  262. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  263. package/dist/components/Breadcrumbs/index.mjs +1 -1
  264. package/dist/components/Button/index.d.mts +2 -2
  265. package/dist/components/Button/index.mjs +1 -1
  266. package/dist/components/ButtonGroup/index.mjs +4 -4
  267. package/dist/components/Card/index.d.mts +2 -2
  268. package/dist/components/Card/index.mjs +1 -1
  269. package/dist/components/CardV2/index.d.mts +1 -1
  270. package/dist/components/CardV2/index.mjs +1 -1
  271. package/dist/components/Checkbox/index.d.mts +1 -1
  272. package/dist/components/Checkbox/index.mjs +1 -1
  273. package/dist/components/Combobox/index.d.mts +2 -2
  274. package/dist/components/Combobox/index.mjs +1 -1
  275. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  276. package/dist/components/DataTable/TableControls/index.d.mts +15 -15
  277. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  278. package/dist/components/DataTable/index.mjs +25 -25
  279. package/dist/components/DataTable/index.mjs.map +1 -1
  280. package/dist/components/DataTable/types.d.mts +2 -2
  281. package/dist/components/DatePicker/index.d.mts +4 -4
  282. package/dist/components/DatePicker/index.mjs +1 -1
  283. package/dist/components/DropdownButton/index.mjs +1 -1
  284. package/dist/components/DropdownMenu/index.d.mts +1 -1
  285. package/dist/components/DropdownMenu/index.mjs +1 -1
  286. package/dist/components/FloatingPanel/index.mjs +8 -8
  287. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  288. package/dist/components/FormControl/index.d.mts +2 -2
  289. package/dist/components/FormControl/index.mjs +2 -2
  290. package/dist/components/FormField/index.d.mts +1 -1
  291. package/dist/components/FormField/index.mjs +1 -1
  292. package/dist/components/HoverCopyableField/index.d.mts +2 -2
  293. package/dist/components/HoverCopyableField/index.mjs +2 -2
  294. package/dist/components/ImageTile/index.mjs +10 -10
  295. package/dist/components/Input/index.d.mts +1 -1
  296. package/dist/components/Input/index.mjs +1 -1
  297. package/dist/components/Link/index.mjs +4 -4
  298. package/dist/components/Link/index.mjs.map +1 -1
  299. package/dist/components/ListBox/index.d.mts +3 -3
  300. package/dist/components/ListBox/index.mjs +1 -1
  301. package/dist/components/LoadingShimmer/index.mjs +1 -1
  302. package/dist/components/MaskedInput/index.mjs +2 -2
  303. package/dist/components/MatchHighlight/index.mjs +1 -1
  304. package/dist/components/Menu/index.d.mts +1 -1
  305. package/dist/components/Menu/index.mjs +1 -1
  306. package/dist/components/Modal/index.mjs +42 -12
  307. package/dist/components/Modal/index.mjs.map +1 -1
  308. package/dist/components/PageHeader/index.mjs +1 -1
  309. package/dist/components/Pagination/index.d.mts +3 -3
  310. package/dist/components/Pagination/index.mjs +1 -1
  311. package/dist/components/Pii/index.mjs +1 -1
  312. package/dist/components/Popover/index.mjs +1 -1
  313. package/dist/components/ProgressBar/index.mjs +2 -2
  314. package/dist/components/ProgressIndicator/index.mjs +2 -2
  315. package/dist/components/Radio/index.mjs +1 -1
  316. package/dist/components/RadioGroup/index.d.mts +1 -1
  317. package/dist/components/RadioGroup/index.mjs +1 -1
  318. package/dist/components/SegmentedControl/index.d.mts +1 -1
  319. package/dist/components/SegmentedControl/index.mjs +1 -1
  320. package/dist/components/Select/index.d.mts +1 -1
  321. package/dist/components/Select/index.mjs +1 -1
  322. package/dist/components/Slider/index.mjs +4 -4
  323. package/dist/components/Spacer/index.mjs +1 -1
  324. package/dist/components/Spinner/index.mjs +1 -1
  325. package/dist/components/Stack/index.d.mts +1 -1
  326. package/dist/components/Stack/index.mjs +1 -1
  327. package/dist/components/StatusIndicator/index.mjs +2 -2
  328. package/dist/components/Sticker/index.d.mts +1 -1
  329. package/dist/components/Sticker/index.mjs +1 -1
  330. package/dist/components/SwatchPicker/index.mjs +1 -1
  331. package/dist/components/TabBar/index.mjs +1 -1
  332. package/dist/components/Table/index.d.mts +7 -7
  333. package/dist/components/Table/index.mjs +1 -1
  334. package/dist/components/TableBox/index.d.mts +2 -2
  335. package/dist/components/TableBox/index.mjs +1 -1
  336. package/dist/components/TechnicalSticker/index.mjs +1 -1
  337. package/dist/components/Text/index.d.mts +1 -1
  338. package/dist/components/Text/index.mjs +1 -1
  339. package/dist/components/TextArea/index.d.mts +1 -1
  340. package/dist/components/TextArea/index.mjs +1 -1
  341. package/dist/components/Tile/index.mjs +5 -5
  342. package/dist/components/Toast/index.mjs +5 -5
  343. package/dist/components/Toggle/index.d.mts +1 -1
  344. package/dist/components/Toggle/index.mjs +1 -1
  345. package/dist/components/Tooltip/index.d.mts +3 -3
  346. package/dist/components/Tooltip/index.mjs +1 -1
  347. package/dist/compound-expression.d.mts +1 -1
  348. package/dist/{constants-BASogfT_.d.mts → constants-bA9kCzRQ.d.mts} +1 -1
  349. package/dist/constants.d.mts +1 -1
  350. package/dist/display.d.mts +1 -1
  351. package/dist/fieldPickerOptions.d.mts +2 -2
  352. package/dist/{filter-size-context-Bw5F7082.d.mts → filter-size-context-C7injfBh.d.mts} +2 -2
  353. package/dist/filter-size-context.d.mts +1 -1
  354. package/dist/helpers.d.mts +1 -1
  355. package/dist/{index--5Mfhlkj.d.mts → index-BPfK-u7y.d.mts} +2 -2
  356. package/dist/{index-DiCnyORA.d.mts → index-BxBsQi2S.d.mts} +5 -5
  357. package/dist/{index-C1bz13uw.d.mts → index-d_fTFuMM.d.mts} +5 -5
  358. package/dist/index.d.mts +1 -1
  359. package/dist/index2.d.mts +1 -1
  360. package/dist/index3.d.mts +3 -3
  361. package/dist/index4.d.mts +10 -10
  362. package/dist/{input-CzO-6_1V.d.mts → input-D9FuQmlI.d.mts} +3 -3
  363. package/dist/inputFields.d.mts +11 -11
  364. package/dist/{intersperse-yd3oMrQl.mjs → intersperse-CLkblj9A.mjs} +1 -1
  365. package/dist/{intersperse-yd3oMrQl.mjs.map → intersperse-CLkblj9A.mjs.map} +1 -1
  366. package/dist/lib/GlobalStyles.mjs +1 -1
  367. package/dist/lib/HeadlessAriaButton.mjs +1 -1
  368. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  369. package/dist/lib/PDSProvider.d.mts +1 -1
  370. package/dist/lib/PDSProvider.mjs +1 -1
  371. package/dist/lib/TruncatedText.d.mts +1 -1
  372. package/dist/lib/TruncatedText.mjs +2 -2
  373. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  374. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  375. package/dist/lib/embeddedSurfaceProtocol.d.mts +13 -1
  376. package/dist/lib/embeddedSurfaceProtocol.mjs +32 -5
  377. package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
  378. package/dist/lib/message.d.mts +1 -1
  379. package/dist/lib/pseudoClass.d.mts +8 -8
  380. package/dist/lib/useEmbeddedSurface.d.mts +31 -3
  381. package/dist/lib/useEmbeddedSurface.mjs +118 -13
  382. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  383. package/dist/{message-Cu84fcqB.d.mts → message-CqKB5mko.d.mts} +1 -1
  384. package/dist/mixins/focus.d.mts +1 -1
  385. package/dist/mixins/focus.mjs +1 -1
  386. package/dist/mixins/hoverable.d.mts +2 -2
  387. package/dist/mixins/hoverable.mjs +2 -2
  388. package/dist/mixins/input.d.mts +1 -1
  389. package/dist/mixins/input.mjs +2 -2
  390. package/dist/mixins/menuItem.d.mts +2 -2
  391. package/dist/mixins/menuItem.mjs +1 -1
  392. package/dist/mixins/print/index.mjs +1 -1
  393. package/dist/mixins/text.d.mts +1 -1
  394. package/dist/mixins/text.mjs +1 -1
  395. package/dist/{operators-CmSqHnTH.d.mts → operators-CgcsYzfy.d.mts} +2 -2
  396. package/dist/operators.d.mts +1 -1
  397. package/dist/patterns/LayoutLoadingShimmer/index.mjs +6 -6
  398. package/dist/patterns/LayoutLoadingSpinner/index.d.mts +2 -0
  399. package/dist/patterns/LayoutLoadingSpinner/index.mjs +56 -0
  400. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -0
  401. package/dist/patterns/PageLayout/index.mjs +1 -1
  402. package/dist/styledComponentsInterop-8zScIQyC.mjs +33 -0
  403. package/dist/styledComponentsInterop-8zScIQyC.mjs.map +1 -0
  404. package/dist/{text-BaQdW8qa.d.mts → text-xwtyWIbE.d.mts} +1 -1
  405. package/dist/{theme-D9Y6NOzb.d.mts → theme-Ftogn9Wo.d.mts} +1 -1
  406. package/dist/theme.d.mts +1 -1
  407. package/dist/{types-DEh_pXgS.d.mts → types-0_9G0kWg.d.mts} +3 -1
  408. package/dist/{types-NJtAxsU1.d.mts → types-BrNreYUU.d.mts} +2 -2
  409. package/dist/{types-C-TkDdkG.d.mts → types-D55MZSyx.d.mts} +1 -1
  410. package/dist/{types-TV9nVfSe.d.mts → types-DVsBRqjZ.d.mts} +1 -1
  411. package/dist/types.d.mts +1 -1
  412. package/dist/types2.d.mts +1 -1
  413. package/dist/types3.d.mts +1 -1
  414. package/dist/types4.d.mts +1 -1
  415. package/dist/useComboboxFooterAction.d.mts +1 -1
  416. package/dist/{useFilterStateV2-C4itmN4S.d.mts → useFilterStateV2-D8Q8QKhS.d.mts} +3 -3
  417. package/dist/useFilterStateV2.d.mts +1 -1
  418. package/dist/{useFormField-B2U4GOH4.d.mts → useFormField-BBbq1izo.d.mts} +2 -2
  419. package/dist/{useFormField-eftOPiXj.mjs → useFormField-Bz2iMPBO.mjs} +2 -2
  420. package/dist/{useFormField-eftOPiXj.mjs.map → useFormField-Bz2iMPBO.mjs.map} +1 -1
  421. package/dist/useFormField.d.mts +1 -1
  422. package/dist/{useFormGroup-BMukAMAd.mjs → useFormGroup-CaTiD_Yt.mjs} +1 -1
  423. package/dist/{useFormGroup-BMukAMAd.mjs.map → useFormGroup-CaTiD_Yt.mjs.map} +1 -1
  424. package/dist/{useTableBoxDragAndDrop-CpemHLhL.d.mts → useTableBoxDragAndDrop-Bye8gJTl.d.mts} +1 -1
  425. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  426. package/dist/useTruncation.d.mts +1 -1
  427. package/dist/{utilities-DnSIlR1i.d.mts → utilities-Bmwk_DRn.d.mts} +1 -1
  428. package/dist/utilities.d.mts +1 -1
  429. package/dist/utils/storybook.mjs +1 -1
  430. package/dist/utils/testing.d.mts +1 -1
  431. package/dist/utils/testing.mjs +1 -1
  432. package/dist/utils.d.mts +1 -1
  433. package/dist/utils2.d.mts +12 -1
  434. package/dist/{validation-B5IXsdkE.d.mts → validation-CAtTuHO9.d.mts} +3 -3
  435. package/dist/validation.d.mts +1 -1
  436. package/dist/{value-control-resolver-BPlTeIX7.d.mts → value-control-resolver-DadI8r9a.d.mts} +2 -2
  437. package/dist/value-control-resolver.d.mts +1 -1
  438. package/dist/variables/keyframes.mjs +1 -1
  439. package/llms.txt +4 -4
  440. package/package.json +4 -2
  441. package/skills/ui-authoring/COMPONENTS.md +69 -305
  442. package/skills/ui-authoring/PATTERNS.md +362 -0
  443. package/skills/ui-authoring/SKILL.md +15 -147
  444. package/skills/ui-authoring/TOKENS.md +400 -0
  445. package/dist/Combobox-xBrxiUAu.mjs.map +0 -1
  446. package/dist/DatePicker-BlnE2MBD.mjs.map +0 -1
  447. package/dist/FormField-B9P3BWvS.mjs.map +0 -1
  448. package/dist/HoverCopyableField-0Bzygbp9.mjs.map +0 -1
  449. package/dist/TableControls-CZ9iu3ma.mjs.map +0 -1
  450. package/skills/ui-authoring/EXAMPLES.md +0 -370
  451. package/skills/ui-authoring/REFERENCE.md +0 -293
  452. /package/dist/{index-7rWKHdox.d.mts → index-0-W_aPej.d.mts} +0 -0
  453. /package/dist/{index-BMBcfD_R.d.mts → index-7in8TPrM.d.mts} +0 -0
  454. /package/dist/{index-BOn0AAue.d.mts → index-BINnViIh.d.mts} +0 -0
  455. /package/dist/{index-BYd3Btr1.d.mts → index-BNRXMhlr.d.mts} +0 -0
  456. /package/dist/{index-CKKoxA9V.d.mts → index-BO_854F2.d.mts} +0 -0
  457. /package/dist/{index-CNxS4Tlu.d.mts → index-BSVhZrWN.d.mts} +0 -0
  458. /package/dist/{index-CRo77wc3.d.mts → index-BrGZHEgX.d.mts} +0 -0
  459. /package/dist/{index-CWB6exYm.d.mts → index-BwAfCVZH2.d.mts} +0 -0
  460. /package/dist/{index-CtJuGxUp.d.mts → index-CCt0lwyI.d.mts} +0 -0
  461. /package/dist/{index-CzItj62a.d.mts → index-CDGG7lCB.d.mts} +0 -0
  462. /package/dist/{index-D4DUvwPf.d.mts → index-CFhUdAHM.d.mts} +0 -0
  463. /package/dist/{index-D5tSVhTd.d.mts → index-CREkvfw9.d.mts} +0 -0
  464. /package/dist/{index-DGsJdI5l.d.mts → index-CROz1VSV.d.mts} +0 -0
  465. /package/dist/{index-DkrC-i1D.d.mts → index-CzUpNo0e.d.mts} +0 -0
  466. /package/dist/{index-DztUdPP_.d.mts → index-DA6_cwf8.d.mts} +0 -0
  467. /package/dist/{index-Es5nKSSL.d.mts → index-DM6vVDZD.d.mts} +0 -0
  468. /package/dist/{index-FtE8MXJ_.d.mts → index-DeVKzGce.d.mts} +0 -0
  469. /package/dist/{index-IE5cwTAE2.d.mts → index-Jh0C5PIG.d.mts} +0 -0
  470. /package/dist/{index-e6k85DKM.d.mts → index-PWQavSPf.d.mts} +0 -0
  471. /package/dist/{index-ehD5GjMH.d.mts → index-sViox9YW.d.mts} +0 -0
@@ -0,0 +1,362 @@
1
+ # Patterns
2
+
3
+ Pre-built compositions of PDS components.
4
+
5
+ Which pattern to use, and for what.
6
+
7
+
8
+ | Pattern | Use for |
9
+ | ------- | ------- |
10
+ | Forms | A settings or config screen where fields need labels, helper text, and errors. Unlabeled controls (search, toolbars) stay as `Input` |
11
+ | Stack / HStack | A heading above content, a cancel/save pair, a title next to an add button, or a wrapping row of tags |
12
+ | EmptyStates | A list, table, or card has no items yet and you want to invite adding one |
13
+ | Charting | Use `recharts` for all chart components. Always import colors from `ChartingColors` — never hardcode hex values. |
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 |
15
+ | PageLayout | Page shell |
16
+ | LayoutLoadingSpinner | Centered 120px loading ring that fills its container. Use as the loading state for a page or embedded app when no layout-specific shimmer exists. |
17
+ | LayoutLoadingShimmer | Filling space while content loads |
18
+
19
+
20
+ ## Forms
21
+
22
+ ### Form Configuration
23
+
24
+ ```tsx
25
+ import ConfigFormGroup from '@persona/design-system/components/ConfigFormGroup';
26
+ import { TextField, TextAreaField } from '@persona/design-system/components/FormField';
27
+
28
+ const [config, setConfig] = useState({ name: '', description: '', prompt: '' });
29
+
30
+ <ConfigFormGroup>
31
+ <TextField
32
+ label="Name"
33
+ value={config.name}
34
+ onChange={(e) => setConfig({ ...config, name: e.target.value })}
35
+ configField={true} // helperText becomes a tooltip
36
+ helperText="Unique identifier"
37
+ errorText={errors.name}
38
+ rightActions={<Button size="sm" variant="basic">Generate</Button>}
39
+ />
40
+ <TextAreaField
41
+ label="Prompt"
42
+ value={config.prompt}
43
+ onChange={(e) => setConfig({ ...config, prompt: e.target.value })}
44
+ configField={true}
45
+ warningText={warnings.prompt}
46
+ />
47
+ </ConfigFormGroup>
48
+ ```
49
+
50
+ - `configField={true}` → helper text becomes a tooltip instead of inline text
51
+ - `ConfigFormGroup` provides consistent 20px spacing between fields
52
+ - Use controlled inputs; clear `errorText` on change via `updateField` in form state hook
53
+
54
+ ### Form Pattern
55
+
56
+ **Always use** `ConfigFormGroup` **+** `TextField` **/** `TextAreaField` **— never hand-roll** `styled.input` **or**
57
+ `styled.label`**.** For a tooltip on a standalone label (not `helperText`), wrap the `Label` in
58
+ `TextUnderlineTooltip` — see Tooltip on Labels.
59
+
60
+ ```tsx
61
+ import ConfigFormGroup from '@persona/design-system/components/ConfigFormGroup';
62
+ import { TextField, TextAreaField } from '@persona/design-system/components/FormField';
63
+ import Select, { Option } from '@persona/design-system/components/Select';
64
+ import { Label } from '@persona/design-system/components/Text';
65
+ import Stack from '@persona/design-system/components/Stack';
66
+ import { Spacing } from '@persona/design-tokens';
67
+
68
+ <ConfigFormGroup>
69
+ <TextField
70
+ label="Name"
71
+ value={config.name}
72
+ onChange={(e) => setConfig({ ...config, name: e.target.value })}
73
+ configField={true}
74
+ helperText="Unique identifier"
75
+ errorText={errors.name}
76
+ rightActions={<Button size="sm" variant="basic">Generate</Button>}
77
+ />
78
+
79
+ <TextAreaField
80
+ label="Description"
81
+ value={config.description}
82
+ onChange={(e) => setConfig({ ...config, description: e.target.value })}
83
+ configField={true}
84
+ helperText="Short summary shown in listings."
85
+ warningText={warnings.prompt}
86
+ />
87
+
88
+ <Stack spacing={Spacing[2]}>
89
+ <Label size="sm" color="secondary">Enforcement</Label>
90
+ <Select
91
+ value={config.enforcement}
92
+ onChange={(e) => setConfig({ ...config, enforcement: e.target.value })}
93
+ >
94
+ <Option value="strict">Strict</Option>
95
+ <Option value="lenient">Lenient</Option>
96
+ <Option value="disabled">Disabled</Option>
97
+ </Select>
98
+ </Stack>
99
+ </ConfigFormGroup>
100
+ ```
101
+
102
+
103
+
104
+ ### TextField / TextAreaField props
105
+
106
+ - `label` — field label
107
+ - `value` / `onChange` — controlled input
108
+ - `helperText` — help text (tooltip if `configField={true}`)
109
+ - `errorText` — error message (red)
110
+ - `warningText` — warning message (yellow)
111
+ - `configField` — boolean, renders helper as tooltip
112
+ - `rightActions` — ReactNode for buttons/icons next to label
113
+ - `disabled` — boolean
114
+
115
+
116
+
117
+ ### Form state hook
118
+
119
+ ```tsx
120
+ const useFormState = (initialConfig) => {
121
+ const [config, setConfig] = useState(initialConfig);
122
+ const [errors, setErrors] = useState({});
123
+
124
+ const updateField = useCallback((field, value) => {
125
+ setConfig(prev => ({ ...prev, [field]: value }));
126
+ setErrors(prev => { const next = { ...prev }; delete next[field]; return next; });
127
+ }, []);
128
+
129
+ const validate = useCallback(() => {
130
+ const newErrors = {};
131
+ if (!config.name) newErrors.name = 'Required';
132
+ setErrors(newErrors);
133
+ return Object.keys(newErrors).length === 0;
134
+ }, [config]);
135
+
136
+ return { config, errors, updateField, validate };
137
+ };
138
+ ```
139
+
140
+
141
+
142
+ ### Form with footer buttons
143
+
144
+ ```tsx
145
+ import Stack from '@persona/design-system/components/Stack';
146
+ import { HStack } from '@persona/design-system/components/Stack';
147
+
148
+ <Stack spacing={Spacing[5]}>
149
+ <ConfigFormGroup>
150
+ <TextField label="Name" value={config.name} onChange={...} />
151
+ <TextAreaField label="Description" value={config.description} onChange={...} />
152
+ </ConfigFormGroup>
153
+ <HStack spacing={Spacing[3]} justify="flex-end">
154
+ <Button variant="basic" onClick={onCancel}>Cancel</Button>
155
+ <Button variant="primary" onClick={handleSave} isPending={isSaving}>Save</Button>
156
+ </HStack>
157
+ </Stack>
158
+ ```
159
+
160
+ ### Tooltip on Labels
161
+
162
+ **Always use `TextUnderlineTooltip` — never place an info icon next to a label.**
163
+
164
+ ```tsx
165
+ // ❌ Deprecated: icon trigger next to label
166
+ <HStack spacing={Spacing[1]} align='center'>
167
+ <Label size='sm' color='secondary'>Review Type</Label>
168
+ <Tooltip iconTrigger={<CircleHelpIcon />} side='right'>…</Tooltip>
169
+ </HStack>
170
+
171
+ // ✅ Correct: dashed underline on the label itself
172
+ import { TextUnderlineTooltip } from '@persona/design-system/components/Tooltip';
173
+
174
+ <TextUnderlineTooltip tooltip='Explanation text.' side='right'>
175
+ <Label size='sm' color='secondary'>Review Type</Label>
176
+ </TextUnderlineTooltip>
177
+ ```
178
+
179
+ `iconTrigger` is only appropriate for standalone icon buttons with no adjacent label text.
180
+
181
+
182
+
183
+ ## Layout
184
+
185
+
186
+
187
+ ### Card with collapsible sections
188
+
189
+ ```tsx
190
+ import { Card } from '@persona/design-system/components/CardV2';
191
+
192
+ <Card>
193
+ <Card.Section heading={{ title: 'Basic Settings' }} collapsible={true} defaultCollapsed={false}>
194
+ <ConfigFormGroup>
195
+ <TextField label="Name" value={...} onChange={...} />
196
+ </ConfigFormGroup>
197
+ </Card.Section>
198
+ <Card.Section heading={{ title: 'Advanced' }} collapsible={true}>
199
+ {/* Advanced fields */}
200
+ </Card.Section>
201
+ </Card>
202
+ ```
203
+
204
+ - `collapsible` / `defaultCollapsed` — section disclosure
205
+ - `heading` — `{ title }` section heading text
206
+ - `loading` — boolean
207
+ - `empty` — boolean
208
+
209
+
210
+
211
+ ## Indicators
212
+
213
+ ### Status Indicators
214
+
215
+ Use `StatusIndicator` for a record’s named lifecycle state. Use `Sticker` for tags.
216
+
217
+
218
+ | Business status | `status` |
219
+ | ---------------------------------- | -------------- |
220
+ | open / initiated / inactive | `open` |
221
+ | pending / processing | `pending` |
222
+ | completed | `completed` |
223
+ | active / reviewed | `active` |
224
+ | failed / declined / error | `failed` |
225
+ | needs review / flagged | `needs_review` |
226
+ | canceled | `canceled` |
227
+ | archived | `archived` |
228
+
229
+
230
+ ```tsx
231
+ import StatusIndicator from '@persona/design-system/components/StatusIndicator';
232
+
233
+ <StatusIndicator status="open">Open</StatusIndicator>
234
+ <StatusIndicator status="pending">Pending</StatusIndicator>
235
+ <StatusIndicator status="completed">Completed</StatusIndicator>
236
+ <StatusIndicator status="active">Active</StatusIndicator>
237
+ <StatusIndicator status="failed">Failed</StatusIndicator>
238
+ <StatusIndicator status="needs_review">Needs Review</StatusIndicator>
239
+ <StatusIndicator status="canceled">Canceled</StatusIndicator>
240
+ <StatusIndicator status="archived">Archived</StatusIndicator>
241
+
242
+ <StatusIndicator type="success" background="filled">Approved</StatusIndicator>
243
+ <StatusIndicator type="critical" background="none">Failed</StatusIndicator>
244
+ ```
245
+
246
+ - `status` — `"open"` | `"pending"` | `"completed"` | `"active"` | `"failed"` | `"needs_review"` | `"canceled"` | `"archived"`
247
+ - `type` — `"neutral"` | `"attention"` | `"warning"` | `"critical"` | `"success"` | `"feature"` | `"informational"` | `"miscellaneous"`. Overrides `status` when both are set.
248
+ - `background` — `"filled"` (default) | `"none"`. `"none"` always shows the icon.
249
+ - `leadingIcon` — optional 12px icon; overrides the preset icon (`null` hides it)
250
+ - `showIcon` — `{false}` hides the icon on `"filled"` only; ignored when `background="none"`
251
+ - `truncate` — ellipsis plus a title tooltip when the label overflows
252
+ - `preserveCase` — keep authored casing (labels are capitalized by default)
253
+
254
+
255
+
256
+ ### Banner
257
+
258
+ ```tsx
259
+ import Banner from '@persona/design-system/components/Banner';
260
+ import { CircleInfoIcon, CheckCircleIcon, AlertTriangleIcon, XCircleIcon } from '@persona/icons';
261
+
262
+ <Banner variant="informational"><CircleInfoIcon />This is an informational message.</Banner>
263
+ <Banner variant="success"><CheckCircleIcon />Changes saved successfully!</Banner>
264
+ <Banner variant="warning"><AlertTriangleIcon />Please review before submitting.</Banner>
265
+ <Banner variant="alert"><XCircleIcon />There was an error processing your request.</Banner>
266
+
267
+ <Banner variant="informational" onClose={() => setShowBanner(false)}>
268
+ <CircleInfoIcon />You can dismiss this message.
269
+ </Banner>
270
+ ```
271
+
272
+
273
+
274
+ ## Feedback
275
+
276
+
277
+
278
+ ### Spinner
279
+
280
+ ```tsx
281
+ import Spinner from '@persona/design-system/components/Spinner';
282
+
283
+ <Stack align="center" spacing={Spacing[3]}>
284
+ <Spinner size="md" srText="Loading policies..." />
285
+ </Stack>
286
+
287
+ <Button variant="primary" isPending>Saving...</Button>
288
+ ```
289
+
290
+ Prefer `Button isPending` for mutations. Prefer `Card.Section loading` when the content is inside a
291
+ card. Never `isLoading && <div>Loading...</div>`.
292
+
293
+
294
+
295
+ ## Empty states
296
+
297
+ For tables/lists when there is no data to show:
298
+
299
+ ```tsx
300
+ // Inside a Card section or table container
301
+ <Stack align="center" spacing={Spacing[3]} style={{ padding: Spacing[6] }}>
302
+ <Paragraph color="secondary">No policy rules yet.</Paragraph>
303
+ <Button variant="primary" size="sm" prefixIcon={<PlusIcon />}>Add Rule</Button>
304
+ </Stack>
305
+ ```
306
+
307
+ Message-only (no CTA):
308
+
309
+ ```tsx
310
+ <Stack align="center" spacing={Spacing[3]} style={{ padding: Spacing[6] }}>
311
+ <Paragraph color="secondary">No items yet.</Paragraph>
312
+ </Stack>
313
+ ```
314
+
315
+ For `ListBox`, pass `emptyText="No items"` prop directly.
316
+ For `Card.Section`, pass `empty={true}` to show the built-in empty state.
317
+
318
+
319
+
320
+ ## Charting
321
+
322
+ Use `recharts` for all chart components. Always import colors from `ChartingColors` — never
323
+ hardcode hex values.
324
+
325
+ ```tsx
326
+ import { ChartingColors } from '@persona/design-tokens';
327
+
328
+ // Sequential — 8 values; for ordered/numeric data (score bands, age ranges, percentages)
329
+ // Use index 0 for the largest value on light backgrounds.
330
+ ChartingColors.Sequential
331
+
332
+ // Categorical — 14 values; for distinct unordered categories (status, type, country)
333
+ // Light backgrounds only. If > 14 categories, bundle similar items or link to an export view.
334
+ ChartingColors.Categorical
335
+ ```
336
+
337
+ ### Palette selection guide
338
+
339
+ | Data type | Palette | Max series |
340
+ |-----------|---------|-----------|
341
+ | Numeric / ordered | `Sequential` | 8 |
342
+ | Categorical / unordered | `Categorical` | 14 |
343
+
344
+ ### Recharts pattern
345
+
346
+ ```tsx
347
+ import { ChartingColors } from '@persona/design-tokens';
348
+ import { Cell, Pie, PieChart } from 'recharts';
349
+
350
+ <PieChart>
351
+ <Pie data={data} dataKey="value">
352
+ {data.map((_, i) => (
353
+ <Cell key={i} fill={ChartingColors.Categorical[i % ChartingColors.Categorical.length]} />
354
+ ))}
355
+ </Pie>
356
+ </PieChart>
357
+ ```
358
+
359
+ **Anti-patterns:**
360
+ - Hardcoding hex values instead of `ChartingColors`
361
+ - Using `Categorical` on a dark background
362
+ - Using `Sequential` for unordered categories
@@ -3,7 +3,7 @@ name: ui-authoring
3
3
  description: Use when implementing UI, styling React components, working with design tokens, or making frontend changes, or when file paths include design-system/components/ or styled-components.
4
4
  metadata:
5
5
  library: '@persona/design-system'
6
- library_version: '0.3.0'
6
+ library_version: '0.3.1'
7
7
  ---
8
8
 
9
9
  # UI Authoring
@@ -14,67 +14,24 @@ metadata:
14
14
  import { Color, Spacing, Typography } from '@persona/design-tokens';
15
15
  ```
16
16
 
17
- - `Spacing[0–9]` = 0/4/8/12/16/24/32/40/48/56px; hardcode px with a comment for larger values.
17
+ - `Spacing[0–9]` = 0/4/8/12/16/24/32/40/48/56px. If you hardcode a value, use a multiple of 4 and comment what it's doing.
18
18
  - Always use complete `Typography` styles (e.g. `Typography.TextMedium`), never individual font properties.
19
- - See [REFERENCE.md](REFERENCE.md) for the full `Color` / `Spacing` / `Typography` catalog.
20
-
21
- ## Component-First — check this before creating any `styled` component
22
-
23
- | Need | Component | Import |
24
- |------|-----------|--------|
25
- | Flex column | `Stack` | `@persona/design-system/components/Stack` |
26
- | Flex row | `HStack` | `@persona/design-system/components/Stack` |
27
- | Heading text | `Heading` | `@persona/design-system/components/Text` |
28
- | Body text | `Paragraph` | `@persona/design-system/components/Text` |
29
- | Form label | `Label` | `@persona/design-system/components/Text` |
30
- | Button | `Button` | `@persona/design-system/components/Button` |
31
- | Form fields | `ConfigFormGroup` + `TextField`/`TextAreaField` | `@persona/design-system/components/ConfigFormGroup`, `FormField` |
32
- | Text input | `Input`, `TextArea` | `@persona/design-system/components/Input`, `TextArea` |
33
- | Dropdown | `Select` | `@persona/design-system/components/Select` |
34
- | Dynamic list | `ListBox` | `@persona/design-system/components/ListBox` |
35
- | Collapsible sections | `Card` + `Card.Section` | `@persona/design-system/components/CardV2` |
36
- | Modal | `Modal` | `@persona/design-system/components/Modal` |
37
- | Floating panel | `Popover` | `@persona/design-system/components/Popover` |
38
- | Status badge | `Sticker` | `@persona/design-system/components/Sticker` |
39
- | Count badge | `Badge` | `@persona/design-system/components/Badge` |
40
- | Tabs | `TabBar`, `Tab` | `@persona/design-system/components/TabBar` |
41
- | Spinner | `Spinner` | `@persona/design-system/components/Spinner` |
42
- | Alert / notification | `Banner` | `@persona/design-system/components/Banner` |
43
- | Standalone tooltip | `Tooltip` | `@persona/design-system/components/Tooltip` |
44
- | Tooltip on a label | `TextUnderlineTooltip` | `@persona/design-system/components/Tooltip` |
45
- | Page title bar | `PageHeader` | `@persona/design-system/components/PageHeader` |
46
- | Page shell | `Container`, `Section`, `Backdrop` | `@persona/design-system/patterns/PageLayout` |
47
- | Data table | `DataTable` | `@persona/design-system/components/DataTable` |
48
- | Table with loading/empty states | `TableLayout` + `Table` primitives | `@persona/design-system/components/Table` |
49
- | Editable / form table | `TableBox`, `TableBoxField` | `@persona/design-system/components/TableBox`, `FormField` |
50
-
51
- ## Tooltip on Labels
52
-
53
- **Always use `TextUnderlineTooltip` — never place an info icon next to a label.**
19
+ - See [TOKENS.md](TOKENS.md) for selection rules.
54
20
 
55
- ```tsx
56
- // ❌ Deprecated: icon trigger next to label
57
- <HStack spacing={Spacing[1]} align='center'>
58
- <Label size='sm' color='secondary'>Review Type</Label>
59
- <Tooltip iconTrigger={<HelpCircleIcon />} side='right'>…</Tooltip>
60
- </HStack>
61
-
62
- // ✅ Correct: dashed underline on the label itself
63
- import { TextUnderlineTooltip } from '@persona/design-system/components/Tooltip';
64
-
65
- <TextUnderlineTooltip tooltip='Explanation text.' side='right'>
66
- <Label size='sm' color='secondary'>Review Type</Label>
67
- </TextUnderlineTooltip>
68
- ```
21
+ ## PDS implementation guidelines
69
22
 
70
- `iconTrigger` is only appropriate for standalone icon buttons with no adjacent label text.
23
+ Start with [PATTERNS.md](PATTERNS.md) and use an existing pattern whenever one fits the use
24
+ case. If no pattern applies, review the component table in [COMPONENTS.md](COMPONENTS.md) to
25
+ select the appropriate component and import path. Only create a `styled` component or wrapper
26
+ when existing components cannot meet the need, and use tokens from [TOKENS.md](TOKENS.md) for
27
+ any custom styling.
71
28
 
72
29
  ## Table Guidelines
73
30
 
74
31
  Never hand-roll `<table>`, `<thead>`, `<th>`, or `<td>`. Pick the component by use case:
75
32
 
76
33
  - **`DataTable`** (`@persona/design-system/components/DataTable`) — data views with pagination, sorting, and server-side data.
77
- - **`TableBox`** (`@persona/design-system/components/TableBox`) / **`TableBoxField`** (`FormField`) — small, form-adjacent tables in config editors: inline editing, row add/delete, drag-drop reorder. See [COMPONENTS.md — Editable Table (TableBox)](COMPONENTS.md#editable-table-tablebox).
34
+ - **`TableBox`** (`@persona/design-system/components/TableBox`) / **`TableBoxField`** (`FormField`) — small, form-adjacent tables in config editors: inline editing, row add/delete, drag-drop reorder. See `TableBox.mdx`.
78
35
  - **`TableLayout`** (`@persona/design-system/components/Table`, named export `TableLayout`) — lower-level table shell with built-in loading and empty states; use it when composing rows manually from `Table` primitives (`TableRow`, `TableCell`, `TableHeaderCell`).
79
36
 
80
37
  ### DataTable
@@ -117,61 +74,16 @@ const ModalOverlay = styled.div`position: fixed; ...`; // use <Modal> instead
117
74
  // ✅ Use design system components
118
75
  <Heading size="sm">Title</Heading>
119
76
  <Stack spacing={Spacing[1]}><Label>Field</Label><Input /></Stack>
120
- <Modal isOpen={isOpen} onClose={onClose} title="..." footer={...}>...</Modal>
77
+ <Modal open={isOpen} onOpenChange={onOpenChange} title="..." footer={...}>...</Modal>
121
78
  ```
122
79
 
123
80
  - `Paragraph` defaults to `color="secondary"` (grey) — use `color="primary"` for black text.
124
81
  - Field values in detail/metadata layouts: do not add `weight="bold"` unless the design explicitly calls it out.
125
82
 
126
- ## Form Pattern
127
-
128
- ```tsx
129
- import ConfigFormGroup from '@persona/design-system/components/ConfigFormGroup';
130
- import { TextField, TextAreaField } from '@persona/design-system/components/FormField';
131
-
132
- <ConfigFormGroup>
133
- <TextField
134
- label="Name"
135
- value={config.name}
136
- onChange={(e) => setConfig({ ...config, name: e.target.value })}
137
- configField={true} // helperText becomes a tooltip
138
- helperText="Must be unique"
139
- errorText={errors.name}
140
- />
141
- <TextAreaField
142
- label="Description"
143
- value={config.description}
144
- onChange={(e) => setConfig({ ...config, description: e.target.value })}
145
- configField={true}
146
- />
147
- </ConfigFormGroup>
148
- ```
149
-
150
- `ConfigFormGroup` provides consistent 20px spacing between fields. See [COMPONENTS.md](COMPONENTS.md) for form state hook, `ListBox`, `TableBox`, `Card`, `Modal`, `Select` patterns and full props reference.
151
-
152
- ## Sticker Status Mapping
153
-
154
- | Business status | Sticker variant |
155
- |----------------|----------------|
156
- | approved / active / verified / success | `success` |
157
- | declined / failed / error | `danger` |
158
- | pending / in-review / flagged | `caution` |
159
- | inactive / archived / disabled | `basic` |
160
-
161
83
  ## Icon Sizes
162
84
 
163
85
  - `@persona/icons` — 16px default; use for buttons and standalone icons.
164
- - `@persona/icons/12px` — use for `Sticker` icons and inline text icons.
165
-
166
- ## Empty State
167
-
168
- ```tsx
169
- <Stack align="center" spacing={Spacing[3]} style={{ padding: Spacing[6] }}>
170
- <Paragraph color="secondary">No items yet.</Paragraph>
171
- </Stack>
172
- ```
173
-
174
- For tables/lists, also pass `emptyText` prop where supported (e.g. `ListBox`).
86
+ - `@persona/icons/12px` — use for `StatusIndicator` / `Sticker` icons and inline text icons.
175
87
 
176
88
  ## Loading States
177
89
 
@@ -212,52 +124,8 @@ export const WithErrors: StoryObj<typeof MyComponent> = { args: { errors: { name
212
124
 
213
125
  Add `ComponentName.stories.tsx` for every new component or visual variant.
214
126
 
215
- ## Data Visualization (Charts)
216
-
217
- Use `recharts` for all chart components. Always import colors from `ChartingColors` — never
218
- hardcode hex values.
219
-
220
- ```tsx
221
- import { ChartingColors } from '@persona/design-tokens';
222
-
223
- // Sequential — 8 values; for ordered/numeric data (score bands, age ranges, percentages)
224
- // Use index 0 for the largest value on light backgrounds.
225
- ChartingColors.Sequential
226
-
227
- // Categorical — 14 values; for distinct unordered categories (status, type, country)
228
- // Light backgrounds only. If > 14 categories, bundle similar items or link to an export view.
229
- ChartingColors.Categorical
230
- ```
231
-
232
- ### Palette selection guide
233
-
234
- | Data type | Palette | Max series |
235
- |-----------|---------|-----------|
236
- | Numeric / ordered | `Sequential` | 8 |
237
- | Categorical / unordered | `Categorical` | 14 |
238
-
239
- ### Recharts pattern
240
-
241
- ```tsx
242
- import { ChartingColors } from '@persona/design-tokens';
243
- import { Cell, Pie, PieChart } from 'recharts';
244
-
245
- <PieChart>
246
- <Pie data={data} dataKey="value">
247
- {data.map((_, i) => (
248
- <Cell key={i} fill={ChartingColors.Categorical[i % ChartingColors.Categorical.length]} />
249
- ))}
250
- </Pie>
251
- </PieChart>
252
- ```
253
-
254
- **Anti-patterns:**
255
- - Hardcoding hex values instead of `ChartingColors`
256
- - Using `Categorical` on a dark background
257
- - Using `Sequential` for unordered categories
258
-
259
127
  ## Resources
260
128
 
261
- - [EXAMPLES.md](EXAMPLES.md) — copy-paste patterns (Buttons, Forms, Modals, DataTable, TabBar, Tooltip, Spinner, Banner, Sticker, Stack, Text)
262
- - [REFERENCE.md](REFERENCE.md) — full `Color` / `Spacing` / `Typography` token catalog
263
- - [COMPONENTS.md](COMPONENTS.md) — props reference + patterns for `ConfigFormGroup`, `ListBox`, `TableBox`, `Card`, `Modal`, form state hook
129
+ - [TOKENS.md](TOKENS.md) — Color / Spacing / Typography selection and catalog, radius, charts
130
+ - [PATTERNS.md](PATTERNS.md) — forms, layout, indicators, feedback, empty states
131
+ - [COMPONENTS.md](COMPONENTS.md) — which PDS component to use, and its import path; APIs live in each component's `.mdx`