@persona/design-system 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/Accordion.d.mts +1 -1
  3. package/dist/AccordionItem.d.mts +1 -1
  4. package/dist/{Action-BwYS9qaG.d.mts → Action-DcK0fRrq.d.mts} +3 -3
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  7. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  8. package/dist/ArrayValueControl.d.mts +1 -1
  9. package/dist/Attribute.d.mts +3 -3
  10. package/dist/{Badge-D-5tbZDw.mjs → Badge-DLuyKRCQ.mjs} +2 -2
  11. package/dist/{Badge-D-5tbZDw.mjs.map → Badge-DLuyKRCQ.mjs.map} +1 -1
  12. package/dist/BooleanValueControl.d.mts +1 -1
  13. package/dist/{Breadcrumb-BADja8tn.d.mts → Breadcrumb-CEHEUe8l.d.mts} +1 -1
  14. package/dist/Breadcrumb.d.mts +1 -1
  15. package/dist/{Breadcrumbs-CNpM0aXm.mjs → Breadcrumbs-B8aXFPdV.mjs} +8 -8
  16. package/dist/{Breadcrumbs-CNpM0aXm.mjs.map → Breadcrumbs-B8aXFPdV.mjs.map} +1 -1
  17. package/dist/{Breadcrumbs-CxP7ktfM.d.mts → Breadcrumbs-BQ-Gj6UV.d.mts} +2 -2
  18. package/dist/Breadcrumbs.d.mts +1 -1
  19. package/dist/{Button-CnswHEJ2.d.mts → Button-DKUomFPj.d.mts} +4 -4
  20. package/dist/Button.d.mts +1 -1
  21. package/dist/{Calendar-Cke5IlMI.d.mts → Calendar-BvsTQ3e1.d.mts} +1 -1
  22. package/dist/Calendar.d.mts +1 -1
  23. package/dist/CalendarBase.d.mts +1 -1
  24. package/dist/{Card-Dz6jqJuJ.mjs → Card-BXNxWX5C.mjs} +4 -4
  25. package/dist/{Card-Dz6jqJuJ.mjs.map → Card-BXNxWX5C.mjs.map} +1 -1
  26. package/dist/{Card-Bp6L08H4.d.mts → Card-DMXDx1W7.d.mts} +3 -3
  27. package/dist/Card.d.mts +1 -1
  28. package/dist/CardGrouping.d.mts +38 -0
  29. package/dist/{CardV2-DEW6mw_o.mjs → CardV2-JPGFAqui.mjs} +9 -9
  30. package/dist/{CardV2-DEW6mw_o.mjs.map → CardV2-JPGFAqui.mjs.map} +1 -1
  31. package/dist/{Checkbox-DUXws1Os.d.mts → Checkbox-CVa8WOf2.d.mts} +1 -1
  32. package/dist/{Checkbox-GibG2pg5.mjs → Checkbox-iSBIpu0l.mjs} +4 -4
  33. package/dist/{Checkbox-GibG2pg5.mjs.map → Checkbox-iSBIpu0l.mjs.map} +1 -1
  34. package/dist/Checkbox.d.mts +1 -1
  35. package/dist/{CheckboxGroupField-DzdOYIjo.d.mts → CheckboxGroupField-BMJwuTpJ.d.mts} +3 -3
  36. package/dist/CheckboxGroupField.d.mts +1 -1
  37. package/dist/ChoicesValueControl.d.mts +1 -1
  38. package/dist/{Combobox-CCDoNF9Y.mjs → Combobox-BkpRqaxB.mjs} +72 -28
  39. package/dist/Combobox-BkpRqaxB.mjs.map +1 -0
  40. package/dist/{Combobox-CnxmKUQf.d.mts → Combobox-C2R9eTPr.d.mts} +3 -3
  41. package/dist/Combobox.d.mts +2 -2
  42. package/dist/{ComboboxBase-CtNrsPO9.d.mts → ComboboxBase-BghIk4Vk.d.mts} +6 -6
  43. package/dist/ComboboxBase.d.mts +1 -1
  44. package/dist/{ComboboxMultiSelect-CMH6iVu4.d.mts → ComboboxMultiSelect-CIOHnhrv.d.mts} +2 -2
  45. package/dist/ComboboxMultiSelect.d.mts +1 -1
  46. package/dist/{ComboboxSingleSelect-BLPbLmMY.d.mts → ComboboxSingleSelect-C1JZxli3.d.mts} +5 -4
  47. package/dist/ComboboxSingleSelect.d.mts +1 -1
  48. package/dist/{CompactBar-BwKIIlWz.d.mts → CompactBar-DPJAY1NB.d.mts} +3 -3
  49. package/dist/CompactBar.d.mts +1 -1
  50. package/dist/{ConfigFormGroup-BQXN2Pgj.mjs → ConfigFormGroup-BBIJsQgy.mjs} +2 -2
  51. package/dist/{ConfigFormGroup-BQXN2Pgj.mjs.map → ConfigFormGroup-BBIJsQgy.mjs.map} +1 -1
  52. package/dist/{ControlBar-BJUY6GOX.d.mts → ControlBar-Cg36sjz3.d.mts} +17 -2
  53. package/dist/ControlBar.d.mts +1 -1
  54. package/dist/DataTable.d.mts +6 -3
  55. package/dist/{DateField-BojOHfrv.d.mts → DateField-BXUuqbnb.d.mts} +2 -2
  56. package/dist/DateField.d.mts +1 -1
  57. package/dist/{DatePicker-LPIJrc0n.mjs → DatePicker-CjuR6ORz.mjs} +40 -8
  58. package/dist/DatePicker-CjuR6ORz.mjs.map +1 -0
  59. package/dist/{DatePicker-BHVx_i_F.d.mts → DatePicker-Cmn1vViU.d.mts} +2 -2
  60. package/dist/DatePicker.d.mts +1 -1
  61. package/dist/{DateRangePicker-CelDK_44.d.mts → DateRangePicker-CKhp9Obv.d.mts} +3 -3
  62. package/dist/DateRangePicker.d.mts +1 -1
  63. package/dist/DateRangeValueControl.d.mts +2 -2
  64. package/dist/DateValueControl.d.mts +1 -1
  65. package/dist/{DropdownButton-i5Dmxiq1.mjs → DropdownButton-CRJDAGjJ.mjs} +3 -3
  66. package/dist/{DropdownButton-i5Dmxiq1.mjs.map → DropdownButton-CRJDAGjJ.mjs.map} +1 -1
  67. package/dist/DropdownButton.d.mts +2 -2
  68. package/dist/{DropdownMenu-j8NWbAvM.mjs → DropdownMenu-C2BHv8Lc.mjs} +2 -2
  69. package/dist/{DropdownMenu-j8NWbAvM.mjs.map → DropdownMenu-C2BHv8Lc.mjs.map} +1 -1
  70. package/dist/{DropdownMenu-YtLxcNWt.d.mts → DropdownMenu-CNkQDiJr.d.mts} +2 -2
  71. package/dist/DropdownMenu.d.mts +1 -1
  72. package/dist/{ErrorProps-6dRdJ4QQ.d.mts → ErrorProps-oCHtJzEB.d.mts} +1 -1
  73. package/dist/ErrorProps.d.mts +1 -1
  74. package/dist/{FieldRegistry-DqO8HiYb.d.mts → FieldRegistry-B7P4wC7y.d.mts} +2 -2
  75. package/dist/FieldRegistry.d.mts +1 -1
  76. package/dist/{FilterBar-CpAA2Ozk.d.mts → FilterBar-clWmrKkT.d.mts} +4 -4
  77. package/dist/FilterBar.d.mts +1 -1
  78. package/dist/FilterPickerMenu.d.mts +3 -3
  79. package/dist/FilterPill.d.mts +1 -1
  80. package/dist/FilterPopover.d.mts +3 -1
  81. package/dist/FloatValueControl.d.mts +2 -2
  82. package/dist/{FormControl-B-s6G9mp.d.mts → FormControl-C44o35FL.d.mts} +2 -2
  83. package/dist/{FormControl-bDxFF0hl.mjs → FormControl-jfjKwUfK.mjs} +4 -4
  84. package/dist/{FormControl-bDxFF0hl.mjs.map → FormControl-jfjKwUfK.mjs.map} +1 -1
  85. package/dist/FormControl.d.mts +1 -1
  86. package/dist/FormControlLabel.d.mts +1 -1
  87. package/dist/{FormField-DbcqNcx2.mjs → FormField-C3nUzhGT.mjs} +16 -16
  88. package/dist/{FormField-DbcqNcx2.mjs.map → FormField-C3nUzhGT.mjs.map} +1 -1
  89. package/dist/{FormField-D3k-f3-f.d.mts → FormField-CXznMtuS.d.mts} +2 -2
  90. package/dist/FormField.d.mts +1 -1
  91. package/dist/{Grid-CeH9E5Ai.mjs → Grid-D0mlxk8_.mjs} +1 -1
  92. package/dist/{Grid-CeH9E5Ai.mjs.map → Grid-D0mlxk8_.mjs.map} +1 -1
  93. package/dist/{Header-2K49LYkR.d.mts → Header-DvpIsOUN.d.mts} +1 -1
  94. package/dist/Header.d.mts +1 -1
  95. package/dist/{HelperTooltip-CTHUM2nC.d.mts → HelperTooltip-C4tgbLYw.d.mts} +2 -2
  96. package/dist/HelperTooltip.d.mts +1 -1
  97. package/dist/HighlightedText.d.mts +2 -2
  98. package/dist/{HoverCopyableField-BARZLhfO.mjs → HoverCopyableField-1_LHm80n.mjs} +6 -6
  99. package/dist/{HoverCopyableField-BARZLhfO.mjs.map → HoverCopyableField-1_LHm80n.mjs.map} +1 -1
  100. package/dist/I18nContext-DlvagRAO.d.mts +22 -0
  101. package/dist/I18nContext.d.mts +2 -0
  102. package/dist/{IconButton-D5hx405r.d.mts → IconButton-Bt3WyiGq.d.mts} +2 -2
  103. package/dist/{IconButton-BHFCjvzs.mjs → IconButton-Cqxfmrea.mjs} +3 -3
  104. package/dist/{IconButton-BHFCjvzs.mjs.map → IconButton-Cqxfmrea.mjs.map} +1 -1
  105. package/dist/IconButton.d.mts +1 -1
  106. package/dist/ImageTile.d.mts +1 -1
  107. package/dist/InlineCombobox.d.mts +1 -1
  108. package/dist/InlineInput.d.mts +1 -1
  109. package/dist/{Input-BQbcIiVj.d.mts → Input-CAsOWM0S.d.mts} +3 -3
  110. package/dist/{Input-BQN97Hzm.mjs → Input-Cg2HxteL.mjs} +4 -4
  111. package/dist/{Input-BQN97Hzm.mjs.map → Input-Cg2HxteL.mjs.map} +1 -1
  112. package/dist/Input.d.mts +1 -1
  113. package/dist/{InputProps-DT1ZReZS.d.mts → InputProps-BU9iiBBz.d.mts} +2 -2
  114. package/dist/InputProps.d.mts +1 -1
  115. package/dist/IntegerValueControl.d.mts +2 -2
  116. package/dist/{Link-Bzm4AL5J.mjs → Link-Cf__H8gD.mjs} +2 -2
  117. package/dist/{Link-Bzm4AL5J.mjs.map → Link-Cf__H8gD.mjs.map} +1 -1
  118. package/dist/Link.d.mts +1 -1
  119. package/dist/{ListBox-CdqRwBvA.d.mts → ListBox--IH6uofo.d.mts} +3 -3
  120. package/dist/{ListBox-DOqN9DNl.mjs → ListBox-CjNokYs6.mjs} +13 -10
  121. package/dist/{ListBox-DOqN9DNl.mjs.map → ListBox-CjNokYs6.mjs.map} +1 -1
  122. package/dist/ListBox.d.mts +1 -1
  123. package/dist/{ListBoxField-Bl2WLplO.d.mts → ListBoxField-BUKop1Ca.d.mts} +4 -4
  124. package/dist/ListBoxField.d.mts +1 -1
  125. package/dist/{LoadingShimmer-Ds7rvIUN.mjs → LoadingShimmer-C73hJqaW.mjs} +1 -1
  126. package/dist/{LoadingShimmer-Ds7rvIUN.mjs.map → LoadingShimmer-C73hJqaW.mjs.map} +1 -1
  127. package/dist/LoadingShimmer.d.mts +1 -1
  128. package/dist/{LogicRow-CwMAn1sh.d.mts → LogicRow-C8Hdl8xB.d.mts} +3 -3
  129. package/dist/LogicRow.d.mts +1 -1
  130. package/dist/MaskedInput.d.mts +2 -2
  131. package/dist/{Menu-CUN9bmc1.d.mts → Menu-BSHJpKyL.d.mts} +3 -3
  132. package/dist/{Menu-DjW2b3Wk.mjs → Menu-CwKmfxKI.mjs} +2 -2
  133. package/dist/{Menu-DjW2b3Wk.mjs.map → Menu-CwKmfxKI.mjs.map} +1 -1
  134. package/dist/Menu.d.mts +1 -1
  135. package/dist/{Modal-DHLPK65-.mjs → Modal-BBIJVhv2.mjs} +6 -6
  136. package/dist/{Modal-DHLPK65-.mjs.map → Modal-BBIJVhv2.mjs.map} +1 -1
  137. package/dist/{Modal-CGXJGrKg.d.mts → Modal-CoUHxtgN.d.mts} +2 -2
  138. package/dist/Modal.d.mts +1 -1
  139. package/dist/{PageHeader-eI4RM_uL.mjs → PageHeader-5GyfuGLe.mjs} +3 -3
  140. package/dist/{PageHeader-eI4RM_uL.mjs.map → PageHeader-5GyfuGLe.mjs.map} +1 -1
  141. package/dist/PageHeader.d.mts +1 -1
  142. package/dist/PageLayout-C7ZC7GBA.mjs +132 -0
  143. package/dist/PageLayout-C7ZC7GBA.mjs.map +1 -0
  144. package/dist/PageLayout-C7hDmoy_.d.mts +16 -0
  145. package/dist/PageLayout.d.mts +2 -16
  146. package/dist/PageLayoutFrame--HlvI4Pp.d.mts +28 -0
  147. package/dist/PageLayoutFrame.d.mts +2 -28
  148. package/dist/{PageSelector-kAfYxEky.d.mts → PageSelector-CrUb586l.d.mts} +3 -3
  149. package/dist/PageSelector.d.mts +1 -1
  150. package/dist/{Pagination-Bhr7xyd2.d.mts → Pagination-C67fsrxl.d.mts} +2 -2
  151. package/dist/{Pagination-6BDOn9bX.mjs → Pagination-c4YBCy5d.mjs} +40 -49
  152. package/dist/Pagination-c4YBCy5d.mjs.map +1 -0
  153. package/dist/Pagination.d.mts +1 -1
  154. package/dist/{Pii-DhL1gblz.mjs → Pii-oW_2TUUc.mjs} +2 -2
  155. package/dist/{Pii-DhL1gblz.mjs.map → Pii-oW_2TUUc.mjs.map} +1 -1
  156. package/dist/{PillShell-CVJL1k5I.d.mts → PillShell-BkYHghx0.d.mts} +2 -2
  157. package/dist/PillShell.d.mts +1 -1
  158. package/dist/{Popover-CbYaWrAy.mjs → Popover-BcII7usF.mjs} +3 -3
  159. package/dist/{Popover-CbYaWrAy.mjs.map → Popover-BcII7usF.mjs.map} +1 -1
  160. package/dist/{ProgressIndicator-CYyM6OSx.d.mts → ProgressIndicator-CdhC2LVI.d.mts} +1 -1
  161. package/dist/{ProgressIndicator-BpF3XLn3.mjs → ProgressIndicator-STyTM0Hq.mjs} +1 -1
  162. package/dist/{ProgressIndicator-BpF3XLn3.mjs.map → ProgressIndicator-STyTM0Hq.mjs.map} +1 -1
  163. package/dist/ProgressIndicator.d.mts +1 -1
  164. package/dist/{PseudoClassProps-BOVN6Etr.d.mts → PseudoClassProps-CverE9Ni.d.mts} +1 -1
  165. package/dist/PseudoClassProps.d.mts +1 -1
  166. package/dist/{Radio-DPaX-9LH.mjs → Radio-CHme6WTz.mjs} +2 -2
  167. package/dist/{Radio-DPaX-9LH.mjs.map → Radio-CHme6WTz.mjs.map} +1 -1
  168. package/dist/{RadioGroup-C0l0pdEt.d.mts → RadioGroup-CDEfCg-b.d.mts} +1 -1
  169. package/dist/{RadioGroup-D7f4m2Uc.mjs → RadioGroup-DOLRqHIZ.mjs} +2 -2
  170. package/dist/{RadioGroup-D7f4m2Uc.mjs.map → RadioGroup-DOLRqHIZ.mjs.map} +1 -1
  171. package/dist/RadioGroup.d.mts +1 -1
  172. package/dist/{RangeCalendar-BJn9V3iN.d.mts → RangeCalendar-BOt59kTG.d.mts} +2 -2
  173. package/dist/RangeCalendar.d.mts +1 -1
  174. package/dist/RangeCalendarPresets.d.mts +1 -1
  175. package/dist/{RouterContext-BLrzYlJ_.d.mts → RouterContext-D7HBESqO.d.mts} +2 -2
  176. package/dist/{RouterContext-CsPnkNdI.mjs → RouterContext-nPSb55p9.mjs} +1 -1
  177. package/dist/{RouterContext-CsPnkNdI.mjs.map → RouterContext-nPSb55p9.mjs.map} +1 -1
  178. package/dist/RouterContext.d.mts +1 -1
  179. package/dist/{RouterLink-BHXjhqps.d.mts → RouterLink-dppNWLgP.d.mts} +2 -2
  180. package/dist/RouterLink.d.mts +1 -1
  181. package/dist/RuleEditorFields.d.mts +2 -2
  182. package/dist/RulesPill.d.mts +1 -1
  183. package/dist/{SearchInput-Buh8LdIL.d.mts → SearchInput-B7JYHJZI.d.mts} +2 -2
  184. package/dist/SearchInput.d.mts +1 -1
  185. package/dist/SectionHeading.d.mts +1 -1
  186. package/dist/{SegmentedControl-B9qLyIIW.d.mts → SegmentedControl-C_7mTcuL.d.mts} +1 -1
  187. package/dist/{SegmentedControl-zEvBtVj0.mjs → SegmentedControl-d9tHqWce.mjs} +2 -2
  188. package/dist/{SegmentedControl-zEvBtVj0.mjs.map → SegmentedControl-d9tHqWce.mjs.map} +1 -1
  189. package/dist/SegmentedControl.d.mts +1 -1
  190. package/dist/{Select-BoZuM_e9.mjs → Select-Da6UZicF.mjs} +7 -7
  191. package/dist/{Select-BoZuM_e9.mjs.map → Select-Da6UZicF.mjs.map} +1 -1
  192. package/dist/{Select-Cv_9PLOt.d.mts → Select-Ek-A2Cpo.d.mts} +3 -3
  193. package/dist/Select.d.mts +1 -1
  194. package/dist/SingleColumnLayout-ByWxiD7d.d.mts +16 -0
  195. package/dist/SingleColumnLayout.d.mts +2 -16
  196. package/dist/SmartTextInput.d.mts +9 -9
  197. package/dist/SmartTextInputField.d.mts +2 -2
  198. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  199. package/dist/SmartTextInputListbox.d.mts +2 -2
  200. package/dist/SmartTextInputPopover.d.mts +1 -1
  201. package/dist/{Spacer-BFOuo0sZ.mjs → Spacer-J_HuhxX2.mjs} +1 -1
  202. package/dist/{Spacer-BFOuo0sZ.mjs.map → Spacer-J_HuhxX2.mjs.map} +1 -1
  203. package/dist/{Spinner-CarSRiBF.mjs → Spinner-C4UyK9If.mjs} +1 -1
  204. package/dist/{Spinner-CarSRiBF.mjs.map → Spinner-C4UyK9If.mjs.map} +1 -1
  205. package/dist/SplitColumnLayout-DYyJabQ3.d.mts +19 -0
  206. package/dist/SplitColumnLayout.d.mts +2 -19
  207. package/dist/{Stack-CEPzs4Pb.mjs → Stack-BkC7FCdF.mjs} +1 -1
  208. package/dist/{Stack-CEPzs4Pb.mjs.map → Stack-BkC7FCdF.mjs.map} +1 -1
  209. package/dist/{Stack-XzBzPvSV.d.mts → Stack-D0Dt776K.d.mts} +1 -1
  210. package/dist/Stack.d.mts +1 -1
  211. package/dist/{StatusIndicator-bEnMWV_S.mjs → StatusIndicator-akDwBiBW.mjs} +1 -1
  212. package/dist/{StatusIndicator-bEnMWV_S.mjs.map → StatusIndicator-akDwBiBW.mjs.map} +1 -1
  213. package/dist/{Sticker-DGfNuxUK.d.mts → Sticker-Cit5EKiU.d.mts} +4 -4
  214. package/dist/{Sticker-B-fU8lgu.mjs → Sticker-_vmpUMfk.mjs} +3 -3
  215. package/dist/{Sticker-B-fU8lgu.mjs.map → Sticker-_vmpUMfk.mjs.map} +1 -1
  216. package/dist/Sticker.d.mts +1 -1
  217. package/dist/StringValueControl.d.mts +1 -1
  218. package/dist/Tab.d.mts +1 -1
  219. package/dist/{TabBar-BSl5v5aa.mjs → TabBar-CmYqreN0.mjs} +6 -9
  220. package/dist/TabBar-CmYqreN0.mjs.map +1 -0
  221. package/dist/{Table-B2V5tlfA.d.mts → Table-BtNYI6QX.d.mts} +1 -1
  222. package/dist/{Table-msXj0glu.mjs → Table-CV8nogHu.mjs} +4 -4
  223. package/dist/{Table-msXj0glu.mjs.map → Table-CV8nogHu.mjs.map} +1 -1
  224. package/dist/Table.d.mts +1 -1
  225. package/dist/{TableBody-SlQe4Jyp.d.mts → TableBody-DQ7pivxP.d.mts} +1 -1
  226. package/dist/TableBody.d.mts +1 -1
  227. package/dist/{TableBox-CF1_Fk0j.mjs → TableBox-vCTkOPlC.mjs} +10 -10
  228. package/dist/{TableBox-CF1_Fk0j.mjs.map → TableBox-vCTkOPlC.mjs.map} +1 -1
  229. package/dist/TableBox.d.mts +2 -2
  230. package/dist/{TableBoxCell-BRhGeUnO.d.mts → TableBoxCell-BkJ587Lf.d.mts} +6 -6
  231. package/dist/TableBoxCell.d.mts +1 -1
  232. package/dist/{TableBoxField-Cq9M1upV.d.mts → TableBoxField-Dj9Cx9NP.d.mts} +5 -5
  233. package/dist/TableBoxField.d.mts +1 -1
  234. package/dist/{TableBoxRow-DZzRYoID.d.mts → TableBoxRow-CpR9Cti1.d.mts} +3 -3
  235. package/dist/TableBoxRow.d.mts +1 -1
  236. package/dist/{TableBoxRowActions-4-j3flJq.d.mts → TableBoxRowActions-Bj-LZaI7.d.mts} +2 -2
  237. package/dist/TableBoxRowActions.d.mts +1 -1
  238. package/dist/{TableCell-D5Sqb6iO.d.mts → TableCell-DOjW6ADs.d.mts} +2 -2
  239. package/dist/TableCell.d.mts +1 -1
  240. package/dist/{TableControls-CqW_nyBY.mjs → TableControls-BtKBTGYR.mjs} +822 -388
  241. package/dist/TableControls-BtKBTGYR.mjs.map +1 -0
  242. package/dist/{TableControls-B-LakH-8.d.mts → TableControls-Cw7LDHWj.d.mts} +6 -3
  243. package/dist/TableControls.d.mts +1 -1
  244. package/dist/{TableControlsContext-Dh1YVmBM.d.mts → TableControlsContext-DgoZhMpQ.d.mts} +2 -2
  245. package/dist/TableControlsContext.d.mts +1 -1
  246. package/dist/{TableHead-BCrVa0BY.d.mts → TableHead-BGUg_aXc.d.mts} +1 -1
  247. package/dist/TableHead.d.mts +1 -1
  248. package/dist/{TableHeaderCell-CcEkDozs.d.mts → TableHeaderCell-DcZcMQyR.d.mts} +1 -1
  249. package/dist/TableHeaderCell.d.mts +1 -1
  250. package/dist/{TableLayout-Bhj1QBBz.d.mts → TableLayout-CwYQaZlA.d.mts} +1 -1
  251. package/dist/TableLayout.d.mts +1 -1
  252. package/dist/{TableRow-Cy1y7b9S.d.mts → TableRow-Dad6_CoD.d.mts} +2 -2
  253. package/dist/TableRow.d.mts +1 -1
  254. package/dist/TableTH.d.mts +1 -1
  255. package/dist/{TableViewConfigurationDropdown-BzygLtGm.d.mts → TableViewConfigurationDropdown-BGuWAarQ.d.mts} +2 -2
  256. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  257. package/dist/{TechnicalSticker-B6T7cHHc.mjs → TechnicalSticker-BhUxOU-L.mjs} +3 -3
  258. package/dist/{TechnicalSticker-B6T7cHHc.mjs.map → TechnicalSticker-BhUxOU-L.mjs.map} +1 -1
  259. package/dist/{Text-BdluS7Fy.mjs → Text-CSwFifQF.mjs} +1 -1
  260. package/dist/{Text-BdluS7Fy.mjs.map → Text-CSwFifQF.mjs.map} +1 -1
  261. package/dist/{Text-BVGJ-Nlw.d.mts → Text-CUhW_agW.d.mts} +3 -3
  262. package/dist/Text.d.mts +1 -1
  263. package/dist/{TextArea-Bzj593VO.d.mts → TextArea-Djd1uT3B.d.mts} +2 -2
  264. package/dist/{TextArea-C1CmFRiz.mjs → TextArea-J_EscGvm.mjs} +2 -2
  265. package/dist/{TextArea-C1CmFRiz.mjs.map → TextArea-J_EscGvm.mjs.map} +1 -1
  266. package/dist/TextArea.d.mts +1 -1
  267. package/dist/{TextUnderlineTooltip-CgFmtqF_.d.mts → TextUnderlineTooltip-DCVONTD0.d.mts} +2 -2
  268. package/dist/TextUnderlineTooltip.d.mts +1 -1
  269. package/dist/Tile.d.mts +1 -1
  270. package/dist/Toast.d.mts +1 -1
  271. package/dist/{Toggle-CntyMUPJ.mjs → Toggle-BEOoATjS.mjs} +4 -4
  272. package/dist/{Toggle-CntyMUPJ.mjs.map → Toggle-BEOoATjS.mjs.map} +1 -1
  273. package/dist/{Toggle-bSu1xAaq.d.mts → Toggle-EYpW34LO.d.mts} +1 -1
  274. package/dist/Toggle.d.mts +1 -1
  275. package/dist/{Tooltip-C0FuZS1C.mjs → Tooltip-B-0VRuKT.mjs} +2 -2
  276. package/dist/{Tooltip-C0FuZS1C.mjs.map → Tooltip-B-0VRuKT.mjs.map} +1 -1
  277. package/dist/{Tooltip-Duw4Fz1t.d.mts → Tooltip-DLK9Q2Rg.d.mts} +2 -2
  278. package/dist/Tooltip.d.mts +1 -1
  279. package/dist/{TruncatedText-CbTpX_R1.d.mts → TruncatedText-B_u70y6w.d.mts} +1 -1
  280. package/dist/VersionHistory.d.mts +1 -1
  281. package/dist/{VersionHistoryItem-D05QYej7.d.mts → VersionHistoryItem-iUabmk_y.d.mts} +1 -1
  282. package/dist/VersionHistoryItem.d.mts +1 -1
  283. package/dist/WizardModal.d.mts +2 -2
  284. package/dist/{accordionTitleTypography-Leehcmb3.d.mts → accordionTitleTypography-C7VVJvlx.d.mts} +2 -2
  285. package/dist/accordionTitleTypography.d.mts +1 -1
  286. package/dist/{chainTypes-D8SGRGba.d.mts → chainTypes-DT-9j_sG.d.mts} +4 -4
  287. package/dist/{codec-Vsztf4fe.d.mts → codec-CGj8cwcj.d.mts} +2 -2
  288. package/dist/codec.d.mts +1 -1
  289. package/dist/{color-CrlF3pba.d.mts → color-BOm5A1Si.d.mts} +2 -2
  290. package/dist/components/Accordion/index.d.mts +1 -1
  291. package/dist/components/Accordion/index.mjs +2 -2
  292. package/dist/components/Attribute/index.mjs +4 -4
  293. package/dist/components/Badge/index.mjs +1 -1
  294. package/dist/components/Banner/index.mjs +1 -1
  295. package/dist/components/BottomPanel/index.mjs +3 -3
  296. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  297. package/dist/components/Breadcrumbs/index.mjs +1 -1
  298. package/dist/components/Button/index.d.mts +2 -2
  299. package/dist/components/Button/index.mjs +1 -1
  300. package/dist/components/ButtonGroup/index.mjs +2 -2
  301. package/dist/components/Card/index.d.mts +2 -2
  302. package/dist/components/Card/index.mjs +1 -1
  303. package/dist/components/CardV2/index.d.mts +1 -1
  304. package/dist/components/CardV2/index.mjs +1 -1
  305. package/dist/components/Checkbox/index.d.mts +1 -1
  306. package/dist/components/Checkbox/index.mjs +1 -1
  307. package/dist/components/CodeHighlight/index.mjs +2 -2
  308. package/dist/components/Combobox/index.d.mts +2 -2
  309. package/dist/components/Combobox/index.mjs +1 -1
  310. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  311. package/dist/components/DataTable/TableControls/index.d.mts +20 -20
  312. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  313. package/dist/components/DataTable/index.d.mts +2 -2
  314. package/dist/components/DataTable/index.mjs +83 -60
  315. package/dist/components/DataTable/index.mjs.map +1 -1
  316. package/dist/components/DataTable/types.d.mts +9 -2
  317. package/dist/components/DatePicker/index.d.mts +5 -5
  318. package/dist/components/DatePicker/index.mjs +1 -1
  319. package/dist/components/DropdownButton/index.mjs +1 -1
  320. package/dist/components/DropdownMenu/index.d.mts +1 -1
  321. package/dist/components/DropdownMenu/index.mjs +1 -1
  322. package/dist/components/FloatingPanel/index.mjs +3 -3
  323. package/dist/components/FormControl/index.d.mts +2 -2
  324. package/dist/components/FormControl/index.mjs +2 -2
  325. package/dist/components/FormField/index.d.mts +5 -5
  326. package/dist/components/FormField/index.mjs +1 -1
  327. package/dist/components/Grid/index.mjs +1 -1
  328. package/dist/components/HoverCopyableField/index.mjs +1 -1
  329. package/dist/components/ImageTile/index.mjs +7 -7
  330. package/dist/components/Input/index.d.mts +1 -1
  331. package/dist/components/Input/index.mjs +1 -1
  332. package/dist/components/Link/index.mjs +1 -1
  333. package/dist/components/ListBox/index.d.mts +3 -3
  334. package/dist/components/ListBox/index.mjs +1 -1
  335. package/dist/components/LoadingShimmer/index.mjs +1 -1
  336. package/dist/components/MaskedInput/index.mjs +1 -1
  337. package/dist/components/Menu/index.d.mts +1 -1
  338. package/dist/components/Menu/index.mjs +1 -1
  339. package/dist/components/Modal/index.d.mts +1 -1
  340. package/dist/components/Modal/index.mjs +1 -1
  341. package/dist/components/PageHeader/index.mjs +1 -1
  342. package/dist/components/Pagination/index.d.mts +3 -3
  343. package/dist/components/Pagination/index.mjs +1 -1
  344. package/dist/components/Pii/index.mjs +1 -1
  345. package/dist/components/Popover/index.mjs +1 -1
  346. package/dist/components/ProgressBar/index.mjs +1 -1
  347. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  348. package/dist/components/ProgressIndicator/index.mjs +1 -1
  349. package/dist/components/Radio/index.mjs +1 -1
  350. package/dist/components/RadioGroup/index.d.mts +1 -1
  351. package/dist/components/RadioGroup/index.mjs +1 -1
  352. package/dist/components/RightPanel/index.mjs +4 -4
  353. package/dist/components/SegmentedControl/index.d.mts +1 -1
  354. package/dist/components/SegmentedControl/index.mjs +1 -1
  355. package/dist/components/Select/index.d.mts +1 -1
  356. package/dist/components/Select/index.mjs +1 -1
  357. package/dist/components/Slider/index.mjs +1 -1
  358. package/dist/components/SmartTextInput/index.d.mts +2 -2
  359. package/dist/components/SmartTextInput/index.mjs +8 -8
  360. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  361. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  362. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  363. package/dist/components/Spacer/index.mjs +1 -1
  364. package/dist/components/Spinner/index.mjs +1 -1
  365. package/dist/components/Stack/index.d.mts +1 -1
  366. package/dist/components/Stack/index.mjs +1 -1
  367. package/dist/components/StatusIndicator/index.mjs +1 -1
  368. package/dist/components/Sticker/index.d.mts +1 -1
  369. package/dist/components/Sticker/index.mjs +1 -1
  370. package/dist/components/TabBar/index.mjs +1 -1
  371. package/dist/components/Table/index.d.mts +8 -8
  372. package/dist/components/Table/index.mjs +1 -1
  373. package/dist/components/TableBox/index.d.mts +2 -2
  374. package/dist/components/TableBox/index.mjs +1 -1
  375. package/dist/components/TechnicalSticker/index.mjs +1 -1
  376. package/dist/components/Text/index.d.mts +1 -1
  377. package/dist/components/Text/index.mjs +1 -1
  378. package/dist/components/TextArea/index.d.mts +1 -1
  379. package/dist/components/TextArea/index.mjs +1 -1
  380. package/dist/components/Tile/index.mjs +4 -4
  381. package/dist/components/Toast/index.mjs +1 -1
  382. package/dist/components/Toggle/index.d.mts +1 -1
  383. package/dist/components/Toggle/index.mjs +1 -1
  384. package/dist/components/Tooltip/index.d.mts +3 -3
  385. package/dist/components/Tooltip/index.mjs +1 -1
  386. package/dist/components/VersionHistory/index.d.mts +1 -1
  387. package/dist/components/VersionHistory/index.mjs +8 -8
  388. package/dist/compound-expression.d.mts +1 -1
  389. package/dist/{constants-CQUCM6__.d.mts → constants-CwzbyAdc.d.mts} +1 -1
  390. package/dist/constants.d.mts +1 -1
  391. package/dist/{createPath-Bq7wYGt_.d.mts → createPath-C4jIHe68.d.mts} +2 -2
  392. package/dist/createPath.d.mts +1 -1
  393. package/dist/{date-filter-D6IfCkwp.mjs → date-filter-B8PKh5vg.mjs} +1 -1
  394. package/dist/{date-filter-D6IfCkwp.mjs.map → date-filter-B8PKh5vg.mjs.map} +1 -1
  395. package/dist/{date-range-rule-value-DVhMQP4-.d.mts → date-range-rule-value-BTlHwhVf.d.mts} +2 -2
  396. package/dist/date-range-rule-value.d.mts +1 -1
  397. package/dist/{date-rule-intent-BwQ6OTVD.d.mts → date-rule-intent-zdKP-tW_.d.mts} +3 -3
  398. package/dist/date-rule-intent.d.mts +1 -1
  399. package/dist/display.d.mts +12 -4
  400. package/dist/fieldPickerOptions.d.mts +5 -3
  401. package/dist/{filter-size-context-BjTzcZwZ.d.mts → filter-size-context-D3ZSzFKe.d.mts} +2 -2
  402. package/dist/filter-size-context.d.mts +1 -1
  403. package/dist/format-date-value.d.mts +6 -1
  404. package/dist/formatDateTime-zyRMjfH8.d.mts +30 -0
  405. package/dist/formatDateTime.d.mts +2 -0
  406. package/dist/helpers.d.mts +24 -10
  407. package/dist/i18n-DeJa-arS.mjs +209 -0
  408. package/dist/i18n-DeJa-arS.mjs.map +1 -0
  409. package/dist/{index-C-xpEL8b.d.mts → index-B13LwAGD.d.mts} +2 -2
  410. package/dist/{index-BFIFjR7Q.d.mts → index-B7KIL3U6.d.mts} +2 -2
  411. package/dist/{index-BhDvrF4l.d.mts → index-DHmZDtDG.d.mts} +3 -3
  412. package/dist/index-sViox9YW.d.mts +1 -0
  413. package/dist/index-xAZnxq0d2.d.mts +1 -0
  414. package/dist/index.d.mts +1 -1
  415. package/dist/index2.d.mts +1 -1
  416. package/dist/index3.d.mts +3 -3
  417. package/dist/index4.d.mts +1 -1
  418. package/dist/index5.d.mts +15 -15
  419. package/dist/{input-DpHBIUpP.d.mts → input-DMPo8gRT.d.mts} +3 -3
  420. package/dist/{inputFields-BVDurw3L.d.mts → inputFields-DHdFgzS2.d.mts} +11 -11
  421. package/dist/inputFields.d.mts +1 -1
  422. package/dist/{intersperse-bvY2gibK.mjs → intersperse-DWUGtKug.mjs} +1 -1
  423. package/dist/{intersperse-bvY2gibK.mjs.map → intersperse-DWUGtKug.mjs.map} +1 -1
  424. package/dist/{jsonSchema-Bl-qzgrr.d.mts → jsonSchema-6mcLrVG3.d.mts} +1 -1
  425. package/dist/lib/PDSProvider.d.mts +14 -2
  426. package/dist/lib/PDSProvider.mjs +15 -8
  427. package/dist/lib/PDSProvider.mjs.map +1 -1
  428. package/dist/lib/TruncatedText.d.mts +1 -1
  429. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  430. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  431. package/dist/lib/chainTypes.d.mts +1 -1
  432. package/dist/lib/color.d.mts +1 -1
  433. package/dist/lib/customFunctionSchema.d.mts +1 -1
  434. package/dist/lib/date-filter/index.d.mts +2 -2
  435. package/dist/lib/date-filter/index.mjs +1 -1
  436. package/dist/lib/i18n/index.d.mts +4 -0
  437. package/dist/lib/i18n/index.mjs +2 -0
  438. package/dist/lib/jsonSchema.d.mts +1 -1
  439. package/dist/lib/jsonSchemaType.d.mts +1 -1
  440. package/dist/lib/message.d.mts +1 -1
  441. package/dist/lib/methodChain.d.mts +2 -2
  442. package/dist/lib/methodChain.mjs +1 -1
  443. package/dist/lib/methodChainNormalize.d.mts +2 -2
  444. package/dist/lib/methodChainTypes.d.mts +1 -1
  445. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  446. package/dist/lib/platformObject.d.mts +1 -1
  447. package/dist/lib/pseudoClass.d.mts +1 -1
  448. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  449. package/dist/lib/router/adapters/reactRouter.mjs +1 -1
  450. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  451. package/dist/lib/router/adapters/tanstack.mjs +1 -1
  452. package/dist/lib/router/index.d.mts +5 -5
  453. package/dist/lib/router/index.mjs +2 -2
  454. package/dist/lib/schemaOptions.d.mts +1 -1
  455. package/dist/lib/schemaOptions.mjs +1 -1
  456. package/dist/lib/semanticColor.d.mts +1 -1
  457. package/dist/lib/useChain.d.mts +1 -1
  458. package/dist/lib/useChain.mjs +1 -1
  459. package/dist/{listbox-options-BjOkovND.d.mts → listbox-options-yLjqZp4H.d.mts} +3 -3
  460. package/dist/listbox-options.d.mts +1 -1
  461. package/dist/{message-w_1-kTDE.d.mts → message-C5n7wFiN.d.mts} +1 -1
  462. package/dist/{methodChain-B5vZEOff.d.mts → methodChain-BNDytoaD.d.mts} +4 -4
  463. package/dist/{methodChain-L_h8Z8Bx.mjs → methodChain-xZ1_vhbz.mjs} +1 -1
  464. package/dist/{methodChain-L_h8Z8Bx.mjs.map → methodChain-xZ1_vhbz.mjs.map} +1 -1
  465. package/dist/{methodChainTypes-BVkTI8MX.d.mts → methodChainTypes-BuwpPC73.d.mts} +2 -2
  466. package/dist/mixins/focus.d.mts +1 -1
  467. package/dist/mixins/hoverable.d.mts +2 -2
  468. package/dist/mixins/input.d.mts +1 -1
  469. package/dist/mixins/menuItem.d.mts +2 -2
  470. package/dist/mixins/scrollbar.d.mts +1 -1
  471. package/dist/mixins/text.d.mts +1 -1
  472. package/dist/{operators-BG82-g3M.d.mts → operators-B12UYEsV.d.mts} +18 -11
  473. package/dist/operators.d.mts +2 -2
  474. package/dist/{palette-C8tyI81D.d.mts → palette-BCszfY7I.d.mts} +3 -3
  475. package/dist/palette.d.mts +1 -1
  476. package/dist/patterns/CardGrouping/index.d.mts +2 -0
  477. package/dist/patterns/CardGrouping/index.mjs +280 -0
  478. package/dist/patterns/CardGrouping/index.mjs.map +1 -0
  479. package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
  480. package/dist/patterns/PageLayout/index.d.mts +5 -5
  481. package/dist/patterns/PageLayout/index.mjs +1 -131
  482. package/dist/patterns/WizardModal/index.mjs +4 -4
  483. package/dist/reactRouterFallback.d.mts +1 -1
  484. package/dist/relative-date-label.d.mts +1 -1
  485. package/dist/{router-7FYDW80v.mjs → router-COrZcVkf.mjs} +2 -2
  486. package/dist/{router-7FYDW80v.mjs.map → router-COrZcVkf.mjs.map} +1 -1
  487. package/dist/safe-parse.d.mts +1 -1
  488. package/dist/{schemaOptions-DGca6x7E.d.mts → schemaOptions-DBOUChxi.d.mts} +3 -3
  489. package/dist/{semantic-D1661f_6.d.mts → semantic-Duoh2Pxp.d.mts} +1 -1
  490. package/dist/{semanticColor-Bg0H3RUL.d.mts → semanticColor-BuG977_M.d.mts} +3 -3
  491. package/dist/strings-DQ3vxBj8.d.mts +149 -0
  492. package/dist/strings.d.mts +2 -0
  493. package/dist/{text-Iw9DKpbZ.d.mts → text-B7hx6G99.d.mts} +1 -1
  494. package/dist/{theme-BB1B6Wkz.d.mts → theme-BKg55Zk1.d.mts} +3 -3
  495. package/dist/theme.d.mts +1 -1
  496. package/dist/tone.d.mts +3 -3
  497. package/dist/tree.d.mts +1 -1
  498. package/dist/{types-M-rsm1Km.d.mts → types-4wnr5R9P.d.mts} +1 -1
  499. package/dist/{types-CI2bPi02.d.mts → types-6QeQmbFm.d.mts} +1 -1
  500. package/dist/{types-DZTbvdpO.d.mts → types-BjMJFNYH.d.mts} +1 -1
  501. package/dist/{types-Cs6CdZCO.d.mts → types-CEQWndtF.d.mts} +4 -4
  502. package/dist/{types-Dy3lZv9z.d.mts → types-CM8L7-ij.d.mts} +31 -9
  503. package/dist/{types-D1DijcJv.d.mts → types-CgKSEQyB.d.mts} +1 -1
  504. package/dist/{types-DdTu747j.d.mts → types-CwzwClJx.d.mts} +1 -1
  505. package/dist/{types-BYRTxB0a.d.mts → types-VgGkS4JB.d.mts} +2 -2
  506. package/dist/{types-B0ilOIfE.d.mts → types-eemD0jxb.d.mts} +2 -2
  507. package/dist/types.d.mts +1 -1
  508. package/dist/types2.d.mts +1 -1
  509. package/dist/types3.d.mts +1 -1
  510. package/dist/types4.d.mts +2 -2
  511. package/dist/types5.d.mts +1 -1
  512. package/dist/types6.d.mts +1 -1
  513. package/dist/types7.d.mts +1 -1
  514. package/dist/{url-state-DWA7UFxS.d.mts → url-state-BW1mN6WQ.d.mts} +2 -2
  515. package/dist/url-state.d.mts +1 -1
  516. package/dist/{useChain-CEsXE2Bx.d.mts → useChain-BreIP4fW.d.mts} +6 -6
  517. package/dist/{useChain-CKqYGdx4.mjs → useChain-Cu4KDfFk.mjs} +2 -2
  518. package/dist/{useChain-CKqYGdx4.mjs.map → useChain-Cu4KDfFk.mjs.map} +1 -1
  519. package/dist/useChainAtCursor.d.mts +6 -6
  520. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  521. package/dist/useComboboxFooterAction.d.mts +5 -2
  522. package/dist/{useFilterStateV2-DoJ9lyJx.d.mts → useFilterStateV2-B8VebPBe.d.mts} +5 -4
  523. package/dist/useFilterStateV2.d.mts +1 -1
  524. package/dist/{useFormField-BtnAYcHV.d.mts → useFormField-DAwApAKK.d.mts} +2 -2
  525. package/dist/{useFormField-BAmkdxtA.mjs → useFormField-J0LiPcpm.mjs} +2 -2
  526. package/dist/{useFormField-BAmkdxtA.mjs.map → useFormField-J0LiPcpm.mjs.map} +1 -1
  527. package/dist/useFormField.d.mts +1 -1
  528. package/dist/{useFormGroup-BZayb9fZ.mjs → useFormGroup-CALbrUkl.mjs} +1 -1
  529. package/dist/{useFormGroup-BZayb9fZ.mjs.map → useFormGroup-CALbrUkl.mjs.map} +1 -1
  530. package/dist/{useLocationPathname-pLyLOrAi.d.mts → useLocationPathname-BHL0pgiu.d.mts} +1 -1
  531. package/dist/useLocationPathname.d.mts +1 -1
  532. package/dist/{useTableBoxDragAndDrop-wjc_LCpC.d.mts → useTableBoxDragAndDrop-Dq30b6yY.d.mts} +1 -1
  533. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  534. package/dist/{useToggle-DUHQjohK.mjs → useToggle-DRzCDqrc.mjs} +1 -1
  535. package/dist/{useToggle-DUHQjohK.mjs.map → useToggle-DRzCDqrc.mjs.map} +1 -1
  536. package/dist/useTruncation.d.mts +1 -1
  537. package/dist/{utilities-DL18UdPs.d.mts → utilities-B2ry7_20.d.mts} +1 -1
  538. package/dist/utilities.d.mts +1 -1
  539. package/dist/utils/storybook.mjs +1 -1
  540. package/dist/utils/testing.d.mts +1 -1
  541. package/dist/utils.d.mts +1 -1
  542. package/dist/utils4.d.mts +5 -5
  543. package/dist/{validation-PeVTwtd-.d.mts → validation-ZHnFPRP6.d.mts} +3 -3
  544. package/dist/validation.d.mts +1 -1
  545. package/dist/validation2.d.mts +4 -4
  546. package/dist/{value-control-resolver-Cx_wXQFv.d.mts → value-control-resolver-D3qzy8Kk.d.mts} +2 -2
  547. package/dist/value-control-resolver.d.mts +1 -1
  548. package/dist/variables/effect.d.mts +1 -1
  549. package/dist/variables/semantic.d.mts +1 -1
  550. package/llms.txt +2 -1
  551. package/package.json +7 -3
  552. package/skills/ui-authoring/COMPONENTS.md +2 -0
  553. package/skills/ui-authoring/PATTERNS.md +7 -2
  554. package/skills/ui-authoring/SKILL.md +23 -0
  555. package/dist/Combobox-CCDoNF9Y.mjs.map +0 -1
  556. package/dist/DatePicker-LPIJrc0n.mjs.map +0 -1
  557. package/dist/Pagination-6BDOn9bX.mjs.map +0 -1
  558. package/dist/TabBar-BSl5v5aa.mjs.map +0 -1
  559. package/dist/TableControls-CqW_nyBY.mjs.map +0 -1
  560. package/dist/patterns/PageLayout/index.mjs.map +0 -1
  561. /package/dist/{index-BCq_fh4A2.d.mts → index-8SLBz2NH.d.mts} +0 -0
  562. /package/dist/{index-BINnViIh.d.mts → index-B24gUwOx.d.mts} +0 -0
  563. /package/dist/{index-BMBcfD_R.d.mts → index-B8M0Grl_2.d.mts} +0 -0
  564. /package/dist/{index-BOn0AAue.d.mts → index-BFnNtGdX.d.mts} +0 -0
  565. /package/dist/{index-BcsXXrHq.d.mts → index-BTviwbFV.d.mts} +0 -0
  566. /package/dist/{index-BwXb5CoQ.d.mts → index-BwFl_eS0.d.mts} +0 -0
  567. /package/dist/{index-C9achTF6.d.mts → index-C3kE54DD.d.mts} +0 -0
  568. /package/dist/{index-CCKHlTA4.d.mts → index-C6HcjJiY.d.mts} +0 -0
  569. /package/dist/{index-CFuHCx9T.d.mts → index-CSf15oCd.d.mts} +0 -0
  570. /package/dist/{index-CWB6exYm.d.mts → index-CX869wwk.d.mts} +0 -0
  571. /package/dist/{index-CryTAIZM.d.mts → index-CXaDbCtw.d.mts} +0 -0
  572. /package/dist/{index-CuYZJcK3.d.mts → index-D4DUvwPf.d.mts} +0 -0
  573. /package/dist/{index-CuheJfs-.d.mts → index-DB7t8whN.d.mts} +0 -0
  574. /package/dist/{index-D-9tW2r5.d.mts → index-DhiymMxa.d.mts} +0 -0
  575. /package/dist/{index-D9XihFV1.d.mts → index-DvwPIy8X.d.mts} +0 -0
  576. /package/dist/{index-Dflz2i1X.d.mts → index-Oio5ygqN.d.mts} +0 -0
  577. /package/dist/{index-DrK1_jKY.d.mts → index-Wc1llEvP.d.mts} +0 -0
  578. /package/dist/{index-Iujpc9_6.d.mts → index-bHnO4ZKt.d.mts} +0 -0
  579. /package/dist/{index-e6k85DKM.d.mts → index-dzI_9J-Z.d.mts} +0 -0
  580. /package/dist/{index-irNqT1qQ2.d.mts → index-lIMqGGJz.d.mts} +0 -0
  581. /package/dist/{index-xmouCHX9.d.mts → index-luywJTzJ.d.mts} +0 -0
@@ -1,6 +1,6 @@
1
- import { l as MenuItemProps } from "./Menu-CUN9bmc1.mjs";
2
- import { o as ImplementsFormField } from "./inputFields-BVDurw3L.mjs";
3
- import { r as ListBoxProps } from "./ListBox-CdqRwBvA.mjs";
1
+ import { l as MenuItemProps } from "./Menu-BSHJpKyL.mjs";
2
+ import { o as ImplementsFormField } from "./inputFields-DHdFgzS2.mjs";
3
+ import { r as ListBoxProps } from "./ListBox--IH6uofo.mjs";
4
4
  import { ReactNode } from "react";
5
5
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
6
 
@@ -48,4 +48,4 @@ declare const ListBoxField: <T extends object>({
48
48
  }: ListBoxFieldProps<T>) => _$react_jsx_runtime0.JSX.Element;
49
49
  //#endregion
50
50
  export { ListBoxField as t };
51
- //# sourceMappingURL=ListBoxField-Bl2WLplO.d.mts.map
51
+ //# sourceMappingURL=ListBoxField-BUKop1Ca.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as ListBoxField } from "./ListBoxField-Bl2WLplO.mjs";
1
+ import { t as ListBoxField } from "./ListBoxField-BUKop1Ca.mjs";
2
2
  export { ListBoxField as default };
@@ -77,4 +77,4 @@ const MaybeLoadingShimmer = ({ isLoading, children, height, width }) => isLoadin
77
77
  //#endregion
78
78
  export { MaybeLoadingShimmer as i, LoadingShimmerHeading as n, LoadingShimmerParagraph as r, LoadingShimmer as t };
79
79
 
80
- //# sourceMappingURL=LoadingShimmer-Ds7rvIUN.mjs.map
80
+ //# sourceMappingURL=LoadingShimmer-C73hJqaW.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingShimmer-Ds7rvIUN.mjs","names":[],"sources":["../components/LoadingShimmer/LoadingShimmer.tsx"],"sourcesContent":["import { motion } from 'framer-motion';\nimport type { ComponentPropsWithoutRef, FC } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color } from '@persona/design-tokens';\nimport { type CssColor, withAlpha } from 'design-system/lib/color';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\nimport type { HeadingSize, ParagraphSize } from 'design-system/mixins/text';\n\n// A one-off colour predating the token set; no primitive matches it exactly.\n// oxlint-disable-next-line persona-web/no-raw-hex-colors\nconst LEGACY_SECONDARY_BAR = '#eaeaea' as CssColor;\n\n// Relay renders this under its own theme, which has neither a semantic namespace nor `theme.color`,\n// so each fallback is a constant rather than a theme expression — the latter would throw there.\nconst shimmerColors = (theme: MaybeSemanticTheme, variant: 'primary' | 'secondary') => {\n if (variant === 'secondary') {\n return {\n bar: semanticColor(theme, 'FeedbackNeutral2', LEGACY_SECONDARY_BAR),\n highlight: semanticColor(theme, 'FeedbackNeutral1', Color.CoreSlate50),\n };\n }\n\n const tokens = semanticTokens(theme);\n\n return {\n bar: semanticColor(theme, 'FeedbackNeutral1', Color.CoreSlate50),\n highlight: tokens ? withAlpha(tokens.SurfaceSecondary, tokens.Opacity25) : Color.CoreSlate25,\n };\n};\n\ninterface LoadingShimmerProps extends ComponentPropsWithoutRef<'span'> {\n height?: string;\n width?: string;\n variant?: 'primary' | 'secondary';\n}\n\ntype ShimmerContainerProps = {\n width?: string;\n height?: string;\n $variant: 'primary' | 'secondary';\n};\nconst ShimmerContainer = styled.span<ShimmerContainerProps>`\n position: relative;\n display: inline-block;\n background-color: ${({ theme, $variant }) => shimmerColors(theme, $variant).bar};\n width: ${({ width }) => width ?? '100px'};\n height: ${({ height }) => height ?? 'auto'};\n border-radius: ${BorderRadius.Md};\n overflow: hidden;\n`;\n\ntype ShimmerProps = {\n $variant: 'primary' | 'secondary';\n};\nconst Shimmer = styled(motion.span)<ShimmerProps>`\n position: absolute;\n width: 100%;\n height: 100%;\n background: ${({ theme, $variant }) =>\n `linear-gradient(90deg, transparent 0%, ${shimmerColors(theme, $variant).highlight} 50%, transparent 100%)`};\n filter: blur(4px);\n`;\n\n/**\n * Base class of all Loading Shimmer components.\n */\nexport function LoadingShimmer({\n width,\n height,\n variant = 'primary',\n ...props\n}: LoadingShimmerProps) {\n return (\n <ShimmerContainer\n width={width}\n height={height}\n $variant={variant}\n aria-live='polite'\n aria-busy='true'\n data-test='loading-shimmer'\n data-loading-indicator='true'\n {...props}\n >\n <Shimmer\n initial={{ x: '-100%', skew: -30 }}\n animate={{ x: '100%', skew: -30 }}\n $variant={variant}\n transition={{ repeat: Infinity, duration: 1, ease: 'easeOut' }}\n />\n </ShimmerContainer>\n );\n}\n\nexport interface LoadingShimmerHeadingProps extends LoadingShimmerProps {\n size?: HeadingSize;\n}\n\nexport const LoadingShimmerHeading = styled(LoadingShimmer)<LoadingShimmerHeadingProps>`\n height: ${({ theme, size = 'lg' }) => theme.text.heading[size].fontSize};\n`;\n\ninterface LoadingShimmerParagraphProps extends LoadingShimmerProps {\n size?: ParagraphSize;\n // eg. 200px\n width?: string;\n}\n\nexport const LoadingShimmerParagraph = styled(LoadingShimmer)<LoadingShimmerParagraphProps>`\n height: ${({ theme, size = 'md' }) => theme.text.paragraph[size].fontSize};\n`;\n\n// A \"maybe\" shimmer block that is shimmering if the `isLoading`\n// value is set to true and otherwise just displays its children\ninterface MaybeLoadingShimmerProps {\n isLoading: boolean;\n height?: string;\n width?: string;\n}\n\nexport const MaybeLoadingShimmer: FC<MaybeLoadingShimmerProps> = ({\n isLoading,\n children,\n height,\n width,\n}) => (isLoading ? <LoadingShimmer height={height} width={width} /> : <>{children}</>);\n"],"mappings":";;;;;;;AAeA,MAAM,uBAAuB;AAI7B,MAAM,iBAAiB,OAA2B,YAAqC;AACrF,KAAI,YAAY,YACd,QAAO;EACL,KAAK,cAAc,OAAO,oBAAoB,qBAAqB;EACnE,WAAW,cAAc,OAAO,oBAAoB,MAAM,YAAY;EACvE;CAGH,MAAM,SAAS,eAAe,MAAM;AAEpC,QAAO;EACL,KAAK,cAAc,OAAO,oBAAoB,MAAM,YAAY;EAChE,WAAW,SAAS,UAAU,OAAO,kBAAkB,OAAO,UAAU,GAAG,MAAM;EAClF;;AAcH,MAAM,mBAAmB,OAAO,IAA2B;;;uBAGpC,EAAE,OAAO,eAAe,cAAc,OAAO,SAAS,CAAC,IAAI;YACtE,EAAE,YAAY,SAAS,QAAQ;aAC9B,EAAE,aAAa,UAAU,OAAO;mBAC1B,aAAa,GAAG;;;AAOnC,MAAM,UAAU,OAAO,OAAO,KAAK;;;;iBAIlB,EAAE,OAAO,eACtB,0CAA0C,cAAc,OAAO,SAAS,CAAC,UAAU,yBAAyB;;;;;;AAOhH,SAAgB,eAAe,EAC7B,OACA,QACA,UAAU,WACV,GAAG,SACmB;AACtB,QACE,oBAAC,kBAAD;EACS;EACC;EACR,UAAU;EACV,aAAU;EACV,aAAU;EACV,aAAU;EACV,0BAAuB;EACvB,GAAI;YAEJ,oBAAC,SAAD;GACE,SAAS;IAAE,GAAG;IAAS,MAAM;IAAK;GAClC,SAAS;IAAE,GAAG;IAAQ,MAAM;IAAK;GACjC,UAAU;GACV,YAAY;IAAE,QAAQ;IAAU,UAAU;IAAG,MAAM;IAAW;GAC9D,CAAA;EACe,CAAA;;AAQvB,MAAa,wBAAwB,OAAO,eAAe;aAC9C,EAAE,OAAO,OAAO,WAAW,MAAM,KAAK,QAAQ,MAAM,SAAS;;AAS1E,MAAa,0BAA0B,OAAO,eAAe;aAChD,EAAE,OAAO,OAAO,WAAW,MAAM,KAAK,UAAU,MAAM,SAAS;;AAW5E,MAAa,uBAAqD,EAChE,WACA,UACA,QACA,YACK,YAAY,oBAAC,gBAAD;CAAwB;CAAe;CAAS,CAAA,GAAG,oBAAA,UAAA,EAAG,UAAY,CAAA"}
1
+ {"version":3,"file":"LoadingShimmer-C73hJqaW.mjs","names":[],"sources":["../components/LoadingShimmer/LoadingShimmer.tsx"],"sourcesContent":["import { motion } from 'framer-motion';\nimport type { ComponentPropsWithoutRef, FC } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color } from '@persona/design-tokens';\nimport { type CssColor, withAlpha } from 'design-system/lib/color';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\nimport type { HeadingSize, ParagraphSize } from 'design-system/mixins/text';\n\n// A one-off colour predating the token set; no primitive matches it exactly.\n// oxlint-disable-next-line persona-web/no-raw-hex-colors\nconst LEGACY_SECONDARY_BAR = '#eaeaea' as CssColor;\n\n// Relay renders this under its own theme, which has neither a semantic namespace nor `theme.color`,\n// so each fallback is a constant rather than a theme expression — the latter would throw there.\nconst shimmerColors = (theme: MaybeSemanticTheme, variant: 'primary' | 'secondary') => {\n if (variant === 'secondary') {\n return {\n bar: semanticColor(theme, 'FeedbackNeutral2', LEGACY_SECONDARY_BAR),\n highlight: semanticColor(theme, 'FeedbackNeutral1', Color.CoreSlate50),\n };\n }\n\n const tokens = semanticTokens(theme);\n\n return {\n bar: semanticColor(theme, 'FeedbackNeutral1', Color.CoreSlate50),\n highlight: tokens ? withAlpha(tokens.SurfaceSecondary, tokens.Opacity25) : Color.CoreSlate25,\n };\n};\n\ninterface LoadingShimmerProps extends ComponentPropsWithoutRef<'span'> {\n height?: string;\n width?: string;\n variant?: 'primary' | 'secondary';\n}\n\ntype ShimmerContainerProps = {\n width?: string;\n height?: string;\n $variant: 'primary' | 'secondary';\n};\nconst ShimmerContainer = styled.span<ShimmerContainerProps>`\n position: relative;\n display: inline-block;\n background-color: ${({ theme, $variant }) => shimmerColors(theme, $variant).bar};\n width: ${({ width }) => width ?? '100px'};\n height: ${({ height }) => height ?? 'auto'};\n border-radius: ${BorderRadius.Md};\n overflow: hidden;\n`;\n\ntype ShimmerProps = {\n $variant: 'primary' | 'secondary';\n};\nconst Shimmer = styled(motion.span)<ShimmerProps>`\n position: absolute;\n width: 100%;\n height: 100%;\n background: ${({ theme, $variant }) =>\n `linear-gradient(90deg, transparent 0%, ${shimmerColors(theme, $variant).highlight} 50%, transparent 100%)`};\n filter: blur(4px);\n`;\n\n/**\n * Base class of all Loading Shimmer components.\n */\nexport function LoadingShimmer({\n width,\n height,\n variant = 'primary',\n ...props\n}: LoadingShimmerProps) {\n return (\n <ShimmerContainer\n width={width}\n height={height}\n $variant={variant}\n aria-live='polite'\n aria-busy='true'\n data-test='loading-shimmer'\n data-loading-indicator='true'\n {...props}\n >\n <Shimmer\n initial={{ x: '-100%', skew: -30 }}\n animate={{ x: '100%', skew: -30 }}\n $variant={variant}\n transition={{ repeat: Infinity, duration: 1, ease: 'easeOut' }}\n />\n </ShimmerContainer>\n );\n}\n\nexport interface LoadingShimmerHeadingProps extends LoadingShimmerProps {\n size?: HeadingSize;\n}\n\nexport const LoadingShimmerHeading = styled(LoadingShimmer)<LoadingShimmerHeadingProps>`\n height: ${({ theme, size = 'lg' }) => theme.text.heading[size].fontSize};\n`;\n\ninterface LoadingShimmerParagraphProps extends LoadingShimmerProps {\n size?: ParagraphSize;\n // eg. 200px\n width?: string;\n}\n\nexport const LoadingShimmerParagraph = styled(LoadingShimmer)<LoadingShimmerParagraphProps>`\n height: ${({ theme, size = 'md' }) => theme.text.paragraph[size].fontSize};\n`;\n\n// A \"maybe\" shimmer block that is shimmering if the `isLoading`\n// value is set to true and otherwise just displays its children\ninterface MaybeLoadingShimmerProps {\n isLoading: boolean;\n height?: string;\n width?: string;\n}\n\nexport const MaybeLoadingShimmer: FC<MaybeLoadingShimmerProps> = ({\n isLoading,\n children,\n height,\n width,\n}) => (isLoading ? <LoadingShimmer height={height} width={width} /> : <>{children}</>);\n"],"mappings":";;;;;;;AAeA,MAAM,uBAAuB;AAI7B,MAAM,iBAAiB,OAA2B,YAAqC;AACrF,KAAI,YAAY,YACd,QAAO;EACL,KAAK,cAAc,OAAO,oBAAoB,qBAAqB;EACnE,WAAW,cAAc,OAAO,oBAAoB,MAAM,YAAY;EACvE;CAGH,MAAM,SAAS,eAAe,MAAM;AAEpC,QAAO;EACL,KAAK,cAAc,OAAO,oBAAoB,MAAM,YAAY;EAChE,WAAW,SAAS,UAAU,OAAO,kBAAkB,OAAO,UAAU,GAAG,MAAM;EAClF;;AAcH,MAAM,mBAAmB,OAAO,IAA2B;;;uBAGpC,EAAE,OAAO,eAAe,cAAc,OAAO,SAAS,CAAC,IAAI;YACtE,EAAE,YAAY,SAAS,QAAQ;aAC9B,EAAE,aAAa,UAAU,OAAO;mBAC1B,aAAa,GAAG;;;AAOnC,MAAM,UAAU,OAAO,OAAO,KAAK;;;;iBAIlB,EAAE,OAAO,eACtB,0CAA0C,cAAc,OAAO,SAAS,CAAC,UAAU,yBAAyB;;;;;;AAOhH,SAAgB,eAAe,EAC7B,OACA,QACA,UAAU,WACV,GAAG,SACmB;AACtB,QACE,oBAAC,kBAAD;EACS;EACC;EACR,UAAU;EACV,aAAU;EACV,aAAU;EACV,aAAU;EACV,0BAAuB;EACvB,GAAI;YAEJ,oBAAC,SAAD;GACE,SAAS;IAAE,GAAG;IAAS,MAAM;IAAK;GAClC,SAAS;IAAE,GAAG;IAAQ,MAAM;IAAK;GACjC,UAAU;GACV,YAAY;IAAE,QAAQ;IAAU,UAAU;IAAG,MAAM;IAAW;GAC9D,CAAA;EACe,CAAA;;AAQvB,MAAa,wBAAwB,OAAO,eAAe;aAC9C,EAAE,OAAO,OAAO,WAAW,MAAM,KAAK,QAAQ,MAAM,SAAS;;AAS1E,MAAa,0BAA0B,OAAO,eAAe;aAChD,EAAE,OAAO,OAAO,WAAW,MAAM,KAAK,UAAU,MAAM,SAAS;;AAW5E,MAAa,uBAAqD,EAChE,WACA,UACA,QACA,YACK,YAAY,oBAAC,gBAAD;CAAwB;CAAe;CAAS,CAAA,GAAG,oBAAA,UAAA,EAAG,UAAY,CAAA"}
@@ -1,4 +1,4 @@
1
- import { i as ParagraphSize, n as HeadingSize } from "./text-Iw9DKpbZ.mjs";
1
+ import { i as ParagraphSize, n as HeadingSize } from "./text-B7hx6G99.mjs";
2
2
  import { ComponentPropsWithoutRef, FC } from "react";
3
3
  import * as _$styled_components0 from "styled-components";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { n as InputSizes } from "./input-DpHBIUpP.mjs";
2
- import { n as ListBoxItemProps } from "./ListBox-CdqRwBvA.mjs";
1
+ import { n as InputSizes } from "./input-DMPo8gRT.mjs";
2
+ import { n as ListBoxItemProps } from "./ListBox--IH6uofo.mjs";
3
3
  import { ReactNode } from "react";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
5
 
@@ -37,4 +37,4 @@ declare const LogicRow: ({
37
37
  }: LogicRowProps) => _$react_jsx_runtime0.JSX.Element;
38
38
  //#endregion
39
39
  export { LogicRowProps as n, LogicRow as t };
40
- //# sourceMappingURL=LogicRow-CwMAn1sh.d.mts.map
40
+ //# sourceMappingURL=LogicRow-C8Hdl8xB.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as LogicRowProps, t as LogicRow } from "./LogicRow-CwMAn1sh.mjs";
1
+ import { n as LogicRowProps, t as LogicRow } from "./LogicRow-C8Hdl8xB.mjs";
2
2
  export { LogicRowProps, LogicRow as default };
@@ -1,10 +1,10 @@
1
- import { a as InputProps } from "./Input-BQbcIiVj.mjs";
1
+ import { a as InputProps } from "./Input-CAsOWM0S.mjs";
2
2
  import * as _$react from "react";
3
3
  import { IMaskInputProps } from "react-imask/mixin";
4
4
 
5
5
  //#region components/MaskedInput/MaskedInput.d.ts
6
6
  type MaskedInputProps = Omit<IMaskInputProps<HTMLInputElement>, 'inputRef' | 'componentProps' | 'size' | 'ref'> & InputProps;
7
- declare const MaskedInput: _$react.ForwardRefExoticComponent<Omit<IMaskInputProps<HTMLInputElement>, "size" | "ref" | "inputRef" | "componentProps"> & InputProps & _$react.RefAttributes<HTMLInputElement>>;
7
+ declare const MaskedInput: _$react.ForwardRefExoticComponent<Omit<IMaskInputProps<HTMLInputElement>, "ref" | "size" | "inputRef" | "componentProps"> & InputProps & _$react.RefAttributes<HTMLInputElement>>;
8
8
  //#endregion
9
9
  export { MaskedInput, MaskedInput as default, MaskedInputProps };
10
10
  //# sourceMappingURL=MaskedInput.d.mts.map
@@ -1,4 +1,4 @@
1
- import { r as _default } from "./Card-Bp6L08H4.mjs";
1
+ import { r as _default } from "./Card-DMXDx1W7.mjs";
2
2
  import { Spacing } from "@persona/design-tokens";
3
3
  import { ComponentPropsWithRef, ComponentPropsWithoutRef, ComponentType, ElementType, FC, ReactNode, RefObject } from "react";
4
4
  import { DefaultTheme, StyledComponent, StyledComponentPropsWithRef } from "styled-components";
@@ -22,7 +22,7 @@ interface MenuItemProps<T extends ElementType = 'div'> {
22
22
  selected?: boolean;
23
23
  size?: 'sm' | 'md';
24
24
  }
25
- declare const ListItem: StyledComponent<"li", any, Pick<MenuItemProps<"div">, "size" | "variant" | "disabled" | "focused" | "selected">, never>;
25
+ declare const ListItem: StyledComponent<"li", any, Pick<MenuItemProps<"div">, "size" | "disabled" | "selected" | "variant" | "focused">, never>;
26
26
  declare const IconContainer: StyledComponent<"div", any, {
27
27
  suffix?: boolean;
28
28
  }, never>;
@@ -67,4 +67,4 @@ declare const Menu: {
67
67
  };
68
68
  //#endregion
69
69
  export { MenuDivider as a, MenuItem as c, MenuList as d, MenuProps as f, Menu as i, MenuItemProps as l, IconContainer as n, MenuHeading as o, ListItem as r, MenuHeadingProps as s, FloatingCard as t, MenuItemType as u };
70
- //# sourceMappingURL=Menu-CUN9bmc1.d.mts.map
70
+ //# sourceMappingURL=Menu-BSHJpKyL.d.mts.map
@@ -3,7 +3,7 @@ import { a as styled, r as css } from "./styledComponentsInterop-NxwFjeA4.mjs";
3
3
  import PDSProvider from "./lib/PDSProvider.mjs";
4
4
  import { semanticColor, semanticTokens } from "./lib/semanticColor.mjs";
5
5
  import { paragraphMixins } from "./mixins/text.mjs";
6
- import { t as Card_default } from "./Card-Dz6jqJuJ.mjs";
6
+ import { t as Card_default } from "./Card-BXNxWX5C.mjs";
7
7
  import { withAlpha } from "./lib/color.mjs";
8
8
  import { isDisabled, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
9
9
  import { Z_INDICES } from "./lib/zindex.mjs";
@@ -181,4 +181,4 @@ Menu.Item = MenuItem;
181
181
  //#endregion
182
182
  export { MenuDivider as a, MenuList as c, Menu as i, IconContainer as n, MenuHeading as o, ListItem as r, MenuItem as s, FloatingCard as t };
183
183
 
184
- //# sourceMappingURL=Menu-DjW2b3Wk.mjs.map
184
+ //# sourceMappingURL=Menu-CwKmfxKI.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu-DjW2b3Wk.mjs","names":["Card"],"sources":["../components/Menu/Menu.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport {\n type ComponentPropsWithoutRef,\n type ComponentPropsWithRef,\n type ComponentType,\n type ElementType,\n type FC,\n forwardRef,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport { DismissButton } from 'react-aria';\nimport styled, {\n css,\n type DefaultTheme,\n type StyledComponent,\n type StyledComponentPropsWithRef,\n} from 'styled-components';\n\nimport PDSProvider from '@persona/design-system/lib/PDSProvider';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport Card from 'design-system/components/Card';\nimport { withAlpha } from 'design-system/lib/color';\nimport { isDisabled, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { darkTheme, withPdsTheming } from 'design-system/theme';\nimport type { PersonaTheme } from 'design-system/theme';\nimport { FontWeight } from 'design-system/variables/text';\n\ntype MenuTheme = PersonaTheme & MaybeSemanticTheme;\n\nconst legacyDarkTheme = withPdsTheming(darkTheme, 'off');\n\nconst hoverForeground = (theme: MenuTheme, variant: MenuItemProps['variant']) =>\n variant === 'danger'\n ? semanticColor(theme, 'FgDanger2', Color.CoreRed900)\n : semanticColor(theme, 'FgPrimary', theme.color.text.primary);\n\nconst hoverSurface = (theme: MenuTheme, variant: MenuItemProps['variant']) => {\n const tokens = semanticTokens(theme);\n if (variant === 'danger') {\n return tokens\n ? withAlpha(tokens.FeedbackDanger1, tokens.Opacity25)\n : theme.color.variants.danger.highlightLight;\n }\n return tokens ? tokens.SurfaceHover : theme.color.background.secondary;\n};\n\nconst selectedSurface = (theme: MenuTheme) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25)\n : theme.color.background.highlight;\n};\n\nexport const FloatingCard: StyledComponent<\n ComponentType<StyledComponentPropsWithRef<typeof Card>>,\n DefaultTheme\n> = styled(Card)`\n box-shadow: 0px 0px 14px 2px rgba(0, 0, 0, 0.12);\n outline: none;\n z-index: ${Z_INDICES.tooltip};\n`;\n\nexport const MenuList = styled.div.attrs<{ padding?: Spacing; doNotSetRole?: boolean }>(\n ({ role, doNotSetRole = false }) => ({\n role: doNotSetRole ? undefined : (role ?? 'menu'),\n }),\n)<{ padding?: Spacing }>`\n list-style: none;\n margin: 0;\n padding: ${({ padding }) => padding || Spacing[2]};\n outline: none;\n`;\n\nexport interface MenuItemProps<T extends ElementType = 'div'> {\n children: ReactNode;\n prefixIcon?: ReactNode;\n suffixIcon?: ReactNode;\n disabled?: boolean;\n variant?: 'basic' | 'danger';\n as?: T;\n stretchLabel?: boolean;\n subtitle?: string;\n focused?: boolean;\n selected?: boolean;\n size?: 'sm' | 'md';\n}\n\nexport const ListItem = styled.li<\n Pick<MenuItemProps, 'variant' | 'disabled' | 'focused' | 'selected' | 'size'>\n>`\n ${({ size }) => (size === 'sm' ? paragraphMixins.sm : paragraphMixins.md)};\n display: flex;\n align-items: center;\n padding: ${({ size }) => (size === 'sm' ? `${Spacing[1]} ${Spacing[2]}` : `${Spacing[2]}`)};\n border-radius: 4px;\n list-style: none;\n text-decoration: none;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', theme.color.text.primary)};\n cursor: pointer;\n ${({ focused, selected, theme, variant }) => {\n if (!focused || selected) {\n return undefined;\n }\n const semantic = semanticTokens(theme) != null;\n return css`\n outline: none;\n color: ${semantic ? hoverForeground(theme, variant) : theme.color.text.primary};\n background-color: ${semantic ? hoverSurface(theme, variant) : theme.color.background.secondary};\n `;\n }}\n\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n ${({ selected, variant }) =>\n !selected &&\n css`\n outline: none;\n color: ${({ theme }) => hoverForeground(theme, variant)};\n background-color: ${({ theme }) => hoverSurface(theme, variant)};\n `}\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => semanticColor(theme, 'BorderFocus', Color.BorderFocus)};\n outline-offset: 1px;\n }\n\n ${({ selected, theme }) =>\n selected &&\n css`\n outline: none;\n color: ${semanticColor(theme, 'FgAccent', theme.color.text.brand)};\n background-color: ${selectedSurface(theme)};\n `}\n\n &${isDisabled} {\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n cursor: default;\n pointer-events: none;\n }\n\n /* Variant Styling */\n ${({ theme, variant }) =>\n variant === 'danger' &&\n css`\n color: ${semanticColor(theme, 'FgDanger1', theme.color.variants[variant].default)};\n\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n color: ${hoverForeground(theme, variant)};\n background-color: ${hoverSurface(theme, variant)};\n }\n\n &${isDisabled} {\n color: ${semanticColor(theme, 'FgDisabled', theme.color.variants[variant].disabled)};\n }\n `}\n`;\n\nexport const IconContainer = styled('div')<{ suffix?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-right: ${Spacing[2]};\n line-height: 1;\n\n ${({ suffix }) =>\n suffix &&\n css`\n margin-left: ${Spacing[2]};\n `}\n`;\n\nconst LabelContainer = styled('div')<{ stretchLabel: boolean }>`\n line-height: 16px;\n ${({ stretchLabel }) =>\n stretchLabel &&\n css`\n width: 100%;\n `}\n`;\n\n/**\n * https://stackoverflow.com/a/73795494\n */\nexport interface MenuItemType<T extends ElementType = 'div'> extends FC<\n MenuItemProps<T> & ComponentPropsWithRef<T>\n> {\n <T extends ElementType = 'div'>(\n props: MenuItemProps<T> & ComponentPropsWithoutRef<T>,\n ): ReturnType<FC<MenuItemProps<T> & ComponentPropsWithoutRef<T>>>;\n}\n\nexport const MenuItem: MenuItemType = forwardRef(function MenuItem(\n {\n children,\n disabled,\n variant,\n prefixIcon,\n suffixIcon,\n stretchLabel,\n selected,\n size,\n ...elemProps\n },\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <ListItem\n disabled={disabled}\n variant={variant}\n selected={selected}\n ref={ref}\n aria-disabled={disabled}\n // aria-current is the correct a11y attribute for role=\"menuitem\" (not aria-selected).\n aria-current={selected ? 'true' : undefined}\n role='menuitem'\n tabIndex={disabled ? -1 : 0}\n size={size}\n {...elemProps}\n >\n {prefixIcon && <IconContainer>{prefixIcon}</IconContainer>}\n <LabelContainer stretchLabel={!!stretchLabel}>{children}</LabelContainer>\n {suffixIcon && <IconContainer suffix>{suffixIcon}</IconContainer>}\n </ListItem>\n );\n});\n\nconst StyledMenuDivider = styled.hr`\n height: 0px;\n padding: 0px;\n font-size: 0;\n margin: ${Spacing[2]} -${Spacing[2]};\n border: none;\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n`;\n\nexport const MenuDivider = (props: ComponentPropsWithoutRef<'hr'>) => (\n <DropdownMenu.Separator asChild>\n <StyledMenuDivider {...props} />\n </DropdownMenu.Separator>\n);\n\nexport interface MenuHeadingProps {\n size?: 'sm' | 'md';\n}\n\nexport const MenuHeading = styled.li<MenuHeadingProps>`\n ${paragraphMixins.sm};\n text-transform: uppercase;\n padding: ${({ size }) => (size === 'sm' ? `${Spacing[1]} ${Spacing[2]}` : Spacing[2])};\n display: block;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n font-weight: ${FontWeight.Regular};\n letter-spacing: 0.1em;\n`;\n\nexport interface MenuProps<T extends ElementType = 'div'> {\n children?: ReactNode;\n className?: string;\n variant?: 'light' | 'dark';\n as?: T;\n doNotSetRole?: boolean;\n containerProps?: ComponentPropsWithRef<'div'>;\n listRef?: RefObject<T>;\n itemProps?:\n | ComponentPropsWithoutRef<'li'>\n | ((\n props: ComponentPropsWithoutRef<'li'>,\n index: number,\n ) => Partial<ComponentPropsWithRef<'li'>>);\n onClose?: VoidFunction;\n}\n\nexport const Menu = <T extends ElementType = 'div'>({\n children,\n variant,\n containerProps,\n itemProps,\n listRef,\n className,\n onClose,\n as,\n ...props\n}: MenuProps<T> & ComponentPropsWithoutRef<T>) => {\n const menu = (\n <FloatingCard {...containerProps} className={className}>\n <MenuList {...props} as={as as any} ref={listRef}>\n {children}\n <DismissButton onDismiss={onClose} />\n </MenuList>\n </FloatingCard>\n );\n\n if (variant === 'dark') {\n return <PDSProvider theme={legacyDarkTheme}>{menu}</PDSProvider>;\n }\n\n return menu;\n};\n\nMenu.Heading = MenuHeading;\nMenu.Divider = MenuDivider;\nMenu.Item = MenuItem;\n\nexport default Menu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Menu-CwKmfxKI.mjs","names":["Card"],"sources":["../components/Menu/Menu.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport {\n type ComponentPropsWithoutRef,\n type ComponentPropsWithRef,\n type ComponentType,\n type ElementType,\n type FC,\n forwardRef,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport { DismissButton } from 'react-aria';\nimport styled, {\n css,\n type DefaultTheme,\n type StyledComponent,\n type StyledComponentPropsWithRef,\n} from 'styled-components';\n\nimport PDSProvider from '@persona/design-system/lib/PDSProvider';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport Card from 'design-system/components/Card';\nimport { withAlpha } from 'design-system/lib/color';\nimport { isDisabled, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport {\n type MaybeSemanticTheme,\n semanticColor,\n semanticTokens,\n} from 'design-system/lib/semanticColor';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { darkTheme, withPdsTheming } from 'design-system/theme';\nimport type { PersonaTheme } from 'design-system/theme';\nimport { FontWeight } from 'design-system/variables/text';\n\ntype MenuTheme = PersonaTheme & MaybeSemanticTheme;\n\nconst legacyDarkTheme = withPdsTheming(darkTheme, 'off');\n\nconst hoverForeground = (theme: MenuTheme, variant: MenuItemProps['variant']) =>\n variant === 'danger'\n ? semanticColor(theme, 'FgDanger2', Color.CoreRed900)\n : semanticColor(theme, 'FgPrimary', theme.color.text.primary);\n\nconst hoverSurface = (theme: MenuTheme, variant: MenuItemProps['variant']) => {\n const tokens = semanticTokens(theme);\n if (variant === 'danger') {\n return tokens\n ? withAlpha(tokens.FeedbackDanger1, tokens.Opacity25)\n : theme.color.variants.danger.highlightLight;\n }\n return tokens ? tokens.SurfaceHover : theme.color.background.secondary;\n};\n\nconst selectedSurface = (theme: MenuTheme) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25)\n : theme.color.background.highlight;\n};\n\nexport const FloatingCard: StyledComponent<\n ComponentType<StyledComponentPropsWithRef<typeof Card>>,\n DefaultTheme\n> = styled(Card)`\n box-shadow: 0px 0px 14px 2px rgba(0, 0, 0, 0.12);\n outline: none;\n z-index: ${Z_INDICES.tooltip};\n`;\n\nexport const MenuList = styled.div.attrs<{ padding?: Spacing; doNotSetRole?: boolean }>(\n ({ role, doNotSetRole = false }) => ({\n role: doNotSetRole ? undefined : (role ?? 'menu'),\n }),\n)<{ padding?: Spacing }>`\n list-style: none;\n margin: 0;\n padding: ${({ padding }) => padding || Spacing[2]};\n outline: none;\n`;\n\nexport interface MenuItemProps<T extends ElementType = 'div'> {\n children: ReactNode;\n prefixIcon?: ReactNode;\n suffixIcon?: ReactNode;\n disabled?: boolean;\n variant?: 'basic' | 'danger';\n as?: T;\n stretchLabel?: boolean;\n subtitle?: string;\n focused?: boolean;\n selected?: boolean;\n size?: 'sm' | 'md';\n}\n\nexport const ListItem = styled.li<\n Pick<MenuItemProps, 'variant' | 'disabled' | 'focused' | 'selected' | 'size'>\n>`\n ${({ size }) => (size === 'sm' ? paragraphMixins.sm : paragraphMixins.md)};\n display: flex;\n align-items: center;\n padding: ${({ size }) => (size === 'sm' ? `${Spacing[1]} ${Spacing[2]}` : `${Spacing[2]}`)};\n border-radius: 4px;\n list-style: none;\n text-decoration: none;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', theme.color.text.primary)};\n cursor: pointer;\n ${({ focused, selected, theme, variant }) => {\n if (!focused || selected) {\n return undefined;\n }\n const semantic = semanticTokens(theme) != null;\n return css`\n outline: none;\n color: ${semantic ? hoverForeground(theme, variant) : theme.color.text.primary};\n background-color: ${semantic ? hoverSurface(theme, variant) : theme.color.background.secondary};\n `;\n }}\n\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n ${({ selected, variant }) =>\n !selected &&\n css`\n outline: none;\n color: ${({ theme }) => hoverForeground(theme, variant)};\n background-color: ${({ theme }) => hoverSurface(theme, variant)};\n `}\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => semanticColor(theme, 'BorderFocus', Color.BorderFocus)};\n outline-offset: 1px;\n }\n\n ${({ selected, theme }) =>\n selected &&\n css`\n outline: none;\n color: ${semanticColor(theme, 'FgAccent', theme.color.text.brand)};\n background-color: ${selectedSurface(theme)};\n `}\n\n &${isDisabled} {\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n cursor: default;\n pointer-events: none;\n }\n\n /* Variant Styling */\n ${({ theme, variant }) =>\n variant === 'danger' &&\n css`\n color: ${semanticColor(theme, 'FgDanger1', theme.color.variants[variant].default)};\n\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n color: ${hoverForeground(theme, variant)};\n background-color: ${hoverSurface(theme, variant)};\n }\n\n &${isDisabled} {\n color: ${semanticColor(theme, 'FgDisabled', theme.color.variants[variant].disabled)};\n }\n `}\n`;\n\nexport const IconContainer = styled('div')<{ suffix?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-right: ${Spacing[2]};\n line-height: 1;\n\n ${({ suffix }) =>\n suffix &&\n css`\n margin-left: ${Spacing[2]};\n `}\n`;\n\nconst LabelContainer = styled('div')<{ stretchLabel: boolean }>`\n line-height: 16px;\n ${({ stretchLabel }) =>\n stretchLabel &&\n css`\n width: 100%;\n `}\n`;\n\n/**\n * https://stackoverflow.com/a/73795494\n */\nexport interface MenuItemType<T extends ElementType = 'div'> extends FC<\n MenuItemProps<T> & ComponentPropsWithRef<T>\n> {\n <T extends ElementType = 'div'>(\n props: MenuItemProps<T> & ComponentPropsWithoutRef<T>,\n ): ReturnType<FC<MenuItemProps<T> & ComponentPropsWithoutRef<T>>>;\n}\n\nexport const MenuItem: MenuItemType = forwardRef(function MenuItem(\n {\n children,\n disabled,\n variant,\n prefixIcon,\n suffixIcon,\n stretchLabel,\n selected,\n size,\n ...elemProps\n },\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <ListItem\n disabled={disabled}\n variant={variant}\n selected={selected}\n ref={ref}\n aria-disabled={disabled}\n // aria-current is the correct a11y attribute for role=\"menuitem\" (not aria-selected).\n aria-current={selected ? 'true' : undefined}\n role='menuitem'\n tabIndex={disabled ? -1 : 0}\n size={size}\n {...elemProps}\n >\n {prefixIcon && <IconContainer>{prefixIcon}</IconContainer>}\n <LabelContainer stretchLabel={!!stretchLabel}>{children}</LabelContainer>\n {suffixIcon && <IconContainer suffix>{suffixIcon}</IconContainer>}\n </ListItem>\n );\n});\n\nconst StyledMenuDivider = styled.hr`\n height: 0px;\n padding: 0px;\n font-size: 0;\n margin: ${Spacing[2]} -${Spacing[2]};\n border: none;\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n`;\n\nexport const MenuDivider = (props: ComponentPropsWithoutRef<'hr'>) => (\n <DropdownMenu.Separator asChild>\n <StyledMenuDivider {...props} />\n </DropdownMenu.Separator>\n);\n\nexport interface MenuHeadingProps {\n size?: 'sm' | 'md';\n}\n\nexport const MenuHeading = styled.li<MenuHeadingProps>`\n ${paragraphMixins.sm};\n text-transform: uppercase;\n padding: ${({ size }) => (size === 'sm' ? `${Spacing[1]} ${Spacing[2]}` : Spacing[2])};\n display: block;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n font-weight: ${FontWeight.Regular};\n letter-spacing: 0.1em;\n`;\n\nexport interface MenuProps<T extends ElementType = 'div'> {\n children?: ReactNode;\n className?: string;\n variant?: 'light' | 'dark';\n as?: T;\n doNotSetRole?: boolean;\n containerProps?: ComponentPropsWithRef<'div'>;\n listRef?: RefObject<T>;\n itemProps?:\n | ComponentPropsWithoutRef<'li'>\n | ((\n props: ComponentPropsWithoutRef<'li'>,\n index: number,\n ) => Partial<ComponentPropsWithRef<'li'>>);\n onClose?: VoidFunction;\n}\n\nexport const Menu = <T extends ElementType = 'div'>({\n children,\n variant,\n containerProps,\n itemProps,\n listRef,\n className,\n onClose,\n as,\n ...props\n}: MenuProps<T> & ComponentPropsWithoutRef<T>) => {\n const menu = (\n <FloatingCard {...containerProps} className={className}>\n <MenuList {...props} as={as as any} ref={listRef}>\n {children}\n <DismissButton onDismiss={onClose} />\n </MenuList>\n </FloatingCard>\n );\n\n if (variant === 'dark') {\n return <PDSProvider theme={legacyDarkTheme}>{menu}</PDSProvider>;\n }\n\n return menu;\n};\n\nMenu.Heading = MenuHeading;\nMenu.Divider = MenuDivider;\nMenu.Item = MenuItem;\n\nexport default Menu;\n"],"mappings":"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"}
package/dist/Menu.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "./Menu-CUN9bmc1.mjs";
1
+ import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "./Menu-BSHJpKyL.mjs";
2
2
  export { FloatingCard, IconContainer, ListItem, Menu, Menu as default, MenuDivider, MenuHeading, MenuHeadingProps, MenuItem, MenuItemProps, MenuItemType, MenuList, MenuProps };
@@ -1,13 +1,13 @@
1
1
  import { a as styled } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { semanticColor, semanticOnly } from "./lib/semanticColor.mjs";
3
- import { t as Card_default } from "./Card-Dz6jqJuJ.mjs";
4
- import { n as Heading$1 } from "./Text-BdluS7Fy.mjs";
3
+ import { t as Card_default } from "./Card-BXNxWX5C.mjs";
4
+ import { n as Heading$1 } from "./Text-CSwFifQF.mjs";
5
5
  import useEmbeddedSurface, { useEmbeddedSurfaceGate, useEmbeddedSurfaceId } from "./lib/useEmbeddedSurface.mjs";
6
6
  import useModalInsetRight from "./lib/useModalInsetRight.mjs";
7
7
  import { semanticScrollbar } from "./mixins/scrollbar.mjs";
8
- import { n as Stack, t as HStack } from "./Stack-CEPzs4Pb.mjs";
9
- import { n as Button$1 } from "./IconButton-BHFCjvzs.mjs";
10
- import { i as TabBar, r as Tab } from "./TabBar-BSl5v5aa.mjs";
8
+ import { n as Stack, t as HStack } from "./Stack-BkC7FCdF.mjs";
9
+ import { n as Button$1 } from "./IconButton-Cqxfmrea.mjs";
10
+ import { i as TabBar, r as Tab } from "./TabBar-CmYqreN0.mjs";
11
11
  import { Color, Spacing } from "@persona/design-tokens";
12
12
  import { forwardRef, useContext, useEffect, useState } from "react";
13
13
  import { Button, Dialog, DialogTrigger, Heading, Modal, ModalOverlay, OverlayTriggerStateContext, Pressable } from "react-aria-components";
@@ -257,4 +257,4 @@ var Modal_default = Object.assign(Modal$1, { Title: ModalTitle });
257
257
  //#endregion
258
258
  export { Modal_default as i, ModalContent as n, ModalTrigger as r, ModalClose as t };
259
259
 
260
- //# sourceMappingURL=Modal-DHLPK65-.mjs.map
260
+ //# sourceMappingURL=Modal-BBIJVhv2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal-DHLPK65-.mjs","names":["AriaModal","Button","AriaButton","Heading","AriaHeading","Card","Modal"],"sources":["../components/Modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n Button as AriaButton,\n Dialog,\n DialogTrigger,\n Heading as AriaHeading,\n Modal as AriaModal,\n ModalOverlay,\n type ModalOverlayProps,\n OverlayTriggerStateContext,\n Pressable,\n} from 'react-aria-components';\nimport styled from 'styled-components';\n\nimport Button, { type ButtonProps } from '@persona/design-system/components/Button';\nimport Card from '@persona/design-system/components/Card';\nimport Stack, { HStack } from '@persona/design-system/components/Stack';\nimport TabBar, { Tab } from '@persona/design-system/components/TabBar';\nimport { Heading } from '@persona/design-system/components/Text';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\nimport useEmbeddedSurface, {\n useEmbeddedSurfaceGate,\n useEmbeddedSurfaceId,\n} from 'design-system/lib/useEmbeddedSurface';\nimport useModalInsetRight, {\n SIDEBAR_CLOSE_TRANSITION_MS,\n SIDEBAR_OPEN_TRANSITION_MS,\n} from 'design-system/lib/useModalInsetRight';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nconst StyledModalOverlay = styled(ModalOverlay)<{\n $hostPending: boolean;\n $animationDelayMs: number;\n $insetRight: string;\n $transitionMs: number;\n}>`\n @keyframes overlayShow {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n background-color: rgba(0, 0, 0, 0.5);\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: ${({ $insetRight }) => $insetRight};\n transition: right ${({ $transitionMs }) => $transitionMs}ms ease-out;\n animation: overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1);\n animation-delay: ${({ $animationDelayMs }) => $animationDelayMs}ms;\n animation-fill-mode: both;\n ${({ $hostPending }) =>\n $hostPending &&\n `\n animation-play-state: paused;\n `}\n @media (prefers-reduced-motion: reduce) {\n animation-duration: 0ms;\n animation-delay: 0ms;\n animation-play-state: running;\n }\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledModal = styled(AriaModal)`\n z-index: 10001;\n outline: none;\n width: fit-content;\n max-width: 100%;\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n`;\n\n/**\n * React Aria keeps the overlay mounted through the exit animation, so announcing the surface from\n * here — rather than from the persistent gate below — releases the host's backdrop exactly when the\n * modal stops being painted.\n */\nconst EmbeddedSurfaceModal = forwardRef<HTMLDivElement, { children: ReactNode; surfaceId: string }>(\n function EmbeddedSurfaceModal({ children, surfaceId }, ref) {\n useEmbeddedSurface(surfaceId);\n return <StyledModal ref={ref}>{children}</StyledModal>;\n },\n);\n\ntype EmbeddedSurfaceOverlayProps = ModalOverlayProps & {\n $insetRight: string;\n $transitionMs: number;\n surfaceId: string;\n};\n\nconst EmbeddedSurfaceOverlay = ({ surfaceId, ...props }: EmbeddedSurfaceOverlayProps) => {\n const state = useContext(OverlayTriggerStateContext);\n const isOpen = state?.isOpen ?? false;\n const { ready, animationDelayMs } = useEmbeddedSurfaceGate(surfaceId, isOpen);\n\n const { $insetRight, $transitionMs, ...overlayProps } = props;\n return (\n <StyledModalOverlay\n {...overlayProps}\n $insetRight={$insetRight}\n $transitionMs={$transitionMs}\n $animationDelayMs={animationDelayMs}\n $hostPending={isOpen && !ready}\n />\n );\n};\n\nconst ModalCloseButton = styled(Button)`\n display: inline-flex;\n padding: ${Spacing[2]};\n border-radius: ${Spacing[1]};\n width: fit-content;\n min-width: unset;\n`;\n\nconst ModalFooter = styled(HStack).attrs({\n justify: 'flex-end',\n align: 'center',\n spacing: Spacing[2],\n})`\n padding: ${Spacing[3]} ${Spacing[4]};\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst ModalHeaderTitle = styled.div`\n flex: 1;\n`;\n\nexport const ModalTrigger = DialogTrigger;\nexport const ModalContent = StyledModal;\n\nexport const ModalClose = (props: ButtonProps) => {\n return (\n <AriaButton slot='close' style={{ all: 'unset', display: 'contents' }}>\n <ModalCloseButton variant='text' width='icon' size='md' {...props}>\n <XIcon />\n </ModalCloseButton>\n </AriaButton>\n );\n};\n\nexport interface ModalTitleProps {\n children: ReactNode;\n className?: string;\n}\n\n/** Props passed to modal content render functions. */\nexport interface ModalRenderProps {\n /** Element that floating content should use as its portal container. */\n portalContainer: HTMLDivElement | null;\n}\n\ntype ModalRenderable = ReactNode | ((props: ModalRenderProps) => ReactNode);\n\nconst ModalTitle = ({ children, ...props }: ModalTitleProps) => {\n return (\n <Heading size='sm' color='primary' as={AriaHeading} slot='title' {...props}>\n {children}\n </Heading>\n );\n};\n\nconst ModalHeader = styled(HStack)<{ $hasTabs: boolean }>`\n border-bottom: ${({ $hasTabs, theme }) =>\n $hasTabs ? 'none' : `1px solid ${semanticColor(theme, 'BorderSubtle', Color.BorderDivider)}`};\n padding: ${({ $hasTabs }) =>\n $hasTabs\n ? `${Spacing[3]} ${Spacing[2]} ${Spacing[1]} ${Spacing[4]}`\n : `${Spacing[3]} ${Spacing[2]} ${Spacing[3]} ${Spacing[4]}`};\n`;\n\nconst ModalTabBar = styled(TabBar)`\n padding-left: ${Spacing[4]};\n`;\n\nconst StyledDialog = styled(Dialog)`\n outline: none;\n`;\n\nconst StyledCard = styled(Card)<{ $size?: 'auto' | 'md' | 'lg' | 'xl' | 'full' }>`\n position: relative;\n width: ${({ $size }) => {\n switch ($size) {\n case 'auto':\n return 'auto';\n case 'full':\n return 'calc(100vw - 160px)';\n default:\n return '90vw';\n }\n }};\n max-width: ${({ theme, $size }) => {\n switch ($size) {\n case 'auto':\n return 'auto';\n case 'full':\n return 'calc(100vw - 160px)';\n default:\n return theme.modal.width[$size];\n }\n }};\n /* TODO: Use breakpoints to make this responsive */\n max-height: ${({ $size }) => ($size === 'full' ? 'calc(100vh - 160px)' : '85vh')};\n display: flex;\n flex-direction: column;\n overflow: hidden;\n ${({ $size }) =>\n $size === 'full' &&\n `\n height: calc(100vh - 160px);\n `}\n margin-bottom: 0;\n`;\n\ninterface ModalCardProps extends ComponentPropsWithoutRef<typeof Dialog> {\n /**\n * Display X button to close popover\n */\n showCloseButton?: boolean;\n\n /**\n * Max width of the modal\n */\n size?: 'auto' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * Footer content\n */\n footer?: ReactNode;\n\n /**\n * Renders tabs within the modal.\n * Adds a tab bar and will render the contents of the selected tab in a tabpanel.\n * Overrides `children`.\n * Tab contents can be render functions that receive the modal portal container.\n */\n tabs?: TabView[];\n\n /**\n * Title of the modal\n */\n title?: ReactNode;\n\n /**\n * Children content\n */\n children?: ReactNode;\n\n /**\n * When true, removes horizontal and vertical padding from the body. Defaults to false.\n */\n noBodyPadding?: boolean;\n\n /**\n * Additional props for the Dialog element\n */\n className?: string;\n}\n\ninterface ModalCardInternalProps extends ModalCardProps {\n portalContainer: HTMLDivElement | null;\n}\n\nconst StyledModalCardBody = styled(Card.Body)<{\n $noPadding?: boolean;\n $hidden?: boolean;\n}>`\n overflow-y: auto;\n ${semanticScrollbar}\n flex: 1;\n min-height: 0;\n ${({ $noPadding }) =>\n $noPadding\n ? 'padding: 0;'\n : `\n padding-left: ${Spacing[4]};\n padding-right: ${Spacing[4]};\n `}\n ${({ $hidden }) => $hidden && 'display: none;'}\n`;\n\n/**\n * Card to be used in Modal contexts. Inherits props from react-aria-components Dialog.\n */\nconst ModalCard = forwardRef<HTMLDivElement, ModalCardInternalProps>(function ModalCard(\n {\n title,\n children,\n showCloseButton = true,\n size,\n footer,\n tabs,\n noBodyPadding = false,\n portalContainer,\n ...props\n },\n ref,\n) {\n const [selectedTabIdx, setSelectedTabIdx] = useState(0);\n const tabCount = tabs?.length ?? 0;\n\n useEffect(() => {\n setSelectedTabIdx(0);\n }, [tabCount]);\n\n const titleAndClose = (\n <ModalHeader justify='flex-start' align='center' spacing={Spacing[2]} $hasTabs={Boolean(tabs)}>\n <ModalHeaderTitle>{title ? <ModalTitle>{title}</ModalTitle> : null}</ModalHeaderTitle>\n {showCloseButton && <ModalClose aria-label='Close' />}\n </ModalHeader>\n );\n\n const modalHeader = tabs ? (\n <Stack>\n {titleAndClose}\n <ModalTabBar>\n {tabs.map((tab, idx) => (\n <Tab\n key={tab.name}\n selected={selectedTabIdx === idx}\n id={`pds-modal_tab-${idx}`}\n onClick={() => setSelectedTabIdx(idx)}\n aria-controls={`pds-modal_tab-panel-${idx}`}\n >\n {tab.name}\n </Tab>\n ))}\n </ModalTabBar>\n </Stack>\n ) : (\n titleAndClose\n );\n\n return (\n <StyledDialog {...props} ref={ref}>\n <StyledCard elevated $size={size}>\n {(showCloseButton || title) && modalHeader}\n {tabs ? (\n tabs.map((tab, idx) => (\n <StyledModalCardBody\n key={tab.name}\n $noPadding={noBodyPadding}\n $hidden={selectedTabIdx !== idx}\n role={tabs ? 'tabpanel' : undefined}\n id={`pds-modal_tab-panel-${tab.name}`}\n aria-labelledby={`pds-modal_tab-${tab.name}`}\n >\n {typeof tab.contents === 'function'\n ? tab.contents({ portalContainer })\n : tab.contents}\n </StyledModalCardBody>\n ))\n ) : (\n <StyledModalCardBody\n $noPadding={noBodyPadding}\n role={tabs ? 'tabpanel' : undefined}\n id={`pds-modal_tab-panel-${selectedTabIdx}`}\n aria-labelledby={`pds-modal_tab-${selectedTabIdx}`}\n >\n {children}\n </StyledModalCardBody>\n )}\n\n {footer && <ModalFooter>{footer}</ModalFooter>}\n </StyledCard>\n </StyledDialog>\n );\n});\n\ninterface TabView {\n name: string;\n contents: ModalRenderable;\n badge?: React.ReactElement;\n disabled?: boolean;\n 'data-tour-target'?: string;\n}\n\nexport interface ModalProps {\n /**\n * Title of the Card\n */\n title?: string;\n\n /**\n * Component to use as trigger. React Aria trigger props will be merged with this element.\n */\n trigger?: ComponentProps<typeof Pressable>['children'];\n\n /**\n * Props to apply to Modal.Card within\n */\n contentProps?: ModalCardProps;\n\n /**\n * Max width of the modal\n */\n size?: 'auto' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * Footer section intended for actions.\n * You can pass in Buttons directly and they will render in a HStack.\n */\n footer?: ReactNode;\n\n /**\n * Renders tabs within the modal.\n * Adds a tab bar and will render the contents of the selected tab in a tabpanel.\n * Overrides `children`.\n */\n tabs?: TabView[];\n\n /**\n * Children content\n */\n children?: ModalRenderable;\n\n /**\n * When true, removes horizontal and vertical padding from the body. Defaults to false.\n * Can also be set via contentProps.noBodyPadding.\n */\n noBodyPadding?: boolean;\n\n /**\n * Controls whether the modal is open (controlled)\n */\n open?: boolean;\n\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n\n /**\n * Handler called when open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Whether the modal can be dismissed by clicking outside or pressing escape\n */\n isDismissable?: boolean;\n\n /**\n * Whether pressing the escape key closes the modal\n */\n isKeyboardDismissDisabled?: boolean;\n}\n\nconst Modal = ({\n children,\n trigger,\n contentProps,\n noBodyPadding = false,\n size = 'md',\n title,\n footer,\n tabs,\n defaultOpen,\n onOpenChange,\n isDismissable = false,\n isKeyboardDismissDisabled = false,\n open,\n}: ModalProps) => {\n const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null);\n const surfaceId = useEmbeddedSurfaceId();\n const { insetRight: modalInsetRight, panelState } = useModalInsetRight();\n const transitionMs =\n panelState === 'opening'\n ? SIDEBAR_OPEN_TRANSITION_MS\n : panelState === 'closing'\n ? SIDEBAR_CLOSE_TRANSITION_MS\n : 0;\n\n const content = (\n <ModalCard\n size={size}\n title={title}\n footer={footer}\n tabs={tabs}\n noBodyPadding={noBodyPadding}\n {...contentProps}\n portalContainer={portalContainer}\n >\n {typeof children === 'function' ? children({ portalContainer }) : children}\n </ModalCard>\n );\n\n // Wrap trigger element to ensure it works with react-aria-components\n const wrappedTrigger = trigger ? <Pressable>{trigger}</Pressable> : null;\n\n return (\n <DialogTrigger isOpen={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {wrappedTrigger}\n <EmbeddedSurfaceOverlay\n surfaceId={surfaceId}\n $insetRight={modalInsetRight}\n $transitionMs={transitionMs}\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n shouldCloseOnInteractOutside={(element) => !element.closest('[data-react-aria-top-layer]')}\n >\n <EmbeddedSurfaceModal ref={setPortalContainer} surfaceId={surfaceId}>\n {content}\n </EmbeddedSurfaceModal>\n </EmbeddedSurfaceOverlay>\n </DialogTrigger>\n );\n};\n\nexport default Object.assign(Modal, {\n Title: ModalTitle,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Modal-BBIJVhv2.mjs","names":["AriaModal","Button","AriaButton","Heading","AriaHeading","Card","Modal"],"sources":["../components/Modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n Button as AriaButton,\n Dialog,\n DialogTrigger,\n Heading as AriaHeading,\n Modal as AriaModal,\n ModalOverlay,\n type ModalOverlayProps,\n OverlayTriggerStateContext,\n Pressable,\n} from 'react-aria-components';\nimport styled from 'styled-components';\n\nimport Button, { type ButtonProps } from '@persona/design-system/components/Button';\nimport Card from '@persona/design-system/components/Card';\nimport Stack, { HStack } from '@persona/design-system/components/Stack';\nimport TabBar, { Tab } from '@persona/design-system/components/TabBar';\nimport { Heading } from '@persona/design-system/components/Text';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\nimport useEmbeddedSurface, {\n useEmbeddedSurfaceGate,\n useEmbeddedSurfaceId,\n} from 'design-system/lib/useEmbeddedSurface';\nimport useModalInsetRight, {\n SIDEBAR_CLOSE_TRANSITION_MS,\n SIDEBAR_OPEN_TRANSITION_MS,\n} from 'design-system/lib/useModalInsetRight';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nconst StyledModalOverlay = styled(ModalOverlay)<{\n $hostPending: boolean;\n $animationDelayMs: number;\n $insetRight: string;\n $transitionMs: number;\n}>`\n @keyframes overlayShow {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n background-color: rgba(0, 0, 0, 0.5);\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: ${({ $insetRight }) => $insetRight};\n transition: right ${({ $transitionMs }) => $transitionMs}ms ease-out;\n animation: overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1);\n animation-delay: ${({ $animationDelayMs }) => $animationDelayMs}ms;\n animation-fill-mode: both;\n ${({ $hostPending }) =>\n $hostPending &&\n `\n animation-play-state: paused;\n `}\n @media (prefers-reduced-motion: reduce) {\n animation-duration: 0ms;\n animation-delay: 0ms;\n animation-play-state: running;\n }\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledModal = styled(AriaModal)`\n z-index: 10001;\n outline: none;\n width: fit-content;\n max-width: 100%;\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n`;\n\n/**\n * React Aria keeps the overlay mounted through the exit animation, so announcing the surface from\n * here — rather than from the persistent gate below — releases the host's backdrop exactly when the\n * modal stops being painted.\n */\nconst EmbeddedSurfaceModal = forwardRef<HTMLDivElement, { children: ReactNode; surfaceId: string }>(\n function EmbeddedSurfaceModal({ children, surfaceId }, ref) {\n useEmbeddedSurface(surfaceId);\n return <StyledModal ref={ref}>{children}</StyledModal>;\n },\n);\n\ntype EmbeddedSurfaceOverlayProps = ModalOverlayProps & {\n $insetRight: string;\n $transitionMs: number;\n surfaceId: string;\n};\n\nconst EmbeddedSurfaceOverlay = ({ surfaceId, ...props }: EmbeddedSurfaceOverlayProps) => {\n const state = useContext(OverlayTriggerStateContext);\n const isOpen = state?.isOpen ?? false;\n const { ready, animationDelayMs } = useEmbeddedSurfaceGate(surfaceId, isOpen);\n\n const { $insetRight, $transitionMs, ...overlayProps } = props;\n return (\n <StyledModalOverlay\n {...overlayProps}\n $insetRight={$insetRight}\n $transitionMs={$transitionMs}\n $animationDelayMs={animationDelayMs}\n $hostPending={isOpen && !ready}\n />\n );\n};\n\nconst ModalCloseButton = styled(Button)`\n display: inline-flex;\n padding: ${Spacing[2]};\n border-radius: ${Spacing[1]};\n width: fit-content;\n min-width: unset;\n`;\n\nconst ModalFooter = styled(HStack).attrs({\n justify: 'flex-end',\n align: 'center',\n spacing: Spacing[2],\n})`\n padding: ${Spacing[3]} ${Spacing[4]};\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst ModalHeaderTitle = styled.div`\n flex: 1;\n`;\n\nexport const ModalTrigger = DialogTrigger;\nexport const ModalContent = StyledModal;\n\nexport const ModalClose = (props: ButtonProps) => {\n return (\n <AriaButton slot='close' style={{ all: 'unset', display: 'contents' }}>\n <ModalCloseButton variant='text' width='icon' size='md' {...props}>\n <XIcon />\n </ModalCloseButton>\n </AriaButton>\n );\n};\n\nexport interface ModalTitleProps {\n children: ReactNode;\n className?: string;\n}\n\n/** Props passed to modal content render functions. */\nexport interface ModalRenderProps {\n /** Element that floating content should use as its portal container. */\n portalContainer: HTMLDivElement | null;\n}\n\ntype ModalRenderable = ReactNode | ((props: ModalRenderProps) => ReactNode);\n\nconst ModalTitle = ({ children, ...props }: ModalTitleProps) => {\n return (\n <Heading size='sm' color='primary' as={AriaHeading} slot='title' {...props}>\n {children}\n </Heading>\n );\n};\n\nconst ModalHeader = styled(HStack)<{ $hasTabs: boolean }>`\n border-bottom: ${({ $hasTabs, theme }) =>\n $hasTabs ? 'none' : `1px solid ${semanticColor(theme, 'BorderSubtle', Color.BorderDivider)}`};\n padding: ${({ $hasTabs }) =>\n $hasTabs\n ? `${Spacing[3]} ${Spacing[2]} ${Spacing[1]} ${Spacing[4]}`\n : `${Spacing[3]} ${Spacing[2]} ${Spacing[3]} ${Spacing[4]}`};\n`;\n\nconst ModalTabBar = styled(TabBar)`\n padding-left: ${Spacing[4]};\n`;\n\nconst StyledDialog = styled(Dialog)`\n outline: none;\n`;\n\nconst StyledCard = styled(Card)<{ $size?: 'auto' | 'md' | 'lg' | 'xl' | 'full' }>`\n position: relative;\n width: ${({ $size }) => {\n switch ($size) {\n case 'auto':\n return 'auto';\n case 'full':\n return 'calc(100vw - 160px)';\n default:\n return '90vw';\n }\n }};\n max-width: ${({ theme, $size }) => {\n switch ($size) {\n case 'auto':\n return 'auto';\n case 'full':\n return 'calc(100vw - 160px)';\n default:\n return theme.modal.width[$size];\n }\n }};\n /* TODO: Use breakpoints to make this responsive */\n max-height: ${({ $size }) => ($size === 'full' ? 'calc(100vh - 160px)' : '85vh')};\n display: flex;\n flex-direction: column;\n overflow: hidden;\n ${({ $size }) =>\n $size === 'full' &&\n `\n height: calc(100vh - 160px);\n `}\n margin-bottom: 0;\n`;\n\ninterface ModalCardProps extends ComponentPropsWithoutRef<typeof Dialog> {\n /**\n * Display X button to close popover\n */\n showCloseButton?: boolean;\n\n /**\n * Max width of the modal\n */\n size?: 'auto' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * Footer content\n */\n footer?: ReactNode;\n\n /**\n * Renders tabs within the modal.\n * Adds a tab bar and will render the contents of the selected tab in a tabpanel.\n * Overrides `children`.\n * Tab contents can be render functions that receive the modal portal container.\n */\n tabs?: TabView[];\n\n /**\n * Title of the modal\n */\n title?: ReactNode;\n\n /**\n * Children content\n */\n children?: ReactNode;\n\n /**\n * When true, removes horizontal and vertical padding from the body. Defaults to false.\n */\n noBodyPadding?: boolean;\n\n /**\n * Additional props for the Dialog element\n */\n className?: string;\n}\n\ninterface ModalCardInternalProps extends ModalCardProps {\n portalContainer: HTMLDivElement | null;\n}\n\nconst StyledModalCardBody = styled(Card.Body)<{\n $noPadding?: boolean;\n $hidden?: boolean;\n}>`\n overflow-y: auto;\n ${semanticScrollbar}\n flex: 1;\n min-height: 0;\n ${({ $noPadding }) =>\n $noPadding\n ? 'padding: 0;'\n : `\n padding-left: ${Spacing[4]};\n padding-right: ${Spacing[4]};\n `}\n ${({ $hidden }) => $hidden && 'display: none;'}\n`;\n\n/**\n * Card to be used in Modal contexts. Inherits props from react-aria-components Dialog.\n */\nconst ModalCard = forwardRef<HTMLDivElement, ModalCardInternalProps>(function ModalCard(\n {\n title,\n children,\n showCloseButton = true,\n size,\n footer,\n tabs,\n noBodyPadding = false,\n portalContainer,\n ...props\n },\n ref,\n) {\n const [selectedTabIdx, setSelectedTabIdx] = useState(0);\n const tabCount = tabs?.length ?? 0;\n\n useEffect(() => {\n setSelectedTabIdx(0);\n }, [tabCount]);\n\n const titleAndClose = (\n <ModalHeader justify='flex-start' align='center' spacing={Spacing[2]} $hasTabs={Boolean(tabs)}>\n <ModalHeaderTitle>{title ? <ModalTitle>{title}</ModalTitle> : null}</ModalHeaderTitle>\n {showCloseButton && <ModalClose aria-label='Close' />}\n </ModalHeader>\n );\n\n const modalHeader = tabs ? (\n <Stack>\n {titleAndClose}\n <ModalTabBar>\n {tabs.map((tab, idx) => (\n <Tab\n key={tab.name}\n selected={selectedTabIdx === idx}\n id={`pds-modal_tab-${idx}`}\n onClick={() => setSelectedTabIdx(idx)}\n aria-controls={`pds-modal_tab-panel-${idx}`}\n >\n {tab.name}\n </Tab>\n ))}\n </ModalTabBar>\n </Stack>\n ) : (\n titleAndClose\n );\n\n return (\n <StyledDialog {...props} ref={ref}>\n <StyledCard elevated $size={size}>\n {(showCloseButton || title) && modalHeader}\n {tabs ? (\n tabs.map((tab, idx) => (\n <StyledModalCardBody\n key={tab.name}\n $noPadding={noBodyPadding}\n $hidden={selectedTabIdx !== idx}\n role={tabs ? 'tabpanel' : undefined}\n id={`pds-modal_tab-panel-${tab.name}`}\n aria-labelledby={`pds-modal_tab-${tab.name}`}\n >\n {typeof tab.contents === 'function'\n ? tab.contents({ portalContainer })\n : tab.contents}\n </StyledModalCardBody>\n ))\n ) : (\n <StyledModalCardBody\n $noPadding={noBodyPadding}\n role={tabs ? 'tabpanel' : undefined}\n id={`pds-modal_tab-panel-${selectedTabIdx}`}\n aria-labelledby={`pds-modal_tab-${selectedTabIdx}`}\n >\n {children}\n </StyledModalCardBody>\n )}\n\n {footer && <ModalFooter>{footer}</ModalFooter>}\n </StyledCard>\n </StyledDialog>\n );\n});\n\ninterface TabView {\n name: string;\n contents: ModalRenderable;\n badge?: React.ReactElement;\n disabled?: boolean;\n 'data-tour-target'?: string;\n}\n\nexport interface ModalProps {\n /**\n * Title of the Card\n */\n title?: string;\n\n /**\n * Component to use as trigger. React Aria trigger props will be merged with this element.\n */\n trigger?: ComponentProps<typeof Pressable>['children'];\n\n /**\n * Props to apply to Modal.Card within\n */\n contentProps?: ModalCardProps;\n\n /**\n * Max width of the modal\n */\n size?: 'auto' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * Footer section intended for actions.\n * You can pass in Buttons directly and they will render in a HStack.\n */\n footer?: ReactNode;\n\n /**\n * Renders tabs within the modal.\n * Adds a tab bar and will render the contents of the selected tab in a tabpanel.\n * Overrides `children`.\n */\n tabs?: TabView[];\n\n /**\n * Children content\n */\n children?: ModalRenderable;\n\n /**\n * When true, removes horizontal and vertical padding from the body. Defaults to false.\n * Can also be set via contentProps.noBodyPadding.\n */\n noBodyPadding?: boolean;\n\n /**\n * Controls whether the modal is open (controlled)\n */\n open?: boolean;\n\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n\n /**\n * Handler called when open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Whether the modal can be dismissed by clicking outside or pressing escape\n */\n isDismissable?: boolean;\n\n /**\n * Whether pressing the escape key closes the modal\n */\n isKeyboardDismissDisabled?: boolean;\n}\n\nconst Modal = ({\n children,\n trigger,\n contentProps,\n noBodyPadding = false,\n size = 'md',\n title,\n footer,\n tabs,\n defaultOpen,\n onOpenChange,\n isDismissable = false,\n isKeyboardDismissDisabled = false,\n open,\n}: ModalProps) => {\n const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null);\n const surfaceId = useEmbeddedSurfaceId();\n const { insetRight: modalInsetRight, panelState } = useModalInsetRight();\n const transitionMs =\n panelState === 'opening'\n ? SIDEBAR_OPEN_TRANSITION_MS\n : panelState === 'closing'\n ? SIDEBAR_CLOSE_TRANSITION_MS\n : 0;\n\n const content = (\n <ModalCard\n size={size}\n title={title}\n footer={footer}\n tabs={tabs}\n noBodyPadding={noBodyPadding}\n {...contentProps}\n portalContainer={portalContainer}\n >\n {typeof children === 'function' ? children({ portalContainer }) : children}\n </ModalCard>\n );\n\n // Wrap trigger element to ensure it works with react-aria-components\n const wrappedTrigger = trigger ? <Pressable>{trigger}</Pressable> : null;\n\n return (\n <DialogTrigger isOpen={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {wrappedTrigger}\n <EmbeddedSurfaceOverlay\n surfaceId={surfaceId}\n $insetRight={modalInsetRight}\n $transitionMs={transitionMs}\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n shouldCloseOnInteractOutside={(element) => !element.closest('[data-react-aria-top-layer]')}\n >\n <EmbeddedSurfaceModal ref={setPortalContainer} surfaceId={surfaceId}>\n {content}\n </EmbeddedSurfaceModal>\n </EmbeddedSurfaceOverlay>\n </DialogTrigger>\n );\n};\n\nexport default Object.assign(Modal, {\n Title: ModalTitle,\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { r as ButtonProps } from "./Button-CnswHEJ2.mjs";
1
+ import { r as ButtonProps } from "./Button-DKUomFPj.mjs";
2
2
  import { ComponentProps, ComponentPropsWithoutRef, ReactNode } from "react";
3
3
  import * as _$styled_components0 from "styled-components";
4
4
  import { Dialog, DialogTrigger, Pressable } from "react-aria-components";
@@ -142,4 +142,4 @@ declare const _default: (({
142
142
  };
143
143
  //#endregion
144
144
  export { ModalTitleProps as a, ModalRenderProps as i, ModalContent as n, ModalTrigger as o, ModalProps as r, _default as s, ModalClose as t };
145
- //# sourceMappingURL=Modal-CGXJGrKg.d.mts.map
145
+ //# sourceMappingURL=Modal-CoUHxtgN.d.mts.map
package/dist/Modal.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as ModalTitleProps, i as ModalRenderProps, n as ModalContent, o as ModalTrigger, r as ModalProps, s as _default, t as ModalClose } from "./Modal-CGXJGrKg.mjs";
1
+ import { a as ModalTitleProps, i as ModalRenderProps, n as ModalContent, o as ModalTrigger, r as ModalProps, s as _default, t as ModalClose } from "./Modal-CoUHxtgN.mjs";
2
2
  export { ModalClose, ModalContent, ModalProps, ModalRenderProps, ModalTitleProps, ModalTrigger, _default as default };
@@ -1,7 +1,7 @@
1
1
  import { a as styled } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { semanticColor, semanticOnly } from "./lib/semanticColor.mjs";
3
- import { i as Paragraph, n as Heading } from "./Text-BdluS7Fy.mjs";
4
- import { t as Breadcrumbs } from "./Breadcrumbs-CNpM0aXm.mjs";
3
+ import { i as Paragraph, n as Heading } from "./Text-CSwFifQF.mjs";
4
+ import { t as Breadcrumbs } from "./Breadcrumbs-B8aXFPdV.mjs";
5
5
  import { Spacing } from "@persona/design-tokens";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region components/PageHeader/PageHeader.tsx
@@ -65,4 +65,4 @@ const PageHeader = ({ title, breadcrumbs, subtitle, level = "product", prepend,
65
65
  //#endregion
66
66
  export { PageHeaderContainer as n, PageHeader as t };
67
67
 
68
- //# sourceMappingURL=PageHeader-eI4RM_uL.mjs.map
68
+ //# sourceMappingURL=PageHeader-5GyfuGLe.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader-eI4RM_uL.mjs","names":[],"sources":["../components/PageHeader/PageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport Breadcrumbs, { type BreadcrumbsProps } from 'design-system/components/Breadcrumbs';\nimport { Heading, Paragraph } from 'design-system/components/Text';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\n\nexport const PageHeaderContainer = styled.header`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n padding: ${Spacing[3]} ${Spacing[5]};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n box-sizing: border-box;\n min-height: 56px; /* Standardize height for most PageHeaders */\n`;\n\nconst TitleContainer = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n h1 {\n margin: 0;\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n }\n p {\n margin: 0 0 0 ${Spacing[2]};\n ${semanticOnly((tokens) => `color: ${tokens.FgSecondary};`)}\n }\n`;\n\nconst LeftContainer = styled.div`\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n`;\n\nconst RightContainer = styled.div`\n display: flex;\n gap: ${Spacing[2]};\n margin-left: ${Spacing[3]};\n`;\n\ninterface PageHeaderCommonProps {\n level?: 'product' | 'detail';\n prepend?: ReactNode;\n append?: ReactNode;\n children?: ReactNode;\n}\n\n/** Exactly one heading source is required: either `title` or `breadcrumbs`. */\nexport type PageHeaderProps = PageHeaderCommonProps &\n (\n | { title: ReactNode; subtitle?: ReactNode; breadcrumbs?: never }\n | {\n title?: never;\n /**\n * The subtitle is sunset in the breadcrumbs variant (PX-1299); fold the value it\n * carried (e.g. an object ID) into the current crumb, with a copy action if useful.\n */\n subtitle?: never;\n /** Renders in place of `title`; the current crumb becomes the page `h1`, at `lg` size. */\n breadcrumbs: BreadcrumbsProps;\n }\n );\n\nconst PageHeader = ({\n title,\n breadcrumbs,\n subtitle,\n level = 'product',\n prepend,\n append,\n children,\n ...props\n}: PageHeaderProps) => (\n <PageHeaderContainer {...props}>\n <LeftContainer>\n {prepend}\n <TitleContainer>\n {breadcrumbs ? (\n <Breadcrumbs size='lg' {...breadcrumbs} />\n ) : (\n <>\n {level === 'product' && (\n <Heading as='h1' size='sm'>\n {title}\n </Heading>\n )}\n {level === 'detail' && (\n <Paragraph as='h1' size='lg' color='primary'>\n {title}\n </Paragraph>\n )}\n </>\n )}\n {subtitle && <Paragraph size='md'>{subtitle}</Paragraph>}\n </TitleContainer>\n {append}\n </LeftContainer>\n {children && <RightContainer>{children}</RightContainer>}\n </PageHeaderContainer>\n);\n\nexport default PageHeader;\n"],"mappings":";;;;;;;AAQA,MAAa,sBAAsB,OAAO,MAAM;;;;;aAKnC,QAAQ,GAAG,GAAG,QAAQ,GAAG;uBACf,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,MAAM,WAAW,QAAQ,CAAC;8BAC9E,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,QAAQ,CAAC;;;;AAK9G,MAAM,iBAAiB,OAAO,GAAG;;;;;;MAM3B,cAAc,WAAW,UAAU,OAAO,UAAU,GAAG,CAAC;;;oBAG1C,QAAQ,GAAG;MACzB,cAAc,WAAW,UAAU,OAAO,YAAY,GAAG,CAAC;;;AAIhE,MAAM,gBAAgB,OAAO,GAAG;;;SAGvB,QAAQ,GAAG;;AAGpB,MAAM,iBAAiB,OAAO,GAAG;;SAExB,QAAQ,GAAG;iBACH,QAAQ,GAAG;;AA0B5B,MAAM,cAAc,EAClB,OACA,aACA,UACA,QAAQ,WACR,SACA,QACA,UACA,GAAG,YAEH,qBAAC,qBAAD;CAAqB,GAAI;WAAzB,CACE,qBAAC,eAAD,EAAA,UAAA;EACG;EACD,qBAAC,gBAAD,EAAA,UAAA,CACG,cACC,oBAAC,aAAD;GAAa,MAAK;GAAK,GAAI;GAAe,CAAA,GAE1C,qBAAA,UAAA,EAAA,UAAA,CACG,UAAU,aACT,oBAAC,SAAD;GAAS,IAAG;GAAK,MAAK;aACnB;GACO,CAAA,EAEX,UAAU,YACT,oBAAC,WAAD;GAAW,IAAG;GAAK,MAAK;GAAK,OAAM;aAChC;GACS,CAAA,CAEb,EAAA,CAAA,EAEJ,YAAY,oBAAC,WAAD;GAAW,MAAK;aAAM;GAAqB,CAAA,CACzC,EAAA,CAAA;EAChB;EACa,EAAA,CAAA,EACf,YAAY,oBAAC,gBAAD,EAAiB,UAA0B,CAAA,CACpC"}
1
+ {"version":3,"file":"PageHeader-5GyfuGLe.mjs","names":[],"sources":["../components/PageHeader/PageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport Breadcrumbs, { type BreadcrumbsProps } from 'design-system/components/Breadcrumbs';\nimport { Heading, Paragraph } from 'design-system/components/Text';\nimport { semanticColor, semanticOnly } from 'design-system/lib/semanticColor';\n\nexport const PageHeaderContainer = styled.header`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n padding: ${Spacing[3]} ${Spacing[5]};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n box-sizing: border-box;\n min-height: 56px; /* Standardize height for most PageHeaders */\n`;\n\nconst TitleContainer = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n h1 {\n margin: 0;\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimary};`)}\n }\n p {\n margin: 0 0 0 ${Spacing[2]};\n ${semanticOnly((tokens) => `color: ${tokens.FgSecondary};`)}\n }\n`;\n\nconst LeftContainer = styled.div`\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n`;\n\nconst RightContainer = styled.div`\n display: flex;\n gap: ${Spacing[2]};\n margin-left: ${Spacing[3]};\n`;\n\ninterface PageHeaderCommonProps {\n level?: 'product' | 'detail';\n prepend?: ReactNode;\n append?: ReactNode;\n children?: ReactNode;\n}\n\n/** Exactly one heading source is required: either `title` or `breadcrumbs`. */\nexport type PageHeaderProps = PageHeaderCommonProps &\n (\n | { title: ReactNode; subtitle?: ReactNode; breadcrumbs?: never }\n | {\n title?: never;\n /**\n * The subtitle is sunset in the breadcrumbs variant (PX-1299); fold the value it\n * carried (e.g. an object ID) into the current crumb, with a copy action if useful.\n */\n subtitle?: never;\n /** Renders in place of `title`; the current crumb becomes the page `h1`, at `lg` size. */\n breadcrumbs: BreadcrumbsProps;\n }\n );\n\nconst PageHeader = ({\n title,\n breadcrumbs,\n subtitle,\n level = 'product',\n prepend,\n append,\n children,\n ...props\n}: PageHeaderProps) => (\n <PageHeaderContainer {...props}>\n <LeftContainer>\n {prepend}\n <TitleContainer>\n {breadcrumbs ? (\n <Breadcrumbs size='lg' {...breadcrumbs} />\n ) : (\n <>\n {level === 'product' && (\n <Heading as='h1' size='sm'>\n {title}\n </Heading>\n )}\n {level === 'detail' && (\n <Paragraph as='h1' size='lg' color='primary'>\n {title}\n </Paragraph>\n )}\n </>\n )}\n {subtitle && <Paragraph size='md'>{subtitle}</Paragraph>}\n </TitleContainer>\n {append}\n </LeftContainer>\n {children && <RightContainer>{children}</RightContainer>}\n </PageHeaderContainer>\n);\n\nexport default PageHeader;\n"],"mappings":";;;;;;;AAQA,MAAa,sBAAsB,OAAO,MAAM;;;;;aAKnC,QAAQ,GAAG,GAAG,QAAQ,GAAG;uBACf,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,MAAM,WAAW,QAAQ,CAAC;8BAC9E,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,QAAQ,CAAC;;;;AAK9G,MAAM,iBAAiB,OAAO,GAAG;;;;;;MAM3B,cAAc,WAAW,UAAU,OAAO,UAAU,GAAG,CAAC;;;oBAG1C,QAAQ,GAAG;MACzB,cAAc,WAAW,UAAU,OAAO,YAAY,GAAG,CAAC;;;AAIhE,MAAM,gBAAgB,OAAO,GAAG;;;SAGvB,QAAQ,GAAG;;AAGpB,MAAM,iBAAiB,OAAO,GAAG;;SAExB,QAAQ,GAAG;iBACH,QAAQ,GAAG;;AA0B5B,MAAM,cAAc,EAClB,OACA,aACA,UACA,QAAQ,WACR,SACA,QACA,UACA,GAAG,YAEH,qBAAC,qBAAD;CAAqB,GAAI;WAAzB,CACE,qBAAC,eAAD,EAAA,UAAA;EACG;EACD,qBAAC,gBAAD,EAAA,UAAA,CACG,cACC,oBAAC,aAAD;GAAa,MAAK;GAAK,GAAI;GAAe,CAAA,GAE1C,qBAAA,UAAA,EAAA,UAAA,CACG,UAAU,aACT,oBAAC,SAAD;GAAS,IAAG;GAAK,MAAK;aACnB;GACO,CAAA,EAEX,UAAU,YACT,oBAAC,WAAD;GAAW,IAAG;GAAK,MAAK;GAAK,OAAM;aAChC;GACS,CAAA,CAEb,EAAA,CAAA,EAEJ,YAAY,oBAAC,WAAD;GAAW,MAAK;aAAM;GAAqB,CAAA,CACzC,EAAA,CAAA;EAChB;EACa,EAAA,CAAA,EACf,YAAY,oBAAC,gBAAD,EAAiB,UAA0B,CAAA,CACpC"}
@@ -1,4 +1,4 @@
1
- import { r as BreadcrumbsProps } from "./Breadcrumbs-CxP7ktfM.mjs";
1
+ import { r as BreadcrumbsProps } from "./Breadcrumbs-BQ-Gj6UV.mjs";
2
2
  import { ReactNode } from "react";
3
3
  import * as _$styled_components0 from "styled-components";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
@@ -0,0 +1,132 @@
1
+ import { a as styled } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
+ import { n as Stack } from "./Stack-BkC7FCdF.mjs";
3
+ import { i as useGridBreakpoint, n as GRID_BREAKPOINTS, r as Grid, t as GridItem } from "./Grid-D0mlxk8_.mjs";
4
+ import { Spacing } from "@persona/design-tokens";
5
+ import { useLayoutEffect, useRef, useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ //#region patterns/PageLayout/PageLayout.tsx
8
+ const Backdrop = styled.div`
9
+ position: relative;
10
+ width: 100%;
11
+ padding: ${Spacing[7]} ${Spacing[5]};
12
+
13
+ display: flex;
14
+ flex-direction: column;
15
+ `;
16
+ const StyledContainer = styled("div")`
17
+ position: relative;
18
+ width: 100%;
19
+ padding: 0;
20
+
21
+ display: flex;
22
+ flex-direction: column;
23
+ align-items: center;
24
+ `;
25
+ const Container = ({ children, ...rest }) => {
26
+ return /* @__PURE__ */ jsx(StyledContainer, {
27
+ ...rest,
28
+ children
29
+ });
30
+ };
31
+ const Section = styled("div")`
32
+ width: 100%;
33
+ padding: ${Spacing[7]};
34
+ `;
35
+ //#endregion
36
+ //#region patterns/PageLayout/PageLayoutFrame.tsx
37
+ const topPadding = (condensed) => condensed ? Spacing[5] : Spacing[6];
38
+ const Root = styled.div`
39
+ width: 100%;
40
+ min-width: ${GRID_BREAKPOINTS.sm - 1}px;
41
+ padding-top: ${({ $condensed, $tabs }) => $tabs ? Spacing[5] : topPadding($condensed)};
42
+ padding-bottom: ${({ $condensed }) => topPadding($condensed)};
43
+ `;
44
+ const gridMode = (width) => width === "wide" ? "fluid" : "fixed";
45
+ const FullWidthBand = ({ mode, children }) => /* @__PURE__ */ jsx(Grid, {
46
+ mode,
47
+ children: /* @__PURE__ */ jsx(GridItem, {
48
+ span: 12,
49
+ children
50
+ })
51
+ });
52
+ const PageLayoutFrame = ({ width = "standard", tabs, pageNotice, children }) => {
53
+ const mode = gridMode(width);
54
+ const ref = useRef(null);
55
+ const [condensed, setCondensed] = useState(false);
56
+ useLayoutEffect(() => {
57
+ const node = ref.current;
58
+ if (!node) return;
59
+ const update = () => setCondensed(node.offsetWidth < GRID_BREAKPOINTS.md);
60
+ update();
61
+ const observer = new ResizeObserver(update);
62
+ observer.observe(node);
63
+ return () => observer.disconnect();
64
+ }, []);
65
+ return /* @__PURE__ */ jsx(Root, {
66
+ ref,
67
+ $condensed: condensed,
68
+ $tabs: Boolean(tabs),
69
+ children: /* @__PURE__ */ jsxs(Stack, {
70
+ spacing: Spacing[5],
71
+ children: [
72
+ tabs && /* @__PURE__ */ jsx(FullWidthBand, {
73
+ mode,
74
+ children: tabs
75
+ }),
76
+ pageNotice && /* @__PURE__ */ jsx(FullWidthBand, {
77
+ mode,
78
+ children: pageNotice
79
+ }),
80
+ /* @__PURE__ */ jsx(Grid, {
81
+ mode,
82
+ children
83
+ })
84
+ ]
85
+ })
86
+ });
87
+ };
88
+ //#endregion
89
+ //#region patterns/PageLayout/SingleColumnLayout.tsx
90
+ const SingleColumnLayout = ({ main, ...chrome }) => /* @__PURE__ */ jsx(PageLayoutFrame, {
91
+ ...chrome,
92
+ children: /* @__PURE__ */ jsx(GridItem, {
93
+ span: 12,
94
+ children: /* @__PURE__ */ jsx(Stack, {
95
+ spacing: Spacing[4],
96
+ children: main
97
+ })
98
+ })
99
+ });
100
+ //#endregion
101
+ //#region patterns/PageLayout/SplitColumnLayout.tsx
102
+ const SPLIT_COLUMN_SPANS = {
103
+ main: 8,
104
+ aside: 4
105
+ };
106
+ const Region = ({ children }) => /* @__PURE__ */ jsx(Stack, {
107
+ spacing: Spacing[4],
108
+ children
109
+ });
110
+ const SplitBody = ({ main, aside }) => {
111
+ const stacked = useGridBreakpoint() === "xs";
112
+ const mainSpan = stacked ? 12 : SPLIT_COLUMN_SPANS.main;
113
+ const asideSpan = stacked ? 12 : SPLIT_COLUMN_SPANS.aside;
114
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(GridItem, {
115
+ span: mainSpan,
116
+ children: /* @__PURE__ */ jsx(Region, { children: main })
117
+ }), /* @__PURE__ */ jsx(GridItem, {
118
+ span: asideSpan,
119
+ children: /* @__PURE__ */ jsx("aside", { children: /* @__PURE__ */ jsx(Region, { children: aside }) })
120
+ })] });
121
+ };
122
+ const SplitColumnLayout = ({ main, aside, ...chrome }) => /* @__PURE__ */ jsx(PageLayoutFrame, {
123
+ ...chrome,
124
+ children: /* @__PURE__ */ jsx(SplitBody, {
125
+ main,
126
+ aside
127
+ })
128
+ });
129
+ //#endregion
130
+ export { Section as a, Container as i, SingleColumnLayout as n, Backdrop as r, SplitColumnLayout as t };
131
+
132
+ //# sourceMappingURL=PageLayout-C7ZC7GBA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageLayout-C7ZC7GBA.mjs","names":[],"sources":["../patterns/PageLayout/PageLayout.tsx","../patterns/PageLayout/PageLayoutFrame.tsx","../patterns/PageLayout/SingleColumnLayout.tsx","../patterns/PageLayout/SplitColumnLayout.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\n\nexport const Backdrop = styled.div`\n position: relative;\n width: 100%;\n padding: ${Spacing[7]} ${Spacing[5]};\n\n display: flex;\n flex-direction: column;\n`;\n\nconst StyledContainer = styled('div')`\n position: relative;\n width: 100%;\n padding: 0;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const Container = ({\n children,\n ...rest\n}: { children: ReactNode } & ComponentPropsWithoutRef<'div'>) => {\n return <StyledContainer {...rest}>{children}</StyledContainer>;\n};\n\nexport const Section = styled('div')`\n width: 100%;\n padding: ${Spacing[7]};\n`;\n","import { type ReactNode, useLayoutEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport Grid, { GRID_BREAKPOINTS, GridItem } from 'design-system/components/Grid';\nimport { Stack } from 'design-system/components/Stack';\n\nexport type PageLayoutWidth = 'standard' | 'wide';\n\nexport interface PageLayoutChromeProps {\n /**\n * `standard` uses the fixed grid (centered, max 1408px). `wide` uses the fluid grid.\n *\n * @defaultValue 'standard'\n */\n width?: PageLayoutWidth;\n /** Tab group. Sits above the page notice and scrolls with the page. Omit to skip the region and its gap. */\n tabs?: ReactNode;\n /** Page notice under the tabs. Omit to skip the region and its gap. */\n pageNotice?: ReactNode;\n}\n\nconst topPadding = (condensed: boolean) => (condensed ? Spacing[5] : Spacing[6]);\n\nconst Root = styled.div<{ $condensed: boolean; $tabs: boolean }>`\n width: 100%;\n min-width: ${GRID_BREAKPOINTS.sm - 1}px;\n padding-top: ${({ $condensed, $tabs }) => ($tabs ? Spacing[5] : topPadding($condensed))};\n padding-bottom: ${({ $condensed }) => topPadding($condensed)};\n`;\n\nconst gridMode = (width: PageLayoutWidth): 'fixed' | 'fluid' =>\n width === 'wide' ? 'fluid' : 'fixed';\n\nconst FullWidthBand = ({ mode, children }: { mode: 'fixed' | 'fluid'; children: ReactNode }) => (\n <Grid mode={mode}>\n <GridItem span={12}>{children}</GridItem>\n </Grid>\n);\n\nexport const PageLayoutFrame = ({\n width = 'standard',\n tabs,\n pageNotice,\n children,\n}: PageLayoutChromeProps & { children: ReactNode }) => {\n const mode = gridMode(width);\n const ref = useRef<HTMLDivElement>(null);\n const [condensed, setCondensed] = useState(false);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) {\n return;\n }\n const update = () => setCondensed(node.offsetWidth < GRID_BREAKPOINTS.md);\n update();\n const observer = new ResizeObserver(update);\n observer.observe(node);\n return () => observer.disconnect();\n }, []);\n\n return (\n <Root ref={ref} $condensed={condensed} $tabs={Boolean(tabs)}>\n <Stack spacing={Spacing[5]}>\n {tabs && <FullWidthBand mode={mode}>{tabs}</FullWidthBand>}\n {pageNotice && <FullWidthBand mode={mode}>{pageNotice}</FullWidthBand>}\n <Grid mode={mode}>{children}</Grid>\n </Stack>\n </Root>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { GridItem } from 'design-system/components/Grid';\nimport { Stack } from 'design-system/components/Stack';\n\nimport { PageLayoutFrame, type PageLayoutChromeProps } from './PageLayoutFrame';\n\nexport interface SingleColumnLayoutProps extends PageLayoutChromeProps {\n /** Primary page content. Direct children stack vertically. */\n main: ReactNode;\n}\n\nexport const SingleColumnLayout = ({ main, ...chrome }: SingleColumnLayoutProps) => (\n <PageLayoutFrame {...chrome}>\n <GridItem span={12}>\n <Stack spacing={Spacing[4]}>{main}</Stack>\n </GridItem>\n </PageLayoutFrame>\n);\n","import type { ReactNode } from 'react';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { GridItem, type GridSpan, useGridBreakpoint } from 'design-system/components/Grid';\nimport { Stack } from 'design-system/components/Stack';\n\nimport { PageLayoutFrame, type PageLayoutChromeProps } from './PageLayoutFrame';\n\nconst SPLIT_COLUMN_SPANS = { main: 8, aside: 4 } as const satisfies Record<string, GridSpan>;\n\nexport interface SplitColumnLayoutProps extends PageLayoutChromeProps {\n /** Primary column. Direct children stack vertically and stay in this column. */\n main: ReactNode;\n /** Supporting column. Direct children stack vertically and stay in this column. */\n aside: ReactNode;\n}\n\nconst Region = ({ children }: { children: ReactNode }) => (\n <Stack spacing={Spacing[4]}>{children}</Stack>\n);\n\nconst SplitBody = ({ main, aside }: { main: ReactNode; aside: ReactNode }) => {\n const stacked = useGridBreakpoint() === 'xs';\n const mainSpan = stacked ? 12 : SPLIT_COLUMN_SPANS.main;\n const asideSpan = stacked ? 12 : SPLIT_COLUMN_SPANS.aside;\n\n return (\n <>\n <GridItem span={mainSpan}>\n <Region>{main}</Region>\n </GridItem>\n <GridItem span={asideSpan}>\n <aside>\n <Region>{aside}</Region>\n </aside>\n </GridItem>\n </>\n );\n};\n\nexport const SplitColumnLayout = ({ main, aside, ...chrome }: SplitColumnLayoutProps) => (\n <PageLayoutFrame {...chrome}>\n <SplitBody main={main} aside={aside} />\n </PageLayoutFrame>\n);\n"],"mappings":";;;;;;;AAKA,MAAa,WAAW,OAAO,GAAG;;;aAGrB,QAAQ,GAAG,GAAG,QAAQ,GAAG;;;;;AAMtC,MAAM,kBAAkB,OAAO,MAAM;;;;;;;;;AAUrC,MAAa,aAAa,EACxB,UACA,GAAG,WAC4D;AAC/D,QAAO,oBAAC,iBAAD;EAAiB,GAAI;EAAO;EAA2B,CAAA;;AAGhE,MAAa,UAAU,OAAO,MAAM;;aAEvB,QAAQ,GAAG;;;;ACXxB,MAAM,cAAc,cAAwB,YAAY,QAAQ,KAAK,QAAQ;AAE7E,MAAM,OAAO,OAAO,GAA4C;;eAEjD,iBAAiB,KAAK,EAAE;kBACrB,EAAE,YAAY,YAAa,QAAQ,QAAQ,KAAK,WAAW,WAAW,CAAE;qBACrE,EAAE,iBAAiB,WAAW,WAAW,CAAC;;AAG/D,MAAM,YAAY,UAChB,UAAU,SAAS,UAAU;AAE/B,MAAM,iBAAiB,EAAE,MAAM,eAC7B,oBAAC,MAAD;CAAY;WACV,oBAAC,UAAD;EAAU,MAAM;EAAK;EAAoB,CAAA;CACpC,CAAA;AAGT,MAAa,mBAAmB,EAC9B,QAAQ,YACR,MACA,YACA,eACqD;CACrD,MAAM,OAAO,SAAS,MAAM;CAC5B,MAAM,MAAM,OAAuB,KAAK;CACxC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,uBAAsB;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,CAAC,KACH;EAEF,MAAM,eAAe,aAAa,KAAK,cAAc,iBAAiB,GAAG;AACzE,UAAQ;EACR,MAAM,WAAW,IAAI,eAAe,OAAO;AAC3C,WAAS,QAAQ,KAAK;AACtB,eAAa,SAAS,YAAY;IACjC,EAAE,CAAC;AAEN,QACE,oBAAC,MAAD;EAAW;EAAK,YAAY;EAAW,OAAO,QAAQ,KAAK;YACzD,qBAAC,OAAD;GAAO,SAAS,QAAQ;aAAxB;IACG,QAAQ,oBAAC,eAAD;KAAqB;eAAO;KAAqB,CAAA;IACzD,cAAc,oBAAC,eAAD;KAAqB;eAAO;KAA2B,CAAA;IACtE,oBAAC,MAAD;KAAY;KAAO;KAAgB,CAAA;IAC7B;;EACH,CAAA;;;;ACxDX,MAAa,sBAAsB,EAAE,MAAM,GAAG,aAC5C,oBAAC,iBAAD;CAAiB,GAAI;WACnB,oBAAC,UAAD;EAAU,MAAM;YACd,oBAAC,OAAD;GAAO,SAAS,QAAQ;aAAK;GAAa,CAAA;EACjC,CAAA;CACK,CAAA;;;ACVpB,MAAM,qBAAqB;CAAE,MAAM;CAAG,OAAO;CAAG;AAShD,MAAM,UAAU,EAAE,eAChB,oBAAC,OAAD;CAAO,SAAS,QAAQ;CAAK;CAAiB,CAAA;AAGhD,MAAM,aAAa,EAAE,MAAM,YAAmD;CAC5E,MAAM,UAAU,mBAAmB,KAAK;CACxC,MAAM,WAAW,UAAU,KAAK,mBAAmB;CACnD,MAAM,YAAY,UAAU,KAAK,mBAAmB;AAEpD,QACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,UAAD;EAAU,MAAM;YACd,oBAAC,QAAD,EAAA,UAAS,MAAc,CAAA;EACd,CAAA,EACX,oBAAC,UAAD;EAAU,MAAM;YACd,oBAAC,SAAD,EAAA,UACE,oBAAC,QAAD,EAAA,UAAS,OAAe,CAAA,EAClB,CAAA;EACC,CAAA,CACV,EAAA,CAAA;;AAIP,MAAa,qBAAqB,EAAE,MAAM,OAAO,GAAG,aAClD,oBAAC,iBAAD;CAAiB,GAAI;WACnB,oBAAC,WAAD;EAAiB;EAAa;EAAS,CAAA;CACvB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ import * as _$styled_components0 from "styled-components";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region patterns/PageLayout/PageLayout.d.ts
6
+ declare const Backdrop: _$styled_components0.StyledComponent<"div", any, {}, never>;
7
+ declare const Container: ({
8
+ children,
9
+ ...rest
10
+ }: {
11
+ children: ReactNode;
12
+ } & ComponentPropsWithoutRef<"div">) => _$react_jsx_runtime0.JSX.Element;
13
+ declare const Section: _$styled_components0.StyledComponent<"div", any, {}, never>;
14
+ //#endregion
15
+ export { Container as n, Section as r, Backdrop as t };
16
+ //# sourceMappingURL=PageLayout-C7hDmoy_.d.mts.map
@@ -1,16 +1,2 @@
1
- import { ComponentPropsWithoutRef, ReactNode } from "react";
2
- import * as _$styled_components0 from "styled-components";
3
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
-
5
- //#region patterns/PageLayout/PageLayout.d.ts
6
- declare const Backdrop: _$styled_components0.StyledComponent<"div", any, {}, never>;
7
- declare const Container: ({
8
- children,
9
- ...rest
10
- }: {
11
- children: ReactNode;
12
- } & ComponentPropsWithoutRef<"div">) => _$react_jsx_runtime0.JSX.Element;
13
- declare const Section: _$styled_components0.StyledComponent<"div", any, {}, never>;
14
- //#endregion
15
- export { Backdrop, Container, Section };
16
- //# sourceMappingURL=PageLayout.d.mts.map
1
+ import { n as Container, r as Section, t as Backdrop } from "./PageLayout-C7hDmoy_.mjs";
2
+ export { Backdrop, Container, Section };