@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.
- package/CHANGELOG.md +18 -0
- package/dist/{Action-C2FTJhnQ.d.mts → Action-C7INft7X.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +2 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +3 -3
- package/dist/{Badge-BtNIvtDZ.mjs → Badge-BD0Ut46g.mjs} +2 -2
- package/dist/{Badge-BtNIvtDZ.mjs.map → Badge-BD0Ut46g.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumb-BlAhp45l.d.mts → Breadcrumb-DtW1R9xW.d.mts} +2 -2
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-DdZ14ZFw.d.mts → Breadcrumbs-B6JyoS8n.d.mts} +2 -2
- package/dist/{Breadcrumbs-ClKHNIr-.mjs → Breadcrumbs-CCmf8oZ4.mjs} +9 -9
- package/dist/Breadcrumbs-CCmf8oZ4.mjs.map +1 -0
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-CTgyA3gc.d.mts → Button-HodDf_bB.d.mts} +18 -9
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-_gM6U5ET.d.mts → Calendar-DrdTvzAa.d.mts} +1 -1
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-Dorym91P.d.mts → Card-CpDwATnX.d.mts} +3 -3
- package/dist/{Card-vQIPtdXi.mjs → Card-Dz6jqJuJ.mjs} +4 -4
- package/dist/{Card-vQIPtdXi.mjs.map → Card-Dz6jqJuJ.mjs.map} +1 -1
- package/dist/Card.d.mts +1 -1
- package/dist/Card2.d.mts +2 -2
- package/dist/{CardV2-CFTjYWoO.mjs → CardV2-Y_kRfd-R.mjs} +9 -9
- package/dist/{CardV2-CFTjYWoO.mjs.map → CardV2-Y_kRfd-R.mjs.map} +1 -1
- package/dist/{Checkbox-DRJXDs2T.d.mts → Checkbox-C-hMfItK.d.mts} +1 -1
- package/dist/{Checkbox-CyeitZ5q.mjs → Checkbox-DBAXDIQf.mjs} +4 -4
- package/dist/{Checkbox-CyeitZ5q.mjs.map → Checkbox-DBAXDIQf.mjs.map} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-Ddas5FN-.mjs → Combobox-CNdpK8VG.mjs} +10 -10
- package/dist/{Combobox-Ddas5FN-.mjs.map → Combobox-CNdpK8VG.mjs.map} +1 -1
- package/dist/{Combobox-DX4DLe1b.d.mts → Combobox-CPE-IV79.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-Ds_i3K2m.d.mts → ComboboxBase-B3Es1y9g.d.mts} +5 -5
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-S6oFJcOS.d.mts → ComboboxMultiSelect-4sRA7oL0.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-DFzCwW1Y.d.mts → ComboboxSingleSelect-DVPznL7L.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-DEqItiZr.d.mts → CompactBar-DhHh7Roq.d.mts} +3 -3
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-DcsM-u8o.mjs → ConfigFormGroup-4lUy7CZH.mjs} +2 -2
- package/dist/{ConfigFormGroup-DcsM-u8o.mjs.map → ConfigFormGroup-4lUy7CZH.mjs.map} +1 -1
- package/dist/{ControlBar-BVG5Pbvh.d.mts → ControlBar-C8kagIck.d.mts} +2 -2
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable.d.mts +4 -4
- package/dist/{DateField-CBCo8_d3.d.mts → DateField-2aigfD4u.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-DTT-mJ8r.mjs → DatePicker-CSd20-CW.mjs} +8 -8
- package/dist/{DatePicker-DTT-mJ8r.mjs.map → DatePicker-CSd20-CW.mjs.map} +1 -1
- package/dist/{DatePicker-BZ4_I4Db.d.mts → DatePicker-DC_RKjdM.d.mts} +2 -2
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-BMKJquPT.d.mts → DateRangePicker-ByD6IsLB.d.mts} +3 -3
- package/dist/DateRangePicker.d.mts +1 -1
- package/dist/DateRangeValueControl.d.mts +2 -2
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-DV5if_uG.mjs → DropdownButton-gmGRrD1z.mjs} +3 -3
- package/dist/{DropdownButton-DV5if_uG.mjs.map → DropdownButton-gmGRrD1z.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-DovtBJBs.mjs → DropdownMenu-I5WDO-q5.mjs} +2 -2
- package/dist/{DropdownMenu-DovtBJBs.mjs.map → DropdownMenu-I5WDO-q5.mjs.map} +1 -1
- package/dist/{DropdownMenu-CbhEzWy1.d.mts → DropdownMenu-eP6v6XE4.d.mts} +2 -2
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-7eWoxSes.d.mts → ErrorProps-Dgu98PkH.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-BslyuPZw.d.mts → FieldRegistry-BtdqMYUD.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-DjZE4PoB.d.mts → FilterBar-CAnqGXgE.d.mts} +4 -4
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +2 -2
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +1 -1
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/{FormControl-BvRzRknE.mjs → FormControl-CButLg9b.mjs} +4 -4
- package/dist/{FormControl-BvRzRknE.mjs.map → FormControl-CButLg9b.mjs.map} +1 -1
- package/dist/{FormControl-gpLZZpNs.d.mts → FormControl-CJfYdgZF.d.mts} +2 -2
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-BDJ6zNE6.mjs → FormField-BHUeWCsa.mjs} +16 -16
- package/dist/{FormField-BDJ6zNE6.mjs.map → FormField-BHUeWCsa.mjs.map} +1 -1
- package/dist/{FormField-CZXKvCGt.d.mts → FormField-CK8o1sMB.d.mts} +2 -2
- package/dist/FormField.d.mts +1 -1
- package/dist/{Header-1laYnwRP.d.mts → Header-ZnHGm8fs.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-BPJS3EwC.d.mts → HelperTooltip-CQpPO16Q.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/{HoverCopyableField-WP6DPjy1.mjs → HoverCopyableField-B89NIwlE.mjs} +6 -6
- package/dist/{HoverCopyableField-WP6DPjy1.mjs.map → HoverCopyableField-B89NIwlE.mjs.map} +1 -1
- package/dist/{IconButton-CnJNIJVQ.mjs → IconButton-CqTPMhjV.mjs} +12 -5
- package/dist/IconButton-CqTPMhjV.mjs.map +1 -0
- package/dist/{IconButton-PnrnqQ1s.d.mts → IconButton-zu-VNp1h.d.mts} +2 -2
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +1 -1
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-DbfwNzS_.mjs → Input-C-TwCer2.mjs} +4 -4
- package/dist/{Input-DbfwNzS_.mjs.map → Input-C-TwCer2.mjs.map} +1 -1
- package/dist/{Input-Diztxhle.d.mts → Input-Ce8FvSYf.d.mts} +3 -3
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-BILq1X-n.d.mts → InputProps-B1Xod4wm.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/Link.d.mts +2 -2
- package/dist/{ListBox-CXh9Jfb-.mjs → ListBox-BHE4DO2l.mjs} +9 -9
- package/dist/{ListBox-CXh9Jfb-.mjs.map → ListBox-BHE4DO2l.mjs.map} +1 -1
- package/dist/{ListBox-P1eTecdo.d.mts → ListBox-CCBWdAUR.d.mts} +3 -3
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField.d.mts +2 -2
- package/dist/{LoadingShimmer-DeVCDCjT.mjs → LoadingShimmer-JyGh7M7V.mjs} +1 -1
- package/dist/{LoadingShimmer-DeVCDCjT.mjs.map → LoadingShimmer-JyGh7M7V.mjs.map} +1 -1
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-DtZYOzQ8.d.mts → LogicRow-DmI8NKrI.d.mts} +3 -3
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/{Menu-_loh8pe3.d.mts → Menu-C8RxFGOG.d.mts} +3 -3
- package/dist/{Menu-CAGTCBqj.mjs → Menu-xENvm-Oa.mjs} +2 -2
- package/dist/{Menu-CAGTCBqj.mjs.map → Menu-xENvm-Oa.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-wpvRRTaa.mjs → PageHeader-7GBfUjU_.mjs} +3 -3
- package/dist/{PageHeader-wpvRRTaa.mjs.map → PageHeader-7GBfUjU_.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageSelector-CIa3Zts9.d.mts → PageSelector-BMz2Q4P6.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-wjr3W3xf.mjs → Pagination-BxNqU2yh.mjs} +5 -5
- package/dist/{Pagination-wjr3W3xf.mjs.map → Pagination-BxNqU2yh.mjs.map} +1 -1
- package/dist/{Pagination-C2eZEM7K.d.mts → Pagination-ne9hnVoe.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-Bm-qkweh.mjs → Pii-B29k0Omf.mjs} +2 -2
- package/dist/{Pii-Bm-qkweh.mjs.map → Pii-B29k0Omf.mjs.map} +1 -1
- package/dist/{PillShell-D6dN9sWk.d.mts → PillShell-D9iQyM-8.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-DUyzmq3e.mjs → Popover-Dn3xmzSK.mjs} +3 -3
- package/dist/{Popover-DUyzmq3e.mjs.map → Popover-Dn3xmzSK.mjs.map} +1 -1
- package/dist/{PseudoClassProps-DnlHhW5u.d.mts → PseudoClassProps-CdRF3QNn.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-CkugnL91.mjs → Radio-BRPoGITE.mjs} +2 -2
- package/dist/{Radio-CkugnL91.mjs.map → Radio-BRPoGITE.mjs.map} +1 -1
- package/dist/{RadioGroup-8dI8gljw.mjs → RadioGroup-CahrWsXi.mjs} +2 -2
- package/dist/{RadioGroup-8dI8gljw.mjs.map → RadioGroup-CahrWsXi.mjs.map} +1 -1
- package/dist/{RadioGroup-Dg_gydUp.d.mts → RadioGroup-CxL6LW4q.d.mts} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/RangeCalendar-B7TwRJbg.d.mts +40 -0
- package/dist/RangeCalendar.d.mts +2 -40
- package/dist/RangeCalendarPresets.d.mts +1 -1
- package/dist/RouterContext-B7N12wkK.d.mts +11 -0
- package/dist/RouterContext-CsPnkNdI.mjs +26 -0
- package/dist/RouterContext-CsPnkNdI.mjs.map +1 -0
- package/dist/RouterContext.d.mts +2 -0
- package/dist/RouterLink-Bq36EGjc.d.mts +8 -0
- package/dist/RouterLink.d.mts +2 -0
- package/dist/RuleEditorFields.d.mts +2 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-CNg109M5.d.mts → SearchInput-D69WxMNq.d.mts} +2 -2
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-DQE0hN57.mjs → SegmentedControl-DLkAC2kW.mjs} +2 -2
- package/dist/{SegmentedControl-DQE0hN57.mjs.map → SegmentedControl-DLkAC2kW.mjs.map} +1 -1
- package/dist/{SegmentedControl-BBIHKcvo.d.mts → SegmentedControl-vCnGsdXo.d.mts} +1 -1
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-wnr46ROZ.d.mts → Select-CpRijO_l.d.mts} +3 -3
- package/dist/{Select-D9OVjzPR.mjs → Select-YOgn_uD0.mjs} +7 -7
- package/dist/{Select-D9OVjzPR.mjs.map → Select-YOgn_uD0.mjs.map} +1 -1
- package/dist/Select.d.mts +1 -1
- package/dist/{Spacer-D58qwuXR.mjs → Spacer-BFOuo0sZ.mjs} +1 -1
- package/dist/{Spacer-D58qwuXR.mjs.map → Spacer-BFOuo0sZ.mjs.map} +1 -1
- package/dist/{Spinner-gBNWIwOn.mjs → Spinner-BDa0D1ze.mjs} +1 -1
- package/dist/{Spinner-gBNWIwOn.mjs.map → Spinner-BDa0D1ze.mjs.map} +1 -1
- package/dist/{Stack-DgC83-nw.d.mts → Stack-8KGPQp0u.d.mts} +1 -1
- package/dist/{Stack-BqQndGI9.mjs → Stack-ChsImaEY.mjs} +1 -1
- package/dist/{Stack-BqQndGI9.mjs.map → Stack-ChsImaEY.mjs.map} +1 -1
- package/dist/Stack.d.mts +1 -1
- package/dist/{Sticker-qvWkqEMw.d.mts → Sticker-Bf9rhSkv.d.mts} +4 -4
- package/dist/{Sticker-BDyejPZa.mjs → Sticker-C3Eb13OQ.mjs} +3 -3
- package/dist/{Sticker-BDyejPZa.mjs.map → Sticker-C3Eb13OQ.mjs.map} +1 -1
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/Tab.d.mts +1 -1
- package/dist/{TabBar-B__54oO3.mjs → TabBar-RenaeJJ6.mjs} +3 -3
- package/dist/{TabBar-B__54oO3.mjs.map → TabBar-RenaeJJ6.mjs.map} +1 -1
- package/dist/{Table-CPvIH27_.d.mts → Table-BefytM6w.d.mts} +1 -1
- package/dist/{Table-CqIi5mVF.mjs → Table-DaxiIS96.mjs} +4 -4
- package/dist/{Table-CqIi5mVF.mjs.map → Table-DaxiIS96.mjs.map} +1 -1
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-CQYijW_3.d.mts → TableBody-BZ34-_wV.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-C-8RxZT4.mjs → TableBox-C7ZXamI7.mjs} +10 -10
- package/dist/{TableBox-C-8RxZT4.mjs.map → TableBox-C7ZXamI7.mjs.map} +1 -1
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-CQ3zT1jG.d.mts → TableBoxCell-B7kjO76l.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +3 -3
- package/dist/{TableBoxRow-ClK2pceY.d.mts → TableBoxRow-oVGEFVOO.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CoF3DuUQ.d.mts → TableBoxRowActions-DIZw2OPP.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-BQv4ASkE.d.mts → TableCell-DorRxyke.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-CtEL3ioz.d.mts → TableControls-BtGFiZeD.d.mts} +3 -3
- package/dist/{TableControls-DplArh-9.mjs → TableControls-DxAUnR9v.mjs} +18 -18
- package/dist/{TableControls-DplArh-9.mjs.map → TableControls-DxAUnR9v.mjs.map} +1 -1
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-X-Lupvc6.d.mts → TableControlsContext-C3DYeUmB.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-DLLn0zoP.d.mts → TableHead-B0Fdldgw.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-DiJ2jyw4.d.mts → TableHeaderCell-C_7X8QAT.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-BgnUz8NO.d.mts → TableLayout-CXVVzq0e.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-Dgg8hGy5.d.mts → TableRow-Dr61XJNw.d.mts} +2 -2
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-DRxd562-.d.mts → TableViewConfigurationDropdown-CCtwcB3I.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-D6MO_IfT.mjs → TechnicalSticker-D1PqG_yT.mjs} +3 -3
- package/dist/{TechnicalSticker-D6MO_IfT.mjs.map → TechnicalSticker-D1PqG_yT.mjs.map} +1 -1
- package/dist/{Text-Dn_p7ZvT.mjs → Text-BdluS7Fy.mjs} +1 -1
- package/dist/{Text-Dn_p7ZvT.mjs.map → Text-BdluS7Fy.mjs.map} +1 -1
- package/dist/{Text-tgFz40XD.d.mts → Text-DD_W_ixb.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-BxxXQSwP.d.mts → TextArea-DOofaXJi.d.mts} +2 -2
- package/dist/{TextArea-CYirq-B2.mjs → TextArea-wwV-s5Oa.mjs} +2 -2
- package/dist/{TextArea-CYirq-B2.mjs.map → TextArea-wwV-s5Oa.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-DQVYsLqM.d.mts → TextUnderlineTooltip-BPLKU9wu.d.mts} +2 -2
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +1 -1
- package/dist/Toast.d.mts +1 -1
- package/dist/{Toggle-BmUl78kH.d.mts → Toggle-2nrUX591.d.mts} +1 -1
- package/dist/{Toggle-CqgFNIYS.mjs → Toggle-iG2x_IZR.mjs} +4 -4
- package/dist/{Toggle-CqgFNIYS.mjs.map → Toggle-iG2x_IZR.mjs.map} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-BsuYG0fw.mjs → Tooltip-C0FuZS1C.mjs} +2 -2
- package/dist/{Tooltip-BsuYG0fw.mjs.map → Tooltip-C0FuZS1C.mjs.map} +1 -1
- package/dist/{Tooltip-eSaiYjxT.d.mts → Tooltip-Cnqf1-tx.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-B2v53Y11.d.mts → TruncatedText-g2T5HlqX.d.mts} +1 -1
- package/dist/{codec-D5qlDVgU.d.mts → codec-CoX6LfOY.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-fQTsW4gq.d.mts → color-Bt0Lv1e3.d.mts} +2 -2
- package/dist/components/Attribute/index.mjs +4 -4
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +1 -1
- package/dist/components/BottomPanel/index.mjs +3 -3
- package/dist/components/Breadcrumbs/index.d.mts +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.d.mts +2 -2
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +2 -2
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/Card/index.mjs +1 -1
- package/dist/components/CardV2/index.d.mts +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/CodeHighlight/index.mjs +3 -3
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +2 -2
- package/dist/components/DataTable/TableControls/index.d.mts +19 -19
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.mjs +15 -15
- package/dist/components/DataTable/index.mjs.map +1 -1
- package/dist/components/DataTable/types.d.mts +2 -2
- package/dist/components/DatePicker/index.d.mts +6 -5
- package/dist/components/DatePicker/index.mjs +2 -2
- package/dist/components/DropdownButton/index.mjs +1 -1
- package/dist/components/DropdownMenu/index.d.mts +1 -1
- package/dist/components/DropdownMenu/index.mjs +1 -1
- package/dist/components/FloatingPanel/index.mjs +12 -12
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FormControl/index.d.mts +2 -2
- package/dist/components/FormControl/index.mjs +2 -2
- package/dist/components/FormField/index.d.mts +1 -1
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +7 -7
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/Link/index.mjs +2 -2
- package/dist/components/Link/index.mjs.map +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/LoadingShimmer/index.mjs +1 -1
- package/dist/components/MaskedInput/index.mjs +1 -1
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Menu/index.mjs +1 -1
- package/dist/components/Modal/index.mjs +7 -69
- package/dist/components/Modal/index.mjs.map +1 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.d.mts +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RightPanel/index.mjs +4 -4
- package/dist/components/SegmentedControl/index.d.mts +1 -1
- package/dist/components/SegmentedControl/index.mjs +1 -1
- package/dist/components/Select/index.d.mts +1 -1
- package/dist/components/Select/index.mjs +1 -1
- package/dist/components/Slider/index.mjs +2 -2
- package/dist/components/SmartTextInput/parser/method-chain/grammar.pegjs +219 -0
- package/dist/components/SmartTextInput/parser/smart-text/grammar.pegjs +154 -0
- package/dist/components/Spacer/index.mjs +1 -1
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/Stack/index.mjs +1 -1
- package/dist/components/Sticker/index.d.mts +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +8 -8
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +2 -2
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Text/index.d.mts +1 -1
- package/dist/components/Text/index.mjs +1 -1
- package/dist/components/TextArea/index.d.mts +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +4 -4
- package/dist/components/Toast/index.mjs +1 -1
- package/dist/components/Toggle/index.d.mts +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-zZyl7QbX.d.mts → constants-D8bzZ-7B.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/createPath-BDYRvl57.d.mts +7 -0
- package/dist/createPath.d.mts +2 -0
- package/dist/{date-filter-DMZnJwGs.mjs → date-filter-CZeChs9T.mjs} +1 -1
- package/dist/{date-filter-DMZnJwGs.mjs.map → date-filter-CZeChs9T.mjs.map} +1 -1
- package/dist/{date-range-rule-value-zJaa_jR9.d.mts → date-range-rule-value-C3wrh0jw.d.mts} +2 -2
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/{date-rule-intent-CdWv68my.d.mts → date-rule-intent-CC1LdkE7.d.mts} +3 -3
- package/dist/date-rule-intent.d.mts +1 -1
- package/dist/display.d.mts +1 -1
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{fieldSchemaTypes-COEJOqYL.d.mts → fieldSchemaTypes-BVYSm74B.d.mts} +1 -1
- package/dist/{filter-size-context-DYkfYMkX.d.mts → filter-size-context-CCfFnaib.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-BX8dSNcy.d.mts → index-D-RD2Kfg.d.mts} +2 -2
- package/dist/{index-DxIXll2Z.d.mts → index-DalP_w0c.d.mts} +2 -2
- package/dist/{index-BJr_obTf.d.mts → index-Nip77QqW.d.mts} +3 -3
- package/dist/index-bHnO4ZKt.d.mts +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index2.d.mts +1 -1
- package/dist/index3.d.mts +3 -3
- package/dist/index4.d.mts +1 -1
- package/dist/index5.d.mts +14 -14
- package/dist/{input-DN_8iHVD.d.mts → input-DCJivcWf.d.mts} +3 -3
- package/dist/inputFields.d.mts +10 -10
- package/dist/{intersperse-CRUnXmnu.mjs → intersperse-DQAyfeEw.mjs} +1 -1
- package/dist/{intersperse-CRUnXmnu.mjs.map → intersperse-DQAyfeEw.mjs.map} +1 -1
- package/dist/{jsonSchema-B1VonQij.d.mts → jsonSchema-c_EfAj8y.d.mts} +2 -2
- package/dist/lib/PDSProvider.d.mts +3 -1
- package/dist/lib/PDSProvider.mjs +6 -2
- package/dist/lib/PDSProvider.mjs.map +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/color.d.mts +1 -1
- package/dist/lib/date-filter/index.d.mts +2 -2
- package/dist/lib/date-filter/index.mjs +1 -1
- package/dist/lib/fieldSchemaTypes.d.mts +1 -1
- package/dist/lib/jsonSchema.d.mts +1 -1
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/methodChain.d.mts +1 -1
- package/dist/lib/objectSchemaTypes.d.mts +1 -1
- package/dist/lib/pseudoClass.d.mts +1 -1
- package/dist/lib/router/adapters/reactRouter.d.mts +9 -0
- package/dist/lib/router/adapters/reactRouter.mjs +26 -0
- package/dist/lib/router/adapters/reactRouter.mjs.map +1 -0
- package/dist/lib/router/adapters/tanstack.d.mts +9 -0
- package/dist/lib/router/adapters/tanstack.mjs +65 -0
- package/dist/lib/router/adapters/tanstack.mjs.map +1 -0
- package/dist/lib/router/index.d.mts +6 -0
- package/dist/lib/router/index.mjs +3 -0
- package/dist/lib/semanticColor.d.mts +1 -1
- package/dist/lib/useModalInsetRight.mjs +69 -0
- package/dist/lib/useModalInsetRight.mjs.map +1 -0
- package/dist/{message-DfEpU8lV.d.mts → message-CjIHdhX1.d.mts} +1 -1
- package/dist/mixins/focus.d.mts +1 -1
- package/dist/mixins/hoverable.d.mts +2 -2
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/menuItem.d.mts +2 -2
- package/dist/mixins/text.d.mts +1 -1
- package/dist/navigationEvents.d.mts +6 -0
- package/dist/{operators-F8X0hyQB.d.mts → operators-C4yL6qbl.d.mts} +2 -2
- package/dist/operators.d.mts +1 -1
- package/dist/{palette-BANY1Xfs.d.mts → palette-qgPRWgUN.d.mts} +3 -3
- package/dist/palette.d.mts +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
- package/dist/reactRouterFallback.d.mts +11 -0
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/router-7FYDW80v.mjs +112 -0
- package/dist/router-7FYDW80v.mjs.map +1 -0
- package/dist/{semantic-Dy7mTyBP.d.mts → semantic-DUctmpu_.d.mts} +1 -1
- package/dist/{semanticColor-DkVQjcbc.d.mts → semanticColor-IAhXS17y.d.mts} +3 -3
- package/dist/{text-BaQdW8qa.d.mts → text-DjTGRUM1.d.mts} +1 -1
- package/dist/{theme-D02MOaH6.d.mts → theme-DKiszVRN.d.mts} +3 -3
- package/dist/theme.d.mts +1 -1
- package/dist/tone.d.mts +3 -3
- package/dist/{types-C2s9yhgO.d.mts → types-B8aAvU2a2.d.mts} +2 -2
- package/dist/{types-Ok2lRZeu.d.mts → types-CcZbBH0e.d.mts} +1 -1
- package/dist/types-CuQSgl1F.d.mts +36 -0
- package/dist/{types-COeginAF.d.mts → types-D8rWSj3z.d.mts} +1 -1
- package/dist/{types-1_JSe9Wr.d.mts → types-I9z-0m7q.d.mts} +2 -2
- package/dist/{types-CtLY82w5.d.mts → types-RWjW1d9I.d.mts} +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/types2.d.mts +2 -2
- package/dist/types3.d.mts +2 -2
- package/dist/types4.d.mts +2 -2
- package/dist/types5.d.mts +2 -2
- package/dist/types6.d.mts +2 -0
- package/dist/{url-state-DP78aDol.d.mts → url-state-BOkOTKNZ.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-DC2rGXHK.d.mts → useFilterStateV2-CjXG2vjy.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-C-K1lgmv.mjs → useFormField-C61u9KvG.mjs} +2 -2
- package/dist/{useFormField-C-K1lgmv.mjs.map → useFormField-C61u9KvG.mjs.map} +1 -1
- package/dist/{useFormField--_14te0K.d.mts → useFormField-DDbo-ExT.d.mts} +2 -2
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-y-duFylq.mjs → useFormGroup-C89-oI4w.mjs} +1 -1
- package/dist/{useFormGroup-y-duFylq.mjs.map → useFormGroup-C89-oI4w.mjs.map} +1 -1
- package/dist/useLocationPathname-K2N4fw8j.d.mts +5 -0
- package/dist/useLocationPathname.d.mts +2 -0
- package/dist/{useTableBoxDragAndDrop-DkCxC7Mi.d.mts → useTableBoxDragAndDrop-CbbH3pMK.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/{useToggle-0zLL1E7s.mjs → useToggle-DUHQjohK.mjs} +1 -1
- package/dist/{useToggle-0zLL1E7s.mjs.map → useToggle-DUHQjohK.mjs.map} +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/{utilities-C1hOxjt_.d.mts → utilities-D0EhDri-.d.mts} +1 -1
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/storybook.mjs +1 -1
- package/dist/utils/testing.d.mts +2 -0
- package/dist/utils/testing.mjs +10 -6
- package/dist/utils/testing.mjs.map +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/{validation-CpDsI-TM.d.mts → validation-C07D6XjI.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-DhaqxKmK.d.mts → value-control-resolver-zYNPNlRW.d.mts} +2 -2
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/variables/effect.d.mts +1 -1
- package/dist/variables/semantic.d.mts +1 -1
- package/llms.txt +2 -1
- package/package.json +16 -3
- package/skills/design-system-component-authoring/SKILL.md +79 -0
- package/skills/design-system-component-authoring/clarifying-scope.md +18 -0
- package/skills/design-system-component-authoring/component-conventions.md +70 -0
- package/skills/design-system-component-authoring/prop-interface-patterns.md +30 -0
- package/skills/ui-authoring/SKILL.md +28 -0
- package/dist/Breadcrumbs-ClKHNIr-.mjs.map +0 -1
- package/dist/IconButton-CnJNIJVQ.mjs.map +0 -1
- /package/dist/{index-1-AkepUA.d.mts → index-B33elXxm.d.mts} +0 -0
- /package/dist/{index-7rWKHdox.d.mts → index-BwAfCVZH2.d.mts} +0 -0
- /package/dist/{index-BFnNtGdX.d.mts → index-C6HcjJiY.d.mts} +0 -0
- /package/dist/{index-BPiqSRRl.d.mts → index-CRo77wc3.d.mts} +0 -0
- /package/dist/{index-BSVhZrWN.d.mts → index-CX869wwk.d.mts} +0 -0
- /package/dist/{index-BYd3Btr1.d.mts → index-CjDodOH2.d.mts} +0 -0
- /package/dist/{index-CMuRFTR3.d.mts → index-CoUVmp_Q.d.mts} +0 -0
- /package/dist/{index-Ci-uuV07.d.mts → index-CsuikFeJ.d.mts} +0 -0
- /package/dist/{index-CknANNvQ2.d.mts → index-CzItj62a.d.mts} +0 -0
- /package/dist/{index-CtJuGxUp.d.mts → index-D13oYj4_.d.mts} +0 -0
- /package/dist/{index-CuheJfs-.d.mts → index-D4DUvwPf.d.mts} +0 -0
- /package/dist/{index-DWfPppPU.d.mts → index-DMRtRo7y.d.mts} +0 -0
- /package/dist/{index-DYX_PQ7T2.d.mts → index-DXJd7-2Z.d.mts} +0 -0
- /package/dist/{index-De7MV8-j.d.mts → index-DeVKzGce.d.mts} +0 -0
- /package/dist/{index-N-OgGgfF.d.mts → index-Dflz2i1X.d.mts} +0 -0
- /package/dist/{index-VWno75SQ.d.mts → index-DkrC-i1D.d.mts} +0 -0
- /package/dist/{index-hcx6LMSC.d.mts → index-DztUdPP_.d.mts} +0 -0
- /package/dist/{index-uY8Qbwfx.d.mts → index-Rvd9MEUQ.d.mts} +0 -0
- /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-
|
|
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-
|
|
2
|
-
import { r as PageSelector, t as PAGE_LIMIT_BEFORE_SCROLL_MODE } from "../../PageSelector-
|
|
3
|
-
import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "../../constants-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3
|
-
import { n as Stack, t as HStack } from "../../Stack-
|
|
4
|
-
import { t as IconButton } from "../../IconButton-
|
|
5
|
-
import { t as LoadingShimmer } from "../../LoadingShimmer-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 };
|