@persona/design-system 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +3 -3
  3. package/dist/{Action-CnNf5T-l.d.mts → Action-CcAyQpYN.d.mts} +3 -3
  4. package/dist/Action.d.mts +1 -1
  5. package/dist/AdvancedFilterRuleRow.d.mts +5 -5
  6. package/dist/AdvancedFilterRulesPopover.d.mts +4 -4
  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/BottomPanel.d.mts +32 -0
  15. package/dist/{Breadcrumb-DEwZFJHF.d.mts → Breadcrumb-Df06cTnA.d.mts} +1 -1
  16. package/dist/Breadcrumb.d.mts +1 -1
  17. package/dist/{Breadcrumbs-0e_3v9FF.d.mts → Breadcrumbs-D_Gzd4_J.d.mts} +2 -2
  18. package/dist/{Breadcrumbs-CqKtnZqu.mjs → Breadcrumbs-Zi5p0HDR.mjs} +12 -12
  19. package/dist/{Breadcrumbs-CqKtnZqu.mjs.map → Breadcrumbs-Zi5p0HDR.mjs.map} +1 -1
  20. package/dist/Breadcrumbs.d.mts +1 -1
  21. package/dist/{Button-C0F0F2IL.d.mts → Button-BrI1s2-r.d.mts} +4 -4
  22. package/dist/Button.d.mts +1 -1
  23. package/dist/ButtonGroup.d.mts +1 -1
  24. package/dist/{Calendar-BvLNcHQM.d.mts → Calendar-DjnoZVcT.d.mts} +2 -2
  25. package/dist/Calendar.d.mts +1 -1
  26. package/dist/CalendarBase.d.mts +1 -1
  27. package/dist/{Card-BMCB9eFC.mjs → Card-CKrJtn1f.mjs} +4 -4
  28. package/dist/{Card-BMCB9eFC.mjs.map → Card-CKrJtn1f.mjs.map} +1 -1
  29. package/dist/{Card-BxNoIQWw.d.mts → Card-mZDNFaJy.d.mts} +4 -4
  30. package/dist/Card.d.mts +1 -1
  31. package/dist/Card2.d.mts +3 -3
  32. package/dist/{CardV2-B0ZweQYk.mjs → CardV2-CXxzl1EZ.mjs} +20 -20
  33. package/dist/{CardV2-B0ZweQYk.mjs.map → CardV2-CXxzl1EZ.mjs.map} +1 -1
  34. package/dist/{Checkbox-Bm8exUfH.d.mts → Checkbox-CwPXPLCi.d.mts} +1 -1
  35. package/dist/{Checkbox-DAvbgZgO.mjs → Checkbox-DxNHp59y.mjs} +8 -8
  36. package/dist/{Checkbox-DAvbgZgO.mjs.map → Checkbox-DxNHp59y.mjs.map} +1 -1
  37. package/dist/Checkbox.d.mts +1 -1
  38. package/dist/CheckboxGroupField.d.mts +2 -2
  39. package/dist/ChoicesValueControl.d.mts +1 -1
  40. package/dist/{Combobox-xBrxiUAu.mjs → Combobox-BUtqtzKl.mjs} +22 -22
  41. package/dist/Combobox-BUtqtzKl.mjs.map +1 -0
  42. package/dist/{Combobox-C8ue0cBP.d.mts → Combobox-C9QBItsc.d.mts} +3 -3
  43. package/dist/Combobox.d.mts +2 -2
  44. package/dist/{ComboboxBase-DJGTMf1_.d.mts → ComboboxBase-BkSpdmsT.d.mts} +8 -8
  45. package/dist/ComboboxBase.d.mts +1 -1
  46. package/dist/{ComboboxMultiSelect-D7A2bbWU.d.mts → ComboboxMultiSelect-DkVfwSKH.d.mts} +2 -2
  47. package/dist/ComboboxMultiSelect.d.mts +1 -1
  48. package/dist/{ComboboxSingleSelect-D1uzEyKj.d.mts → ComboboxSingleSelect-CpumBcDn.d.mts} +4 -4
  49. package/dist/ComboboxSingleSelect.d.mts +1 -1
  50. package/dist/{CompactBar-DMuvqaV5.d.mts → CompactBar-COxu_FDd.d.mts} +3 -3
  51. package/dist/CompactBar.d.mts +1 -1
  52. package/dist/{ConfigFormGroup-D2_sajXe.mjs → ConfigFormGroup-aSdn2r6Z.mjs} +4 -4
  53. package/dist/{ConfigFormGroup-D2_sajXe.mjs.map → ConfigFormGroup-aSdn2r6Z.mjs.map} +1 -1
  54. package/dist/{ControlBar-Dg8JeU8f.d.mts → ControlBar-DwAhPcb5.d.mts} +12 -2
  55. package/dist/ControlBar.d.mts +1 -1
  56. package/dist/DataTable.d.mts +5 -4
  57. package/dist/{DateField-Com9f2-j.d.mts → DateField-tOyrGcx1.d.mts} +2 -2
  58. package/dist/DateField.d.mts +1 -1
  59. package/dist/{DatePicker-BGO6doLx.d.mts → DatePicker-Bs9JODNg.d.mts} +2 -2
  60. package/dist/{DatePicker-BlnE2MBD.mjs → DatePicker-CLP-ajza.mjs} +95 -23
  61. package/dist/DatePicker-CLP-ajza.mjs.map +1 -0
  62. package/dist/DatePicker.d.mts +1 -1
  63. package/dist/{DateRangePicker-DfRBm9z4.d.mts → DateRangePicker-BT6-j8V7.d.mts} +24 -4
  64. package/dist/DateRangePicker.d.mts +2 -2
  65. package/dist/DateRangeValueControl.d.mts +8 -4
  66. package/dist/DateValueControl.d.mts +1 -1
  67. package/dist/{DropdownButton-CpWNRUma.mjs → DropdownButton-CCAfNZ9h.mjs} +3 -3
  68. package/dist/{DropdownButton-CpWNRUma.mjs.map → DropdownButton-CCAfNZ9h.mjs.map} +1 -1
  69. package/dist/DropdownButton.d.mts +2 -2
  70. package/dist/{DropdownMenu-CnaK78rP.d.mts → DropdownMenu-BoatixlO.d.mts} +3 -3
  71. package/dist/{DropdownMenu-BCyV8nC0.mjs → DropdownMenu-CUnf420M.mjs} +4 -4
  72. package/dist/{DropdownMenu-BCyV8nC0.mjs.map → DropdownMenu-CUnf420M.mjs.map} +1 -1
  73. package/dist/DropdownMenu.d.mts +1 -1
  74. package/dist/{ErrorProps-CN2XjaOX.d.mts → ErrorProps-C9T857Wk.d.mts} +1 -1
  75. package/dist/ErrorProps.d.mts +1 -1
  76. package/dist/{FieldRegistry-DdA63Vnh.d.mts → FieldRegistry-D6niLExM.d.mts} +2 -2
  77. package/dist/FieldRegistry.d.mts +1 -1
  78. package/dist/{FilterBar-CxNsBVrn.d.mts → FilterBar-DfBV7yKM.d.mts} +10 -4
  79. package/dist/FilterBar.d.mts +1 -1
  80. package/dist/FilterPickerMenu.d.mts +3 -3
  81. package/dist/FilterPill.d.mts +1 -1
  82. package/dist/FilterPopover.d.mts +2 -2
  83. package/dist/FloatValueControl.d.mts +1 -1
  84. package/dist/FloatingPanel.d.mts +1 -1
  85. package/dist/FloatingPanelContext.d.mts +1 -1
  86. package/dist/{FormControl-Doj2gvF0.d.mts → FormControl-0H0Jeind.d.mts} +4 -4
  87. package/dist/{FormControl-HVzZEqJH.mjs → FormControl-1BmoYFCu.mjs} +6 -6
  88. package/dist/{FormControl-HVzZEqJH.mjs.map → FormControl-1BmoYFCu.mjs.map} +1 -1
  89. package/dist/FormControl.d.mts +1 -1
  90. package/dist/FormControlLabel.d.mts +2 -2
  91. package/dist/{FormField-D8dHbqZZ.d.mts → FormField-BcaFdmo5.d.mts} +2 -2
  92. package/dist/{FormField-B9P3BWvS.mjs → FormField-oBKH25qf.mjs} +22 -22
  93. package/dist/FormField-oBKH25qf.mjs.map +1 -0
  94. package/dist/FormField.d.mts +1 -1
  95. package/dist/Grid.d.mts +38 -0
  96. package/dist/GridItem.d.mts +17 -0
  97. package/dist/{Header-CBlB65NY.d.mts → Header-BjSoTEX_.d.mts} +2 -2
  98. package/dist/Header.d.mts +1 -1
  99. package/dist/{HelperTooltip-C28h1zFl.d.mts → HelperTooltip-S20wVFCS.d.mts} +3 -3
  100. package/dist/HelperTooltip.d.mts +1 -1
  101. package/dist/{HoverCopyableField-0Bzygbp9.mjs → HoverCopyableField-GMXeF-3J.mjs} +31 -20
  102. package/dist/HoverCopyableField-GMXeF-3J.mjs.map +1 -0
  103. package/dist/HoverCopyableField.d.mts +15 -4
  104. package/dist/{IconButton-BfDlic2K.mjs → IconButton-BgL3QUVO.mjs} +9 -9
  105. package/dist/{IconButton-BfDlic2K.mjs.map → IconButton-BgL3QUVO.mjs.map} +1 -1
  106. package/dist/{IconButton-CBcW7ZU8.d.mts → IconButton-BpyOr8Ev.d.mts} +2 -2
  107. package/dist/IconButton.d.mts +1 -1
  108. package/dist/ImageTile.d.mts +2 -2
  109. package/dist/InlineCombobox.d.mts +2 -2
  110. package/dist/InlineInput.d.mts +1 -1
  111. package/dist/{Input-Bimw8KFj.mjs → Input-BWlvBYB3.mjs} +6 -6
  112. package/dist/{Input-Bimw8KFj.mjs.map → Input-BWlvBYB3.mjs.map} +1 -1
  113. package/dist/{Input-CVdjkX88.d.mts → Input-qlQVD5h0.d.mts} +5 -5
  114. package/dist/Input.d.mts +1 -1
  115. package/dist/{InputProps-BwKkmImn.d.mts → InputProps-D_7MnQfE.d.mts} +2 -2
  116. package/dist/InputProps.d.mts +1 -1
  117. package/dist/IntegerValueControl.d.mts +1 -1
  118. package/dist/LayoutLoadingSpinner.d.mts +11 -0
  119. package/dist/Link.d.mts +3 -3
  120. package/dist/{ListBox-DKZpGYjo.mjs → ListBox-9jHHEaqW.mjs} +15 -15
  121. package/dist/{ListBox-DKZpGYjo.mjs.map → ListBox-9jHHEaqW.mjs.map} +1 -1
  122. package/dist/{ListBox-CDl5oZPX.d.mts → ListBox-ZE3MYMt6.d.mts} +5 -5
  123. package/dist/ListBox.d.mts +1 -1
  124. package/dist/ListBoxField.d.mts +3 -3
  125. package/dist/{LoadingShimmer-DC2vqicd.mjs → LoadingShimmer-a2Hv0kAq.mjs} +2 -2
  126. package/dist/{LoadingShimmer-DC2vqicd.mjs.map → LoadingShimmer-a2Hv0kAq.mjs.map} +1 -1
  127. package/dist/LoadingShimmer.d.mts +2 -2
  128. package/dist/{LogicRow-CkbyvrUw.d.mts → LogicRow-CbMmaWXU.d.mts} +4 -4
  129. package/dist/LogicRow.d.mts +1 -1
  130. package/dist/MaskedInput.d.mts +2 -2
  131. package/dist/MatchHighlight.d.mts +1 -1
  132. package/dist/{Menu-Dir03WA9.mjs → Menu-38UCGcte.mjs} +6 -6
  133. package/dist/{Menu-Dir03WA9.mjs.map → Menu-38UCGcte.mjs.map} +1 -1
  134. package/dist/{Menu-CYRdEnfo.d.mts → Menu-ZShdhNd7.d.mts} +4 -4
  135. package/dist/Menu.d.mts +1 -1
  136. package/dist/{MiddleTruncatedText-GXI-CPvs.mjs → MiddleTruncatedText-DnF7F_1D.mjs} +4 -4
  137. package/dist/{MiddleTruncatedText-GXI-CPvs.mjs.map → MiddleTruncatedText-DnF7F_1D.mjs.map} +1 -1
  138. package/dist/Modal.d.mts +4 -5
  139. package/dist/{PageHeader-C2IUKhCg.mjs → PageHeader-B2-Slzhl.mjs} +4 -4
  140. package/dist/{PageHeader-C2IUKhCg.mjs.map → PageHeader-B2-Slzhl.mjs.map} +1 -1
  141. package/dist/PageHeader.d.mts +2 -2
  142. package/dist/PageLayout.d.mts +1 -1
  143. package/dist/{PageSelector-vay4jpMp.d.mts → PageSelector-BcZx4nqe.d.mts} +3 -3
  144. package/dist/PageSelector.d.mts +1 -1
  145. package/dist/{Pagination-0VhVdXv0.mjs → Pagination-CtUz0gdA.mjs} +8 -8
  146. package/dist/{Pagination-0VhVdXv0.mjs.map → Pagination-CtUz0gdA.mjs.map} +1 -1
  147. package/dist/{Pagination-ygLutOst.d.mts → Pagination-j4hF7GOk.d.mts} +2 -2
  148. package/dist/Pagination.d.mts +1 -1
  149. package/dist/{Pii-C7pA72Bh.mjs → Pii-RwKn-K84.mjs} +2 -2
  150. package/dist/{Pii-C7pA72Bh.mjs.map → Pii-RwKn-K84.mjs.map} +1 -1
  151. package/dist/Pii.d.mts +1 -1
  152. package/dist/PillShell.d.mts +1 -1
  153. package/dist/{Popover-BkDpDdaO.mjs → Popover-DlXyKYL5.mjs} +6 -6
  154. package/dist/{Popover-BkDpDdaO.mjs.map → Popover-DlXyKYL5.mjs.map} +1 -1
  155. package/dist/Popover.d.mts +1 -1
  156. package/dist/ProgressBar.d.mts +1 -1
  157. package/dist/ProgressIndicator.d.mts +6 -4
  158. package/dist/{PseudoClassProps-CcSlKNev.d.mts → PseudoClassProps-BPdn-ofQ.d.mts} +1 -1
  159. package/dist/PseudoClassProps.d.mts +1 -1
  160. package/dist/{Radio-BaFutxgV.mjs → Radio-cLL9oatf.mjs} +5 -5
  161. package/dist/{Radio-BaFutxgV.mjs.map → Radio-cLL9oatf.mjs.map} +1 -1
  162. package/dist/{RadioGroup-ClMzOZl0.mjs → RadioGroup-BGo_kXKh.mjs} +4 -4
  163. package/dist/{RadioGroup-ClMzOZl0.mjs.map → RadioGroup-BGo_kXKh.mjs.map} +1 -1
  164. package/dist/{RadioGroup-BuJaitgG.d.mts → RadioGroup-BqULCH-D.d.mts} +1 -1
  165. package/dist/RadioGroup.d.mts +1 -1
  166. package/dist/RangeCalendar.d.mts +6 -1
  167. package/dist/RangeCalendarPresets.d.mts +13 -3
  168. package/dist/ResizableVerticalPanel.d.mts +22 -0
  169. package/dist/ResizeHandle.d.mts +19 -0
  170. package/dist/RightPanel.d.mts +41 -0
  171. package/dist/RightPanelLoadingContent.d.mts +7 -0
  172. package/dist/RightPanelResizeHandle.d.mts +14 -0
  173. package/dist/RuleEditorFields.d.mts +5 -5
  174. package/dist/RulesPill.d.mts +1 -1
  175. package/dist/{SearchInput-Ca3_np5e.d.mts → SearchInput-Dc90GLTF.d.mts} +3 -3
  176. package/dist/SearchInput.d.mts +1 -1
  177. package/dist/SectionHeading.d.mts +1 -1
  178. package/dist/{SegmentedControl-DgyJL4uN.mjs → SegmentedControl-CvWJGhwy.mjs} +5 -5
  179. package/dist/{SegmentedControl-DgyJL4uN.mjs.map → SegmentedControl-CvWJGhwy.mjs.map} +1 -1
  180. package/dist/{SegmentedControl-_I4sWeD7.d.mts → SegmentedControl-Db78Pzo_.d.mts} +2 -2
  181. package/dist/SegmentedControl.d.mts +1 -1
  182. package/dist/{Select-D6MqSYVa.mjs → Select-U_vQhK1A.mjs} +12 -13
  183. package/dist/Select-U_vQhK1A.mjs.map +1 -0
  184. package/dist/{Select-vwXGlHuW.d.mts → Select-bafAe2wd.d.mts} +4 -4
  185. package/dist/Select.d.mts +1 -1
  186. package/dist/Slider.d.mts +1 -1
  187. package/dist/SliderRHF.d.mts +1 -1
  188. package/dist/SliderThumb.d.mts +1 -1
  189. package/dist/{Spacer-CJp0lwkL.mjs → Spacer-BsK8tTwA.mjs} +2 -2
  190. package/dist/{Spacer-CJp0lwkL.mjs.map → Spacer-BsK8tTwA.mjs.map} +1 -1
  191. package/dist/{Spinner-BgBCCHGo.mjs → Spinner-BTyc6glU.mjs} +3 -3
  192. package/dist/{Spinner-BgBCCHGo.mjs.map → Spinner-BTyc6glU.mjs.map} +1 -1
  193. package/dist/{Stack-Bl54WmhY.mjs → Stack-Bre2oiov.mjs} +2 -2
  194. package/dist/{Stack-Bl54WmhY.mjs.map → Stack-Bre2oiov.mjs.map} +1 -1
  195. package/dist/{Stack-CkV7k7TE.d.mts → Stack-_JcvIE31.d.mts} +2 -2
  196. package/dist/Stack.d.mts +1 -1
  197. package/dist/StatusIndicator.d.mts +1 -1
  198. package/dist/{Sticker-xtDMuOoN.mjs → Sticker-CQ6sOKUj.mjs} +6 -6
  199. package/dist/{Sticker-xtDMuOoN.mjs.map → Sticker-CQ6sOKUj.mjs.map} +1 -1
  200. package/dist/{Sticker-Dhx2wqTL.d.mts → Sticker-OKVOQt_C.d.mts} +6 -6
  201. package/dist/Sticker.d.mts +1 -1
  202. package/dist/StringValueControl.d.mts +1 -1
  203. package/dist/SwatchPicker.d.mts +1 -1
  204. package/dist/Tab.d.mts +3 -3
  205. package/dist/{TabBar-D6UocZXi.mjs → TabBar-B5NtgtgC.mjs} +7 -7
  206. package/dist/{TabBar-D6UocZXi.mjs.map → TabBar-B5NtgtgC.mjs.map} +1 -1
  207. package/dist/TabBarIconButton.d.mts +2 -2
  208. package/dist/{Table-cO7ZwGPM.d.mts → Table-BcAgCIWq.d.mts} +1 -1
  209. package/dist/{Table-D1WyUQuv.mjs → Table-DfUD3I2s.mjs} +8 -8
  210. package/dist/{Table-D1WyUQuv.mjs.map → Table-DfUD3I2s.mjs.map} +1 -1
  211. package/dist/Table.d.mts +1 -1
  212. package/dist/{TableBody-CirMgfAV.d.mts → TableBody-D-RDBun9.d.mts} +1 -1
  213. package/dist/TableBody.d.mts +1 -1
  214. package/dist/{TableBox-C5qWhr82.mjs → TableBox-0GvWjRln.mjs} +27 -21
  215. package/dist/{TableBox-C5qWhr82.mjs.map → TableBox-0GvWjRln.mjs.map} +1 -1
  216. package/dist/TableBox.d.mts +2 -2
  217. package/dist/{TableBoxCell-DmVX_tgn.d.mts → TableBoxCell-WXc57DwN.d.mts} +12 -9
  218. package/dist/TableBoxCell.d.mts +1 -1
  219. package/dist/TableBoxField.d.mts +4 -4
  220. package/dist/{TableBoxRow-nwq41Bpi.d.mts → TableBoxRow-BQz0a9vr.d.mts} +4 -4
  221. package/dist/TableBoxRow.d.mts +1 -1
  222. package/dist/{TableBoxRowActions-B4_ojiQo.d.mts → TableBoxRowActions-DfewtLrn.d.mts} +2 -2
  223. package/dist/TableBoxRowActions.d.mts +1 -1
  224. package/dist/TableCell.d.mts +1 -1
  225. package/dist/{TableControls-RwIPBxyU.d.mts → TableControls-C26vGkWZ.d.mts} +6 -9
  226. package/dist/{TableControls-CZ9iu3ma.mjs → TableControls-WUNbzSNq.mjs} +331 -113
  227. package/dist/TableControls-WUNbzSNq.mjs.map +1 -0
  228. package/dist/TableControls.d.mts +1 -1
  229. package/dist/{TableControlsContext-D_SBFZN1.d.mts → TableControlsContext-ChFsFEjR.d.mts} +2 -2
  230. package/dist/TableControlsContext.d.mts +1 -1
  231. package/dist/{TableHead-DMq_q_W0.d.mts → TableHead-PPaqXC0K.d.mts} +1 -1
  232. package/dist/TableHead.d.mts +1 -1
  233. package/dist/{TableHeaderCell-C2pqXBYO.d.mts → TableHeaderCell-K_avn-rR.d.mts} +1 -1
  234. package/dist/TableHeaderCell.d.mts +1 -1
  235. package/dist/{TableLayout-DQKu6Rcj.d.mts → TableLayout-_Hd-Tvto.d.mts} +1 -1
  236. package/dist/TableLayout.d.mts +1 -1
  237. package/dist/{TableRow-CPqZ8DK3.d.mts → TableRow-BTWf9xVC.d.mts} +2 -2
  238. package/dist/TableRow.d.mts +1 -1
  239. package/dist/TableTH.d.mts +1 -1
  240. package/dist/{TableViewConfigurationDropdown-BYPh4dIP.d.mts → TableViewConfigurationDropdown-BqB7pOh8.d.mts} +5 -3
  241. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  242. package/dist/{TechnicalSticker-DTjg6d2F.mjs → TechnicalSticker-ClRR_6Ly.mjs} +6 -6
  243. package/dist/{TechnicalSticker-DTjg6d2F.mjs.map → TechnicalSticker-ClRR_6Ly.mjs.map} +1 -1
  244. package/dist/TechnicalSticker.d.mts +1 -1
  245. package/dist/{Text-RcEfNFLx.mjs → Text-B0orb-cZ.mjs} +2 -2
  246. package/dist/{Text-RcEfNFLx.mjs.map → Text-B0orb-cZ.mjs.map} +1 -1
  247. package/dist/{Text-CfIFUyHt.d.mts → Text-CAKHcXSd.d.mts} +4 -4
  248. package/dist/Text.d.mts +1 -1
  249. package/dist/{TextArea-DhPBI_1-.d.mts → TextArea-NjdArapc.d.mts} +2 -2
  250. package/dist/{TextArea-ZMgbE_Lh.mjs → TextArea-n4IKHJKo.mjs} +4 -4
  251. package/dist/{TextArea-ZMgbE_Lh.mjs.map → TextArea-n4IKHJKo.mjs.map} +1 -1
  252. package/dist/TextArea.d.mts +1 -1
  253. package/dist/{TextUnderlineTooltip-BzmmiJlC.d.mts → TextUnderlineTooltip-Duzxfc_r.d.mts} +3 -3
  254. package/dist/TextUnderlineTooltip.d.mts +1 -1
  255. package/dist/Tile.d.mts +2 -2
  256. package/dist/Toast.d.mts +1 -1
  257. package/dist/{Toggle-BPgfSjuu.mjs → Toggle-e8DCYa6i.mjs} +7 -7
  258. package/dist/{Toggle-BPgfSjuu.mjs.map → Toggle-e8DCYa6i.mjs.map} +1 -1
  259. package/dist/{Toggle-BGGQ4Ukl.d.mts → Toggle-fh80PA8P.d.mts} +1 -1
  260. package/dist/Toggle.d.mts +1 -1
  261. package/dist/{Tooltip-D_a-RwAN.d.mts → Tooltip-DabloV0o.d.mts} +3 -3
  262. package/dist/{Tooltip-BvDbmXak.mjs → Tooltip-iJcfJqxn.mjs} +5 -5
  263. package/dist/{Tooltip-BvDbmXak.mjs.map → Tooltip-iJcfJqxn.mjs.map} +1 -1
  264. package/dist/Tooltip.d.mts +1 -1
  265. package/dist/{TruncatedText-BJnowVTx.d.mts → TruncatedText-B1W4BivL.d.mts} +2 -2
  266. package/dist/codec-B0dZTwlG.d.mts +29 -0
  267. package/dist/codec.d.mts +2 -0
  268. package/dist/components/Attribute/index.mjs +7 -7
  269. package/dist/components/Attribute/index.mjs.map +1 -1
  270. package/dist/components/Badge/index.mjs +1 -1
  271. package/dist/components/Banner/index.mjs +3 -3
  272. package/dist/components/BottomPanel/index.d.mts +2 -0
  273. package/dist/components/BottomPanel/index.mjs +293 -0
  274. package/dist/components/BottomPanel/index.mjs.map +1 -0
  275. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  276. package/dist/components/Breadcrumbs/index.mjs +1 -1
  277. package/dist/components/Button/index.d.mts +2 -2
  278. package/dist/components/Button/index.mjs +1 -1
  279. package/dist/components/ButtonGroup/index.mjs +4 -4
  280. package/dist/components/Card/index.d.mts +2 -2
  281. package/dist/components/Card/index.mjs +1 -1
  282. package/dist/components/CardV2/index.d.mts +1 -1
  283. package/dist/components/CardV2/index.mjs +1 -1
  284. package/dist/components/Checkbox/index.d.mts +1 -1
  285. package/dist/components/Checkbox/index.mjs +1 -1
  286. package/dist/components/Combobox/index.d.mts +2 -2
  287. package/dist/components/Combobox/index.mjs +1 -1
  288. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  289. package/dist/components/DataTable/TableControls/index.d.mts +19 -16
  290. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  291. package/dist/components/DataTable/index.mjs +25 -25
  292. package/dist/components/DataTable/index.mjs.map +1 -1
  293. package/dist/components/DataTable/types.d.mts +2 -2
  294. package/dist/components/DatePicker/index.d.mts +5 -5
  295. package/dist/components/DatePicker/index.mjs +1 -1
  296. package/dist/components/DropdownButton/index.mjs +1 -1
  297. package/dist/components/DropdownMenu/index.d.mts +1 -1
  298. package/dist/components/DropdownMenu/index.mjs +1 -1
  299. package/dist/components/FloatingPanel/index.mjs +8 -8
  300. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  301. package/dist/components/FormControl/index.d.mts +2 -2
  302. package/dist/components/FormControl/index.mjs +2 -2
  303. package/dist/components/FormField/index.d.mts +1 -1
  304. package/dist/components/FormField/index.mjs +1 -1
  305. package/dist/components/Grid/index.d.mts +3 -0
  306. package/dist/components/Grid/index.mjs +85 -0
  307. package/dist/components/Grid/index.mjs.map +1 -0
  308. package/dist/components/HoverCopyableField/index.d.mts +2 -2
  309. package/dist/components/HoverCopyableField/index.mjs +2 -2
  310. package/dist/components/ImageTile/index.mjs +10 -10
  311. package/dist/components/Input/index.d.mts +1 -1
  312. package/dist/components/Input/index.mjs +1 -1
  313. package/dist/components/Link/index.mjs +4 -4
  314. package/dist/components/Link/index.mjs.map +1 -1
  315. package/dist/components/ListBox/index.d.mts +3 -3
  316. package/dist/components/ListBox/index.mjs +1 -1
  317. package/dist/components/LoadingShimmer/index.mjs +1 -1
  318. package/dist/components/MaskedInput/index.mjs +2 -2
  319. package/dist/components/MatchHighlight/index.mjs +1 -1
  320. package/dist/components/Menu/index.d.mts +1 -1
  321. package/dist/components/Menu/index.mjs +1 -1
  322. package/dist/components/Modal/index.mjs +42 -12
  323. package/dist/components/Modal/index.mjs.map +1 -1
  324. package/dist/components/PageHeader/index.mjs +1 -1
  325. package/dist/components/Pagination/index.d.mts +3 -3
  326. package/dist/components/Pagination/index.mjs +1 -1
  327. package/dist/components/Pii/index.mjs +1 -1
  328. package/dist/components/Popover/index.mjs +1 -1
  329. package/dist/components/ProgressBar/index.mjs +2 -2
  330. package/dist/components/ProgressIndicator/index.mjs +14 -10
  331. package/dist/components/ProgressIndicator/index.mjs.map +1 -1
  332. package/dist/components/Radio/index.mjs +1 -1
  333. package/dist/components/RadioGroup/index.d.mts +1 -1
  334. package/dist/components/RadioGroup/index.mjs +1 -1
  335. package/dist/components/RightPanel/index.d.mts +2 -0
  336. package/dist/components/RightPanel/index.mjs +294 -0
  337. package/dist/components/RightPanel/index.mjs.map +1 -0
  338. package/dist/components/SegmentedControl/index.d.mts +1 -1
  339. package/dist/components/SegmentedControl/index.mjs +1 -1
  340. package/dist/components/Select/index.d.mts +1 -1
  341. package/dist/components/Select/index.mjs +1 -1
  342. package/dist/components/Slider/index.mjs +4 -4
  343. package/dist/components/Spacer/index.mjs +1 -1
  344. package/dist/components/Spinner/index.mjs +1 -1
  345. package/dist/components/Stack/index.d.mts +1 -1
  346. package/dist/components/Stack/index.mjs +1 -1
  347. package/dist/components/StatusIndicator/index.mjs +2 -2
  348. package/dist/components/Sticker/index.d.mts +1 -1
  349. package/dist/components/Sticker/index.mjs +1 -1
  350. package/dist/components/SwatchPicker/index.mjs +1 -1
  351. package/dist/components/TabBar/index.mjs +1 -1
  352. package/dist/components/Table/index.d.mts +7 -7
  353. package/dist/components/Table/index.mjs +1 -1
  354. package/dist/components/TableBox/index.d.mts +2 -2
  355. package/dist/components/TableBox/index.mjs +1 -1
  356. package/dist/components/TechnicalSticker/index.mjs +1 -1
  357. package/dist/components/Text/index.d.mts +1 -1
  358. package/dist/components/Text/index.mjs +1 -1
  359. package/dist/components/TextArea/index.d.mts +1 -1
  360. package/dist/components/TextArea/index.mjs +1 -1
  361. package/dist/components/Tile/index.mjs +5 -5
  362. package/dist/components/Toast/index.mjs +5 -5
  363. package/dist/components/Toggle/index.d.mts +1 -1
  364. package/dist/components/Toggle/index.mjs +1 -1
  365. package/dist/components/Tooltip/index.d.mts +3 -3
  366. package/dist/components/Tooltip/index.mjs +1 -1
  367. package/dist/compound-expression.d.mts +1 -1
  368. package/dist/{constants-BASogfT_.d.mts → constants-DcJ3tnwY.d.mts} +1 -1
  369. package/dist/constants.d.mts +1 -1
  370. package/dist/date-filter-BbWgAXy3.mjs +176 -0
  371. package/dist/date-filter-BbWgAXy3.mjs.map +1 -0
  372. package/dist/date-range-rule-value-DBEEWTQp.d.mts +17 -0
  373. package/dist/date-range-rule-value.d.mts +2 -0
  374. package/dist/date-rule-intent-BArNGT2E.d.mts +20 -0
  375. package/dist/date-rule-intent.d.mts +2 -0
  376. package/dist/display.d.mts +2 -2
  377. package/dist/fieldPickerOptions.d.mts +2 -2
  378. package/dist/{filter-size-context-Bw5F7082.d.mts → filter-size-context-D1UhTwOG.d.mts} +2 -2
  379. package/dist/filter-size-context.d.mts +1 -1
  380. package/dist/helpers.d.mts +1 -1
  381. package/dist/{index--5Mfhlkj.d.mts → index-DASkW991.d.mts} +2 -2
  382. package/dist/{index-C1bz13uw.d.mts → index-Dc_BgmPv.d.mts} +5 -5
  383. package/dist/{index-DiCnyORA.d.mts → index-Dpo-RP6S.d.mts} +5 -5
  384. package/dist/index-dhjtMp5F.d.mts +1 -0
  385. package/dist/index-uY8Qbwfx.d.mts +1 -0
  386. package/dist/index.d.mts +1 -1
  387. package/dist/index2.d.mts +1 -1
  388. package/dist/index3.d.mts +3 -3
  389. package/dist/index4.d.mts +14 -11
  390. package/dist/{input-CzO-6_1V.d.mts → input-M7BEIewR.d.mts} +3 -3
  391. package/dist/inputFields.d.mts +11 -11
  392. package/dist/{intersperse-yd3oMrQl.mjs → intersperse-DQAyfeEw.mjs} +1 -1
  393. package/dist/{intersperse-yd3oMrQl.mjs.map → intersperse-DQAyfeEw.mjs.map} +1 -1
  394. package/dist/lib/GlobalStyles.mjs +1 -1
  395. package/dist/lib/HeadlessAriaButton.mjs +1 -1
  396. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  397. package/dist/lib/PDSProvider.d.mts +1 -1
  398. package/dist/lib/PDSProvider.mjs +1 -1
  399. package/dist/lib/TruncatedText.d.mts +1 -1
  400. package/dist/lib/TruncatedText.mjs +2 -2
  401. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  402. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  403. package/dist/lib/date-filter/index.d.mts +3 -0
  404. package/dist/lib/date-filter/index.mjs +2 -0
  405. package/dist/lib/embeddedSurfaceProtocol.d.mts +13 -1
  406. package/dist/lib/embeddedSurfaceProtocol.mjs +32 -5
  407. package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
  408. package/dist/lib/message.d.mts +1 -1
  409. package/dist/lib/pseudoClass.d.mts +8 -8
  410. package/dist/lib/useEmbeddedSurface.d.mts +31 -3
  411. package/dist/lib/useEmbeddedSurface.mjs +118 -13
  412. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  413. package/dist/lib/useResizablePanel.d.mts +49 -0
  414. package/dist/lib/useResizablePanel.mjs +75 -0
  415. package/dist/lib/useResizablePanel.mjs.map +1 -0
  416. package/dist/{message-Cu84fcqB.d.mts → message-DaiDXonE.d.mts} +1 -1
  417. package/dist/mixins/focus.d.mts +1 -1
  418. package/dist/mixins/focus.mjs +1 -1
  419. package/dist/mixins/hoverable.d.mts +2 -2
  420. package/dist/mixins/hoverable.mjs +2 -2
  421. package/dist/mixins/input.d.mts +1 -1
  422. package/dist/mixins/input.mjs +2 -2
  423. package/dist/mixins/menuItem.d.mts +2 -2
  424. package/dist/mixins/menuItem.mjs +1 -1
  425. package/dist/mixins/print/index.mjs +1 -1
  426. package/dist/mixins/text.d.mts +1 -1
  427. package/dist/mixins/text.mjs +1 -1
  428. package/dist/{operators-CmSqHnTH.d.mts → operators-BsSl7gPE.d.mts} +10 -3
  429. package/dist/operators.d.mts +2 -2
  430. package/dist/patterns/LayoutLoadingShimmer/index.mjs +6 -6
  431. package/dist/patterns/LayoutLoadingSpinner/index.d.mts +2 -0
  432. package/dist/patterns/LayoutLoadingSpinner/index.mjs +56 -0
  433. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -0
  434. package/dist/patterns/PageLayout/index.mjs +1 -1
  435. package/dist/relative-date-label.d.mts +15 -0
  436. package/dist/styledComponentsInterop-8zScIQyC.mjs +33 -0
  437. package/dist/styledComponentsInterop-8zScIQyC.mjs.map +1 -0
  438. package/dist/{text-BaQdW8qa.d.mts → text-DjTGRUM1.d.mts} +1 -1
  439. package/dist/{theme-D9Y6NOzb.d.mts → theme-Biwx2eJZ.d.mts} +1 -1
  440. package/dist/theme.d.mts +1 -1
  441. package/dist/{types-NJtAxsU1.d.mts → types-B5VmRRMR.d.mts} +5 -3
  442. package/dist/types-Bsf1VsW6.d.mts +24 -0
  443. package/dist/{types-TV9nVfSe.d.mts → types-Cg3aXHUh2.d.mts} +1 -1
  444. package/dist/{types-DEh_pXgS.d.mts → types-Df0D37uh.d.mts} +3 -1
  445. package/dist/{types-C-TkDdkG.d.mts → types-V8UJX-rk.d.mts} +14 -2
  446. package/dist/types.d.mts +1 -1
  447. package/dist/types2.d.mts +2 -2
  448. package/dist/types3.d.mts +2 -2
  449. package/dist/types4.d.mts +2 -2
  450. package/dist/types5.d.mts +2 -0
  451. package/dist/url-state-ektb0HnB.d.mts +42 -0
  452. package/dist/url-state.d.mts +2 -0
  453. package/dist/useComboboxFooterAction.d.mts +1 -1
  454. package/dist/{useFilterStateV2-C4itmN4S.d.mts → useFilterStateV2-BB14vCC-.d.mts} +3 -3
  455. package/dist/useFilterStateV2.d.mts +1 -1
  456. package/dist/{useFormField-eftOPiXj.mjs → useFormField-Bz2iMPBO.mjs} +2 -2
  457. package/dist/{useFormField-eftOPiXj.mjs.map → useFormField-Bz2iMPBO.mjs.map} +1 -1
  458. package/dist/{useFormField-B2U4GOH4.d.mts → useFormField-CQo08dR4.d.mts} +2 -2
  459. package/dist/useFormField.d.mts +1 -1
  460. package/dist/{useFormGroup-BMukAMAd.mjs → useFormGroup-CaTiD_Yt.mjs} +1 -1
  461. package/dist/{useFormGroup-BMukAMAd.mjs.map → useFormGroup-CaTiD_Yt.mjs.map} +1 -1
  462. package/dist/{useTableBoxDragAndDrop-CpemHLhL.d.mts → useTableBoxDragAndDrop-B-Dev5D6.d.mts} +1 -1
  463. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  464. package/dist/useTruncation.d.mts +1 -1
  465. package/dist/{utilities-DnSIlR1i.d.mts → utilities-BHMNnJ8h.d.mts} +1 -1
  466. package/dist/utilities.d.mts +1 -1
  467. package/dist/utils/storybook.mjs +1 -1
  468. package/dist/utils/testing.d.mts +1 -1
  469. package/dist/utils/testing.mjs +1 -1
  470. package/dist/utils.d.mts +1 -1
  471. package/dist/utils2.d.mts +12 -1
  472. package/dist/{validation-B5IXsdkE.d.mts → validation-B22QjCrV.d.mts} +3 -3
  473. package/dist/validation.d.mts +1 -1
  474. package/dist/{value-control-resolver-BPlTeIX7.d.mts → value-control-resolver-qKTH1ErF.d.mts} +5 -3
  475. package/dist/value-control-resolver.d.mts +1 -1
  476. package/dist/variables/keyframes.mjs +1 -1
  477. package/llms.txt +6 -6
  478. package/package.json +14 -2
  479. package/skills/ui-authoring/COMPONENTS.md +71 -305
  480. package/skills/ui-authoring/PATTERNS.md +364 -0
  481. package/skills/ui-authoring/SKILL.md +15 -147
  482. package/skills/ui-authoring/TOKENS.md +400 -0
  483. package/dist/Combobox-xBrxiUAu.mjs.map +0 -1
  484. package/dist/DatePicker-BlnE2MBD.mjs.map +0 -1
  485. package/dist/FormField-B9P3BWvS.mjs.map +0 -1
  486. package/dist/HoverCopyableField-0Bzygbp9.mjs.map +0 -1
  487. package/dist/Select-D6MqSYVa.mjs.map +0 -1
  488. package/dist/TableControls-CZ9iu3ma.mjs.map +0 -1
  489. package/skills/ui-authoring/EXAMPLES.md +0 -370
  490. package/skills/ui-authoring/REFERENCE.md +0 -293
  491. /package/dist/{index-BMBcfD_R.d.mts → index-8SLBz2NH.d.mts} +0 -0
  492. /package/dist/{index-BOn0AAue.d.mts → index-BINnViIh.d.mts} +0 -0
  493. /package/dist/{index-BYd3Btr1.d.mts → index-B_BBnMou.d.mts} +0 -0
  494. /package/dist/{index-CKKoxA9V.d.mts → index-BcsXXrHq.d.mts} +0 -0
  495. /package/dist/{index-CNxS4Tlu.d.mts → index-Bt4QNofW.d.mts} +0 -0
  496. /package/dist/{index-CWB6exYm.d.mts → index-BwFl_eS0.d.mts} +0 -0
  497. /package/dist/{index-CsuikFeJ.d.mts → index-CDGG7lCB.d.mts} +0 -0
  498. /package/dist/{index-CtJuGxUp.d.mts → index-CMuRFTR3.d.mts} +0 -0
  499. /package/dist/{index-CzItj62a.d.mts → index-CX869wwk.d.mts} +0 -0
  500. /package/dist/{index-D5tSVhTd.d.mts → index-CliqZ9rj.d.mts} +0 -0
  501. /package/dist/{index-DGsJdI5l.d.mts → index-CuheJfs-.d.mts} +0 -0
  502. /package/dist/{index-DkrC-i1D.d.mts → index-DBGd4WeR.d.mts} +0 -0
  503. /package/dist/{index-Es5nKSSL.d.mts → index-DDdPqD_H.d.mts} +0 -0
  504. /package/dist/{index-FtE8MXJ_.d.mts → index-DMRtRo7y.d.mts} +0 -0
  505. /package/dist/{index-IE5cwTAE2.d.mts → index-Dflz2i1X.d.mts} +0 -0
  506. /package/dist/{index-Oio5ygqN.d.mts → index-DvmLVvRD.d.mts} +0 -0
  507. /package/dist/{index-ehD5GjMH.d.mts → index-Wc1llEvP.d.mts} +0 -0
package/dist/utils2.d.mts CHANGED
@@ -4,6 +4,17 @@
4
4
  * at startIndex with the one at endIndex
5
5
  */
6
6
  declare function reorder<A>(list: A[], startIndex: number, endIndex: number): A[];
7
+ /**
8
+ * Translates a drag result into indices into the full list. dnd reports positions among the
9
+ * rendered rows, which diverge from the full list as soon as the view is filtered.
10
+ *
11
+ * Returns null when either end cannot be resolved, in which case the drag should be ignored
12
+ * rather than applied at the wrong position.
13
+ */
14
+ declare function resolveDragIndices(listKeys: string[], renderedKeys: string[], draggableId: string, destinationIndex: number): {
15
+ from: number;
16
+ to: number;
17
+ } | null;
7
18
  //#endregion
8
- export { reorder };
19
+ export { reorder, resolveDragIndices };
9
20
  //# sourceMappingURL=utils2.d.mts.map
@@ -1,5 +1,5 @@
1
- import { f as FilterStateV2, l as FilterRule } from "./types-C-TkDdkG.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-DdA63Vnh.mjs";
1
+ import { l as FilterRule, p as FilterStateV2 } from "./types-V8UJX-rk.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-D6niLExM.mjs";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/validation.d.ts
5
5
  /**
@@ -48,4 +48,4 @@ declare function pruneToRegistry(state: FilterStateV2, registry: FieldRegistry |
48
48
  declare function hasCompleteValue(rule: FilterRule, registry: FieldRegistry): boolean;
49
49
  //#endregion
50
50
  export { isFilterStateV2 as n, pruneToRegistry as r, hasCompleteValue as t };
51
- //# sourceMappingURL=validation-B5IXsdkE.d.mts.map
51
+ //# sourceMappingURL=validation-B22QjCrV.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-B5IXsdkE.mjs";
1
+ import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-B22QjCrV.mjs";
2
2
  export { hasCompleteValue, isFilterStateV2, pruneToRegistry };
@@ -1,4 +1,4 @@
1
- import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
1
+ import { a as FilterField, c as FilterOperator, d as FilterRuleValueChange, l as FilterRule, u as FilterRuleValue } from "./types-V8UJX-rk.mjs";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/FilterBar/value-control-resolver.d.ts
@@ -27,9 +27,11 @@ interface ResolveValueControlOptions {
27
27
  field: FilterField;
28
28
  operator: FilterOperator;
29
29
  value: FilterRuleValue;
30
- onChange: (value: FilterRuleValue) => void;
30
+ relativeDate?: FilterRule['relativeDate'];
31
+ onChange: FilterRuleValueChange;
31
32
  onCommit?: () => void;
32
33
  ariaLabel?: string;
34
+ relativeDatesEnabled?: boolean;
33
35
  /**
34
36
  * Where the control is being rendered. `popover` (default) is the
35
37
  * simple-pill `FilterPopover` surface — dedicated to one rule with
@@ -43,4 +45,4 @@ type ValueControlResolver = (opts: ResolveValueControlOptions) => ReactNode | un
43
45
  declare function resolveValueControl(opts: ResolveValueControlOptions, hostResolver?: ValueControlResolver): ReactNode;
44
46
  //#endregion
45
47
  export { ValueControlResolver as n, resolveValueControl as r, ResolveValueControlOptions as t };
46
- //# sourceMappingURL=value-control-resolver-BPlTeIX7.d.mts.map
48
+ //# sourceMappingURL=value-control-resolver-qKTH1ErF.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-BPlTeIX7.mjs";
1
+ import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-qKTH1ErF.mjs";
2
2
  export { ResolveValueControlOptions, ValueControlResolver, resolveValueControl };
@@ -1,4 +1,4 @@
1
- import { keyframes } from "styled-components";
1
+ import { i as keyframes } from "../styledComponentsInterop-8zScIQyC.mjs";
2
2
  //#region variables/keyframes.ts
3
3
  const rotate = keyframes`
4
4
  100% {
package/llms.txt CHANGED
@@ -13,10 +13,10 @@ For exact prop types, prefer the published type declarations (`dist/**/*.d.mts`,
13
13
 
14
14
  ## Skills
15
15
 
16
- - [ui-authoring](skills/ui-authoring/SKILL.md): component-first table (which component for which need), design tokens, table guidelines (DataTable vs TableBox vs TableLayout), loading/empty states, forms, testing, Storybook, charts
17
- - [Components reference](skills/ui-authoring/COMPONENTS.md): props + patterns for ConfigFormGroup, ListBox, TableBox, Card, Modal, form state hook
18
- - [Examples](skills/ui-authoring/EXAMPLES.md): copy-paste patterns (Buttons, Forms, Modals, DataTable, TabBar, Tooltip, Spinner, Banner, Sticker, Stack, Text)
19
- - [Token reference](skills/ui-authoring/REFERENCE.md): full Color / Spacing / Typography catalog
16
+ - [ui-authoring](skills/ui-authoring/SKILL.md): design tokens, PDS implementation guidelines, table guidelines (DataTable vs TableBox vs TableLayout), loading states, testing, Storybook
17
+ - [Tokens](skills/ui-authoring/TOKENS.md): Color / Spacing / Typography selection and catalog, radius, charts
18
+ - [Patterns](skills/ui-authoring/PATTERNS.md): forms, layout, indicators, feedback, empty states, charts, panels
19
+ - [Components](skills/ui-authoring/COMPONENTS.md): which PDS component to use (and its import path); APIs live in that component's `.mdx` when one exists, otherwise in `dist/components/<Name>/index.d.mts`
20
20
 
21
21
  ## Imports
22
22
 
@@ -31,9 +31,9 @@ their own subpaths.
31
31
  - Layout: `Stack` / `HStack` (components/Stack), `Spacer`
32
32
  - Text: `Heading`, `Paragraph`, `Label` (components/Text)
33
33
  - Tables: `DataTable` (data views w/ pagination + sorting), `TableBox` (editable form tables), `TableLayout` + `Table`/`TableRow`/`TableCell`/`TableHeaderCell` primitives (components/Table) — `TableLayout` has built-in `isLoading`/`isEmpty`/`nullState`/`showHeader` handling
34
- - Page chrome: `PageHeader` (title or breadcrumbs variant), `Breadcrumbs`, `TabBar`
34
+ - Page chrome: `PageHeader` (title or breadcrumbs variant), `Breadcrumbs`, `TabBar`, `BottomPanel` (resizable bottom drawer)
35
35
  - Feedback: `Spinner`, `Banner`, `Toast`, `LoadingShimmer`, `ProgressBar`
36
- - Overlays: `Modal`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
36
+ - Overlays: `Modal`, `RightPanel`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
37
37
  - Forms: `ConfigFormGroup`, `FormField` (`TextField`, `TextAreaField`, `TableBoxField`), `Input`, `TextArea`, `Select`, `Combobox`, `Checkbox`, `Radio`, `Toggle`, `DatePicker`
38
38
  - Status: `Sticker` (status badges), `Badge` (counts), `StatusIndicator`
39
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@persona/design-system",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "React components for Persona UI",
5
5
  "keywords": [
6
6
  "tanstack-intent"
@@ -19,6 +19,7 @@
19
19
  "./components/Attribute": "./dist/components/Attribute/index.mjs",
20
20
  "./components/Badge": "./dist/components/Badge/index.mjs",
21
21
  "./components/Banner": "./dist/components/Banner/index.mjs",
22
+ "./components/BottomPanel": "./dist/components/BottomPanel/index.mjs",
22
23
  "./components/Breadcrumbs": "./dist/components/Breadcrumbs/index.mjs",
23
24
  "./components/Button": "./dist/components/Button/index.mjs",
24
25
  "./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
@@ -36,6 +37,7 @@
36
37
  "./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
37
38
  "./components/FormControl": "./dist/components/FormControl/index.mjs",
38
39
  "./components/FormField": "./dist/components/FormField/index.mjs",
40
+ "./components/Grid": "./dist/components/Grid/index.mjs",
39
41
  "./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
40
42
  "./components/ImageTile": "./dist/components/ImageTile/index.mjs",
41
43
  "./components/Input": "./dist/components/Input/index.mjs",
@@ -54,6 +56,7 @@
54
56
  "./components/ProgressIndicator": "./dist/components/ProgressIndicator/index.mjs",
55
57
  "./components/Radio": "./dist/components/Radio/index.mjs",
56
58
  "./components/RadioGroup": "./dist/components/RadioGroup/index.mjs",
59
+ "./components/RightPanel": "./dist/components/RightPanel/index.mjs",
57
60
  "./components/SegmentedControl": "./dist/components/SegmentedControl/index.mjs",
58
61
  "./components/Select": "./dist/components/Select/index.mjs",
59
62
  "./components/Slider": "./dist/components/Slider/index.mjs",
@@ -76,6 +79,7 @@
76
79
  "./lib/comboboxHelper": "./dist/lib/comboboxHelper.mjs",
77
80
  "./lib/ConfigContext": "./dist/lib/ConfigContext.mjs",
78
81
  "./lib/copyTextToClipboard": "./dist/lib/copyTextToClipboard.mjs",
82
+ "./lib/date-filter": "./dist/lib/date-filter/index.mjs",
79
83
  "./lib/datePickerHelper": "./dist/lib/datePickerHelper.mjs",
80
84
  "./lib/embeddedSurfaceProtocol": "./dist/lib/embeddedSurfaceProtocol.mjs",
81
85
  "./lib/embeddedSurfaceRegistry": "./dist/lib/embeddedSurfaceRegistry.mjs",
@@ -93,6 +97,7 @@
93
97
  "./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
94
98
  "./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
95
99
  "./lib/useOutsideClick": "./dist/lib/useOutsideClick.mjs",
100
+ "./lib/useResizablePanel": "./dist/lib/useResizablePanel.mjs",
96
101
  "./lib/useScrollOverflow": "./dist/lib/useScrollOverflow.mjs",
97
102
  "./lib/zindex": "./dist/lib/zindex.mjs",
98
103
  "./mixins/focus": "./dist/mixins/focus.mjs",
@@ -102,6 +107,7 @@
102
107
  "./mixins/print": "./dist/mixins/print/index.mjs",
103
108
  "./mixins/text": "./dist/mixins/text.mjs",
104
109
  "./patterns/LayoutLoadingShimmer": "./dist/patterns/LayoutLoadingShimmer/index.mjs",
110
+ "./patterns/LayoutLoadingSpinner": "./dist/patterns/LayoutLoadingSpinner/index.mjs",
105
111
  "./patterns/PageLayout": "./dist/patterns/PageLayout/index.mjs",
106
112
  "./theme": "./dist/theme.mjs",
107
113
  "./utils/storybook": "./dist/utils/storybook.mjs",
@@ -115,7 +121,7 @@
115
121
  "./package.json": "./package.json"
116
122
  },
117
123
  "scripts": {
118
- "build": "tsdown && node scripts/assert-no-node-imports.mjs",
124
+ "build": "tsdown && node scripts/assert-no-node-imports.mjs && node scripts/assert-styled-components-interop.mjs",
119
125
  "release": "scripts/release.sh --dry-run",
120
126
  "release:tag": "scripts/tag.sh",
121
127
  "skills:validate": "intent validate skills",
@@ -203,6 +209,7 @@
203
209
  "./components/Attribute": "./dist/components/Attribute/index.mjs",
204
210
  "./components/Badge": "./dist/components/Badge/index.mjs",
205
211
  "./components/Banner": "./dist/components/Banner/index.mjs",
212
+ "./components/BottomPanel": "./dist/components/BottomPanel/index.mjs",
206
213
  "./components/Breadcrumbs": "./dist/components/Breadcrumbs/index.mjs",
207
214
  "./components/Button": "./dist/components/Button/index.mjs",
208
215
  "./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
@@ -220,6 +227,7 @@
220
227
  "./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
221
228
  "./components/FormControl": "./dist/components/FormControl/index.mjs",
222
229
  "./components/FormField": "./dist/components/FormField/index.mjs",
230
+ "./components/Grid": "./dist/components/Grid/index.mjs",
223
231
  "./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
224
232
  "./components/ImageTile": "./dist/components/ImageTile/index.mjs",
225
233
  "./components/Input": "./dist/components/Input/index.mjs",
@@ -238,6 +246,7 @@
238
246
  "./components/ProgressIndicator": "./dist/components/ProgressIndicator/index.mjs",
239
247
  "./components/Radio": "./dist/components/Radio/index.mjs",
240
248
  "./components/RadioGroup": "./dist/components/RadioGroup/index.mjs",
249
+ "./components/RightPanel": "./dist/components/RightPanel/index.mjs",
241
250
  "./components/SegmentedControl": "./dist/components/SegmentedControl/index.mjs",
242
251
  "./components/Select": "./dist/components/Select/index.mjs",
243
252
  "./components/Slider": "./dist/components/Slider/index.mjs",
@@ -260,6 +269,7 @@
260
269
  "./lib/comboboxHelper": "./dist/lib/comboboxHelper.mjs",
261
270
  "./lib/ConfigContext": "./dist/lib/ConfigContext.mjs",
262
271
  "./lib/copyTextToClipboard": "./dist/lib/copyTextToClipboard.mjs",
272
+ "./lib/date-filter": "./dist/lib/date-filter/index.mjs",
263
273
  "./lib/datePickerHelper": "./dist/lib/datePickerHelper.mjs",
264
274
  "./lib/embeddedSurfaceProtocol": "./dist/lib/embeddedSurfaceProtocol.mjs",
265
275
  "./lib/embeddedSurfaceRegistry": "./dist/lib/embeddedSurfaceRegistry.mjs",
@@ -277,6 +287,7 @@
277
287
  "./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
278
288
  "./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
279
289
  "./lib/useOutsideClick": "./dist/lib/useOutsideClick.mjs",
290
+ "./lib/useResizablePanel": "./dist/lib/useResizablePanel.mjs",
280
291
  "./lib/useScrollOverflow": "./dist/lib/useScrollOverflow.mjs",
281
292
  "./lib/zindex": "./dist/lib/zindex.mjs",
282
293
  "./mixins/focus": "./dist/mixins/focus.mjs",
@@ -286,6 +297,7 @@
286
297
  "./mixins/print": "./dist/mixins/print/index.mjs",
287
298
  "./mixins/text": "./dist/mixins/text.mjs",
288
299
  "./patterns/LayoutLoadingShimmer": "./dist/patterns/LayoutLoadingShimmer/index.mjs",
300
+ "./patterns/LayoutLoadingSpinner": "./dist/patterns/LayoutLoadingSpinner/index.mjs",
289
301
  "./patterns/PageLayout": "./dist/patterns/PageLayout/index.mjs",
290
302
  "./theme": "./dist/theme.mjs",
291
303
  "./utils/storybook": "./dist/utils/storybook.mjs",
@@ -1,212 +1,75 @@
1
- # Component Patterns & Props Reference
1
+ # Components
2
+
3
+ Which PDS component to use, and for what. For usage guidance and additional code examples, see
4
+ that component's `.mdx` beside its source under `front-end/design-system/components/` when one
5
+ exists. If there is no `.mdx`, use the published type declarations
6
+ (`dist/components/<Name>/index.d.mts`).
7
+
8
+
9
+ | Component | Use for | Import |
10
+ | --------- | ------- | ------ |
11
+ | `Attribute` | Labeling a data value (`<dl>`/`<dt>`/`<dd>`). Use `AttributeGrid` for a grid of them | `@persona/design-system/components/Attribute` |
12
+ | `Badge` | Count badge — a count or notification number | `@persona/design-system/components/Badge` |
13
+ | `Banner` | Alert / notification — important in-context info, success, warning, or danger. Optionally dismissable | `@persona/design-system/components/Banner` |
14
+ | `BottomPanel` | Resizable tabbed drawer anchored to the bottom of the page (e.g. logs, errors). Use `RightPanel` for a side panel | `@persona/design-system/components/BottomPanel` |
15
+ | `Breadcrumbs` | Showing where the user is in a hierarchy and navigating to ancestors | `@persona/design-system/components/Breadcrumbs` |
16
+ | `Button` | Triggering an action. Use `IconButton` when there is no label | `@persona/design-system/components/Button` |
17
+ | `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` |
18
+ | `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` |
19
+ | `Checkbox` | Selecting one or more options from a visible list | `@persona/design-system/components/Checkbox` |
20
+ | `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` |
21
+ | `ConfigFormGroup` | Form fields — spacing a group of config fields and setting `configField` via context. Pair with `TextField` / `TextAreaField` | `@persona/design-system/components/ConfigFormGroup` |
22
+ | `Container`, `Section`, `Backdrop` | Page shell | `@persona/design-system/patterns/PageLayout` |
23
+ | `DataTable` | Data table — browsing tabular data with filtering, bulk actions, search, pagination, and sorting | `@persona/design-system/components/DataTable` |
24
+ | `DatePicker` | Picking a date or date range from a calendar | `@persona/design-system/components/DatePicker` |
25
+ | `DropdownButton` | Opening a menu of related actions from a button | `@persona/design-system/components/DropdownButton` |
26
+ | `DropdownMenu` | Showing a temporary action list on a custom trigger | `@persona/design-system/components/DropdownMenu` |
27
+ | `FormControl` | Building a custom labeled field (label + helper/error/warning) when `FormField` is too rigid | `@persona/design-system/components/FormControl` |
28
+ | `FormField` | Giving an input a label, helper, and error/warning. Use this or a `*Field` wrapper (`TextField`, `TextAreaField`) for form fields — unlabeled controls (search, toolbars) can stay as `Input` | `@persona/design-system/components/FormField` |
29
+ | `HoverCopyableField` | Letting the user copy a value on hover. Optional `onCopySuccess` skips Copied so the host owns post-copy UX | `@persona/design-system/components/HoverCopyableField` |
30
+ | `HStack` | Flex row — laying out children horizontally with token spacing | `@persona/design-system/components/Stack` |
31
+ | `ImageTile` | Showing a thumbnail in a gallery or grid | `@persona/design-system/components/ImageTile` |
32
+ | `IconButton` | Icon-only button — triggering an icon-only action | `@persona/design-system/components/Button` |
33
+ | `Input` | Text input — a single line of text without a form label. In forms, use `TextField` | `@persona/design-system/components/Input` |
34
+ | `Link` | Navigating to another page or resource. External links need the external-link icon | `@persona/design-system/components/Link` |
35
+ | `ListBox` | Dynamic list — a visible, always-open list of items (select, add, delete, reorder). Unlike `Combobox`, it is not a collapsed search field — the list stays on the page | `@persona/design-system/components/ListBox` |
36
+ | `LoadingShimmer` | Filling space while content loads | `@persona/design-system/components/LoadingShimmer` |
37
+ | `MaskedInput` | Entering structured text (phone, SSN, etc.) | `@persona/design-system/components/MaskedInput` |
38
+ | `MatchHighlight` | Highlighting how strongly children match | `@persona/design-system/components/MatchHighlight` |
39
+ | `Menu` | Rendering a vertical list of actions (styled only). Use `DropdownMenu` when it needs a trigger | `@persona/design-system/components/Menu` |
40
+ | `Modal` | Focusing the user on a task or confirmation behind a page overlay (e.g. delete confirm, short form submit) | `@persona/design-system/components/Modal` |
41
+ | `PageHeader` | Page title bar — optional subtitle, breadcrumbs, and actions | `@persona/design-system/components/PageHeader` |
42
+ | `Pagination` | Moving between pages and changing page size | `@persona/design-system/components/Pagination` |
43
+ | `Pii` | Showing a value, or a “Redacted” sticker when PII is hidden | `@persona/design-system/components/Pii` |
44
+ | `Popover` | Floating panel — extra content or controls anchored to a trigger, without leaving the page | `@persona/design-system/components/Popover` |
45
+ | `ProgressBar` | Showing linear progress (determinate or indeterminate) | `@persona/design-system/components/ProgressBar` |
46
+ | `ProgressIndicator` | Showing progress through a sequence of steps | `@persona/design-system/components/ProgressIndicator` |
47
+ | `Radio` | Picking one visible option. Prefer `RadioGroup` to manage the set | `@persona/design-system/components/Radio` |
48
+ | `RadioGroup` | Grouping two or more mutually exclusive `Radio`s and owning the selected value | `@persona/design-system/components/RadioGroup` |
49
+ | `RightPanel` | Complementary side panel for contextual updates while the page stays interactive (no overlay). Use `Modal` when the task needs full attention. See [Panels](../../patterns/Panels/Panels.mdx) | `@persona/design-system/components/RightPanel` |
50
+ | `SegmentedControl` | Picking one option from a compact set of mutually exclusive choices | `@persona/design-system/components/SegmentedControl` |
51
+ | `Select` | Dropdown — picking one value from a short, known list with no search. Use `Combobox` when the list needs search | `@persona/design-system/components/Select` |
52
+ | `Slider` | Picking a numeric value or range along a scale | `@persona/design-system/components/Slider` |
53
+ | `Spacer` | Prefer `Stack` — leftover gap helper | `@persona/design-system/components/Spacer` |
54
+ | `Spinner` | Showing that something is loading | `@persona/design-system/components/Spinner` |
55
+ | `Stack` | Flex column — laying out children vertically with token spacing | `@persona/design-system/components/Stack` |
56
+ | `StatusIndicator` | Showing a named status (open, pending, completed, failed, …) | `@persona/design-system/components/StatusIndicator` |
57
+ | `Sticker` | Status badge — tagging nearby content with status or label metadata | `@persona/design-system/components/Sticker` |
58
+ | `SwatchPicker` | Picking a color from a swatch list. Wrap with `FormField` | `@persona/design-system/components/SwatchPicker` |
59
+ | `TabBar`, `Tab` | Tabs — switching between related views or content sections | `@persona/design-system/components/TabBar` |
60
+ | `Table` | Displaying rows and columns with sticky headers, sort, and checkbox selection. Use `DataTable` when you need filtering, bulk actions, or search | `@persona/design-system/components/Table` |
61
+ | `TableBox` | Editable / form table — a small form-adjacent table (inline edit, add/delete, reorder) | `@persona/design-system/components/TableBox` |
62
+ | `TableLayout` | Table with loading/empty states; compose rows from `Table` primitives (`TableRow`, `TableCell`, `TableHeaderCell`) | `@persona/design-system/components/Table` |
63
+ | `TechnicalSticker` | Displaying a monospace ID or field key (middle-truncated) | `@persona/design-system/components/TechnicalSticker` |
64
+ | `Heading`, `Paragraph`, `Label` | Heading text, body text, and form labels (`Display`, `Span`, `TabularNumber` too). There is no `<Text>` component | `@persona/design-system/components/Text` |
65
+ | `TextArea` | Text input — multiple lines without a form label. In forms, use `TextAreaField` | `@persona/design-system/components/TextArea` |
66
+ | `TextField` | Entering a labeled single line of text in a form. Prefer over bare `Input` | `@persona/design-system/components/FormField` |
67
+ | `TextUnderlineTooltip` | Tooltip on a label — dashed underline. Never put an info icon next to the label | `@persona/design-system/components/Tooltip` |
68
+ | `Tile` | Showing a labeled metric, with optional sticker and metadata | `@persona/design-system/components/Tile` |
69
+ | `Toast` | Confirming a system event or action result that can auto-dismiss | `@persona/design-system/components/Toast` |
70
+ | `Toggle` | Turning a setting on or off with no extra confirmation | `@persona/design-system/components/Toggle` |
71
+ | `Tooltip` | Standalone tooltip — explaining an icon or control on hover or focus | `@persona/design-system/components/Tooltip` |
2
72
 
3
- ## Form Configuration
4
-
5
- ```tsx
6
- import ConfigFormGroup from '@persona/design-system/components/ConfigFormGroup';
7
- import { TextField, TextAreaField } from '@persona/design-system/components/FormField';
8
-
9
- const [config, setConfig] = useState({ name: '', description: '', prompt: '' });
10
-
11
- <ConfigFormGroup>
12
- <TextField
13
- label="Name"
14
- value={config.name}
15
- onChange={(e) => setConfig({ ...config, name: e.target.value })}
16
- configField={true} // helperText becomes a tooltip
17
- helperText="Unique identifier"
18
- errorText={errors.name}
19
- rightActions={<Button size="sm" variant="basic">Generate</Button>}
20
- />
21
- <TextAreaField
22
- label="Prompt"
23
- value={config.prompt}
24
- onChange={(e) => setConfig({ ...config, prompt: e.target.value })}
25
- configField={true}
26
- warningText={warnings.prompt}
27
- />
28
- </ConfigFormGroup>
29
- ```
30
-
31
- - `configField={true}` → helper text becomes a tooltip instead of inline text
32
- - `ConfigFormGroup` provides consistent 20px spacing between fields
33
- - Use controlled inputs; clear `errorText` on change via `updateField` in form state hook
34
-
35
- ## Form State Hook
36
-
37
- ```tsx
38
- const useFormState = (initialConfig) => {
39
- const [config, setConfig] = useState(initialConfig);
40
- const [errors, setErrors] = useState({});
41
-
42
- const updateField = useCallback((field, value) => {
43
- setConfig(prev => ({ ...prev, [field]: value }));
44
- setErrors(prev => { const next = { ...prev }; delete next[field]; return next; });
45
- }, []);
46
-
47
- const validate = useCallback(() => {
48
- const newErrors = {};
49
- if (!config.name) newErrors.name = 'Required';
50
- setErrors(newErrors);
51
- return Object.keys(newErrors).length === 0;
52
- }, [config]);
53
-
54
- return { config, errors, updateField, validate };
55
- };
56
- ```
57
-
58
- ## Dynamic List (ListBox)
59
-
60
- ```tsx
61
- import { ListBox } from '@persona/design-system/components/ListBox';
62
-
63
- <ListBox
64
- items={items}
65
- selectedKeys={selectedKeys}
66
- onSelectionChange={setSelectedKeys}
67
- onAdd={() => setItems([...items, { id: uuid(), name: 'New' }])}
68
- onDelete={(keys) => setItems(items.filter(i => !keys.has(i.id)))}
69
- selectionMode="multiple"
70
- emptyText="No items"
71
- >
72
- {items.map(item => (
73
- <ListBox.Item key={item.id}>{item.name}</ListBox.Item>
74
- ))}
75
- </ListBox>
76
- ```
77
-
78
- Drag-drop reordering: add `reorderConfig={{ onReorder: (items) => void, dragIcon: ReactNode }}`.
79
-
80
- ## Editable Table (TableBox)
81
-
82
- Use `TableBox` for **small, form-adjacent tables** — config editors, field mappings, inline-editable row lists. Use `DataTable` for **data views** with pagination, sorting, and server-side data.
83
-
84
- ```tsx
85
- import TableBox from '@persona/design-system/components/TableBox';
86
-
87
- const columns = [
88
- { key: 'name', title: 'Name' },
89
- { key: 'type', title: 'Type' },
90
- ];
91
-
92
- <TableBox columns={columns} aria-label='File list' selectionMode='none'>
93
- {items.map((item) => (
94
- <TableBox.Row key={item.id} id={item.id} onDelete={() => removeItem(item.id)}>
95
- <TableBox.Cell>{item.name}</TableBox.Cell>
96
- <TableBox.Cell>{item.type}</TableBox.Cell>
97
- </TableBox.Row>
98
- ))}
99
- </TableBox>
100
- ```
101
-
102
- - `aria-label` is **required**
103
- - Rows are composed via `TableBox.Row` + `TableBox.Cell` children (not an `items` prop)
104
- - Row actions: pass `actions={[{ label, onClick }]}` or `onDelete` on `TableBox.Row`
105
- - Drag-drop reordering: `reorderConfig={{ items, itemKeyPath: 'id', onReorder }}`
106
- - Empty state: `emptyText`; pass `onCreateNewRow` to make the message a clickable "add row" button
107
- - `onCreateNewRow` also fires after Enter on the **last cell of the last row** (single-line text inline edit only)
108
-
109
- ### Inline editing
110
-
111
- Declare `inlineEditConfig` on column definitions; pass `columnKey`, `itemId`, and `value` on each cell:
112
-
113
- ```tsx
114
- const columns = [
115
- {
116
- key: 'name',
117
- title: 'Name',
118
- inlineEditConfig: { type: 'text', onChange: (id, value) => updateField(id, 'name', value) },
119
- },
120
- {
121
- key: 'role',
122
- title: 'Role',
123
- inlineEditConfig: {
124
- type: 'combobox',
125
- options: roleOptions,
126
- onChange: (id, value) => updateField(id, 'role', value),
127
- },
128
- },
129
- ];
130
-
131
- <TableBox columns={columns} aria-label='Editable users'>
132
- {users.map((user) => (
133
- <TableBox.Row key={user.id} id={user.id}>
134
- <TableBox.Cell columnKey='name' itemId={user.id} value={user.name} errorText={errors[user.id]?.name}>
135
- {user.name}
136
- </TableBox.Cell>
137
- <TableBox.Cell columnKey='role' itemId={user.id} value={user.role}>
138
- {roleLabel(user.role)}
139
- </TableBox.Cell>
140
- </TableBox.Row>
141
- ))}
142
- </TableBox>
143
- ```
144
-
145
- - Inline editing forces fixed-width layout (no horizontal scroll) automatically
146
- - Cell/row validation: pass `errorText` on `TableBox.Cell` or `TableBox.Row`
147
- - For adding rows from a form field, prefer `TableBoxField` (below) over bare `onCreateNewRow`
148
-
149
- ### Form field wrapper (TableBoxField)
150
-
151
- Use inside `ConfigFormGroup` when the table needs a label, add/delete toolbar, and row creation:
152
-
153
- ```tsx
154
- import { TableBoxField } from '@persona/design-system/components/FormField';
155
-
156
- <TableBoxField
157
- label='Case actions'
158
- labelProps={{ size: 'md' }} // defaults to 'sm'; match sibling ControlPanel labels
159
- columns={columns}
160
- createNewRow={() => addRow()}
161
- onDelete={(selectedKey) => removeRow(selectedKey)}
162
- selectionMode='single'
163
- >
164
- {rows.map((row) => (
165
- <TableBoxField.Row key={row.id} id={row.id}>
166
- <TableBoxField.Cell columnKey='key' itemId={row.id} value={row.key}>
167
- {row.key}
168
- </TableBoxField.Cell>
169
- </TableBoxField.Row>
170
- ))}
171
- </TableBoxField>
172
- ```
173
-
174
- `TableBoxField.Row` and `TableBoxField.Cell` are aliases for `TableBox.Row` / `TableBox.Cell`.
175
-
176
- ## Collapsible Sections (Card)
177
-
178
- ```tsx
179
- import { Card } from '@persona/design-system/components/CardV2';
180
-
181
- <Card>
182
- <Card.Section header="Basic Settings" collapsible={true} defaultCollapsed={false}>
183
- {/* Content */}
184
- </Card.Section>
185
- <Card.Section header="Advanced" collapsible={true}>
186
- {/* Content */}
187
- </Card.Section>
188
- </Card>
189
- ```
190
-
191
- ## Modal
192
-
193
- ```tsx
194
- import { Modal } from '@persona/design-system/components/Modal';
195
-
196
- <Modal
197
- isOpen={isOpen}
198
- onClose={() => setIsOpen(false)}
199
- title="Add Tools"
200
- footer={
201
- <>
202
- <Button variant="basic" onClick={() => setIsOpen(false)}>Cancel</Button>
203
- <Button variant="primary" onClick={handleSave}>Save</Button>
204
- </>
205
- }
206
- >
207
- {/* Content */}
208
- </Modal>
209
- ```
210
73
 
211
74
  ## Testing
212
75
 
@@ -232,100 +95,3 @@ it('shows validation errors', async () => {
232
95
  - Prefer `userEvent.type()` over `fireEvent.change()`
233
96
  - Use `waitFor()` for async state updates
234
97
  - Prefer `getByRole`, `getByLabelText`, `getByText` over `getByTestId`
235
-
236
- ## Props Reference
237
-
238
- ### TextField / TextAreaField
239
- - `label` — field label
240
- - `value` / `onChange` — controlled input
241
- - `helperText` — help text (tooltip if `configField={true}`)
242
- - `errorText` — error message (red)
243
- - `warningText` — warning message (yellow)
244
- - `configField` — boolean, renders helper as tooltip
245
- - `rightActions` — ReactNode for buttons/icons next to label
246
- - `disabled` — boolean
247
-
248
- ### ListBox
249
- - `items` — array of items
250
- - `selectedKeys` / `onSelectionChange` — controlled selection (`Set<string>`)
251
- - `selectionMode` — `"single"` | `"multiple"` | `"none"`
252
- - `onAdd` — add button callback
253
- - `onDelete` — delete callback (receives `Set<string>` of keys)
254
- - `reorderConfig` — `{ onReorder: (items) => void, dragIcon: ReactNode }`
255
- - `emptyText` — shown when no items
256
-
257
- ### TableBox
258
- - `columns` — `{ key, title, inlineEditConfig? }[]` (required)
259
- - `aria-label` — accessible table name (required)
260
- - `emptyText` — shown when no rows
261
- - `selectionMode` — `"single"` | `"none"` (default `"none"`)
262
- - `selectedKey` / `onSelectionChange` / `defaultSelectedKey` — row selection
263
- - `onCreateNewRow` — makes empty state clickable; fires after Enter on last cell of last row (single-line text)
264
- - `newRowId` — auto-opens inline edit on the first column of the new row
265
- - `disabled` — view-only; blocks edits, delete, and reorder
266
- - `reorderConfig` — `{ items, itemKeyPath, onReorder }` for drag-drop row reorder
267
- - `disableHorizontalScroll` — fixed-width/truncating layout (auto when any column has `inlineEditConfig`)
268
- - `hideHeader` — hide column headers (e.g. single-column tables under a `FormField` label)
269
-
270
- #### TableBox.Row
271
- - `id` — row identifier (required)
272
- - `actions` — `[{ label, onClick }]` dropdown menu items
273
- - `onDelete` — renders row delete button
274
- - `errorText` — row-wide validation error (shown in first cell)
275
- - `dropdownFormFields` / `dropdownContent` / `dropdownHeadingText` / `dropdownFooter` — expandable row popover (requires `selectionMode='single'`; opens when row is selected)
276
-
277
- #### TableBox.Cell
278
- - `columnKey` / `itemId` / `value` — required for inline editing
279
- - `errorText` — cell validation error
280
- - `inlineEditConfigOverride` — per-cell override of column `inlineEditConfig`
281
-
282
- #### TableBoxField (extends TableBox + FormField)
283
- - `label`, `helperText`, `errorText`, `warningText`, `configField` — standard form field props
284
- - `createNewRow` — returns new row id; wires add button and empty state
285
- - `onAdd` — alternative add handler (when not using `createNewRow`)
286
- - `onDelete` — deletes the currently selected row
287
- - `actions` — toolbar dropdown actions (receives `selectedKey`)
288
- - `addDropdownConfig` — `{ options, onSelection }` for add-menu instead of direct add
289
-
290
- ### Card / Card.Section
291
- - `collapsible` — boolean
292
- - `defaultCollapsed` — boolean
293
- - `header` — section header text
294
- - `loading` — boolean
295
- - `empty` — boolean
296
-
297
- ### Stack / HStack
298
- - `spacing` — spacing value (default: `Spacing[2]`)
299
- - `align` — `"start"` | `"center"` | `"end"` | `"stretch"`
300
- - `justify` — `"start"` | `"center"` | `"end"` | `"space-between"`
301
- - `wrap` — boolean
302
- - `fullWidth` — boolean
303
-
304
- ### Modal
305
- - `isOpen` / `onClose` — controlled open state
306
- - `title` — modal title
307
- - `footer` — footer content (ReactNode)
308
-
309
- ### Sticker
310
- - `variant` — `"blue"` | `"teal"` | `"green"` | `"yellow"` | `"orange"` | `"red"` | `"purple"` | `"darkGrey"` | `"white"` | `"success"` | `"danger"` | `"caution"` | `"basic"` | `"grey"`
311
- - `icon` — optional icon component (use 12px icons)
312
- - `onDismiss` — dismiss button callback
313
- - `required` — boolean, shows asterisk
314
-
315
- ## Key File Paths
316
-
317
- - `@persona/design-system/components/ConfigFormGroup/ConfigFormGroup.tsx`
318
- - `@persona/design-system/components/FormField/FormField.tsx`
319
- - `@persona/design-system/components/Input/Input.tsx`
320
- - `@persona/design-system/components/TextArea/TextArea.tsx`
321
- - `@persona/design-system/components/ListBox/ListBox.tsx`
322
- - `@persona/design-system/components/TableBox/TableBox.tsx`
323
- - `@persona/design-system/components/FormField/TableBoxField.tsx`
324
- - `@persona/design-system/components/CardV2/Card.tsx`
325
- - `@persona/design-system/components/Stack/Stack.tsx`
326
- - `@persona/design-system/components/Text/` (Heading, Paragraph, Label)
327
- - `@persona/design-system/components/Sticker/Sticker.tsx`
328
- - `@persona/design-system/components/Modal/Modal.tsx`
329
- - `@persona/design-system/components/Popover/Popover.tsx`
330
- - `@persona/design-system/utils/testing.tsx`
331
- - `@persona/design-system/components/DataTable/`