@persona/design-system 0.1.8 → 0.1.9

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 (708) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +20 -1
  3. package/dist/Attribute.d.mts +1 -1
  4. package/dist/{Badge-DortWowZ.mjs → Badge-DEVbRlJX.mjs} +2 -2
  5. package/dist/{Badge-DortWowZ.mjs.map → Badge-DEVbRlJX.mjs.map} +1 -1
  6. package/dist/{Breadcrumbs-CDZ_Mrcg.mjs → Breadcrumbs-W8hIhdHD.mjs} +3 -3
  7. package/dist/{Breadcrumbs-CDZ_Mrcg.mjs.map → Breadcrumbs-W8hIhdHD.mjs.map} +1 -1
  8. package/dist/{Button-9p469xA1.d.mts → Button-Vd5O4DUp.d.mts} +3 -3
  9. package/dist/Button.d.mts +1 -1
  10. package/dist/CalendarBase.d.mts +1 -1
  11. package/dist/{CardV2-C9z0Hr-c.mjs → CardV2-C0fcOUdp.mjs} +5 -5
  12. package/dist/{CardV2-C9z0Hr-c.mjs.map → CardV2-C0fcOUdp.mjs.map} +1 -1
  13. package/dist/{Checkbox-B0bjZbji.mjs → Checkbox-BcuiFvK7.mjs} +2 -2
  14. package/dist/{Checkbox-B0bjZbji.mjs.map → Checkbox-BcuiFvK7.mjs.map} +1 -1
  15. package/dist/{Combobox-BdqU5WLG.mjs → Combobox-B6JyLog8.mjs} +13 -7
  16. package/dist/Combobox-B6JyLog8.mjs.map +1 -0
  17. package/dist/{Combobox-DBWMHwUt.d.cts → Combobox-BaD0f2Du.d.mts} +3 -3
  18. package/dist/Combobox.d.mts +2 -2
  19. package/dist/{ComboboxBase-BsY7CYoB.d.mts → ComboboxBase-BsPf8BZh.d.mts} +8 -3
  20. package/dist/ComboboxBase.d.mts +1 -1
  21. package/dist/{ComboboxMultiSelect-dNuETspL.d.mts → ComboboxMultiSelect-DhLzCWbz.d.mts} +2 -2
  22. package/dist/ComboboxMultiSelect.d.mts +1 -1
  23. package/dist/{ComboboxSingleSelect-C8KvIJ43.d.mts → ComboboxSingleSelect-P0r5rs_u.d.mts} +3 -3
  24. package/dist/ComboboxSingleSelect.d.mts +1 -1
  25. package/dist/DataTable.d.mts +9 -0
  26. package/dist/{DatePicker-DY1YA_Fu.mjs → DatePicker-Bw79p-Lx.mjs} +5 -5
  27. package/dist/{DatePicker-DY1YA_Fu.mjs.map → DatePicker-Bw79p-Lx.mjs.map} +1 -1
  28. package/dist/{DropdownButton-DKLjJylQ.mjs → DropdownButton-BI3IFJun.mjs} +3 -3
  29. package/dist/{DropdownButton-DKLjJylQ.mjs.map → DropdownButton-BI3IFJun.mjs.map} +1 -1
  30. package/dist/DropdownButton.d.mts +2 -2
  31. package/dist/{DropdownMenu-DGYexb7s.mjs → DropdownMenu-D25WBCah.mjs} +2 -2
  32. package/dist/{DropdownMenu-DGYexb7s.mjs.map → DropdownMenu-D25WBCah.mjs.map} +1 -1
  33. package/dist/{DropdownMenu-CVPanvKA.d.mts → DropdownMenu-D6nfAsi0.d.mts} +2 -2
  34. package/dist/DropdownMenu.d.mts +1 -1
  35. package/dist/{FormControl-B28qa7aQ.mjs → FormControl-CFU9uKF7.mjs} +2 -2
  36. package/dist/{FormControl-B28qa7aQ.mjs.map → FormControl-CFU9uKF7.mjs.map} +1 -1
  37. package/dist/{FormField-PeYYRO4s.mjs → FormField-DdmgSWq4.mjs} +14 -11
  38. package/dist/{FormField-PeYYRO4s.mjs.map → FormField-DdmgSWq4.mjs.map} +1 -1
  39. package/dist/{HoverCopyableField-ClXBg_ld.mjs → HoverCopyableField-7TWP0Y1Z.mjs} +3 -3
  40. package/dist/{HoverCopyableField-ClXBg_ld.mjs.map → HoverCopyableField-7TWP0Y1Z.mjs.map} +1 -1
  41. package/dist/{IconButton-ZcyTFjPn.d.cts → IconButton-BHCmHIx5.d.mts} +2 -2
  42. package/dist/{IconButton-CIWiEsS-.mjs → IconButton-P8w0JDI5.mjs} +2 -2
  43. package/dist/{IconButton-CIWiEsS-.mjs.map → IconButton-P8w0JDI5.mjs.map} +1 -1
  44. package/dist/IconButton.d.mts +1 -1
  45. package/dist/InlineCombobox.d.mts +1 -1
  46. package/dist/InlineInput.d.mts +1 -1
  47. package/dist/{Input-BPClVzwD.d.mts → Input-DMgVyZyq.d.mts} +3 -3
  48. package/dist/{Input-BFI_e7aU.mjs → Input-QC6xla6I.mjs} +2 -2
  49. package/dist/Input-QC6xla6I.mjs.map +1 -0
  50. package/dist/Input.d.mts +1 -1
  51. package/dist/{ListBox-_fcSPynx.d.mts → ListBox-D09N1a5D.d.mts} +8 -3
  52. package/dist/{ListBox-BwID8jpk.mjs → ListBox-TrL3Tb7X.mjs} +13 -7
  53. package/dist/ListBox-TrL3Tb7X.mjs.map +1 -0
  54. package/dist/ListBox.d.mts +1 -1
  55. package/dist/ListBoxField.d.mts +2 -2
  56. package/dist/{LogicRow-BtCKGX_j.d.mts → LogicRow-BcuiSTHN.d.mts} +2 -2
  57. package/dist/LogicRow.d.mts +1 -1
  58. package/dist/MaskedInput.d.mts +1 -1
  59. package/dist/{Menu-CUp_9HgC.d.mts → Menu-Bv8dsrz6.d.mts} +2 -2
  60. package/dist/{Menu-CPYXo61N.mjs → Menu-DmeMgN-i.mjs} +2 -2
  61. package/dist/{Menu-CPYXo61N.mjs.map → Menu-DmeMgN-i.mjs.map} +1 -1
  62. package/dist/Menu.d.mts +1 -1
  63. package/dist/Modal.d.mts +1 -1
  64. package/dist/{PageHeader-D-6W61E_.mjs → PageHeader-jSLud2JI.mjs} +5 -4
  65. package/dist/PageHeader-jSLud2JI.mjs.map +1 -0
  66. package/dist/PageHeader.d.mts +7 -2
  67. package/dist/{Pagination-ztqhywAP.mjs → Pagination-BeYukNCj.mjs} +4 -4
  68. package/dist/{Pagination-ztqhywAP.mjs.map → Pagination-BeYukNCj.mjs.map} +1 -1
  69. package/dist/{Pii-DrrtEz7U.mjs → Pii-QsTrz8wn.mjs} +2 -2
  70. package/dist/{Pii-DrrtEz7U.mjs.map → Pii-QsTrz8wn.mjs.map} +1 -1
  71. package/dist/{Select-2KbtKawr.d.mts → Select-Bk27TgN8.d.mts} +2 -2
  72. package/dist/{Select-cPEORy70.mjs → Select-C1ZoRk39.mjs} +4 -4
  73. package/dist/{Select-cPEORy70.mjs.map → Select-C1ZoRk39.mjs.map} +1 -1
  74. package/dist/Select.d.mts +1 -1
  75. package/dist/{Sticker-DbqKLe33.mjs → Sticker-CyGb9dEu.mjs} +2 -2
  76. package/dist/{Sticker-DbqKLe33.mjs.map → Sticker-CyGb9dEu.mjs.map} +1 -1
  77. package/dist/Tab.d.mts +13 -4
  78. package/dist/{TabBar-zSA8kyE6.mjs → TabBar-Bn8PHHBZ.mjs} +15 -9
  79. package/dist/TabBar-Bn8PHHBZ.mjs.map +1 -0
  80. package/dist/TabBarIconButton.d.mts +1 -1
  81. package/dist/{Table-D8IcpACv.mjs → Table-BfontAeY.mjs} +7 -5
  82. package/dist/{Table-D8IcpACv.mjs.map → Table-BfontAeY.mjs.map} +1 -1
  83. package/dist/{TableBox-luasMC73.mjs → TableBox-bmrKh_ax.mjs} +86 -35
  84. package/dist/TableBox-bmrKh_ax.mjs.map +1 -0
  85. package/dist/TableBox.d.mts +1 -1
  86. package/dist/{TableBoxCell-By1xE6_Q.d.mts → TableBoxCell-CvjLYhTV.d.mts} +21 -7
  87. package/dist/TableBoxCell.d.mts +1 -1
  88. package/dist/TableBoxField.d.mts +7 -4
  89. package/dist/{TableBoxRow-CsRPRPQ-.d.mts → TableBoxRow-BzXECgid.d.mts} +2 -2
  90. package/dist/TableBoxRow.d.mts +1 -1
  91. package/dist/{TableBoxRowActions-DMYOI8Do.d.mts → TableBoxRowActions-BAiFXiCh.d.mts} +2 -2
  92. package/dist/TableBoxRowActions.d.mts +1 -1
  93. package/dist/{TableControls-DHMs7o58.mjs → TableControls-DVTtNAPo.mjs} +11 -11
  94. package/dist/{TableControls-DHMs7o58.mjs.map → TableControls-DVTtNAPo.mjs.map} +1 -1
  95. package/dist/{TableLayout-Ct0kepcA.d.cts → TableLayout-BZeP8qfg.d.mts} +7 -1
  96. package/dist/TableLayout.d.mts +1 -1
  97. package/dist/{Tooltip-C6AR1xT-.mjs → Tooltip-BvDbmXak.mjs} +2 -2
  98. package/dist/{Tooltip-C6AR1xT-.mjs.map → Tooltip-BvDbmXak.mjs.map} +1 -1
  99. package/dist/components/Attribute/index.mjs +3 -3
  100. package/dist/components/Badge/index.mjs +1 -1
  101. package/dist/components/Banner/index.mjs +1 -1
  102. package/dist/components/Breadcrumbs/index.mjs +1 -1
  103. package/dist/components/Button/index.d.mts +2 -2
  104. package/dist/components/Button/index.mjs +1 -1
  105. package/dist/components/ButtonGroup/index.mjs +1 -1
  106. package/dist/components/CardV2/index.mjs +1 -1
  107. package/dist/components/Checkbox/index.mjs +1 -1
  108. package/dist/components/Combobox/index.d.mts +2 -2
  109. package/dist/components/Combobox/index.mjs +1 -1
  110. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  111. package/dist/components/DataTable/index.mjs +14 -12
  112. package/dist/components/DataTable/index.mjs.map +1 -1
  113. package/dist/components/DataTable/types.d.mts +1 -1
  114. package/dist/components/DatePicker/index.mjs +1 -1
  115. package/dist/components/DropdownButton/index.mjs +1 -1
  116. package/dist/components/DropdownMenu/index.d.mts +1 -1
  117. package/dist/components/DropdownMenu/index.mjs +1 -1
  118. package/dist/components/FormControl/index.mjs +1 -1
  119. package/dist/components/FormField/index.d.mts +2 -2
  120. package/dist/components/FormField/index.mjs +2 -2
  121. package/dist/components/HoverCopyableField/index.mjs +1 -1
  122. package/dist/components/ImageTile/index.mjs +4 -4
  123. package/dist/components/Input/index.d.mts +1 -1
  124. package/dist/components/Input/index.mjs +1 -1
  125. package/dist/components/ListBox/index.d.mts +3 -3
  126. package/dist/components/ListBox/index.mjs +1 -1
  127. package/dist/components/MaskedInput/index.mjs +1 -1
  128. package/dist/components/Menu/index.d.mts +1 -1
  129. package/dist/components/Menu/index.mjs +1 -1
  130. package/dist/components/Modal/index.mjs +2 -2
  131. package/dist/components/PageHeader/index.mjs +1 -1
  132. package/dist/components/Pagination/index.mjs +1 -1
  133. package/dist/components/Pii/index.mjs +1 -1
  134. package/dist/components/ProgressBar/index.mjs +1 -1
  135. package/dist/components/Select/index.d.mts +1 -1
  136. package/dist/components/Select/index.mjs +1 -1
  137. package/dist/components/Slider/index.mjs +1 -1
  138. package/dist/components/Sticker/index.mjs +1 -1
  139. package/dist/components/TabBar/index.mjs +1 -1
  140. package/dist/components/Table/index.d.mts +1 -1
  141. package/dist/components/Table/index.mjs +1 -1
  142. package/dist/components/TableBox/index.d.mts +1 -1
  143. package/dist/components/TableBox/index.mjs +1 -1
  144. package/dist/components/TechnicalSticker/index.mjs +1 -1
  145. package/dist/components/Tile/index.mjs +2 -2
  146. package/dist/components/Toast/index.mjs +1 -1
  147. package/dist/components/Tooltip/index.mjs +1 -1
  148. package/dist/fieldPickerOptions.d.mts +1 -1
  149. package/dist/{index-IlwGkCAe2.d.mts → index-BxXTpeUb2.d.mts} +4 -3
  150. package/dist/inputFields.d.mts +4 -4
  151. package/dist/layouts/LayoutLoadingShimmer/index.mjs +3 -3
  152. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  153. package/dist/lib/useScrollOverflow.d.mts +7 -0
  154. package/dist/lib/useScrollOverflow.mjs +22 -1
  155. package/dist/lib/useScrollOverflow.mjs.map +1 -1
  156. package/dist/useComboboxFooterAction.d.mts +1 -1
  157. package/dist/useTruncation.d.mts +1 -1
  158. package/package.json +202 -746
  159. package/skills/ui-authoring/COMPONENTS.md +331 -0
  160. package/skills/ui-authoring/EXAMPLES.md +370 -0
  161. package/skills/ui-authoring/REFERENCE.md +293 -0
  162. package/skills/ui-authoring/SKILL.md +237 -0
  163. package/dist/Action-E90Wvqmc.d.cts +0 -35
  164. package/dist/Action.d.cts +0 -2
  165. package/dist/Attribute.d.cts +0 -107
  166. package/dist/AttributeGrid.d.cts +0 -40
  167. package/dist/Badge-ADPloFsd.cjs +0 -38
  168. package/dist/Badge-ADPloFsd.cjs.map +0 -1
  169. package/dist/Badge.d.cts +0 -25
  170. package/dist/Banner.d.cts +0 -48
  171. package/dist/Breadcrumb-VH-Mwo-M.d.cts +0 -44
  172. package/dist/Breadcrumb.d.cts +0 -2
  173. package/dist/Breadcrumbs-BBREROrw.d.cts +0 -26
  174. package/dist/Breadcrumbs-tR49JqAS.cjs +0 -295
  175. package/dist/Breadcrumbs-tR49JqAS.cjs.map +0 -1
  176. package/dist/Breadcrumbs.d.cts +0 -2
  177. package/dist/Button-C_3p5Xfi.d.cts +0 -101
  178. package/dist/Button.d.cts +0 -2
  179. package/dist/ButtonGroup.d.cts +0 -20
  180. package/dist/Calendar.d.cts +0 -11
  181. package/dist/Card-CJPEmUvg.d.cts +0 -52
  182. package/dist/Card-Csz-PxX0.cjs +0 -248
  183. package/dist/Card-Csz-PxX0.cjs.map +0 -1
  184. package/dist/Card.d.cts +0 -2
  185. package/dist/Card2.d.cts +0 -95
  186. package/dist/CardV2-DJXgFomd.cjs +0 -419
  187. package/dist/CardV2-DJXgFomd.cjs.map +0 -1
  188. package/dist/Checkbox-CmCujC1W.cjs +0 -183
  189. package/dist/Checkbox-CmCujC1W.cjs.map +0 -1
  190. package/dist/Checkbox-Cr8ifm10.d.cts +0 -46
  191. package/dist/Checkbox.d.cts +0 -2
  192. package/dist/CheckboxGroupField.d.cts +0 -24
  193. package/dist/Combobox-BdqU5WLG.mjs.map +0 -1
  194. package/dist/Combobox-C99xluaM.d.mts +0 -11
  195. package/dist/Combobox-COXvmxlM.cjs +0 -1877
  196. package/dist/Combobox-COXvmxlM.cjs.map +0 -1
  197. package/dist/Combobox.d.cts +0 -3
  198. package/dist/ComboboxBase-zZ3tE-dH.d.cts +0 -361
  199. package/dist/ComboboxBase.d.cts +0 -2
  200. package/dist/ComboboxMultiSelect-ioB4Jx7_.d.cts +0 -47
  201. package/dist/ComboboxMultiSelect.d.cts +0 -2
  202. package/dist/ComboboxSingleSelect-Fn80tdhz.d.cts +0 -35
  203. package/dist/ComboboxSingleSelect.d.cts +0 -2
  204. package/dist/CompactBar-BEAK55kh.d.cts +0 -21
  205. package/dist/CompactBar.d.cts +0 -2
  206. package/dist/ConfigFormGroup-m5YdVa9n.cjs +0 -35
  207. package/dist/ConfigFormGroup-m5YdVa9n.cjs.map +0 -1
  208. package/dist/ConfigFormGroup.d.cts +0 -7
  209. package/dist/ControlBar-D8CirAyZ.d.cts +0 -151
  210. package/dist/ControlBar.d.cts +0 -2
  211. package/dist/DataTable.d.cts +0 -372
  212. package/dist/DateField.d.cts +0 -23
  213. package/dist/DatePicker-BlCgFb7g.cjs +0 -948
  214. package/dist/DatePicker-BlCgFb7g.cjs.map +0 -1
  215. package/dist/DatePicker.d.cts +0 -19
  216. package/dist/DateRangePicker.d.cts +0 -52
  217. package/dist/DropdownButton-Dl7IEzAc.cjs +0 -32
  218. package/dist/DropdownButton-Dl7IEzAc.cjs.map +0 -1
  219. package/dist/DropdownButton.d.cts +0 -26
  220. package/dist/DropdownMenu-DnlQqTjs.cjs +0 -74
  221. package/dist/DropdownMenu-DnlQqTjs.cjs.map +0 -1
  222. package/dist/DropdownMenu-FkiManPP.d.cts +0 -75
  223. package/dist/DropdownMenu.d.cts +0 -2
  224. package/dist/ErrorProps-Dxqb4gw_.d.cts +0 -8
  225. package/dist/ErrorProps.d.cts +0 -2
  226. package/dist/FieldRegistry-OX60T3hr.d.cts +0 -122
  227. package/dist/FieldRegistry.d.cts +0 -2
  228. package/dist/FilterBar-YzOh02f9.d.cts +0 -103
  229. package/dist/FilterBar.d.cts +0 -2
  230. package/dist/FloatingActionBar.d.cts +0 -40
  231. package/dist/FormControl-DFp_qcW1.d.cts +0 -60
  232. package/dist/FormControl-MkBXuUF6.cjs +0 -212
  233. package/dist/FormControl-MkBXuUF6.cjs.map +0 -1
  234. package/dist/FormControl.d.cts +0 -2
  235. package/dist/FormField-D3XhxTMg.cjs +0 -550
  236. package/dist/FormField-D3XhxTMg.cjs.map +0 -1
  237. package/dist/FormField-idNLw5PW.d.cts +0 -69
  238. package/dist/FormField.d.cts +0 -2
  239. package/dist/Header-C-WhPOin.d.cts +0 -35
  240. package/dist/Header.d.cts +0 -2
  241. package/dist/HelperTooltip-T-sTGGLD.d.cts +0 -20
  242. package/dist/HelperTooltip.d.cts +0 -2
  243. package/dist/HoverCopyableField-CRkM7o4B.cjs +0 -110
  244. package/dist/HoverCopyableField-CRkM7o4B.cjs.map +0 -1
  245. package/dist/HoverCopyableField.d.cts +0 -16
  246. package/dist/IconButton-BSES_-6g.d.mts +0 -24
  247. package/dist/IconButton-nlgjJQCS.cjs +0 -372
  248. package/dist/IconButton-nlgjJQCS.cjs.map +0 -1
  249. package/dist/IconButton.d.cts +0 -2
  250. package/dist/ImageTile.d.cts +0 -60
  251. package/dist/Input-BFI_e7aU.mjs.map +0 -1
  252. package/dist/Input-BM0DzWEf.d.cts +0 -65
  253. package/dist/Input-OJPQ07TW.cjs +0 -209
  254. package/dist/Input-OJPQ07TW.cjs.map +0 -1
  255. package/dist/Input.d.cts +0 -2
  256. package/dist/InputProps-CoVNpQSj.d.cts +0 -16
  257. package/dist/InputProps.d.cts +0 -2
  258. package/dist/Inserter.d.cts +0 -12
  259. package/dist/LayoutLoadingShimmer.d.cts +0 -20
  260. package/dist/Link.d.cts +0 -43
  261. package/dist/ListBox-BP1eaG7L.cjs +0 -448
  262. package/dist/ListBox-BP1eaG7L.cjs.map +0 -1
  263. package/dist/ListBox-BwID8jpk.mjs.map +0 -1
  264. package/dist/ListBox-QaeRQBSC.d.cts +0 -138
  265. package/dist/ListBox.d.cts +0 -2
  266. package/dist/ListBoxField.d.cts +0 -46
  267. package/dist/LoadingShimmer-Dx6ncVUV.cjs +0 -92
  268. package/dist/LoadingShimmer-Dx6ncVUV.cjs.map +0 -1
  269. package/dist/LoadingShimmer.d.cts +0 -38
  270. package/dist/LogicRow-C6lrFIq0.d.cts +0 -40
  271. package/dist/LogicRow.d.cts +0 -2
  272. package/dist/MaskedInput.d.cts +0 -10
  273. package/dist/MatchHighlight.d.cts +0 -11
  274. package/dist/Menu-fUnbIYr5.d.cts +0 -70
  275. package/dist/Menu-t2q8NrV0.cjs +0 -217
  276. package/dist/Menu-t2q8NrV0.cjs.map +0 -1
  277. package/dist/Menu.d.cts +0 -2
  278. package/dist/MiddleTruncatedText-CO76xIqP.cjs +0 -178
  279. package/dist/MiddleTruncatedText-CO76xIqP.cjs.map +0 -1
  280. package/dist/Modal.d.cts +0 -146
  281. package/dist/PageHeader-CUDnarkt.cjs +0 -77
  282. package/dist/PageHeader-CUDnarkt.cjs.map +0 -1
  283. package/dist/PageHeader-D-6W61E_.mjs.map +0 -1
  284. package/dist/PageHeader.d.cts +0 -35
  285. package/dist/PageSelector-CNnVp3Al.d.cts +0 -30
  286. package/dist/PageSelector.d.cts +0 -2
  287. package/dist/Pagination-2Yo1vRJZ.cjs +0 -236
  288. package/dist/Pagination-2Yo1vRJZ.cjs.map +0 -1
  289. package/dist/Pagination-D04tn-tf.d.cts +0 -39
  290. package/dist/Pagination.d.cts +0 -2
  291. package/dist/Pii-DHTb3ewO.cjs +0 -25
  292. package/dist/Pii-DHTb3ewO.cjs.map +0 -1
  293. package/dist/Pii.d.cts +0 -16
  294. package/dist/Popover-BzgMAhsX.cjs +0 -168
  295. package/dist/Popover-BzgMAhsX.cjs.map +0 -1
  296. package/dist/Popover.d.cts +0 -90
  297. package/dist/ProgressBar.d.cts +0 -83
  298. package/dist/ProgressIndicator.d.cts +0 -64
  299. package/dist/PseudoClassProps-C5jpj6Rp.d.cts +0 -12
  300. package/dist/PseudoClassProps.d.cts +0 -2
  301. package/dist/Radio-BrTzy7-C.cjs +0 -154
  302. package/dist/Radio-BrTzy7-C.cjs.map +0 -1
  303. package/dist/Radio.d.cts +0 -21
  304. package/dist/RadioGroup-CriF2InQ.cjs +0 -57
  305. package/dist/RadioGroup-CriF2InQ.cjs.map +0 -1
  306. package/dist/RadioGroup-XYWjprsv.d.cts +0 -21
  307. package/dist/RadioGroup.d.cts +0 -2
  308. package/dist/SearchInput-CTI59-NW.d.cts +0 -46
  309. package/dist/SearchInput.d.cts +0 -2
  310. package/dist/SectionHeading-C6hjGdK-.d.cts +0 -71
  311. package/dist/SectionHeading.d.cts +0 -2
  312. package/dist/SegmentedControl-C2XZF0ys.cjs +0 -125
  313. package/dist/SegmentedControl-C2XZF0ys.cjs.map +0 -1
  314. package/dist/SegmentedControl-nHIK1ZvR.d.cts +0 -59
  315. package/dist/SegmentedControl.d.cts +0 -2
  316. package/dist/Select-BH3hXMxp.d.cts +0 -83
  317. package/dist/Select-BurtT6bN.cjs +0 -265
  318. package/dist/Select-BurtT6bN.cjs.map +0 -1
  319. package/dist/Select.d.cts +0 -2
  320. package/dist/Slider.d.cts +0 -51
  321. package/dist/SliderRHF.d.cts +0 -18
  322. package/dist/Spacer-B2CerL6e.cjs +0 -20
  323. package/dist/Spacer-B2CerL6e.cjs.map +0 -1
  324. package/dist/Spacer.d.cts +0 -17
  325. package/dist/Spinner-B6bx70yR.cjs +0 -48
  326. package/dist/Spinner-B6bx70yR.cjs.map +0 -1
  327. package/dist/Spinner.d.cts +0 -26
  328. package/dist/Stack-BzVkf3cz.d.cts +0 -47
  329. package/dist/Stack-UeifHn3c.cjs +0 -53
  330. package/dist/Stack-UeifHn3c.cjs.map +0 -1
  331. package/dist/Stack.d.cts +0 -2
  332. package/dist/StatusIndicator.d.cts +0 -82
  333. package/dist/Sticker-CI-XxUmM.d.cts +0 -68
  334. package/dist/Sticker-CIoseh9f.cjs +0 -244
  335. package/dist/Sticker-CIoseh9f.cjs.map +0 -1
  336. package/dist/Sticker.d.cts +0 -2
  337. package/dist/SwatchPicker.d.cts +0 -18
  338. package/dist/Tab.d.cts +0 -26
  339. package/dist/TabBar-PFaDNRw0.cjs +0 -298
  340. package/dist/TabBar-PFaDNRw0.cjs.map +0 -1
  341. package/dist/TabBar-zSA8kyE6.mjs.map +0 -1
  342. package/dist/TabBar.d.cts +0 -33
  343. package/dist/TabBarIconButton.d.cts +0 -10
  344. package/dist/Table-DXqyNohc.d.cts +0 -13
  345. package/dist/Table-DxLvJYWK.cjs +0 -478
  346. package/dist/Table-DxLvJYWK.cjs.map +0 -1
  347. package/dist/Table.d.cts +0 -2
  348. package/dist/TableBody-CxwHmdNb.d.cts +0 -9
  349. package/dist/TableBody.d.cts +0 -2
  350. package/dist/TableBox-CiuXCXyv.cjs +0 -1370
  351. package/dist/TableBox-CiuXCXyv.cjs.map +0 -1
  352. package/dist/TableBox-luasMC73.mjs.map +0 -1
  353. package/dist/TableBox.d.cts +0 -3
  354. package/dist/TableBoxCell-DIMenSwX.d.cts +0 -259
  355. package/dist/TableBoxCell.d.cts +0 -2
  356. package/dist/TableBoxField.d.cts +0 -99
  357. package/dist/TableBoxRow-RNQ6wJLh.d.cts +0 -86
  358. package/dist/TableBoxRow.d.cts +0 -2
  359. package/dist/TableBoxRowActions-CYpoPhYZ.d.cts +0 -57
  360. package/dist/TableBoxRowActions.d.cts +0 -2
  361. package/dist/TableCell.d.cts +0 -2
  362. package/dist/TableControls-BtXK7Ils.cjs +0 -3995
  363. package/dist/TableControls-BtXK7Ils.cjs.map +0 -1
  364. package/dist/TableControls-CLNF0AJG.d.cts +0 -70
  365. package/dist/TableControls.d.cts +0 -2
  366. package/dist/TableControlsContext-DAZx6Rrj.d.cts +0 -21
  367. package/dist/TableControlsContext.d.cts +0 -2
  368. package/dist/TableHead-Ch4Ho3LW.d.cts +0 -12
  369. package/dist/TableHead.d.cts +0 -2
  370. package/dist/TableHeaderCell-Crsa2R2g.d.cts +0 -17
  371. package/dist/TableHeaderCell.d.cts +0 -2
  372. package/dist/TableLayout-nwy094C_.d.mts +0 -19
  373. package/dist/TableLayout.d.cts +0 -2
  374. package/dist/TableRow-DVTPqT4w.d.cts +0 -13
  375. package/dist/TableRow.d.cts +0 -2
  376. package/dist/TableTH.d.cts +0 -2
  377. package/dist/TableViewConfigurationDropdown-CaiOGyrU.d.cts +0 -32
  378. package/dist/TableViewConfigurationDropdown.d.cts +0 -2
  379. package/dist/TechnicalSticker.d.cts +0 -51
  380. package/dist/Text-CrGiWG2E.d.cts +0 -42
  381. package/dist/Text-G9QmYf0P.cjs +0 -95
  382. package/dist/Text-G9QmYf0P.cjs.map +0 -1
  383. package/dist/Text.d.cts +0 -2
  384. package/dist/TextArea-BNiipQDb.cjs +0 -40
  385. package/dist/TextArea-BNiipQDb.cjs.map +0 -1
  386. package/dist/TextArea-CHW9FKM4.d.cts +0 -10
  387. package/dist/TextArea.d.cts +0 -2
  388. package/dist/TextUnderlineTooltip-DMEyOu8C.d.cts +0 -18
  389. package/dist/TextUnderlineTooltip.d.cts +0 -2
  390. package/dist/Tile.d.cts +0 -63
  391. package/dist/Toast.d.cts +0 -23
  392. package/dist/Toggle-Ce-rF8Xp.cjs +0 -174
  393. package/dist/Toggle-Ce-rF8Xp.cjs.map +0 -1
  394. package/dist/Toggle-tbIebQWC.d.cts +0 -54
  395. package/dist/Toggle.d.cts +0 -2
  396. package/dist/Tooltip--eDrrk2r.d.cts +0 -100
  397. package/dist/Tooltip-olP3rdUO.cjs +0 -152
  398. package/dist/Tooltip-olP3rdUO.cjs.map +0 -1
  399. package/dist/Tooltip.d.cts +0 -2
  400. package/dist/TruncatedText-Dit2NJI6.d.cts +0 -18
  401. package/dist/chunk-CKQMccvm.cjs +0 -28
  402. package/dist/components/Attribute/index.cjs +0 -210
  403. package/dist/components/Attribute/index.cjs.map +0 -1
  404. package/dist/components/Attribute/index.d.cts +0 -3
  405. package/dist/components/Badge/index.cjs +0 -7
  406. package/dist/components/Badge/index.d.cts +0 -2
  407. package/dist/components/Banner/index.cjs +0 -99
  408. package/dist/components/Banner/index.cjs.map +0 -1
  409. package/dist/components/Banner/index.d.cts +0 -2
  410. package/dist/components/Breadcrumbs/index.cjs +0 -7
  411. package/dist/components/Breadcrumbs/index.d.cts +0 -2
  412. package/dist/components/Button/index.cjs +0 -11
  413. package/dist/components/Button/index.d.cts +0 -3
  414. package/dist/components/ButtonGroup/index.cjs +0 -112
  415. package/dist/components/ButtonGroup/index.cjs.map +0 -1
  416. package/dist/components/ButtonGroup/index.d.cts +0 -2
  417. package/dist/components/Card/index.cjs +0 -12
  418. package/dist/components/Card/index.d.cts +0 -3
  419. package/dist/components/CardV2/index.cjs +0 -7
  420. package/dist/components/CardV2/index.d.cts +0 -3
  421. package/dist/components/Checkbox/index.cjs +0 -7
  422. package/dist/components/Checkbox/index.d.cts +0 -2
  423. package/dist/components/Combobox/index.cjs +0 -9
  424. package/dist/components/Combobox/index.d.cts +0 -3
  425. package/dist/components/ConfigFormGroup/index.cjs +0 -10
  426. package/dist/components/ConfigFormGroup/index.d.cts +0 -3
  427. package/dist/components/DataTable/TableControls/index.cjs +0 -27
  428. package/dist/components/DataTable/TableControls/index.d.cts +0 -16
  429. package/dist/components/DataTable/index.cjs +0 -1434
  430. package/dist/components/DataTable/index.cjs.map +0 -1
  431. package/dist/components/DataTable/index.d.cts +0 -8
  432. package/dist/components/DataTable/types.cjs +0 -0
  433. package/dist/components/DataTable/types.d.cts +0 -159
  434. package/dist/components/DatePicker/index.cjs +0 -10
  435. package/dist/components/DatePicker/index.d.cts +0 -5
  436. package/dist/components/DropdownButton/index.cjs +0 -7
  437. package/dist/components/DropdownButton/index.d.cts +0 -2
  438. package/dist/components/DropdownMenu/index.cjs +0 -7
  439. package/dist/components/DropdownMenu/index.d.cts +0 -2
  440. package/dist/components/FormControl/index.cjs +0 -15
  441. package/dist/components/FormControl/index.d.cts +0 -3
  442. package/dist/components/FormField/index.cjs +0 -19
  443. package/dist/components/FormField/index.d.cts +0 -6
  444. package/dist/components/HoverCopyableField/index.cjs +0 -2
  445. package/dist/components/HoverCopyableField/index.d.cts +0 -2
  446. package/dist/components/ImageTile/index.cjs +0 -225
  447. package/dist/components/ImageTile/index.cjs.map +0 -1
  448. package/dist/components/ImageTile/index.d.cts +0 -2
  449. package/dist/components/Input/index.cjs +0 -14
  450. package/dist/components/Input/index.cjs.map +0 -1
  451. package/dist/components/Input/index.d.cts +0 -2
  452. package/dist/components/Link/index.cjs +0 -87
  453. package/dist/components/Link/index.cjs.map +0 -1
  454. package/dist/components/Link/index.d.cts +0 -2
  455. package/dist/components/ListBox/index.cjs +0 -8
  456. package/dist/components/ListBox/index.d.cts +0 -4
  457. package/dist/components/LoadingShimmer/index.cjs +0 -6
  458. package/dist/components/LoadingShimmer/index.d.cts +0 -2
  459. package/dist/components/MaskedInput/index.cjs +0 -29
  460. package/dist/components/MaskedInput/index.cjs.map +0 -1
  461. package/dist/components/MaskedInput/index.d.cts +0 -2
  462. package/dist/components/MatchHighlight/index.cjs +0 -31
  463. package/dist/components/MatchHighlight/index.cjs.map +0 -1
  464. package/dist/components/MatchHighlight/index.d.cts +0 -2
  465. package/dist/components/Menu/index.cjs +0 -14
  466. package/dist/components/Menu/index.d.cts +0 -2
  467. package/dist/components/Modal/index.cjs +0 -290
  468. package/dist/components/Modal/index.cjs.map +0 -1
  469. package/dist/components/Modal/index.d.cts +0 -2
  470. package/dist/components/PageHeader/index.cjs +0 -7
  471. package/dist/components/PageHeader/index.d.cts +0 -2
  472. package/dist/components/Pagination/index.cjs +0 -10
  473. package/dist/components/Pagination/index.d.cts +0 -4
  474. package/dist/components/Pii/index.cjs +0 -2
  475. package/dist/components/Pii/index.d.cts +0 -2
  476. package/dist/components/Popover/index.cjs +0 -12
  477. package/dist/components/Popover/index.d.cts +0 -2
  478. package/dist/components/ProgressBar/index.cjs +0 -177
  479. package/dist/components/ProgressBar/index.cjs.map +0 -1
  480. package/dist/components/ProgressBar/index.d.cts +0 -2
  481. package/dist/components/ProgressIndicator/index.cjs +0 -185
  482. package/dist/components/ProgressIndicator/index.cjs.map +0 -1
  483. package/dist/components/ProgressIndicator/index.d.cts +0 -2
  484. package/dist/components/Radio/index.cjs +0 -7
  485. package/dist/components/Radio/index.d.cts +0 -2
  486. package/dist/components/RadioGroup/index.cjs +0 -7
  487. package/dist/components/RadioGroup/index.d.cts +0 -2
  488. package/dist/components/SegmentedControl/index.cjs +0 -8
  489. package/dist/components/SegmentedControl/index.d.cts +0 -2
  490. package/dist/components/Select/index.cjs +0 -9
  491. package/dist/components/Select/index.d.cts +0 -2
  492. package/dist/components/Slider/index.cjs +0 -245
  493. package/dist/components/Slider/index.cjs.map +0 -1
  494. package/dist/components/Slider/index.d.cts +0 -3
  495. package/dist/components/Spacer/index.cjs +0 -2
  496. package/dist/components/Spacer/index.d.cts +0 -2
  497. package/dist/components/Spinner/index.cjs +0 -7
  498. package/dist/components/Spinner/index.d.cts +0 -2
  499. package/dist/components/Stack/index.cjs +0 -8
  500. package/dist/components/Stack/index.d.cts +0 -2
  501. package/dist/components/StatusIndicator/index.cjs +0 -224
  502. package/dist/components/StatusIndicator/index.cjs.map +0 -1
  503. package/dist/components/StatusIndicator/index.d.cts +0 -2
  504. package/dist/components/Sticker/index.cjs +0 -11
  505. package/dist/components/Sticker/index.d.cts +0 -2
  506. package/dist/components/SwatchPicker/index.cjs +0 -63
  507. package/dist/components/SwatchPicker/index.cjs.map +0 -1
  508. package/dist/components/SwatchPicker/index.d.cts +0 -2
  509. package/dist/components/TabBar/index.cjs +0 -11
  510. package/dist/components/TabBar/index.d.cts +0 -4
  511. package/dist/components/Table/index.cjs +0 -21
  512. package/dist/components/Table/index.d.cts +0 -8
  513. package/dist/components/TableBox/index.cjs +0 -7
  514. package/dist/components/TableBox/index.d.cts +0 -3
  515. package/dist/components/TechnicalSticker/index.cjs +0 -239
  516. package/dist/components/TechnicalSticker/index.cjs.map +0 -1
  517. package/dist/components/TechnicalSticker/index.d.cts +0 -2
  518. package/dist/components/Text/index.cjs +0 -8
  519. package/dist/components/Text/index.d.cts +0 -2
  520. package/dist/components/TextArea/index.cjs +0 -7
  521. package/dist/components/TextArea/index.d.cts +0 -2
  522. package/dist/components/Tile/index.cjs +0 -102
  523. package/dist/components/Tile/index.cjs.map +0 -1
  524. package/dist/components/Tile/index.d.cts +0 -2
  525. package/dist/components/Toast/index.cjs +0 -134
  526. package/dist/components/Toast/index.cjs.map +0 -1
  527. package/dist/components/Toast/index.d.cts +0 -2
  528. package/dist/components/Toggle/index.cjs +0 -7
  529. package/dist/components/Toggle/index.d.cts +0 -2
  530. package/dist/components/Tooltip/index.cjs +0 -11
  531. package/dist/components/Tooltip/index.d.cts +0 -4
  532. package/dist/constants-B6c8S033.d.cts +0 -6
  533. package/dist/constants.d.cts +0 -2
  534. package/dist/constants2.d.cts +0 -10
  535. package/dist/filter-size-context-CIw0Zi6r.d.cts +0 -52
  536. package/dist/filter-size-context.d.cts +0 -2
  537. package/dist/helpers.d.cts +0 -76
  538. package/dist/index-BIAn8oQh.d.cts +0 -1
  539. package/dist/index-BL32-cvv.d.cts +0 -1
  540. package/dist/index-BPSCxsMC.d.cts +0 -1
  541. package/dist/index-BR1oNnaF.d.cts +0 -1
  542. package/dist/index-BXpMZvwA.d.cts +0 -1
  543. package/dist/index-BhY1qu3m.d.cts +0 -1
  544. package/dist/index-BlwcRiXv.d.cts +0 -1
  545. package/dist/index-Bw8QVu_o.d.cts +0 -75
  546. package/dist/index-C0NRIDsj2.d.cts +0 -1
  547. package/dist/index-C1ihAKnV.d.cts +0 -1
  548. package/dist/index-C9EIpBh8.d.cts +0 -7
  549. package/dist/index-CDAfh8Ew.d.cts +0 -1
  550. package/dist/index-CFG0_wK4.d.cts +0 -1
  551. package/dist/index-CQ25UCod.d.cts +0 -1
  552. package/dist/index-Cv0jeUQf2.d.cts +0 -1
  553. package/dist/index-CwSIy_W-.d.cts +0 -1
  554. package/dist/index-D-BciAtf.d.cts +0 -1
  555. package/dist/index-D34XP8vp.d.cts +0 -54
  556. package/dist/index-D6CnpA_r.d.cts +0 -1
  557. package/dist/index-D9IqtUDs.d.cts +0 -1
  558. package/dist/index-DFKoAoY2.d.cts +0 -1
  559. package/dist/index-DpEKQcoR.d.cts +0 -1
  560. package/dist/index-_wQ5ClJU.d.cts +0 -1
  561. package/dist/index-dC-i2r_u.d.cts +0 -1
  562. package/dist/index-sQecLSpR.d.cts +0 -1
  563. package/dist/index.cjs +0 -0
  564. package/dist/index.d.cts +0 -2
  565. package/dist/index2.d.cts +0 -2
  566. package/dist/index3.d.cts +0 -4
  567. package/dist/index4.d.cts +0 -11
  568. package/dist/index5.d.cts +0 -1
  569. package/dist/input-DPB0cX2m.d.cts +0 -17
  570. package/dist/inputFields.d.cts +0 -83
  571. package/dist/intersperse-_0nQM5Rb.cjs +0 -26
  572. package/dist/intersperse-_0nQM5Rb.cjs.map +0 -1
  573. package/dist/layouts/LayoutLoadingShimmer/index.cjs +0 -139
  574. package/dist/layouts/LayoutLoadingShimmer/index.cjs.map +0 -1
  575. package/dist/layouts/LayoutLoadingShimmer/index.d.cts +0 -2
  576. package/dist/lib/ConfigContext.cjs +0 -15
  577. package/dist/lib/ConfigContext.cjs.map +0 -1
  578. package/dist/lib/ConfigContext.d.cts +0 -16
  579. package/dist/lib/GlobalStyles.cjs +0 -57
  580. package/dist/lib/GlobalStyles.cjs.map +0 -1
  581. package/dist/lib/GlobalStyles.d.cts +0 -8
  582. package/dist/lib/HeadlessAriaButton.cjs +0 -33
  583. package/dist/lib/HeadlessAriaButton.cjs.map +0 -1
  584. package/dist/lib/HeadlessAriaButton.d.cts +0 -12
  585. package/dist/lib/MiddleTruncatedText.cjs +0 -7
  586. package/dist/lib/MiddleTruncatedText.d.cts +0 -14
  587. package/dist/lib/PDSProvider.cjs +0 -13
  588. package/dist/lib/PDSProvider.cjs.map +0 -1
  589. package/dist/lib/PDSProvider.d.cts +0 -10
  590. package/dist/lib/TruncatedText.cjs +0 -39
  591. package/dist/lib/TruncatedText.cjs.map +0 -1
  592. package/dist/lib/TruncatedText.d.cts +0 -2
  593. package/dist/lib/TruncatedTextWithTooltip.cjs +0 -34
  594. package/dist/lib/TruncatedTextWithTooltip.cjs.map +0 -1
  595. package/dist/lib/TruncatedTextWithTooltip.d.cts +0 -15
  596. package/dist/lib/comboboxHelper.cjs +0 -46
  597. package/dist/lib/comboboxHelper.cjs.map +0 -1
  598. package/dist/lib/comboboxHelper.d.cts +0 -24
  599. package/dist/lib/copyTextToClipboard.cjs +0 -33
  600. package/dist/lib/copyTextToClipboard.cjs.map +0 -1
  601. package/dist/lib/copyTextToClipboard.d.cts +0 -4
  602. package/dist/lib/datePickerHelper.cjs +0 -36
  603. package/dist/lib/datePickerHelper.cjs.map +0 -1
  604. package/dist/lib/datePickerHelper.d.cts +0 -19
  605. package/dist/lib/message.cjs +0 -12
  606. package/dist/lib/message.cjs.map +0 -1
  607. package/dist/lib/message.d.cts +0 -2
  608. package/dist/lib/pseudoClass.cjs +0 -31
  609. package/dist/lib/pseudoClass.cjs.map +0 -1
  610. package/dist/lib/pseudoClass.d.cts +0 -45
  611. package/dist/lib/reorderItems.cjs +0 -38
  612. package/dist/lib/reorderItems.cjs.map +0 -1
  613. package/dist/lib/reorderItems.d.cts +0 -26
  614. package/dist/lib/selectHelper.cjs +0 -22
  615. package/dist/lib/selectHelper.cjs.map +0 -1
  616. package/dist/lib/selectHelper.d.cts +0 -14
  617. package/dist/lib/useControlled.cjs +0 -20
  618. package/dist/lib/useControlled.cjs.map +0 -1
  619. package/dist/lib/useControlled.d.cts +0 -16
  620. package/dist/lib/useIsOverflow.cjs +0 -58
  621. package/dist/lib/useIsOverflow.cjs.map +0 -1
  622. package/dist/lib/useIsOverflow.d.cts +0 -11
  623. package/dist/lib/useOutsideClick.cjs +0 -19
  624. package/dist/lib/useOutsideClick.cjs.map +0 -1
  625. package/dist/lib/useOutsideClick.d.cts +0 -13
  626. package/dist/lib/useScrollOverflow.cjs +0 -61
  627. package/dist/lib/useScrollOverflow.cjs.map +0 -1
  628. package/dist/lib/useScrollOverflow.d.cts +0 -36
  629. package/dist/lib/zindex.cjs +0 -26
  630. package/dist/lib/zindex.cjs.map +0 -1
  631. package/dist/lib/zindex.d.cts +0 -25
  632. package/dist/message-BEgtEjQC.d.cts +0 -9
  633. package/dist/mixins/focus.cjs +0 -39
  634. package/dist/mixins/focus.cjs.map +0 -1
  635. package/dist/mixins/focus.d.cts +0 -11
  636. package/dist/mixins/hoverable.cjs +0 -38
  637. package/dist/mixins/hoverable.cjs.map +0 -1
  638. package/dist/mixins/hoverable.d.cts +0 -16
  639. package/dist/mixins/input.cjs +0 -95
  640. package/dist/mixins/input.cjs.map +0 -1
  641. package/dist/mixins/input.d.cts +0 -2
  642. package/dist/mixins/menuItem.cjs +0 -110
  643. package/dist/mixins/menuItem.cjs.map +0 -1
  644. package/dist/mixins/menuItem.d.cts +0 -30
  645. package/dist/mixins/print/index.cjs +0 -25
  646. package/dist/mixins/print/index.cjs.map +0 -1
  647. package/dist/mixins/print/index.d.cts +0 -11
  648. package/dist/mixins/text.cjs +0 -93
  649. package/dist/mixins/text.cjs.map +0 -1
  650. package/dist/mixins/text.d.cts +0 -2
  651. package/dist/operators-1qE2GpC7.d.cts +0 -43
  652. package/dist/operators.d.cts +0 -2
  653. package/dist/text-PmH5oc61.d.cts +0 -14
  654. package/dist/theme-Cadb1xzQ.d.cts +0 -154
  655. package/dist/theme.cjs +0 -353
  656. package/dist/theme.cjs.map +0 -1
  657. package/dist/theme.d.cts +0 -2
  658. package/dist/types-B_HHNlia.d.cts +0 -158
  659. package/dist/types-CCvc590y.d.cts +0 -45
  660. package/dist/types-CkiXVJeR.d.cts +0 -10
  661. package/dist/types-SYSKcZKW.d.cts +0 -25
  662. package/dist/types.d.cts +0 -2
  663. package/dist/types2.d.cts +0 -2
  664. package/dist/types3.d.cts +0 -2
  665. package/dist/types4.d.cts +0 -2
  666. package/dist/useFilterStateV2-DbPwX5N1.d.cts +0 -93
  667. package/dist/useFilterStateV2.d.cts +0 -2
  668. package/dist/useFormField--Q8ZdpW5.d.cts +0 -30
  669. package/dist/useFormField-BZlArnsI.cjs +0 -37
  670. package/dist/useFormField-BZlArnsI.cjs.map +0 -1
  671. package/dist/useFormField.d.cts +0 -2
  672. package/dist/useFormGroup-Bmnzgq0S.cjs +0 -26
  673. package/dist/useFormGroup-Bmnzgq0S.cjs.map +0 -1
  674. package/dist/useFormGroup.d.cts +0 -18
  675. package/dist/useTableBoxDragAndDrop-DnbUToce.d.cts +0 -69
  676. package/dist/useTableBoxDragAndDrop.d.cts +0 -2
  677. package/dist/useTableColumns.d.cts +0 -72
  678. package/dist/useToggle-DARO917w.cjs +0 -27
  679. package/dist/useToggle-DARO917w.cjs.map +0 -1
  680. package/dist/utilities-mSlaTrjB.d.cts +0 -9
  681. package/dist/utilities.d.cts +0 -2
  682. package/dist/utils/storybook.cjs +0 -12
  683. package/dist/utils/storybook.cjs.map +0 -1
  684. package/dist/utils/testing.cjs +0 -50
  685. package/dist/utils/testing.cjs.map +0 -1
  686. package/dist/utils/testing.d.cts +0 -18
  687. package/dist/validation-CJymv6JE.d.cts +0 -51
  688. package/dist/validation.d.cts +0 -2
  689. package/dist/value-control-resolver-B9p25q3G.d.cts +0 -46
  690. package/dist/value-control-resolver.d.cts +0 -2
  691. package/dist/variables/color.cjs +0 -22
  692. package/dist/variables/color.cjs.map +0 -1
  693. package/dist/variables/color.d.cts +0 -19
  694. package/dist/variables/effect.cjs +0 -27
  695. package/dist/variables/effect.cjs.map +0 -1
  696. package/dist/variables/effect.d.cts +0 -21
  697. package/dist/variables/keyframes.cjs +0 -22
  698. package/dist/variables/keyframes.cjs.map +0 -1
  699. package/dist/variables/keyframes.d.cts +0 -8
  700. package/dist/variables/spacing.cjs +0 -10
  701. package/dist/variables/spacing.cjs.map +0 -1
  702. package/dist/variables/spacing.d.cts +0 -8
  703. package/dist/variables/text.cjs +0 -13
  704. package/dist/variables/text.cjs.map +0 -1
  705. package/dist/variables/text.d.cts +0 -10
  706. package/dist/variables/transitions.cjs +0 -24
  707. package/dist/variables/transitions.cjs.map +0 -1
  708. package/dist/variables/transitions.d.cts +0 -19
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  Summary of changes to the @persona/design-system package.
4
4
 
5
+ ## [0.1.9] - 2026-08-12
6
+
7
+ - **2026-08-12**: Moved `@persona/design-tokens`, `@persona/icons`, and `styled-components` from dependencies to peerDependencies so consumers supply the single copy PDS renders against, instead of installing PDS's own duplicates
8
+ - **2026-08-11**: Made PageHeader's `breadcrumbs` variant forbid `subtitle` as well as `title` — the subtitle is sunset there, so fold its value into the current crumb
9
+ - **2026-08-07**: Exported `TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL` from TableBoxField and aligned TableBox empty-state padding with data rows so adding the first row no longer shifts the table
10
+ - **2026-08-07**: Added capped scrolling to TableBox and ListBox via `maxHeight`: the box scrolls inside its border, TableBox headers stay sticky, the right-edge fade stays anchored and insets around scrollbars, and inline comboboxes portal when `maxHeight` is set
11
+ - **2026-08-06**: Aligned atomic TabBar badges to the label cap midpoint using font-relative cap and x-height units
12
+ - **2026-08-05**: Added an optional `keywords` field to ComboboxOption that Fuse indexes but never renders, so options can match on metadata without abusing `description`
13
+ - **2026-08-05**: Added a `scrollsHorizontally` prop to DataTable and TableLayout so a consumer can drop the wrapper's `overflow-x` and keep the page as the sticky-header scroll ancestor
14
+ - **2026-08-05**: Corrected Button and Input JSDoc to point at the published `@persona/icons` instead of the persona-web-local `@persona-id/icons` alias
15
+ - **2026-08-05**: Portaled the DataTable FloatingActionBar's action menu so it escapes the table's scroll container instead of being clipped by it
16
+
5
17
  ## [0.1.8] - 2026-08-05
6
18
 
7
19
  - **2026-08-05**: Added an opt-in `singleUseFields` prop to FiltersV2 `FilterBar` that drops already-filtered fields from the Add-filter picker and hides the picker trigger once every field is used
package/README.md CHANGED
@@ -5,5 +5,24 @@ This project contains everything related to the Persona Design System.
5
5
  ## Installation
6
6
 
7
7
  ```
8
- yarn add @persona/design-system @persona/design-tokens @persona/icons
8
+ yarn add @persona/design-system @persona/design-tokens @persona/icons 'styled-components@^5.3.5'
9
9
  ```
10
+
11
+ `@persona/design-tokens`, `@persona/icons`, and `styled-components` are peer dependencies, so
12
+ they must be installed alongside the design system — Yarn does not add them for you. PDS requires
13
+ `styled-components` v5; v6 is a breaking major.
14
+
15
+ ## Skills for AI coding agents
16
+
17
+ The package bundles an [Agent Skill](https://agentskills.io) under `skills/ui-authoring/`,
18
+ versioned alongside the components it documents:
19
+
20
+ | File | Contents |
21
+ | --------------- | --------------------------------------------------------------------------------------- |
22
+ | `SKILL.md` | Design tokens, component-first guidance, and the rules that matter most when writing UI |
23
+ | `COMPONENTS.md` | Deeper usage notes for the components that are easy to get wrong |
24
+ | `EXAMPLES.md` | End-to-end examples (forms, tables, loading and empty states) |
25
+ | `REFERENCE.md` | Full `Color` / `Spacing` / `Typography` catalog |
26
+
27
+ Point your agent at `node_modules/@persona/design-system/skills/ui-authoring/SKILL.md`, or copy the
28
+ directory into wherever your agent reads skills from (for example `.claude/skills/`).
@@ -1,4 +1,4 @@
1
- import { n as IconButtonProps } from "./IconButton-BSES_-6g.mjs";
1
+ import { n as IconButtonProps } from "./IconButton-BHCmHIx5.mjs";
2
2
  import { i as ParagraphSize } from "./text-B21s9mRZ.mjs";
3
3
  import { c as ParagraphProps, u as SpanProps } from "./Text-DNPbAuUG.mjs";
4
4
  import * as _$styled_components0 from "styled-components";
@@ -1,4 +1,4 @@
1
- import { n as Sticker } from "./Sticker-DbqKLe33.mjs";
1
+ import { n as Sticker } from "./Sticker-CyGb9dEu.mjs";
2
2
  import styled, { css } from "styled-components";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region components/Badge/Badge.tsx
@@ -28,4 +28,4 @@ const Badge = styled(({ variant, ...rest }) => {
28
28
  //#endregion
29
29
  export { Badge as t };
30
30
 
31
- //# sourceMappingURL=Badge-DortWowZ.mjs.map
31
+ //# sourceMappingURL=Badge-DEVbRlJX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Badge-DortWowZ.mjs","names":[],"sources":["../components/Badge/Badge.tsx"],"sourcesContent":["import styled, { css, type DefaultTheme, type StyledComponent } from 'styled-components';\n\nimport Sticker, { type StickerProps } from 'design-system/components/Sticker';\n\nexport interface BadgeProps {\n /**\n * When rendered on a secondary background (e.g. inside a panel or card with\n * a grey fill), set this to true so the component adjusts its colours\n * appropriately for certain variants.\n */\n onSecondaryBackground?: boolean;\n /**\n * Semantic colour variant for the badge.\n *\n * - `basic` – neutral grey, for informational counts or labels (default).\n * - `active` – purple, to highlight an active or selected state.\n * - `alert` – red/danger, to draw attention to errors or urgent counts.\n *\n * @defaultValue 'basic'\n */\n variant?: 'alert' | 'active' | 'basic';\n}\n\nexport const Badge = styled(({ variant, ...rest }: BadgeProps) => {\n let variantProp: StickerProps['variant'];\n switch (variant) {\n case 'alert':\n variantProp = 'danger';\n break;\n case 'active':\n variantProp = 'purple';\n break;\n case 'basic':\n default:\n variantProp = 'grey';\n }\n\n return <Sticker {...rest} variant={variantProp} />;\n})<BadgeProps>(\n () => css`\n min-width: 16px;\n text-align: center;\n border-radius: 100px;\n span {\n font-size: 10px;\n }\n `,\n) as StyledComponent<'span', DefaultTheme, BadgeProps, never>;\n/**\n * The type workaround above makes the correct types available for Badge.\n * Having duplicate prop names between Badge and Sticker seems to cause some oddities.\n *\n * We insist on making this a styled component so the component itself can be targeted in styles.\n * See: https://styled-components.com/docs/advanced#referring-to-other-components\n */\n\nexport default Badge;\n"],"mappings":";;;;AAuBA,MAAa,QAAQ,QAAQ,EAAE,SAAS,GAAG,WAAuB;CAChE,IAAI;AACJ,SAAQ,SAAR;EACE,KAAK;AACH,iBAAc;AACd;EACF,KAAK;AACH,iBAAc;AACd;EAEF,QACE,eAAc;;AAGlB,QAAO,oBAAC,SAAD;EAAS,GAAI;EAAM,SAAS;EAAe,CAAA;EAClD,OACM,GAAG;;;;;;;IAQV"}
1
+ {"version":3,"file":"Badge-DEVbRlJX.mjs","names":[],"sources":["../components/Badge/Badge.tsx"],"sourcesContent":["import styled, { css, type DefaultTheme, type StyledComponent } from 'styled-components';\n\nimport Sticker, { type StickerProps } from 'design-system/components/Sticker';\n\nexport interface BadgeProps {\n /**\n * When rendered on a secondary background (e.g. inside a panel or card with\n * a grey fill), set this to true so the component adjusts its colours\n * appropriately for certain variants.\n */\n onSecondaryBackground?: boolean;\n /**\n * Semantic colour variant for the badge.\n *\n * - `basic` – neutral grey, for informational counts or labels (default).\n * - `active` – purple, to highlight an active or selected state.\n * - `alert` – red/danger, to draw attention to errors or urgent counts.\n *\n * @defaultValue 'basic'\n */\n variant?: 'alert' | 'active' | 'basic';\n}\n\nexport const Badge = styled(({ variant, ...rest }: BadgeProps) => {\n let variantProp: StickerProps['variant'];\n switch (variant) {\n case 'alert':\n variantProp = 'danger';\n break;\n case 'active':\n variantProp = 'purple';\n break;\n case 'basic':\n default:\n variantProp = 'grey';\n }\n\n return <Sticker {...rest} variant={variantProp} />;\n})<BadgeProps>(\n () => css`\n min-width: 16px;\n text-align: center;\n border-radius: 100px;\n span {\n font-size: 10px;\n }\n `,\n) as StyledComponent<'span', DefaultTheme, BadgeProps, never>;\n/**\n * The type workaround above makes the correct types available for Badge.\n * Having duplicate prop names between Badge and Sticker seems to cause some oddities.\n *\n * We insist on making this a styled component so the component itself can be targeted in styles.\n * See: https://styled-components.com/docs/advanced#referring-to-other-components\n */\n\nexport default Badge;\n"],"mappings":";;;;AAuBA,MAAa,QAAQ,QAAQ,EAAE,SAAS,GAAG,WAAuB;CAChE,IAAI;AACJ,SAAQ,SAAR;EACE,KAAK;AACH,iBAAc;AACd;EACF,KAAK;AACH,iBAAc;AACd;EAEF,QACE,eAAc;;AAGlB,QAAO,oBAAC,SAAD;EAAS,GAAI;EAAM,SAAS;EAAe,CAAA;EAClD,OACM,GAAG;;;;;;;IAQV"}
@@ -3,8 +3,8 @@ import "./variables/transitions.mjs";
3
3
  import { paragraphMixins } from "./mixins/text.mjs";
4
4
  import { t as HStack } from "./Stack-Bl54WmhY.mjs";
5
5
  import { i as Paragraph } from "./Text-RcEfNFLx.mjs";
6
- import { a as Tooltip } from "./Tooltip-C6AR1xT-.mjs";
7
- import { t as IconButton } from "./IconButton-CIWiEsS-.mjs";
6
+ import { a as Tooltip } from "./Tooltip-BvDbmXak.mjs";
7
+ import { t as IconButton } from "./IconButton-P8w0JDI5.mjs";
8
8
  import { t as intersperse } from "./intersperse-vOYvFOfF.mjs";
9
9
  import Input_default from "./components/Input/index.mjs";
10
10
  import { Spacing } from "@persona/design-tokens";
@@ -285,4 +285,4 @@ const Breadcrumbs = ({ items, size = "md", headingAs = "h1", "aria-label": ariaL
285
285
  //#endregion
286
286
  export { Breadcrumbs as t };
287
287
 
288
- //# sourceMappingURL=Breadcrumbs-CDZ_Mrcg.mjs.map
288
+ //# sourceMappingURL=Breadcrumbs-W8hIhdHD.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-CDZ_Mrcg.mjs","names":["Input"],"sources":["../components/Breadcrumbs/Breadcrumb.tsx","../components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { type ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { CopyIcon, EditIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport Input from 'design-system/components/Input';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { focusOutline } from 'design-system/mixins/focus';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nexport type BreadcrumbSize = 'md' | 'lg';\n\nexport type BreadcrumbHeadingAs = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nconst COPY_TOOLTIP_LABEL = 'Copy ID';\nconst DEFAULT_EDIT_MAX_LENGTH = 100;\n\nexport type BreadcrumbProps = {\n label: string;\n size?: BreadcrumbSize;\n current?: boolean;\n /**\n * Overrides the heading element rendered for the current crumb. Defaults to `h1`; use `h2` or\n * lower when the page already has an `h1`.\n */\n headingAs?: BreadcrumbHeadingAs;\n showCopyAction?: boolean;\n copyValue?: string;\n copyTooltipLabel?: string;\n /** Internal dashboard path (e.g. `/cases`). Passed to the router `Link` as `to`. */\n href?: string;\n /**\n * Activates a non-current crumb without a route change, for trails that navigate in-place (e.g.\n * a control panel drilling into a sub-panel). Ignored when `href` is set.\n */\n onClick?: () => void;\n onEdit?: (newLabel: string) => void;\n editMaxLength?: number;\n onCopy?: () => void;\n};\n\nconst LABEL_ACTION_GAP = Spacing[2];\nconst ACTION_BUTTON_GAP = Spacing[1];\n\nconst CrumbRow = styled(HStack)`\n align-items: center;\n min-width: 0;\n`;\n\nconst crumbLayoutStyles = (size: BreadcrumbSize) => css`\n display: inline-flex;\n align-items: center;\n min-width: 0;\n min-height: ${({ theme }) => theme.element.height.xs};\n ${\n size === 'lg'\n ? css`\n font-size: ${({ theme }) => theme.text.paragraph.lg.fontSize};\n line-height: ${({ theme }) => theme.text.paragraph.lg.lineHeight};\n `\n : css``\n };\n`;\n\nconst editInputTextStyles = (size: BreadcrumbSize, current: boolean) => {\n if (current) {\n return size === 'lg' ? paragraphMixins.lgBold : paragraphMixins.mdBold;\n }\n return size === 'lg' ? paragraphMixins.lg : paragraphMixins.md;\n};\n\nconst ancestorCrumbStyles = css<{ $size: BreadcrumbSize }>`\n ${paragraphMixins.md};\n color: ${({ theme }) => theme.color.text.secondary};\n text-decoration: none;\n transition: color ${TransitionDuration.ExtraFast} ease-out;\n ${focusOutline}\n ${({ $size }) => crumbLayoutStyles($size)}\n\n &:hover {\n color: ${({ theme }) => theme.color.text.primary};\n }\n`;\n\nconst AncestorNavLink = styled(Link)<{ $size: BreadcrumbSize }>`\n ${ancestorCrumbStyles}\n`;\n\nconst AncestorNavButton = styled.button<{ $size: BreadcrumbSize }>`\n ${ancestorCrumbStyles}\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n`;\n\nconst InlineEditInput = styled(Input)<{\n $size: BreadcrumbSize;\n $current: boolean;\n $editMinWidth?: number;\n}>`\n margin: 0;\n padding: 2px 10px;\n width: auto;\n max-width: 100%;\n min-width: ${({ $editMinWidth }) => ($editMinWidth != null ? `${$editMinWidth}px` : '0')};\n field-sizing: content;\n display: inline-block;\n ${({ $size, $current }) => editInputTextStyles($size, $current)};\n background-color: ${({ theme }) => theme.color.background.primary};\n color: ${({ theme }) => theme.color.text.primary};\n\n &:not(:focus) {\n border-color: transparent;\n }\n\n &:hover:not(:disabled) {\n border-style: solid;\n }\n`;\n\nconst CurrentLabel = styled(Paragraph)<{ $size: BreadcrumbSize }>`\n margin: 0;\n ${({ $size }) => crumbLayoutStyles($size)}\n`;\n\nconst copyToClipboard = async (value: string): Promise<boolean> => {\n try {\n if (navigator.clipboard?.writeText == null) {\n return false;\n }\n\n await navigator.clipboard.writeText(value);\n return true;\n } catch {\n return false;\n }\n};\n\nconst BreadcrumbCopyButton = ({\n copyValue,\n copyTooltipLabel = COPY_TOOLTIP_LABEL,\n onCopy,\n}: {\n copyValue: string;\n copyTooltipLabel?: string;\n onCopy?: () => void;\n}) => {\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n const success = await copyToClipboard(copyValue);\n if (!success) {\n return;\n }\n\n setCopied(true);\n setTooltipOpen(true);\n onCopy?.();\n\n window.setTimeout(() => {\n setTooltipOpen(false);\n window.setTimeout(() => setCopied(false), 200);\n }, 1000);\n };\n\n const handleMouseEnter = () => {\n if (!copied) {\n setTooltipOpen(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!copied) {\n setTooltipOpen(false);\n }\n };\n\n const trigger = (\n <span onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <IconButton\n type='button'\n size='sm'\n aria-label={`Copy ${copyValue}`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n void handleCopy();\n }}\n >\n <CopyIcon />\n </IconButton>\n </span>\n );\n\n return (\n <Tooltip\n trigger={trigger}\n open={tooltipOpen}\n side='top'\n sideOffset={4}\n size='sm'\n contentAlignment='center'\n interactive={false}\n hideArrow\n portal={false}\n >\n {copied ? 'Copied!' : copyTooltipLabel}\n </Tooltip>\n );\n};\n\nconst Breadcrumb = ({\n label,\n size = 'md',\n current = false,\n headingAs = 'h1',\n showCopyAction = false,\n copyValue,\n copyTooltipLabel,\n href,\n onClick,\n onEdit,\n editMaxLength = DEFAULT_EDIT_MAX_LENGTH,\n onCopy,\n}: BreadcrumbProps) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState(label);\n const [editMinWidth, setEditMinWidth] = useState<number | undefined>();\n const editInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (!isEditing) {\n setEditValue(label);\n }\n }, [isEditing, label]);\n\n useEffect(() => {\n if (!isEditing) {\n setEditMinWidth(undefined);\n return;\n }\n\n const input = editInputRef.current;\n if (input == null) {\n return;\n }\n\n setEditMinWidth(input.offsetWidth);\n input.focus();\n input.select();\n }, [isEditing]);\n\n const commitEdit = () => {\n if (!isEditing) {\n return;\n }\n\n setIsEditing(false);\n if (editValue !== label) {\n onEdit?.(editValue);\n }\n };\n\n const inlineActions = !isEditing && (showCopyAction || onEdit) && (\n <HStack spacing={ACTION_BUTTON_GAP} align='center'>\n {onEdit && (\n <IconButton\n type='button'\n size='sm'\n aria-label={`Edit ${label}`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setIsEditing(true);\n }}\n >\n <EditIcon />\n </IconButton>\n )}\n {showCopyAction && copyValue != null && (\n <BreadcrumbCopyButton\n copyValue={copyValue}\n copyTooltipLabel={copyTooltipLabel}\n onCopy={onCopy}\n />\n )}\n </HStack>\n );\n\n if (isEditing) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <InlineEditInput\n ref={editInputRef}\n $size={size}\n $current={current}\n $editMinWidth={editMinWidth}\n size='md'\n aria-label={`Edit ${label}`}\n maxLength={editMaxLength}\n value={editValue}\n onChange={(event: ChangeEvent<HTMLInputElement>) => setEditValue(event.target.value)}\n onBlur={commitEdit}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n commitEdit();\n }\n if (event.key === 'Escape') {\n setEditValue(label);\n setIsEditing(false);\n }\n }}\n />\n </CrumbRow>\n );\n }\n\n if (current) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <CurrentLabel\n $size={size}\n size={size === 'lg' ? 'lg' : 'md'}\n weight='bold'\n color='primary'\n as={headingAs}\n >\n {label}\n </CurrentLabel>\n {inlineActions}\n </CrumbRow>\n );\n }\n\n if (href == null && onClick != null) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <AncestorNavButton type='button' onClick={onClick} $size={size}>\n {label}\n </AncestorNavButton>\n {inlineActions}\n </CrumbRow>\n );\n }\n\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <AncestorNavLink to={href ?? ''} $size={size}>\n {label}\n </AncestorNavLink>\n {inlineActions}\n </CrumbRow>\n );\n};\n\nexport default Breadcrumb;\n","import styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { intersperse } from 'design-system/lib/intersperse';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nimport Breadcrumb, {\n type BreadcrumbHeadingAs,\n type BreadcrumbProps,\n type BreadcrumbSize,\n} from './Breadcrumb';\n\nexport type BreadcrumbsItemProps = Omit<BreadcrumbProps, 'size' | 'current' | 'headingAs'>;\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbsItemProps[];\n size?: BreadcrumbSize;\n /**\n * Overrides the heading element rendered for the current crumb. Defaults to `h1`; use `h2` or\n * lower when the page already has an `h1`.\n */\n headingAs?: BreadcrumbHeadingAs;\n 'aria-label'?: string;\n className?: string;\n};\n\nconst BreadcrumbList = styled.ol`\n max-width: 100%;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n min-width: 0;\n`;\n\nconst BreadcrumbListItem = styled.li`\n display: flex;\n align-items: center;\n min-width: 0;\n`;\n\nconst Separator = styled.span<{ $size: BreadcrumbSize }>`\n padding: 0 ${Spacing[2]};\n color: ${({ theme }) => theme.color.text.tertiary};\n user-select: none;\n ${({ $size }) => ($size === 'lg' ? paragraphMixins.lg : paragraphMixins.md)};\n`;\n\nexport const Breadcrumbs = ({\n items,\n size = 'md',\n headingAs = 'h1',\n 'aria-label': ariaLabel = 'Breadcrumbs',\n className,\n}: BreadcrumbsProps) => {\n if (items.length === 0) {\n return null;\n }\n\n const crumbNodes = items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <BreadcrumbListItem\n key={`${item.label}-${index}`}\n aria-current={isCurrent ? 'page' : undefined}\n >\n <Breadcrumb {...item} size={size} current={isCurrent} headingAs={headingAs} />\n </BreadcrumbListItem>\n );\n });\n\n const listItems = intersperse(crumbNodes, (separatorIndex: number) => (\n <BreadcrumbListItem key={`separator-${separatorIndex}`} aria-hidden='true'>\n <Separator $size={size}>/</Separator>\n </BreadcrumbListItem>\n ));\n\n return (\n <nav aria-label={ariaLabel} className={className}>\n <BreadcrumbList>{listItems}</BreadcrumbList>\n </nav>\n );\n};\n\nexport default Breadcrumbs;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Breadcrumbs-W8hIhdHD.mjs","names":["Input"],"sources":["../components/Breadcrumbs/Breadcrumb.tsx","../components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { type ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { CopyIcon, EditIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport Input from 'design-system/components/Input';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { focusOutline } from 'design-system/mixins/focus';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nexport type BreadcrumbSize = 'md' | 'lg';\n\nexport type BreadcrumbHeadingAs = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nconst COPY_TOOLTIP_LABEL = 'Copy ID';\nconst DEFAULT_EDIT_MAX_LENGTH = 100;\n\nexport type BreadcrumbProps = {\n label: string;\n size?: BreadcrumbSize;\n current?: boolean;\n /**\n * Overrides the heading element rendered for the current crumb. Defaults to `h1`; use `h2` or\n * lower when the page already has an `h1`.\n */\n headingAs?: BreadcrumbHeadingAs;\n showCopyAction?: boolean;\n copyValue?: string;\n copyTooltipLabel?: string;\n /** Internal dashboard path (e.g. `/cases`). Passed to the router `Link` as `to`. */\n href?: string;\n /**\n * Activates a non-current crumb without a route change, for trails that navigate in-place (e.g.\n * a control panel drilling into a sub-panel). Ignored when `href` is set.\n */\n onClick?: () => void;\n onEdit?: (newLabel: string) => void;\n editMaxLength?: number;\n onCopy?: () => void;\n};\n\nconst LABEL_ACTION_GAP = Spacing[2];\nconst ACTION_BUTTON_GAP = Spacing[1];\n\nconst CrumbRow = styled(HStack)`\n align-items: center;\n min-width: 0;\n`;\n\nconst crumbLayoutStyles = (size: BreadcrumbSize) => css`\n display: inline-flex;\n align-items: center;\n min-width: 0;\n min-height: ${({ theme }) => theme.element.height.xs};\n ${\n size === 'lg'\n ? css`\n font-size: ${({ theme }) => theme.text.paragraph.lg.fontSize};\n line-height: ${({ theme }) => theme.text.paragraph.lg.lineHeight};\n `\n : css``\n };\n`;\n\nconst editInputTextStyles = (size: BreadcrumbSize, current: boolean) => {\n if (current) {\n return size === 'lg' ? paragraphMixins.lgBold : paragraphMixins.mdBold;\n }\n return size === 'lg' ? paragraphMixins.lg : paragraphMixins.md;\n};\n\nconst ancestorCrumbStyles = css<{ $size: BreadcrumbSize }>`\n ${paragraphMixins.md};\n color: ${({ theme }) => theme.color.text.secondary};\n text-decoration: none;\n transition: color ${TransitionDuration.ExtraFast} ease-out;\n ${focusOutline}\n ${({ $size }) => crumbLayoutStyles($size)}\n\n &:hover {\n color: ${({ theme }) => theme.color.text.primary};\n }\n`;\n\nconst AncestorNavLink = styled(Link)<{ $size: BreadcrumbSize }>`\n ${ancestorCrumbStyles}\n`;\n\nconst AncestorNavButton = styled.button<{ $size: BreadcrumbSize }>`\n ${ancestorCrumbStyles}\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n`;\n\nconst InlineEditInput = styled(Input)<{\n $size: BreadcrumbSize;\n $current: boolean;\n $editMinWidth?: number;\n}>`\n margin: 0;\n padding: 2px 10px;\n width: auto;\n max-width: 100%;\n min-width: ${({ $editMinWidth }) => ($editMinWidth != null ? `${$editMinWidth}px` : '0')};\n field-sizing: content;\n display: inline-block;\n ${({ $size, $current }) => editInputTextStyles($size, $current)};\n background-color: ${({ theme }) => theme.color.background.primary};\n color: ${({ theme }) => theme.color.text.primary};\n\n &:not(:focus) {\n border-color: transparent;\n }\n\n &:hover:not(:disabled) {\n border-style: solid;\n }\n`;\n\nconst CurrentLabel = styled(Paragraph)<{ $size: BreadcrumbSize }>`\n margin: 0;\n ${({ $size }) => crumbLayoutStyles($size)}\n`;\n\nconst copyToClipboard = async (value: string): Promise<boolean> => {\n try {\n if (navigator.clipboard?.writeText == null) {\n return false;\n }\n\n await navigator.clipboard.writeText(value);\n return true;\n } catch {\n return false;\n }\n};\n\nconst BreadcrumbCopyButton = ({\n copyValue,\n copyTooltipLabel = COPY_TOOLTIP_LABEL,\n onCopy,\n}: {\n copyValue: string;\n copyTooltipLabel?: string;\n onCopy?: () => void;\n}) => {\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n const success = await copyToClipboard(copyValue);\n if (!success) {\n return;\n }\n\n setCopied(true);\n setTooltipOpen(true);\n onCopy?.();\n\n window.setTimeout(() => {\n setTooltipOpen(false);\n window.setTimeout(() => setCopied(false), 200);\n }, 1000);\n };\n\n const handleMouseEnter = () => {\n if (!copied) {\n setTooltipOpen(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!copied) {\n setTooltipOpen(false);\n }\n };\n\n const trigger = (\n <span onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <IconButton\n type='button'\n size='sm'\n aria-label={`Copy ${copyValue}`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n void handleCopy();\n }}\n >\n <CopyIcon />\n </IconButton>\n </span>\n );\n\n return (\n <Tooltip\n trigger={trigger}\n open={tooltipOpen}\n side='top'\n sideOffset={4}\n size='sm'\n contentAlignment='center'\n interactive={false}\n hideArrow\n portal={false}\n >\n {copied ? 'Copied!' : copyTooltipLabel}\n </Tooltip>\n );\n};\n\nconst Breadcrumb = ({\n label,\n size = 'md',\n current = false,\n headingAs = 'h1',\n showCopyAction = false,\n copyValue,\n copyTooltipLabel,\n href,\n onClick,\n onEdit,\n editMaxLength = DEFAULT_EDIT_MAX_LENGTH,\n onCopy,\n}: BreadcrumbProps) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState(label);\n const [editMinWidth, setEditMinWidth] = useState<number | undefined>();\n const editInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (!isEditing) {\n setEditValue(label);\n }\n }, [isEditing, label]);\n\n useEffect(() => {\n if (!isEditing) {\n setEditMinWidth(undefined);\n return;\n }\n\n const input = editInputRef.current;\n if (input == null) {\n return;\n }\n\n setEditMinWidth(input.offsetWidth);\n input.focus();\n input.select();\n }, [isEditing]);\n\n const commitEdit = () => {\n if (!isEditing) {\n return;\n }\n\n setIsEditing(false);\n if (editValue !== label) {\n onEdit?.(editValue);\n }\n };\n\n const inlineActions = !isEditing && (showCopyAction || onEdit) && (\n <HStack spacing={ACTION_BUTTON_GAP} align='center'>\n {onEdit && (\n <IconButton\n type='button'\n size='sm'\n aria-label={`Edit ${label}`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setIsEditing(true);\n }}\n >\n <EditIcon />\n </IconButton>\n )}\n {showCopyAction && copyValue != null && (\n <BreadcrumbCopyButton\n copyValue={copyValue}\n copyTooltipLabel={copyTooltipLabel}\n onCopy={onCopy}\n />\n )}\n </HStack>\n );\n\n if (isEditing) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <InlineEditInput\n ref={editInputRef}\n $size={size}\n $current={current}\n $editMinWidth={editMinWidth}\n size='md'\n aria-label={`Edit ${label}`}\n maxLength={editMaxLength}\n value={editValue}\n onChange={(event: ChangeEvent<HTMLInputElement>) => setEditValue(event.target.value)}\n onBlur={commitEdit}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n commitEdit();\n }\n if (event.key === 'Escape') {\n setEditValue(label);\n setIsEditing(false);\n }\n }}\n />\n </CrumbRow>\n );\n }\n\n if (current) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <CurrentLabel\n $size={size}\n size={size === 'lg' ? 'lg' : 'md'}\n weight='bold'\n color='primary'\n as={headingAs}\n >\n {label}\n </CurrentLabel>\n {inlineActions}\n </CrumbRow>\n );\n }\n\n if (href == null && onClick != null) {\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <AncestorNavButton type='button' onClick={onClick} $size={size}>\n {label}\n </AncestorNavButton>\n {inlineActions}\n </CrumbRow>\n );\n }\n\n return (\n <CrumbRow spacing={LABEL_ACTION_GAP}>\n <AncestorNavLink to={href ?? ''} $size={size}>\n {label}\n </AncestorNavLink>\n {inlineActions}\n </CrumbRow>\n );\n};\n\nexport default Breadcrumb;\n","import styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { intersperse } from 'design-system/lib/intersperse';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nimport Breadcrumb, {\n type BreadcrumbHeadingAs,\n type BreadcrumbProps,\n type BreadcrumbSize,\n} from './Breadcrumb';\n\nexport type BreadcrumbsItemProps = Omit<BreadcrumbProps, 'size' | 'current' | 'headingAs'>;\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbsItemProps[];\n size?: BreadcrumbSize;\n /**\n * Overrides the heading element rendered for the current crumb. Defaults to `h1`; use `h2` or\n * lower when the page already has an `h1`.\n */\n headingAs?: BreadcrumbHeadingAs;\n 'aria-label'?: string;\n className?: string;\n};\n\nconst BreadcrumbList = styled.ol`\n max-width: 100%;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n min-width: 0;\n`;\n\nconst BreadcrumbListItem = styled.li`\n display: flex;\n align-items: center;\n min-width: 0;\n`;\n\nconst Separator = styled.span<{ $size: BreadcrumbSize }>`\n padding: 0 ${Spacing[2]};\n color: ${({ theme }) => theme.color.text.tertiary};\n user-select: none;\n ${({ $size }) => ($size === 'lg' ? paragraphMixins.lg : paragraphMixins.md)};\n`;\n\nexport const Breadcrumbs = ({\n items,\n size = 'md',\n headingAs = 'h1',\n 'aria-label': ariaLabel = 'Breadcrumbs',\n className,\n}: BreadcrumbsProps) => {\n if (items.length === 0) {\n return null;\n }\n\n const crumbNodes = items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <BreadcrumbListItem\n key={`${item.label}-${index}`}\n aria-current={isCurrent ? 'page' : undefined}\n >\n <Breadcrumb {...item} size={size} current={isCurrent} headingAs={headingAs} />\n </BreadcrumbListItem>\n );\n });\n\n const listItems = intersperse(crumbNodes, (separatorIndex: number) => (\n <BreadcrumbListItem key={`separator-${separatorIndex}`} aria-hidden='true'>\n <Separator $size={size}>/</Separator>\n </BreadcrumbListItem>\n ));\n\n return (\n <nav aria-label={ariaLabel} className={className}>\n <BreadcrumbList>{listItems}</BreadcrumbList>\n </nav>\n );\n};\n\nexport default Breadcrumbs;\n"],"mappings":"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"}
@@ -37,7 +37,7 @@ interface ButtonProps extends ComponentPropsWithoutRef<'button'>, Omit<PseudoCla
37
37
  isPending?: boolean;
38
38
  /**
39
39
  * Icon rendered to the left of the button label.
40
- * Import from `@persona-id/icons`.
40
+ * Import from `@persona/icons`.
41
41
  */
42
42
  prefixIcon?: ReactNode;
43
43
  /**
@@ -51,7 +51,7 @@ interface ButtonProps extends ComponentPropsWithoutRef<'button'>, Omit<PseudoCla
51
51
  prefixIconType?: 'basic' | 'inherit';
52
52
  /**
53
53
  * Icon rendered to the right of the button label.
54
- * Import from `@persona-id/icons`.
54
+ * Import from `@persona/icons`.
55
55
  */
56
56
  suffixIcon?: ReactNode;
57
57
  /**
@@ -98,4 +98,4 @@ interface ButtonProps extends ComponentPropsWithoutRef<'button'>, Omit<PseudoCla
98
98
  declare const Button: _$react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & _$react.RefAttributes<HTMLButtonElement>>;
99
99
  //#endregion
100
100
  export { SuffixIconContainer as a, StyledButton as i, ButtonChildren as n, ButtonProps as r, Button as t };
101
- //# sourceMappingURL=Button-9p469xA1.d.mts.map
101
+ //# sourceMappingURL=Button-Vd5O4DUp.d.mts.map
package/dist/Button.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as SuffixIconContainer, i as StyledButton, n as ButtonChildren, r as ButtonProps, t as Button } from "./Button-9p469xA1.mjs";
1
+ import { a as SuffixIconContainer, i as StyledButton, n as ButtonChildren, r as ButtonProps, t as Button } from "./Button-Vd5O4DUp.mjs";
2
2
  export { ButtonChildren, ButtonProps, StyledButton, SuffixIconContainer, Button as default };
@@ -1,4 +1,4 @@
1
- import { n as IconButtonProps } from "./IconButton-BSES_-6g.mjs";
1
+ import { n as IconButtonProps } from "./IconButton-BHCmHIx5.mjs";
2
2
  import * as _$styled_components0 from "styled-components";
3
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
@@ -5,11 +5,11 @@ import ConfigContext from "./lib/ConfigContext.mjs";
5
5
  import { HeadlessAriaButton } from "./lib/HeadlessAriaButton.mjs";
6
6
  import { TruncatedText } from "./lib/TruncatedText.mjs";
7
7
  import { i as Paragraph, n as Heading$1 } from "./Text-RcEfNFLx.mjs";
8
- import { a as Tooltip } from "./Tooltip-C6AR1xT-.mjs";
8
+ import { a as Tooltip } from "./Tooltip-BvDbmXak.mjs";
9
9
  import { Z_INDICES } from "./lib/zindex.mjs";
10
- import { n as Button$1, t as IconButton } from "./IconButton-CIWiEsS-.mjs";
11
- import { n as DropdownMenu_default } from "./DropdownMenu-DGYexb7s.mjs";
12
- import { t as DropdownButton } from "./DropdownButton-DKLjJylQ.mjs";
10
+ import { n as Button$1, t as IconButton } from "./IconButton-P8w0JDI5.mjs";
11
+ import { n as DropdownMenu_default } from "./DropdownMenu-D25WBCah.mjs";
12
+ import { t as DropdownButton } from "./DropdownButton-BI3IFJun.mjs";
13
13
  import { t as LoadingShimmer } from "./LoadingShimmer-Dsc_RCCf.mjs";
14
14
  import { t as intersperse } from "./intersperse-vOYvFOfF.mjs";
15
15
  import { Color, Spacing, Typography } from "@persona/design-tokens";
@@ -408,4 +408,4 @@ var Card_default = Object.assign(Card, {
408
408
  //#endregion
409
409
  export { Card_default as t };
410
410
 
411
- //# sourceMappingURL=CardV2-C9z0Hr-c.mjs.map
411
+ //# sourceMappingURL=CardV2-C0fcOUdp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardV2-C9z0Hr-c.mjs","names":["CardLoadingShimmer","Heading","Button","DropdownMenu"],"sources":["../components/CardV2/SectionHeading.tsx","../components/CardV2/Section.tsx","../components/CardV2/Card.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, FC, ReactElement, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { ChevronDownIcon, MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownButton from 'design-system/components/DropdownButton';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Heading } from 'design-system/components/Text';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { HeadlessAriaButton } from 'design-system/lib/HeadlessAriaButton';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport type { HeadingSize } from 'design-system/mixins/text';\nimport type { IconAction, MenuAction, TextAction } from 'design-system/types/Action';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\nconst StickerContainer = styled.div`\n display: flex;\n max-width: 180px;\n`;\n\ntype AccordionContainerProps = {\n $isTopSection: boolean;\n $expanded: boolean;\n};\nconst AccordionContainer = styled.div<AccordionContainerProps>`\n transition: opacity ${TransitionDuration.Faster};\n position: absolute;\n opacity: 0;\n\n height: 12px;\n width: 12px;\n display: flex;\n align-items: center;\n /* Because of padding in the top section heading we need to offset differently. */\n /* We want a 12px icon to be off-center in 24px padding, 4px on the right and 8px on the left */\n left: ${({ $isTopSection }) => ($isTopSection ? '8px' : '-16px')};\n /* center the icon vertically */\n top: calc(50% - 6px);\n\n border-radius: 1px;\n\n & svg {\n transition: transform ${TransitionDuration.Faster} ease-out;\n transform: rotate(${({ $expanded }) => ($expanded ? '0' : '-90deg')});\n }\n`;\n\nconst HeaderButton = styled(HeadlessAriaButton)`\n min-width: 0;\n flex: 1;\n\n &:hover ~ ${AccordionContainer} {\n opacity: 1;\n }\n\n &:focus-visible ~ ${AccordionContainer} {\n opacity: 1;\n ${focusStyle}\n }\n`;\n\ntype HeadingContainerProps = {\n $isTopSection: boolean;\n $divider: boolean;\n $hasFooter: boolean;\n $isExpanded: boolean;\n};\nconst HeadingContainer = styled(HStack)<HeadingContainerProps>`\n position: relative;\n\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[4]} ${Spacing[5]};\n `}\n ${({ $divider }) =>\n $divider &&\n css`\n border-bottom: 1px solid ${Color.BorderDivider};\n `}\n ${({ $isTopSection, $hasFooter, $isExpanded }) =>\n $isTopSection &&\n !$hasFooter &&\n !$isExpanded &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 16px padding.\n padding-bottom: ${Spacing[3]};\n `}\n`;\n\ntype StyledHeadingProps = {\n $isCollapsible: boolean;\n $isTopSection: boolean;\n size: HeadingSize;\n};\nconst StyledHeading = styled(Heading)<StyledHeadingProps>`\n flex: 1;\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n line-height: 24px; // We want an adjusted line-height to hit the target header size.\n overflow: hidden;\n\n ${({ $isCollapsible }) => $isCollapsible && 'cursor: pointer;'}\n ${({ $isTopSection }) =>\n !$isTopSection &&\n css`\n ${Typography.TextLargeBold};\n `}\n`;\n\nconst isIconAction = (action: IconAction | TextAction): action is IconAction => 'icon' in action;\n\nconst ButtonRow: FC<{\n actions: (IconAction | TextAction)[];\n menuActions: MenuAction[];\n}> = ({ actions, menuActions }) => {\n const buttons = actions\n .filter((action) => !action.hidden)\n .map((action, i) => {\n const key = isIconAction(action)\n ? (action.id ?? action.ariaLabel ?? `action-${i}`)\n : (action.id ?? action.label ?? `action-${i}`);\n\n const button = isIconAction(action) ? (\n <IconButton\n id={action.id}\n key={key}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n aria-label={action.ariaLabel}\n size='sm'\n >\n {action.icon}\n </IconButton>\n ) : (\n <Button\n id={action.id}\n key={key}\n aria-label={action.ariaLabel}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n variant={action.variant ?? 'basic'}\n size='sm'\n width='auto'\n prefixIcon={action.prefixIcon}\n suffixIcon={action.suffixIcon}\n >\n {action.label}\n </Button>\n );\n\n return action.tooltip ? (\n <Tooltip key={key} {...action.tooltipProps} trigger={button}>\n {action.tooltip}\n </Tooltip>\n ) : (\n button\n );\n });\n\n return (\n <HStack>\n {buttons}\n {menuActions.length > 0 && (\n <DropdownButton\n variant='text'\n width='icon'\n size='sm'\n suffixIcon={undefined}\n style={{ justifySelf: 'flex-end' }}\n aria-label='More actions'\n menuProps={{\n portal: true,\n }}\n menuItems={menuActions\n .filter((action) => !action.hidden)\n .map((action) => (\n <DropdownMenu.Item\n id={action.id ?? action.label}\n key={action.id ?? action.label}\n onClick={action.onClick}\n disabled={action.disabled}\n >\n {action.label}\n </DropdownMenu.Item>\n ))}\n >\n <MoreIcon />\n </DropdownButton>\n )}\n </HStack>\n );\n};\n\n/**\n * Private component for rendering the heading of a section, both the primary card heading and\n * section headings.\n */\nexport const SectionHeading: FC<{\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Whether this heading's section has content.\n */\n sectionHasContent: boolean;\n\n /**\n * Whether this heading's section has a footer.\n */\n hasFooter: boolean;\n\n loading: boolean;\n\n /**\n * Title text to render in the heading.\n */\n title: string;\n\n /**\n * Optional sticker to render after the title.\n */\n sticker?: ReactElement;\n\n /**\n * Optional icon to render before the title text.\n *\n * Usage of this icon slot should be avoided if possible to maintain left-text alignement. If\n * using this icon slot for a section heading use it for all sections.\n */\n leftDecorativeIcon?: ReactElement;\n\n /**\n * Optional actions to render in the heading.\n * Only accepts IconButton or Button components with specific prop restrictions.\n */\n actions?: (IconAction | TextAction | undefined)[];\n\n /**\n * Optional actions to render in the heading in a menu.\n */\n menuActions?: (MenuAction | undefined)[];\n\n /**\n * Optional custom content to render in the heading in the button row. Prefer setting `actions` or\n * `menuActions` if possible.\n */\n headerActionsRowContent?: ReactNode;\n\n /**\n * Callback to toggle collapsed state of the section. Omit to disable collapsing.\n */\n toggle?: () => void;\n\n /**\n * Whether the section is currently expanded or collapsed.\n */\n isExpanded: boolean;\n\n /**\n * Optional props to pass to the heading element. Accepts an `as` key to override the\n * rendered heading level. Defaults to `h2` for the top-level card heading and `h3` for\n * section headings so that the document heading hierarchy reflects the visual hierarchy.\n */\n headingProps?: Omit<ComponentPropsWithoutRef<'span'>, 'color'> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n };\n}> = ({\n isTopSection,\n sectionHasContent,\n hasFooter,\n loading,\n title,\n actions = [],\n menuActions = [],\n headerActionsRowContent,\n sticker,\n leftDecorativeIcon,\n toggle,\n isExpanded,\n headingProps,\n}) => {\n const renderButtonRow = actions.length > 0 || menuActions.length > 0;\n const { as: headingAs, ...restHeadingProps } = headingProps ?? {};\n\n return (\n <HeadingContainer\n $isTopSection={isTopSection}\n $hasFooter={hasFooter}\n $isExpanded={isExpanded}\n $divider={isTopSection && isExpanded && sectionHasContent}\n align='center'\n justify='space-between'\n spacing={Spacing[2]}\n >\n {loading ? (\n <CardLoadingShimmer height='24px' width='200px' />\n ) : (\n <>\n {/* https://github.com/adobe/react-spectrum/issues/7444 */}\n <HeaderButton slot='trigger' isDisabled={!toggle}>\n <StyledHeading\n forwardedAs={headingAs ?? (isTopSection ? 'h2' : 'h3')}\n size='xsm'\n $isCollapsible={!!toggle}\n $isTopSection={isTopSection}\n aria-label={title}\n {...restHeadingProps}\n >\n {leftDecorativeIcon}\n <TruncatedText>{title}</TruncatedText>\n {sticker && <StickerContainer>{sticker}</StickerContainer>}\n </StyledHeading>\n </HeaderButton>\n {headerActionsRowContent}\n {renderButtonRow && (\n <ButtonRow\n actions={actions.filter((action) => action != null)}\n menuActions={menuActions.filter((action) => action != null)}\n />\n )}\n {toggle && (\n <AccordionContainer $isTopSection={isTopSection} $expanded={isExpanded}>\n <ChevronDownIcon />\n </AccordionContainer>\n )}\n </>\n )}\n </HeadingContainer>\n );\n};\n","import type { ComponentProps, FC, ReactNode } from 'react';\nimport { Disclosure, DisclosurePanel } from 'react-aria-components';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { SectionHeading } from 'design-system/components/CardV2/SectionHeading';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { intersperse } from 'design-system/lib/intersperse';\nimport { Z_INDICES } from 'design-system/lib/zindex';\n\nconst FooterParagraph = styled(Paragraph)`\n line-height: 16px;\n`;\n\ntype FooterContainerProps = {\n $divider: boolean;\n};\nconst FooterContainer = styled.div<FooterContainerProps>`\n ${({ $divider }) =>\n $divider &&\n css`\n border-top: 1px solid ${Color.BorderDivider};\n `}\n padding: ${Spacing[3]} ${Spacing[5]} ${Spacing[2]};\n`;\n\ntype MaybeStickyContainerProps = {\n $enabled: boolean;\n $bottom?: boolean;\n};\nconst MaybeStickyContainer = styled.div<MaybeStickyContainerProps>`\n ${({ $enabled }) =>\n $enabled &&\n css`\n // We are using sticky positioning here to have consistent scrollbar behavior between\n // different card configurations. Usage of sticky allows us to keep the scroll container at\n // the top of the card DOM structure regardless of whether the heading or footer is sticky.\n //\n // This also afaict helps eliminate the need to carry height values through the card DOM\n // structure to the content container (and possibly needing to adjust heights for heading and footer).\n position: sticky;\n top: 0;\n background-color: ${({ theme }) => theme.color.background.primary};\n z-index: ${Z_INDICES.sticky};\n `}\n\n ${({ $bottom = false }) =>\n $bottom &&\n css`\n top: unset;\n bottom: 0;\n `}\n`;\n\ntype StyledDisclosureProps = {\n $fullHeight: boolean;\n};\nconst StyledDisclosure = styled(Disclosure)<StyledDisclosureProps>`\n display: flex;\n flex-direction: column;\n gap: 0;\n ${({ $fullHeight }) =>\n $fullHeight &&\n css`\n height: 100%;\n `}\n`;\n\ntype StyledDisclosurePanelProps = {\n $isTopSection: boolean;\n};\nconst StyledDisclosurePanel = styled(DisclosurePanel)<StyledDisclosurePanelProps>`\n flex: 1;\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n // Safari does not support hidden='until-found' so react-aria uses display: none instead.\n // Since react-aria is using display to hide content we need to not set display ourselves.\n &:not([aria-hidden='true']) {\n display: flex;\n }\n `}\n`;\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\ntype SectionContentContainerProps = {\n $isTopSection: boolean;\n $hasHeading: boolean;\n $hasFooter: boolean;\n};\nconst SectionContentContainer = styled.div<SectionContentContainerProps>`\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[5]};\n display: flex;\n flex-direction: column;\n gap: ${Spacing[5]};\n flex: 1;\n /* Prevent grid blowout https://css-tricks.com/preventing-a-grid-blowout/ */\n min-width: 0;\n `}\n\n ${({ $isTopSection, $hasHeading }) =>\n !$isTopSection &&\n $hasHeading &&\n css`\n padding-top: ${Spacing[3]};\n `}\n\n ${({ $isTopSection, $hasFooter }) =>\n $isTopSection &&\n !$hasFooter &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 24px padding.\n padding-bottom: 20px;\n `}\n`;\n\n/**\n * Private component for rendering sections of the card, both the primary card section and\n * individual sections.\n */\nexport const Section: FC<{\n children?: ReactNode;\n\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Available props for the section's heading.\n */\n heading?: Pick<\n ComponentProps<typeof SectionHeading>,\n | 'title'\n | 'actions'\n | 'menuActions'\n | 'headerActionsRowContent'\n | 'sticker'\n | 'leftDecorativeIcon'\n | 'headingProps'\n >;\n\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the section is collapsible.\n */\n collapsible?: boolean;\n\n /**\n * Whether the section heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Whether the section is initially collapsed.\n */\n defaultCollapsed?: boolean;\n\n /**\n * If true, the section will be rendered in a loading state.\n */\n loading?: boolean;\n\n /**\n * Set height of the loading state.\n */\n loadingProps?: {\n height?: string;\n };\n\n /**\n * Control display of the empty state.\n */\n empty?: boolean;\n\n /**\n * Props for the empty state.\n */\n emptyProps?: {\n /**\n * Empty state message.\n */\n message?: string;\n };\n\n fullHeight?: boolean;\n}> = ({\n children,\n isTopSection,\n heading,\n footer,\n footerContent,\n loading = false,\n loadingProps,\n empty = false,\n emptyProps,\n defaultCollapsed = false,\n collapsible = false,\n sticky = false,\n fullHeight = false,\n}) => {\n let content: ReactNode;\n if (loading) {\n content = <CardLoadingShimmer height={loadingProps?.height ?? '200px'} width='100%' />;\n } else if (empty) {\n content = <Paragraph>{emptyProps?.message ?? 'No data collected'}</Paragraph>;\n } else {\n content = children;\n }\n\n const hasFooter = !!(footer || footerContent);\n const hasContent = !!content;\n\n // Normally we would have `isDisabled` as well but there's a react-aria-components quirk\n // that sets `hidden` on the disclosure panel if both `defaultExpanded` and `isDisabled` are true.\n // https://github.com/adobe/react-spectrum/issues/7444\n return (\n <StyledDisclosure defaultExpanded={!defaultCollapsed} $fullHeight={fullHeight}>\n {({ isExpanded, state }) => (\n <>\n {heading && (\n <MaybeStickyContainer $enabled={sticky}>\n <SectionHeading\n isTopSection={isTopSection}\n hasFooter={hasFooter}\n sectionHasContent={hasContent}\n loading={loading}\n toggle={collapsible ? state.toggle : undefined}\n isExpanded={isExpanded}\n {...heading}\n />\n </MaybeStickyContainer>\n )}\n {hasContent && (\n <StyledDisclosurePanel $isTopSection={isTopSection}>\n <SectionContentContainer\n $isTopSection={isTopSection}\n $hasHeading={!!heading}\n $hasFooter={hasFooter}\n >\n {content}\n </SectionContentContainer>\n </StyledDisclosurePanel>\n )}\n {hasFooter && (\n <MaybeStickyContainer $enabled={sticky} $bottom>\n <FooterContainer $divider={hasContent}>\n {loading ? (\n <HStack>\n <CardLoadingShimmer height='16px' width='120px' />\n <CardLoadingShimmer height='16px' width='120px' />\n </HStack>\n ) : (\n <>\n {footer && (\n <FooterParagraph size='sm'>\n <HStack spacing={Spacing[1]}>\n {intersperse(\n footer\n .filter((item) => item != null)\n .map((item, i) => <span key={`footer-item-${i}`}>{item}</span>),\n (i) => (\n <span key={i}>•</span>\n ),\n )}\n </HStack>\n </FooterParagraph>\n )}\n {footerContent}\n </>\n )}\n </FooterContainer>\n </MaybeStickyContainer>\n )}\n </>\n )}\n </StyledDisclosure>\n );\n};\n","import { type ComponentProps, createContext, type FC, type ReactNode, useContext } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\nimport { Section } from 'design-system/components/CardV2/Section';\nimport { Paragraph } from 'design-system/components/Text';\nimport ConfigContext from 'design-system/lib/ConfigContext';\nimport { intersperse } from 'design-system/lib/intersperse';\n\nconst CardContainer = styled.div`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n background-color: ${({ theme }) => theme.color.background.primary};\n // Height has been tricky here.\n // inherit seems to work well for both grid and flexbox layouts. In a grid we want this\n // container to receive the full cell height, In a flexbox we want this container to flex, maintaining\n // the minimum height for it's content.\n height: inherit;\n overflow-y: auto;\n\n box-sizing: border-box;\n // Small buffer so that content is not scrolling right on the edge of the card.\n border-bottom: 4px solid ${({ theme }) => theme.color.background.primary};\n`;\n\nconst CardContext = createContext<{ isStacked?: boolean }>({});\n\nconst Divider = styled.hr`\n margin: 0;\n border: none;\n border-top: 1px solid ${Color.BorderDivider};\n`;\n\n/**\n * Renders a card section.\n */\nconst PublicSection: FC<\n Pick<\n ComponentProps<typeof Section>,\n | 'children'\n | 'collapsible'\n | 'defaultCollapsed'\n | 'heading'\n | 'loading'\n | 'loadingProps'\n | 'empty'\n | 'emptyProps'\n >\n> = (props) => {\n return <Section isTopSection={false} {...props} />;\n};\n\n/**\n * Render the card in a \"stacked\" mode. Used for rendering multiple cards on top of each other\n * that appear visually as a single card.\n */\nconst Stacked: FC<{\n children: ReactNode[];\n}> = ({ children }) => {\n return (\n <CardContext.Provider value={{ isStacked: true }}>\n <CardContainer>\n {intersperse(children, (i) => (\n <Divider key={i} />\n ))}\n </CardContainer>\n </CardContext.Provider>\n );\n};\n\nconst DEFAULT_ERROR_MESSAGE = '🔍 Oops, something went wrong loading this card.';\n\n/**\n * Renders a PDS Card.\n *\n * To render sections of the card use `<Card.Section>...</Card.Section>`\n */\nconst Card: FC<\n {\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the card heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Force the card to render in an errored state. Errors bubbling up from children will also\n * render the errored state.\n */\n errored?: boolean;\n\n /**\n * Props for the errored state.\n */\n erroredProps?: {\n /**\n * Message to render in the errored state.\n */\n message?: string;\n /**\n * Callback to handle errors. Note this callback is only called when the error is bubbled up\n * from children, not when `errored` is set to true.\n */\n onError?: (error: Error) => void;\n };\n\n containerProps?: ComponentProps<typeof CardContainer>;\n\n /**\n * Whether the card should render its content with 100% height. This is a bit of a hack for cards\n * that want full control of their content and don't use sections.\n */\n fullHeight?: boolean;\n } & ComponentProps<typeof PublicSection>\n> = ({ children, errored, erroredProps, containerProps, sticky = true, ...sectionProps }) => {\n const { isStacked = false } = useContext(CardContext);\n const { captureException } = useContext(ConfigContext);\n\n const errorFallback = (\n <Section isTopSection {...sectionProps}>\n <Paragraph>{erroredProps?.message ?? DEFAULT_ERROR_MESSAGE}</Paragraph>\n </Section>\n );\n\n const section = (\n <Section isTopSection sticky={sticky} {...sectionProps}>\n {children}\n </Section>\n );\n\n return (\n <ErrorBoundary\n fallback={\n isStacked ? (\n errorFallback\n ) : (\n <CardContainer {...containerProps}>{errorFallback}</CardContainer>\n )\n }\n onError={erroredProps?.onError ?? ((error) => captureException(error))}\n >\n {isStacked ? (\n <>{errored ? <>{errorFallback}</> : <>{section}</>}</>\n ) : (\n <CardContainer {...containerProps}>\n {errored ? <>{errorFallback}</> : <>{section}</>}\n </CardContainer>\n )}\n </ErrorBoundary>\n );\n};\n\nexport default Object.assign(Card, {\n Section: PublicSection,\n Stacked: Stacked,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"CardV2-C0fcOUdp.mjs","names":["CardLoadingShimmer","Heading","Button","DropdownMenu"],"sources":["../components/CardV2/SectionHeading.tsx","../components/CardV2/Section.tsx","../components/CardV2/Card.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, FC, ReactElement, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { ChevronDownIcon, MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownButton from 'design-system/components/DropdownButton';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Heading } from 'design-system/components/Text';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { HeadlessAriaButton } from 'design-system/lib/HeadlessAriaButton';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport type { HeadingSize } from 'design-system/mixins/text';\nimport type { IconAction, MenuAction, TextAction } from 'design-system/types/Action';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\nconst StickerContainer = styled.div`\n display: flex;\n max-width: 180px;\n`;\n\ntype AccordionContainerProps = {\n $isTopSection: boolean;\n $expanded: boolean;\n};\nconst AccordionContainer = styled.div<AccordionContainerProps>`\n transition: opacity ${TransitionDuration.Faster};\n position: absolute;\n opacity: 0;\n\n height: 12px;\n width: 12px;\n display: flex;\n align-items: center;\n /* Because of padding in the top section heading we need to offset differently. */\n /* We want a 12px icon to be off-center in 24px padding, 4px on the right and 8px on the left */\n left: ${({ $isTopSection }) => ($isTopSection ? '8px' : '-16px')};\n /* center the icon vertically */\n top: calc(50% - 6px);\n\n border-radius: 1px;\n\n & svg {\n transition: transform ${TransitionDuration.Faster} ease-out;\n transform: rotate(${({ $expanded }) => ($expanded ? '0' : '-90deg')});\n }\n`;\n\nconst HeaderButton = styled(HeadlessAriaButton)`\n min-width: 0;\n flex: 1;\n\n &:hover ~ ${AccordionContainer} {\n opacity: 1;\n }\n\n &:focus-visible ~ ${AccordionContainer} {\n opacity: 1;\n ${focusStyle}\n }\n`;\n\ntype HeadingContainerProps = {\n $isTopSection: boolean;\n $divider: boolean;\n $hasFooter: boolean;\n $isExpanded: boolean;\n};\nconst HeadingContainer = styled(HStack)<HeadingContainerProps>`\n position: relative;\n\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[4]} ${Spacing[5]};\n `}\n ${({ $divider }) =>\n $divider &&\n css`\n border-bottom: 1px solid ${Color.BorderDivider};\n `}\n ${({ $isTopSection, $hasFooter, $isExpanded }) =>\n $isTopSection &&\n !$hasFooter &&\n !$isExpanded &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 16px padding.\n padding-bottom: ${Spacing[3]};\n `}\n`;\n\ntype StyledHeadingProps = {\n $isCollapsible: boolean;\n $isTopSection: boolean;\n size: HeadingSize;\n};\nconst StyledHeading = styled(Heading)<StyledHeadingProps>`\n flex: 1;\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n line-height: 24px; // We want an adjusted line-height to hit the target header size.\n overflow: hidden;\n\n ${({ $isCollapsible }) => $isCollapsible && 'cursor: pointer;'}\n ${({ $isTopSection }) =>\n !$isTopSection &&\n css`\n ${Typography.TextLargeBold};\n `}\n`;\n\nconst isIconAction = (action: IconAction | TextAction): action is IconAction => 'icon' in action;\n\nconst ButtonRow: FC<{\n actions: (IconAction | TextAction)[];\n menuActions: MenuAction[];\n}> = ({ actions, menuActions }) => {\n const buttons = actions\n .filter((action) => !action.hidden)\n .map((action, i) => {\n const key = isIconAction(action)\n ? (action.id ?? action.ariaLabel ?? `action-${i}`)\n : (action.id ?? action.label ?? `action-${i}`);\n\n const button = isIconAction(action) ? (\n <IconButton\n id={action.id}\n key={key}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n aria-label={action.ariaLabel}\n size='sm'\n >\n {action.icon}\n </IconButton>\n ) : (\n <Button\n id={action.id}\n key={key}\n aria-label={action.ariaLabel}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n variant={action.variant ?? 'basic'}\n size='sm'\n width='auto'\n prefixIcon={action.prefixIcon}\n suffixIcon={action.suffixIcon}\n >\n {action.label}\n </Button>\n );\n\n return action.tooltip ? (\n <Tooltip key={key} {...action.tooltipProps} trigger={button}>\n {action.tooltip}\n </Tooltip>\n ) : (\n button\n );\n });\n\n return (\n <HStack>\n {buttons}\n {menuActions.length > 0 && (\n <DropdownButton\n variant='text'\n width='icon'\n size='sm'\n suffixIcon={undefined}\n style={{ justifySelf: 'flex-end' }}\n aria-label='More actions'\n menuProps={{\n portal: true,\n }}\n menuItems={menuActions\n .filter((action) => !action.hidden)\n .map((action) => (\n <DropdownMenu.Item\n id={action.id ?? action.label}\n key={action.id ?? action.label}\n onClick={action.onClick}\n disabled={action.disabled}\n >\n {action.label}\n </DropdownMenu.Item>\n ))}\n >\n <MoreIcon />\n </DropdownButton>\n )}\n </HStack>\n );\n};\n\n/**\n * Private component for rendering the heading of a section, both the primary card heading and\n * section headings.\n */\nexport const SectionHeading: FC<{\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Whether this heading's section has content.\n */\n sectionHasContent: boolean;\n\n /**\n * Whether this heading's section has a footer.\n */\n hasFooter: boolean;\n\n loading: boolean;\n\n /**\n * Title text to render in the heading.\n */\n title: string;\n\n /**\n * Optional sticker to render after the title.\n */\n sticker?: ReactElement;\n\n /**\n * Optional icon to render before the title text.\n *\n * Usage of this icon slot should be avoided if possible to maintain left-text alignement. If\n * using this icon slot for a section heading use it for all sections.\n */\n leftDecorativeIcon?: ReactElement;\n\n /**\n * Optional actions to render in the heading.\n * Only accepts IconButton or Button components with specific prop restrictions.\n */\n actions?: (IconAction | TextAction | undefined)[];\n\n /**\n * Optional actions to render in the heading in a menu.\n */\n menuActions?: (MenuAction | undefined)[];\n\n /**\n * Optional custom content to render in the heading in the button row. Prefer setting `actions` or\n * `menuActions` if possible.\n */\n headerActionsRowContent?: ReactNode;\n\n /**\n * Callback to toggle collapsed state of the section. Omit to disable collapsing.\n */\n toggle?: () => void;\n\n /**\n * Whether the section is currently expanded or collapsed.\n */\n isExpanded: boolean;\n\n /**\n * Optional props to pass to the heading element. Accepts an `as` key to override the\n * rendered heading level. Defaults to `h2` for the top-level card heading and `h3` for\n * section headings so that the document heading hierarchy reflects the visual hierarchy.\n */\n headingProps?: Omit<ComponentPropsWithoutRef<'span'>, 'color'> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n };\n}> = ({\n isTopSection,\n sectionHasContent,\n hasFooter,\n loading,\n title,\n actions = [],\n menuActions = [],\n headerActionsRowContent,\n sticker,\n leftDecorativeIcon,\n toggle,\n isExpanded,\n headingProps,\n}) => {\n const renderButtonRow = actions.length > 0 || menuActions.length > 0;\n const { as: headingAs, ...restHeadingProps } = headingProps ?? {};\n\n return (\n <HeadingContainer\n $isTopSection={isTopSection}\n $hasFooter={hasFooter}\n $isExpanded={isExpanded}\n $divider={isTopSection && isExpanded && sectionHasContent}\n align='center'\n justify='space-between'\n spacing={Spacing[2]}\n >\n {loading ? (\n <CardLoadingShimmer height='24px' width='200px' />\n ) : (\n <>\n {/* https://github.com/adobe/react-spectrum/issues/7444 */}\n <HeaderButton slot='trigger' isDisabled={!toggle}>\n <StyledHeading\n forwardedAs={headingAs ?? (isTopSection ? 'h2' : 'h3')}\n size='xsm'\n $isCollapsible={!!toggle}\n $isTopSection={isTopSection}\n aria-label={title}\n {...restHeadingProps}\n >\n {leftDecorativeIcon}\n <TruncatedText>{title}</TruncatedText>\n {sticker && <StickerContainer>{sticker}</StickerContainer>}\n </StyledHeading>\n </HeaderButton>\n {headerActionsRowContent}\n {renderButtonRow && (\n <ButtonRow\n actions={actions.filter((action) => action != null)}\n menuActions={menuActions.filter((action) => action != null)}\n />\n )}\n {toggle && (\n <AccordionContainer $isTopSection={isTopSection} $expanded={isExpanded}>\n <ChevronDownIcon />\n </AccordionContainer>\n )}\n </>\n )}\n </HeadingContainer>\n );\n};\n","import type { ComponentProps, FC, ReactNode } from 'react';\nimport { Disclosure, DisclosurePanel } from 'react-aria-components';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { SectionHeading } from 'design-system/components/CardV2/SectionHeading';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { intersperse } from 'design-system/lib/intersperse';\nimport { Z_INDICES } from 'design-system/lib/zindex';\n\nconst FooterParagraph = styled(Paragraph)`\n line-height: 16px;\n`;\n\ntype FooterContainerProps = {\n $divider: boolean;\n};\nconst FooterContainer = styled.div<FooterContainerProps>`\n ${({ $divider }) =>\n $divider &&\n css`\n border-top: 1px solid ${Color.BorderDivider};\n `}\n padding: ${Spacing[3]} ${Spacing[5]} ${Spacing[2]};\n`;\n\ntype MaybeStickyContainerProps = {\n $enabled: boolean;\n $bottom?: boolean;\n};\nconst MaybeStickyContainer = styled.div<MaybeStickyContainerProps>`\n ${({ $enabled }) =>\n $enabled &&\n css`\n // We are using sticky positioning here to have consistent scrollbar behavior between\n // different card configurations. Usage of sticky allows us to keep the scroll container at\n // the top of the card DOM structure regardless of whether the heading or footer is sticky.\n //\n // This also afaict helps eliminate the need to carry height values through the card DOM\n // structure to the content container (and possibly needing to adjust heights for heading and footer).\n position: sticky;\n top: 0;\n background-color: ${({ theme }) => theme.color.background.primary};\n z-index: ${Z_INDICES.sticky};\n `}\n\n ${({ $bottom = false }) =>\n $bottom &&\n css`\n top: unset;\n bottom: 0;\n `}\n`;\n\ntype StyledDisclosureProps = {\n $fullHeight: boolean;\n};\nconst StyledDisclosure = styled(Disclosure)<StyledDisclosureProps>`\n display: flex;\n flex-direction: column;\n gap: 0;\n ${({ $fullHeight }) =>\n $fullHeight &&\n css`\n height: 100%;\n `}\n`;\n\ntype StyledDisclosurePanelProps = {\n $isTopSection: boolean;\n};\nconst StyledDisclosurePanel = styled(DisclosurePanel)<StyledDisclosurePanelProps>`\n flex: 1;\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n // Safari does not support hidden='until-found' so react-aria uses display: none instead.\n // Since react-aria is using display to hide content we need to not set display ourselves.\n &:not([aria-hidden='true']) {\n display: flex;\n }\n `}\n`;\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\ntype SectionContentContainerProps = {\n $isTopSection: boolean;\n $hasHeading: boolean;\n $hasFooter: boolean;\n};\nconst SectionContentContainer = styled.div<SectionContentContainerProps>`\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[5]};\n display: flex;\n flex-direction: column;\n gap: ${Spacing[5]};\n flex: 1;\n /* Prevent grid blowout https://css-tricks.com/preventing-a-grid-blowout/ */\n min-width: 0;\n `}\n\n ${({ $isTopSection, $hasHeading }) =>\n !$isTopSection &&\n $hasHeading &&\n css`\n padding-top: ${Spacing[3]};\n `}\n\n ${({ $isTopSection, $hasFooter }) =>\n $isTopSection &&\n !$hasFooter &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 24px padding.\n padding-bottom: 20px;\n `}\n`;\n\n/**\n * Private component for rendering sections of the card, both the primary card section and\n * individual sections.\n */\nexport const Section: FC<{\n children?: ReactNode;\n\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Available props for the section's heading.\n */\n heading?: Pick<\n ComponentProps<typeof SectionHeading>,\n | 'title'\n | 'actions'\n | 'menuActions'\n | 'headerActionsRowContent'\n | 'sticker'\n | 'leftDecorativeIcon'\n | 'headingProps'\n >;\n\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the section is collapsible.\n */\n collapsible?: boolean;\n\n /**\n * Whether the section heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Whether the section is initially collapsed.\n */\n defaultCollapsed?: boolean;\n\n /**\n * If true, the section will be rendered in a loading state.\n */\n loading?: boolean;\n\n /**\n * Set height of the loading state.\n */\n loadingProps?: {\n height?: string;\n };\n\n /**\n * Control display of the empty state.\n */\n empty?: boolean;\n\n /**\n * Props for the empty state.\n */\n emptyProps?: {\n /**\n * Empty state message.\n */\n message?: string;\n };\n\n fullHeight?: boolean;\n}> = ({\n children,\n isTopSection,\n heading,\n footer,\n footerContent,\n loading = false,\n loadingProps,\n empty = false,\n emptyProps,\n defaultCollapsed = false,\n collapsible = false,\n sticky = false,\n fullHeight = false,\n}) => {\n let content: ReactNode;\n if (loading) {\n content = <CardLoadingShimmer height={loadingProps?.height ?? '200px'} width='100%' />;\n } else if (empty) {\n content = <Paragraph>{emptyProps?.message ?? 'No data collected'}</Paragraph>;\n } else {\n content = children;\n }\n\n const hasFooter = !!(footer || footerContent);\n const hasContent = !!content;\n\n // Normally we would have `isDisabled` as well but there's a react-aria-components quirk\n // that sets `hidden` on the disclosure panel if both `defaultExpanded` and `isDisabled` are true.\n // https://github.com/adobe/react-spectrum/issues/7444\n return (\n <StyledDisclosure defaultExpanded={!defaultCollapsed} $fullHeight={fullHeight}>\n {({ isExpanded, state }) => (\n <>\n {heading && (\n <MaybeStickyContainer $enabled={sticky}>\n <SectionHeading\n isTopSection={isTopSection}\n hasFooter={hasFooter}\n sectionHasContent={hasContent}\n loading={loading}\n toggle={collapsible ? state.toggle : undefined}\n isExpanded={isExpanded}\n {...heading}\n />\n </MaybeStickyContainer>\n )}\n {hasContent && (\n <StyledDisclosurePanel $isTopSection={isTopSection}>\n <SectionContentContainer\n $isTopSection={isTopSection}\n $hasHeading={!!heading}\n $hasFooter={hasFooter}\n >\n {content}\n </SectionContentContainer>\n </StyledDisclosurePanel>\n )}\n {hasFooter && (\n <MaybeStickyContainer $enabled={sticky} $bottom>\n <FooterContainer $divider={hasContent}>\n {loading ? (\n <HStack>\n <CardLoadingShimmer height='16px' width='120px' />\n <CardLoadingShimmer height='16px' width='120px' />\n </HStack>\n ) : (\n <>\n {footer && (\n <FooterParagraph size='sm'>\n <HStack spacing={Spacing[1]}>\n {intersperse(\n footer\n .filter((item) => item != null)\n .map((item, i) => <span key={`footer-item-${i}`}>{item}</span>),\n (i) => (\n <span key={i}>•</span>\n ),\n )}\n </HStack>\n </FooterParagraph>\n )}\n {footerContent}\n </>\n )}\n </FooterContainer>\n </MaybeStickyContainer>\n )}\n </>\n )}\n </StyledDisclosure>\n );\n};\n","import { type ComponentProps, createContext, type FC, type ReactNode, useContext } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\nimport { Section } from 'design-system/components/CardV2/Section';\nimport { Paragraph } from 'design-system/components/Text';\nimport ConfigContext from 'design-system/lib/ConfigContext';\nimport { intersperse } from 'design-system/lib/intersperse';\n\nconst CardContainer = styled.div`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n background-color: ${({ theme }) => theme.color.background.primary};\n // Height has been tricky here.\n // inherit seems to work well for both grid and flexbox layouts. In a grid we want this\n // container to receive the full cell height, In a flexbox we want this container to flex, maintaining\n // the minimum height for it's content.\n height: inherit;\n overflow-y: auto;\n\n box-sizing: border-box;\n // Small buffer so that content is not scrolling right on the edge of the card.\n border-bottom: 4px solid ${({ theme }) => theme.color.background.primary};\n`;\n\nconst CardContext = createContext<{ isStacked?: boolean }>({});\n\nconst Divider = styled.hr`\n margin: 0;\n border: none;\n border-top: 1px solid ${Color.BorderDivider};\n`;\n\n/**\n * Renders a card section.\n */\nconst PublicSection: FC<\n Pick<\n ComponentProps<typeof Section>,\n | 'children'\n | 'collapsible'\n | 'defaultCollapsed'\n | 'heading'\n | 'loading'\n | 'loadingProps'\n | 'empty'\n | 'emptyProps'\n >\n> = (props) => {\n return <Section isTopSection={false} {...props} />;\n};\n\n/**\n * Render the card in a \"stacked\" mode. Used for rendering multiple cards on top of each other\n * that appear visually as a single card.\n */\nconst Stacked: FC<{\n children: ReactNode[];\n}> = ({ children }) => {\n return (\n <CardContext.Provider value={{ isStacked: true }}>\n <CardContainer>\n {intersperse(children, (i) => (\n <Divider key={i} />\n ))}\n </CardContainer>\n </CardContext.Provider>\n );\n};\n\nconst DEFAULT_ERROR_MESSAGE = '🔍 Oops, something went wrong loading this card.';\n\n/**\n * Renders a PDS Card.\n *\n * To render sections of the card use `<Card.Section>...</Card.Section>`\n */\nconst Card: FC<\n {\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the card heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Force the card to render in an errored state. Errors bubbling up from children will also\n * render the errored state.\n */\n errored?: boolean;\n\n /**\n * Props for the errored state.\n */\n erroredProps?: {\n /**\n * Message to render in the errored state.\n */\n message?: string;\n /**\n * Callback to handle errors. Note this callback is only called when the error is bubbled up\n * from children, not when `errored` is set to true.\n */\n onError?: (error: Error) => void;\n };\n\n containerProps?: ComponentProps<typeof CardContainer>;\n\n /**\n * Whether the card should render its content with 100% height. This is a bit of a hack for cards\n * that want full control of their content and don't use sections.\n */\n fullHeight?: boolean;\n } & ComponentProps<typeof PublicSection>\n> = ({ children, errored, erroredProps, containerProps, sticky = true, ...sectionProps }) => {\n const { isStacked = false } = useContext(CardContext);\n const { captureException } = useContext(ConfigContext);\n\n const errorFallback = (\n <Section isTopSection {...sectionProps}>\n <Paragraph>{erroredProps?.message ?? DEFAULT_ERROR_MESSAGE}</Paragraph>\n </Section>\n );\n\n const section = (\n <Section isTopSection sticky={sticky} {...sectionProps}>\n {children}\n </Section>\n );\n\n return (\n <ErrorBoundary\n fallback={\n isStacked ? (\n errorFallback\n ) : (\n <CardContainer {...containerProps}>{errorFallback}</CardContainer>\n )\n }\n onError={erroredProps?.onError ?? ((error) => captureException(error))}\n >\n {isStacked ? (\n <>{errored ? <>{errorFallback}</> : <>{section}</>}</>\n ) : (\n <CardContainer {...containerProps}>\n {errored ? <>{errorFallback}</> : <>{section}</>}\n </CardContainer>\n )}\n </ErrorBoundary>\n );\n};\n\nexport default Object.assign(Card, {\n Section: PublicSection,\n Stacked: Stacked,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,uBAAqB,OAAO,eAAe;oBAC7B,EAAE,YAAY,MAAM,KAAK,aAAa;;AAG1D,MAAM,mBAAmB,OAAO,GAAG;;;;AASnC,MAAM,qBAAqB,OAAO,GAA4B;gCACZ;;;;;;;;;;WAUvC,EAAE,oBAAqB,gBAAgB,QAAQ,QAAS;;;;;;;oCAOb;yBAC7B,EAAE,gBAAiB,YAAY,MAAM,SAAU;;;AAIxE,MAAM,eAAe,OAAO,mBAAmB;;;;cAIjC,mBAAmB;;;;sBAIX,mBAAmB;;MAEnC,WAAW;;;AAUjB,MAAM,mBAAmB,OAAO,OAAO;;;KAGlC,EAAE,oBACH,iBACA,GAAG;iBACU,QAAQ,GAAG,GAAG,QAAQ,GAAG;MACpC;KACD,EAAE,eACH,YACA,GAAG;iCAC0B,MAAM,cAAc;MAC/C;KACD,EAAE,eAAe,YAAY,kBAC9B,iBACA,CAAC,cACD,CAAC,eACD,GAAG;;;;wBAIiB,QAAQ,GAAG;MAC7B;;AAQN,MAAM,gBAAgB,OAAOC,UAAQ;;;;SAI5B,QAAQ,GAAG;;;;KAIf,EAAE,qBAAqB,kBAAkB,mBAAmB;KAC5D,EAAE,oBACH,CAAC,iBACD,GAAG;QACC,WAAW,cAAc;MAC3B;;AAGN,MAAM,gBAAgB,WAA0D,UAAU;AAE1F,MAAM,aAGA,EAAE,SAAS,kBAAkB;AAqDjC,QACE,qBAAC,QAAD,EAAA,UAAA,CArDc,QACb,QAAQ,WAAW,CAAC,OAAO,OAAO,CAClC,KAAK,QAAQ,MAAM;EAClB,MAAM,MAAM,aAAa,OAAO,GAC3B,OAAO,MAAM,OAAO,aAAa,UAAU,MAC3C,OAAO,MAAM,OAAO,SAAS,UAAU;EAE5C,MAAM,SAAS,aAAa,OAAO,GACjC,oBAAC,YAAD;GACE,IAAI,OAAO;GAEX,IAAI,OAAO;GACX,UAAU,MAAM;AACd,MAAE,iBAAiB;AACnB,WAAO,OAAO,UAAU,EAAE;;GAE5B,UAAU,OAAO;GACjB,cAAY,OAAO;GACnB,MAAK;aAEJ,OAAO;GACG,EAXN,IAWM,GAEb,oBAACC,UAAD;GACE,IAAI,OAAO;GAEX,cAAY,OAAO;GACnB,IAAI,OAAO;GACX,UAAU,MAAM;AACd,MAAE,iBAAiB;AACnB,WAAO,OAAO,UAAU,EAAE;;GAE5B,UAAU,OAAO;GACjB,SAAS,OAAO,WAAW;GAC3B,MAAK;GACL,OAAM;GACN,YAAY,OAAO;GACnB,YAAY,OAAO;aAElB,OAAO;GACD,EAfF,IAeE;AAGX,SAAO,OAAO,UACZ,oBAAC,SAAD;GAAmB,GAAI,OAAO;GAAc,SAAS;aAClD,OAAO;GACA,EAFI,IAEJ,GAEV;GAMM,EACP,YAAY,SAAS,KACpB,oBAAC,gBAAD;EACE,SAAQ;EACR,OAAM;EACN,MAAK;EACL,YAAY,KAAA;EACZ,OAAO,EAAE,aAAa,YAAY;EAClC,cAAW;EACX,WAAW,EACT,QAAQ,MACT;EACD,WAAW,YACR,QAAQ,WAAW,CAAC,OAAO,OAAO,CAClC,KAAK,WACJ,oBAACC,qBAAa,MAAd;GACE,IAAI,OAAO,MAAM,OAAO;GAExB,SAAS,OAAO;GAChB,UAAU,OAAO;aAEhB,OAAO;GACU,EALb,OAAO,MAAM,OAAO,MAKP,CACpB;YAEJ,oBAAC,UAAD,EAAY,CAAA;EACG,CAAA,CAEZ,EAAA,CAAA;;;;;;AAQb,MAAa,kBAuEP,EACJ,cACA,mBACA,WACA,SACA,OACA,UAAU,EAAE,EACZ,cAAc,EAAE,EAChB,yBACA,SACA,oBACA,QACA,YACA,mBACI;CACJ,MAAM,kBAAkB,QAAQ,SAAS,KAAK,YAAY,SAAS;CACnE,MAAM,EAAE,IAAI,WAAW,GAAG,qBAAqB,gBAAgB,EAAE;AAEjE,QACE,oBAAC,kBAAD;EACE,eAAe;EACf,YAAY;EACZ,aAAa;EACb,UAAU,gBAAgB,cAAc;EACxC,OAAM;EACN,SAAQ;EACR,SAAS,QAAQ;YAEhB,UACC,oBAACH,sBAAD;GAAoB,QAAO;GAAO,OAAM;GAAU,CAAA,GAElD,qBAAA,UAAA,EAAA,UAAA;GAEE,oBAAC,cAAD;IAAc,MAAK;IAAU,YAAY,CAAC;cACxC,qBAAC,eAAD;KACE,aAAa,cAAc,eAAe,OAAO;KACjD,MAAK;KACL,gBAAgB,CAAC,CAAC;KAClB,eAAe;KACf,cAAY;KACZ,GAAI;eANN;MAQG;MACD,oBAAC,eAAD,EAAA,UAAgB,OAAsB,CAAA;MACrC,WAAW,oBAAC,kBAAD,EAAA,UAAmB,SAA2B,CAAA;MAC5C;;IACH,CAAA;GACd;GACA,mBACC,oBAAC,WAAD;IACE,SAAS,QAAQ,QAAQ,WAAW,UAAU,KAAK;IACnD,aAAa,YAAY,QAAQ,WAAW,UAAU,KAAK;IAC3D,CAAA;GAEH,UACC,oBAAC,oBAAD;IAAoB,eAAe;IAAc,WAAW;cAC1D,oBAAC,iBAAD,EAAmB,CAAA;IACA,CAAA;GAEtB,EAAA,CAAA;EAEY,CAAA;;;;ACjVvB,MAAM,kBAAkB,OAAO,UAAU;;;AAOzC,MAAM,kBAAkB,OAAO,GAAyB;KACnD,EAAE,eACH,YACA,GAAG;8BACuB,MAAM,cAAc;MAC5C;aACO,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG;;AAOpD,MAAM,uBAAuB,OAAO,GAA8B;KAC7D,EAAE,eACH,YACA,GAAG;;;;;;;;;2BASoB,EAAE,YAAY,MAAM,MAAM,WAAW,QAAQ;iBACvD,UAAU,OAAO;MAC5B;;KAED,EAAE,UAAU,YACb,WACA,GAAG;;;MAGD;;AAMN,MAAM,mBAAmB,OAAO,WAAW;;;;KAItC,EAAE,kBACH,eACA,GAAG;;MAED;;AAMN,MAAM,wBAAwB,OAAO,gBAAgB;;KAEhD,EAAE,oBACH,iBACA,GAAG;;;;;;MAMD;;AAGN,MAAM,qBAAqB,OAAO,eAAe;oBAC7B,EAAE,YAAY,MAAM,KAAK,aAAa;;AAQ1D,MAAM,0BAA0B,OAAO,GAAiC;KACnE,EAAE,oBACH,iBACA,GAAG;iBACU,QAAQ,GAAG;;;aAGf,QAAQ,GAAG;;;;MAIlB;;KAED,EAAE,eAAe,kBAClB,CAAC,iBACD,eACA,GAAG;qBACc,QAAQ,GAAG;MAC1B;;OAEC,EAAE,eAAe,iBAClB,iBACA,CAAC,cACD,GAAG;;;;;MAKH;;;;;;AAON,MAAa,WA4EP,EACJ,UACA,cACA,SACA,QACA,eACA,UAAU,OACV,cACA,QAAQ,OACR,YACA,mBAAmB,OACnB,cAAc,OACd,SAAS,OACT,aAAa,YACT;CACJ,IAAI;AACJ,KAAI,QACF,WAAU,oBAAC,oBAAD;EAAoB,QAAQ,cAAc,UAAU;EAAS,OAAM;EAAS,CAAA;UAC7E,MACT,WAAU,oBAAC,WAAD,EAAA,UAAY,YAAY,WAAW,qBAAgC,CAAA;KAE7E,WAAU;CAGZ,MAAM,YAAY,CAAC,EAAE,UAAU;CAC/B,MAAM,aAAa,CAAC,CAAC;AAKrB,QACE,oBAAC,kBAAD;EAAkB,iBAAiB,CAAC;EAAkB,aAAa;aAC/D,EAAE,YAAY,YACd,qBAAA,UAAA,EAAA,UAAA;GACG,WACC,oBAAC,sBAAD;IAAsB,UAAU;cAC9B,oBAAC,gBAAD;KACgB;KACH;KACX,mBAAmB;KACV;KACT,QAAQ,cAAc,MAAM,SAAS,KAAA;KACzB;KACZ,GAAI;KACJ,CAAA;IACmB,CAAA;GAExB,cACC,oBAAC,uBAAD;IAAuB,eAAe;cACpC,oBAAC,yBAAD;KACE,eAAe;KACf,aAAa,CAAC,CAAC;KACf,YAAY;eAEX;KACuB,CAAA;IACJ,CAAA;GAEzB,aACC,oBAAC,sBAAD;IAAsB,UAAU;IAAQ,SAAA;cACtC,oBAAC,iBAAD;KAAiB,UAAU;eACxB,UACC,qBAAC,QAAD,EAAA,UAAA,CACE,oBAAC,oBAAD;MAAoB,QAAO;MAAO,OAAM;MAAU,CAAA,EAClD,oBAAC,oBAAD;MAAoB,QAAO;MAAO,OAAM;MAAU,CAAA,CAC3C,EAAA,CAAA,GAET,qBAAA,UAAA,EAAA,UAAA,CACG,UACC,oBAAC,iBAAD;MAAiB,MAAK;gBACpB,oBAAC,QAAD;OAAQ,SAAS,QAAQ;iBACtB,YACC,OACG,QAAQ,SAAS,QAAQ,KAAK,CAC9B,KAAK,MAAM,MAAM,oBAAC,QAAD,EAAA,UAAgC,MAAY,EAAjC,eAAe,IAAkB,CAAC,GAChE,MACC,oBAAC,QAAD,EAAA,UAAc,KAAQ,EAAX,EAAW,CAEzB;OACM,CAAA;MACO,CAAA,EAEnB,cACA,EAAA,CAAA;KAEW,CAAA;IACG,CAAA;GAExB,EAAA,CAAA;EAEY,CAAA;;;;AC9RvB,MAAM,gBAAgB,OAAO,GAAG;oBACZ,EAAE,YAAY,MAAM,KAAK,aAAa;uBACnC,EAAE,YAAY,MAAM,MAAM,WAAW,QAAQ;;;;;;;;;;8BAUtC,EAAE,YAAY,MAAM,MAAM,WAAW,QAAQ;;AAG3E,MAAM,cAAc,cAAuC,EAAE,CAAC;AAE9D,MAAM,UAAU,OAAO,EAAE;;;0BAGC,MAAM,cAAc;;;;;AAM9C,MAAM,iBAYD,UAAU;AACb,QAAO,oBAAC,SAAD;EAAS,cAAc;EAAO,GAAI;EAAS,CAAA;;;;;;AAOpD,MAAM,WAEA,EAAE,eAAe;AACrB,QACE,oBAAC,YAAY,UAAb;EAAsB,OAAO,EAAE,WAAW,MAAM;YAC9C,oBAAC,eAAD,EAAA,UACG,YAAY,WAAW,MACtB,oBAAC,SAAD,EAAmB,EAAL,EAAK,CACnB,EACY,CAAA;EACK,CAAA;;AAI3B,MAAM,wBAAwB;;;;;;AAO9B,MAAM,QA+CD,EAAE,UAAU,SAAS,cAAc,gBAAgB,SAAS,MAAM,GAAG,mBAAmB;CAC3F,MAAM,EAAE,YAAY,UAAU,WAAW,YAAY;CACrD,MAAM,EAAE,qBAAqB,WAAW,cAAc;CAEtD,MAAM,gBACJ,oBAAC,SAAD;EAAS,cAAA;EAAa,GAAI;YACxB,oBAAC,WAAD,EAAA,UAAY,cAAc,WAAW,uBAAkC,CAAA;EAC/D,CAAA;CAGZ,MAAM,UACJ,oBAAC,SAAD;EAAS,cAAA;EAAqB;EAAQ,GAAI;EACvC;EACO,CAAA;AAGZ,QACE,oBAAC,eAAD;EACE,UACE,YACE,gBAEA,oBAAC,eAAD;GAAe,GAAI;aAAiB;GAA8B,CAAA;EAGtE,SAAS,cAAc,aAAa,UAAU,iBAAiB,MAAM;YAEpE,YACC,oBAAA,UAAA,EAAA,UAAG,UAAU,oBAAA,UAAA,EAAA,UAAG,eAAiB,CAAA,GAAG,oBAAA,UAAA,EAAA,UAAG,SAAW,CAAA,EAAI,CAAA,GAEtD,oBAAC,eAAD;GAAe,GAAI;aAChB,UAAU,oBAAA,UAAA,EAAA,UAAG,eAAiB,CAAA,GAAG,oBAAA,UAAA,EAAA,UAAG,SAAW,CAAA;GAClC,CAAA;EAEJ,CAAA;;AAIpB,IAAA,eAAe,OAAO,OAAO,MAAM;CACjC,SAAS;CACA;CACV,CAAC"}
@@ -2,7 +2,7 @@ import { isChecked, isDisabled, isFocusedVisible, isHovered, isIndeterminate, is
2
2
  import { focusStyle } from "./mixins/focus.mjs";
3
3
  import "./variables/transitions.mjs";
4
4
  import { n as Stack } from "./Stack-Bl54WmhY.mjs";
5
- import { a as Tooltip, n as TextWithDashedUnderline } from "./Tooltip-C6AR1xT-.mjs";
5
+ import { a as Tooltip, n as TextWithDashedUnderline } from "./Tooltip-BvDbmXak.mjs";
6
6
  import useControlled from "./lib/useControlled.mjs";
7
7
  import { n as useFormField } from "./useFormField-DhYd6bNn.mjs";
8
8
  import { Color, Spacing, Typography } from "@persona/design-tokens";
@@ -173,4 +173,4 @@ const Checkbox = forwardRef(function Checkbox({ className, disabled, indetermina
173
173
  //#endregion
174
174
  export { Checkbox as t };
175
175
 
176
- //# sourceMappingURL=Checkbox-B0bjZbji.mjs.map
176
+ //# sourceMappingURL=Checkbox-BcuiFvK7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox-B0bjZbji.mjs","names":[],"sources":["../components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { InputCheckIcon, InputDashIcon } from '@persona/icons';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport Stack from 'design-system/components/Stack/Stack';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { TextWithDashedUnderline } from 'design-system/components/Tooltip/TextUnderlineTooltip';\nimport {\n isChecked,\n isDisabled,\n isFocusedVisible,\n isHovered,\n isIndeterminate,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport useControlled from 'design-system/lib/useControlled';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst Container = styled(Stack)<{ size: 'md' | 'sm'; disabled?: boolean }>`\n position: relative;\n cursor: pointer;\n\n flex-wrap: nowrap;\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n height: 16px;\n `}\n\n &${isDisabled} {\n cursor: default;\n }\n`;\n\nconst CheckboxBox = styled.div<{ disabled?: boolean; checked?: boolean }>`\n cursor: pointer;\n display: flex;\n flex: 0 0 16px;\n justify-content: center;\n align-items: center;\n transition:\n box-shadow ${TransitionDuration.Fast},\n background-color ${TransitionDuration.Fast},\n border-color ${TransitionDuration.Fast};\n border-radius: 3px;\n height: ${Spacing[4]};\n width: ${Spacing[4]};\n box-sizing: border-box;\n border: 1px solid ${Color.BorderInputCheckbox};\n background: ${Color.BackgroundInputDefault};\n\n svg {\n color: ${Color.BorderIconInverse};\n }\n\n &${isDisabled} {\n cursor: default;\n background: ${Color.BackgroundInputDisabled};\n border-color: ${Color.BorderInputDisabled};\n }\n\n ${({ checked }) =>\n checked &&\n css`\n border-color: ${Color.BackgroundInputActive};\n background: ${Color.BackgroundInputActive};\n\n &${isDisabled} {\n border-color: ${Color.BackgroundInputActiveDisabled};\n background: ${Color.BackgroundInputActiveDisabled};\n }\n `}\n`;\n\nconst CheckboxInput = styled.input`\n cursor: inherit;\n height: 16px;\n width: 16px;\n margin: 0;\n border: 0;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n border-color: ${Color.BorderInputCheckboxHover};\n }\n\n &${isChecked}, &${isIndeterminate} {\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n background: ${Color.BackgroundInputActiveHover};\n border-color: ${Color.BackgroundInputActiveHover};\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} ~ ${CheckboxBox} {\n ${focusStyle}\n }\n`;\n\nconst Label = styled.label<{ disabled: boolean; size: 'md' | 'sm' }>`\n cursor: inherit;\n color: ${Color.TextPrimary};\n\n ${({ size }) =>\n size === 'sm'\n ? css`\n ${Typography.TextSmall};\n line-height: 16px;\n `\n : css`\n ${Typography.TextMedium};\n\n /** Nudge text for visual alignment */\n position: relative;\n bottom: -1px;\n `}\n\n ${({ theme, disabled }) =>\n disabled &&\n css`\n cursor: default;\n color: ${theme.color.text.disabled};\n `}\n`;\n\nexport interface CheckboxProps extends Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'size'> {\n /**\n * `id` for the underlying `<input>`. If not provided a unique ID is generated\n * automatically and linked to the label.\n */\n id?: string;\n /** Called whenever the checked state changes. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /** Visible label rendered to the right of the checkbox box. */\n label?: ReactNode;\n /** Disables interaction and renders the checkbox in a muted style. */\n disabled?: boolean;\n /**\n * When true the checkbox displays a dash (−) instead of a tick, indicating a\n * mixed / partially-selected state. Sets `aria-checked=\"mixed\"` for screen readers.\n */\n indeterminate?: boolean;\n /**\n * Controlled checked state. Omit (or pass `undefined`) to let the component\n * manage state internally via `defaultChecked`.\n */\n checked?: boolean;\n /** Value submitted with a form. */\n value?: unknown;\n 'data-test'?: string;\n /** Additional props forwarded to the outer container `<div>`. */\n containerProps?: ComponentPropsWithoutRef<'div'>;\n /**\n * Size of the checkbox and its label text.\n * @defaultValue 'md'\n */\n size?: 'md' | 'sm';\n /**\n * Tooltip content to display when hovering over the label.\n * When provided, the label will be wrapped in a tooltip.\n */\n tooltip?: ReactNode;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className,\n disabled,\n indeterminate,\n onChange,\n checked: checkedProp,\n defaultChecked,\n id,\n label,\n 'data-test': dataTest,\n containerProps,\n value,\n size = 'md',\n tooltip,\n ...elemProps\n },\n ref,\n) {\n const field = useFormField({ disabled });\n const [checked, setChecked] = useControlled({\n controlledValue: checkedProp,\n default: defaultChecked,\n });\n const generatedId = useMemo(() => uniqueId('pds_checkbox__'), []);\n const inputRef = useRef<HTMLInputElement>();\n\n // Use the inputId from FormControl context if available, otherwise use the provided id or generate one\n const inputId = field.inputId || id || generatedId;\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n useEffect(() => {\n if (inputRef.current) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate, inputRef]);\n\n return (\n <Container\n direction='horizontal'\n className={className}\n data-test={dataTest}\n disabled={field.disabled}\n align='center'\n size={size}\n {...containerProps}\n >\n <CheckboxInput\n id={inputId}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref || inputRef}\n data-test={dataTest && `${dataTest}-input`}\n disabled={field.disabled}\n type='checkbox'\n checked={checkedProp == null ? undefined : checked}\n defaultChecked={defaultChecked}\n onChange={(e) => {\n setChecked(e.target.checked);\n if (onChange) {\n onChange(e);\n }\n }}\n aria-checked={indeterminate ? 'mixed' : checked}\n value={value as unknown as string}\n {...elemProps}\n />\n <CheckboxBox\n aria-hidden='true'\n disabled={field.disabled}\n checked={(checked != null && checked) || indeterminate}\n >\n {indeterminate ? <InputDashIcon /> : checked ? <InputCheckIcon /> : null}\n </CheckboxBox>\n {label &&\n (tooltip ? (\n <Tooltip\n size={size}\n trigger={\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n <TextWithDashedUnderline>{label}</TextWithDashedUnderline>\n </Label>\n }\n >\n {tooltip}\n </Tooltip>\n ) : (\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n {label}\n </Label>\n ))}\n </Container>\n );\n});\n\nexport default Checkbox;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox-BcuiFvK7.mjs","names":[],"sources":["../components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { InputCheckIcon, InputDashIcon } from '@persona/icons';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport Stack from 'design-system/components/Stack/Stack';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { TextWithDashedUnderline } from 'design-system/components/Tooltip/TextUnderlineTooltip';\nimport {\n isChecked,\n isDisabled,\n isFocusedVisible,\n isHovered,\n isIndeterminate,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport useControlled from 'design-system/lib/useControlled';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst Container = styled(Stack)<{ size: 'md' | 'sm'; disabled?: boolean }>`\n position: relative;\n cursor: pointer;\n\n flex-wrap: nowrap;\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n height: 16px;\n `}\n\n &${isDisabled} {\n cursor: default;\n }\n`;\n\nconst CheckboxBox = styled.div<{ disabled?: boolean; checked?: boolean }>`\n cursor: pointer;\n display: flex;\n flex: 0 0 16px;\n justify-content: center;\n align-items: center;\n transition:\n box-shadow ${TransitionDuration.Fast},\n background-color ${TransitionDuration.Fast},\n border-color ${TransitionDuration.Fast};\n border-radius: 3px;\n height: ${Spacing[4]};\n width: ${Spacing[4]};\n box-sizing: border-box;\n border: 1px solid ${Color.BorderInputCheckbox};\n background: ${Color.BackgroundInputDefault};\n\n svg {\n color: ${Color.BorderIconInverse};\n }\n\n &${isDisabled} {\n cursor: default;\n background: ${Color.BackgroundInputDisabled};\n border-color: ${Color.BorderInputDisabled};\n }\n\n ${({ checked }) =>\n checked &&\n css`\n border-color: ${Color.BackgroundInputActive};\n background: ${Color.BackgroundInputActive};\n\n &${isDisabled} {\n border-color: ${Color.BackgroundInputActiveDisabled};\n background: ${Color.BackgroundInputActiveDisabled};\n }\n `}\n`;\n\nconst CheckboxInput = styled.input`\n cursor: inherit;\n height: 16px;\n width: 16px;\n margin: 0;\n border: 0;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n border-color: ${Color.BorderInputCheckboxHover};\n }\n\n &${isChecked}, &${isIndeterminate} {\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n background: ${Color.BackgroundInputActiveHover};\n border-color: ${Color.BackgroundInputActiveHover};\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} ~ ${CheckboxBox} {\n ${focusStyle}\n }\n`;\n\nconst Label = styled.label<{ disabled: boolean; size: 'md' | 'sm' }>`\n cursor: inherit;\n color: ${Color.TextPrimary};\n\n ${({ size }) =>\n size === 'sm'\n ? css`\n ${Typography.TextSmall};\n line-height: 16px;\n `\n : css`\n ${Typography.TextMedium};\n\n /** Nudge text for visual alignment */\n position: relative;\n bottom: -1px;\n `}\n\n ${({ theme, disabled }) =>\n disabled &&\n css`\n cursor: default;\n color: ${theme.color.text.disabled};\n `}\n`;\n\nexport interface CheckboxProps extends Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'size'> {\n /**\n * `id` for the underlying `<input>`. If not provided a unique ID is generated\n * automatically and linked to the label.\n */\n id?: string;\n /** Called whenever the checked state changes. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /** Visible label rendered to the right of the checkbox box. */\n label?: ReactNode;\n /** Disables interaction and renders the checkbox in a muted style. */\n disabled?: boolean;\n /**\n * When true the checkbox displays a dash (−) instead of a tick, indicating a\n * mixed / partially-selected state. Sets `aria-checked=\"mixed\"` for screen readers.\n */\n indeterminate?: boolean;\n /**\n * Controlled checked state. Omit (or pass `undefined`) to let the component\n * manage state internally via `defaultChecked`.\n */\n checked?: boolean;\n /** Value submitted with a form. */\n value?: unknown;\n 'data-test'?: string;\n /** Additional props forwarded to the outer container `<div>`. */\n containerProps?: ComponentPropsWithoutRef<'div'>;\n /**\n * Size of the checkbox and its label text.\n * @defaultValue 'md'\n */\n size?: 'md' | 'sm';\n /**\n * Tooltip content to display when hovering over the label.\n * When provided, the label will be wrapped in a tooltip.\n */\n tooltip?: ReactNode;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className,\n disabled,\n indeterminate,\n onChange,\n checked: checkedProp,\n defaultChecked,\n id,\n label,\n 'data-test': dataTest,\n containerProps,\n value,\n size = 'md',\n tooltip,\n ...elemProps\n },\n ref,\n) {\n const field = useFormField({ disabled });\n const [checked, setChecked] = useControlled({\n controlledValue: checkedProp,\n default: defaultChecked,\n });\n const generatedId = useMemo(() => uniqueId('pds_checkbox__'), []);\n const inputRef = useRef<HTMLInputElement>();\n\n // Use the inputId from FormControl context if available, otherwise use the provided id or generate one\n const inputId = field.inputId || id || generatedId;\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n useEffect(() => {\n if (inputRef.current) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate, inputRef]);\n\n return (\n <Container\n direction='horizontal'\n className={className}\n data-test={dataTest}\n disabled={field.disabled}\n align='center'\n size={size}\n {...containerProps}\n >\n <CheckboxInput\n id={inputId}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref || inputRef}\n data-test={dataTest && `${dataTest}-input`}\n disabled={field.disabled}\n type='checkbox'\n checked={checkedProp == null ? undefined : checked}\n defaultChecked={defaultChecked}\n onChange={(e) => {\n setChecked(e.target.checked);\n if (onChange) {\n onChange(e);\n }\n }}\n aria-checked={indeterminate ? 'mixed' : checked}\n value={value as unknown as string}\n {...elemProps}\n />\n <CheckboxBox\n aria-hidden='true'\n disabled={field.disabled}\n checked={(checked != null && checked) || indeterminate}\n >\n {indeterminate ? <InputDashIcon /> : checked ? <InputCheckIcon /> : null}\n </CheckboxBox>\n {label &&\n (tooltip ? (\n <Tooltip\n size={size}\n trigger={\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n <TextWithDashedUnderline>{label}</TextWithDashedUnderline>\n </Label>\n }\n >\n {tooltip}\n </Tooltip>\n ) : (\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n {label}\n </Label>\n ))}\n </Container>\n );\n});\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,YAAY,OAAO,MAAM;;;;;;KAM1B,EAAE,WACH,SAAS,QACT,GAAG;;MAED;;KAED,WAAW;;;;AAKhB,MAAM,cAAc,OAAO,GAA8C;;;;;;;yBAOhC;+BACM;2BACJ;;YAE/B,QAAQ,GAAG;WACZ,QAAQ,GAAG;;sBAEA,MAAM,oBAAoB;gBAChC,MAAM,uBAAuB;;;aAGhC,MAAM,kBAAkB;;;KAGhC,WAAW;;kBAEE,MAAM,wBAAwB;oBAC5B,MAAM,oBAAoB;;;KAGzC,EAAE,cACH,WACA,GAAG;sBACe,MAAM,sBAAsB;oBAC9B,MAAM,sBAAsB;;SAEvC,WAAW;wBACI,MAAM,8BAA8B;sBACtC,MAAM,8BAA8B;;MAEpD;;AAGN,MAAM,gBAAgB,OAAO,KAAK;;;;;;;;;;KAU7B,YAAY,cAAc,KAAK,YAAY;oBAC5B,MAAM,yBAAyB;;;KAG9C,UAAU,KAAK,gBAAgB;OAC7B,YAAY,cAAc,KAAK,YAAY;oBAC9B,MAAM,2BAA2B;sBAC/B,MAAM,2BAA2B;;;;KAIlD,mBAAmB,cAAc,KAAK,YAAY;MACjD,WAAW;;;AAIjB,MAAM,QAAQ,OAAO,KAA+C;;WAEzD,MAAM,YAAY;;KAExB,EAAE,WACH,SAAS,OACL,GAAG;YACC,WAAW,UAAU;;YAGzB,GAAG;YACC,WAAW,WAAW;;;;;UAKxB;;KAEL,EAAE,OAAO,eACV,YACA,GAAG;;eAEQ,MAAM,MAAM,KAAK,SAAS;MACnC;;AA0CN,MAAa,WAAW,WAA4C,SAAS,SAC3E,EACE,WACA,UACA,eACA,UACA,SAAS,aACT,gBACA,IACA,OACA,aAAa,UACb,gBACA,OACA,OAAO,MACP,SACA,GAAG,aAEL,KACA;CACA,MAAM,QAAQ,aAAa,EAAE,UAAU,CAAC;CACxC,MAAM,CAAC,SAAS,cAAc,cAAc;EAC1C,iBAAiB;EACjB,SAAS;EACV,CAAC;CACF,MAAM,cAAc,cAAc,SAAS,iBAAiB,EAAE,EAAE,CAAC;CACjE,MAAM,WAAW,QAA0B;CAG3C,MAAM,UAAU,MAAM,WAAW,MAAM;AAGvC,qBAAoB,WAAW,SAAS,SAAS,CAAC,SAAS,CAAC;AAE5D,iBAAgB;AACd,MAAI,SAAS,QAEX,UAAS,QAAQ,gBAAgB;IAElC,CAAC,eAAe,SAAS,CAAC;AAE7B,QACE,qBAAC,WAAD;EACE,WAAU;EACC;EACX,aAAW;EACX,UAAU,MAAM;EAChB,OAAM;EACA;EACN,GAAI;YAPN;GASE,oBAAC,eAAD;IACE,IAAI;IAEJ,KAAK,OAAO;IACZ,aAAW,YAAY,GAAG,SAAS;IACnC,UAAU,MAAM;IAChB,MAAK;IACL,SAAS,eAAe,OAAO,KAAA,IAAY;IAC3B;IAChB,WAAW,MAAM;AACf,gBAAW,EAAE,OAAO,QAAQ;AAC5B,SAAI,SACF,UAAS,EAAE;;IAGf,gBAAc,gBAAgB,UAAU;IACjC;IACP,GAAI;IACJ,CAAA;GACF,oBAAC,aAAD;IACE,eAAY;IACZ,UAAU,MAAM;IAChB,SAAU,WAAW,QAAQ,WAAY;cAExC,gBAAgB,oBAAC,eAAD,EAAiB,CAAA,GAAG,UAAU,oBAAC,gBAAD,EAAkB,CAAA,GAAG;IACxD,CAAA;GACb,UACE,UACC,oBAAC,SAAD;IACQ;IACN,SACE,oBAAC,OAAD;KAAO,SAAS;KAAS,UAAU,CAAC,CAAC,MAAM;KAAgB;eACzD,oBAAC,yBAAD,EAAA,UAA0B,OAAgC,CAAA;KACpD,CAAA;cAGT;IACO,CAAA,GAEV,oBAAC,OAAD;IAAO,SAAS;IAAS,UAAU,CAAC,CAAC,MAAM;IAAgB;cACxD;IACK,CAAA;GAEF;;EAEd"}
@@ -3,14 +3,14 @@ import { n as Stack } from "./Stack-Bl54WmhY.mjs";
3
3
  import { i as Paragraph } from "./Text-RcEfNFLx.mjs";
4
4
  import { useOutsideClick } from "./lib/useOutsideClick.mjs";
5
5
  import { Z_INDICES } from "./lib/zindex.mjs";
6
- import { n as Button } from "./IconButton-CIWiEsS-.mjs";
7
- import { c as MenuList, n as IconContainer, o as MenuHeading, s as MenuItem, t as FloatingCard } from "./Menu-CPYXo61N.mjs";
6
+ import { n as Button } from "./IconButton-P8w0JDI5.mjs";
7
+ import { c as MenuList, n as IconContainer, o as MenuHeading, s as MenuItem, t as FloatingCard } from "./Menu-DmeMgN-i.mjs";
8
8
  import { n as useFormField } from "./useFormField-DhYd6bNn.mjs";
9
- import { r as InputGroup } from "./Input-BFI_e7aU.mjs";
9
+ import { r as InputGroup } from "./Input-QC6xla6I.mjs";
10
10
  import Input_default from "./components/Input/index.mjs";
11
11
  import { t as Spinner } from "./Spinner-BEPF42RW.mjs";
12
- import { n as Sticker } from "./Sticker-DbqKLe33.mjs";
13
- import { t as Checkbox } from "./Checkbox-B0bjZbji.mjs";
12
+ import { n as Sticker } from "./Sticker-CyGb9dEu.mjs";
13
+ import { t as Checkbox } from "./Checkbox-BcuiFvK7.mjs";
14
14
  import { Color, Spacing, Typography } from "@persona/design-tokens";
15
15
  import styled, { css } from "styled-components";
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -154,7 +154,11 @@ function useFilteredOptions(options, inputValue) {
154
154
  threshold: 0,
155
155
  ignoreLocation: true,
156
156
  minMatchCharLength: 1,
157
- keys: ["label", "description"]
157
+ keys: [
158
+ "label",
159
+ "description",
160
+ "keywords"
161
+ ]
158
162
  });
159
163
  return inputValue === "" ? flatOptions : Array.from(new Set(fuse.search(inputValue).map(({ item }) => item)).values());
160
164
  }, [options, inputValue]);
@@ -1421,6 +1425,7 @@ function ComboboxSingleSelectComponent({ size = "md", options, isOptionsLoading,
1421
1425
  option,
1422
1426
  label: String(option.label),
1423
1427
  description: option.description,
1428
+ keywords: option.keywords,
1424
1429
  ancestors: breadcrumb.join(" ")
1425
1430
  })), {
1426
1431
  shouldSort: false,
@@ -1430,6 +1435,7 @@ function ComboboxSingleSelectComponent({ size = "md", options, isOptionsLoading,
1430
1435
  keys: [
1431
1436
  "label",
1432
1437
  "description",
1438
+ "keywords",
1433
1439
  "ancestors"
1434
1440
  ]
1435
1441
  });
@@ -1854,4 +1860,4 @@ const Combobox = forwardRef(ComboboxComponent);
1854
1860
  //#endregion
1855
1861
  export { CaretButton as n, flattenOptions as r, Combobox as t };
1856
1862
 
1857
- //# sourceMappingURL=Combobox-BdqU5WLG.mjs.map
1863
+ //# sourceMappingURL=Combobox-B6JyLog8.mjs.map