@persona/design-system 0.10.3 → 0.10.5

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 (900) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/Accordion.d.mts +2 -2
  3. package/dist/AccordionItem.d.mts +2 -2
  4. package/dist/{Action-DT8WqfEg.d.mts → Action-Bmo8B-Q3.d.mts} +4 -4
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +3 -3
  7. package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
  8. package/dist/ArrayValueControl.d.mts +2 -2
  9. package/dist/Attribute.d.mts +4 -4
  10. package/dist/AttributeGrid.d.mts +1 -1
  11. package/dist/{Badge-Bvn3afds.mjs → Badge-8YzapjWf.mjs} +4 -4
  12. package/dist/Badge-8YzapjWf.mjs.map +1 -0
  13. package/dist/Badge.d.mts +1 -1
  14. package/dist/Banner.d.mts +1 -1
  15. package/dist/BooleanValueControl.d.mts +2 -2
  16. package/dist/BottomPanel.d.mts +1 -1
  17. package/dist/{Breadcrumb-BDbY1Ffu.d.mts → Breadcrumb-DnY8n3EL.d.mts} +8 -3
  18. package/dist/Breadcrumb.d.mts +2 -2
  19. package/dist/{Breadcrumbs-C2ThOYJ-.d.mts → Breadcrumbs-DRu_JfdI.d.mts} +3 -3
  20. package/dist/{Breadcrumbs-CQUe9VTM.mjs → Breadcrumbs-Dft2TR4v.mjs} +61 -21
  21. package/dist/Breadcrumbs-Dft2TR4v.mjs.map +1 -0
  22. package/dist/Breadcrumbs.d.mts +1 -1
  23. package/dist/{Button-CyjqQa5v.d.mts → Button-Cg8KyT5M.d.mts} +5 -5
  24. package/dist/Button.d.mts +1 -1
  25. package/dist/ButtonGroup.d.mts +1 -1
  26. package/dist/{Calendar-CkjYG7Mj.d.mts → Calendar-D-6WOLJ1.d.mts} +2 -2
  27. package/dist/Calendar.d.mts +1 -1
  28. package/dist/CalendarBase.d.mts +2 -2
  29. package/dist/CalendarCell.d.mts +1 -1
  30. package/dist/CalendarGrid.d.mts +1 -1
  31. package/dist/{Card-CzRHVUFo.d.mts → Card-CfECLwQ6.d.mts} +5 -5
  32. package/dist/{Card-BXNxWX5C.mjs → Card-DuQHyroh.mjs} +7 -7
  33. package/dist/Card-DuQHyroh.mjs.map +1 -0
  34. package/dist/Card.d.mts +1 -1
  35. package/dist/Card2.d.mts +1 -1
  36. package/dist/CardGrouping.d.mts +3 -3
  37. package/dist/{CardV2-Dp4eHSE-.mjs → CardV2-BRJbRSts.mjs} +14 -14
  38. package/dist/CardV2-BRJbRSts.mjs.map +1 -0
  39. package/dist/{Checkbox-BaJ-dGdX.mjs → Checkbox-Dr4LMKHV.mjs} +7 -7
  40. package/dist/Checkbox-Dr4LMKHV.mjs.map +1 -0
  41. package/dist/{Checkbox-B2MZShdu.d.mts → Checkbox-ZywrdT_h.d.mts} +2 -2
  42. package/dist/Checkbox.d.mts +1 -1
  43. package/dist/{CheckboxGroupField-6E5o6bYi.d.mts → CheckboxGroupField-UHpA38U5.d.mts} +4 -4
  44. package/dist/CheckboxGroupField.d.mts +1 -1
  45. package/dist/ChoicesValueControl.d.mts +2 -2
  46. package/dist/CodeHighlight.d.mts +1 -1
  47. package/dist/{Combobox-DTeu9_RR.d.mts → Combobox-BXkcQ2aY.d.mts} +4 -4
  48. package/dist/{Combobox-CBM-oY-e.mjs → Combobox-DQxaOCLA.mjs} +18 -18
  49. package/dist/Combobox-DQxaOCLA.mjs.map +1 -0
  50. package/dist/Combobox.d.mts +2 -2
  51. package/dist/{ComboboxBase-BMBdtP2Z.d.mts → ComboboxBase-D2rDQHYZ.d.mts} +8 -8
  52. package/dist/ComboboxBase.d.mts +1 -1
  53. package/dist/{ComboboxMultiSelect-DY5bAep9.d.mts → ComboboxMultiSelect-CrvB6ap5.d.mts} +3 -3
  54. package/dist/ComboboxMultiSelect.d.mts +1 -1
  55. package/dist/{ComboboxSingleSelect-1NglA-u2.d.mts → ComboboxSingleSelect-Dp0iTdDO.d.mts} +5 -5
  56. package/dist/ComboboxSingleSelect.d.mts +1 -1
  57. package/dist/{CompactBar-D9egXqY_.d.mts → CompactBar-zYfXjFmn.d.mts} +4 -4
  58. package/dist/CompactBar.d.mts +1 -1
  59. package/dist/{ConfigFormGroup-CidT_cE9.mjs → ConfigFormGroup-BCTWCws5.mjs} +5 -5
  60. package/dist/ConfigFormGroup-BCTWCws5.mjs.map +1 -0
  61. package/dist/ConfigFormGroup.d.mts +1 -1
  62. package/dist/{ControlBar-RIz-xjxs.d.mts → ControlBar-kJ_eWf8f.d.mts} +3 -3
  63. package/dist/ControlBar.d.mts +1 -1
  64. package/dist/{DataTable-l1bFeLXL.d.mts → DataTable-C000E74h.d.mts} +7 -7
  65. package/dist/{DataTable-DQ8axNfo.mjs → DataTable-DEJHWrsy.mjs} +25 -25
  66. package/dist/DataTable-DEJHWrsy.mjs.map +1 -0
  67. package/dist/DataTable.d.mts +1 -1
  68. package/dist/{DateField-CwSq77Ri.d.mts → DateField-g7malFm-.d.mts} +3 -3
  69. package/dist/DateField.d.mts +1 -1
  70. package/dist/{DatePicker-DRhY_0st.d.mts → DatePicker-8kUpFFh8.d.mts} +3 -3
  71. package/dist/{DatePicker-D0cvVbzq.mjs → DatePicker-D-_ibUd1.mjs} +20 -20
  72. package/dist/DatePicker-D-_ibUd1.mjs.map +1 -0
  73. package/dist/DatePicker.d.mts +1 -1
  74. package/dist/{DateRangePicker-CLuBLF1q.d.mts → DateRangePicker-Nv4uNuIW.d.mts} +4 -4
  75. package/dist/DateRangePicker.d.mts +1 -1
  76. package/dist/DateRangeValueControl.d.mts +3 -3
  77. package/dist/DateValueControl.d.mts +2 -2
  78. package/dist/{DropdownButton-5oNcpsOq.mjs → DropdownButton-BiFRlSVD.mjs} +4 -4
  79. package/dist/DropdownButton-BiFRlSVD.mjs.map +1 -0
  80. package/dist/DropdownButton.d.mts +3 -3
  81. package/dist/{DropdownMenu-UIrnFxfG.d.mts → DropdownMenu-CQbS7ML5.d.mts} +3 -3
  82. package/dist/{DropdownMenu-CedsmO5h.mjs → DropdownMenu-Q8S-9rXm.mjs} +4 -4
  83. package/dist/DropdownMenu-Q8S-9rXm.mjs.map +1 -0
  84. package/dist/DropdownMenu.d.mts +1 -1
  85. package/dist/{ErrorProps-DH0fzeGf.d.mts → ErrorProps-Cy-APmdC.d.mts} +2 -2
  86. package/dist/ErrorProps.d.mts +1 -1
  87. package/dist/{FieldRegistry-B5E-GN91.d.mts → FieldRegistry-a44G08fS.d.mts} +3 -3
  88. package/dist/FieldRegistry.d.mts +1 -1
  89. package/dist/{FilterBar-BQWpTi2b.d.mts → FilterBar-BpMguIXl.d.mts} +5 -5
  90. package/dist/FilterBar.d.mts +1 -1
  91. package/dist/FilterPickerMenu.d.mts +3 -3
  92. package/dist/FilterPill.d.mts +2 -2
  93. package/dist/FilterPopover.d.mts +2 -2
  94. package/dist/FloatValueControl.d.mts +2 -2
  95. package/dist/{FloatingActionBar-CpvLefPm.d.mts → FloatingActionBar-DPA9v_yH.d.mts} +2 -2
  96. package/dist/FloatingActionBar.d.mts +1 -1
  97. package/dist/FloatingPanel.d.mts +1 -1
  98. package/dist/FloatingPanelContext.d.mts +1 -1
  99. package/dist/FloatingPanelRenderer.d.mts +1 -1
  100. package/dist/FloatingToolbar.d.mts +27 -0
  101. package/dist/{FormControl-C4CiA0H-.mjs → FormControl-BztNXLn6.mjs} +7 -7
  102. package/dist/FormControl-BztNXLn6.mjs.map +1 -0
  103. package/dist/{FormControl-DEG_0oXt.d.mts → FormControl-TkYMZeBd.d.mts} +3 -3
  104. package/dist/FormControl.d.mts +1 -1
  105. package/dist/FormControlLabel.d.mts +2 -2
  106. package/dist/{FormField-mLbXDJ9B.d.mts → FormField-PBo1ctY8.d.mts} +3 -3
  107. package/dist/{FormField-C0cd1zVd.mjs → FormField-g1zQFM9T.mjs} +22 -22
  108. package/dist/FormField-g1zQFM9T.mjs.map +1 -0
  109. package/dist/FormField.d.mts +1 -1
  110. package/dist/{Grid-DXVkhyNQ.mjs → Grid-BtTuj5mR.mjs} +5 -5
  111. package/dist/Grid-BtTuj5mR.mjs.map +1 -0
  112. package/dist/Grid.d.mts +1 -1
  113. package/dist/GridItem.d.mts +1 -1
  114. package/dist/{Header-ayDu4VWE.d.mts → Header-fwlbzxYx.d.mts} +2 -2
  115. package/dist/Header.d.mts +1 -1
  116. package/dist/{HelperTooltip-BB9Vznnx.d.mts → HelperTooltip-BLfPfJRN.d.mts} +3 -3
  117. package/dist/HelperTooltip.d.mts +1 -1
  118. package/dist/HighlightedText.d.mts +3 -3
  119. package/dist/{HoverCopyableField-D-BubaRd.mjs → HoverCopyableField-CW7Jxmni.mjs} +8 -8
  120. package/dist/HoverCopyableField-CW7Jxmni.mjs.map +1 -0
  121. package/dist/HoverCopyableField.d.mts +1 -1
  122. package/dist/{I18nContext-TXS9M8t5.d.mts → I18nContext-EPmbUprm.d.mts} +3 -3
  123. package/dist/I18nContext.d.mts +1 -1
  124. package/dist/{IconButton-HWx5Hlmi.mjs → IconButton-DftINsp7.mjs} +8 -8
  125. package/dist/IconButton-DftINsp7.mjs.map +1 -0
  126. package/dist/{IconButton-Bigvu1Q4.d.mts → IconButton-KhCwTwPx.d.mts} +3 -3
  127. package/dist/IconButton.d.mts +1 -1
  128. package/dist/ImageThumbnail.d.mts +1 -1
  129. package/dist/ImageTile.d.mts +2 -2
  130. package/dist/IndexTableLayout.d.mts +6 -6
  131. package/dist/InlineCombobox.d.mts +2 -2
  132. package/dist/InlineInput.d.mts +2 -2
  133. package/dist/{Input-Dap055xf.mjs → Input-DtO3qMnE.mjs} +7 -7
  134. package/dist/Input-DtO3qMnE.mjs.map +1 -0
  135. package/dist/{Input-Bg4bi6VZ.d.mts → Input-QNjbGo38.d.mts} +4 -4
  136. package/dist/Input.d.mts +1 -1
  137. package/dist/{InputProps-Bl-G826g.d.mts → InputProps-BT7-RfnD.d.mts} +3 -3
  138. package/dist/InputProps.d.mts +1 -1
  139. package/dist/{Inserter-BKVrJ4M5.d.mts → Inserter-BnQVEqHV.d.mts} +2 -2
  140. package/dist/Inserter.d.mts +1 -1
  141. package/dist/IntegerValueControl.d.mts +2 -2
  142. package/dist/LayoutLoadingShimmer.d.mts +1 -1
  143. package/dist/LayoutLoadingSpinner.d.mts +1 -1
  144. package/dist/{Link-Cf__H8gD.mjs → Link-DKYmdL9t.mjs} +4 -4
  145. package/dist/Link-DKYmdL9t.mjs.map +1 -0
  146. package/dist/Link.d.mts +2 -2
  147. package/dist/{ListBox-eoyBHtnJ.mjs → ListBox-CDG0EAPg.mjs} +14 -14
  148. package/dist/ListBox-CDG0EAPg.mjs.map +1 -0
  149. package/dist/{ListBox-cH0dfeLN.d.mts → ListBox-D9SYTzOd.d.mts} +4 -4
  150. package/dist/ListBox.d.mts +1 -1
  151. package/dist/{ListBoxField-DOpaE0q4.d.mts → ListBoxField-CtPDd_Aw.d.mts} +5 -5
  152. package/dist/ListBoxField.d.mts +1 -1
  153. package/dist/{LoadingShimmer-Bqjdut7i.mjs → LoadingShimmer-oPIv2ESr.mjs} +3 -3
  154. package/dist/LoadingShimmer-oPIv2ESr.mjs.map +1 -0
  155. package/dist/LoadingShimmer.d.mts +2 -2
  156. package/dist/{LogicRow-CaxsteGU.d.mts → LogicRow-BWIZ7262.d.mts} +4 -4
  157. package/dist/LogicRow.d.mts +1 -1
  158. package/dist/MaskedInput.d.mts +2 -2
  159. package/dist/MatchHighlight.d.mts +1 -1
  160. package/dist/{Menu-5VknNr1T.d.mts → Menu-DizjcMbO.d.mts} +5 -5
  161. package/dist/{Menu-Dw6Rcpk6.mjs → Menu-EIT_MwK6.mjs} +7 -9
  162. package/dist/Menu-EIT_MwK6.mjs.map +1 -0
  163. package/dist/Menu.d.mts +1 -1
  164. package/dist/{MiddleTruncatedText-DoTyfMem.mjs → MiddleTruncatedText-DicQsLDG.mjs} +5 -5
  165. package/dist/MiddleTruncatedText-DicQsLDG.mjs.map +1 -0
  166. package/dist/{Modal-kjUptzg1.mjs → Modal-92O_uW8H.mjs} +10 -10
  167. package/dist/Modal-92O_uW8H.mjs.map +1 -0
  168. package/dist/{Modal-BuxggahW.d.mts → Modal-Bhwq1bQJ.d.mts} +3 -3
  169. package/dist/Modal.d.mts +1 -1
  170. package/dist/{PageHeader-DJF7nxgN.mjs → PageHeader-BzvA_NNt.mjs} +13 -6
  171. package/dist/PageHeader-BzvA_NNt.mjs.map +1 -0
  172. package/dist/{PageHeader-Czj42pyK.d.mts → PageHeader-D2QLrS7-.d.mts} +3 -3
  173. package/dist/PageHeader.d.mts +1 -1
  174. package/dist/{PageLayout-fXJW7daI.mjs → PageLayout-DCe3F76N.mjs} +9 -9
  175. package/dist/PageLayout-DCe3F76N.mjs.map +1 -0
  176. package/dist/{PageLayout-TBemv7oL.d.mts → PageLayout-DfAbeFIh.d.mts} +2 -2
  177. package/dist/PageLayout.d.mts +1 -1
  178. package/dist/{PageLayoutFrame-DzwlkNZ1.d.mts → PageLayoutFrame-CQLREOBH.d.mts} +2 -2
  179. package/dist/PageLayoutFrame.d.mts +1 -1
  180. package/dist/{PageSelector-DXCeBUoU.d.mts → PageSelector-QaKYtk6y.d.mts} +4 -4
  181. package/dist/PageSelector.d.mts +1 -1
  182. package/dist/PageSizeSelector.d.mts +1 -1
  183. package/dist/{Pagination-COcFWlha.d.mts → Pagination-DeXorbSK.d.mts} +3 -3
  184. package/dist/{Pagination-DtK-jbEY.mjs → Pagination-dTsHLVAk.mjs} +13 -13
  185. package/dist/Pagination-dTsHLVAk.mjs.map +1 -0
  186. package/dist/Pagination.d.mts +1 -1
  187. package/dist/{Pii-DueIK287.mjs → Pii-Bvh_kfGN.mjs} +4 -4
  188. package/dist/Pii-Bvh_kfGN.mjs.map +1 -0
  189. package/dist/Pii.d.mts +1 -1
  190. package/dist/{PillShell-DqglbFHe.d.mts → PillShell-B35z66jZ.d.mts} +3 -3
  191. package/dist/PillShell.d.mts +1 -1
  192. package/dist/{Popover-BcII7usF.mjs → Popover-DordjYNM.mjs} +5 -5
  193. package/dist/Popover-DordjYNM.mjs.map +1 -0
  194. package/dist/Popover.d.mts +2 -2
  195. package/dist/ProgressBar.d.mts +2 -2
  196. package/dist/{ProgressIndicator-C5sbFQcd.d.mts → ProgressIndicator-COCwRZfK.d.mts} +2 -2
  197. package/dist/{ProgressIndicator-CM37EU1B.mjs → ProgressIndicator-ISARECzW.mjs} +3 -3
  198. package/dist/ProgressIndicator-ISARECzW.mjs.map +1 -0
  199. package/dist/ProgressIndicator.d.mts +1 -1
  200. package/dist/{PseudoClassProps-BFFh2-u8.d.mts → PseudoClassProps-D_f-JUT1.d.mts} +2 -2
  201. package/dist/PseudoClassProps.d.mts +1 -1
  202. package/dist/{Radio-BstZg3DI.mjs → Radio-BlEtetrr.mjs} +5 -5
  203. package/dist/Radio-BlEtetrr.mjs.map +1 -0
  204. package/dist/Radio.d.mts +1 -1
  205. package/dist/{RadioGroup-erKerwSt.mjs → RadioGroup-CMrXmmn4.mjs} +5 -5
  206. package/dist/RadioGroup-CMrXmmn4.mjs.map +1 -0
  207. package/dist/{RadioGroup-BxEmipHa.d.mts → RadioGroup-pyGpWhhj.d.mts} +2 -2
  208. package/dist/RadioGroup.d.mts +1 -1
  209. package/dist/{RangeCalendar-CK5ArbIQ.d.mts → RangeCalendar-BiugsdSP.d.mts} +3 -3
  210. package/dist/RangeCalendar.d.mts +1 -1
  211. package/dist/RangeCalendarPresets.d.mts +2 -2
  212. package/dist/ResizableVerticalPanel.d.mts +1 -1
  213. package/dist/ResizeHandle.d.mts +1 -1
  214. package/dist/RichTextEditor.d.mts +36 -0
  215. package/dist/RightPanel.d.mts +1 -1
  216. package/dist/RightPanelLoadingContent.d.mts +1 -1
  217. package/dist/RightPanelResizeHandle.d.mts +1 -1
  218. package/dist/{RouterContext-CoDbEb_X.d.mts → RouterContext-BUdfr1it.d.mts} +3 -3
  219. package/dist/{RouterContext-nPSb55p9.mjs → RouterContext-DAQHKOv6.mjs} +2 -2
  220. package/dist/RouterContext-DAQHKOv6.mjs.map +1 -0
  221. package/dist/RouterContext.d.mts +1 -1
  222. package/dist/{RouterLink-BnIEi8d4.d.mts → RouterLink-BKbfvJcM.d.mts} +3 -3
  223. package/dist/RouterLink.d.mts +1 -1
  224. package/dist/RuleEditorFields.d.mts +3 -3
  225. package/dist/RulesPill.d.mts +2 -2
  226. package/dist/{SearchInput-DLC7-A7K.d.mts → SearchInput-BejaiGsS.d.mts} +3 -3
  227. package/dist/SearchInput.d.mts +1 -1
  228. package/dist/Section.d.mts +1 -1
  229. package/dist/SectionHeading.d.mts +2 -2
  230. package/dist/{SegmentedControl-DQjIO6iX.mjs → SegmentedControl-D_DA-MU1.mjs} +5 -5
  231. package/dist/SegmentedControl-D_DA-MU1.mjs.map +1 -0
  232. package/dist/{SegmentedControl-xjU-2IsJ.d.mts → SegmentedControl-UV03Ujqn.d.mts} +2 -2
  233. package/dist/SegmentedControl.d.mts +1 -1
  234. package/dist/{Select-CG_Xkx0m.d.mts → Select-Chk5WB1F.d.mts} +4 -4
  235. package/dist/{Select-BJ9ACmRD.mjs → Select-DkUMz4LG.mjs} +10 -10
  236. package/dist/Select-DkUMz4LG.mjs.map +1 -0
  237. package/dist/Select.d.mts +1 -1
  238. package/dist/SelectionCard.d.mts +1 -1
  239. package/dist/SelectionCardGroup.d.mts +1 -1
  240. package/dist/{SingleColumnLayout-CBynMc76.d.mts → SingleColumnLayout-DBo35psH.d.mts} +3 -3
  241. package/dist/SingleColumnLayout.d.mts +1 -1
  242. package/dist/Slider.d.mts +1 -1
  243. package/dist/SliderRHF.d.mts +1 -1
  244. package/dist/SliderThumb.d.mts +1 -1
  245. package/dist/SmartTextInput.d.mts +7 -7
  246. package/dist/SmartTextInputCodeDialog.d.mts +1 -1
  247. package/dist/SmartTextInputField.d.mts +3 -3
  248. package/dist/SmartTextInputFunctionDialog.d.mts +5 -5
  249. package/dist/SmartTextInputListbox.d.mts +3 -3
  250. package/dist/SmartTextInputPopover.d.mts +2 -2
  251. package/dist/{Spacer-J_HuhxX2.mjs → Spacer-C4d9Aho6.mjs} +3 -3
  252. package/dist/Spacer-C4d9Aho6.mjs.map +1 -0
  253. package/dist/Spacer.d.mts +1 -1
  254. package/dist/{Spinner-7Camx1vs.mjs → Spinner-CXb-KUs1.mjs} +3 -3
  255. package/dist/Spinner-CXb-KUs1.mjs.map +1 -0
  256. package/dist/Spinner.d.mts +1 -1
  257. package/dist/{SplitColumnLayout-BVzGbEDC.d.mts → SplitColumnLayout-C6m_mwdf.d.mts} +3 -3
  258. package/dist/SplitColumnLayout.d.mts +1 -1
  259. package/dist/{Stack-BkC7FCdF.mjs → Stack-Bzom2BTR.mjs} +3 -3
  260. package/dist/Stack-Bzom2BTR.mjs.map +1 -0
  261. package/dist/{Stack-BZyboHQl.d.mts → Stack-DrYxBkiF.d.mts} +3 -3
  262. package/dist/Stack.d.mts +1 -1
  263. package/dist/{StatusIndicator-Bunn9YLV.mjs → StatusIndicator-pWl1-FLb.mjs} +3 -3
  264. package/dist/StatusIndicator-pWl1-FLb.mjs.map +1 -0
  265. package/dist/StatusIndicator.d.mts +1 -1
  266. package/dist/{Sticker-yhxtIYH8.mjs → Sticker-Bi_fezCO.mjs} +6 -6
  267. package/dist/Sticker-Bi_fezCO.mjs.map +1 -0
  268. package/dist/{Sticker-CsUSNIH-.d.mts → Sticker-sIBnBbHD.d.mts} +5 -5
  269. package/dist/Sticker.d.mts +1 -1
  270. package/dist/StringValueControl.d.mts +2 -2
  271. package/dist/StyledIconDrag.d.mts +1 -1
  272. package/dist/SwatchPicker.d.mts +1 -1
  273. package/dist/Tab.d.mts +2 -2
  274. package/dist/{TabBar-SX8E9-Bk.mjs → TabBar-DpXYsWgS.mjs} +9 -9
  275. package/dist/TabBar-DpXYsWgS.mjs.map +1 -0
  276. package/dist/TabBar.d.mts +1 -1
  277. package/dist/TabBarContext.d.mts +1 -1
  278. package/dist/TabBarIconButton.d.mts +1 -1
  279. package/dist/{Table-CadXF71E.d.mts → Table-BJfcRpMX.d.mts} +2 -2
  280. package/dist/{Table-BIDaC0uS.mjs → Table-DPi4Dt5H.mjs} +14 -14
  281. package/dist/Table-DPi4Dt5H.mjs.map +1 -0
  282. package/dist/Table.d.mts +1 -1
  283. package/dist/{TableBody-BKSHNSTo.d.mts → TableBody-CBz2PjA-.d.mts} +2 -2
  284. package/dist/TableBody.d.mts +1 -1
  285. package/dist/{TableBox-Bn_XZEYd.mjs → TableBox-BfSF36Gy.mjs} +23 -23
  286. package/dist/TableBox-BfSF36Gy.mjs.map +1 -0
  287. package/dist/TableBox.d.mts +2 -2
  288. package/dist/{TableBoxCell-v_ag22E0.d.mts → TableBoxCell-CwroLAWy.d.mts} +8 -8
  289. package/dist/TableBoxCell.d.mts +1 -1
  290. package/dist/{TableBoxField-BTpSGmgW.d.mts → TableBoxField-B7bHv7uV.d.mts} +6 -6
  291. package/dist/TableBoxField.d.mts +1 -1
  292. package/dist/{TableBoxRow-BBTztgTT.d.mts → TableBoxRow-Dke8B99J.d.mts} +4 -4
  293. package/dist/TableBoxRow.d.mts +1 -1
  294. package/dist/{TableBoxRowActions-B9QSVySz.d.mts → TableBoxRowActions-CkUDVERC.d.mts} +3 -3
  295. package/dist/TableBoxRowActions.d.mts +1 -1
  296. package/dist/TableBoxRowContext.d.mts +1 -1
  297. package/dist/{TableCell-4u5_BgTC.d.mts → TableCell-KHx5JlqZ.d.mts} +3 -3
  298. package/dist/TableCell.d.mts +1 -1
  299. package/dist/{TableControls-qxoq5abn.mjs → TableControls-BDXOQMr7.mjs} +69 -69
  300. package/dist/TableControls-BDXOQMr7.mjs.map +1 -0
  301. package/dist/{TableControls-wM35j3g4.d.mts → TableControls-DAjx1TYG.d.mts} +6 -6
  302. package/dist/TableControls.d.mts +1 -1
  303. package/dist/{TableControlsContext-rTYwRi5S.d.mts → TableControlsContext-BEIvE9qN.d.mts} +3 -3
  304. package/dist/TableControlsContext.d.mts +1 -1
  305. package/dist/{TableHead-BuCQeDAq.d.mts → TableHead-D5A3bOwt.d.mts} +2 -2
  306. package/dist/TableHead.d.mts +1 -1
  307. package/dist/{TableHeaderCell-DIcQlZps.d.mts → TableHeaderCell-BXgnxPpX.d.mts} +2 -2
  308. package/dist/TableHeaderCell.d.mts +1 -1
  309. package/dist/{TableLayout-ScEVdvvA.d.mts → TableLayout-Dy5ht8KO.d.mts} +2 -2
  310. package/dist/TableLayout.d.mts +1 -1
  311. package/dist/{TableRow-lCsvG0a-.d.mts → TableRow-C1iGbNjZ.d.mts} +3 -3
  312. package/dist/TableRow.d.mts +1 -1
  313. package/dist/TableTH.d.mts +1 -1
  314. package/dist/{TableViewConfigurationDropdown-Gut16-vY.d.mts → TableViewConfigurationDropdown-vYnU0d4k.d.mts} +3 -3
  315. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  316. package/dist/{TechnicalSticker-CALVwnrT.mjs → TechnicalSticker-B_JlBkXZ.mjs} +7 -7
  317. package/dist/TechnicalSticker-B_JlBkXZ.mjs.map +1 -0
  318. package/dist/TechnicalSticker.d.mts +1 -1
  319. package/dist/{Text-CSwFifQF.mjs → Text-D0vEReED.mjs} +3 -3
  320. package/dist/Text-D0vEReED.mjs.map +1 -0
  321. package/dist/{Text-RSzei6Se.d.mts → Text-SaoRBdB6.d.mts} +4 -4
  322. package/dist/Text.d.mts +1 -1
  323. package/dist/{TextArea-CaIEBz8d.mjs → TextArea-Dro-HH8O.mjs} +4 -4
  324. package/dist/TextArea-Dro-HH8O.mjs.map +1 -0
  325. package/dist/{TextArea-DFn4XuG-.d.mts → TextArea-gtSlghjy.d.mts} +3 -3
  326. package/dist/TextArea.d.mts +1 -1
  327. package/dist/{TextUnderlineTooltip-B0iYaPM1.d.mts → TextUnderlineTooltip-DV61avLv.d.mts} +3 -3
  328. package/dist/TextUnderlineTooltip.d.mts +1 -1
  329. package/dist/Tile.d.mts +2 -2
  330. package/dist/Toast.d.mts +2 -2
  331. package/dist/{Toggle-xtPgGaGD.d.mts → Toggle-BlvrM-Cw.d.mts} +2 -2
  332. package/dist/{Toggle-BsqSNYok.mjs → Toggle-D9MzTIZs.mjs} +7 -7
  333. package/dist/Toggle-D9MzTIZs.mjs.map +1 -0
  334. package/dist/Toggle.d.mts +1 -1
  335. package/dist/{Tooltip-Blfhi2gT.d.mts → Tooltip-CysnLwST.d.mts} +3 -3
  336. package/dist/{Tooltip-B-0VRuKT.mjs → Tooltip-YViXzMdm.mjs} +7 -7
  337. package/dist/Tooltip-YViXzMdm.mjs.map +1 -0
  338. package/dist/Tooltip.d.mts +1 -1
  339. package/dist/{TruncatedText-BMQmveJG.d.mts → TruncatedText-YcjNG-zP.d.mts} +2 -2
  340. package/dist/VersionHistory.d.mts +2 -2
  341. package/dist/{VersionHistoryItem-BExp7oSr.d.mts → VersionHistoryItem-Px3ylMMq.d.mts} +2 -2
  342. package/dist/VersionHistoryItem.d.mts +1 -1
  343. package/dist/WizardModal.d.mts +3 -3
  344. package/dist/{accordionTitleTypography-PMKnfoy0.d.mts → accordionTitleTypography-Dlo2YyWd.d.mts} +3 -3
  345. package/dist/accordionTitleTypography.d.mts +1 -1
  346. package/dist/assertNever.d.mts +1 -1
  347. package/dist/chainTypes-aF5rWav-.d.mts +17 -0
  348. package/dist/{clientFilterUtils-D0Bwapen.d.mts → clientFilterUtils-DYKgw2Yq.d.mts} +3 -3
  349. package/dist/clientFilterUtils.d.mts +1 -1
  350. package/dist/{codec-KAvQRjTW.d.mts → codec-D8ZKFLgs.d.mts} +3 -3
  351. package/dist/codec.d.mts +1 -1
  352. package/dist/{color-C5B1pN1D.d.mts → color-Cy_0z4IY.d.mts} +3 -3
  353. package/dist/common.d.mts +1 -1
  354. package/dist/complete-typography.d.mts +7 -0
  355. package/dist/components/Accordion/index.d.mts +1 -1
  356. package/dist/components/Accordion/index.mjs +8 -8
  357. package/dist/components/Accordion/index.mjs.map +1 -1
  358. package/dist/components/Attribute/index.mjs +8 -8
  359. package/dist/components/Attribute/index.mjs.map +1 -1
  360. package/dist/components/Badge/index.mjs +1 -1
  361. package/dist/components/Banner/index.mjs +3 -3
  362. package/dist/components/Banner/index.mjs.map +1 -1
  363. package/dist/components/BottomPanel/index.mjs +8 -8
  364. package/dist/components/BottomPanel/index.mjs.map +1 -1
  365. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  366. package/dist/components/Breadcrumbs/index.mjs +1 -1
  367. package/dist/components/Button/index.d.mts +2 -2
  368. package/dist/components/Button/index.mjs +1 -1
  369. package/dist/components/ButtonGroup/index.mjs +5 -5
  370. package/dist/components/ButtonGroup/index.mjs.map +1 -1
  371. package/dist/components/Card/index.d.mts +2 -2
  372. package/dist/components/Card/index.mjs +1 -1
  373. package/dist/components/CardV2/index.d.mts +1 -1
  374. package/dist/components/CardV2/index.mjs +1 -1
  375. package/dist/components/Checkbox/index.d.mts +1 -1
  376. package/dist/components/Checkbox/index.mjs +1 -1
  377. package/dist/components/CodeHighlight/PrismWithLanguages.mjs +1 -1
  378. package/dist/components/CodeHighlight/PrismWithLanguages.mjs.map +1 -1
  379. package/dist/components/CodeHighlight/index.mjs +6 -6
  380. package/dist/components/CodeHighlight/index.mjs.map +1 -1
  381. package/dist/components/Combobox/index.d.mts +2 -2
  382. package/dist/components/Combobox/index.mjs +1 -1
  383. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  384. package/dist/components/DataTable/TableControls/index.d.mts +21 -21
  385. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  386. package/dist/components/DataTable/index.d.mts +8 -8
  387. package/dist/components/DataTable/index.mjs +1 -1
  388. package/dist/components/DataTable/types.d.mts +1 -1
  389. package/dist/components/DatePicker/index.d.mts +5 -5
  390. package/dist/components/DatePicker/index.mjs +1 -1
  391. package/dist/components/DropdownButton/index.mjs +1 -1
  392. package/dist/components/DropdownMenu/index.d.mts +1 -1
  393. package/dist/components/DropdownMenu/index.mjs +1 -1
  394. package/dist/components/FloatingPanel/index.mjs +9 -9
  395. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  396. package/dist/components/FormControl/index.d.mts +2 -2
  397. package/dist/components/FormControl/index.mjs +2 -2
  398. package/dist/components/FormField/index.d.mts +5 -5
  399. package/dist/components/FormField/index.mjs +1 -1
  400. package/dist/components/Grid/index.mjs +1 -1
  401. package/dist/components/HoverCopyableField/index.mjs +1 -1
  402. package/dist/components/ImageTile/index.mjs +11 -11
  403. package/dist/components/ImageTile/index.mjs.map +1 -1
  404. package/dist/components/Input/index.d.mts +1 -1
  405. package/dist/components/Input/index.mjs +2 -2
  406. package/dist/components/Input/index.mjs.map +1 -1
  407. package/dist/components/Link/index.mjs +1 -1
  408. package/dist/components/ListBox/index.d.mts +3 -3
  409. package/dist/components/ListBox/index.mjs +1 -1
  410. package/dist/components/LoadingShimmer/index.mjs +1 -1
  411. package/dist/components/MaskedInput/index.mjs +3 -3
  412. package/dist/components/MaskedInput/index.mjs.map +1 -1
  413. package/dist/components/MatchHighlight/index.mjs +2 -2
  414. package/dist/components/MatchHighlight/index.mjs.map +1 -1
  415. package/dist/components/Menu/index.d.mts +1 -1
  416. package/dist/components/Menu/index.mjs +1 -1
  417. package/dist/components/Modal/index.d.mts +1 -1
  418. package/dist/components/Modal/index.mjs +1 -1
  419. package/dist/components/PageHeader/index.d.mts +1 -1
  420. package/dist/components/PageHeader/index.mjs +1 -1
  421. package/dist/components/Pagination/index.d.mts +3 -3
  422. package/dist/components/Pagination/index.mjs +1 -1
  423. package/dist/components/Pii/index.mjs +1 -1
  424. package/dist/components/Popover/index.mjs +1 -1
  425. package/dist/components/ProgressBar/index.mjs +4 -4
  426. package/dist/components/ProgressBar/index.mjs.map +1 -1
  427. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  428. package/dist/components/ProgressIndicator/index.mjs +1 -1
  429. package/dist/components/Radio/index.mjs +1 -1
  430. package/dist/components/RadioGroup/index.d.mts +1 -1
  431. package/dist/components/RadioGroup/index.mjs +1 -1
  432. package/dist/components/RichTextEditor/index.d.mts +5 -0
  433. package/dist/components/RichTextEditor/index.mjs +1050 -0
  434. package/dist/components/RichTextEditor/index.mjs.map +1 -0
  435. package/dist/components/RightPanel/index.mjs +9 -9
  436. package/dist/components/RightPanel/index.mjs.map +1 -1
  437. package/dist/components/SegmentedControl/index.d.mts +1 -1
  438. package/dist/components/SegmentedControl/index.mjs +1 -1
  439. package/dist/components/Select/index.d.mts +1 -1
  440. package/dist/components/Select/index.mjs +1 -1
  441. package/dist/components/SelectionCard/index.mjs +9 -9
  442. package/dist/components/SelectionCard/index.mjs.map +1 -1
  443. package/dist/components/Slider/index.mjs +6 -6
  444. package/dist/components/Slider/index.mjs.map +1 -1
  445. package/dist/components/SmartTextInput/PillType.d.mts +1 -1
  446. package/dist/components/SmartTextInput/PillType.mjs +2 -2
  447. package/dist/components/SmartTextInput/PillType.mjs.map +1 -1
  448. package/dist/components/SmartTextInput/index.d.mts +2 -2
  449. package/dist/components/SmartTextInput/index.mjs +25 -25
  450. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  451. package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
  452. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  453. package/dist/components/SmartTextInput/parser/method-chain/types.mjs +1 -1
  454. package/dist/components/SmartTextInput/parser/method-chain/types.mjs.map +1 -1
  455. package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +2 -2
  456. package/dist/components/SmartTextInput/parser/smart-text/parser.mjs.map +1 -1
  457. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  458. package/dist/components/SmartTextInput/parser/smart-text/types.mjs +1 -1
  459. package/dist/components/SmartTextInput/parser/smart-text/types.mjs.map +1 -1
  460. package/dist/components/Spacer/index.mjs +1 -1
  461. package/dist/components/Spinner/index.mjs +1 -1
  462. package/dist/components/Stack/index.d.mts +1 -1
  463. package/dist/components/Stack/index.mjs +1 -1
  464. package/dist/components/StatusIndicator/index.mjs +1 -1
  465. package/dist/components/Sticker/index.d.mts +1 -1
  466. package/dist/components/Sticker/index.mjs +1 -1
  467. package/dist/components/SwatchPicker/index.mjs +2 -2
  468. package/dist/components/SwatchPicker/index.mjs.map +1 -1
  469. package/dist/components/TabBar/index.mjs +1 -1
  470. package/dist/components/Table/index.d.mts +8 -8
  471. package/dist/components/Table/index.mjs +1 -1
  472. package/dist/components/TableBox/index.d.mts +2 -2
  473. package/dist/components/TableBox/index.mjs +1 -1
  474. package/dist/components/TechnicalSticker/index.mjs +1 -1
  475. package/dist/components/Text/index.d.mts +1 -1
  476. package/dist/components/Text/index.mjs +1 -1
  477. package/dist/components/TextArea/index.d.mts +1 -1
  478. package/dist/components/TextArea/index.mjs +1 -1
  479. package/dist/components/Tile/index.mjs +6 -6
  480. package/dist/components/Tile/index.mjs.map +1 -1
  481. package/dist/components/Toast/index.mjs +3 -3
  482. package/dist/components/Toast/index.mjs.map +1 -1
  483. package/dist/components/Toggle/index.d.mts +1 -1
  484. package/dist/components/Toggle/index.mjs +1 -1
  485. package/dist/components/Tooltip/index.d.mts +3 -3
  486. package/dist/components/Tooltip/index.mjs +1 -1
  487. package/dist/components/VersionHistory/index.d.mts +1 -1
  488. package/dist/components/VersionHistory/index.mjs +12 -12
  489. package/dist/components/VersionHistory/index.mjs.map +1 -1
  490. package/dist/compound-expression.d.mts +2 -2
  491. package/dist/{constants-4rSh8e5G.d.mts → constants-CW1DRgwi.d.mts} +2 -2
  492. package/dist/{constants-BaMvTUbS.d.mts → constants-D1hoZ5LO.d.mts} +2 -2
  493. package/dist/constants.d.mts +1 -1
  494. package/dist/constants2.d.mts +1 -1
  495. package/dist/containers.d.mts +1 -1
  496. package/dist/createPath-C4ZFkt93.d.mts +7 -0
  497. package/dist/createPath.d.mts +1 -1
  498. package/dist/{date-filter-D0ys8s0D.mjs → date-filter-Bj4XkwkT.mjs} +3 -3
  499. package/dist/date-filter-Bj4XkwkT.mjs.map +1 -0
  500. package/dist/{date-range-rule-value-Dk6pZHnD.d.mts → date-range-rule-value-CrVBpQcf.d.mts} +3 -3
  501. package/dist/date-range-rule-value.d.mts +1 -1
  502. package/dist/{date-rule-intent-C5C8HB1v.d.mts → date-rule-intent-C1aptAoX.d.mts} +4 -4
  503. package/dist/date-rule-intent.d.mts +1 -1
  504. package/dist/display.d.mts +3 -3
  505. package/dist/fieldPickerOptions.d.mts +3 -3
  506. package/dist/{filter-size-context-5xQ3ycnC.d.mts → filter-size-context-CbT4pi3S.d.mts} +3 -3
  507. package/dist/filter-size-context.d.mts +1 -1
  508. package/dist/{filters-C8YLLbH3.d.mts → filters-DjXkx8GJ.d.mts} +3 -3
  509. package/dist/filters.d.mts +1 -1
  510. package/dist/format-date-value.d.mts +1 -1
  511. package/dist/{formatDateTime-Dd9inM5H.d.mts → formatDateTime-BikGGrvq.d.mts} +2 -2
  512. package/dist/formatDateTime.d.mts +1 -1
  513. package/dist/{helpers-DvqDI2e5.d.mts → helpers-CdxEL7ri.d.mts} +5 -5
  514. package/dist/helpers.d.mts +1 -1
  515. package/dist/{i18n-BscB9FUy.mjs → i18n-BLyCaSdJ.mjs} +4 -4
  516. package/dist/i18n-BLyCaSdJ.mjs.map +1 -0
  517. package/dist/index-BWAycP6L.d.mts +4025 -0
  518. package/dist/{index-EGvEhP1j.d.mts → index-D2YFHdsf.d.mts} +3 -3
  519. package/dist/{index-CNDe1Lij.d.mts → index-DX5Zu9JU.d.mts} +4 -4
  520. package/dist/index-FgIOTuJ4.d.mts +7 -0
  521. package/dist/index.d.mts +1 -2
  522. package/dist/index2.d.mts +2 -2
  523. package/dist/index3.d.mts +2 -4
  524. package/dist/index4.d.mts +4 -2
  525. package/dist/index5.d.mts +2 -15
  526. package/dist/index6.d.mts +15 -1
  527. package/dist/{input-CKhARTlS.d.mts → input-gtTnb9M8.d.mts} +4 -4
  528. package/dist/{inputFields-BZcm1UV5.d.mts → inputFields-CYttsz5M.d.mts} +12 -12
  529. package/dist/inputFields.d.mts +1 -1
  530. package/dist/{intersperse-ObkRVOag.mjs → intersperse-DvJsBw5D.mjs} +2 -2
  531. package/dist/intersperse-DvJsBw5D.mjs.map +1 -0
  532. package/dist/intersperse.d.mts +1 -1
  533. package/dist/{jsonSchema-DmOA0Lnu.d.mts → jsonSchema-DUkfAip_.d.mts} +3 -3
  534. package/dist/lib/ConfigContext.d.mts +1 -1
  535. package/dist/lib/ConfigContext.mjs +1 -1
  536. package/dist/lib/ConfigContext.mjs.map +1 -1
  537. package/dist/lib/GlobalStyles.d.mts +1 -1
  538. package/dist/lib/GlobalStyles.mjs +2 -2
  539. package/dist/lib/GlobalStyles.mjs.map +1 -1
  540. package/dist/lib/HeadlessAriaButton.d.mts +1 -1
  541. package/dist/lib/HeadlessAriaButton.mjs +2 -2
  542. package/dist/lib/HeadlessAriaButton.mjs.map +1 -1
  543. package/dist/lib/MiddleTruncatedText.d.mts +1 -1
  544. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  545. package/dist/lib/PDSProvider.d.mts +4 -4
  546. package/dist/lib/PDSProvider.mjs +4 -4
  547. package/dist/lib/PDSProvider.mjs.map +1 -1
  548. package/dist/lib/TruncatedText.d.mts +1 -1
  549. package/dist/lib/TruncatedText.mjs +2 -2
  550. package/dist/lib/TruncatedText.mjs.map +1 -1
  551. package/dist/lib/TruncatedTextWithTooltip.d.mts +2 -2
  552. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  553. package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
  554. package/dist/lib/chainTypes.d.mts +1 -1
  555. package/dist/lib/color.d.mts +1 -1
  556. package/dist/lib/color.mjs +1 -1
  557. package/dist/lib/color.mjs.map +1 -1
  558. package/dist/lib/colorMode.d.mts +3 -3
  559. package/dist/lib/colorMode.mjs +2 -2
  560. package/dist/lib/colorMode.mjs.map +1 -1
  561. package/dist/lib/comboboxHelper.d.mts +1 -1
  562. package/dist/lib/comboboxHelper.mjs +1 -1
  563. package/dist/lib/comboboxHelper.mjs.map +1 -1
  564. package/dist/lib/copyTextToClipboard.d.mts +1 -1
  565. package/dist/lib/copyTextToClipboard.mjs +1 -1
  566. package/dist/lib/copyTextToClipboard.mjs.map +1 -1
  567. package/dist/lib/customFunctionSchema.d.mts +2 -2
  568. package/dist/lib/customFunctionSchema.mjs +1 -1
  569. package/dist/lib/customFunctionSchema.mjs.map +1 -1
  570. package/dist/lib/date-filter/index.d.mts +2 -2
  571. package/dist/lib/date-filter/index.mjs +1 -1
  572. package/dist/lib/datePickerHelper.d.mts +1 -1
  573. package/dist/lib/datePickerHelper.mjs +1 -1
  574. package/dist/lib/datePickerHelper.mjs.map +1 -1
  575. package/dist/lib/embeddedSurfaceProtocol.d.mts +1 -1
  576. package/dist/lib/embeddedSurfaceProtocol.mjs +1 -1
  577. package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
  578. package/dist/lib/embeddedSurfaceRegistry.d.mts +1 -1
  579. package/dist/lib/embeddedSurfaceRegistry.mjs +1 -1
  580. package/dist/lib/embeddedSurfaceRegistry.mjs.map +1 -1
  581. package/dist/lib/errorReporter.d.mts +1 -1
  582. package/dist/lib/errorReporter.mjs +1 -1
  583. package/dist/lib/errorReporter.mjs.map +1 -1
  584. package/dist/lib/i18n/index.d.mts +3 -3
  585. package/dist/lib/i18n/index.mjs +1 -1
  586. package/dist/lib/jsonSchema.d.mts +1 -1
  587. package/dist/lib/jsonSchema.mjs +1 -1
  588. package/dist/lib/jsonSchema.mjs.map +1 -1
  589. package/dist/lib/jsonSchemaType.d.mts +2 -2
  590. package/dist/lib/jsonSchemaType.mjs +1 -1
  591. package/dist/lib/jsonSchemaType.mjs.map +1 -1
  592. package/dist/lib/letPointerDownReachDocument.d.mts +1 -1
  593. package/dist/lib/letPointerDownReachDocument.mjs +1 -1
  594. package/dist/lib/letPointerDownReachDocument.mjs.map +1 -1
  595. package/dist/lib/message.d.mts +1 -1
  596. package/dist/lib/message.mjs +1 -1
  597. package/dist/lib/message.mjs.map +1 -1
  598. package/dist/lib/methodChain.d.mts +2 -2
  599. package/dist/lib/methodChain.mjs +1 -1
  600. package/dist/lib/methodChainNormalize.d.mts +3 -3
  601. package/dist/lib/methodChainNormalize.mjs +1 -1
  602. package/dist/lib/methodChainNormalize.mjs.map +1 -1
  603. package/dist/lib/methodChainTypes.d.mts +1 -1
  604. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  605. package/dist/lib/platformObject.d.mts +2 -2
  606. package/dist/lib/platformObject.mjs +1 -1
  607. package/dist/lib/platformObject.mjs.map +1 -1
  608. package/dist/lib/pseudoClass.d.mts +2 -2
  609. package/dist/lib/pseudoClass.mjs +1 -1
  610. package/dist/lib/pseudoClass.mjs.map +1 -1
  611. package/dist/lib/reorderItems.d.mts +1 -1
  612. package/dist/lib/reorderItems.mjs +1 -1
  613. package/dist/lib/reorderItems.mjs.map +1 -1
  614. package/dist/lib/router/adapters/reactRouter.d.mts +2 -2
  615. package/dist/lib/router/adapters/reactRouter.mjs +2 -2
  616. package/dist/lib/router/adapters/reactRouter.mjs.map +1 -1
  617. package/dist/lib/router/adapters/tanstack.d.mts +2 -2
  618. package/dist/lib/router/adapters/tanstack.mjs +2 -2
  619. package/dist/lib/router/adapters/tanstack.mjs.map +1 -1
  620. package/dist/lib/router/index.d.mts +5 -5
  621. package/dist/lib/router/index.mjs +2 -2
  622. package/dist/lib/schemaOptions.d.mts +1 -1
  623. package/dist/lib/schemaOptions.mjs +2 -2
  624. package/dist/lib/schemaOptions.mjs.map +1 -1
  625. package/dist/lib/selectHelper.d.mts +1 -1
  626. package/dist/lib/selectHelper.mjs +1 -1
  627. package/dist/lib/selectHelper.mjs.map +1 -1
  628. package/dist/lib/semanticColor.d.mts +1 -1
  629. package/dist/lib/semanticColor.mjs +1 -1
  630. package/dist/lib/semanticColor.mjs.map +1 -1
  631. package/dist/lib/snakifyPath.d.mts +1 -1
  632. package/dist/lib/snakifyPath.mjs +1 -1
  633. package/dist/lib/snakifyPath.mjs.map +1 -1
  634. package/dist/lib/useChain.d.mts +1 -1
  635. package/dist/lib/useChain.mjs +1 -1
  636. package/dist/lib/useControlled.d.mts +1 -1
  637. package/dist/lib/useControlled.mjs +1 -1
  638. package/dist/lib/useControlled.mjs.map +1 -1
  639. package/dist/lib/useEmbeddedSurface.d.mts +1 -1
  640. package/dist/lib/useEmbeddedSurface.mjs +1 -1
  641. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  642. package/dist/lib/useIsOverflow.d.mts +1 -1
  643. package/dist/lib/useIsOverflow.mjs +1 -1
  644. package/dist/lib/useIsOverflow.mjs.map +1 -1
  645. package/dist/lib/useModalInsetRight.d.mts +1 -1
  646. package/dist/lib/useModalInsetRight.mjs +1 -1
  647. package/dist/lib/useModalInsetRight.mjs.map +1 -1
  648. package/dist/lib/useOutsideClick.d.mts +1 -1
  649. package/dist/lib/useOutsideClick.mjs +1 -1
  650. package/dist/lib/useOutsideClick.mjs.map +1 -1
  651. package/dist/lib/useResizablePanel.d.mts +1 -1
  652. package/dist/lib/useResizablePanel.mjs +1 -1
  653. package/dist/lib/useResizablePanel.mjs.map +1 -1
  654. package/dist/lib/useScrollOverflow.d.mts +1 -1
  655. package/dist/lib/useScrollOverflow.mjs +1 -1
  656. package/dist/lib/useScrollOverflow.mjs.map +1 -1
  657. package/dist/lib/zindex.d.mts +1 -1
  658. package/dist/lib/zindex.mjs +1 -1
  659. package/dist/lib/zindex.mjs.map +1 -1
  660. package/dist/lint/index.d.mts +11 -0
  661. package/dist/lint/index.mjs +399 -0
  662. package/dist/lint/index.mjs.map +1 -0
  663. package/dist/lint/recommended.json +10 -0
  664. package/dist/{listbox-options-DCmqWWgy.d.mts → listbox-options-CkwENvff.d.mts} +4 -4
  665. package/dist/listbox-options.d.mts +1 -1
  666. package/dist/markdownUtils.d.mts +23 -0
  667. package/dist/{message-Dti22dmx.d.mts → message-klSuXfNN.d.mts} +2 -2
  668. package/dist/{methodChain-DaDvXsHF.d.mts → methodChain-CRYRDa1k.d.mts} +6 -6
  669. package/dist/{methodChain-xZ1_vhbz.mjs → methodChain-LVNHiGPB.mjs} +4 -4
  670. package/dist/methodChain-LVNHiGPB.mjs.map +1 -0
  671. package/dist/{methodChainTypes-a7kHYhs7.d.mts → methodChainTypes-BtbYWrdP.d.mts} +3 -3
  672. package/dist/middleTruncateText.d.mts +1 -1
  673. package/dist/min-copy-size.d.mts +7 -0
  674. package/dist/mixins/focus.d.mts +2 -2
  675. package/dist/mixins/focus.mjs +2 -2
  676. package/dist/mixins/focus.mjs.map +1 -1
  677. package/dist/mixins/hoverable.d.mts +3 -3
  678. package/dist/mixins/hoverable.mjs +2 -2
  679. package/dist/mixins/hoverable.mjs.map +1 -1
  680. package/dist/mixins/input.d.mts +1 -1
  681. package/dist/mixins/input.mjs +2 -2
  682. package/dist/mixins/input.mjs.map +1 -1
  683. package/dist/mixins/menuItem.d.mts +3 -3
  684. package/dist/mixins/menuItem.mjs +2 -2
  685. package/dist/mixins/menuItem.mjs.map +1 -1
  686. package/dist/mixins/print/index.d.mts +1 -1
  687. package/dist/mixins/print/index.mjs +2 -2
  688. package/dist/mixins/print/index.mjs.map +1 -1
  689. package/dist/mixins/scrollbar.d.mts +2 -2
  690. package/dist/mixins/scrollbar.mjs +2 -2
  691. package/dist/mixins/scrollbar.mjs.map +1 -1
  692. package/dist/mixins/text.d.mts +1 -1
  693. package/dist/mixins/text.mjs +6 -2
  694. package/dist/mixins/text.mjs.map +1 -1
  695. package/dist/navigationEvents.d.mts +1 -1
  696. package/dist/no-raw-table.d.mts +7 -0
  697. package/dist/{operators-Seez5p9U.d.mts → operators-gCG7uZ6y.d.mts} +4 -4
  698. package/dist/operators.d.mts +1 -1
  699. package/dist/{palette-Bp5G-S_5.d.mts → palette-C1gBbxLO.d.mts} +4 -4
  700. package/dist/palette.d.mts +1 -1
  701. package/dist/{parser-BeTiVjRs.mjs → parser-BQ2aDi7S.mjs} +2 -2
  702. package/dist/parser-BQ2aDi7S.mjs.map +1 -0
  703. package/dist/patterns/CardGrouping/index.mjs +11 -11
  704. package/dist/patterns/CardGrouping/index.mjs.map +1 -1
  705. package/dist/patterns/IndexTableLayout/index.mjs +6 -6
  706. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
  707. package/dist/patterns/LayoutLoadingShimmer/index.mjs +8 -8
  708. package/dist/patterns/LayoutLoadingShimmer/index.mjs.map +1 -1
  709. package/dist/patterns/LayoutLoadingSpinner/index.mjs +2 -2
  710. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
  711. package/dist/patterns/PageLayout/index.d.mts +4 -4
  712. package/dist/patterns/PageLayout/index.mjs +1 -1
  713. package/dist/patterns/WizardModal/index.mjs +7 -7
  714. package/dist/patterns/WizardModal/index.mjs.map +1 -1
  715. package/dist/positioning.d.mts +1 -1
  716. package/dist/reactRouterFallback.d.mts +2 -2
  717. package/dist/reduced-motion.d.mts +7 -0
  718. package/dist/relative-date-label.d.mts +2 -2
  719. package/dist/{router-COrZcVkf.mjs → router-BxmA940v.mjs} +7 -7
  720. package/dist/router-BxmA940v.mjs.map +1 -0
  721. package/dist/safe-parse.d.mts +3 -3
  722. package/dist/{schemaOptions-BQgLOgtD.d.mts → schemaOptions-C_JM2-sg.d.mts} +4 -4
  723. package/dist/scrollExpandedItemIntoView.d.mts +1 -1
  724. package/dist/{semantic-DjKvtUi8.d.mts → semantic-BLaQSW1r.d.mts} +2 -2
  725. package/dist/semantic-color.d.mts +7 -0
  726. package/dist/{semanticColor-CmGmGRj8.d.mts → semanticColor-Bxufk3ZO.d.mts} +4 -4
  727. package/dist/shared.d.mts +30 -0
  728. package/dist/{strings-FWNWdSn1.d.mts → strings-CK9n6b65.d.mts} +2 -2
  729. package/dist/strings.d.mts +1 -1
  730. package/dist/{styledComponentsInterop-NxwFjeA4.mjs → styledComponentsInterop-Cs5CCPRy.mjs} +2 -2
  731. package/dist/styledComponentsInterop-Cs5CCPRy.mjs.map +1 -0
  732. package/dist/styles.d.mts +8 -0
  733. package/dist/tableBoxKeyboardNavigation.d.mts +1 -1
  734. package/dist/{text-BNfECpa5.d.mts → text-Csytfclh.d.mts} +3 -3
  735. package/dist/{theme-VNhXxAF3.d.mts → theme-mQ4WkH90.d.mts} +4 -4
  736. package/dist/theme.d.mts +1 -1
  737. package/dist/theme.mjs +1 -1
  738. package/dist/theme.mjs.map +1 -1
  739. package/dist/time-range.d.mts +1 -1
  740. package/dist/tone.d.mts +4 -4
  741. package/dist/tree.d.mts +2 -2
  742. package/dist/{types-CFe4tA8Q.d.mts → types-6L0ptM6-.d.mts} +2 -2
  743. package/dist/{types-SOkNtcBq.d.mts → types-B4KbdEDc.d.mts} +3 -3
  744. package/dist/{types-Kmnood9Y.d.mts → types-C2RhHxbE.d.mts} +2 -2
  745. package/dist/{types-Ci-KTHfu.d.mts → types-CayYd8EX.d.mts} +4 -4
  746. package/dist/{types-SYxBPX6o.d.mts → types-DJobO07d.d.mts} +4 -4
  747. package/dist/{types-EodOhsjw.d.mts → types-DbOD5vE_.d.mts} +3 -3
  748. package/dist/{types-HxiGiwQN.d.mts → types-Dhz6VMKx.d.mts} +2 -2
  749. package/dist/{types-DWU0Dmy9.d.mts → types-XjJqUj-p.d.mts} +5 -5
  750. package/dist/{types-DfpVVjso.d.mts → types-dmItSshr.d.mts} +3 -3
  751. package/dist/{types-39QvBZuZ.d.mts → types-rDQg74j-.d.mts} +2 -2
  752. package/dist/types.d.mts +1 -1
  753. package/dist/types2.d.mts +1 -1
  754. package/dist/types3.d.mts +1 -1
  755. package/dist/types4.d.mts +1 -1
  756. package/dist/types5.d.mts +1 -1
  757. package/dist/types6.d.mts +1 -1
  758. package/dist/types7.d.mts +14 -2
  759. package/dist/types8.d.mts +2 -0
  760. package/dist/{url-state-CwaRVyXR.d.mts → url-state-CmgyDnG7.d.mts} +3 -3
  761. package/dist/url-state.d.mts +1 -1
  762. package/dist/use-rules-popover-selection.d.mts +1 -1
  763. package/dist/{useChain-DXkKKe-J.d.mts → useChain-7ztbfujM.d.mts} +7 -7
  764. package/dist/{useChain-Cu4KDfFk.mjs → useChain-D1aNsdvn.mjs} +4 -4
  765. package/dist/useChain-D1aNsdvn.mjs.map +1 -0
  766. package/dist/useChainAtCursor.d.mts +7 -7
  767. package/dist/useCodeChainFunctionPanel.d.mts +2 -2
  768. package/dist/useColumnConfiguration.d.mts +3 -3
  769. package/dist/useColumnWidthLock.d.mts +1 -1
  770. package/dist/useComboboxFooterAction.d.mts +2 -2
  771. package/dist/useDelayedInlineEditError.d.mts +1 -1
  772. package/dist/{useFilterStateV2-Bzo27PR-.d.mts → useFilterStateV2-CPBt0qwc.d.mts} +4 -4
  773. package/dist/useFilterStateV2.d.mts +1 -1
  774. package/dist/{useFormField-Ba8rh1CH.d.mts → useFormField-CmEJCqse.d.mts} +3 -3
  775. package/dist/{useFormField-CbNYbDdp.mjs → useFormField-pOVkb5BK.mjs} +3 -3
  776. package/dist/useFormField-pOVkb5BK.mjs.map +1 -0
  777. package/dist/useFormField.d.mts +1 -1
  778. package/dist/{useFormGroup-CsKC93Pt.mjs → useFormGroup-DSQkoWLh.mjs} +2 -2
  779. package/dist/useFormGroup-DSQkoWLh.mjs.map +1 -0
  780. package/dist/useFormGroup.d.mts +1 -1
  781. package/dist/useLocationPathname-Cnqj8pf4.d.mts +5 -0
  782. package/dist/useLocationPathname.d.mts +1 -1
  783. package/dist/{useTableBoxDragAndDrop-CKPIY98e.d.mts → useTableBoxDragAndDrop-8NS4JBuI.d.mts} +2 -2
  784. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  785. package/dist/{useTableColumns-PyxNyTD6.d.mts → useTableColumns-BK-KYY0L.d.mts} +3 -3
  786. package/dist/useTableColumns.d.mts +1 -1
  787. package/dist/{useToggle-DRzCDqrc.mjs → useToggle-1z8JE7Ym.mjs} +2 -2
  788. package/dist/useToggle-1z8JE7Ym.mjs.map +1 -0
  789. package/dist/useToggle.d.mts +1 -1
  790. package/dist/useTruncation.d.mts +2 -2
  791. package/dist/{utilities-BrEUGFGq.d.mts → utilities-CXoc5Cyr.d.mts} +2 -2
  792. package/dist/utilities.d.mts +1 -1
  793. package/dist/utils/storybook.mjs +2 -2
  794. package/dist/utils/storybook.mjs.map +1 -1
  795. package/dist/utils/testing.d.mts +2 -2
  796. package/dist/utils/testing.mjs +1 -1
  797. package/dist/utils/testing.mjs.map +1 -1
  798. package/dist/utils.d.mts +2 -2
  799. package/dist/utils2.d.mts +1 -1
  800. package/dist/utils3.d.mts +1 -1
  801. package/dist/utils4.d.mts +6 -6
  802. package/dist/{validation-D6NPueNk.d.mts → validation-BaqPVG1C.d.mts} +4 -4
  803. package/dist/validation.d.mts +1 -1
  804. package/dist/validation2.d.mts +5 -5
  805. package/dist/{value-control-resolver-C-UrXVlB.d.mts → value-control-resolver-CMyFwEY7.d.mts} +3 -3
  806. package/dist/value-control-resolver.d.mts +1 -1
  807. package/dist/variables/color.d.mts +1 -1
  808. package/dist/variables/color.mjs +1 -1
  809. package/dist/variables/color.mjs.map +1 -1
  810. package/dist/variables/effect.d.mts +2 -2
  811. package/dist/variables/effect.mjs +1 -1
  812. package/dist/variables/effect.mjs.map +1 -1
  813. package/dist/variables/keyframes.d.mts +1 -1
  814. package/dist/variables/keyframes.mjs +2 -2
  815. package/dist/variables/keyframes.mjs.map +1 -1
  816. package/dist/variables/semantic.d.mts +1 -1
  817. package/dist/variables/semantic.mjs +1 -1
  818. package/dist/variables/semantic.mjs.map +1 -1
  819. package/dist/variables/spacing.d.mts +1 -1
  820. package/dist/variables/spacing.mjs +1 -1
  821. package/dist/variables/spacing.mjs.map +1 -1
  822. package/dist/variables/text.d.mts +1 -1
  823. package/dist/variables/text.mjs +1 -1
  824. package/dist/variables/text.mjs.map +1 -1
  825. package/dist/variables/transitions.d.mts +1 -1
  826. package/dist/variables/transitions.mjs +1 -1
  827. package/dist/variables/transitions.mjs.map +1 -1
  828. package/llms.txt +2 -2
  829. package/package.json +32 -8
  830. package/skills/design-system-component-authoring/SKILL.md +4 -4
  831. package/skills/design-system-component-authoring/component-conventions.md +2 -2
  832. package/skills/new-screen/SKILL.md +56 -0
  833. package/skills/ui-authoring/COMPONENTS.md +2 -1
  834. package/skills/ui-authoring/SKILL.md +5 -3
  835. package/skills/ui-authoring/STANDARD.md +65 -50
  836. package/dist/Badge-Bvn3afds.mjs.map +0 -1
  837. package/dist/Breadcrumbs-CQUe9VTM.mjs.map +0 -1
  838. package/dist/Card-BXNxWX5C.mjs.map +0 -1
  839. package/dist/CardV2-Dp4eHSE-.mjs.map +0 -1
  840. package/dist/Checkbox-BaJ-dGdX.mjs.map +0 -1
  841. package/dist/Combobox-CBM-oY-e.mjs.map +0 -1
  842. package/dist/ConfigFormGroup-CidT_cE9.mjs.map +0 -1
  843. package/dist/DataTable-DQ8axNfo.mjs.map +0 -1
  844. package/dist/DatePicker-D0cvVbzq.mjs.map +0 -1
  845. package/dist/DropdownButton-5oNcpsOq.mjs.map +0 -1
  846. package/dist/DropdownMenu-CedsmO5h.mjs.map +0 -1
  847. package/dist/FormControl-C4CiA0H-.mjs.map +0 -1
  848. package/dist/FormField-C0cd1zVd.mjs.map +0 -1
  849. package/dist/Grid-DXVkhyNQ.mjs.map +0 -1
  850. package/dist/HoverCopyableField-D-BubaRd.mjs.map +0 -1
  851. package/dist/IconButton-HWx5Hlmi.mjs.map +0 -1
  852. package/dist/Input-Dap055xf.mjs.map +0 -1
  853. package/dist/Link-Cf__H8gD.mjs.map +0 -1
  854. package/dist/ListBox-eoyBHtnJ.mjs.map +0 -1
  855. package/dist/LoadingShimmer-Bqjdut7i.mjs.map +0 -1
  856. package/dist/Menu-Dw6Rcpk6.mjs.map +0 -1
  857. package/dist/MiddleTruncatedText-DoTyfMem.mjs.map +0 -1
  858. package/dist/Modal-kjUptzg1.mjs.map +0 -1
  859. package/dist/PageHeader-DJF7nxgN.mjs.map +0 -1
  860. package/dist/PageLayout-fXJW7daI.mjs.map +0 -1
  861. package/dist/Pagination-DtK-jbEY.mjs.map +0 -1
  862. package/dist/Pii-DueIK287.mjs.map +0 -1
  863. package/dist/Popover-BcII7usF.mjs.map +0 -1
  864. package/dist/ProgressIndicator-CM37EU1B.mjs.map +0 -1
  865. package/dist/Radio-BstZg3DI.mjs.map +0 -1
  866. package/dist/RadioGroup-erKerwSt.mjs.map +0 -1
  867. package/dist/RouterContext-nPSb55p9.mjs.map +0 -1
  868. package/dist/SegmentedControl-DQjIO6iX.mjs.map +0 -1
  869. package/dist/Select-BJ9ACmRD.mjs.map +0 -1
  870. package/dist/Spacer-J_HuhxX2.mjs.map +0 -1
  871. package/dist/Spinner-7Camx1vs.mjs.map +0 -1
  872. package/dist/Stack-BkC7FCdF.mjs.map +0 -1
  873. package/dist/StatusIndicator-Bunn9YLV.mjs.map +0 -1
  874. package/dist/Sticker-yhxtIYH8.mjs.map +0 -1
  875. package/dist/TabBar-SX8E9-Bk.mjs.map +0 -1
  876. package/dist/Table-BIDaC0uS.mjs.map +0 -1
  877. package/dist/TableBox-Bn_XZEYd.mjs.map +0 -1
  878. package/dist/TableControls-qxoq5abn.mjs.map +0 -1
  879. package/dist/TechnicalSticker-CALVwnrT.mjs.map +0 -1
  880. package/dist/Text-CSwFifQF.mjs.map +0 -1
  881. package/dist/TextArea-CaIEBz8d.mjs.map +0 -1
  882. package/dist/Toggle-BsqSNYok.mjs.map +0 -1
  883. package/dist/Tooltip-B-0VRuKT.mjs.map +0 -1
  884. package/dist/chainTypes-Cjp0zZ4E.d.mts +0 -17
  885. package/dist/createPath-B_CLq82C.d.mts +0 -7
  886. package/dist/date-filter-D0ys8s0D.mjs.map +0 -1
  887. package/dist/i18n-BscB9FUy.mjs.map +0 -1
  888. package/dist/index-DTAcGzW4.d.mts +0 -7
  889. package/dist/intersperse-ObkRVOag.mjs.map +0 -1
  890. package/dist/methodChain-xZ1_vhbz.mjs.map +0 -1
  891. package/dist/parser-BeTiVjRs.mjs.map +0 -1
  892. package/dist/router-COrZcVkf.mjs.map +0 -1
  893. package/dist/styledComponentsInterop-NxwFjeA4.mjs.map +0 -1
  894. package/dist/useChain-Cu4KDfFk.mjs.map +0 -1
  895. package/dist/useFormField-CbNYbDdp.mjs.map +0 -1
  896. package/dist/useFormGroup-CsKC93Pt.mjs.map +0 -1
  897. package/dist/useLocationPathname-OsvI7mH5.d.mts +0 -5
  898. package/dist/useToggle-DRzCDqrc.mjs.map +0 -1
  899. package/skills/ui-authoring/lanes.json +0 -22
  900. /package/dist/{index-BOaE2xDE.d.mts → index-Bq9Ub6MB.d.mts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProgressIndicator-CM37EU1B.mjs","names":[],"sources":["../components/ProgressIndicator/ProgressIndicator.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport styled, { css, useTheme } from 'styled-components';\n\nimport { focusOutline } from '@persona/design-system/mixins/focus';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n CircleCheckFillIcon,\n CircleFillIcon,\n CircleNullIcon,\n CircleWarningFillIcon,\n WarningFillIcon,\n} from '@persona/icons';\nimport type { PDSIconComponent } from '@persona/icons/types';\nimport { withAlpha } from 'design-system/lib/color';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\n\nexport type StepStatus = 'uncompleted' | 'completed' | 'warning' | 'error';\n\nexport interface ProgressIndicatorStep {\n id: string;\n label: string;\n /** @default 'uncompleted' */\n status?: StepStatus;\n disabled?: boolean;\n}\n\nexport interface ProgressIndicatorProps extends ComponentPropsWithoutRef<'ol'> {\n steps: ProgressIndicatorStep[];\n /** id of the step that should receive the active visual state */\n activeStepId?: string;\n /** @default 'vertical' */\n layout?: 'vertical' | 'horizontal';\n /**\n * Called when a clickable step is activated via click or keyboard.\n *\n * Clickability rules:\n * - `completed`, `warning`, and `error` steps are clickable (navigate back to review/edit)\n * - The active step is not clickable (user is already there)\n * - Upcoming `uncompleted` steps are not clickable (sequential progression required)\n */\n onStepClick?: (stepId: string) => void;\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\n/**\n * Completed, warning, and error steps can be navigated back to.\n * The current step (first uncompleted or error) is also clickable so the user can\n * return to it after navigating back to an earlier step.\n * Active and upcoming steps (beyond the current) are not clickable.\n */\nfunction resolveClickable(\n status: StepStatus,\n isActive: boolean,\n isDisabled: boolean,\n isCurrent: boolean,\n): boolean {\n if (isDisabled || isActive) {\n return false;\n }\n return status === 'completed' || status === 'warning' || status === 'error' || isCurrent;\n}\n\nfunction resolveIcon(status: StepStatus, isCurrent: boolean): PDSIconComponent {\n if (status === 'completed') {\n return CircleCheckFillIcon;\n }\n if (status === 'warning') {\n return WarningFillIcon;\n }\n if (status === 'error') {\n return CircleWarningFillIcon;\n }\n if (isCurrent) {\n return CircleFillIcon;\n }\n return CircleNullIcon;\n}\n\nfunction resolveIconColor(\n theme: MaybeSemanticTheme,\n status: StepStatus,\n isActive: boolean,\n isDisabled: boolean,\n) {\n if (isDisabled) {\n return semanticColor(theme, 'FgDisabled', Color.BorderIconDisabled);\n }\n if (status === 'completed') {\n return semanticColor(theme, 'StatusSuccess3', Color.BorderIconSuccess);\n }\n if (status === 'warning') {\n return semanticColor(theme, 'FgWarning1', Color.BorderIconWarning);\n }\n if (status === 'error') {\n return semanticColor(theme, 'StatusDanger4', Color.BorderIconDanger);\n }\n return isActive\n ? semanticColor(theme, 'FgAccent', Color.BorderIconActive)\n : semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary);\n}\n\nfunction resolveTextColor(\n theme: MaybeSemanticTheme,\n status: StepStatus,\n isActive: boolean,\n isDisabled: boolean,\n) {\n if (isDisabled) {\n return semanticColor(theme, 'FgDisabled', Color.TextDisabled);\n }\n if (isActive) {\n return semanticColor(theme, 'FgAccent', Color.TextActive);\n }\n if (status === 'uncompleted') {\n return semanticColor(theme, 'FgSecondary', Color.TextSecondary);\n }\n return semanticColor(theme, 'FgPrimary', Color.TextPrimary);\n}\n\n// ─── Styled components ────────────────────────────────────────────────────────\n\nconst StepList = styled.ol<{ $layout: 'vertical' | 'horizontal' }>`\n display: flex;\n flex-direction: ${({ $layout }) => ($layout === 'horizontal' ? 'row' : 'column')};\n gap: ${({ $layout }) => ($layout === 'horizontal' ? Spacing[2] : '0px')};\n list-style: none;\n margin: 0;\n padding: 0;\n`;\n\nconst StepItem = styled.li<{ $layout: 'vertical' | 'horizontal' }>`\n display: flex;\n align-items: center;\n\n ${({ $layout }) =>\n $layout === 'horizontal' &&\n css`\n width: fit-content;\n white-space: nowrap;\n `}\n`;\n\nconst StepContent = styled.button<{\n $isActive: boolean;\n $isClickable: boolean;\n $interactive: boolean;\n}>`\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n width: 100%;\n padding: ${Spacing[2]};\n border-radius: ${BorderRadius.Md};\n border: none;\n margin: 0;\n font: inherit;\n color: inherit;\n text-align: left;\n outline: none;\n cursor: ${({ $isClickable, $interactive }) => ($interactive && $isClickable ? 'pointer' : 'default')};\n\n ${({ theme, $isActive, $isClickable, $interactive }) => {\n const tokens = semanticTokens(theme);\n if ($isActive) {\n return css`\n background-color: ${\n tokens\n ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25)\n : Color.BackgroundInteractiveActive\n };\n `;\n }\n if ($interactive && $isClickable) {\n return css`\n background-color: ${tokens ? 'transparent' : Color.BackgroundInteractiveDefault};\n &:hover {\n background-color: ${semanticColor(theme, 'SurfaceSecondary', Color.BackgroundInteractiveHover)};\n }\n `;\n }\n return css`\n background-color: transparent;\n `;\n }}\n\n ${focusOutline}\n\n &:focus-visible {\n position: relative;\n z-index: 1;\n }\n`;\n\nconst IconWrapper = styled.span<{ $color: string }>`\n display: inline-flex;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n color: ${({ $color }) => $color};\n line-height: 0;\n`;\n\nconst StepLabel = styled.span<{ $isActive: boolean; $color: string }>`\n ${({ $isActive }) => ($isActive ? paragraphMixins.mdBold : paragraphMixins.md)};\n color: ${({ $color }) => $color};\n`;\n\n// ─── Step ─────────────────────────────────────────────────────────────────────\n\ninterface StepProps {\n step: ProgressIndicatorStep;\n isActive: boolean;\n isCurrent: boolean;\n layout: 'vertical' | 'horizontal';\n onStepClick?: (stepId: string) => void;\n}\n\nconst Step = ({ step, isActive, isCurrent, layout, onStepClick }: StepProps) => {\n const { id, label, status = 'uncompleted', disabled = false } = step;\n\n const interactive = Boolean(onStepClick);\n const isClickable = resolveClickable(status, isActive, disabled, isCurrent);\n const isInteractionDisabled = disabled || (!isActive && !isCurrent && status === 'uncompleted');\n const theme = useTheme();\n const iconColor = resolveIconColor(theme, status, isActive, disabled);\n const textColor = resolveTextColor(theme, status, isActive, disabled);\n\n const Icon = resolveIcon(status, isCurrent);\n\n return (\n <StepItem\n $layout={layout}\n aria-current={!interactive && isActive ? 'step' : undefined}\n aria-disabled={!interactive && isInteractionDisabled ? true : undefined}\n >\n <StepContent\n {...(interactive && isClickable\n ? { type: 'button' as const, onClick: () => onStepClick?.(id) }\n : { as: 'div' as const })}\n aria-current={interactive && isActive ? 'step' : undefined}\n aria-disabled={interactive && isInteractionDisabled ? true : undefined}\n $isActive={isActive}\n $isClickable={isClickable}\n $interactive={interactive}\n >\n <IconWrapper $color={iconColor} aria-hidden='true'>\n <Icon />\n </IconWrapper>\n <StepLabel $isActive={isActive} $color={textColor}>\n {label}\n </StepLabel>\n </StepContent>\n </StepItem>\n );\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * ProgressIndicator guides users through a sequence of steps.\n *\n * Interaction rules:\n * - **Completed / warning / error** steps are clickable — navigate back to review or fix.\n * - **Warning** does not block forward progression; later uncompleted steps remain reachable.\n * - **Error** blocks forward progression — treat it as the terminal step in the sequence.\n * - **Active** step is not clickable — the user is already there.\n * - **Upcoming (uncompleted)** steps are not clickable — sequential progression required.\n *\n * Navigation does not clear later steps. If a change on an earlier step\n * invalidates later data, the affected steps should be flagged and require\n * re-confirmation before submission — this logic lives in the consuming component.\n *\n * @example\n * ```tsx\n * <ProgressIndicator\n * steps={[\n * { id: 'identity', label: 'Identity', status: 'completed' },\n * { id: 'address', label: 'Address', status: 'uncompleted' },\n * { id: 'review', label: 'Review', status: 'uncompleted' },\n * ]}\n * activeStepId=\"address\"\n * onStepClick={(id) => navigate(id)}\n * />\n * ```\n */\nexport const ProgressIndicator = ({\n steps,\n activeStepId,\n layout = 'vertical',\n onStepClick,\n 'aria-label': ariaLabel = 'Progress',\n ...rest\n}: ProgressIndicatorProps) => {\n // The \"current\" step is the first uncompleted or error step — where the user should work next.\n // Warning steps are skipped so forward progression is not blocked.\n // This is independent of activeStepId, which only controls the visual highlight.\n const currentStepId = steps.find(\n ({ status = 'uncompleted' }) => status === 'uncompleted' || status === 'error',\n )?.id;\n\n return (\n <StepList $layout={layout} role='list' aria-label={ariaLabel} {...rest}>\n {steps.map((step) => (\n <Step\n key={step.id}\n step={step}\n isActive={step.id === activeStepId}\n isCurrent={step.id === currentStepId}\n layout={layout}\n onStepClick={onStepClick}\n />\n ))}\n </StepList>\n );\n};\n\nexport default ProgressIndicator;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Radio-BstZg3DI.mjs","names":[],"sources":["../components/Radio/Radio.tsx"],"sourcesContent":["import { uniqueId } from 'lodash-es';\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useMemo,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport { opacityOf } from 'design-system/lib/color';\nimport {\n isChecked,\n isDisabled,\n isFocusedVisible,\n isHovered,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst Container = styled.div<{ size: 'md' | 'sm'; disabled?: boolean }>`\n cursor: pointer;\n display: flex;\n align-items: flex-start;\n flex-wrap: nowrap;\n position: relative;\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n align-items: center;\n height: 16px;\n `}\n\n &${isDisabled} {\n cursor: default;\n }\n`;\n\nconst Label = styled.label<{ disabled: boolean; size: 'md' | 'sm' }>`\n cursor: inherit;\n padding: 0 ${Spacing[2]};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.TextSecondary)};\n\n ${({ size }) =>\n size === 'sm'\n ? css`\n ${Typography.TextSmall};\n line-height: 16px;\n `\n : css`\n ${Typography.TextMedium};\n `}\n\n ${({ theme, disabled }) =>\n disabled &&\n css`\n cursor: default;\n color: ${semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n `}\n`;\n\nconst RadioCircle = styled.div<{ size: 'md' | 'sm' }>`\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: box-shadow ${TransitionDuration.Fast};\n border-radius: 100%;\n height: ${Spacing[4]};\n width: ${Spacing[4]};\n flex: 0 0 16px;\n box-sizing: border-box;\n margin-top: ${({ size }) => (size === 'sm' ? 0 : '2px')};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'InputBorderStrong', Color.BorderInputCheckbox)};\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceDefault', Color.PrimaryWhite)};\n`;\n\nconst RadioInput = styled.input<{ $size: 'md' | 'sm' }>`\n cursor: inherit;\n height: ${Spacing[4]};\n width: ${Spacing[4]};\n margin: 0;\n border: 0;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n top: ${({ $size }) => ($size === 'sm' ? 0 : '2px')};\n border-radius: 100%;\n z-index: 10; // this needs to be above the dot in the checked input\n\n &${isHovered}${isNotDisabled} ~ ${RadioCircle} {\n border-color: ${({ theme }) =>\n semanticColor(theme, 'InputBorderHoverStrong', Color.BorderInputCheckboxHover)};\n ${semanticOnly((tokens) => `background: ${tokens.InputSurfaceHover};`)}\n }\n\n &${isChecked}, &:checked {\n &${isHovered}${isNotDisabled} ~ ${RadioCircle} {\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceAccentHover', Color.BackgroundInputActiveHover)};\n border-color: ${({ theme }) => semanticColor(theme, 'InputSurfaceAccentHover', Color.BackgroundInputActiveHover)};\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} ~ ${RadioCircle} {\n ${focusStyle}\n }\n\n // RadioCircle state styles; Uses pure CSS\n &${isDisabled} + ${RadioCircle} {\n cursor: default;\n background: ${({ theme }) =>\n semanticColor(theme, 'InputSurfaceDisabled', Color.BackgroundInputDisabled)};\n border-color: ${({ theme }) =>\n semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)};\n ${semanticOnly((tokens) => `opacity: ${opacityOf(tokens.Opacity65)};`)}\n }\n\n &:checked + ${RadioCircle}, &${isChecked} + ${RadioCircle} {\n border-color: ${({ theme }) => semanticColor(theme, 'InputBorderAccent', Color.BackgroundInputActive)};\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceAccent', Color.BackgroundInputActive)};\n\n &::after {\n background: ${({ theme }) => semanticColor(theme, 'FgInverseStatic', Color.BackgroundInputDefault)};\n height: 6px;\n width: 6px;\n border-radius: 100%;\n content: '';\n position: absolute;\n }\n }\n\n &:checked${isDisabled} + ${RadioCircle}, &${isChecked}${isDisabled} + ${RadioCircle} {\n border-color: ${({ theme }) => semanticColor(theme, 'InputSurfaceAccentDisabled', Color.BackgroundInputActiveDisabled)};\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceAccentDisabled', Color.BackgroundInputActiveDisabled)};\n }\n`;\n\nexport interface RadioProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size'> {\n /**\n * If not provided, a unique ID will be generated.\n */\n id?: string;\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n label?: ReactNode;\n disabled?: boolean;\n checked?: boolean;\n value: string;\n 'data-test'?: string;\n size?: 'md' | 'sm';\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n id,\n label,\n className,\n value,\n disabled,\n checked,\n defaultChecked,\n onChange,\n 'data-test': dataTest,\n size = 'md',\n ...elemProps\n },\n ref,\n) {\n const field = useFormField({ disabled });\n const generatedId = useMemo(() => uniqueId('pds_radio__'), []);\n\n return (\n <Container className={className} disabled={disabled} data-test={dataTest} size={size}>\n <RadioInput\n id={id || generatedId}\n disabled={field.disabled}\n onChange={onChange}\n type='radio'\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n ref={ref}\n $size={size}\n {...elemProps}\n />\n <RadioCircle size={size} />\n {label && (\n <Label htmlFor={id || generatedId} disabled={disabled ?? false} size={size}>\n {label}\n </Label>\n )}\n </Container>\n );\n});\n\nexport default Radio;\n"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,YAAY,OAAO,GAA8C;;;;;;;KAOlE,EAAE,WACH,SAAS,QACT,GAAG;;;MAGD;;KAED,WAAW;;;;AAKhB,MAAM,QAAQ,OAAO,KAA+C;;eAErD,QAAQ,GAAG;YACd,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,cAAc,CAAC;;KAE9E,EAAE,WACH,SAAS,OACL,GAAG;YACC,WAAW,UAAU;;YAGzB,GAAG;YACC,WAAW,WAAW;UACxB;;KAEL,EAAE,OAAO,eACV,YACA,GAAG;;eAEQ,cAAc,OAAO,cAAc,MAAM,MAAM,KAAK,SAAS,CAAC;MACvE;;AAGN,MAAM,cAAc,OAAO,GAA0B;;;;;mCAKF;;YAEvC,QAAQ,GAAG;WACZ,QAAQ,GAAG;;;iBAGL,EAAE,WAAY,SAAS,OAAO,IAAI,MAAO;uBACnC,EAAE,YAAY,cAAc,OAAO,qBAAqB,MAAM,oBAAoB,CAAC;iBACzF,EAAE,YAAY,cAAc,OAAO,uBAAuB,MAAM,aAAa,CAAC;;AAG/F,MAAM,aAAa,OAAO,KAA6B;;YAE3C,QAAQ,GAAG;WACZ,QAAQ,GAAG;;;;;;UAMZ,EAAE,YAAa,UAAU,OAAO,IAAI,MAAO;;;;KAIhD,YAAY,cAAc,KAAK,YAAY;qBAC3B,EAAE,YACjB,cAAc,OAAO,0BAA0B,MAAM,yBAAyB,CAAC;MAC/E,cAAc,WAAW,eAAe,OAAO,kBAAkB,GAAG,CAAC;;;KAGtE,UAAU;OACR,YAAY,cAAc,KAAK,YAAY;qBAC7B,EAAE,YAAY,cAAc,OAAO,2BAA2B,MAAM,2BAA2B,CAAC;uBAC9F,EAAE,YAAY,cAAc,OAAO,2BAA2B,MAAM,2BAA2B,CAAC;;;;KAIlH,mBAAmB,cAAc,KAAK,YAAY;MACjD,WAAW;;;;KAIZ,WAAW,KAAK,YAAY;;mBAEd,EAAE,YACf,cAAc,OAAO,wBAAwB,MAAM,wBAAwB,CAAC;qBAC7D,EAAE,YACjB,cAAc,OAAO,uBAAuB,MAAM,oBAAoB,CAAC;MACvE,cAAc,WAAW,YAAY,UAAU,OAAO,UAAU,CAAC,GAAG,CAAC;;;gBAG3D,YAAY,KAAK,UAAU,KAAK,YAAY;qBACvC,EAAE,YAAY,cAAc,OAAO,qBAAqB,MAAM,sBAAsB,CAAC;mBACvF,EAAE,YAAY,cAAc,OAAO,sBAAsB,MAAM,sBAAsB,CAAC;;;qBAGpF,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;;;;;;;;;aAS5F,WAAW,KAAK,YAAY,KAAK,YAAY,WAAW,KAAK,YAAY;qBACjE,EAAE,YAAY,cAAc,OAAO,8BAA8B,MAAM,8BAA8B,CAAC;mBACxG,EAAE,YAAY,cAAc,OAAO,8BAA8B,MAAM,8BAA8B,CAAC;;;AAkBzH,MAAa,QAAQ,WAAyC,SAAS,MACrE,EACE,IACA,OACA,WACA,OACA,UACA,SACA,gBACA,UACA,aAAa,UACb,OAAO,MACP,GAAG,aAEL,KACA;CACA,MAAM,QAAQ,aAAa,EAAE,UAAU,CAAC;CACxC,MAAM,cAAc,cAAc,SAAS,cAAc,EAAE,EAAE,CAAC;AAE9D,QACE,qBAAC,WAAD;EAAsB;EAAqB;EAAU,aAAW;EAAgB;YAAhF;GACE,oBAAC,YAAD;IACE,IAAI,MAAM;IACV,UAAU,MAAM;IACN;IACV,MAAK;IACE;IACE;IACO;IACX;IACL,OAAO;IACP,GAAI;IACJ,CAAA;GACF,oBAAC,aAAD,EAAmB,MAAQ,CAAA;GAC1B,SACC,oBAAC,OAAD;IAAO,SAAS,MAAM;IAAa,UAAU,YAAY;IAAa;cACnE;IACK,CAAA;GAEA;;EAEd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioGroup-erKerwSt.mjs","names":[],"sources":["../components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import {\n type ChangeEvent,\n Children,\n cloneElement,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type VFC,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport Radio, { type RadioProps } from 'design-system/components/Radio';\nimport useControlled from 'design-system/lib/useControlled';\n\nconst Container = styled.div<{ size: 'md' | 'sm'; horizontal?: boolean }>`\n & > div {\n margin-bottom: ${Spacing[2]};\n }\n\n ${({ horizontal }) =>\n horizontal &&\n css`\n display: flex;\n align-items: center;\n & > div {\n margin-right: ${Spacing[2]};\n }\n `}\n`;\n\nexport interface RadioGroupProps extends ComponentPropsWithoutRef<'div'> {\n defaultValue?: any;\n name?: string;\n value?: any;\n onChange?: (value: any) => void;\n /**\n * Direction of radio group\n */\n horizontal?: boolean;\n /**\n * Size of radio buttons within the group\n */\n size?: 'md' | 'sm';\n}\n\nexport const RadioGroup: VFC<RadioGroupProps> = ({\n children,\n defaultValue,\n name,\n value: valueProp,\n onChange,\n horizontal = false,\n size = 'md',\n ...elemProps\n}) => {\n const [value, setValue] = useControlled({\n controlledValue: valueProp,\n default: defaultValue,\n });\n\n return (\n <Container role='radiogroup' horizontal={horizontal} size={size} {...elemProps}>\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n {Children.map(children, (child: ReactElement<RadioProps>) => {\n if (child?.type === Radio && (typeof valueProp !== 'undefined' || onChange)) {\n return cloneElement(child, {\n name,\n size,\n checked: child.props.value === value,\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n const newVal = e.target.value;\n if (typeof valueProp !== 'undefined' && onChange) {\n onChange(newVal);\n } else {\n setValue(newVal);\n }\n },\n });\n }\n\n if (name) {\n return cloneElement(child, { name });\n }\n\n return child;\n })}\n </Container>\n );\n};\n\nexport default RadioGroup;\n"],"mappings":";;;;;;;AAcA,MAAM,YAAY,OAAO,GAAgD;;qBAEpD,QAAQ,GAAG;;;KAG3B,EAAE,iBACH,cACA,GAAG;;;;wBAIiB,QAAQ,GAAG;;MAE7B;;AAkBN,MAAa,cAAoC,EAC/C,UACA,cACA,MACA,OAAO,WACP,UACA,aAAa,OACb,OAAO,MACP,GAAG,gBACC;CACJ,MAAM,CAAC,OAAO,YAAY,cAAc;EACtC,iBAAiB;EACjB,SAAS;EACV,CAAC;AAEF,QACE,oBAAC,WAAD;EAAW,MAAK;EAAyB;EAAkB;EAAM,GAAI;YAElE,SAAS,IAAI,WAAW,UAAoC;AAC3D,OAAI,OAAO,SAAS,UAAU,OAAO,cAAc,eAAe,UAChE,QAAO,aAAa,OAAO;IACzB;IACA;IACA,SAAS,MAAM,MAAM,UAAU;IAC/B,WAAW,MAAqC;KAC9C,MAAM,SAAS,EAAE,OAAO;AACxB,SAAI,OAAO,cAAc,eAAe,SACtC,UAAS,OAAO;SAEhB,UAAS,OAAO;;IAGrB,CAAC;AAGJ,OAAI,KACF,QAAO,aAAa,OAAO,EAAE,MAAM,CAAC;AAGtC,UAAO;IACP;EACQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouterContext-nPSb55p9.mjs","names":[],"sources":["../lib/router/RouterContext.tsx"],"sourcesContent":["import {\n createContext,\n type FC,\n type PropsWithChildren,\n useContext,\n useMemo,\n} from 'react';\n\nimport type { RouterAdapter } from './types';\n\nexport const RouterContext = createContext<RouterAdapter | null>(null);\n\nexport const RouterProvider: FC<PropsWithChildren<RouterAdapter>> = ({\n children,\n navigate,\n useHref,\n useLocation,\n linkComponent,\n}) => {\n const adapter = useMemo<RouterAdapter>(\n () => ({ navigate, useHref, useLocation, linkComponent }),\n [navigate, useHref, useLocation, linkComponent],\n );\n\n return <RouterContext.Provider value={adapter}>{children}</RouterContext.Provider>;\n};\n\nexport const useRouter = (): RouterAdapter | null => useContext(RouterContext);\n"],"mappings":";;;AAUA,MAAa,gBAAgB,cAAoC,KAAK;AAEtE,MAAa,kBAAwD,EACnE,UACA,UACA,SACA,aACA,oBACI;CACJ,MAAM,UAAU,eACP;EAAE;EAAU;EAAS;EAAa;EAAe,GACxD;EAAC;EAAU;EAAS;EAAa;EAAc,CAChD;AAED,QAAO,oBAAC,cAAc,UAAf;EAAwB,OAAO;EAAU;EAAkC,CAAA;;AAGpF,MAAa,kBAAwC,WAAW,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SegmentedControl-DQjIO6iX.mjs","names":[],"sources":["../components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n type Key,\n type ReactNode,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { ToggleButton, ToggleButtonGroup, type ToggleButtonProps } from 'react-aria-components';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Spacing } from '@persona/design-tokens';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nconst SegmentedControlSizeContext = createContext<'sm' | 'md'>('md');\n\nexport interface SegmentedControlProps {\n id?: string;\n className?: string;\n\n /**\n * Current selected key (controlled)\n */\n selectedKey?: Key;\n\n /**\n * Default selected key (uncontrolled)\n */\n defaultSelectedKey?: Key;\n\n /**\n * Callback when selection changes\n */\n onSelectionChange?: (key: Key) => void;\n\n /**\n * Whether the entire component is disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the component should take full width\n */\n fullWidth?: boolean;\n\n /**\n * Size of the segmented control\n */\n size?: 'sm' | 'md';\n\n /**\n * Accessible label for the group\n */\n 'aria-label'?: string;\n 'aria-required'?: boolean;\n\n /**\n * Segment components\n */\n children: ReactNode;\n}\n\ninterface StyledSegmentedControlProps {\n id?: string;\n $fullWidth?: boolean;\n $size?: 'sm' | 'md';\n}\n\nconst StyledSegmentedControl = styled(ToggleButtonGroup)<StyledSegmentedControlProps>`\n display: inline-flex;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'ActionNeutral', theme.color.variants.basic.default)};\n border-radius: 5px;\n padding: 1px;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n height: ${({ $size = 'md' }) => ($size === 'sm' ? '20px' : '24px')};\n`;\n\n/**\n * A segmented control component that allows users to select between multiple options.\n * Built with React Aria for accessibility and keyboard navigation.\n */\nexport const SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n {\n id,\n selectedKey,\n defaultSelectedKey,\n onSelectionChange,\n disabled,\n fullWidth = false,\n size = 'md',\n className,\n 'aria-label': ariaLabel,\n 'aria-required': ariaRequired,\n children,\n ...props\n },\n ref,\n ) {\n const field = useFormField({ inputId: id, disabled });\n const segmentedControlRef = useRef<HTMLDivElement>(null);\n const isRequired = ariaRequired;\n\n useImperativeHandle(ref, () => segmentedControlRef.current!, []);\n // react-aria-components filters aria-required from DOM props, so it is applied imperatively.\n useEffect(() => {\n if (isRequired) {\n segmentedControlRef.current?.setAttribute('aria-required', 'true');\n } else {\n segmentedControlRef.current?.removeAttribute('aria-required');\n }\n }, [isRequired]);\n\n return (\n <SegmentedControlSizeContext.Provider value={size}>\n <StyledSegmentedControl\n ref={segmentedControlRef}\n className={className}\n selectionMode='single'\n selectedKeys={selectedKey ? [selectedKey] : undefined}\n defaultSelectedKeys={defaultSelectedKey ? [defaultSelectedKey] : undefined}\n onSelectionChange={(keys) => {\n const key = Array.from(keys)[0];\n if (key && onSelectionChange) {\n onSelectionChange(key);\n }\n }}\n isDisabled={field.disabled}\n aria-label={ariaLabel}\n aria-labelledby={field.labelId}\n aria-describedby={field.helperTextId}\n aria-errormessage={field.hasError ? field.helperTextId : undefined}\n aria-invalid={field.hasError}\n $fullWidth={fullWidth}\n $size={size}\n {...props}\n id={field.inputId}\n >\n {children}\n </StyledSegmentedControl>\n </SegmentedControlSizeContext.Provider>\n );\n },\n);\n\nconst StyledSegment = styled(ToggleButton)<{ $size?: 'sm' | 'md' }>`\n ${paragraphMixins.sm};\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n border: none;\n border-radius: ${BorderRadius.Md};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n cursor: pointer;\n flex: 1;\n line-height: 1;\n\n & * {\n cursor: inherit;\n }\n padding: 0 ${({ $size = 'md' }) => ($size === 'sm' ? Spacing[1] : Spacing[2])};\n position: relative;\n transition: all 0.15s ease-in-out;\n white-space: nowrap;\n\n /* Hover state */\n &[data-hovered] {\n background-color: ${({ theme }) => semanticColor(theme, 'ActionNeutralHover', theme.color.variants.basic.hover)};\n }\n\n /* Selected state */\n &[data-selected] {\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.primary.white)};\n box-shadow: inset 0 0 0 1px ${({ theme }) => semanticColor(theme, 'BorderDefault', theme.color.border.input)};\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', theme.color.text.primary)};\n }\n\n /* Disabled state */\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n /* Remove focus outline unless we're using a keyboard */\n &[data-focused]:not([data-focus-visible]) {\n outline: none;\n }\n`;\n\nexport interface SegmentedControlItemProps extends Omit<\n ToggleButtonProps,\n 'isDisabled' | 'style' | 'isSelected' | 'defaultSelected'\n> {\n /**\n * Whether this control item is disabled\n */\n disabled?: boolean;\n}\n\n/**\n * A segment item component for use within SegmentedControl.\n */\nconst SegmentedControlItem = forwardRef<HTMLButtonElement, SegmentedControlItemProps>(\n function SegmentedControlItem({ disabled, children, ...props }, ref) {\n const size = useContext(SegmentedControlSizeContext);\n return (\n <StyledSegment ref={ref} isDisabled={disabled} $size={size} {...props}>\n {children}\n </StyledSegment>\n );\n },\n);\n\nexport default SegmentedControl;\nexport { SegmentedControlItem };\n"],"mappings":";;;;;;;;;AAkBA,MAAM,8BAA8B,cAA2B,KAAK;AAsDpE,MAAM,yBAAyB,OAAO,kBAAkB;;uBAEjC,EAAE,YACrB,cAAc,OAAO,iBAAiB,MAAM,MAAM,SAAS,MAAM,QAAQ,CAAC;;;YAGlE,EAAE,iBAAkB,aAAa,SAAS,OAAQ;aACjD,EAAE,QAAQ,WAAY,UAAU,OAAO,SAAS,OAAQ;;;;;;AAOrE,MAAa,mBAAmB,WAC9B,SAAS,iBACP,EACE,IACA,aACA,oBACA,mBACA,UACA,YAAY,OACZ,OAAO,MACP,WACA,cAAc,WACd,iBAAiB,cACjB,UACA,GAAG,SAEL,KACA;CACA,MAAM,QAAQ,aAAa;EAAE,SAAS;EAAI;EAAU,CAAC;CACrD,MAAM,sBAAsB,OAAuB,KAAK;CACxD,MAAM,aAAa;AAEnB,qBAAoB,WAAW,oBAAoB,SAAU,EAAE,CAAC;AAEhE,iBAAgB;AACd,MAAI,WACF,qBAAoB,SAAS,aAAa,iBAAiB,OAAO;MAElE,qBAAoB,SAAS,gBAAgB,gBAAgB;IAE9D,CAAC,WAAW,CAAC;AAEhB,QACE,oBAAC,4BAA4B,UAA7B;EAAsC,OAAO;YAC3C,oBAAC,wBAAD;GACE,KAAK;GACM;GACX,eAAc;GACd,cAAc,cAAc,CAAC,YAAY,GAAG,KAAA;GAC5C,qBAAqB,qBAAqB,CAAC,mBAAmB,GAAG,KAAA;GACjE,oBAAoB,SAAS;IAC3B,MAAM,MAAM,MAAM,KAAK,KAAK,CAAC;AAC7B,QAAI,OAAO,kBACT,mBAAkB,IAAI;;GAG1B,YAAY,MAAM;GAClB,cAAY;GACZ,mBAAiB,MAAM;GACvB,oBAAkB,MAAM;GACxB,qBAAmB,MAAM,WAAW,MAAM,eAAe,KAAA;GACzD,gBAAc,MAAM;GACpB,YAAY;GACZ,OAAO;GACP,GAAI;GACJ,IAAI,MAAM;GAET;GACsB,CAAA;EACY,CAAA;EAG5C;AAED,MAAM,gBAAgB,OAAO,aAAa;IACtC,gBAAgB,GAAG;;;;;;mBAMJ,aAAa,GAAG;YACvB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,MAAM,KAAK,UAAU,CAAC;;;;;;;;gBAQ1E,EAAE,QAAQ,WAAY,UAAU,OAAO,QAAQ,KAAK,QAAQ,GAAI;;;;;;;yBAOvD,EAAE,YAAY,cAAc,OAAO,sBAAsB,MAAM,MAAM,SAAS,MAAM,MAAM,CAAC;;;;;yBAK3F,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,MAAM,QAAQ,MAAM,CAAC;mCACtE,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,MAAM,CAAC;cACnG,EAAE,YAAY,cAAc,OAAO,aAAa,MAAM,MAAM,KAAK,QAAQ,CAAC;;;;;;;;;;;;;;;;;AA4BxF,MAAM,uBAAuB,WAC3B,SAAS,qBAAqB,EAAE,UAAU,UAAU,GAAG,SAAS,KAAK;AAEnE,QACE,oBAAC,eAAD;EAAoB;EAAK,YAAY;EAAU,OAFpC,WAAW,4BAEoC;EAAE,GAAI;EAC7D;EACa,CAAA;EAGrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select-BJ9ACmRD.mjs","names":["DropdownMenu"],"sources":["../components/Select/Select.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport type { Property } from 'csstype';\nimport { forwardRef, type ReactNode } from 'react';\nimport { useId } from 'react-aria';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { CaretDownIcon, MoreIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport Menu, {\n MenuHeading,\n MenuItem,\n type MenuItemProps,\n MenuList,\n type MenuProps,\n} from 'design-system/components/Menu';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport inputMixin, { type InputMixinProps, type InputSizes } from 'design-system/mixins/input';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nexport interface SelectProps extends InputMixinProps, Omit<SelectPrimitive.SelectProps, 'value'> {\n 'aria-label'?: string;\n placeholder?: string;\n\n /**\n * id will be applied to trigger\n */\n id?: string;\n\n /**\n * Class name will be applied to trigger\n */\n className?: string;\n\n /**\n * Max height of options menu\n */\n maxHeight?: number;\n\n /**\n * Min width of the select\n */\n minWidth?: number;\n\n /**\n * Width of the selected value container\n */\n valueContainerWidth?: 'auto' | '100%';\n\n /**\n * Render dropdown menu in a portal.\n */\n portal?: boolean;\n\n /**\n * Element the portalled menu renders into. Defaults to `document.body`. Pass a container inside\n * the current dialog so the menu escapes clipping ancestors without leaving the dialog's\n * dismiss scope, which would close it on click. Requires `portal`.\n */\n portalContainer?: HTMLElement | null;\n\n /**\n * Props to apply to Radix Select.Trigger within\n */\n triggerProps?: SelectPrimitive.SelectTriggerProps;\n\n /**\n * Props to apply to Radix Select.Content within\n */\n contentProps?: SelectPrimitive.SelectContentProps;\n\n /**\n * Callback meant for use with `react-hook-form`'s `useForm` (or Persona's `useFormSecurely`)\n */\n onChange?: (event: { target: { value: string } }) => void;\n\n size?: InputSizes;\n\n value?: string | null;\n\n width?: string;\n\n header?: ReactNode;\n\n footer?: ReactNode;\n\n /**\n * z-index of content. Please use sparingly.\n */\n zIndex?: Property.ZIndex;\n}\n\ninterface SelectButtonProps extends InputMixinProps {\n isSelectingPlaceholder: boolean;\n $width?: string;\n $minWidth?: number;\n}\n\nconst SelectButton = styled('button')<SelectButtonProps>`\n ${inputMixin};\n display: inline-flex;\n position: relative;\n align-items: center;\n outline: none;\n appearance: none;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding-right: ${Spacing[6]};\n width: ${({ $width }) => $width ?? '100%'};\n min-width: ${({ $minWidth }) => ($minWidth != null ? `${$minWidth}px` : 'auto')};\n\n &${isNotDisabled} {\n cursor: pointer;\n }\n\n ${({ theme, isSelectingPlaceholder, disabled }) =>\n isSelectingPlaceholder &&\n !disabled &&\n css`\n color: ${semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n `}\n`;\n\ninterface SelectValueContainerProps {\n width?: string;\n}\n\nconst SelectValueContainer = styled.span<SelectValueContainerProps>`\n text-overflow: ellipsis;\n min-width: 0px;\n overflow: hidden;\n text-align: start;\n\n ${({ width }) =>\n width &&\n css`\n width: ${width};\n `}\n`;\n\nconst OptionSubtitle = styled.div`\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n font-size: ${({ theme }) => theme.text.paragraph.sm.fontSize};\n margin-top: ${Spacing[1]};\n`;\n\ninterface OptionsMenuProps {\n maxHeight?: number;\n size?: InputSizes;\n}\n\nconst OptionsMenu = styled(Menu)<OptionsMenuProps>`\n width: var(--radix-select-trigger-width);\n max-height: ${({ maxHeight }) => maxHeight ?? '225px !important'};\n overflow-y: auto;\n ${semanticScrollbar}\n margin-bottom: 0;\n\n ${({ size }) => {\n switch (size) {\n case 'md': {\n return css`\n ${MenuList} {\n padding: ${Spacing[2]};\n }\n\n ${OptionItem} {\n ${paragraphMixins.md};\n padding: ${Spacing[2]};\n }\n\n ${MenuHeading} {\n padding: ${Spacing[2]};\n }\n `;\n }\n case 'sm': {\n return css`\n ${MenuList} {\n padding: ${Spacing[1]};\n }\n\n ${OptionItem} {\n ${paragraphMixins.sm};\n padding: ${Spacing[1]};\n }\n\n ${MenuHeading} {\n padding: ${Spacing[1]};\n }\n `;\n }\n }\n }}\n`;\n\nconst SelectContent = styled(SelectPrimitive.Content)<{ $zIndex?: number | string }>`\n z-index: ${({ $zIndex }) => $zIndex || Z_INDICES.dropdown};\n`;\n\nconst SelectHeaderContainer = styled(HStack)`\n display: flex;\n justify-content: space-between;\n padding: ${Spacing[1]} ${Spacing[1]} 0 ${Spacing[1]};\n margin-bottom: ${Spacing[1]};\n`;\n\nconst SelectFooter = styled.div`\n padding: ${Spacing[1]} 0;\n margin-top: ${Spacing[1]};\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst SelectMenu = forwardRef<HTMLUListElement, MenuProps & OptionsMenuProps>(function SelectMenu(\n props: MenuProps,\n forwardedRef,\n) {\n return <OptionsMenu listRef={forwardedRef} {...props} />;\n});\n\nconst OptionItem = styled(MenuItem)`\n ${paragraphMixins.md};\n padding: ${Spacing[4]};\n`;\n\nconst SelectItem = forwardRef<HTMLDivElement, MenuItemProps>(function SelectItem(\n props: MenuItemProps,\n forwardedRef,\n) {\n return <OptionItem ref={forwardedRef} {...props} />;\n});\n\nconst StyledIconContainer = styled(SelectPrimitive.Icon)<{ disabled?: boolean }>`\n position: absolute;\n right: ${Spacing[2]};\n display: flex;\n justify-content: center;\n\n ${({ theme, disabled }) => css`\n color: ${\n disabled\n ? semanticColor(theme, 'FgDisabled', Color.BorderIconDisabled)\n : semanticColor(theme, 'FgPrimary', Color.BorderIconPrimary)\n };\n `}\n`;\n\ninterface SelectHeaderProps {\n title?: ReactNode;\n menuItems?: ReactNode;\n menuTriggerLabel?: string;\n}\n\nexport const SelectHeader = ({ title, menuItems, menuTriggerLabel }: SelectHeaderProps) => {\n const uniqueId = useId();\n\n return (\n <SelectHeaderContainer align='center'>\n {title && (\n <Paragraph color='primary' weight='bold' size='md'>\n {title}\n </Paragraph>\n )}\n {menuItems && (\n <DropdownMenu\n portal={true}\n trigger={\n <IconButton>\n <MoreIcon />\n </IconButton>\n }\n triggerProps={{\n 'aria-label': menuTriggerLabel,\n id: `select-header-menu-trigger-${uniqueId}`,\n }}\n side='right'\n align='start'\n zIndex={Z_INDICES.layeredDropdown}\n contentProps={{\n // Fix for Radix UI 2.1.15 upgrade breaking changes:\n // 1. Portal rendering causes pointer-events issues preventing dropdown interaction\n // 2. Portal timing causes onFocusOutside to fire immediately, closing dropdown\n style: {\n pointerEvents: 'auto', // Ensure dropdown items receive mouse events\n },\n onFocusOutside: (event) => event.preventDefault(), // Prevent immediate portal closing\n }}\n >\n {menuItems}\n </DropdownMenu>\n )}\n </SelectHeaderContainer>\n );\n};\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(function Select(\n { portal = false, portalContainer, size = 'md', ...props }: SelectProps,\n forwardedRef,\n) {\n const {\n 'aria-label': ariaLabel,\n hasError,\n hasWarning,\n focused,\n active,\n hovered,\n disabled,\n placeholder,\n maxHeight,\n children,\n triggerProps,\n contentProps,\n id,\n className,\n onChange,\n onValueChange,\n value,\n width,\n header,\n footer,\n minWidth,\n valueContainerWidth,\n zIndex,\n } = props;\n\n const field = useFormField({ inputId: props.id, disabled, hasWarning, hasError });\n\n const content = (\n <SelectContent\n position='popper'\n side='bottom'\n sideOffset={8}\n $zIndex={zIndex}\n {...contentProps}\n >\n <SelectMenu maxHeight={maxHeight} size={size}>\n {header}\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n {footer && (\n <>\n <SelectFooter>{footer}</SelectFooter>\n </>\n )}\n </SelectMenu>\n </SelectContent>\n );\n\n return (\n <SelectPrimitive.Root\n {...props}\n onValueChange={(value) => {\n onChange?.({ target: { value } });\n onValueChange?.(value);\n }}\n // Custom behavior to consider null as empty value\n value={value === null ? '' : value}\n >\n <SelectPrimitive.Trigger\n ref={forwardedRef}\n asChild\n id={id}\n className={className}\n disabled={field.disabled}\n aria-describedby={field.helperTextId}\n aria-errormessage={field.hasError ? field.helperTextId : undefined}\n aria-invalid={field.hasError}\n aria-label={ariaLabel}\n {...triggerProps}\n >\n <SelectButton\n hasWarning={field.hasWarning}\n hasError={field.hasError}\n hovered={hovered}\n focused={focused}\n active={active}\n disabled={field.disabled}\n placeholder={placeholder}\n isSelectingPlaceholder={props.value === '' || props.value == null}\n $minWidth={minWidth}\n $size={size}\n $width={width}\n >\n <SelectValueContainer width={valueContainerWidth}>\n <SelectPrimitive.Value placeholder={placeholder} />\n </SelectValueContainer>\n <StyledIconContainer disabled={field.disabled}>\n <CaretDownIcon />\n </StyledIconContainer>\n </SelectButton>\n </SelectPrimitive.Trigger>\n {portal ? (\n <SelectPrimitive.Portal container={portalContainer}>{content}</SelectPrimitive.Portal>\n ) : (\n content\n )}\n </SelectPrimitive.Root>\n );\n});\n\nexport default Select;\n\nexport const Option = forwardRef<HTMLDivElement, SelectPrimitive.SelectItemProps & MenuItemProps>(\n function Option({ children, subtitle, ...props }, forwardedRef) {\n return (\n <SelectPrimitive.Item {...props} ref={forwardedRef} asChild>\n <SelectItem {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n {subtitle && <OptionSubtitle>{subtitle}</OptionSubtitle>}\n </SelectItem>\n </SelectPrimitive.Item>\n );\n },\n);\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Spacer-J_HuhxX2.mjs","names":[],"sources":["../components/Spacer/Spacer.tsx","../components/Spacer/index.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport { BASE } from 'design-system/variables/spacing';\n\ninterface SpacerProps {\n height?: number;\n width?: number;\n}\n\n/**\n * A simple spacer element used to provide vertical space in grids.\n *\n * @deprecated You probably want to use `Stack` instead with a `gap` for spacing.\n */\nconst Spacer = styled.div.attrs(() => ({ 'aria-hidden': true }))<SpacerProps>`\n height: ${({ height = 5 }) => height * BASE}px;\n width: ${({ width = 0 }) => width * BASE}px;\n flex: none;\n`;\n\nexport default Spacer;\n","import Spacer from './Spacer';\n\nexport default Spacer;\n"],"mappings":";;;;ACEA,IAAA,iBAAe,ADYA,OAAO,IAAI,aAAa,EAAE,eAAe,MAAM,EAAE;aACnD,EAAE,SAAS,QAAQ,SAAA,EAAc;YAClC,EAAE,QAAQ,QAAQ,QAAA,EAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Spinner-7Camx1vs.mjs","names":["LoaderIconMedium"],"sources":["../components/Spinner/Spinner.tsx"],"sourcesContent":["import styled, { useTheme } from 'styled-components';\n\nimport { rotate } from '@persona/design-system/variables/keyframes';\nimport { TransitionDuration } from '@persona/design-system/variables/transitions';\nimport { Color } from '@persona/design-tokens';\nimport { LoaderIcon } from '@persona/icons';\nimport { LoaderIcon as LoaderIconMedium } from '@persona/icons/24px';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nexport type SpinnerVariant = 'default' | 'inverse';\n\ntype SpinnerSize = 'sm' | 'md';\n\ninterface SpinnerProps {\n /**\n * `default` uses {@link Color.BorderIconPrimary}; `inverse` uses {@link Color.BorderIconInverse}\n * (e.g. on dark backgrounds).\n */\n variant?: SpinnerVariant;\n /** Size of the spinner. Defaults to 'sm'. */\n size?: SpinnerSize;\n /** Screen reader text. Defaults to \"Loading...\". */\n srText?: string;\n className?: string;\n}\n\nconst Container = styled.span`\n line-height: 0;\n display: inline-block;\n`;\n\nconst VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n`;\n\nconst IconContainer = styled.span`\n display: inline-block;\n animation: ${rotate} ${TransitionDuration.OneSecond} linear infinite;\n`;\n\nexport const Spinner = ({ variant = 'default', size = 'sm', srText, className }: SpinnerProps) => {\n const theme = useTheme();\n const resolvedColor =\n variant === 'inverse'\n ? semanticColor(theme, 'FgInverse', Color.BorderIconInverse)\n : semanticColor(theme, 'FgPrimary', Color.BorderIconPrimary);\n const label = srText ?? 'Loading...';\n return (\n <Container role='status' aria-label={label} className={className}>\n <VisuallyHidden>{label}</VisuallyHidden>\n <IconContainer>\n {size === 'sm' ? (\n <LoaderIcon color={resolvedColor} />\n ) : (\n <LoaderIconMedium color={resolvedColor} />\n )}\n </IconContainer>\n </Container>\n );\n};\n\nexport default Spinner;\n"],"mappings":";;;;;;;;;AA0BA,MAAM,YAAY,OAAO,IAAI;;;;AAK7B,MAAM,iBAAiB,OAAO,IAAI;;;;;;;;AASlC,MAAM,gBAAgB,OAAO,IAAI;;eAElB,OAAO,GAAA,SAAgC;;AAGtD,MAAa,WAAW,EAAE,UAAU,WAAW,OAAO,MAAM,QAAQ,gBAA8B;CAChG,MAAM,QAAQ,UAAU;CACxB,MAAM,gBACJ,YAAY,YACR,cAAc,OAAO,aAAa,MAAM,kBAAkB,GAC1D,cAAc,OAAO,aAAa,MAAM,kBAAkB;CAChE,MAAM,QAAQ,UAAU;AACxB,QACE,qBAAC,WAAD;EAAW,MAAK;EAAS,cAAY;EAAkB;YAAvD,CACE,oBAAC,gBAAD,EAAA,UAAiB,OAAuB,CAAA,EACxC,oBAAC,eAAD,EAAA,UACG,SAAS,OACR,oBAAC,YAAD,EAAY,OAAO,eAAiB,CAAA,GAEpC,oBAACA,cAAD,EAAkB,OAAO,eAAiB,CAAA,EAE9B,CAAA,CACN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Stack-BkC7FCdF.mjs","names":[],"sources":["../components/Stack/Stack.tsx"],"sourcesContent":["import type * as CSS from 'csstype';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\n\nexport interface StackProps {\n /**\n * Spacing between items. Defaults to Spacing[3].\n *\n * @defaultValue Spacing[3]\n */\n spacing?: Spacing;\n\n /**\n * Direction of Stack. Defaults to vertical.\n *\n * @defaultValue 'vertical'\n */\n direction?: 'vertical' | 'horizontal';\n\n /**\n * Passed through as `align-items`\n */\n align?: CSS.Property.AlignItems;\n\n /**\n * Passed through as `justify-content`\n */\n justify?: CSS.Property.JustifyContent;\n\n /**\n * Passed through as `flex-wrap`\n */\n wrap?: CSS.Property.FlexWrap;\n\n /**\n * Give each item an equal width/height.\n */\n equal?: boolean;\n\n /**\n * Passed through as `width: 100%`\n */\n fullWidth?: boolean;\n}\n\nexport const Stack = styled('div')<StackProps>`\n display: flex;\n flex-direction: ${({ direction }) => (direction === 'horizontal' ? 'row' : 'column')};\n gap: ${({ spacing }) => spacing || Spacing[2]};\n\n ${({ align }) =>\n align &&\n css`\n align-items: ${align};\n `}\n\n ${({ justify }) =>\n justify &&\n css`\n justify-content: ${justify};\n `}\n\n ${({ wrap }) =>\n wrap &&\n css`\n flex-wrap: ${wrap};\n `}\n\n ${({ equal }) =>\n equal &&\n css`\n > * {\n flex-grow: 1;\n flex-basis: 0;\n }\n `}\n\n ${({ fullWidth }) =>\n fullWidth &&\n css`\n width: 100%;\n `}\n`;\n\nexport default Stack;\n\nexport type HStackProps = ComponentPropsWithoutRef<'div'> & StackProps;\n\nexport const HStack = (props: HStackProps) => <Stack {...props} direction='horizontal' />;\n"],"mappings":";;;;AA+CA,MAAa,QAAQ,OAAO,MAAM;;qBAEb,EAAE,gBAAiB,cAAc,eAAe,QAAQ,SAAU;UAC7E,EAAE,cAAc,WAAW,QAAQ,GAAG;;KAE3C,EAAE,YACH,SACA,GAAG;qBACc,MAAM;MACrB;;KAED,EAAE,cACH,WACA,GAAG;yBACkB,QAAQ;MAC3B;;KAED,EAAE,WACH,QACA,GAAG;mBACY,KAAK;MAClB;;KAED,EAAE,YACH,SACA,GAAG;;;;;MAKD;;KAED,EAAE,gBACH,aACA,GAAG;;MAED;;AAON,MAAa,UAAU,UAAuB,oBAAC,OAAD;CAAO,GAAI;CAAO,WAAU;CAAe,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusIndicator-Bunn9YLV.mjs","names":[],"sources":["../components/StatusIndicator/StatusIndicator.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n CircleCheckFillIcon,\n CircleFillIcon,\n CircleHalfIcon,\n CircleMinusFillIcon,\n CircleNullIcon,\n CircleSlashIcon,\n WarningFillIcon,\n} from '@persona/icons/12px';\nimport { withAlpha } from 'design-system/lib/color';\nimport { type MaybeSemanticTheme, semanticTokens } from 'design-system/lib/semanticColor';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nexport type StatusType =\n | 'neutral'\n | 'attention'\n | 'warning'\n | 'critical'\n | 'success'\n | 'feature'\n | 'informational'\n | 'miscellaneous';\nexport type BackgroundType = 'filled' | 'none';\n\n/**\n * Narrow set of status presets — one value per type+icon combination.\n * Override color with `type` or icon with `leadingIcon` when needed.\n */\nexport type Status =\n | 'open'\n | 'pending'\n | 'completed'\n | 'active'\n | 'failed'\n | 'needs_review'\n | 'canceled'\n | 'archived';\n\nconst STATUS_CONFIG: Record<Status, { type: StatusType; icon: ReactNode }> = {\n open: { type: 'neutral', icon: <CircleNullIcon /> },\n pending: { type: 'neutral', icon: <CircleHalfIcon /> },\n completed: { type: 'success', icon: <CircleCheckFillIcon /> },\n active: { type: 'success', icon: <CircleFillIcon /> },\n failed: { type: 'critical', icon: <CircleSlashIcon /> },\n needs_review: { type: 'warning', icon: <WarningFillIcon /> },\n canceled: { type: 'attention', icon: <CircleSlashIcon /> },\n archived: { type: 'neutral', icon: <CircleMinusFillIcon /> },\n};\n\n/** All supported `status` preset keys, derived from the config map. */\nexport const STATUSES = Object.keys(STATUS_CONFIG) as Status[];\n\nexport interface StatusIndicatorProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Preset that sets a default semantic type and icon.\n * Explicit `type` and `leadingIcon` override the preset.\n */\n status?: Status;\n\n /**\n * The semantic status type to display. Overrides `status` when both are set.\n */\n type?: StatusType;\n\n /**\n * Whether to show filled background or transparent\n */\n background?: BackgroundType;\n\n /**\n * Whether to show the icon. When false, displays label-only variant\n * @default true\n */\n showIcon?: boolean;\n\n /**\n * Optional custom icon to replace the default icon indicator (12px recommended)\n * - undefined (default): Uses `status` icon when set, otherwise CircleNullIcon\n * - null: Hides the icon completely\n * - ReactNode: Shows the provided custom icon\n * Note: showIcon must be true for this to take effect\n */\n leadingIcon?: ReactNode | null;\n\n /**\n * Truncate the label with an ellipsis instead of letting it overflow its container. Adds a\n * title tooltip with the full text when it doesn't fit.\n * @default false\n */\n truncate?: boolean;\n\n /**\n * Render the label exactly as given instead of capitalizing each word. Use for labels that are\n * authored outside the product, where the casing is not ours to change.\n * @default false\n */\n preserveCase?: boolean;\n\n /**\n * The text label to display\n */\n children?: ReactNode;\n}\n\ninterface StatusColors {\n background: string;\n text: string;\n icon: string;\n}\n\nconst FILLED_STATUS_COLORS: Record<StatusType, StatusColors> = {\n neutral: {\n background: Color.BackgroundStatusIndicatorDefault,\n text: Color.TextStatusIndicatorDefault,\n icon: Color.BorderIconLabelGrey,\n },\n attention: {\n background: Color.BackgroundStatusIndicatorAttention,\n text: Color.TextStatusIndicatorAttention,\n icon: Color.BorderIconLabelYellow,\n },\n warning: {\n background: Color.BackgroundStatusIndicatorWarning,\n text: Color.TextStatusIndicatorWarning,\n icon: Color.BorderIconLabelOrange,\n },\n critical: {\n background: Color.BackgroundStatusIndicatorCritical,\n text: Color.TextStatusIndicatorCritical,\n icon: Color.BorderIconLabelRed,\n },\n success: {\n background: Color.BackgroundStatusIndicatorSuccess,\n text: Color.TextStatusIndicatorSuccess,\n icon: Color.BorderIconLabelGreen,\n },\n feature: {\n background: Color.BackgroundStatusIndicatorFeature,\n text: Color.TextStatusIndicatorFeature,\n icon: Color.BorderIconLabelPurple,\n },\n informational: {\n background: Color.BackgroundStatusIndicatorInformational,\n text: Color.TextStatusIndicatorInformational,\n icon: Color.BorderIconLabelBlue,\n },\n miscellaneous: {\n background: Color.BackgroundStatusIndicatorMiscellaneous,\n text: Color.TextStatusIndicatorMiscellaneous,\n icon: Color.BorderIconLabelTeal,\n },\n};\n\nconst TRANSPARENT_STATUS_COLORS: Record<StatusType, StatusColors> = {\n neutral: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconSecondary,\n },\n attention: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconWarning,\n },\n warning: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconWarning,\n },\n critical: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconDanger,\n },\n success: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconSuccess,\n },\n feature: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconActive,\n },\n informational: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconLabelBlue,\n },\n miscellaneous: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconLabelTeal,\n },\n};\n\nconst semanticFilledStatusColors = (t: SemanticTokens): Record<StatusType, StatusColors> => ({\n neutral: { background: t.StatusNeutral, text: t.FgPrimary, icon: t.FgPrimary },\n attention: {\n background: withAlpha(t.StatusHighlight, t.Opacity15),\n text: t.FgHighlight,\n icon: t.FgHighlight,\n },\n warning: {\n background: withAlpha(t.StatusWarning, t.Opacity15),\n text: t.FgWarning2,\n icon: t.FgWarning2,\n },\n critical: {\n background: withAlpha(t.StatusDanger3, t.Opacity15),\n text: t.FgDanger2,\n icon: t.FgDanger2,\n },\n success: {\n background: withAlpha(t.StatusSuccess2, t.Opacity15),\n text: t.FgSuccess,\n icon: t.FgSuccess,\n },\n feature: {\n background: withAlpha(t.StatusFeature, t.Opacity25),\n text: t.FgFeature,\n icon: t.FgFeature,\n },\n informational: {\n background: withAlpha(t.StatusInfo2, t.Opacity25),\n text: t.FgInfo,\n icon: t.FgInfo,\n },\n miscellaneous: {\n background: withAlpha(t.StatusMisc, t.Opacity15),\n text: t.FgMisc,\n icon: t.FgMisc,\n },\n});\n\nconst semanticTransparentStatusColors = (t: SemanticTokens): Record<StatusType, StatusColors> => ({\n neutral: { background: 'transparent', text: t.FgPrimary, icon: t.FgSecondary },\n attention: { background: 'transparent', text: t.FgPrimary, icon: t.FeedbackHighlight1 },\n warning: { background: 'transparent', text: t.FgPrimary, icon: t.FgWarning1 },\n critical: { background: 'transparent', text: t.FgPrimary, icon: t.FgDanger1 },\n success: { background: 'transparent', text: t.FgPrimary, icon: t.FgSuccess },\n feature: { background: 'transparent', text: t.FgPrimary, icon: t.FgAccent },\n informational: { background: 'transparent', text: t.FgPrimary, icon: t.FgInfo },\n miscellaneous: { background: 'transparent', text: t.FgPrimary, icon: t.FgMisc },\n});\n\nconst semanticStatusColorCache = new WeakMap<\n SemanticTokens,\n Record<BackgroundType, Record<StatusType, StatusColors>>\n>();\n\nconst semanticStatusColors = (tokens: SemanticTokens) => {\n let colors = semanticStatusColorCache.get(tokens);\n if (!colors) {\n colors = {\n filled: semanticFilledStatusColors(tokens),\n none: semanticTransparentStatusColors(tokens),\n };\n semanticStatusColorCache.set(tokens, colors);\n }\n return colors;\n};\n\nconst statusColors = (theme: MaybeSemanticTheme, background: BackgroundType) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n return semanticStatusColors(tokens)[background];\n }\n return background === 'filled' ? FILLED_STATUS_COLORS : TRANSPARENT_STATUS_COLORS;\n};\n\nconst Label = styled.div<{\n $type: StatusType;\n $background: BackgroundType;\n $truncate: boolean;\n $preserveCase: boolean;\n}>`\n ${paragraphMixins.sm}\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-shrink: ${({ $truncate }) => ($truncate ? 1 : 0)};\n min-width: ${({ $truncate }) => ($truncate ? '0' : 'auto')};\n /* Line box hugs the font so pill height is driven by padding alone, and clipping an overflowing\n label can't cut into descenders. Matches Sticker. */\n line-height: 1;\n white-space: nowrap;\n text-transform: ${({ $preserveCase }) => ($preserveCase ? 'none' : 'capitalize')};\n /* Slight optical centering adjustment */\n transform: translateY(0.5px);\n color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].text};\n`;\n\nconst IconContainer = styled.span<{ $type: StatusType; $background: BackgroundType }>`\n line-height: 0;\n color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].icon};\n`;\n\nconst LabelContainer = styled.div<{ $hasIcon: boolean; $truncate: boolean }>`\n display: flex;\n align-items: center;\n gap: ${Spacing[1]};\n padding: ${({ $hasIcon }) =>\n `${Spacing[1]} ${Spacing[2]} ${Spacing[1]} ${$hasIcon ? Spacing[1] : Spacing[2]}`};\n position: relative;\n flex-shrink: ${({ $truncate }) => ($truncate ? 1 : 0)};\n min-width: ${({ $truncate }) => ($truncate ? '0' : 'auto')};\n`;\n\nconst StyledStatusIndicator = styled.div<{\n $type: StatusType;\n $background: BackgroundType;\n $truncate: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n border-radius: ${BorderRadius.Xl};\n width: fit-content;\n max-width: ${({ $truncate }) => ($truncate ? '100%' : 'none')};\n\n ${({ theme, $type, $background }) => css`\n background-color: ${statusColors(theme, $background)[$type].background};\n `}\n`;\n\n/**\n * StatusIndicator displays semantic status information with a colored icon and label.\n * Supports both filled backgrounds and transparent styles.\n *\n * @example\n * ```tsx\n * <StatusIndicator status=\"active\">Active</StatusIndicator>\n * <StatusIndicator type=\"success\" background=\"filled\">Approved</StatusIndicator>\n * <StatusIndicator type=\"critical\" background=\"none\">Failed</StatusIndicator>\n * ```\n */\nexport const StatusIndicator = ({\n status,\n type,\n background = 'filled',\n showIcon = true,\n leadingIcon,\n truncate = false,\n preserveCase = false,\n children,\n ...props\n}: StatusIndicatorProps) => {\n const resolvedType = type ?? (status != null ? STATUS_CONFIG[status].type : 'neutral');\n\n // Determine which icon to show:\n // - showIcon=false with background='filled': label-only variant (no icon)\n // - leadingIcon set (including null): explicit override\n // - status set: use preset icon\n // - otherwise: default CircleNullIcon\n // - background='none' always shows icon (showIcon is ignored for none background)\n let iconToRender;\n if (!showIcon && background === 'filled') {\n iconToRender = null;\n } else if (typeof leadingIcon !== 'undefined') {\n iconToRender = leadingIcon;\n } else if (status != null) {\n iconToRender = STATUS_CONFIG[status].icon;\n } else {\n iconToRender = <CircleNullIcon />;\n }\n const hasIcon = iconToRender != null;\n\n return (\n <StyledStatusIndicator\n $type={resolvedType}\n $background={background}\n $truncate={truncate}\n {...props}\n >\n <LabelContainer $hasIcon={hasIcon} $truncate={truncate}>\n {hasIcon && (\n <IconContainer $type={resolvedType} $background={background}>\n {iconToRender}\n </IconContainer>\n )}\n <Label\n $type={resolvedType}\n $background={background}\n $truncate={truncate}\n $preserveCase={preserveCase}\n >\n {truncate ? <TruncatedText>{children}</TruncatedText> : children}\n </Label>\n </LabelContainer>\n </StyledStatusIndicator>\n );\n};\n\nexport default StatusIndicator;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sticker-yhxtIYH8.mjs","names":[],"sources":["../components/Sticker/tone.ts","../components/Sticker/Sticker.tsx"],"sourcesContent":["import type { Color } from '@persona/design-tokens';\nimport { type PdsColor, withAlpha } from 'design-system/lib/color';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nimport type { StickerProps } from './Sticker';\n\nexport interface StickerTone {\n background: Color;\n backgroundHover: Color;\n color: Color;\n colorHover: Color;\n colorDisabled: PdsColor;\n}\n\nconst buildSemanticStickerTone = (\n t: SemanticTokens,\n variant: StickerProps['variant'],\n onSecondaryBackground: boolean,\n): StickerTone => {\n switch (variant) {\n case 'white':\n return {\n background: t.FeedbackNeutralInverse,\n backgroundHover: t.FeedbackNeutral1,\n color: t.FgPrimary,\n colorHover: t.FgPrimary,\n colorDisabled: t.FgDisabled,\n };\n case 'blue':\n return {\n background: t.FeedbackInfo2,\n backgroundHover: t.FeedbackInfo3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'teal':\n return {\n background: t.FeedbackMisc1,\n backgroundHover: t.FeedbackMisc2,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'green':\n case 'success':\n return {\n background: t.FeedbackSuccess2,\n backgroundHover: t.FeedbackSuccess3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'yellow':\n case 'caution':\n return {\n background: t.FeedbackHighlight1,\n backgroundHover: t.FeedbackHighlight2,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'orange':\n return {\n background: t.FeedbackWarning2,\n backgroundHover: t.FeedbackWarning3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'pink':\n case 'danger':\n return {\n background: t.FeedbackDanger2,\n backgroundHover: t.FeedbackDanger3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'red':\n return {\n background: t.FeedbackDanger3,\n backgroundHover: t.FeedbackDanger4,\n color: t.FgInverse,\n colorHover: t.FgInverseStatic,\n colorDisabled: withAlpha(t.FgInverseStatic, t.Opacity65),\n };\n case 'purple':\n case 'primary':\n return {\n background: t.FeedbackAccent2,\n backgroundHover: t.FeedbackAccent3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgInverseStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'darkGrey':\n return {\n background: t.FeedbackNeutral4,\n backgroundHover: t.FeedbackNeutral5,\n color: t.FgInverseStatic,\n colorHover: t.FgInverseStatic,\n colorDisabled: withAlpha(t.FgInverseStatic, t.Opacity65),\n };\n default:\n return {\n background: onSecondaryBackground ? t.FeedbackNeutral2Static : t.FeedbackNeutral1,\n backgroundHover: t.FeedbackNeutral3,\n color: t.FgPrimary,\n colorHover: t.FgPrimary,\n colorDisabled: t.FgDisabled,\n };\n }\n};\n\nconst semanticStickerToneCache = new WeakMap<SemanticTokens, Map<string, StickerTone>>();\n\nexport const semanticStickerTone = (\n t: SemanticTokens,\n variant: StickerProps['variant'],\n onSecondaryBackground = false,\n): StickerTone => {\n let tones = semanticStickerToneCache.get(t);\n if (!tones) {\n tones = new Map();\n semanticStickerToneCache.set(t, tones);\n }\n\n const key = `${variant ?? ''}:${onSecondaryBackground ? 'secondary' : 'default'}`;\n let tone = tones.get(key);\n if (!tone) {\n tone = buildSemanticStickerTone(t, variant, onSecondaryBackground);\n tones.set(key, tone);\n }\n return tone;\n};\n","import type { ComponentPropsWithoutRef, MouseEventHandler, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons/12px';\nimport { IconButton } from 'design-system/components/Button';\nimport Stack from 'design-system/components/Stack';\nimport { withAlpha } from 'design-system/lib/color';\nimport {\n isDisabled,\n isFocusedVisible,\n isHovered,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport { semanticColor, semanticTokens } from 'design-system/lib/semanticColor';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { Variant } from 'design-system/theme';\n\nimport { semanticStickerTone } from './tone';\n// Define the options with labels\nexport const STICKER_COLOR_CONFIG = {\n white: 'White',\n blue: 'Blue',\n teal: 'Teal',\n green: 'Green',\n yellow: 'Yellow',\n orange: 'Orange',\n pink: 'Pink',\n red: 'Red',\n purple: 'Purple',\n darkGrey: 'Dark Grey',\n grey: 'Grey',\n} as const;\n\n// Derive the type from the object keys\nexport type LabelBackgrounds = keyof typeof STICKER_COLOR_CONFIG;\n\nexport interface StickerProps extends ComponentPropsWithoutRef<'div'> {\n variant?: LabelBackgrounds | Exclude<Variant, 'inverse'>;\n\n /**\n * Icon to render to the left of the Sticker. 12px icons recommended.\n */\n icon?: ReactNode;\n\n /**\n * Callback to call upon clicking \"x\" button. Non-null will render the button.\n */\n onDismiss?: MouseEventHandler;\n\n /**\n * Additional props to pass to the dismiss \"x\" button.\n */\n dismissButtonProps?: ComponentPropsWithoutRef<'button'>;\n\n /**\n * Renders disabled style for the entire Sticker and disables \"x\" button.\n */\n disabled?: boolean;\n\n /**\n * Shows a required asterisk (*) that won't be cut off when text is truncated.\n */\n isRequired?: boolean;\n\n /**\n * In some cases we render a sticker/badge on a secondary background, which needs an adjustment\n * for certain variants.\n */\n onSecondaryBackground?: boolean;\n}\n\nconst StickerIcon = styled('div')<Pick<StickerProps, 'variant' | 'disabled'>>`\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant);\n return disabled ? tone.colorDisabled : tone.color;\n }\n switch (variant) {\n case 'darkGrey':\n case 'red':\n return theme.color.text.inverse;\n default:\n return 'inherit';\n }\n }};\n line-height: 0;\n svg {\n width: 12px;\n height: 12px;\n }\n`;\n\nconst RequiredAsterisk = styled.span<Pick<StickerProps, 'variant' | 'disabled'>>`\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n return disabled && tokens\n ? semanticStickerTone(tokens, variant).colorDisabled\n : semanticColor(theme, 'FgDanger1', Color.TextDanger);\n }};\n /* Ensure asterisk never gets hidden and takes minimal space */\n flex-shrink: 0;\n`;\n\nexport const StickerContainer = styled(Stack)`\n padding: 2px ${Spacing[1]};\n /* Ensure container can shrink for text truncation */\n min-width: 0;\n flex: 1;\n`;\n\nexport const StickerContentContainer = styled(StickerContainer)`\n ${paragraphMixins.sm}\n padding: 0;\n`;\n\nexport const StyledTruncatedText = styled(TruncatedText)`\n ${paragraphMixins.sm}\n flex: 1;\n min-width: 0;\n line-height: 1;\n transform: translateY(0.5px);\n`;\n\nconst DismissButton = styled(IconButton)<Pick<StickerProps, 'variant' | 'disabled'>>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-sticker: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n\n border: none;\n\n padding: 0 ${Spacing[1]};\n border-radius: ${BorderRadius.Sm};\n width: 1rem;\n\n height: 100%;\n\n display: inline-flex;\n align-items: center;\n\n svg {\n width: 12px;\n height: 12px;\n }\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant);\n return disabled ? tone.colorDisabled : tone.color;\n }\n if (variant === 'red' || variant === 'darkGrey') {\n return theme.color.text.inverse;\n }\n return disabled ? 'inherit' : Color.BorderIconPrimary;\n }};\n\n &${isDisabled} {\n background-color: inherit !important;\n color: ${({ theme, variant }) => {\n const tokens = semanticTokens(theme);\n return tokens ? semanticStickerTone(tokens, variant).colorDisabled : 'inherit';\n }} !important;\n\n svg,\n svg path {\n color: inherit !important;\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} {\n box-shadow: 0 0 0 1px var(--background-color-behind-sticker);\n }\n\n &${isHovered}${isNotDisabled} {\n cursor: pointer;\n\n background: ${({ theme, variant }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n return semanticStickerTone(tokens, variant).backgroundHover;\n }\n if (variant === 'grey' || variant === 'basic') {\n return Color.BackgroundLabelGreyHover;\n } else if (variant === 'darkGrey') {\n return Color.BackgroundLabelDarkGreyHover;\n } else if (variant === 'purple') {\n return Color.BackgroundLabelPurpleHover;\n } else if (variant === 'red' || variant === 'danger') {\n return Color.BackgroundLabelDarkRedHover;\n } else if (variant === 'orange') {\n return Color.BackgroundLabelOrangeHover;\n } else if (variant === 'yellow' || variant === 'caution') {\n return Color.BackgroundLabelYellowHover;\n } else if (variant === 'green' || variant === 'success') {\n return Color.BackgroundLabelGreenHover;\n } else if (variant === 'teal') {\n return Color.BackgroundLabelTealHover;\n } else if (variant === 'blue') {\n return Color.BackgroundLabelBlueHover;\n } else if (variant === 'pink') {\n return Color.BackgroundLabelRedHover;\n } else if (variant === 'white') {\n return Color.BackgroundLabelWhiteHover;\n } else {\n return 'inherit';\n }\n }};\n }\n`;\n\nconst StyledSticker = styled('div')<\n StickerProps & { sizeIcon?: boolean; $onSecondaryBackground?: boolean }\n>`\n display: inline-flex;\n white-space: nowrap;\n\n border-radius: ${BorderRadius.Sm};\n height: 1rem;\n max-width: 100%;\n\n color: ${({ theme, variant, disabled, $onSecondaryBackground }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant, $onSecondaryBackground);\n return disabled ? tone.colorDisabled : tone.color;\n }\n if (disabled) {\n return variant === 'red' || variant === 'darkGrey'\n ? theme.color.text.inverse\n : theme.color.text.disabled;\n }\n switch (variant) {\n case 'darkGrey':\n case 'red':\n return theme.color.text.inverse;\n default:\n return theme.color.text.primary;\n }\n }};\n background: ${({ theme, variant, disabled, $onSecondaryBackground }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const background = semanticStickerTone(tokens, variant, $onSecondaryBackground).background;\n return disabled ? withAlpha(background, tokens.Opacity65) : background;\n }\n if (disabled) {\n switch (variant) {\n case 'white':\n return Color.BackgroundLabelWhite;\n case 'blue':\n return Color.BackgroundLabelBlueDisabled;\n case 'teal':\n return Color.BackgroundLabelTealDisabled;\n case 'green':\n case 'success':\n return Color.BackgroundLabelGreenDisabled;\n case 'yellow':\n case 'caution':\n return Color.BackgroundLabelYellowDisabled;\n case 'orange':\n return Color.BackgroundLabelOrangeDisabled;\n case 'pink':\n case 'danger':\n return Color.BackgroundLabelRedDisabled;\n case 'red':\n return Color.BackgroundLabelDarkRedDisabled;\n case 'purple':\n case 'primary':\n return Color.BackgroundLabelPurpleDisabled;\n case 'darkGrey':\n return Color.BackgroundLabelDarkGreyDisabled;\n case 'basic':\n case 'grey':\n default:\n if ($onSecondaryBackground) {\n return Color.CoreSlate100;\n }\n return Color.BackgroundLabelGreyDisabled;\n }\n }\n switch (variant) {\n case 'white':\n return Color.BackgroundLabelWhiteDisabled;\n case 'blue':\n return Color.BackgroundLabelBlue;\n case 'teal':\n return Color.BackgroundLabelTeal;\n case 'green':\n case 'success':\n return Color.BackgroundLabelGreen;\n case 'yellow':\n case 'caution':\n return Color.BackgroundLabelYellow;\n case 'orange':\n return Color.BackgroundLabelOrange;\n case 'pink':\n case 'danger':\n return Color.BackgroundLabelRed;\n case 'red':\n return Color.BackgroundLabelDarkRed;\n case 'purple':\n case 'primary':\n return Color.BackgroundLabelPurple;\n case 'darkGrey':\n return Color.BackgroundLabelDarkGrey;\n case 'basic':\n default:\n if ($onSecondaryBackground) {\n return Color.CoreSlate200;\n }\n return Color.BackgroundLabelGrey;\n }\n }};\n`;\n\nexport const Sticker = ({\n variant,\n icon,\n children,\n onDismiss,\n disabled,\n dismissButtonProps,\n isRequired,\n onSecondaryBackground,\n ...props\n}: StickerProps) => {\n const hasContent = children != null;\n\n if (!hasContent) {\n const hasIcon = icon != null;\n if (!hasIcon) {\n console.warn('Sticker component requires content and/or an icon to render');\n return null;\n }\n\n if (hasIcon && !props['aria-label']) {\n console.warn('Sticker component requires an aria-label when only rendering an icon');\n }\n }\n\n return (\n <StyledSticker\n $onSecondaryBackground={onSecondaryBackground}\n variant={variant}\n disabled={disabled}\n sizeIcon={!!icon && !hasContent}\n {...props}\n >\n <StickerContainer direction='horizontal' align='center' spacing={Spacing[0]}>\n <StickerContentContainer direction='horizontal' align='center' spacing={Spacing[1]}>\n {icon && (\n <StickerIcon variant={variant} disabled={disabled}>\n {icon}\n </StickerIcon>\n )}\n {hasContent && <StyledTruncatedText>{children}</StyledTruncatedText>}\n </StickerContentContainer>\n {isRequired && (\n <RequiredAsterisk variant={variant} disabled={disabled}>\n *\n </RequiredAsterisk>\n )}\n </StickerContainer>\n\n {onDismiss && (\n <DismissButton\n variant={variant}\n disabled={disabled}\n id='sticker__dismiss-button'\n size='sm'\n onClick={onDismiss}\n aria-label='Remove'\n {...dismissButtonProps}\n >\n <XIcon />\n </DismissButton>\n )}\n </StyledSticker>\n );\n};\n\nexport default Sticker;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar-SX8E9-Bk.mjs","names":["TabBarContext","TabBarContext"],"sources":["../components/TabBar/TabBarContext.ts","../components/TabBar/TabBar.tsx","../components/TabBar/Tab.tsx","../components/TabBar/TabBarIconButton.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport default createContext<{ maxTabChars?: number; size?: 'md' | 'sm' }>({});\n","import { mergeRefs } from '@react-aria/utils';\nimport {\n type ComponentPropsWithoutRef,\n type ForwardedRef,\n forwardRef,\n type KeyboardEventHandler,\n type ReactNode,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nconst TabBarContainer = styled.div`\n display: flex;\n height: ${Spacing[6]};\n position: relative;\n box-sizing: border-box;\n border-bottom: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n justify-content: space-between;\n gap: ${Spacing[4]};\n`;\n\nconst RightActions = styled.div`\n align-self: center;\n`;\n\nconst TitleTab = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n ${paragraphMixins.mdBold};\n`;\n\nconst StyledTabContainer = styled.div<{ $size?: 'md' | 'sm' }>`\n display: flex;\n gap: ${({ $size = 'md' }) => ($size === 'sm' ? Spacing[3] : Spacing[4])};\n // These two lines prevent the overflow hidden from hiding the bottom border of the selected tab\n margin-bottom: -2px;\n padding-bottom: 2px;\n overflow: hidden;\n flex-wrap: wrap;\n`;\n\ninterface TabContainerProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabContainer = forwardRef<HTMLDivElement, TabContainerProps>(function TabContainer(\n { children, maxTabChars, size, ...props },\n forwardedRef,\n) {\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const getIndexOfCurrentTab = (list: Element[]) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return getIndex(list, document.activeElement);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (e) => {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/tab_role\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const list = getTabList(tabListRef.current.children);\n\n if (document.activeElement && !list.includes(document.activeElement)) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft': {\n // Go to previous tab\n const curIndex = getIndexOfCurrentTab(list);\n const nextIndex = curIndex === 0 ? list.length - 1 : curIndex - 1;\n (list[nextIndex] as HTMLElement).focus();\n break;\n }\n case 'ArrowRight': {\n // Go to next tab\n const curIndex = getIndexOfCurrentTab(list);\n (list[(curIndex + 1) % list.length] as HTMLElement).focus();\n break;\n }\n case 'Home': {\n // Go to first tab\n (list[0] as HTMLElement).focus();\n break;\n }\n case 'End': {\n // Go to last tab\n (list[list.length - 1] as HTMLElement).focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <TabBarContext.Provider value={{ maxTabChars, size }}>\n <StyledTabContainer\n role='tablist'\n ref={mergeRefs<HTMLDivElement>(tabListRef, forwardedRef)}\n onKeyDown={handleKeyDown}\n $size={size}\n {...props}\n >\n {children}\n </StyledTabContainer>\n </TabBarContext.Provider>\n );\n});\n\nconst getIndex = (children: Element[], element: Element) => {\n return children.indexOf(element);\n};\n\n// A `data-tab-slot` child that wraps its tab (e.g. the tab plus a sibling button) navigates to the tab.\nconst getTabList = (list: HTMLCollection) =>\n Array.from(list)\n .map((element) =>\n element.hasAttribute('data-tab-slot')\n ? (element.querySelector('[role=\"tab\"]') ?? element)\n : element,\n )\n .filter(\n (element) => !(element.getAttribute('aria-disabled') || element.getAttribute('disabled')),\n );\n\nexport interface TabBarProps extends ComponentPropsWithoutRef<'div'> {\n actions?: ReactNode;\n title?: string;\n 'data-tour-target'?: string;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabBar = forwardRef<HTMLDivElement, TabBarProps>(function TabBar(\n {\n children,\n actions,\n title,\n 'data-tour-target': dataTourTarget,\n maxTabChars,\n size,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...elemProps\n },\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <TabBarContainer {...elemProps}>\n <TabContainer\n ref={forwardedRef}\n maxTabChars={maxTabChars}\n size={size}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {title && <TitleTab data-tour-target={dataTourTarget}>{title}</TitleTab>}\n {children}\n </TabContainer>\n {actions && <RightActions>{actions}</RightActions>}\n </TabBarContainer>\n );\n});\n\nexport default TabBar;\n","import {\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactElement,\n useContext,\n} from 'react';\nimport styled, {\n css,\n type DefaultTheme,\n type FlattenInterpolation,\n type ThemeProps,\n} from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport Badge from 'design-system/components/Badge';\nimport Button from 'design-system/components/Button';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\n/** A tab carries either a count or a label beside its text, never both. */\ntype TabAdornment =\n | { badge?: ReactElement; sticker?: never }\n | { badge?: never; sticker?: ReactElement };\n\ninterface TabBaseProps<T extends ElementType = 'button'> extends ComponentPropsWithoutRef<\n typeof Button\n> {\n selected?: boolean;\n as?: T;\n size?: 'md' | 'sm';\n}\n\ntype TabProps<T extends ElementType = 'button'> = TabBaseProps<T> & TabAdornment;\n\nconst AdornmentContainer = styled.span`\n display: inline-flex;\n vertical-align: middle;\n /* Align the atomic badge with the label's cap midpoint, not its x-height midpoint. */\n transform: translateY(calc((1ex - 1cap) / 2));\n padding: 0;\n margin-left: ${Spacing[1]};\n`;\n\nconst sizeStyles: Record<\n NonNullable<TabBaseProps['size']>,\n FlattenInterpolation<ThemeProps<DefaultTheme>>\n> = {\n md: css`\n ${paragraphMixins.md}\n `,\n sm: css`\n ${paragraphMixins.sm}\n `,\n};\n\nconst tabSelectedStyle = css`\n color: ${({ theme }) => semanticColor(theme, 'FgAccent', theme.color.primary.brand)};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n box-shadow: none;\n &:after {\n transition: border-bottom-color ${TransitionDuration.Fast};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n }\n`;\n\nexport const StyledTab = styled(Button).attrs<TabBaseProps>({\n width: 'auto',\n variant: 'basic',\n})<TabBaseProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n white-space: nowrap;\n background-color: transparent;\n color: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'FgDisabled', theme.color.variants.basic.textDisabled)\n : semanticColor(theme, 'FgSecondary', theme.color.text.tertiary)};\n transition: color ${TransitionDuration.Fast} ease-out;\n height: 32px;\n margin: 0;\n padding: 0;\n ${({ size }) => sizeStyles[size || 'md']};\n outline: none;\n border-radius: ${({ theme }) => theme.button.borderRadius};\n\n a {\n color: currentColor;\n }\n\n /* remove default button focused/hovered box shadow */\n &${isActive}${isNotDisabled} {\n background-color: unset;\n }\n &${isHovered}${isNotDisabled} {\n background-color: unset;\n ${({ selected, theme }) =>\n !selected &&\n css`\n color: ${semanticColor(theme, 'FgPrimary', Color.TextPrimary)};\n `}\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n background-color: unset;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n background-color: unset;\n }\n &:disabled {\n background-color: unset;\n }\n\n &:after {\n position: absolute;\n bottom: 0px;\n width: 100%;\n border-bottom: 1px solid transparent;\n content: '';\n }\n\n &.selected,\n &.active {\n ${tabSelectedStyle}\n }\n\n ${({ selected }) => selected && tabSelectedStyle}\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: default;\n `}\n\n a& {\n text-decoration: none;\n }\n`;\n\n/**\n * Helper function to truncate text if it exceeds maxCharacters\n */\nconst truncateText = (text: string, maxCharacters: number): string => {\n if (text.length <= maxCharacters) {\n return text;\n }\n return `${text.substring(0, maxCharacters).trimEnd()}...`;\n};\n\nconst Tab = <T extends ElementType = 'button'>({\n selected,\n disabled,\n children,\n badge,\n sticker,\n as,\n size,\n ...elemProps\n}: TabProps<T> & ComponentPropsWithoutRef<T>) => {\n const { maxTabChars, size: contextSize } = useContext(TabBarContext);\n const finalSize = size || contextSize || 'md';\n\n // Truncate text if maxTabChars is provided and children is a string\n const hasTruncation = maxTabChars && typeof children === 'string';\n const displayChildren = hasTruncation ? truncateText(children, maxTabChars) : children;\n\n return (\n <StyledTab\n role='tab'\n selected={selected}\n aria-selected={selected}\n aria-disabled={disabled}\n disabled={disabled}\n as={as as ElementType}\n size={finalSize}\n title={hasTruncation ? children : undefined}\n {...elemProps}\n >\n {displayChildren}\n {badge && (\n <AdornmentContainer>\n {badge.type === Badge\n ? cloneElement(badge, {\n variant: selected ? 'active' : 'basic',\n })\n : badge}\n </AdornmentContainer>\n )}\n {sticker && <AdornmentContainer>{sticker}</AdornmentContainer>}\n </StyledTab>\n );\n};\n\nexport default Tab;\n","import styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { IconButton } from 'design-system/components/Button';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nexport default styled(IconButton).attrs({\n size: 'sm',\n})`\n padding-left: ${Spacing[2]};\n padding-right: ${Spacing[2]};\n border-radius: ${BorderRadius.Sm};\n\n // remove default button focused/hovered box shadow\n &${isActive}${isNotDisabled} {\n background-color: transparent;\n }\n &${isHovered}${isNotDisabled} {\n box-shadow: none;\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &:disabled {\n background-color: transparent;\n }\n &:focus-visible${isNotDisabled}, &${isHovered}${isNotDisabled}:focus-visible {\n box-shadow: 0 0 0 3px ${({ theme }) => semanticColor(theme, 'ActionNeutralActive', theme.color.variants.basic.highlight)};\n }\n\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.CoreSlate800)};\n }\n\n &:hover {\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.CoreSlate900)};\n }\n }\n`;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table-BIDaC0uS.mjs","names":["slideKeyframes"],"sources":["../components/Table/Table.tsx","../components/Table/TableHeaderCell.tsx","../components/Table/TableRow.tsx","../components/Table/TableTH.tsx","../components/Table/TableCell.tsx","../components/Table/TableHead.tsx","../components/Table/TableBody.tsx","../components/Table/TableLayout.tsx"],"sourcesContent":["import styled, { css, keyframes } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\ninterface TableProps {\n size?: 'sm' | 'md';\n isLoading?: boolean;\n}\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n`;\n\nexport const Table = styled.table.attrs({ role: 'table' })<TableProps>`\n display: table;\n width: 100%;\n border-spacing: 0;\n ${paragraphMixins.md};\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n td,\n th {\n padding: ${Spacing[2]};\n }\n `}\n\n ${({ isLoading }) =>\n isLoading &&\n css`\n thead {\n &:after {\n content: '';\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n border-bottom: 3px solid ${({ theme }) => semanticColor(theme, 'FeedbackAccent3', theme.color.primary.brand)};\n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n }\n }\n `}\n`;\n\nexport default Table;\n","import { type ComponentPropsWithoutRef, forwardRef, type ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { CaretDownIcon, CaretUpIcon } from '@persona/icons';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\nimport { focusOutline } from 'design-system/mixins/focus';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { BASE } from 'design-system/variables/spacing';\n\ninterface TableHeaderCellProps {\n size?: 'sm' | 'md';\n sortable?: boolean;\n width?: 'auto' | 'min' | 'max' | string;\n isSticky?: boolean;\n align?: 'left' | 'right';\n trailing?: ReactNode;\n}\n\nconst StyledTableHeaderCell = styled.th<TableHeaderCellProps>`\n display: table-cell;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so header padding + border are included in the\n declared width/height. */\n box-sizing: border-box;\n\n background-color: ${({ theme }) => semanticColor(theme, 'SurfaceSecondary', theme.color.background.secondary)};\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n text-align: left;\n white-space: nowrap;\n ${({ size }) => (size === 'sm' ? paragraphMixins.sm : paragraphMixins.md)};\n line-height: 1;\n width: ${({ width }) => {\n switch (width) {\n case 'min':\n return '1px';\n case 'max':\n return '100%';\n default:\n if (width) {\n return width;\n } else {\n return 'auto';\n }\n }\n }};\n\n &:first-child {\n border-radius: ${({ theme }) =>\n `${theme.element.borderRadius} 0 0 ${theme.element.borderRadius}`};\n }\n\n &:last-child {\n border-radius: ${({ theme }) =>\n `0 ${theme.element.borderRadius} ${theme.element.borderRadius} 0`};\n }\n\n ${({ sortable }) =>\n sortable &&\n css`\n cursor: pointer;\n\n &:hover ${TableIconContainer} {\n display: inline;\n visibility: visible;\n }\n\n ${SortButton}:focus-visible ${TableIconContainer} {\n display: inline;\n visibility: visible;\n }\n `};\n\n ${({ isSticky }) =>\n isSticky\n ? css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\n : css`\n position: relative;\n `}\n`;\n\nconst VerticalAlign = styled.div<{ $align?: TableHeaderCellProps['align'] }>`\n display: flex;\n align-items: center;\n gap: ${Spacing[1]};\n flex-direction: ${({ $align }) => ($align === 'right' ? 'row-reverse' : 'row')};\n`;\n\nconst SortButton = styled.button`\n background: none;\n border: 0;\n padding: 0;\n margin: 0;\n font: inherit;\n color: inherit;\n text-align: inherit;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: ${Spacing[1]};\n min-width: 0;\n ${focusOutline}\n`;\n\ninterface TableIconContainerProps {\n sortDirection?: 'asc' | 'desc' | false;\n}\n\nconst TableIconContainer = styled('div')<TableIconContainerProps>`\n display: inline-block;\n\n ${({ sortDirection }) => {\n if (sortDirection) {\n return css`\n display: inline;\n `;\n } else {\n return css`\n display: inline;\n visibility: hidden;\n color: ${({ theme }) => semanticColor(theme, 'FgTertiary', theme.color.text.disabled)};\n `;\n }\n }};\n`;\n\nconst TableHeaderCell = forwardRef<\n HTMLTableCellElement,\n ComponentPropsWithoutRef<'th'> & TableHeaderCellProps & TableIconContainerProps\n>(function TableHeaderCell(\n { sortable, sortDirection, children, align, trailing, onClick, ...elemProps },\n ref,\n) {\n let ariaSort: 'none' | 'ascending' | 'descending' | undefined;\n\n if (sortable && sortDirection) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n } else if (sortable) {\n ariaSort = 'none';\n }\n\n return (\n <StyledTableHeaderCell\n sortable={sortable}\n aria-sort={ariaSort}\n onClick={sortable ? undefined : onClick}\n {...elemProps}\n ref={ref}\n >\n <VerticalAlign $align={align}>\n {sortable ? (\n <SortButton type='button' onClick={onClick}>\n {children}\n <TableIconContainer aria-hidden='true' sortDirection={sortDirection}>\n {sortDirection === 'asc' ? <CaretUpIcon /> : <CaretDownIcon />}\n </TableIconContainer>\n </SortButton>\n ) : (\n children\n )}\n {trailing}\n </VerticalAlign>\n </StyledTableHeaderCell>\n );\n});\n\nexport default TableHeaderCell;\n","import styled, { css } from 'styled-components';\n\nimport { withAlpha } from 'design-system/lib/color';\nimport { isFocusedVisible, isHovered } from 'design-system/lib/pseudoClass';\nimport { semanticTokens } from 'design-system/lib/semanticColor';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nexport interface TableRowProps extends PseudoClassProps {\n disableHoverBackground?: boolean;\n}\n\nconst TableRow = styled.tr.attrs({\n role: 'row',\n})<TableRowProps>`\n display: table-row;\n\n ${({ onClick }) =>\n onClick != null &&\n css`\n cursor: pointer;\n `}\n\n ${({ disableHoverBackground, theme }) => {\n if (disableHoverBackground) {\n return null;\n }\n const tokens = semanticTokens(theme);\n return css`\n &${isHovered} {\n background-color: ${\n tokens\n ? withAlpha(tokens.ActionAccent, tokens.Opacity25)\n : theme.color.background.highlight\n };\n ${tokens ? `color: ${tokens.FgPrimary};` : ''}\n transition-duration: ${TransitionDuration.Fast};\n }\n `;\n }}\n\n ${isFocusedVisible}\n`;\n\nexport default TableRow;\n","import { type ComponentPropsWithoutRef, forwardRef, type ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { TableHeaderCell } from '@persona/design-system/components/Table';\nimport { HelperTooltip } from '@persona/design-system/components/Tooltip';\nimport { Spacing } from '@persona/design-tokens';\n\nconst StyledHelperTooltip = styled(HelperTooltip)`\n height: 14px;\n margin-left: ${Spacing[1]};\n`;\n\nexport interface TableTHProps extends ComponentPropsWithoutRef<typeof TableHeaderCell> {\n canSort?: boolean;\n isSorted?: boolean;\n isDescending?: boolean;\n isSticky?: boolean;\n /**\n * Display help icon and tooltip for column header\n */\n helpText?: ReactNode;\n align?: 'left' | 'right';\n size?: 'sm' | 'md';\n}\n\nconst TableTH = forwardRef<HTMLTableCellElement, TableTHProps>(function TableTH(\n { children, canSort, isSorted, isSticky, isDescending, helpText, align, size, ...props },\n ref,\n) {\n return (\n <TableHeaderCell\n sortable={canSort}\n sortDirection={canSort && isSorted ? (isDescending ? 'desc' : 'asc') : false}\n ref={ref}\n isSticky={isSticky}\n align={align}\n size={size}\n trailing={helpText && <StyledHelperTooltip size='sm'>{helpText}</StyledHelperTooltip>}\n {...props}\n >\n {/* We have to wrap the children to make it easier to use tooltips */}\n <span className='th__text'>{children}</span>\n </TableHeaderCell>\n );\n});\n\nexport default TableTH;\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { Paragraph } from 'design-system/components/Text';\nimport { withAlpha } from 'design-system/lib/color';\nimport { isHovered } from 'design-system/lib/pseudoClass';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticOnly,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { PersonaTheme } from 'design-system/theme';\nimport { BASE } from 'design-system/variables/spacing';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport TableRow from './TableRow';\nimport TableTH from './TableTH';\n\nexport interface TableCellProps {\n breakWord?: boolean;\n size?: 'sm' | 'md';\n}\n\nconst TableCell = styled.td.attrs({ role: 'cell' })<TableCellProps>`\n display: table-cell;\n vertical-align: middle;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so a fixed cell height includes its padding + border\n and rows stay compact. */\n box-sizing: border-box;\n\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n text-align: left;\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', theme.color.text.primary)};\n white-space: nowrap;\n ${paragraphMixins.md};\n line-height: 1;\n ${({ breakWord }) =>\n breakWord\n ? `white-space: normal;\n overflow-wrap: break-word;`\n : ''}\n`;\n\nexport default TableCell;\n\nconst CellTitleContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CellTitle = styled(Paragraph).attrs({ color: 'primary' })`\n ${semanticOnly(() => 'color: inherit;')}\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n`;\n\nconst CellSubtitle = styled(Paragraph)`\n ${semanticOnly((tokens) => `color: ${tokens.FgSecondary};`)}\n`;\n\nconst activeHighlight = (theme: PersonaTheme & MaybeSemanticTheme) =>\n semanticColor(theme, 'ActionAccent', theme.color.background.highlight);\n\nconst hoverHighlight = (theme: PersonaTheme & MaybeSemanticTheme) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.ActionAccent, tokens.Opacity25)\n : theme.color.background.highlight;\n};\n\n// Same page color unpinned cells show through, painted opaquely so scrolled text stays covered.\nconst pinnedBodyBackground = (theme: PersonaTheme & MaybeSemanticTheme) =>\n semanticColor(\n theme,\n theme.color.text.primary === Color.TextInverse ? 'SurfacePage' : 'SurfacePrimary',\n theme.color.background.primary,\n );\n\ninterface TableCellTitleProps extends ComponentPropsWithoutRef<'div'> {\n subtitle?: ReactNode;\n}\n\nexport const TableCellTitle = ({ children, subtitle, ...elemProps }: TableCellTitleProps) => {\n return (\n <CellTitleContainer {...elemProps}>\n <CellTitle>{children}</CellTitle>\n {subtitle && <CellSubtitle>{subtitle}</CellSubtitle>}\n </CellTitleContainer>\n );\n};\n\nexport const TableTD = styled(TableCell)<{ unclickable?: boolean }>`\n white-space: normal;\n overflow-wrap: break-word;\n ${(props) =>\n props.unclickable &&\n css`\n cursor: default;\n `}\n`;\n\nexport const TableIconTD = styled(TableTD)`\n text-align: right;\n line-height: 0; /* To center icon; cannot use flex here */\n padding: 0;\n padding-left: ${Spacing[4]};\n width: 36px;\n`;\n\nexport const TableActionTD = styled(TableTD)`\n text-align: right;\n padding: 0;\n padding-right: ${Spacing[4]};\n width: 48px;\n`;\n\nexport const StickyTD = styled(TableTD)<{\n left?: number;\n hasRightBorder?: boolean;\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n background-color: ${({ theme }) => pinnedBodyBackground(theme)};\n\n ${({ hasRightBorder, theme }) =>\n hasRightBorder &&\n `border-right: 2px solid ${semanticColor(theme, 'BorderDivider', theme.color.border.primary)};`}\n z-index: 2;\n`;\n\nexport const StickyTH = styled(TableTH)<{\n left?: number;\n hasRightBorder?: boolean;\n size?: 'sm' | 'md';\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n z-index: 2;\n max-width: 10%;\n background-color: ${({ theme }) => semanticColor(theme, 'SurfaceSecondary', theme.color.background.secondary)};\n ${({ hasRightBorder, theme }) =>\n hasRightBorder &&\n `border-right: 2px solid ${semanticColor(theme, 'BorderDivider', theme.color.border.primary)};`}\n`;\n\nexport const TableTR = styled(TableRow)<{ disableHoverBackground?: boolean; $isActive?: boolean }>`\n ${({ disableHoverBackground }) =>\n disableHoverBackground &&\n css`\n &:hover {\n background-color: transparent !important;\n }\n `}\n\n ${({ $isActive }) =>\n $isActive &&\n css`\n background-color: ${({ theme }) => activeHighlight(theme)};\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n ${StickyTD} {\n background-color: ${({ theme }) => activeHighlight(theme)};\n }\n &:hover {\n background-color: ${({ theme }) => activeHighlight(theme)};\n }\n &:hover ${StickyTD} {\n background-color: ${({ theme }) => activeHighlight(theme)};\n background-image: none;\n }\n `}\n\n ${({ disableHoverBackground, $isActive }) =>\n !disableHoverBackground &&\n !$isActive &&\n css`\n &${isHovered} ${StickyTD} {\n background-image: linear-gradient(\n ${({ theme }) => hoverHighlight(theme)},\n ${({ theme }) => hoverHighlight(theme)}\n );\n }\n `}\n\n ${({ onClick, disableHoverBackground, $isActive }) =>\n onClick != null &&\n !disableHoverBackground &&\n !$isActive &&\n css`\n cursor: pointer;\n :hover {\n background-color: ${({ theme }) => hoverHighlight(theme)};\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n }\n transition-duration: ${TransitionDuration.Fast};\n `}\n`;\n","import styled, { css } from 'styled-components';\n\ninterface TableHeadProps {\n sticky?: boolean;\n}\n\nconst TableHead = styled.thead.attrs({ role: 'rowgroup' })<TableHeadProps>`\n display: table-header-group;\n ${({ sticky }) =>\n sticky &&\n css`\n position: sticky;\n top: 0;\n z-index: 1;\n `}\n`;\n\nexport default TableHead;\n","import styled from 'styled-components';\n\nconst TableBody = styled.tbody.attrs({ role: 'rowgroup' })`\n display: table-row-group;\n`;\n\nexport default TableBody;\n","import type { FC, PropsWithChildren, ReactNode } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { Spinner } from 'design-system/components/Spinner';\nimport Table, { TableBody, TableHead, TableRow } from 'design-system/components/Table';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\nimport { fadeIn } from 'design-system/variables/keyframes';\n\n// `visible` rather than a narrower opt-out because CSS blockifies the other axis: any\n// `overflow-x` other than `visible`/`clip` forces `overflow-y` to compute to `auto` too, which\n// makes this element the scrollport that descendant sticky offsets resolve against.\nconst Container = styled.div<{ maxHeight?: number; $scrollsHorizontally: boolean }>`\n position: relative;\n z-index: 0;\n overflow-x: ${({ $scrollsHorizontally }) => ($scrollsHorizontally ? 'auto' : 'visible')};\n ${semanticScrollbar}\n ${({ maxHeight }) => {\n if (maxHeight != null) {\n return `max-height: ${maxHeight}px;`;\n }\n }}\n `;\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n `;\n\nconst Loader = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n border-bottom: 3px solid ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n width: 100%;\n \n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n `;\n\nconst Overlay = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.primary.white)};\n opacity: 50%;\n `;\n\nconst SpinnerWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${Spacing[5]} 0;\n animation: ${fadeIn} 1s;\n animation-delay: 0.5s;\n animation-fill-mode: backwards;\n `;\n\nconst TableSpinner = styled(Spinner)`\n svg {\n width: 120px;\n height: 120px;\n }\n \n path {\n stroke: ${({ theme }) => semanticColor(theme, 'FeedbackAccent3', Color.CorePurple500)};\n stroke-width: 0.46;\n }\n `;\n\ninterface TableLayoutProps {\n className?: string;\n containerMaxHeight?: number;\n /**\n * When false, the container does not scroll horizontally and an ancestor is expected to.\n * Sticky offsets inside the table then resolve against that ancestor's scrollport rather\n * than against the container.\n */\n containerScrollsHorizontally?: boolean;\n dataTest?: string;\n headerTR: JSX.Element;\n isEmpty?: boolean;\n isLoading?: boolean;\n nullState: ReactNode;\n showHeader?: boolean;\n size?: 'sm' | 'md';\n stickyHeader?: boolean;\n}\n\nconst TableLayout: FC<PropsWithChildren<TableLayoutProps>> = ({\n children,\n className,\n containerMaxHeight,\n containerScrollsHorizontally = true,\n dataTest,\n headerTR,\n isEmpty,\n isLoading,\n nullState,\n showHeader,\n size = 'md',\n stickyHeader = false,\n}) => {\n if (isEmpty && !showHeader) {\n if (isLoading) {\n return (\n <SpinnerWrapper\n role='status'\n aria-live='polite'\n aria-busy='true'\n aria-label='Loading...'\n data-loading-indicator='true'\n >\n <TableSpinner size='md' />\n </SpinnerWrapper>\n );\n } else {\n return (\n <Container data-test={dataTest} $scrollsHorizontally={containerScrollsHorizontally}>\n {nullState}\n </Container>\n );\n }\n }\n\n return (\n <Container\n data-test={dataTest}\n maxHeight={containerMaxHeight}\n className={className}\n $scrollsHorizontally={containerScrollsHorizontally}\n >\n {isLoading && <Loader data-test='table-layout__loader' />}\n {isLoading && <Overlay />}\n\n <Table size={size} aria-busy={isLoading || undefined}>\n <TableHead sticky={stickyHeader}>\n <TableRow>{headerTR}</TableRow>\n </TableHead>\n {!isEmpty && <TableBody>{children}</TableBody>}\n </Table>\n\n {isEmpty && nullState}\n </Container>\n );\n};\n\nexport default TableLayout;\n"],"mappings":"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"}