@persona/design-system 0.5.1 → 0.7.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 (484) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{Action-C2FTJhnQ.d.mts → Action-C7INft7X.d.mts} +3 -3
  3. package/dist/Action.d.mts +1 -1
  4. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  5. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  6. package/dist/ArrayValueControl.d.mts +1 -1
  7. package/dist/Attribute.d.mts +3 -3
  8. package/dist/{Badge-BtNIvtDZ.mjs → Badge-BD0Ut46g.mjs} +2 -2
  9. package/dist/{Badge-BtNIvtDZ.mjs.map → Badge-BD0Ut46g.mjs.map} +1 -1
  10. package/dist/BooleanValueControl.d.mts +1 -1
  11. package/dist/{Breadcrumb-BlAhp45l.d.mts → Breadcrumb-DtW1R9xW.d.mts} +2 -2
  12. package/dist/Breadcrumb.d.mts +1 -1
  13. package/dist/{Breadcrumbs-DdZ14ZFw.d.mts → Breadcrumbs-B6JyoS8n.d.mts} +2 -2
  14. package/dist/{Breadcrumbs-ClKHNIr-.mjs → Breadcrumbs-CCmf8oZ4.mjs} +9 -9
  15. package/dist/Breadcrumbs-CCmf8oZ4.mjs.map +1 -0
  16. package/dist/Breadcrumbs.d.mts +1 -1
  17. package/dist/{Button-CTgyA3gc.d.mts → Button-HodDf_bB.d.mts} +18 -9
  18. package/dist/Button.d.mts +1 -1
  19. package/dist/{Calendar-_gM6U5ET.d.mts → Calendar-DrdTvzAa.d.mts} +1 -1
  20. package/dist/Calendar.d.mts +1 -1
  21. package/dist/CalendarBase.d.mts +1 -1
  22. package/dist/{Card-Dorym91P.d.mts → Card-CpDwATnX.d.mts} +3 -3
  23. package/dist/{Card-vQIPtdXi.mjs → Card-Dz6jqJuJ.mjs} +4 -4
  24. package/dist/{Card-vQIPtdXi.mjs.map → Card-Dz6jqJuJ.mjs.map} +1 -1
  25. package/dist/Card.d.mts +1 -1
  26. package/dist/Card2.d.mts +2 -2
  27. package/dist/{CardV2-CFTjYWoO.mjs → CardV2-Y_kRfd-R.mjs} +9 -9
  28. package/dist/{CardV2-CFTjYWoO.mjs.map → CardV2-Y_kRfd-R.mjs.map} +1 -1
  29. package/dist/{Checkbox-DRJXDs2T.d.mts → Checkbox-C-hMfItK.d.mts} +1 -1
  30. package/dist/{Checkbox-CyeitZ5q.mjs → Checkbox-DBAXDIQf.mjs} +4 -4
  31. package/dist/{Checkbox-CyeitZ5q.mjs.map → Checkbox-DBAXDIQf.mjs.map} +1 -1
  32. package/dist/Checkbox.d.mts +1 -1
  33. package/dist/CheckboxGroupField.d.mts +1 -1
  34. package/dist/ChoicesValueControl.d.mts +1 -1
  35. package/dist/{Combobox-Ddas5FN-.mjs → Combobox-CNdpK8VG.mjs} +10 -10
  36. package/dist/{Combobox-Ddas5FN-.mjs.map → Combobox-CNdpK8VG.mjs.map} +1 -1
  37. package/dist/{Combobox-DX4DLe1b.d.mts → Combobox-CPE-IV79.d.mts} +3 -3
  38. package/dist/Combobox.d.mts +2 -2
  39. package/dist/{ComboboxBase-Ds_i3K2m.d.mts → ComboboxBase-B3Es1y9g.d.mts} +5 -5
  40. package/dist/ComboboxBase.d.mts +1 -1
  41. package/dist/{ComboboxMultiSelect-S6oFJcOS.d.mts → ComboboxMultiSelect-4sRA7oL0.d.mts} +2 -2
  42. package/dist/ComboboxMultiSelect.d.mts +1 -1
  43. package/dist/{ComboboxSingleSelect-DFzCwW1Y.d.mts → ComboboxSingleSelect-DVPznL7L.d.mts} +4 -4
  44. package/dist/ComboboxSingleSelect.d.mts +1 -1
  45. package/dist/{CompactBar-DEqItiZr.d.mts → CompactBar-DhHh7Roq.d.mts} +3 -3
  46. package/dist/CompactBar.d.mts +1 -1
  47. package/dist/{ConfigFormGroup-DcsM-u8o.mjs → ConfigFormGroup-4lUy7CZH.mjs} +2 -2
  48. package/dist/{ConfigFormGroup-DcsM-u8o.mjs.map → ConfigFormGroup-4lUy7CZH.mjs.map} +1 -1
  49. package/dist/{ControlBar-BVG5Pbvh.d.mts → ControlBar-C8kagIck.d.mts} +2 -2
  50. package/dist/ControlBar.d.mts +1 -1
  51. package/dist/DataTable.d.mts +4 -4
  52. package/dist/{DateField-CBCo8_d3.d.mts → DateField-2aigfD4u.d.mts} +2 -2
  53. package/dist/DateField.d.mts +1 -1
  54. package/dist/{DatePicker-DTT-mJ8r.mjs → DatePicker-CSd20-CW.mjs} +8 -8
  55. package/dist/{DatePicker-DTT-mJ8r.mjs.map → DatePicker-CSd20-CW.mjs.map} +1 -1
  56. package/dist/{DatePicker-BZ4_I4Db.d.mts → DatePicker-DC_RKjdM.d.mts} +2 -2
  57. package/dist/DatePicker.d.mts +1 -1
  58. package/dist/{DateRangePicker-BMKJquPT.d.mts → DateRangePicker-ByD6IsLB.d.mts} +3 -3
  59. package/dist/DateRangePicker.d.mts +1 -1
  60. package/dist/DateRangeValueControl.d.mts +2 -2
  61. package/dist/DateValueControl.d.mts +1 -1
  62. package/dist/{DropdownButton-DV5if_uG.mjs → DropdownButton-gmGRrD1z.mjs} +3 -3
  63. package/dist/{DropdownButton-DV5if_uG.mjs.map → DropdownButton-gmGRrD1z.mjs.map} +1 -1
  64. package/dist/DropdownButton.d.mts +2 -2
  65. package/dist/{DropdownMenu-DovtBJBs.mjs → DropdownMenu-I5WDO-q5.mjs} +2 -2
  66. package/dist/{DropdownMenu-DovtBJBs.mjs.map → DropdownMenu-I5WDO-q5.mjs.map} +1 -1
  67. package/dist/{DropdownMenu-CbhEzWy1.d.mts → DropdownMenu-eP6v6XE4.d.mts} +2 -2
  68. package/dist/DropdownMenu.d.mts +1 -1
  69. package/dist/{ErrorProps-7eWoxSes.d.mts → ErrorProps-Dgu98PkH.d.mts} +1 -1
  70. package/dist/ErrorProps.d.mts +1 -1
  71. package/dist/{FieldRegistry-BslyuPZw.d.mts → FieldRegistry-BtdqMYUD.d.mts} +2 -2
  72. package/dist/FieldRegistry.d.mts +1 -1
  73. package/dist/{FilterBar-DjZE4PoB.d.mts → FilterBar-CAnqGXgE.d.mts} +4 -4
  74. package/dist/FilterBar.d.mts +1 -1
  75. package/dist/FilterPickerMenu.d.mts +2 -2
  76. package/dist/FilterPill.d.mts +1 -1
  77. package/dist/FilterPopover.d.mts +1 -1
  78. package/dist/FloatValueControl.d.mts +1 -1
  79. package/dist/{FormControl-BvRzRknE.mjs → FormControl-CButLg9b.mjs} +4 -4
  80. package/dist/{FormControl-BvRzRknE.mjs.map → FormControl-CButLg9b.mjs.map} +1 -1
  81. package/dist/{FormControl-gpLZZpNs.d.mts → FormControl-CJfYdgZF.d.mts} +2 -2
  82. package/dist/FormControl.d.mts +1 -1
  83. package/dist/FormControlLabel.d.mts +1 -1
  84. package/dist/{FormField-BDJ6zNE6.mjs → FormField-BHUeWCsa.mjs} +16 -16
  85. package/dist/{FormField-BDJ6zNE6.mjs.map → FormField-BHUeWCsa.mjs.map} +1 -1
  86. package/dist/{FormField-CZXKvCGt.d.mts → FormField-CK8o1sMB.d.mts} +2 -2
  87. package/dist/FormField.d.mts +1 -1
  88. package/dist/{Header-1laYnwRP.d.mts → Header-ZnHGm8fs.d.mts} +1 -1
  89. package/dist/Header.d.mts +1 -1
  90. package/dist/{HelperTooltip-BPJS3EwC.d.mts → HelperTooltip-CQpPO16Q.d.mts} +2 -2
  91. package/dist/HelperTooltip.d.mts +1 -1
  92. package/dist/{HoverCopyableField-WP6DPjy1.mjs → HoverCopyableField-B89NIwlE.mjs} +6 -6
  93. package/dist/{HoverCopyableField-WP6DPjy1.mjs.map → HoverCopyableField-B89NIwlE.mjs.map} +1 -1
  94. package/dist/{IconButton-CnJNIJVQ.mjs → IconButton-CqTPMhjV.mjs} +12 -5
  95. package/dist/IconButton-CqTPMhjV.mjs.map +1 -0
  96. package/dist/{IconButton-PnrnqQ1s.d.mts → IconButton-zu-VNp1h.d.mts} +2 -2
  97. package/dist/IconButton.d.mts +1 -1
  98. package/dist/ImageTile.d.mts +1 -1
  99. package/dist/InlineCombobox.d.mts +1 -1
  100. package/dist/InlineInput.d.mts +1 -1
  101. package/dist/{Input-DbfwNzS_.mjs → Input-C-TwCer2.mjs} +4 -4
  102. package/dist/{Input-DbfwNzS_.mjs.map → Input-C-TwCer2.mjs.map} +1 -1
  103. package/dist/{Input-Diztxhle.d.mts → Input-Ce8FvSYf.d.mts} +3 -3
  104. package/dist/Input.d.mts +1 -1
  105. package/dist/{InputProps-BILq1X-n.d.mts → InputProps-B1Xod4wm.d.mts} +2 -2
  106. package/dist/InputProps.d.mts +1 -1
  107. package/dist/IntegerValueControl.d.mts +1 -1
  108. package/dist/Link.d.mts +2 -2
  109. package/dist/{ListBox-CXh9Jfb-.mjs → ListBox-BHE4DO2l.mjs} +9 -9
  110. package/dist/{ListBox-CXh9Jfb-.mjs.map → ListBox-BHE4DO2l.mjs.map} +1 -1
  111. package/dist/{ListBox-P1eTecdo.d.mts → ListBox-CCBWdAUR.d.mts} +3 -3
  112. package/dist/ListBox.d.mts +1 -1
  113. package/dist/ListBoxField.d.mts +2 -2
  114. package/dist/{LoadingShimmer-DeVCDCjT.mjs → LoadingShimmer-JyGh7M7V.mjs} +1 -1
  115. package/dist/{LoadingShimmer-DeVCDCjT.mjs.map → LoadingShimmer-JyGh7M7V.mjs.map} +1 -1
  116. package/dist/LoadingShimmer.d.mts +1 -1
  117. package/dist/{LogicRow-DtZYOzQ8.d.mts → LogicRow-DmI8NKrI.d.mts} +3 -3
  118. package/dist/LogicRow.d.mts +1 -1
  119. package/dist/MaskedInput.d.mts +2 -2
  120. package/dist/{Menu-_loh8pe3.d.mts → Menu-C8RxFGOG.d.mts} +3 -3
  121. package/dist/{Menu-CAGTCBqj.mjs → Menu-xENvm-Oa.mjs} +2 -2
  122. package/dist/{Menu-CAGTCBqj.mjs.map → Menu-xENvm-Oa.mjs.map} +1 -1
  123. package/dist/Menu.d.mts +1 -1
  124. package/dist/Modal.d.mts +1 -1
  125. package/dist/{PageHeader-wpvRRTaa.mjs → PageHeader-7GBfUjU_.mjs} +3 -3
  126. package/dist/{PageHeader-wpvRRTaa.mjs.map → PageHeader-7GBfUjU_.mjs.map} +1 -1
  127. package/dist/PageHeader.d.mts +1 -1
  128. package/dist/{PageSelector-CIa3Zts9.d.mts → PageSelector-BMz2Q4P6.d.mts} +3 -3
  129. package/dist/PageSelector.d.mts +1 -1
  130. package/dist/{Pagination-wjr3W3xf.mjs → Pagination-BxNqU2yh.mjs} +5 -5
  131. package/dist/{Pagination-wjr3W3xf.mjs.map → Pagination-BxNqU2yh.mjs.map} +1 -1
  132. package/dist/{Pagination-C2eZEM7K.d.mts → Pagination-ne9hnVoe.d.mts} +2 -2
  133. package/dist/Pagination.d.mts +1 -1
  134. package/dist/{Pii-Bm-qkweh.mjs → Pii-B29k0Omf.mjs} +2 -2
  135. package/dist/{Pii-Bm-qkweh.mjs.map → Pii-B29k0Omf.mjs.map} +1 -1
  136. package/dist/{PillShell-D6dN9sWk.d.mts → PillShell-D9iQyM-8.d.mts} +2 -2
  137. package/dist/PillShell.d.mts +1 -1
  138. package/dist/{Popover-DUyzmq3e.mjs → Popover-Dn3xmzSK.mjs} +3 -3
  139. package/dist/{Popover-DUyzmq3e.mjs.map → Popover-Dn3xmzSK.mjs.map} +1 -1
  140. package/dist/{PseudoClassProps-DnlHhW5u.d.mts → PseudoClassProps-CdRF3QNn.d.mts} +1 -1
  141. package/dist/PseudoClassProps.d.mts +1 -1
  142. package/dist/{Radio-CkugnL91.mjs → Radio-BRPoGITE.mjs} +2 -2
  143. package/dist/{Radio-CkugnL91.mjs.map → Radio-BRPoGITE.mjs.map} +1 -1
  144. package/dist/{RadioGroup-8dI8gljw.mjs → RadioGroup-CahrWsXi.mjs} +2 -2
  145. package/dist/{RadioGroup-8dI8gljw.mjs.map → RadioGroup-CahrWsXi.mjs.map} +1 -1
  146. package/dist/{RadioGroup-Dg_gydUp.d.mts → RadioGroup-CxL6LW4q.d.mts} +1 -1
  147. package/dist/RadioGroup.d.mts +1 -1
  148. package/dist/RangeCalendar-B7TwRJbg.d.mts +40 -0
  149. package/dist/RangeCalendar.d.mts +2 -40
  150. package/dist/RangeCalendarPresets.d.mts +1 -1
  151. package/dist/RouterContext-B7N12wkK.d.mts +11 -0
  152. package/dist/RouterContext-CsPnkNdI.mjs +26 -0
  153. package/dist/RouterContext-CsPnkNdI.mjs.map +1 -0
  154. package/dist/RouterContext.d.mts +2 -0
  155. package/dist/RouterLink-Bq36EGjc.d.mts +8 -0
  156. package/dist/RouterLink.d.mts +2 -0
  157. package/dist/RuleEditorFields.d.mts +2 -2
  158. package/dist/RulesPill.d.mts +1 -1
  159. package/dist/{SearchInput-CNg109M5.d.mts → SearchInput-D69WxMNq.d.mts} +2 -2
  160. package/dist/SearchInput.d.mts +1 -1
  161. package/dist/SectionHeading.d.mts +1 -1
  162. package/dist/{SegmentedControl-DQE0hN57.mjs → SegmentedControl-DLkAC2kW.mjs} +2 -2
  163. package/dist/{SegmentedControl-DQE0hN57.mjs.map → SegmentedControl-DLkAC2kW.mjs.map} +1 -1
  164. package/dist/{SegmentedControl-BBIHKcvo.d.mts → SegmentedControl-vCnGsdXo.d.mts} +1 -1
  165. package/dist/SegmentedControl.d.mts +1 -1
  166. package/dist/{Select-wnr46ROZ.d.mts → Select-CpRijO_l.d.mts} +3 -3
  167. package/dist/{Select-D9OVjzPR.mjs → Select-YOgn_uD0.mjs} +7 -7
  168. package/dist/{Select-D9OVjzPR.mjs.map → Select-YOgn_uD0.mjs.map} +1 -1
  169. package/dist/Select.d.mts +1 -1
  170. package/dist/{Spacer-D58qwuXR.mjs → Spacer-BFOuo0sZ.mjs} +1 -1
  171. package/dist/{Spacer-D58qwuXR.mjs.map → Spacer-BFOuo0sZ.mjs.map} +1 -1
  172. package/dist/{Spinner-gBNWIwOn.mjs → Spinner-BDa0D1ze.mjs} +1 -1
  173. package/dist/{Spinner-gBNWIwOn.mjs.map → Spinner-BDa0D1ze.mjs.map} +1 -1
  174. package/dist/{Stack-DgC83-nw.d.mts → Stack-8KGPQp0u.d.mts} +1 -1
  175. package/dist/{Stack-BqQndGI9.mjs → Stack-ChsImaEY.mjs} +1 -1
  176. package/dist/{Stack-BqQndGI9.mjs.map → Stack-ChsImaEY.mjs.map} +1 -1
  177. package/dist/Stack.d.mts +1 -1
  178. package/dist/{Sticker-qvWkqEMw.d.mts → Sticker-Bf9rhSkv.d.mts} +4 -4
  179. package/dist/{Sticker-BDyejPZa.mjs → Sticker-C3Eb13OQ.mjs} +3 -3
  180. package/dist/{Sticker-BDyejPZa.mjs.map → Sticker-C3Eb13OQ.mjs.map} +1 -1
  181. package/dist/Sticker.d.mts +1 -1
  182. package/dist/StringValueControl.d.mts +1 -1
  183. package/dist/Tab.d.mts +1 -1
  184. package/dist/{TabBar-B__54oO3.mjs → TabBar-RenaeJJ6.mjs} +3 -3
  185. package/dist/{TabBar-B__54oO3.mjs.map → TabBar-RenaeJJ6.mjs.map} +1 -1
  186. package/dist/{Table-CPvIH27_.d.mts → Table-BefytM6w.d.mts} +1 -1
  187. package/dist/{Table-CqIi5mVF.mjs → Table-DaxiIS96.mjs} +4 -4
  188. package/dist/{Table-CqIi5mVF.mjs.map → Table-DaxiIS96.mjs.map} +1 -1
  189. package/dist/Table.d.mts +1 -1
  190. package/dist/{TableBody-CQYijW_3.d.mts → TableBody-BZ34-_wV.d.mts} +1 -1
  191. package/dist/TableBody.d.mts +1 -1
  192. package/dist/{TableBox-C-8RxZT4.mjs → TableBox-C7ZXamI7.mjs} +10 -10
  193. package/dist/{TableBox-C-8RxZT4.mjs.map → TableBox-C7ZXamI7.mjs.map} +1 -1
  194. package/dist/TableBox.d.mts +2 -2
  195. package/dist/{TableBoxCell-CQ3zT1jG.d.mts → TableBoxCell-B7kjO76l.d.mts} +6 -6
  196. package/dist/TableBoxCell.d.mts +1 -1
  197. package/dist/TableBoxField.d.mts +3 -3
  198. package/dist/{TableBoxRow-ClK2pceY.d.mts → TableBoxRow-oVGEFVOO.d.mts} +3 -3
  199. package/dist/TableBoxRow.d.mts +1 -1
  200. package/dist/{TableBoxRowActions-CoF3DuUQ.d.mts → TableBoxRowActions-DIZw2OPP.d.mts} +2 -2
  201. package/dist/TableBoxRowActions.d.mts +1 -1
  202. package/dist/{TableCell-BQv4ASkE.d.mts → TableCell-DorRxyke.d.mts} +2 -2
  203. package/dist/TableCell.d.mts +1 -1
  204. package/dist/{TableControls-CtEL3ioz.d.mts → TableControls-BtGFiZeD.d.mts} +3 -3
  205. package/dist/{TableControls-DplArh-9.mjs → TableControls-DxAUnR9v.mjs} +18 -18
  206. package/dist/{TableControls-DplArh-9.mjs.map → TableControls-DxAUnR9v.mjs.map} +1 -1
  207. package/dist/TableControls.d.mts +1 -1
  208. package/dist/{TableControlsContext-X-Lupvc6.d.mts → TableControlsContext-C3DYeUmB.d.mts} +2 -2
  209. package/dist/TableControlsContext.d.mts +1 -1
  210. package/dist/{TableHead-DLLn0zoP.d.mts → TableHead-B0Fdldgw.d.mts} +1 -1
  211. package/dist/TableHead.d.mts +1 -1
  212. package/dist/{TableHeaderCell-DiJ2jyw4.d.mts → TableHeaderCell-C_7X8QAT.d.mts} +1 -1
  213. package/dist/TableHeaderCell.d.mts +1 -1
  214. package/dist/{TableLayout-BgnUz8NO.d.mts → TableLayout-CXVVzq0e.d.mts} +1 -1
  215. package/dist/TableLayout.d.mts +1 -1
  216. package/dist/{TableRow-Dgg8hGy5.d.mts → TableRow-Dr61XJNw.d.mts} +2 -2
  217. package/dist/TableRow.d.mts +1 -1
  218. package/dist/TableTH.d.mts +1 -1
  219. package/dist/{TableViewConfigurationDropdown-DRxd562-.d.mts → TableViewConfigurationDropdown-CCtwcB3I.d.mts} +2 -2
  220. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  221. package/dist/{TechnicalSticker-D6MO_IfT.mjs → TechnicalSticker-D1PqG_yT.mjs} +3 -3
  222. package/dist/{TechnicalSticker-D6MO_IfT.mjs.map → TechnicalSticker-D1PqG_yT.mjs.map} +1 -1
  223. package/dist/{Text-Dn_p7ZvT.mjs → Text-BdluS7Fy.mjs} +1 -1
  224. package/dist/{Text-Dn_p7ZvT.mjs.map → Text-BdluS7Fy.mjs.map} +1 -1
  225. package/dist/{Text-tgFz40XD.d.mts → Text-DD_W_ixb.d.mts} +3 -3
  226. package/dist/Text.d.mts +1 -1
  227. package/dist/{TextArea-BxxXQSwP.d.mts → TextArea-DOofaXJi.d.mts} +2 -2
  228. package/dist/{TextArea-CYirq-B2.mjs → TextArea-wwV-s5Oa.mjs} +2 -2
  229. package/dist/{TextArea-CYirq-B2.mjs.map → TextArea-wwV-s5Oa.mjs.map} +1 -1
  230. package/dist/TextArea.d.mts +1 -1
  231. package/dist/{TextUnderlineTooltip-DQVYsLqM.d.mts → TextUnderlineTooltip-BPLKU9wu.d.mts} +2 -2
  232. package/dist/TextUnderlineTooltip.d.mts +1 -1
  233. package/dist/Tile.d.mts +1 -1
  234. package/dist/Toast.d.mts +1 -1
  235. package/dist/{Toggle-BmUl78kH.d.mts → Toggle-2nrUX591.d.mts} +1 -1
  236. package/dist/{Toggle-CqgFNIYS.mjs → Toggle-iG2x_IZR.mjs} +4 -4
  237. package/dist/{Toggle-CqgFNIYS.mjs.map → Toggle-iG2x_IZR.mjs.map} +1 -1
  238. package/dist/Toggle.d.mts +1 -1
  239. package/dist/{Tooltip-BsuYG0fw.mjs → Tooltip-C0FuZS1C.mjs} +2 -2
  240. package/dist/{Tooltip-BsuYG0fw.mjs.map → Tooltip-C0FuZS1C.mjs.map} +1 -1
  241. package/dist/{Tooltip-eSaiYjxT.d.mts → Tooltip-Cnqf1-tx.d.mts} +2 -2
  242. package/dist/Tooltip.d.mts +1 -1
  243. package/dist/{TruncatedText-B2v53Y11.d.mts → TruncatedText-g2T5HlqX.d.mts} +1 -1
  244. package/dist/{codec-D5qlDVgU.d.mts → codec-CoX6LfOY.d.mts} +2 -2
  245. package/dist/codec.d.mts +1 -1
  246. package/dist/{color-fQTsW4gq.d.mts → color-Bt0Lv1e3.d.mts} +2 -2
  247. package/dist/components/Attribute/index.mjs +4 -4
  248. package/dist/components/Badge/index.mjs +1 -1
  249. package/dist/components/Banner/index.mjs +1 -1
  250. package/dist/components/BottomPanel/index.mjs +3 -3
  251. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  252. package/dist/components/Breadcrumbs/index.mjs +1 -1
  253. package/dist/components/Button/index.d.mts +2 -2
  254. package/dist/components/Button/index.mjs +1 -1
  255. package/dist/components/ButtonGroup/index.mjs +2 -2
  256. package/dist/components/Card/index.d.mts +2 -2
  257. package/dist/components/Card/index.mjs +1 -1
  258. package/dist/components/CardV2/index.d.mts +1 -1
  259. package/dist/components/CardV2/index.mjs +1 -1
  260. package/dist/components/Checkbox/index.d.mts +1 -1
  261. package/dist/components/Checkbox/index.mjs +1 -1
  262. package/dist/components/CodeHighlight/index.mjs +3 -3
  263. package/dist/components/Combobox/index.d.mts +2 -2
  264. package/dist/components/Combobox/index.mjs +1 -1
  265. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  266. package/dist/components/DataTable/TableControls/index.d.mts +19 -19
  267. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  268. package/dist/components/DataTable/index.mjs +15 -15
  269. package/dist/components/DataTable/index.mjs.map +1 -1
  270. package/dist/components/DataTable/types.d.mts +2 -2
  271. package/dist/components/DatePicker/index.d.mts +6 -5
  272. package/dist/components/DatePicker/index.mjs +2 -2
  273. package/dist/components/DropdownButton/index.mjs +1 -1
  274. package/dist/components/DropdownMenu/index.d.mts +1 -1
  275. package/dist/components/DropdownMenu/index.mjs +1 -1
  276. package/dist/components/FloatingPanel/index.mjs +12 -12
  277. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  278. package/dist/components/FormControl/index.d.mts +2 -2
  279. package/dist/components/FormControl/index.mjs +2 -2
  280. package/dist/components/FormField/index.d.mts +1 -1
  281. package/dist/components/FormField/index.mjs +1 -1
  282. package/dist/components/HoverCopyableField/index.mjs +1 -1
  283. package/dist/components/ImageTile/index.mjs +7 -7
  284. package/dist/components/Input/index.d.mts +1 -1
  285. package/dist/components/Input/index.mjs +1 -1
  286. package/dist/components/Link/index.mjs +2 -2
  287. package/dist/components/Link/index.mjs.map +1 -1
  288. package/dist/components/ListBox/index.d.mts +3 -3
  289. package/dist/components/ListBox/index.mjs +1 -1
  290. package/dist/components/LoadingShimmer/index.mjs +1 -1
  291. package/dist/components/MaskedInput/index.mjs +1 -1
  292. package/dist/components/Menu/index.d.mts +1 -1
  293. package/dist/components/Menu/index.mjs +1 -1
  294. package/dist/components/Modal/index.mjs +7 -69
  295. package/dist/components/Modal/index.mjs.map +1 -1
  296. package/dist/components/PageHeader/index.mjs +1 -1
  297. package/dist/components/Pagination/index.d.mts +3 -3
  298. package/dist/components/Pagination/index.mjs +1 -1
  299. package/dist/components/Pii/index.mjs +1 -1
  300. package/dist/components/Popover/index.mjs +1 -1
  301. package/dist/components/ProgressBar/index.mjs +1 -1
  302. package/dist/components/Radio/index.mjs +1 -1
  303. package/dist/components/RadioGroup/index.d.mts +1 -1
  304. package/dist/components/RadioGroup/index.mjs +1 -1
  305. package/dist/components/RightPanel/index.mjs +4 -4
  306. package/dist/components/SegmentedControl/index.d.mts +1 -1
  307. package/dist/components/SegmentedControl/index.mjs +1 -1
  308. package/dist/components/Select/index.d.mts +1 -1
  309. package/dist/components/Select/index.mjs +1 -1
  310. package/dist/components/Slider/index.mjs +2 -2
  311. package/dist/components/SmartTextInput/parser/method-chain/grammar.pegjs +219 -0
  312. package/dist/components/SmartTextInput/parser/smart-text/grammar.pegjs +154 -0
  313. package/dist/components/Spacer/index.mjs +1 -1
  314. package/dist/components/Spinner/index.mjs +1 -1
  315. package/dist/components/Stack/index.d.mts +1 -1
  316. package/dist/components/Stack/index.mjs +1 -1
  317. package/dist/components/Sticker/index.d.mts +1 -1
  318. package/dist/components/Sticker/index.mjs +1 -1
  319. package/dist/components/TabBar/index.mjs +1 -1
  320. package/dist/components/Table/index.d.mts +8 -8
  321. package/dist/components/Table/index.mjs +1 -1
  322. package/dist/components/TableBox/index.d.mts +2 -2
  323. package/dist/components/TableBox/index.mjs +1 -1
  324. package/dist/components/TechnicalSticker/index.mjs +1 -1
  325. package/dist/components/Text/index.d.mts +1 -1
  326. package/dist/components/Text/index.mjs +1 -1
  327. package/dist/components/TextArea/index.d.mts +1 -1
  328. package/dist/components/TextArea/index.mjs +1 -1
  329. package/dist/components/Tile/index.mjs +4 -4
  330. package/dist/components/Toast/index.mjs +1 -1
  331. package/dist/components/Toggle/index.d.mts +1 -1
  332. package/dist/components/Toggle/index.mjs +1 -1
  333. package/dist/components/Tooltip/index.d.mts +3 -3
  334. package/dist/components/Tooltip/index.mjs +1 -1
  335. package/dist/compound-expression.d.mts +1 -1
  336. package/dist/{constants-zZyl7QbX.d.mts → constants-D8bzZ-7B.d.mts} +1 -1
  337. package/dist/constants.d.mts +1 -1
  338. package/dist/createPath-BDYRvl57.d.mts +7 -0
  339. package/dist/createPath.d.mts +2 -0
  340. package/dist/{date-filter-DMZnJwGs.mjs → date-filter-CZeChs9T.mjs} +1 -1
  341. package/dist/{date-filter-DMZnJwGs.mjs.map → date-filter-CZeChs9T.mjs.map} +1 -1
  342. package/dist/{date-range-rule-value-zJaa_jR9.d.mts → date-range-rule-value-C3wrh0jw.d.mts} +2 -2
  343. package/dist/date-range-rule-value.d.mts +1 -1
  344. package/dist/{date-rule-intent-CdWv68my.d.mts → date-rule-intent-CC1LdkE7.d.mts} +3 -3
  345. package/dist/date-rule-intent.d.mts +1 -1
  346. package/dist/display.d.mts +1 -1
  347. package/dist/fieldPickerOptions.d.mts +2 -2
  348. package/dist/{fieldSchemaTypes-COEJOqYL.d.mts → fieldSchemaTypes-BVYSm74B.d.mts} +1 -1
  349. package/dist/{filter-size-context-DYkfYMkX.d.mts → filter-size-context-CCfFnaib.d.mts} +2 -2
  350. package/dist/filter-size-context.d.mts +1 -1
  351. package/dist/helpers.d.mts +1 -1
  352. package/dist/{index-BX8dSNcy.d.mts → index-D-RD2Kfg.d.mts} +2 -2
  353. package/dist/{index-DxIXll2Z.d.mts → index-DalP_w0c.d.mts} +2 -2
  354. package/dist/{index-BJr_obTf.d.mts → index-Nip77QqW.d.mts} +3 -3
  355. package/dist/index-bHnO4ZKt.d.mts +1 -0
  356. package/dist/index.d.mts +1 -1
  357. package/dist/index2.d.mts +1 -1
  358. package/dist/index3.d.mts +3 -3
  359. package/dist/index4.d.mts +1 -1
  360. package/dist/index5.d.mts +14 -14
  361. package/dist/{input-DN_8iHVD.d.mts → input-DCJivcWf.d.mts} +3 -3
  362. package/dist/inputFields.d.mts +10 -10
  363. package/dist/{intersperse-CRUnXmnu.mjs → intersperse-DQAyfeEw.mjs} +1 -1
  364. package/dist/{intersperse-CRUnXmnu.mjs.map → intersperse-DQAyfeEw.mjs.map} +1 -1
  365. package/dist/{jsonSchema-B1VonQij.d.mts → jsonSchema-c_EfAj8y.d.mts} +2 -2
  366. package/dist/lib/PDSProvider.d.mts +3 -1
  367. package/dist/lib/PDSProvider.mjs +6 -2
  368. package/dist/lib/PDSProvider.mjs.map +1 -1
  369. package/dist/lib/TruncatedText.d.mts +1 -1
  370. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  371. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  372. package/dist/lib/color.d.mts +1 -1
  373. package/dist/lib/date-filter/index.d.mts +2 -2
  374. package/dist/lib/date-filter/index.mjs +1 -1
  375. package/dist/lib/fieldSchemaTypes.d.mts +1 -1
  376. package/dist/lib/jsonSchema.d.mts +1 -1
  377. package/dist/lib/message.d.mts +1 -1
  378. package/dist/lib/methodChain.d.mts +1 -1
  379. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  380. package/dist/lib/pseudoClass.d.mts +1 -1
  381. package/dist/lib/router/adapters/reactRouter.d.mts +9 -0
  382. package/dist/lib/router/adapters/reactRouter.mjs +26 -0
  383. package/dist/lib/router/adapters/reactRouter.mjs.map +1 -0
  384. package/dist/lib/router/adapters/tanstack.d.mts +9 -0
  385. package/dist/lib/router/adapters/tanstack.mjs +65 -0
  386. package/dist/lib/router/adapters/tanstack.mjs.map +1 -0
  387. package/dist/lib/router/index.d.mts +6 -0
  388. package/dist/lib/router/index.mjs +3 -0
  389. package/dist/lib/semanticColor.d.mts +1 -1
  390. package/dist/lib/useModalInsetRight.mjs +69 -0
  391. package/dist/lib/useModalInsetRight.mjs.map +1 -0
  392. package/dist/{message-DfEpU8lV.d.mts → message-CjIHdhX1.d.mts} +1 -1
  393. package/dist/mixins/focus.d.mts +1 -1
  394. package/dist/mixins/hoverable.d.mts +2 -2
  395. package/dist/mixins/input.d.mts +1 -1
  396. package/dist/mixins/menuItem.d.mts +2 -2
  397. package/dist/mixins/text.d.mts +1 -1
  398. package/dist/navigationEvents.d.mts +6 -0
  399. package/dist/{operators-F8X0hyQB.d.mts → operators-C4yL6qbl.d.mts} +2 -2
  400. package/dist/operators.d.mts +1 -1
  401. package/dist/{palette-BANY1Xfs.d.mts → palette-qgPRWgUN.d.mts} +3 -3
  402. package/dist/palette.d.mts +1 -1
  403. package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
  404. package/dist/reactRouterFallback.d.mts +11 -0
  405. package/dist/relative-date-label.d.mts +1 -1
  406. package/dist/router-7FYDW80v.mjs +112 -0
  407. package/dist/router-7FYDW80v.mjs.map +1 -0
  408. package/dist/{semantic-Dy7mTyBP.d.mts → semantic-DUctmpu_.d.mts} +1 -1
  409. package/dist/{semanticColor-DkVQjcbc.d.mts → semanticColor-IAhXS17y.d.mts} +3 -3
  410. package/dist/{text-BaQdW8qa.d.mts → text-DjTGRUM1.d.mts} +1 -1
  411. package/dist/{theme-D02MOaH6.d.mts → theme-DKiszVRN.d.mts} +3 -3
  412. package/dist/theme.d.mts +1 -1
  413. package/dist/tone.d.mts +3 -3
  414. package/dist/{types-C2s9yhgO.d.mts → types-B8aAvU2a2.d.mts} +2 -2
  415. package/dist/{types-Ok2lRZeu.d.mts → types-CcZbBH0e.d.mts} +1 -1
  416. package/dist/types-CuQSgl1F.d.mts +36 -0
  417. package/dist/{types-COeginAF.d.mts → types-D8rWSj3z.d.mts} +1 -1
  418. package/dist/{types-1_JSe9Wr.d.mts → types-I9z-0m7q.d.mts} +2 -2
  419. package/dist/{types-CtLY82w5.d.mts → types-RWjW1d9I.d.mts} +1 -1
  420. package/dist/types.d.mts +2 -2
  421. package/dist/types2.d.mts +2 -2
  422. package/dist/types3.d.mts +2 -2
  423. package/dist/types4.d.mts +2 -2
  424. package/dist/types5.d.mts +2 -2
  425. package/dist/types6.d.mts +2 -0
  426. package/dist/{url-state-DP78aDol.d.mts → url-state-BOkOTKNZ.d.mts} +2 -2
  427. package/dist/url-state.d.mts +1 -1
  428. package/dist/useComboboxFooterAction.d.mts +1 -1
  429. package/dist/{useFilterStateV2-DC2rGXHK.d.mts → useFilterStateV2-CjXG2vjy.d.mts} +3 -3
  430. package/dist/useFilterStateV2.d.mts +1 -1
  431. package/dist/{useFormField-C-K1lgmv.mjs → useFormField-C61u9KvG.mjs} +2 -2
  432. package/dist/{useFormField-C-K1lgmv.mjs.map → useFormField-C61u9KvG.mjs.map} +1 -1
  433. package/dist/{useFormField--_14te0K.d.mts → useFormField-DDbo-ExT.d.mts} +2 -2
  434. package/dist/useFormField.d.mts +1 -1
  435. package/dist/{useFormGroup-y-duFylq.mjs → useFormGroup-C89-oI4w.mjs} +1 -1
  436. package/dist/{useFormGroup-y-duFylq.mjs.map → useFormGroup-C89-oI4w.mjs.map} +1 -1
  437. package/dist/useLocationPathname-K2N4fw8j.d.mts +5 -0
  438. package/dist/useLocationPathname.d.mts +2 -0
  439. package/dist/{useTableBoxDragAndDrop-DkCxC7Mi.d.mts → useTableBoxDragAndDrop-CbbH3pMK.d.mts} +1 -1
  440. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  441. package/dist/{useToggle-0zLL1E7s.mjs → useToggle-DUHQjohK.mjs} +1 -1
  442. package/dist/{useToggle-0zLL1E7s.mjs.map → useToggle-DUHQjohK.mjs.map} +1 -1
  443. package/dist/useTruncation.d.mts +1 -1
  444. package/dist/{utilities-C1hOxjt_.d.mts → utilities-D0EhDri-.d.mts} +1 -1
  445. package/dist/utilities.d.mts +1 -1
  446. package/dist/utils/storybook.mjs +1 -1
  447. package/dist/utils/testing.d.mts +2 -0
  448. package/dist/utils/testing.mjs +10 -6
  449. package/dist/utils/testing.mjs.map +1 -1
  450. package/dist/utils.d.mts +1 -1
  451. package/dist/{validation-CpDsI-TM.d.mts → validation-C07D6XjI.d.mts} +3 -3
  452. package/dist/validation.d.mts +1 -1
  453. package/dist/{value-control-resolver-DhaqxKmK.d.mts → value-control-resolver-zYNPNlRW.d.mts} +2 -2
  454. package/dist/value-control-resolver.d.mts +1 -1
  455. package/dist/variables/effect.d.mts +1 -1
  456. package/dist/variables/semantic.d.mts +1 -1
  457. package/llms.txt +2 -1
  458. package/package.json +16 -3
  459. package/skills/design-system-component-authoring/SKILL.md +79 -0
  460. package/skills/design-system-component-authoring/clarifying-scope.md +18 -0
  461. package/skills/design-system-component-authoring/component-conventions.md +70 -0
  462. package/skills/design-system-component-authoring/prop-interface-patterns.md +30 -0
  463. package/skills/ui-authoring/SKILL.md +28 -0
  464. package/dist/Breadcrumbs-ClKHNIr-.mjs.map +0 -1
  465. package/dist/IconButton-CnJNIJVQ.mjs.map +0 -1
  466. /package/dist/{index-1-AkepUA.d.mts → index-B33elXxm.d.mts} +0 -0
  467. /package/dist/{index-7rWKHdox.d.mts → index-BwAfCVZH2.d.mts} +0 -0
  468. /package/dist/{index-BFnNtGdX.d.mts → index-C6HcjJiY.d.mts} +0 -0
  469. /package/dist/{index-BPiqSRRl.d.mts → index-CRo77wc3.d.mts} +0 -0
  470. /package/dist/{index-BSVhZrWN.d.mts → index-CX869wwk.d.mts} +0 -0
  471. /package/dist/{index-BYd3Btr1.d.mts → index-CjDodOH2.d.mts} +0 -0
  472. /package/dist/{index-CMuRFTR3.d.mts → index-CoUVmp_Q.d.mts} +0 -0
  473. /package/dist/{index-Ci-uuV07.d.mts → index-CsuikFeJ.d.mts} +0 -0
  474. /package/dist/{index-CknANNvQ2.d.mts → index-CzItj62a.d.mts} +0 -0
  475. /package/dist/{index-CtJuGxUp.d.mts → index-D13oYj4_.d.mts} +0 -0
  476. /package/dist/{index-CuheJfs-.d.mts → index-D4DUvwPf.d.mts} +0 -0
  477. /package/dist/{index-DWfPppPU.d.mts → index-DMRtRo7y.d.mts} +0 -0
  478. /package/dist/{index-DYX_PQ7T2.d.mts → index-DXJd7-2Z.d.mts} +0 -0
  479. /package/dist/{index-De7MV8-j.d.mts → index-DeVKzGce.d.mts} +0 -0
  480. /package/dist/{index-N-OgGgfF.d.mts → index-Dflz2i1X.d.mts} +0 -0
  481. /package/dist/{index-VWno75SQ.d.mts → index-DkrC-i1D.d.mts} +0 -0
  482. /package/dist/{index-hcx6LMSC.d.mts → index-DztUdPP_.d.mts} +0 -0
  483. /package/dist/{index-uY8Qbwfx.d.mts → index-Rvd9MEUQ.d.mts} +0 -0
  484. /package/dist/{useModalInsetRight.d.mts → lib/useModalInsetRight.d.mts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["AriaModal","Button","AriaButton","Heading","AriaHeading","Card","Modal"],"sources":["../../../lib/useModalInsetRight.ts","../../../components/Modal/Modal.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nconst CSS_VAR = '--modal-inset-right';\n\n// Match AgentsPanel sidebar transition durations\nexport const SIDEBAR_OPEN_TRANSITION_MS = 425;\nexport const SIDEBAR_CLOSE_TRANSITION_MS = 200;\n\nconst getModalInsetRight = () =>\n getComputedStyle(document.documentElement).getPropertyValue(CSS_VAR).trim() || '0px';\n\nconst prefersReducedMotion = () =>\n typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\nexport type PanelInsetState = 'closed' | 'opening' | 'open' | 'closing';\n\nexport interface ModalInsetRight {\n /** Animated inset value — starts at 0px on panel open so CSS transition fires */\n insetRight: string;\n panelState: PanelInsetState;\n}\n\n/**\n * Returns the current value of --modal-inset-right from :root, reactively updating\n * as the agents side panel animates open/closed or is resized. Also tracks whether\n * the panel is opening, open, closing, or closed.\n *\n * panelState stays 'opening'/'closing' for the full transition duration so that\n * CSS transitions on consumers have time to animate.\n */\nconst useModalInsetRight = (): ModalInsetRight => {\n const [insetRight, setInsetRight] = useState(getModalInsetRight);\n const [panelState, setPanelState] = useState<PanelInsetState>(() =>\n getModalInsetRight() !== '0px' ? 'open' : 'closed',\n );\n const prevInsetRight = useRef(getModalInsetRight());\n const transitionTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const prev = prevInsetRight.current;\n const next = getModalInsetRight();\n prevInsetRight.current = next;\n\n if (prev === '0px' && next !== '0px') {\n if (prefersReducedMotion()) {\n setInsetRight(next);\n setPanelState('open');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight('0px');\n setPanelState('opening');\n rafRef.current = requestAnimationFrame(() => setInsetRight(next));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('open'),\n SIDEBAR_OPEN_TRANSITION_MS,\n );\n }\n } else if (prev !== '0px' && next === '0px') {\n if (prefersReducedMotion()) {\n setInsetRight('0px');\n setPanelState('closed');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight(prev);\n setPanelState('closing');\n rafRef.current = requestAnimationFrame(() => setInsetRight('0px'));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('closed'),\n SIDEBAR_CLOSE_TRANSITION_MS,\n );\n }\n } else {\n setInsetRight(next);\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n\n return () => {\n observer.disconnect();\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n };\n }, []);\n\n return { insetRight, panelState };\n};\n\nexport default useModalInsetRight;\n","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';\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 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":"index.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';\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 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":";;;;;;;;;;;;;;;AAuCA,MAAM,qBAAqB,OAAO,aAAa;;;;;;;;;;;;;;YAmBnC,EAAE,kBAAkB,YAAY;uBACrB,EAAE,oBAAoB,cAAc;;sBAErC,EAAE,wBAAwB,kBAAkB;;KAE7D,EAAE,mBACH,gBACA;;IAEA;;;;;;;;;;;AAYJ,MAAM,cAAc,OAAOA,MAAU;;;;;IAKjC,cAAc,WAAW,UAAU,OAAO,UAAU,GAAG,CAAC;;;;;;;AAQ5D,MAAM,uBAAuB,WAC3B,SAAS,qBAAqB,EAAE,UAAU,aAAa,KAAK;AAC1D,oBAAmB,UAAU;AAC7B,QAAO,oBAAC,aAAD;EAAkB;EAAM;EAAuB,CAAA;EAEzD;AAQD,MAAM,0BAA0B,EAAE,WAAW,GAAG,YAAyC;CAEvF,MAAM,SADQ,WAAW,2BACL,EAAE,UAAU;CAChC,MAAM,EAAE,OAAO,qBAAqB,uBAAuB,WAAW,OAAO;CAE7E,MAAM,EAAE,aAAa,eAAe,GAAG,iBAAiB;AACxD,QACE,oBAAC,oBAAD;EACE,GAAI;EACS;EACE;EACf,mBAAmB;EACnB,cAAc,UAAU,CAAC;EACzB,CAAA;;AAIN,MAAM,mBAAmB,OAAOC,SAAO;;aAE1B,QAAQ,GAAG;mBACL,QAAQ,GAAG;;;;AAK9B,MAAM,cAAc,OAAO,OAAO,CAAC,MAAM;CACvC,SAAS;CACT,OAAO;CACP,SAAS,QAAQ;CAClB,CAAC;aACW,QAAQ,GAAG,GAAG,QAAQ,GAAG;2BACX,EAAE,YAAY,cAAc,OAAO,gBAAgB,MAAM,cAAc,CAAC;;AAGnG,MAAM,mBAAmB,OAAO,GAAG;;;AAInC,MAAa,eAAe;AAC5B,MAAa,eAAe;AAE5B,MAAa,cAAc,UAAuB;AAChD,QACE,oBAACC,QAAD;EAAY,MAAK;EAAQ,OAAO;GAAE,KAAK;GAAS,SAAS;GAAY;YACnE,oBAAC,kBAAD;GAAkB,SAAQ;GAAO,OAAM;GAAO,MAAK;GAAK,GAAI;aAC1D,oBAAC,OAAD,EAAS,CAAA;GACQ,CAAA;EACR,CAAA;;AAiBjB,MAAM,cAAc,EAAE,UAAU,GAAG,YAA6B;AAC9D,QACE,oBAACC,WAAD;EAAS,MAAK;EAAK,OAAM;EAAU,IAAIC;EAAa,MAAK;EAAQ,GAAI;EAClE;EACO,CAAA;;AAId,MAAM,cAAc,OAAO,OAAO;oBACd,EAAE,UAAU,YAC5B,WAAW,SAAS,aAAa,cAAc,OAAO,gBAAgB,MAAM,cAAc,GAAG;cACnF,EAAE,eACZ,WACI,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,OACrD,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,KAAK;;AAGlE,MAAM,cAAc,OAAO,OAAO;kBAChB,QAAQ,GAAG;;AAG7B,MAAM,eAAe,OAAO,OAAO;;;AAInC,MAAM,aAAa,OAAOC,aAAK;;YAEnB,EAAE,YAAY;AACtB,SAAQ,OAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,QAAO;;EAEX;gBACY,EAAE,OAAO,YAAY;AACjC,SAAQ,OAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,QAAO,MAAM,MAAM,MAAM;;EAE7B;;iBAEa,EAAE,YAAa,UAAU,SAAS,wBAAwB,OAAQ;;;;KAI9E,EAAE,YACH,UAAU,UACV;;IAEA;;;AAqDJ,MAAM,sBAAsB,OAAOA,aAAK,KAAK;;;;KAOxC,EAAE,iBACH,aACI,gBACA;oBACY,QAAQ,GAAG;qBACV,QAAQ,GAAG;IAC5B;KACC,EAAE,cAAc,WAAW,iBAAiB;;;;;AAMjD,MAAM,YAAY,WAAmD,SAAS,UAC5E,EACE,OACA,UACA,kBAAkB,MAClB,MACA,QACA,MACA,gBAAgB,OAChB,iBACA,GAAG,SAEL,KACA;CACA,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,EAAE;AAGvD,iBAAgB;AACd,oBAAkB,EAAE;IACnB,CAJc,MAAM,UAAU,EAIpB,CAAC;CAEd,MAAM,gBACJ,qBAAC,aAAD;EAAa,SAAQ;EAAa,OAAM;EAAS,SAAS,QAAQ;EAAI,UAAU,QAAQ,KAAK;YAA7F,CACE,oBAAC,kBAAD,EAAA,UAAmB,QAAQ,oBAAC,YAAD,EAAA,UAAa,OAAmB,CAAA,GAAG,MAAwB,CAAA,EACrF,mBAAmB,oBAAC,YAAD,EAAY,cAAW,SAAU,CAAA,CACzC;;CAGhB,MAAM,cAAc,OAClB,qBAAC,OAAD,EAAA,UAAA,CACG,eACD,oBAAC,aAAD,EAAA,UACG,KAAK,KAAK,KAAK,QACd,oBAAC,KAAD;EAEE,UAAU,mBAAmB;EAC7B,IAAI,iBAAiB;EACrB,eAAe,kBAAkB,IAAI;EACrC,iBAAe,uBAAuB;YAErC,IAAI;EACD,EAPC,IAAI,KAOL,CACN,EACU,CAAA,CACR,EAAA,CAAA,GAER;AAGF,QACE,oBAAC,cAAD;EAAc,GAAI;EAAY;YAC5B,qBAAC,YAAD;GAAY,UAAA;GAAS,OAAO;aAA5B;KACI,mBAAmB,UAAU;IAC9B,OACC,KAAK,KAAK,KAAK,QACb,oBAAC,qBAAD;KAEE,YAAY;KACZ,SAAS,mBAAmB;KAC5B,MAAM,OAAO,aAAa,KAAA;KAC1B,IAAI,uBAAuB,IAAI;KAC/B,mBAAiB,iBAAiB,IAAI;eAErC,OAAO,IAAI,aAAa,aACrB,IAAI,SAAS,EAAE,iBAAiB,CAAC,GACjC,IAAI;KACY,EAVf,IAAI,KAUW,CACtB,GAEF,oBAAC,qBAAD;KACE,YAAY;KACZ,MAAM,OAAO,aAAa,KAAA;KAC1B,IAAI,uBAAuB;KAC3B,mBAAiB,iBAAiB;KAEjC;KACmB,CAAA;IAGvB,UAAU,oBAAC,aAAD,EAAA,UAAc,QAAqB,CAAA;IACnC;;EACA,CAAA;EAEjB;AAiFF,MAAMC,WAAS,EACb,UACA,SACA,cACA,gBAAgB,OAChB,OAAO,MACP,OACA,QACA,MACA,aACA,cACA,gBAAgB,OAChB,4BAA4B,OAC5B,WACgB;CAChB,MAAM,CAAC,iBAAiB,sBAAsB,SAAgC,KAAK;CACnF,MAAM,YAAY,sBAAsB;CACxC,MAAM,EAAE,YAAY,iBAAiB,eAAe,oBAAoB;CACxE,MAAM,eACJ,eAAe,YAAA,MAEX,eAAe,YAAA,MAEb;CAER,MAAM,UACJ,oBAAC,WAAD;EACQ;EACC;EACC;EACF;EACS;EACf,GAAI;EACa;YAEhB,OAAO,aAAa,aAAa,SAAS,EAAE,iBAAiB,CAAC,GAAG;EACxD,CAAA;AAMd,QACE,qBAAC,eAAD;EAAe,QAAQ;EAAmB;EAA2B;YAArE,CAHqB,UAAU,oBAAC,WAAD,EAAA,UAAY,SAAoB,CAAA,GAAG,MAKhE,oBAAC,wBAAD;GACa;GACX,aAAa;GACb,eAAe;GACA;GACY;GAC3B,+BAA+B,YAAY,CAAC,QAAQ,QAAQ,8BAA8B;aAE1F,oBAAC,sBAAD;IAAsB,KAAK;IAA+B;cACvD;IACoB,CAAA;GACA,CAAA,CACX;;;AAIpB,IAAA,gBAAe,OAAO,OAAOA,SAAO,EAClC,OAAO,YACR,CAAC"}
@@ -1,2 +1,2 @@
1
- import { n as PageHeaderContainer, t as PageHeader } from "../../PageHeader-wpvRRTaa.mjs";
1
+ import { n as PageHeaderContainer, t as PageHeader } from "../../PageHeader-7GBfUjU_.mjs";
2
2
  export { PageHeaderContainer, PageHeader as default };
@@ -1,4 +1,4 @@
1
- import { t as Pagination } from "../../Pagination-C2eZEM7K.mjs";
2
- import { r as PageSelector, t as PAGE_LIMIT_BEFORE_SCROLL_MODE } from "../../PageSelector-CIa3Zts9.mjs";
3
- import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "../../constants-zZyl7QbX.mjs";
1
+ import { t as Pagination } from "../../Pagination-ne9hnVoe.mjs";
2
+ import { r as PageSelector, t as PAGE_LIMIT_BEFORE_SCROLL_MODE } from "../../PageSelector-BMz2Q4P6.mjs";
3
+ import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "../../constants-D8bzZ-7B.mjs";
4
4
  export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE, PAGE_LIMIT_BEFORE_SCROLL_MODE, PageSelector, Pagination as default };
@@ -1,2 +1,2 @@
1
- import { a as MIN_PAGE_SIZE, i as DEFAULT_PAGE_SIZE_OPTIONS, n as PAGE_LIMIT_BEFORE_SCROLL_MODE, r as PageSelector, t as Pagination_default } from "../../Pagination-wjr3W3xf.mjs";
1
+ import { a as MIN_PAGE_SIZE, i as DEFAULT_PAGE_SIZE_OPTIONS, n as PAGE_LIMIT_BEFORE_SCROLL_MODE, r as PageSelector, t as Pagination_default } from "../../Pagination-BxNqU2yh.mjs";
2
2
  export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE, PAGE_LIMIT_BEFORE_SCROLL_MODE, PageSelector, Pagination_default as default };
@@ -1,2 +1,2 @@
1
- import { t as Pii_default } from "../../Pii-Bm-qkweh.mjs";
1
+ import { t as Pii_default } from "../../Pii-B29k0Omf.mjs";
2
2
  export { Pii_default as default };
@@ -1,2 +1,2 @@
1
- import { a as PopoverPortal, i as PopoverContent, n as PopoverCard, o as PopoverTrigger, r as PopoverClose, s as Popover_default, t as PopoverAnchor } from "../../Popover-DUyzmq3e.mjs";
1
+ import { a as PopoverPortal, i as PopoverContent, n as PopoverCard, o as PopoverTrigger, r as PopoverClose, s as Popover_default, t as PopoverAnchor } from "../../Popover-Dn3xmzSK.mjs";
2
2
  export { PopoverAnchor, PopoverCard, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Popover_default as default };
@@ -1,7 +1,7 @@
1
1
  import { a as styled, i as keyframes } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { semanticColor } from "../../lib/semanticColor.mjs";
3
3
  import { paragraphMixins } from "../../mixins/text.mjs";
4
- import { a as Tooltip } from "../../Tooltip-BsuYG0fw.mjs";
4
+ import { a as Tooltip } from "../../Tooltip-C0FuZS1C.mjs";
5
5
  import { Color, Spacing } from "@persona/design-tokens";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { useId } from "react-aria";
@@ -1,2 +1,2 @@
1
- import { t as Radio } from "../../Radio-CkugnL91.mjs";
1
+ import { t as Radio } from "../../Radio-BRPoGITE.mjs";
2
2
  export { Radio, Radio as default };
@@ -1,2 +1,2 @@
1
- import { n as RadioGroupProps, t as RadioGroup } from "../../RadioGroup-Dg_gydUp.mjs";
1
+ import { n as RadioGroupProps, t as RadioGroup } from "../../RadioGroup-CxL6LW4q.mjs";
2
2
  export { RadioGroup, RadioGroup as default, RadioGroupProps };
@@ -1,2 +1,2 @@
1
- import { t as RadioGroup } from "../../RadioGroup-8dI8gljw.mjs";
1
+ import { t as RadioGroup } from "../../RadioGroup-CahrWsXi.mjs";
2
2
  export { RadioGroup, RadioGroup as default };
@@ -1,8 +1,8 @@
1
1
  import { a as styled } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
- import { i as Paragraph } from "../../Text-Dn_p7ZvT.mjs";
3
- import { n as Stack, t as HStack } from "../../Stack-BqQndGI9.mjs";
4
- import { t as IconButton } from "../../IconButton-CnJNIJVQ.mjs";
5
- import { t as LoadingShimmer } from "../../LoadingShimmer-DeVCDCjT.mjs";
2
+ import { i as Paragraph } from "../../Text-BdluS7Fy.mjs";
3
+ import { n as Stack, t as HStack } from "../../Stack-ChsImaEY.mjs";
4
+ import { t as IconButton } from "../../IconButton-CqTPMhjV.mjs";
5
+ import { t as LoadingShimmer } from "../../LoadingShimmer-JyGh7M7V.mjs";
6
6
  import { Color, Spacing } from "@persona/design-tokens";
7
7
  import { useCallback, useEffect, useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { i as SegmentedControlProps, n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-BBIHKcvo.mjs";
1
+ import { i as SegmentedControlProps, n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-vCnGsdXo.mjs";
2
2
  export { SegmentedControl, SegmentedControl as default, SegmentedControlItem, SegmentedControlProps };
@@ -1,2 +1,2 @@
1
- import { n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-DQE0hN57.mjs";
1
+ import { n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-DLkAC2kW.mjs";
2
2
  export { SegmentedControl, SegmentedControl as default, SegmentedControlItem };
@@ -1,2 +1,2 @@
1
- import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-wnr46ROZ.mjs";
1
+ import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-CpRijO_l.mjs";
2
2
  export { Option, Select, Select as default, SelectHeader, SelectProps };
@@ -1,2 +1,2 @@
1
- import { n as Select, r as SelectHeader, t as Option } from "../../Select-D9OVjzPR.mjs";
1
+ import { n as Select, r as SelectHeader, t as Option } from "../../Select-YOgn_uD0.mjs";
2
2
  export { Option, Select, Select as default, SelectHeader };
@@ -1,7 +1,7 @@
1
1
  import { a as styled, r as css } from "../../styledComponentsInterop-NxwFjeA4.mjs";
2
2
  import { semanticColor, semanticOnly } from "../../lib/semanticColor.mjs";
3
3
  import { paragraphMixins } from "../../mixins/text.mjs";
4
- import { i as FloatingTooltip } from "../../Tooltip-BsuYG0fw.mjs";
4
+ import { i as FloatingTooltip } from "../../Tooltip-C0FuZS1C.mjs";
5
5
  import { focusStyle } from "../../mixins/focus.mjs";
6
6
  import { Color, Spacing } from "@persona/design-tokens";
7
7
  import { useEffect, useMemo, useRef, useState } from "react";
@@ -9,9 +9,9 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { debounce } from "lodash-es";
10
10
  import { mergeProps } from "@react-aria/utils";
11
11
  import { useNumberFormatter } from "@react-aria/i18n";
12
+ import { autoUpdate, flip, offset, shift, useDismiss, useFloating, useInteractions, useRole } from "@floating-ui/react";
12
13
  import { useSlider, useSliderThumb } from "@react-aria/slider";
13
14
  import { useSliderState } from "@react-stately/slider";
14
- import { autoUpdate, flip, offset, shift, useDismiss, useFloating, useInteractions, useRole } from "@floating-ui/react";
15
15
  import { useFocusRing } from "@react-aria/focus";
16
16
  import { VisuallyHidden } from "@react-aria/visually-hidden";
17
17
  import { useController } from "react-hook-form";
@@ -0,0 +1,219 @@
1
+ /**
2
+ * ===========================================================================
3
+ * Run bin/method_chain_parser/generate.sh after making change
4
+ * See parser.js in this directory for generated output
5
+ * ===========================================================================
6
+ */
7
+
8
+ {{
9
+ function mkError(start, end, kind, extra) {
10
+ return { type: 'error', start, end, ...(kind ? { kind } : {}), ...(extra || {}) };
11
+ }
12
+ function hasErrors(node) {
13
+ if (!node || typeof node !== 'object') return false;
14
+ if (node.type === 'error') return true;
15
+ const children = node.children || [];
16
+ return children.some(hasErrors);
17
+ }
18
+ }}
19
+
20
+ Chain
21
+ = first:(SymbolIdentifier / InvalidChainStart)
22
+ rest:(Link / ErrorLink)*
23
+ {
24
+ const chain = { type: 'chain', children: [first, ...rest.flat()],
25
+ start: location().start.offset, end: location().end.offset };
26
+ if (options.strict === true && hasErrors(chain)) { error('Invalid chain'); }
27
+ return chain;
28
+ }
29
+
30
+ // Matches a non-identifier chain start. Excludes }, ,, ) to avoid consuming
31
+ // delimiters in Handlebars / param contexts. Also excludes . so trailing-dot
32
+ // ErrorLink handles dot-after-dot rather than producing two separate errors.
33
+ InvalidChainStart
34
+ = !"}" !"," !")" !SymbolIdentifier c:. {
35
+ const s = location().start.offset;
36
+ const e = location().end.offset;
37
+ return mkError(s, e, 'invalidMethodChainSyntax');
38
+ }
39
+
40
+ ErrorLink
41
+ = d:DotNode !. {
42
+ // Dot at absolute end of input — user is still typing (wip).
43
+ const e = location().end.offset;
44
+ return [d, mkError(e, e, 'trailingDot', { wip: true })];
45
+ }
46
+ / d:DotNode &("}" / "$" / "{") {
47
+ // Dot immediately before a Handlebars/Code delimiter — user is still
48
+ // typing the identifier that will follow (wip).
49
+ const e = location().end.offset;
50
+ return [d, mkError(e, e, 'trailingDot', { wip: true })];
51
+ }
52
+ / d:DotNode "@" (!. / &("}" / "$" / "{")) {
53
+ // '@' at end of input or before a delimiter — user starting a custom function name (wip).
54
+ const e = location().end.offset;
55
+ return [d, mkError(e, e, 'trailingAtSign', { wip: true })];
56
+ }
57
+ / d:DotNode !(SymbolIdentifier / "@" / "[") c:. {
58
+ // Dot followed by a character that is not a valid link start — consume
59
+ // the bad character and report it as a syntax error (not wip).
60
+ const s = d.end;
61
+ const e = location().end.offset;
62
+ return [d, mkError(s, e, 'invalidMethodChainSyntax')];
63
+ }
64
+ / [ \t]+ (!("}" / "$" / "{") .)* {
65
+ return mkError(location().start.offset, location().end.offset, 'invalidMethodChainSyntax');
66
+ }
67
+
68
+ Link
69
+ = (d:DotNode link:(CustomFunction / Function / SymbolIdentifier) { return [d, link] })
70
+ / @LiteralIdentifier
71
+
72
+ DotNode
73
+ = '.' { return { type: 'dot', start: location().start.offset, end: location().end.offset } }
74
+
75
+ CustomFunction
76
+ = '@' name:[a-z0-9_-]i+ po:ParenOpen _ params:Parameters? _ pc:ParenClose
77
+ { return { type: 'custom_function', name: name.join(''),
78
+ children: [po, ...(params || []), pc],
79
+ start: location().start.offset, end: location().end.offset } }
80
+ / '@' name:[a-z0-9_-]i+ po:ParenOpen _ params:Parameters _ &{ return options.strict !== true; }
81
+ {
82
+ const s = location().start.offset;
83
+ const e = location().end.offset;
84
+ return { type: 'custom_function', name: name.join(''), start: s, end: e,
85
+ children: [po, ...params.map(p => ({ ...p, end: e })),
86
+ mkError(e, e, 'unclosedFunctionParen', { wip: true })] };
87
+ }
88
+ / '@' name:[a-z0-9_-]i+ po:ParenOpen _ &{ return options.strict !== true; }
89
+ {
90
+ const e = location().end.offset;
91
+ return { type: 'custom_function', name: name.join(''),
92
+ start: location().start.offset, end: e,
93
+ children: [po, mkError(e, e, 'unclosedFunctionParen', { wip: true })] };
94
+ }
95
+ / '@' name:[a-z0-9_-]i+
96
+ { return { type: 'custom_function', name: name.join(''), children: [],
97
+ start: location().start.offset, end: location().end.offset } }
98
+
99
+ Function
100
+ = id:SymbolIdentifier po:ParenOpen _ params:Parameters? _ pc:ParenClose
101
+ { return { type: 'function', name: id.name,
102
+ children: [po, ...(params || []), pc],
103
+ start: location().start.offset, end: location().end.offset } }
104
+ / id:SymbolIdentifier po:ParenOpen _ params:Parameters _ "," _ &{ return options.strict !== true; }
105
+ {
106
+ const s = location().start.offset;
107
+ const e = location().end.offset;
108
+ if (params.length === 0) {
109
+ return { type: 'function', name: id.name, start: s, end: e,
110
+ children: [po, mkError(po.end, e, 'emptyFunctionParam')] };
111
+ }
112
+ return { type: 'function', name: id.name, start: s, end: e,
113
+ children: [po, ...params.map(p => ({ ...p, end: e })),
114
+ mkError(po.end, e, 'trailingFunctionComma', { wip: true })] };
115
+ }
116
+ / id:SymbolIdentifier po:ParenOpen _ ic:InvalidParamContent _ pc:ParenClose &{ return options.strict !== true; }
117
+ {
118
+ return { type: 'function', name: id.name,
119
+ start: location().start.offset, end: location().end.offset,
120
+ children: [po, ic, pc] };
121
+ }
122
+ / id:SymbolIdentifier po:ParenOpen !. &{ return options.strict !== true; }
123
+ {
124
+ return { type: 'function', name: id.name,
125
+ start: location().start.offset, end: location().end.offset,
126
+ children: [po, mkError(po.end, po.end, 'unclosedFunctionParen', { wip: true })] };
127
+ }
128
+ / id:SymbolIdentifier po:ParenOpen _ params:Parameters _ &{ return options.strict !== true; }
129
+ {
130
+ const s = location().start.offset;
131
+ const e = location().end.offset;
132
+ return { type: 'function', name: id.name, start: s, end: e,
133
+ children: [po, ...params.map(p => ({ ...p, end: e })),
134
+ mkError(e, e, 'unclosedFunctionParen', { wip: true })] };
135
+ }
136
+ / id:SymbolIdentifier po:ParenOpen _ &{ return options.strict !== true; }
137
+ {
138
+ const e = location().end.offset;
139
+ return { type: 'function', name: id.name,
140
+ start: location().start.offset, end: e,
141
+ children: [po, mkError(e, e, 'unclosedFunctionParen', { wip: true })] };
142
+ }
143
+
144
+ InvalidParamContent
145
+ = (!ParenClose .)+ {
146
+ return mkError(location().start.offset, location().end.offset, 'invalidMethodChainSyntax');
147
+ }
148
+
149
+ ParenOpen
150
+ = '(' { return { type: 'paren_open', start: location().start.offset, end: location().end.offset } }
151
+
152
+ ParenClose
153
+ = ')' { return { type: 'paren_close', start: location().start.offset, end: location().end.offset } }
154
+
155
+ Parameters
156
+ = Parameter|.., _ ',' _|
157
+
158
+ // Chain is only attempted when the input starts with a valid chain character
159
+ // (SymbolIdentifier first char, @, or [). This ensures non-identifier content
160
+ // (e.g. bare digits) falls through to InvalidParamContent rather than being
161
+ // wrapped in a Chain containing an error node.
162
+ Parameter
163
+ = (str:String { return { type: 'string', value: str, start: location().start.offset, end: location().end.offset}})
164
+ / (num:Number { return { type: 'number', value: num, start: location().start.offset, end: location().end.offset}})
165
+ / Array
166
+ / &(SymbolIdentifier / "@" / LiteralIdentifier) chain:Chain { return chain; }
167
+
168
+ LiteralIdentifier
169
+ = '[' id:NonEmptyString ']' { return { type: 'identifier', name: id,
170
+ start: location().start.offset, end: location().end.offset } }
171
+
172
+ SymbolIdentifier
173
+ = first:[a-zA-Z0-9_] rest:[a-zA-Z0-9_-]* { return { type: 'identifier', name: first + rest.join(''),
174
+ start: location().start.offset, end: location().end.offset } }
175
+
176
+ NonEmptyString
177
+ = "'" chars:StringChar+ "'" { return chars.join('') }
178
+
179
+ String
180
+ = "'" chars:StringChar* "'" { return chars.join('') }
181
+
182
+ Array
183
+ = '[' _ items:ArrayItems? _ ']' {
184
+ return {
185
+ type: 'array',
186
+ children: items || [],
187
+ start: location().start.offset,
188
+ end: location().end.offset
189
+ }
190
+ }
191
+
192
+ ArrayItems
193
+ = ArrayItem|.., _ ',' _|
194
+
195
+ ArrayItem
196
+ = (str:String { return { type: 'string', value: str}})
197
+ / (num:Number { return { type: 'number', value: num}})
198
+
199
+ StringChar
200
+ = !(Quote / "\\") char:. { return char }
201
+ / "\\" char:Escapables { return char }
202
+
203
+ Number
204
+ = _ '#'[0-9]+(Dot[0-9]+)? { return parseFloat(text().substr(1)) }
205
+
206
+ Escapables
207
+ = Escape / Quote
208
+
209
+ Escape
210
+ = '\\'
211
+
212
+ Dot
213
+ = '.'
214
+
215
+ Quote
216
+ = "'"
217
+
218
+ _ "whitespace"
219
+ = [ \t\n\r]*
@@ -0,0 +1,154 @@
1
+ /**
2
+ * ===========================================================================
3
+ * Run bin/smart_text_input_parser/generate.sh after making change
4
+ * See parser.js in this directory for generated output
5
+ * ===========================================================================
6
+ *
7
+ * SmartTextInput grammar — superset of the method chain grammar.
8
+ *
9
+ * Imports the method chain parser's Chain rule and adds:
10
+ * - {{...}} Handlebars delimiter handling
11
+ * - ${...} Code delimiter handling
12
+ * - Top-level text handling (catch-all Text rule)
13
+ *
14
+ * Two start rules:
15
+ * - Root (default) — for interpolation mode: value may contain {{...}}, ${...}, and text
16
+ * - ChainRoot — for method-chain mode: the entire value is one Chain expression
17
+ */
18
+
19
+ import Chain from "../method-chain/parser.js"
20
+
21
+ {{
22
+ function mkNode(type, start, end, children) {
23
+ return { type, start, end, children: children || [] };
24
+ }
25
+ function mkError(start, end, kind, extra) {
26
+ return { type: 'error', start, end, ...(kind ? { kind } : {}), ...(extra || {}) };
27
+ }
28
+ function hasErrors(node) {
29
+ if (!node || typeof node !== 'object') return false;
30
+ if (node.type === 'error') return true;
31
+ const children = node.children || [];
32
+ return children.some(hasErrors);
33
+ }
34
+ }}
35
+
36
+ // Default start rule: interpolation mode.
37
+ Root
38
+ = children:TopLevel* {
39
+ const node = mkNode('root', 0, input.length, children);
40
+ if (options.strict === true && hasErrors(node)) { error('Invalid expression'); }
41
+ return node;
42
+ }
43
+
44
+ // Method-chain start rule: the entire value is a Chain expression.
45
+ // Chain (with strict:false option) returns an AST with error nodes for invalid input.
46
+ ChainRoot
47
+ = chain:Chain {
48
+ return mkNode('root', 0, input.length, [chain]);
49
+ }
50
+
51
+ TopLevel
52
+ = &{ return !!options.allowHandlebars } node:Handlebars { return node; }
53
+ / &{ return !!options.allowCode } node:Code { return node; }
54
+ / Text
55
+
56
+ // ---- Handlebars: {{chain}} ----
57
+ // Uses imported Chain (full workflow syntax with functions/params) inside delimiters.
58
+ // Chain with strict:false returns error-node ASTs instead of throwing, so both
59
+ // the closed and unclosed forms just need two alternatives.
60
+
61
+ Handlebars
62
+ = "{{" chain:Chain "}}" {
63
+ const s = location().start.offset;
64
+ const e = location().end.offset;
65
+ return mkNode('handlebars', s, e, [
66
+ mkNode('hb_open', s, s + 2),
67
+ chain,
68
+ mkNode('hb_close', e - 2, e),
69
+ ]);
70
+ }
71
+ / "{{" chain:Chain {
72
+ const s = location().start.offset;
73
+ const e = location().end.offset;
74
+ return mkNode('handlebars', s, e, [
75
+ mkNode('hb_open', s, s + 2),
76
+ chain,
77
+ mkError(e, e, 'unclosedHandlebars'),
78
+ ]);
79
+ }
80
+ / "{{" "}}" {
81
+ const s = location().start.offset;
82
+ const e = location().end.offset;
83
+ return mkNode('handlebars', s, e, [
84
+ mkNode('hb_open', s, s + 2),
85
+ mkError(s + 2, s + 2, 'emptyHandlebars'),
86
+ mkNode('hb_close', e - 2, e),
87
+ ]);
88
+ }
89
+ / "{{" {
90
+ const s = location().start.offset;
91
+ const e = location().end.offset;
92
+ return mkNode('handlebars', s, e, [
93
+ mkNode('hb_open', s, s + 2),
94
+ mkError(e, e, 'unclosedHandlebars'),
95
+ ]);
96
+ }
97
+
98
+ // ---- Code: ${...} ----
99
+ // Treats content inside ${...} as opaque text rather than a chain expression.
100
+ // The inner content is emitted as a single code node regardless of what is typed.
101
+ // Closed form (with matching close brace) and open-ended form (unclosed) are both handled.
102
+
103
+ Code
104
+ = "${" CodeContent "}" {
105
+ const s = location().start.offset;
106
+ const e = location().end.offset;
107
+ return mkNode('code', s, e, [
108
+ mkNode('code_open', s, s + 2),
109
+ { type: 'code', start: s + 2, end: e - 1 },
110
+ mkNode('code_close', e - 1, e),
111
+ ]);
112
+ }
113
+ / "${" CodeContent {
114
+ const s = location().start.offset;
115
+ const e = location().end.offset;
116
+ return mkNode('code', s, e, [
117
+ mkNode('code_open', s, s + 2),
118
+ { type: 'code', start: s + 2, end: e },
119
+ ]);
120
+ }
121
+
122
+ // Content inside ${...}: any characters that are not a new delimiter start or the closing brace.
123
+ CodeContent = (!("${" / "}" / "{{") .)*
124
+
125
+ // ---- Primitives ----
126
+
127
+ DotNode
128
+ = "." {
129
+ return { type: 'dot', start: location().start.offset, end: location().end.offset };
130
+ }
131
+
132
+ // Optional whitespace (spaces and tabs only).
133
+ _ = [ \t]*
134
+
135
+ // Plain text: any run of characters. Stops at {{...}} or ${...} only when the
136
+ // corresponding expression type is enabled (allowHandlebars / allowCode options).
137
+ Text
138
+ = chars:TextChar+ {
139
+ const s = location().start.offset;
140
+ const e = location().end.offset;
141
+ return mkNode('text', s, e);
142
+ }
143
+
144
+ // A single character that is not the start of an enabled expression delimiter.
145
+ TextChar
146
+ = !(EnabledHandlebarsStart / EnabledCodeStart) .
147
+
148
+ // Matches "{{" only when handlebars expressions are enabled.
149
+ EnabledHandlebarsStart
150
+ = &{ return !!options.allowHandlebars } "{{"
151
+
152
+ // Matches "${" only when code expressions are enabled.
153
+ EnabledCodeStart
154
+ = &{ return !!options.allowCode } "${"
@@ -1,2 +1,2 @@
1
- import { t as Spacer_default } from "../../Spacer-D58qwuXR.mjs";
1
+ import { t as Spacer_default } from "../../Spacer-BFOuo0sZ.mjs";
2
2
  export { Spacer_default as default };
@@ -1,2 +1,2 @@
1
- import { t as Spinner } from "../../Spinner-gBNWIwOn.mjs";
1
+ import { t as Spinner } from "../../Spinner-BDa0D1ze.mjs";
2
2
  export { Spinner, Spinner as default };
@@ -1,2 +1,2 @@
1
- import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-DgC83-nw.mjs";
1
+ import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-8KGPQp0u.mjs";
2
2
  export { HStack, HStackProps, Stack, Stack as default, StackProps };
@@ -1,2 +1,2 @@
1
- import { n as Stack, t as HStack } from "../../Stack-BqQndGI9.mjs";
1
+ import { n as Stack, t as HStack } from "../../Stack-ChsImaEY.mjs";
2
2
  export { HStack, Stack, Stack as default };
@@ -1,2 +1,2 @@
1
- import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-qvWkqEMw.mjs";
1
+ import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-Bf9rhSkv.mjs";
2
2
  export { LabelBackgrounds, STICKER_COLOR_CONFIG, Sticker, Sticker as default, StickerContainer, StickerContentContainer, StickerProps, StyledTruncatedText };
@@ -1,2 +1,2 @@
1
- import { a as StyledTruncatedText, i as StickerContentContainer, n as Sticker, r as StickerContainer, t as STICKER_COLOR_CONFIG } from "../../Sticker-BDyejPZa.mjs";
1
+ import { a as StyledTruncatedText, i as StickerContentContainer, n as Sticker, r as StickerContainer, t as STICKER_COLOR_CONFIG } from "../../Sticker-C3Eb13OQ.mjs";
2
2
  export { STICKER_COLOR_CONFIG, Sticker, Sticker as default, StickerContainer, StickerContentContainer, StyledTruncatedText };
@@ -1,2 +1,2 @@
1
- import { a as TabContainer, i as TabBar, n as StyledTab, r as Tab, t as TabBarIconButton_default } from "../../TabBar-B__54oO3.mjs";
1
+ import { a as TabContainer, i as TabBar, n as StyledTab, r as Tab, t as TabBarIconButton_default } from "../../TabBar-RenaeJJ6.mjs";
2
2
  export { StyledTab, Tab, TabBar, TabBar as default, TabBarIconButton_default as TabBarIconButton, TabContainer };