@persona/design-system 0.2.0 → 0.3.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 +24 -0
- package/dist/{Action-B25g4O9p.d.mts → Action-CnNf5T-l.d.mts} +2 -2
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +3 -3
- package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +4 -4
- package/dist/AttributeGrid.d.mts +1 -1
- package/dist/{Badge-Bd_k492g.mjs → Badge-BqS6Nk4J.mjs} +2 -2
- package/dist/{Badge-Bd_k492g.mjs.map → Badge-BqS6Nk4J.mjs.map} +1 -1
- package/dist/Banner.d.mts +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumbs-C9udlH48.mjs → Breadcrumbs-CqKtnZqu.mjs} +11 -11
- package/dist/{Breadcrumbs-C9udlH48.mjs.map → Breadcrumbs-CqKtnZqu.mjs.map} +1 -1
- package/dist/{Button-KCl4uRtU.d.mts → Button-C0F0F2IL.d.mts} +3 -3
- package/dist/Button.d.mts +1 -1
- package/dist/ButtonGroup.d.mts +1 -1
- package/dist/Calendar-BvLNcHQM.d.mts +12 -0
- package/dist/Calendar.d.mts +2 -12
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-CLTkZLKr.mjs → Card-BMCB9eFC.mjs} +4 -4
- package/dist/{Card-CLTkZLKr.mjs.map → Card-BMCB9eFC.mjs.map} +1 -1
- package/dist/{Card-8DuhHQIk.d.mts → Card-BxNoIQWw.d.mts} +4 -4
- package/dist/Card.d.mts +1 -1
- package/dist/Card2.d.mts +2 -2
- package/dist/{CardV2-_GfXFd3d.mjs → CardV2-B0ZweQYk.mjs} +25 -19
- package/dist/CardV2-B0ZweQYk.mjs.map +1 -0
- package/dist/{Checkbox-Bmm-r5ei.d.mts → Checkbox-Bm8exUfH.d.mts} +1 -1
- package/dist/{Checkbox-D77Rg7La.mjs → Checkbox-DAvbgZgO.mjs} +8 -8
- package/dist/Checkbox-DAvbgZgO.mjs.map +1 -0
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField.d.mts +2 -2
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-DVI8PoKx.d.mts → Combobox-C8ue0cBP.d.mts} +3 -3
- package/dist/{Combobox-BzqlrMK0.mjs → Combobox-xBrxiUAu.mjs} +21 -21
- package/dist/Combobox-xBrxiUAu.mjs.map +1 -0
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-B8evOZpf.d.mts → ComboboxBase-DJGTMf1_.d.mts} +8 -8
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-KJarhRm4.d.mts → ComboboxMultiSelect-D7A2bbWU.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-CcIGaphR.d.mts → ComboboxSingleSelect-D1uzEyKj.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-DfP7Wu1l.d.mts → CompactBar-DMuvqaV5.d.mts} +3 -3
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-D1Qma23p.mjs → ConfigFormGroup-D2_sajXe.mjs} +3 -3
- package/dist/{ConfigFormGroup-D1Qma23p.mjs.map → ConfigFormGroup-D2_sajXe.mjs.map} +1 -1
- package/dist/{ControlBar-DYrjBDzu.d.mts → ControlBar-Dg8JeU8f.d.mts} +2 -2
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable.d.mts +4 -4
- package/dist/DateField-Com9f2-j.d.mts +23 -0
- package/dist/DateField.d.mts +2 -23
- package/dist/DatePicker-BGO6doLx.d.mts +19 -0
- package/dist/{DatePicker-CK2D9jvG.mjs → DatePicker-BlnE2MBD.mjs} +18 -17
- package/dist/{DatePicker-CK2D9jvG.mjs.map → DatePicker-BlnE2MBD.mjs.map} +1 -1
- package/dist/DatePicker.d.mts +2 -19
- package/dist/DateRangePicker-DfRBm9z4.d.mts +53 -0
- package/dist/DateRangePicker.d.mts +2 -53
- package/dist/DateRangeValueControl.d.mts +19 -0
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-CaM0itat.mjs → DropdownButton-CpWNRUma.mjs} +3 -3
- package/dist/{DropdownButton-CaM0itat.mjs.map → DropdownButton-CpWNRUma.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-B4f3LNoW.mjs → DropdownMenu-BCyV8nC0.mjs} +3 -3
- package/dist/{DropdownMenu-B4f3LNoW.mjs.map → DropdownMenu-BCyV8nC0.mjs.map} +1 -1
- package/dist/{DropdownMenu-Bgho2AsJ.d.mts → DropdownMenu-CnaK78rP.d.mts} +3 -3
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-DX50vo-U.d.mts → ErrorProps-CN2XjaOX.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-COyIA4VU.d.mts → FieldRegistry-DdA63Vnh.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-CS2YjiTr.d.mts → FilterBar-CxNsBVrn.d.mts} +5 -8
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +3 -3
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +3 -13
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/FloatingPanel.d.mts +80 -0
- package/dist/FloatingPanelContext.d.mts +33 -0
- package/dist/FloatingPanelRenderer.d.mts +7 -0
- package/dist/{FormControl-iPeOOlFb.d.mts → FormControl-Doj2gvF0.d.mts} +4 -4
- package/dist/{FormControl-CFYlkv7E.mjs → FormControl-HVzZEqJH.mjs} +6 -6
- package/dist/FormControl-HVzZEqJH.mjs.map +1 -0
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +2 -2
- package/dist/{FormField-Bol8gzNt.mjs → FormField-B9P3BWvS.mjs} +62 -59
- package/dist/FormField-B9P3BWvS.mjs.map +1 -0
- package/dist/{FormField-BruK7Des.d.mts → FormField-D8dHbqZZ.d.mts} +2 -2
- package/dist/FormField.d.mts +1 -1
- package/dist/{Header-BxTdWg0Q.d.mts → Header-CBlB65NY.d.mts} +2 -2
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-Z5NdrLCT.d.mts → HelperTooltip-C28h1zFl.d.mts} +3 -3
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/{HoverCopyableField-C8AdtVrT.mjs → HoverCopyableField-0Bzygbp9.mjs} +7 -7
- package/dist/{HoverCopyableField-C8AdtVrT.mjs.map → HoverCopyableField-0Bzygbp9.mjs.map} +1 -1
- package/dist/HoverCopyableField.d.mts +1 -1
- package/dist/{IconButton-Bi4kdsbV.mjs → IconButton-BfDlic2K.mjs} +12 -12
- package/dist/IconButton-BfDlic2K.mjs.map +1 -0
- package/dist/{IconButton-BycIGS3p.d.mts → IconButton-CBcW7ZU8.d.mts} +2 -2
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +2 -2
- package/dist/InlineCombobox.d.mts +2 -2
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-CSOxMzlt.mjs → Input-Bimw8KFj.mjs} +5 -5
- package/dist/{Input-CSOxMzlt.mjs.map → Input-Bimw8KFj.mjs.map} +1 -1
- package/dist/{Input-CEcoDtTu.d.mts → Input-CVdjkX88.d.mts} +4 -4
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-Buxtnz77.d.mts → InputProps-BwKkmImn.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/Link.d.mts +1 -1
- package/dist/{ListBox-CajNIX9P.d.mts → ListBox-CDl5oZPX.d.mts} +5 -5
- package/dist/{ListBox-CSMVAgHm.mjs → ListBox-DKZpGYjo.mjs} +25 -18
- package/dist/ListBox-DKZpGYjo.mjs.map +1 -0
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField.d.mts +6 -3
- package/dist/{LoadingShimmer-Dsc_RCCf.mjs → LoadingShimmer-DC2vqicd.mjs} +1 -1
- package/dist/{LoadingShimmer-Dsc_RCCf.mjs.map → LoadingShimmer-DC2vqicd.mjs.map} +1 -1
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-DK1NcP2a.d.mts → LogicRow-CkbyvrUw.d.mts} +4 -4
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/MatchHighlight.d.mts +1 -1
- package/dist/{Menu-BLtjpLst.d.mts → Menu-CYRdEnfo.d.mts} +4 -4
- package/dist/{Menu-DDXR9uHy.mjs → Menu-Dir03WA9.mjs} +6 -6
- package/dist/{Menu-DDXR9uHy.mjs.map → Menu-Dir03WA9.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-DjsUk8HM.mjs → MiddleTruncatedText-GXI-CPvs.mjs} +4 -4
- package/dist/{MiddleTruncatedText-DjsUk8HM.mjs.map → MiddleTruncatedText-GXI-CPvs.mjs.map} +1 -1
- package/dist/Modal.d.mts +3 -3
- package/dist/{PageHeader-BI2gxol5.mjs → PageHeader-C2IUKhCg.mjs} +3 -3
- package/dist/{PageHeader-BI2gxol5.mjs.map → PageHeader-C2IUKhCg.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/PageLayout.d.mts +1 -1
- package/dist/{PageSelector-BDo3ge1E.d.mts → PageSelector-vay4jpMp.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-DiaJX5Da.mjs → Pagination-0VhVdXv0.mjs} +10 -10
- package/dist/{Pagination-DiaJX5Da.mjs.map → Pagination-0VhVdXv0.mjs.map} +1 -1
- package/dist/{Pagination-Dcmv7bVe.d.mts → Pagination-ygLutOst.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-CSBV5Is7.mjs → Pii-C7pA72Bh.mjs} +2 -2
- package/dist/{Pii-CSBV5Is7.mjs.map → Pii-C7pA72Bh.mjs.map} +1 -1
- package/dist/Pii.d.mts +1 -1
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-5y0p85Sw.mjs → Popover-BkDpDdaO.mjs} +6 -6
- package/dist/{Popover-5y0p85Sw.mjs.map → Popover-BkDpDdaO.mjs.map} +1 -1
- package/dist/Popover.d.mts +1 -1
- package/dist/ProgressBar.d.mts +1 -1
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{Radio-aMjdUp4K.mjs → Radio-BaFutxgV.mjs} +5 -5
- package/dist/Radio-BaFutxgV.mjs.map +1 -0
- package/dist/{RadioGroup-Xn46ovrV.d.mts → RadioGroup-BuJaitgG.d.mts} +1 -1
- package/dist/{RadioGroup-BpoKyoi3.mjs → RadioGroup-ClMzOZl0.mjs} +3 -3
- package/dist/{RadioGroup-BpoKyoi3.mjs.map → RadioGroup-ClMzOZl0.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/RangeCalendar.d.mts +1 -1
- package/dist/RangeCalendarPresets.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +3 -3
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-Try11aJD.d.mts → SearchInput-Ca3_np5e.d.mts} +3 -3
- package/dist/SearchInput.d.mts +1 -1
- package/dist/Section.d.mts +1 -1
- package/dist/SectionHeading.d.mts +77 -2
- package/dist/{SegmentedControl-Cgs6qlhN.mjs → SegmentedControl-DgyJL4uN.mjs} +4 -4
- package/dist/{SegmentedControl-Cgs6qlhN.mjs.map → SegmentedControl-DgyJL4uN.mjs.map} +1 -1
- package/dist/{SegmentedControl-DckAdhcD.d.mts → SegmentedControl-_I4sWeD7.d.mts} +2 -2
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-CmJEiYXU.mjs → Select-D6MqSYVa.mjs} +12 -12
- package/dist/{Select-CmJEiYXU.mjs.map → Select-D6MqSYVa.mjs.map} +1 -1
- package/dist/{Select-COT4bkPb.d.mts → Select-vwXGlHuW.d.mts} +4 -4
- package/dist/Select.d.mts +1 -1
- package/dist/Slider.d.mts +1 -1
- package/dist/SliderRHF.d.mts +1 -1
- package/dist/SliderThumb.d.mts +1 -1
- package/dist/{Spacer-Ln3KChb5.mjs → Spacer-CJp0lwkL.mjs} +1 -1
- package/dist/{Spacer-Ln3KChb5.mjs.map → Spacer-CJp0lwkL.mjs.map} +1 -1
- package/dist/{Spinner-BXfYWjC_.mjs → Spinner-BgBCCHGo.mjs} +2 -2
- package/dist/{Spinner-BXfYWjC_.mjs.map → Spinner-BgBCCHGo.mjs.map} +1 -1
- package/dist/{Stack-ckRN7LrP.mjs → Stack-Bl54WmhY.mjs} +1 -1
- package/dist/{Stack-ckRN7LrP.mjs.map → Stack-Bl54WmhY.mjs.map} +1 -1
- package/dist/{Stack-DHaK1-dw.d.mts → Stack-CkV7k7TE.d.mts} +2 -2
- package/dist/Stack.d.mts +1 -1
- package/dist/StatusIndicator.d.mts +1 -1
- package/dist/{Sticker-C8rvpu7M.d.mts → Sticker-Dhx2wqTL.d.mts} +5 -5
- package/dist/{Sticker-BOlAy2TE.mjs → Sticker-xtDMuOoN.mjs} +5 -5
- package/dist/{Sticker-BOlAy2TE.mjs.map → Sticker-xtDMuOoN.mjs.map} +1 -1
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/SwatchPicker.d.mts +1 -1
- package/dist/Tab.d.mts +3 -3
- package/dist/{TabBar-DX1Spi6D.mjs → TabBar-D6UocZXi.mjs} +6 -6
- package/dist/{TabBar-DX1Spi6D.mjs.map → TabBar-D6UocZXi.mjs.map} +1 -1
- package/dist/TabBarIconButton.d.mts +2 -2
- package/dist/{Table-BnYZVCLj.mjs → Table-D1WyUQuv.mjs} +7 -7
- package/dist/{Table-BnYZVCLj.mjs.map → Table-D1WyUQuv.mjs.map} +1 -1
- package/dist/{Table-8jXlKYLy.d.mts → Table-cO7ZwGPM.d.mts} +1 -1
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-ByEcFueE.d.mts → TableBody-CirMgfAV.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-BC5l3UMT.mjs → TableBox-C5qWhr82.mjs} +17 -17
- package/dist/{TableBox-BC5l3UMT.mjs.map → TableBox-C5qWhr82.mjs.map} +1 -1
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-CWh_riC8.d.mts → TableBoxCell-DmVX_tgn.d.mts} +8 -8
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +4 -4
- package/dist/{TableBoxRow-JnJXVqMr.d.mts → TableBoxRow-nwq41Bpi.d.mts} +4 -4
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CfEE1r4C.d.mts → TableBoxRowActions-B4_ojiQo.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-51NYgFvI.mjs → TableControls-CZ9iu3ma.mjs} +188 -69
- package/dist/TableControls-CZ9iu3ma.mjs.map +1 -0
- package/dist/{TableControls-DscP6fyt.d.mts → TableControls-RwIPBxyU.d.mts} +4 -4
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-BeJ7GHPN.d.mts → TableControlsContext-D_SBFZN1.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-g3afLl5B.d.mts → TableHead-DMq_q_W0.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-CWTMf2Fe.d.mts → TableHeaderCell-C2pqXBYO.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-hPlVO3dD.d.mts → TableLayout-DQKu6Rcj.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-lvjbVccA.d.mts → TableRow-CPqZ8DK3.d.mts} +1 -1
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-Ccxtk5dA.d.mts → TableViewConfigurationDropdown-BYPh4dIP.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-D7viw4H5.mjs → TechnicalSticker-DTjg6d2F.mjs} +6 -6
- package/dist/{TechnicalSticker-D7viw4H5.mjs.map → TechnicalSticker-DTjg6d2F.mjs.map} +1 -1
- package/dist/TechnicalSticker.d.mts +1 -1
- package/dist/{Text-CEisq2at.d.mts → Text-CfIFUyHt.d.mts} +2 -2
- package/dist/{Text-hEoPeOc9.mjs → Text-RcEfNFLx.mjs} +1 -1
- package/dist/{Text-hEoPeOc9.mjs.map → Text-RcEfNFLx.mjs.map} +1 -1
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-DiKEhpfD.d.mts → TextArea-DhPBI_1-.d.mts} +2 -2
- package/dist/{TextArea-DjmlpCdJ.mjs → TextArea-ZMgbE_Lh.mjs} +3 -3
- package/dist/{TextArea-DjmlpCdJ.mjs.map → TextArea-ZMgbE_Lh.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-BKE4peKI.d.mts → TextUnderlineTooltip-BzmmiJlC.d.mts} +3 -3
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +2 -2
- package/dist/Toast.d.mts +1 -1
- package/dist/{Toggle-oukvAn6V.d.mts → Toggle-BGGQ4Ukl.d.mts} +1 -1
- package/dist/{Toggle-D1rEjYoN.mjs → Toggle-BPgfSjuu.mjs} +6 -6
- package/dist/{Toggle-D1rEjYoN.mjs.map → Toggle-BPgfSjuu.mjs.map} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-B-DDlRMw.mjs → Tooltip-BvDbmXak.mjs} +4 -4
- package/dist/{Tooltip-B-DDlRMw.mjs.map → Tooltip-BvDbmXak.mjs.map} +1 -1
- package/dist/{Tooltip-DZVPqxai.d.mts → Tooltip-D_a-RwAN.d.mts} +3 -3
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-D2R7uy_y.d.mts → TruncatedText-BJnowVTx.d.mts} +2 -2
- package/dist/components/Attribute/index.mjs +8 -9
- package/dist/components/Attribute/index.mjs.map +1 -1
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +2 -2
- 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 +3 -3
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/Card/index.mjs +1 -1
- package/dist/components/CardV2/index.d.mts +3 -2
- package/dist/components/CardV2/index.mjs +2 -2
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- 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 +16 -16
- package/dist/components/DataTable/TableControls/index.mjs +2 -2
- package/dist/components/DataTable/index.mjs +30 -32
- 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 +4 -4
- package/dist/components/DatePicker/index.mjs +1 -1
- 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.d.mts +5 -0
- package/dist/components/FloatingPanel/index.mjs +635 -0
- package/dist/components/FloatingPanel/index.mjs.map +1 -0
- 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 +9 -9
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/Link/index.mjs +3 -3
- 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 +2 -2
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Menu/index.mjs +1 -1
- package/dist/components/Modal/index.mjs +20 -13
- 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 +3 -3
- package/dist/components/ProgressBar/index.mjs.map +1 -1
- package/dist/components/ProgressIndicator/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/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 +5 -5
- package/dist/components/Slider/index.mjs.map +1 -1
- 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/StatusIndicator/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 +7 -7
- 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 +4 -4
- 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-bA9kCzRQ.d.mts → constants-BASogfT_.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/display.d.mts +1 -1
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{filter-size-context-C1TvrE_O.d.mts → filter-size-context-Bw5F7082.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-BC4edEsD.d.mts → index--5Mfhlkj.d.mts} +2 -2
- package/dist/{index-Doptc4HI.d.mts → index-C1bz13uw.d.mts} +5 -5
- package/dist/{index-DLV1eMsr.d.mts → index-DiCnyORA.d.mts} +5 -5
- 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 +11 -11
- package/dist/{input-D3Qd6dI8.d.mts → input-CzO-6_1V.d.mts} +2 -2
- package/dist/inputFields.d.mts +12 -26
- package/dist/{intersperse-vOYvFOfF.mjs → intersperse-yd3oMrQl.mjs} +1 -1
- package/dist/{intersperse-vOYvFOfF.mjs.map → intersperse-yd3oMrQl.mjs.map} +1 -1
- package/dist/lib/ConfigContext.d.mts +4 -1
- package/dist/lib/ConfigContext.mjs.map +1 -1
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedText.mjs +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
- package/dist/lib/embeddedSurfaceProtocol.d.mts +29 -0
- package/dist/lib/embeddedSurfaceProtocol.mjs +74 -0
- package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -0
- package/dist/lib/embeddedSurfaceRegistry.d.mts +11 -0
- package/dist/lib/embeddedSurfaceRegistry.mjs +19 -0
- package/dist/lib/embeddedSurfaceRegistry.mjs.map +1 -0
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/pseudoClass.d.mts +7 -7
- package/dist/lib/useEmbeddedSurface.d.mts +6 -0
- package/dist/lib/useEmbeddedSurface.mjs +135 -0
- package/dist/lib/useEmbeddedSurface.mjs.map +1 -0
- package/dist/lib/zindex.d.mts +2 -0
- package/dist/lib/zindex.mjs +2 -0
- package/dist/lib/zindex.mjs.map +1 -1
- package/dist/{message-CsK3sIq0.d.mts → message-Cu84fcqB.d.mts} +1 -1
- package/dist/mixins/hoverable.mjs +1 -1
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/input.mjs +1 -1
- package/dist/{operators-C_xPzItk.d.mts → operators-CmSqHnTH.d.mts} +24 -3
- package/dist/operators.d.mts +2 -2
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
- package/dist/{types-mb3woqzE.d.mts → types-C-TkDdkG.d.mts} +6 -3
- package/dist/{types-CjHuZoVJ.d.mts → types-DEh_pXgS.d.mts} +1 -1
- package/dist/{types-BKEwt0uq.d.mts → types-NJtAxsU1.d.mts} +2 -2
- package/dist/{types-DVsBRqjZ.d.mts → types-TV9nVfSe.d.mts} +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types2.d.mts +1 -1
- package/dist/types3.d.mts +1 -1
- package/dist/types4.d.mts +1 -1
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-CGzRyv0i.d.mts → useFilterStateV2-C4itmN4S.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-DhwEi45-.d.mts → useFormField-B2U4GOH4.d.mts} +2 -2
- package/dist/{useFormField-DhYd6bNn.mjs → useFormField-eftOPiXj.mjs} +2 -2
- package/dist/{useFormField-DhYd6bNn.mjs.map → useFormField-eftOPiXj.mjs.map} +1 -1
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-DWVW7A9f.mjs → useFormGroup-BMukAMAd.mjs} +1 -1
- package/dist/{useFormGroup-DWVW7A9f.mjs.map → useFormGroup-BMukAMAd.mjs.map} +1 -1
- package/dist/{useTableBoxDragAndDrop-CsnN52lx.d.mts → useTableBoxDragAndDrop-CpemHLhL.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/{useToggle-3k3EkV8V.mjs → useToggle-Bo3yd14Y.mjs} +1 -1
- package/dist/{useToggle-3k3EkV8V.mjs.map → useToggle-Bo3yd14Y.mjs.map} +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/utils/storybook.mjs +1 -1
- package/dist/utils/testing.d.mts +1 -1
- package/dist/utils/testing.mjs +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils3.d.mts +7 -0
- package/dist/{validation-BdP2vajF.d.mts → validation-B5IXsdkE.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-CiGEHQAc.d.mts → value-control-resolver-BPlTeIX7.d.mts} +2 -2
- package/dist/value-control-resolver.d.mts +1 -1
- package/llms.txt +1 -1
- package/package.json +11 -2
- package/skills/ui-authoring/SKILL.md +1 -1
- package/dist/CardV2-_GfXFd3d.mjs.map +0 -1
- package/dist/Checkbox-D77Rg7La.mjs.map +0 -1
- package/dist/Combobox-BzqlrMK0.mjs.map +0 -1
- package/dist/FormControl-CFYlkv7E.mjs.map +0 -1
- package/dist/FormField-Bol8gzNt.mjs.map +0 -1
- package/dist/IconButton-Bi4kdsbV.mjs.map +0 -1
- package/dist/ListBox-CSMVAgHm.mjs.map +0 -1
- package/dist/Radio-aMjdUp4K.mjs.map +0 -1
- package/dist/SectionHeading-BxKNuU2m.d.mts +0 -71
- package/dist/TableControls-51NYgFvI.mjs.map +0 -1
- /package/dist/{index-0-W_aPej.d.mts → index-BMBcfD_R.d.mts} +0 -0
- /package/dist/{index-7in8TPrM.d.mts → index-BYd3Btr1.d.mts} +0 -0
- /package/dist/{index-B4woaFSm.d.mts → index-CNxS4Tlu.d.mts} +0 -0
- /package/dist/{index-BINnViIh.d.mts → index-CWB6exYm.d.mts} +0 -0
- /package/dist/{index-BNRXMhlr.d.mts → index-CtJuGxUp.d.mts} +0 -0
- /package/dist/{index-BO_854F2.d.mts → index-CzItj62a.d.mts} +0 -0
- /package/dist/{index-CCt0lwyI.d.mts → index-D4DUvwPf.d.mts} +0 -0
- /package/dist/{index-CREkvfw9.d.mts → index-D5tSVhTd.d.mts} +0 -0
- /package/dist/{index-Ci-uuV07.d.mts → index-DGsJdI5l.d.mts} +0 -0
- /package/dist/{index-CzUpNo0e.d.mts → index-DkrC-i1D.d.mts} +0 -0
- /package/dist/{index-DDdPqD_H.d.mts → index-DztUdPP_.d.mts} +0 -0
- /package/dist/{index-DeVKzGce.d.mts → index-IE5cwTAE2.d.mts} +0 -0
- /package/dist/{index-uMNhmxEh.d.mts → index-e6k85DKM.d.mts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["uuid"],"sources":["../../../components/FloatingPanel/utils.ts","../../../components/FloatingPanel/FloatingPanel.tsx","../../../components/FloatingPanel/FloatingPanelContext.tsx","../../../components/FloatingPanel/FloatingPanelRenderer.tsx"],"sourcesContent":["export const PADDING = 8;\nexport const EDGE_PADDING = PADDING * 6;\n\n// Cap a content-fitting panel's height to the room below its top edge so it\n// can't overflow the viewport bottom when anchored partway down the screen.\nexport function autoFitMaxHeight(viewportHeight: number, topOffset: number, minHeight: number) {\n return Math.max(minHeight, viewportHeight - Math.max(EDGE_PADDING, topOffset) - EDGE_PADDING);\n}\n","import { flip, offset, type Placement, shift, useFloating } from '@floating-ui/react';\nimport { motion, useDragControls, useMotionValue, useReducedMotion } from 'framer-motion';\nimport {\n isValidElement,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal, flushSync } from 'react-dom';\nimport { useLocation } from 'react-router-dom';\nimport styled, { css } from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport Stack from '@persona/design-system/components/Stack';\nimport { Z_INDICES } from '@persona/design-system/lib/zindex';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { Elevation } from '@persona/design-system/variables/effect';\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { ArrowCollapseIcon, ArrowExpandIcon, XIcon } from '@persona/icons';\nimport ConfigContext from 'design-system/lib/ConfigContext';\n\nimport { autoFitMaxHeight, PADDING } from './utils';\n\nexport const FLOATING_PANEL_ID_PREFIX = 'floating-panel__' as const;\n\nenum ResizeDirection {\n North = 'n',\n South = 's',\n East = 'e',\n West = 'w',\n NorthEast = 'ne',\n NorthWest = 'nw',\n SouthEast = 'se',\n SouthWest = 'sw',\n}\n\nexport interface FloatingPanelProps {\n /** The title text displayed in the panel header */\n title: ReactNode;\n /** Callback function called when the close button is clicked */\n onClose?: () => void;\n /** Content to render inside the main panel area */\n children?: ReactNode;\n /** Optional React component rendered to the left of the expand button in the header */\n headerActions?: ReactNode;\n\n /** Whether the panel displays the fullsize button */\n canFullsize?: boolean;\n\n /** When true, the panel opens already in full-size (maximized) mode. */\n defaultFullSize?: boolean;\n\n /** Initial width of the panel in pixels */\n initialWidth?: number;\n /** Initial height of the panel in pixels */\n initialHeight?: number;\n /** Minimum width the panel can be resized to in pixels */\n minWidth?: number;\n /** Minimum height the panel can be resized to in pixels */\n minHeight?: number;\n\n footerButtons?: ReactNode;\n\n footerAdditionalAction?: ReactNode;\n\n portal?: boolean;\n\n /** Reference to the element that triggered this panel, used for automatic positioning */\n triggerRef?: RefObject<HTMLElement>;\n\n /** Which placement of the trigger element to position the panel on */\n placement?: Placement;\n\n /** Additional main axis offset in pixels from the calculated position. Main axis is defined as the axis in position to where its being defined\n * i.e. right, top, left ,bottom */\n mainAxisOffset?: number;\n\n /** Additional cross offset in pixels from the calculated position. Cross is defined as the axis that runs along the alignment\n * of the floating element. */\n crossAxisOffset?: number;\n\n /** remove padding from the panel content */\n noPadding?: boolean;\n\n /** When true, automatically calls `onClose` if the route changes after the\n * panel mounts. Mirrors the auto-dismiss-on-navigation behavior provided by\n * `PanelProvider` / `usePersistentFloatingPanel` for panels that don't opt\n * into the persistent panel context. Defaults to `false` so existing\n * consumers (e.g. dirty-check confirmation flows) are not broken. */\n dismissOnNavigate?: boolean;\n\n /** When true, the panel's height auto-fits its content via CSS (`max-content`)\n * up to the viewport, instead of using `initialHeight`. Once the user manually\n * resizes, the panel switches to pixel mode and stays there. `initialHeight`\n * is ignored while auto-fitting. */\n fitContent?: boolean;\n}\n\nconst FloatingPanelContainer = styled(motion.div)<{\n $fitHeight?: boolean;\n $maxHeight?: number;\n $minHeight?: number;\n}>`\n position: absolute;\n z-index: ${Z_INDICES.modal};\n background: ${({ theme }) => theme.color.background.primary};\n border: 1px solid ${Color.BorderDivider};\n border-radius: ${BorderRadius.Lg};\n box-shadow: ${Elevation.Low};\n display: flex;\n flex-direction: column;\n cursor: auto;\n ${({ $fitHeight, $maxHeight, $minHeight }) =>\n $fitHeight &&\n css`\n height: auto;\n max-height: ${$maxHeight ?? 0}px;\n min-height: ${$minHeight ?? 0}px;\n `}\n`;\n\nconst DragHandle = styled(motion.div)<{ isFullSize: boolean }>`\n cursor: ${({ isFullSize }) => (isFullSize ? 'default' : 'grab')};\n user-select: none;\n\n &:active {\n cursor: ${({ isFullSize }) => (isFullSize ? 'default' : 'grabbing')};\n }\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-height: 48px;\n height: 48px;\n overflow: hidden;\n padding: ${Spacing[1]} ${Spacing[1]} ${Spacing[1]} ${Spacing[3]};\n border-bottom: 1px solid ${Color.BorderDivider};\n`;\n\nconst Footer = styled.div`\n padding: ${Spacing[1]} ${Spacing[1]} ${Spacing[1]} ${Spacing[3]};\n border-top: 1px solid ${Color.BorderDivider};\n overflow-x: hidden;\n background-color: ${({ theme }) => theme.color.background.primary};\n width: 100%;\n border-radius: 0 0 ${BorderRadius.Lg} ${BorderRadius.Lg};\n`;\n\nconst ResizeHandleBase = styled.div`\n position: absolute;\n user-select: none;\n`;\n\n// Sets the width and height for base corner to 20px\nconst ResizeHandleBaseCorner = styled(ResizeHandleBase)`\n width: 1.25rem;\n height: 1.25rem;\n`;\n\nconst ResizeHandleBottomRight = styled(ResizeHandleBaseCorner)`\n bottom: -0.75rem;\n right: -0.75rem;\n cursor: nwse-resize;\n`;\n\nconst ResizeHandleBottomLeft = styled(ResizeHandleBaseCorner)`\n bottom: -0.75rem;\n left: -0.75rem;\n cursor: nesw-resize;\n`;\n\nconst ResizeHandleTopLeft = styled(ResizeHandleBaseCorner)`\n top: -0.75rem;\n left: -0.75rem;\n cursor: nwse-resize;\n`;\n\nconst ResizeHandleTopRight = styled(ResizeHandleBaseCorner)`\n top: -0.75rem;\n right: -0.75rem;\n cursor: nesw-resize;\n`;\n\n// These are all the Resize handles for the four cardinal direction,\n// To calculate the width, we subtract by the padding of 1rem on both sides\n// which are corners of the panel\nconst ResizeHandleBottom = styled(ResizeHandleBase)`\n bottom: -0.75rem;\n left: 0.5rem;\n width: calc(100% - 1rem);\n height: 1rem;\n cursor: ns-resize;\n user-select: none;\n`;\n\nconst ResizeHandleTop = styled(ResizeHandleBase)`\n top: -0.75rem;\n left: 0.5rem;\n width: calc(100% - 1rem);\n height: 1rem;\n cursor: ns-resize;\n`;\n\nconst ResizeHandleRight = styled(ResizeHandleBase)`\n right: -0.75rem;\n top: 0.5rem;\n width: 1rem;\n height: calc(100% - 1rem);\n cursor: ew-resize;\n`;\n\nconst ResizeHandleLeft = styled(ResizeHandleBase)`\n left: -0.75rem;\n top: 0.5rem;\n width: 1rem;\n height: calc(100% - 1rem);\n cursor: ew-resize;\n`;\n\nconst PanelContent = styled.div<{ $noPadding?: boolean; $fitHeight?: boolean }>`\n overflow-y: auto;\n overscroll-behavior: contain;\n min-height: 0;\n /* While the panel height is derived from its content, the content must size\n itself (a percentage flex-basis against an indefinite height collapses in\n WebKit); it still shrinks when the panel hits its max-height. */\n flex: ${({ $fitHeight }) => ($fitHeight ? '0 1 auto' : '1 1 0%')};\n padding: ${({ $noPadding }) => ($noPadding ? 0 : Spacing[3])};\n`;\n\n// Sets a min width so that the text will display, but overflows if needed\nconst PanelText = styled.p`\n ${paragraphMixins.sm}\n white-space: nowrap;\n min-width: 3rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n font-weight: 500;\n`;\n\nconst StyledIconButton = styled(IconButton)`\n width: 1.5rem;\n height: 1.5rem;\n border-radius: ${BorderRadius.Md};\n`;\n\n// Only rendered when dismissOnNavigate is true, keeping useLocation() out of the\n// main component body so FloatingPanel works without a Router when not needed.\nfunction DismissOnNavigate({ onClose }: { onClose: () => void }) {\n const location = useLocation();\n const initialPathname = useRef(location.pathname);\n useEffect(() => {\n if (location.pathname !== initialPathname.current) {\n onClose();\n }\n }, [location.pathname, onClose]);\n return null;\n}\n\nexport default function FloatingPanel({\n title = 'Panel title',\n children,\n portal = true,\n triggerRef,\n initialWidth = 400,\n initialHeight = 600,\n minWidth = 100,\n minHeight = 150,\n mainAxisOffset = 0,\n crossAxisOffset = 0,\n footerButtons,\n footerAdditionalAction,\n placement = 'right',\n canFullsize = true,\n defaultFullSize = false,\n noPadding,\n headerActions,\n dismissOnNavigate = false,\n fitContent = false,\n onClose = () => {},\n ...restProps\n}: FloatingPanelProps) {\n const { floatingPanel } = useContext(ConfigContext);\n const fullscreenRightInset = floatingPanel?.fullscreenRightInset ?? PADDING;\n const hasFooter = footerButtons || footerAdditionalAction;\n const isAdditionalActionButton =\n isValidElement(footerAdditionalAction) && footerAdditionalAction.type === 'button';\n\n const [panelSize, setPanelSize] = useState({ width: initialWidth, height: initialHeight });\n const panelSizeRef = useRef({ width: initialWidth, height: initialHeight });\n const [panelPosition, setPanelPosition] = useState({ x: 0, y: 0 });\n const [isPositionReady, setIsPositionReady] = useState(!triggerRef); // Ready immediately if no triggerRef\n\n const [fullSize, setFullSize] = useState(defaultFullSize);\n const resizeBottomRef = useRef<number | null>(null);\n const resizeRightRef = useRef<number | null>(null);\n\n const [wasFullSizeToggled, setWasFullSizeToggled] = useState(false);\n const resizeOffsetRef = useRef({ x: 0, y: 0 });\n\n const resizeDirectionRef = useRef<ResizeDirection | null>(null);\n const resizeStartDimensionsRef = useRef({\n width: initialWidth,\n height: initialHeight,\n x: 0,\n y: 0,\n });\n\n // Track if the user has manually resized the panel\n const [hasManuallyResized, setHasManuallyResized] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n\n // Track reduced motion preference\n const prefersReducedMotion = useReducedMotion();\n\n const dragControls = useDragControls();\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n const {\n x: floatingX,\n y: floatingY,\n refs,\n } = useFloating({\n placement: placement,\n elements: {\n reference: triggerRef?.current || undefined,\n },\n middleware: [\n offset({\n mainAxis: mainAxisOffset,\n crossAxis: crossAxisOffset,\n }),\n flip(),\n // flip() only swaps sides, so a large panel can still open clipped off an\n // edge. shift() slides it back into view on both axes (crossAxis covers the\n // side axis flip leaves unhandled).\n shift({ crossAxis: true, padding: PADDING }),\n ],\n });\n\n useEffect(() => {\n // Only update position when floating values are not at the default 0,0\n // or when we don't have a triggerRef (meaning we should use initial position)\n if (!triggerRef || floatingX !== 0 || floatingY !== 0) {\n setPanelPosition({\n x: floatingX,\n y: floatingY,\n });\n setIsPositionReady(true);\n }\n }, [floatingX, floatingY, triggerRef]);\n\n // Window dimensions and drag constraints\n const [windowDimensions, setWindowDimensions] = useState({\n width: typeof window !== 'undefined' ? window.innerWidth : 1200,\n height: typeof window !== 'undefined' ? window.innerHeight : 800,\n });\n\n // Update window dimensions on resize\n useEffect(() => {\n const handleResize = () => {\n setWindowDimensions({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const dragConstraints = fullSize\n ? undefined\n : {\n left: PADDING,\n right: Math.max(PADDING, windowDimensions.width - panelSize.width - PADDING),\n top: PADDING,\n bottom: Math.max(PADDING, windowDimensions.height - panelSize.height - PADDING),\n };\n\n // Clamp initial position and any position updates to be within bounds\n const clampPositionToBounds = useCallback(\n (position: { x: number; y: number }) => {\n if (fullSize) {\n return position;\n }\n\n return {\n x: Math.max(\n PADDING,\n Math.min(\n position.x,\n Math.max(PADDING, windowDimensions.width - panelSize.width - PADDING),\n ),\n ),\n y: Math.max(\n PADDING,\n Math.min(\n position.y,\n Math.max(PADDING, windowDimensions.height - panelSize.height - PADDING),\n ),\n ),\n };\n },\n [windowDimensions, panelSize, fullSize],\n );\n\n // Clamp position on window resize\n useEffect(() => {\n if (!fullSize) {\n const clampedPosition = clampPositionToBounds(panelPosition);\n if (clampedPosition.x !== panelPosition.x || clampedPosition.y !== panelPosition.y) {\n setPanelPosition(clampedPosition);\n }\n }\n }, [windowDimensions, panelPosition, clampPositionToBounds, fullSize]);\n\n useEffect(() => {\n if (wasFullSizeToggled) {\n const timer = setTimeout(() => setWasFullSizeToggled(false), 400); // match duration\n return () => clearTimeout(timer);\n }\n }, [wasFullSizeToggled]);\n\n // We need this useEffect here to sync a ref to the panel size, which is needed for resizing\n useEffect(() => {\n panelSizeRef.current = panelSize;\n }, [panelSize]);\n\n // True while the panel is letting CSS auto-fit its height to content\n // (`fitContent` opt-in, no manual resize yet, not in fullsize). In this mode\n // we omit `height` from the framer-motion animate prop so the styled\n // container's `height: max-content` is in effect.\n const isAutoHeight = fitContent && !hasManuallyResized && !fullSize;\n\n // Unified resize handler for all directions\n function handleResizeMouseDown(\n event: React.MouseEvent<HTMLDivElement>,\n direction: ResizeDirection,\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n let currentWidth: number;\n let currentHeight: number;\n let currentX: number;\n let currentY: number;\n\n if (fullSize) {\n // Exit fullscreen but preserve the current rendered dimensions so the panel\n // appears to stay in place while the user resizes from the edges.\n // Measure from the DOM so we get the real pixel width/height regardless of\n // what `calc(100% - 16px)` resolves to (differs for portaled vs. in-place\n // panels because `100%` is relative to the containing block, not the viewport).\n const container = contentRef.current?.parentElement;\n currentWidth = container?.offsetWidth ?? windowDimensions.width - 16;\n currentHeight = container?.offsetHeight ?? windowDimensions.height - 16;\n currentX = 8;\n currentY = 8;\n // Sync motion values now so x.get()/y.get() return the correct position for\n // computing fixed-edge anchors below.\n x.set(8);\n y.set(8);\n setFullSize(false);\n setPanelSize({ width: currentWidth, height: currentHeight });\n setPanelPosition({ x: currentX, y: currentY });\n } else if (isAutoHeight) {\n // If we're leaving CSS auto-fit, capture the current rendered height so the\n // panel doesn't jump from its content-fit size back to `initialHeight` when\n // pixel mode takes over.\n const container = contentRef.current?.parentElement;\n currentHeight = container?.offsetHeight ?? panelSize.height;\n currentWidth = panelSize.width;\n currentX = panelPosition.x;\n currentY = panelPosition.y;\n setPanelSize({ width: currentWidth, height: currentHeight });\n } else {\n currentWidth = panelSize.width;\n currentHeight = panelSize.height;\n currentX = panelPosition.x;\n currentY = panelPosition.y;\n }\n\n panelSizeRef.current = { width: currentWidth, height: currentHeight };\n // Capture start dimensions in a ref so handleResizeMouseMove (stale closure)\n // can read the correct initial values for unchanged axes without depending on\n // panelSize/panelPosition state captured at listener-registration time.\n resizeStartDimensionsRef.current = {\n width: currentWidth,\n height: currentHeight,\n x: currentX,\n y: currentY,\n };\n\n // Mark that user has manually resized - disable auto-resize from now on\n setHasManuallyResized(true);\n\n resizeDirectionRef.current = direction;\n\n // Calculate initial offsets and fixed points based on direction\n if (direction === ResizeDirection.SouthEast) {\n // Bottom-right: resize from bottom-right corner\n resizeOffsetRef.current = {\n x: event.clientX - currentWidth,\n y: event.clientY - currentHeight,\n };\n } else if (direction === ResizeDirection.SouthWest) {\n // Bottom-left: resize from bottom-left corner\n resizeRightRef.current = x.get() + currentWidth;\n resizeOffsetRef.current = {\n x: event.clientX,\n y: event.clientY - currentHeight,\n };\n } else if (direction === ResizeDirection.NorthWest) {\n // Top-left: resize from top-left corner\n resizeRightRef.current = x.get() + currentWidth;\n resizeBottomRef.current = y.get() + currentHeight;\n resizeOffsetRef.current = {\n x: event.clientX,\n y: event.clientY,\n };\n } else if (direction === ResizeDirection.NorthEast) {\n // Top-right: resize from top-right corner\n resizeBottomRef.current = y.get() + currentHeight;\n resizeOffsetRef.current = {\n x: event.clientX - currentWidth,\n y: event.clientY,\n };\n } else if (direction === ResizeDirection.West) {\n // Left edge\n resizeRightRef.current = x.get() + currentWidth;\n resizeOffsetRef.current = {\n x: event.clientX,\n y: 0,\n };\n } else if (direction === ResizeDirection.East) {\n // Right edge\n resizeOffsetRef.current = {\n x: event.clientX - currentWidth,\n y: 0,\n };\n } else if (direction === ResizeDirection.North) {\n // Top edge\n resizeBottomRef.current = y.get() + currentHeight;\n resizeOffsetRef.current = {\n x: 0,\n y: event.clientY,\n };\n } else if (direction === ResizeDirection.South) {\n // Bottom edge\n resizeOffsetRef.current = {\n x: 0,\n y: event.clientY - currentHeight,\n };\n }\n\n document.addEventListener('mousemove', handleResizeMouseMove);\n document.addEventListener('mouseup', handleResizeMouseUp);\n }\n\n // ResizeMouseMove to calculate the new size and position of the panel\n function handleResizeMouseMove(event: MouseEvent) {\n const direction = resizeDirectionRef.current;\n // Use resizeStartDimensionsRef (a ref, always current) rather than panelSize/panelPosition\n // (stale closure values). For unchanged axes, these provide the correct starting dimensions\n // set at drag start — including the case where the drag began in fullscreen mode.\n let newWidth = resizeStartDimensionsRef.current.width;\n let newHeight = resizeStartDimensionsRef.current.height;\n let clampedX = resizeStartDimensionsRef.current.x;\n let clampedY = resizeStartDimensionsRef.current.y;\n\n if (direction === ResizeDirection.SouthEast) {\n // Bottom-right corner\n newWidth = Math.round(Math.max(minWidth, event.clientX - resizeOffsetRef.current.x));\n newHeight = Math.round(Math.max(minHeight, event.clientY - resizeOffsetRef.current.y));\n } else if (direction === ResizeDirection.SouthWest) {\n // Bottom-left corner\n const right = resizeRightRef.current!;\n const proposedX = event.clientX;\n newWidth = Math.round(Math.max(minWidth, right - proposedX));\n clampedX = Math.round(right - newWidth);\n newHeight = Math.round(Math.max(minHeight, event.clientY - resizeOffsetRef.current.y));\n } else if (direction === ResizeDirection.NorthWest) {\n // Top-left corner\n const right = resizeRightRef.current!;\n const bottom = resizeBottomRef.current!;\n const proposedX = event.clientX;\n const proposedY = event.clientY;\n newWidth = Math.round(Math.max(minWidth, right - proposedX));\n newHeight = Math.round(Math.max(minHeight, bottom - proposedY));\n clampedX = Math.round(right - newWidth);\n clampedY = Math.round(bottom - newHeight);\n } else if (direction === ResizeDirection.NorthEast) {\n // Top-right corner\n const bottom = resizeBottomRef.current!;\n const proposedY = event.clientY;\n newWidth = Math.round(Math.max(minWidth, event.clientX - resizeOffsetRef.current.x));\n newHeight = Math.round(Math.max(minHeight, bottom - proposedY));\n clampedY = Math.round(bottom - newHeight);\n } else if (direction === ResizeDirection.West) {\n // Left edge\n const right = resizeRightRef.current!;\n const proposedX = event.clientX;\n newWidth = Math.round(Math.max(minWidth, right - proposedX));\n clampedX = Math.round(right - newWidth);\n } else if (direction === ResizeDirection.East) {\n // Right edge\n newWidth = Math.round(Math.max(minWidth, event.clientX - resizeOffsetRef.current.x));\n } else if (direction === ResizeDirection.North) {\n // Top edge\n const bottom = resizeBottomRef.current!;\n const proposedY = event.clientY;\n newHeight = Math.round(Math.max(minHeight, bottom - proposedY));\n clampedY = Math.round(bottom - newHeight);\n } else if (direction === ResizeDirection.South) {\n // Bottom edge\n newHeight = Math.round(Math.max(minHeight, event.clientY - resizeOffsetRef.current.y));\n }\n\n // We need to flush sync here because it would create jitter while the panel resizes from other directions\n // this is because the browser will animate serially, but we want to update the position and size together\n // so that the panel doesn't jump around\n flushSync(() => {\n setPanelPosition({ x: clampedX, y: clampedY });\n setPanelSize({ width: newWidth, height: newHeight });\n });\n }\n\n function handleResizeMouseUp() {\n document.removeEventListener('mousemove', handleResizeMouseMove);\n document.removeEventListener('mouseup', handleResizeMouseUp);\n }\n\n const panelContent = (\n <FloatingPanelContainer\n // Need to keep the values of x and y for positioning\n ref={refs.setFloating}\n $fitHeight={isAutoHeight}\n $maxHeight={autoFitMaxHeight(windowDimensions.height, panelPosition.y, minHeight)}\n $minHeight={minHeight}\n style={{\n x,\n y,\n }}\n initial={{\n top: 0,\n left: 0,\n opacity: 0,\n }}\n animate={{\n x: fullSize ? PADDING : panelPosition.x,\n y: fullSize ? PADDING : panelPosition.y,\n\n // When fullscreen, leave space for any reserved right-side content.\n width: fullSize ? `calc(100% - ${PADDING + fullscreenRightInset}px)` : panelSize.width,\n // Omit height when CSS auto-fit is active so `height: max-content`\n // on the styled container takes effect.\n ...(isAutoHeight ? {} : { height: fullSize ? 'calc(100% - 16px)' : panelSize.height }),\n opacity: isPositionReady ? 1 : 0,\n }}\n transition={\n wasFullSizeToggled\n ? {\n type: 'tween',\n // Easing curve for a smooth transition\n ease: [0.83, 0.0, 0.17, 1.0],\n duration: prefersReducedMotion ? 1.2 : 0.4,\n }\n : { opacity: { duration: 0.15, ease: 'easeOut' }, duration: 0 }\n }\n onDragEnd={() => {\n if (!fullSize) {\n const newPosition = { x: x.get(), y: y.get() };\n const clampedPosition = clampPositionToBounds(newPosition);\n setPanelPosition(clampedPosition);\n }\n }}\n drag={!fullSize}\n dragControls={dragControls}\n dragListener={false}\n dragMomentum={false}\n dragConstraints={dragConstraints}\n // The frame portals to the body, so panels that dismiss on an outside click\n // need this id to recognize a click in here as one of their own overlays.\n id={`${FLOATING_PANEL_ID_PREFIX}container`}\n {...restProps}\n >\n <DragHandle isFullSize={fullSize} onPointerDown={(e) => dragControls.start(e)}>\n <Stack align='center' direction='horizontal' justify='space-between'>\n <PanelText>{title}</PanelText>\n <Stack direction='horizontal' align='center' spacing={Spacing[1]}>\n {headerActions}\n {canFullsize && (\n <StyledIconButton\n size='sm'\n aria-label={fullSize ? 'collapse' : 'expand'}\n id='floating-panel__toggle-fullsize'\n onClick={() => {\n setWasFullSizeToggled(true);\n setFullSize(!fullSize);\n }}\n >\n {fullSize ? <ArrowCollapseIcon /> : <ArrowExpandIcon />}\n </StyledIconButton>\n )}\n\n <StyledIconButton\n size='sm'\n id='floating-panel__close-panel'\n onClick={() => onClose?.()}\n aria-label='close'\n >\n <XIcon />\n </StyledIconButton>\n </Stack>\n </Stack>\n </DragHandle>\n <PanelContent ref={contentRef} $noPadding={noPadding} $fitHeight={isAutoHeight}>\n {children}\n </PanelContent>\n {hasFooter && (\n <Footer style={{ paddingLeft: isAdditionalActionButton ? Spacing[1] : Spacing[3] }}>\n <Stack\n align='center'\n direction='horizontal'\n justify={footerAdditionalAction ? 'space-between' : 'flex-end'}\n >\n {footerAdditionalAction &&\n (isAdditionalActionButton ? (\n footerAdditionalAction\n ) : (\n <PanelText>{footerAdditionalAction}</PanelText>\n ))}\n\n {footerButtons && <div>{footerButtons}</div>}\n </Stack>\n </Footer>\n )}\n <ResizeHandleBottomRight\n data-test='resize-handle-se'\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.SouthEast)}\n />\n <ResizeHandleBottom\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.South)}\n />\n <ResizeHandleBottomLeft\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.SouthWest)}\n />\n <ResizeHandleLeft\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.West)}\n />\n <ResizeHandleTopLeft\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.NorthWest)}\n />\n <ResizeHandleTop\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.North)}\n />\n <ResizeHandleTopRight\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.NorthEast)}\n />\n <ResizeHandleRight\n onMouseDown={(event) => handleResizeMouseDown(event, ResizeDirection.East)}\n />\n </FloatingPanelContainer>\n );\n\n const content = (\n <>\n {dismissOnNavigate && <DismissOnNavigate onClose={onClose} />}\n {panelContent}\n </>\n );\n\n return portal ? createPortal(content, document.body) : content;\n}\n","import {\n createContext,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { v4 as uuid } from 'uuid';\n\nexport type Panel = {\n key: string;\n panelElement: ReactElement;\n persistUntilPathRoot?: string;\n};\n\ninterface PanelContextType {\n openPanel: (panel: Panel) => void;\n closePanel: (key: string) => void;\n togglePanel: (panel: Panel) => void;\n closeAllPanels: () => void;\n isPanelOpen: (key: string) => boolean;\n panels: Panel[];\n}\n\nconst PanelContext = createContext<PanelContextType | null>(null);\n\nexport const PanelProvider = ({ children }: { children: ReactNode }) => {\n const [panels, setPanels] = useState<Panel[]>([]);\n const location = useLocation();\n\n function shouldPanelPersist(currentUrl: string, persistUntilPathRoot?: string): boolean {\n if (!persistUntilPathRoot) {\n return false;\n }\n return currentUrl.includes(persistUntilPathRoot);\n }\n\n const openPanel = useCallback(\n (panel: Panel) => {\n const { key, panelElement, persistUntilPathRoot } = panel;\n const pathRoot = persistUntilPathRoot || location.pathname;\n setPanels((prev) => [\n ...prev.filter((p) => p.key !== key), // Remove existing panel with same key\n { key, panelElement, persistUntilPathRoot: pathRoot },\n ]);\n },\n [location.pathname],\n );\n\n const closePanel = useCallback((key: string) => {\n setPanels((prev) => prev.filter((panel) => panel.key !== key));\n }, []);\n\n const isPanelOpen = useCallback(\n (key: string) => {\n return panels.some((panel) => panel.key === key);\n },\n [panels],\n );\n\n const togglePanel = useCallback(\n (panel: Panel) => {\n const { key } = panel;\n if (isPanelOpen(key)) {\n closePanel(key);\n } else {\n openPanel(panel);\n }\n },\n [isPanelOpen, closePanel, openPanel],\n );\n\n const closeAllPanels = useCallback(() => {\n setPanels([]);\n }, []);\n\n useEffect(() => {\n const nextLocation = location.pathname;\n\n setPanels((prevPanels) =>\n prevPanels.filter((panel) => shouldPanelPersist(nextLocation, panel.persistUntilPathRoot)),\n );\n }, [location.pathname]);\n\n return (\n <PanelContext.Provider\n value={{ openPanel, closePanel, togglePanel, closeAllPanels, panels, isPanelOpen }}\n >\n {children}\n </PanelContext.Provider>\n );\n};\n\nexport const usePersistentFloatingPanels = () => {\n const ctx = useContext(PanelContext);\n if (!ctx) {\n throw new Error('usePersistentFloatingPanels must be used within a PanelProvider');\n }\n return ctx;\n};\n\n// This hook is used to open a panel that persists across multiple pages\n// For single page panels, use the useToggle hook instead to manage individual panel state.\nexport const usePersistentFloatingPanel = (panelId?: string) => {\n const ctx = useContext(PanelContext);\n if (!ctx) {\n throw new Error('usePersistentFloatingPanels must be used within a PanelProvider');\n }\n\n // If the panel doesn't need to persist across multiple pages, we generate an id that can be passed back\n const currentPanelId = panelId || `panel-${uuid()}`;\n\n return {\n id: currentPanelId,\n openPanel: useCallback(\n (panel: Panel) => {\n ctx.openPanel(panel);\n },\n [ctx],\n ),\n closePanel: useCallback(() => {\n ctx.closePanel(currentPanelId);\n }, [currentPanelId, ctx]),\n togglePanel: useCallback(\n (panel: Panel) => {\n ctx.togglePanel(panel);\n },\n [ctx],\n ),\n isPanelOpen: ctx.isPanelOpen(currentPanelId),\n };\n};\n","import { cloneElement } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { usePersistentFloatingPanels } from './FloatingPanelContext';\n\nexport default function FloatingPanelRenderer() {\n const { panels, closePanel } = usePersistentFloatingPanels();\n\n if (panels.length === 0) {\n return null;\n }\n\n return createPortal(\n panels.map(({ key, panelElement: panel }) => {\n return cloneElement(panel, { onClose: () => closePanel(key), key: key });\n }),\n document.body,\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as FormControlProps, c as FormLabelProps, i as FormControlBaseProps, l as HelperText, n as ErrorText, o as FormInputContainer, r as FormControl, s as FormLabel, t as Container, u as WarningText } from "../../FormControl-
|
|
2
|
-
import { r as useFormField } from "../../useFormField-
|
|
1
|
+
import { a as FormControlProps, c as FormLabelProps, i as FormControlBaseProps, l as HelperText, n as ErrorText, o as FormInputContainer, r as FormControl, s as FormLabel, t as Container, u as WarningText } from "../../FormControl-Doj2gvF0.mjs";
|
|
2
|
+
import { r as useFormField } from "../../useFormField-B2U4GOH4.mjs";
|
|
3
3
|
export { Container, ErrorText, FormControl, FormControl as default, FormControlBaseProps, FormControlProps, FormInputContainer, FormLabel, FormLabelProps, HelperText, WarningText, useFormField };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as useFormField } from "../../useFormField-
|
|
2
|
-
import { a as FormLabel, i as FormInputContainer, n as ErrorText, o as HelperText, r as FormControl, s as WarningText, t as Container } from "../../FormControl-
|
|
1
|
+
import { n as useFormField } from "../../useFormField-eftOPiXj.mjs";
|
|
2
|
+
import { a as FormLabel, i as FormInputContainer, n as ErrorText, o as HelperText, r as FormControl, s as WarningText, t as Container } from "../../FormControl-HVzZEqJH.mjs";
|
|
3
3
|
export { Container, ErrorText, FormControl, FormControl as default, FormInputContainer, FormLabel, HelperText, WarningText, useFormField };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as FormFieldBaseProps, r as FormFieldProps, t as FormField } from "../../FormField-
|
|
1
|
+
import { n as FormFieldBaseProps, r as FormFieldProps, t as FormField } from "../../FormField-D8dHbqZZ.mjs";
|
|
2
2
|
import { CheckboxField, CheckboxFieldProps, ComboboxField, ComboboxMultiSelectFieldProps, ComboboxSingleSelectFieldProps, ImplementsFormField, RadioGroupField, RadioGroupFieldProps, SegmentedControlField, SegmentedControlFieldProps, SelectField, SelectFieldProps, TextAreaField, TextAreaFieldProps, TextField, TextFieldProps, ToggleField, ToggleFieldProps, splitOutFormFieldProps } from "../../inputFields.mjs";
|
|
3
3
|
import CheckboxGroupField from "../../CheckboxGroupField.mjs";
|
|
4
4
|
import ListBoxField from "../../ListBoxField.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as CheckboxField, c as SegmentedControlField, d as TextField, f as ToggleField, i as CheckboxGroupField, l as SelectField, m as FormField, n as TableBoxField, o as ComboboxField, p as splitOutFormFieldProps, r as ListBoxField, s as RadioGroupField, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, u as TextAreaField } from "../../FormField-
|
|
1
|
+
import { a as CheckboxField, c as SegmentedControlField, d as TextField, f as ToggleField, i as CheckboxGroupField, l as SelectField, m as FormField, n as TableBoxField, o as ComboboxField, p as splitOutFormFieldProps, r as ListBoxField, s as RadioGroupField, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, u as TextAreaField } from "../../FormField-B9P3BWvS.mjs";
|
|
2
2
|
export { CheckboxField, CheckboxGroupField, ComboboxField, FormField, FormField as default, ListBoxField, RadioGroupField, SegmentedControlField, SelectField, TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, TableBoxField, TextAreaField, TextField, ToggleField, splitOutFormFieldProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as HoverCopyableField_default } from "../../HoverCopyableField-
|
|
1
|
+
import { t as HoverCopyableField_default } from "../../HoverCopyableField-0Bzygbp9.mjs";
|
|
2
2
|
export { HoverCopyableField_default as default };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { i as Paragraph } from "../../Text-hEoPeOc9.mjs";
|
|
2
|
-
import "../../variables/transitions.mjs";
|
|
3
|
-
import { a as Tooltip } from "../../Tooltip-B-DDlRMw.mjs";
|
|
4
1
|
import { focusOutline } from "../../mixins/focus.mjs";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as
|
|
2
|
+
import "../../variables/transitions.mjs";
|
|
3
|
+
import { n as Stack } from "../../Stack-Bl54WmhY.mjs";
|
|
4
|
+
import { i as Paragraph } from "../../Text-RcEfNFLx.mjs";
|
|
5
|
+
import { a as Tooltip } from "../../Tooltip-BvDbmXak.mjs";
|
|
6
|
+
import { t as IconButton } from "../../IconButton-BfDlic2K.mjs";
|
|
7
|
+
import { n as DropdownMenu_default } from "../../DropdownMenu-BCyV8nC0.mjs";
|
|
8
|
+
import { t as LoadingShimmer } from "../../LoadingShimmer-DC2vqicd.mjs";
|
|
9
|
+
import { t as Checkbox } from "../../Checkbox-DAvbgZgO.mjs";
|
|
10
10
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
11
|
-
import { useEffect, useState } from "react";
|
|
12
11
|
import styled, { css } from "styled-components";
|
|
13
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { useEffect, useState } from "react";
|
|
14
14
|
import { ImageIcon, LockedIcon, MoreIcon } from "@persona/icons";
|
|
15
15
|
//#region components/ImageTile/ImageTile.tsx
|
|
16
16
|
const MIN_WIDTH = "180px";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as InputProps, i as InputGroupProps, n as Input, r as InputGroup, t as ClearButton } from "../../Input-
|
|
1
|
+
import { a as InputProps, i as InputGroupProps, n as Input, r as InputGroup, t as ClearButton } from "../../Input-CVdjkX88.mjs";
|
|
2
2
|
export { ClearButton, Input, Input as default, InputGroup, InputGroupProps, InputProps };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
2
|
-
import "../../variables/transitions.mjs";
|
|
3
1
|
import { focusOutline } from "../../mixins/focus.mjs";
|
|
2
|
+
import "../../variables/transitions.mjs";
|
|
3
|
+
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
4
4
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
5
5
|
import styled, { css } from "styled-components";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import { LinkExternalIcon } from "@persona/icons";
|
|
8
7
|
import { Link as Link$1 } from "react-router-dom";
|
|
8
|
+
import { LinkExternalIcon } from "@persona/icons";
|
|
9
9
|
//#region components/Link/Link.tsx
|
|
10
10
|
const IconContainer = styled.span`
|
|
11
11
|
display: inline-block;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as useListBoxContext, n as ListBoxItemProps, r as ListBoxProps } from "../../ListBox-
|
|
2
|
-
import { n as LogicRowProps } from "../../LogicRow-
|
|
3
|
-
import { t as ListBox } from "../../index-
|
|
1
|
+
import { i as useListBoxContext, n as ListBoxItemProps, r as ListBoxProps } from "../../ListBox-CDl5oZPX.mjs";
|
|
2
|
+
import { n as LogicRowProps } from "../../LogicRow-CkbyvrUw.mjs";
|
|
3
|
+
import { t as ListBox } from "../../index-DiCnyORA.mjs";
|
|
4
4
|
export { ListBox, ListBox as default, ListBoxItemProps, ListBoxProps, LogicRowProps, useListBoxContext };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useListBoxContext, t as ListBox } from "../../ListBox-
|
|
1
|
+
import { n as useListBoxContext, t as ListBox } from "../../ListBox-DKZpGYjo.mjs";
|
|
2
2
|
export { ListBox, ListBox as default, useListBoxContext };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as MaybeLoadingShimmer, n as LoadingShimmerHeading, r as LoadingShimmerParagraph, t as LoadingShimmer } from "../../LoadingShimmer-
|
|
1
|
+
import { i as MaybeLoadingShimmer, n as LoadingShimmerHeading, r as LoadingShimmerParagraph, t as LoadingShimmer } from "../../LoadingShimmer-DC2vqicd.mjs";
|
|
2
2
|
export { LoadingShimmer, LoadingShimmerHeading, LoadingShimmerParagraph, MaybeLoadingShimmer };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as Input } from "../../Input-
|
|
2
|
-
import { forwardRef } from "react";
|
|
1
|
+
import { n as Input } from "../../Input-Bimw8KFj.mjs";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
4
|
import { IMaskMixin } from "react-imask";
|
|
5
5
|
//#region components/MaskedInput/MaskedInput.tsx
|
|
6
6
|
const MaskedInputBase = IMaskMixin(({ inputRef, size, componentProps, ...props }) => /* @__PURE__ */ jsx(Input, {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "../../Menu-
|
|
1
|
+
import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "../../Menu-CYRdEnfo.mjs";
|
|
2
2
|
export { FloatingCard, IconContainer, ListItem, Menu, Menu as default, MenuDivider, MenuHeading, MenuHeadingProps, MenuItem, MenuItemProps, MenuItemType, MenuList, MenuProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MenuDivider, c as MenuList, i as Menu, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuItem, t as FloatingCard } from "../../Menu-
|
|
1
|
+
import { a as MenuDivider, c as MenuList, i as Menu, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuItem, t as FloatingCard } from "../../Menu-Dir03WA9.mjs";
|
|
2
2
|
export { FloatingCard, IconContainer, ListItem, Menu, Menu as default, MenuDivider, MenuHeading, MenuItem, MenuList };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
1
|
+
import { n as Stack, t as HStack } from "../../Stack-Bl54WmhY.mjs";
|
|
2
|
+
import { t as Card_default } from "../../Card-BMCB9eFC.mjs";
|
|
3
|
+
import { n as Heading$1 } from "../../Text-RcEfNFLx.mjs";
|
|
4
|
+
import useEmbeddedSurface from "../../lib/useEmbeddedSurface.mjs";
|
|
5
|
+
import { n as Button$1 } from "../../IconButton-BfDlic2K.mjs";
|
|
6
|
+
import { i as TabBar, r as Tab } from "../../TabBar-D6UocZXi.mjs";
|
|
6
7
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
7
|
-
import { forwardRef, useEffect, useRef, useState } from "react";
|
|
8
8
|
import styled from "styled-components";
|
|
9
|
-
import { Button, Dialog, DialogTrigger, Heading, Modal, ModalOverlay, Pressable } from "react-aria-components";
|
|
10
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { Button, Dialog, DialogTrigger, Heading, Modal, ModalOverlay, Pressable } from "react-aria-components";
|
|
11
|
+
import { forwardRef, useEffect, useRef, useState } from "react";
|
|
11
12
|
import { XIcon } from "@persona/icons";
|
|
12
13
|
//#region lib/useModalInsetRight.ts
|
|
13
14
|
const CSS_VAR = "--modal-inset-right";
|
|
@@ -98,8 +99,16 @@ const StyledModalOverlay = styled(ModalOverlay)`
|
|
|
98
99
|
const StyledModal = styled(Modal)`
|
|
99
100
|
z-index: 10001;
|
|
100
101
|
outline: none;
|
|
101
|
-
width:
|
|
102
|
+
width: fit-content;
|
|
103
|
+
max-width: 100%;
|
|
102
104
|
`;
|
|
105
|
+
const EmbeddedSurfaceModal = forwardRef(function EmbeddedSurfaceModal({ children }, ref) {
|
|
106
|
+
useEmbeddedSurface();
|
|
107
|
+
return /* @__PURE__ */ jsx(StyledModal, {
|
|
108
|
+
ref,
|
|
109
|
+
children
|
|
110
|
+
});
|
|
111
|
+
});
|
|
103
112
|
const ModalCloseButton = styled(Button$1)`
|
|
104
113
|
display: inline-flex;
|
|
105
114
|
padding: ${Spacing[2]};
|
|
@@ -158,19 +167,17 @@ const StyledDialog = styled(Dialog)`
|
|
|
158
167
|
`;
|
|
159
168
|
const StyledCard = styled(Card_default)`
|
|
160
169
|
position: relative;
|
|
161
|
-
left: 50%;
|
|
162
|
-
transform: translateX(-50%);
|
|
163
170
|
width: ${({ $size }) => {
|
|
164
171
|
switch ($size) {
|
|
165
172
|
case "auto": return "auto";
|
|
166
|
-
case "full": return "calc(
|
|
173
|
+
case "full": return "calc(100vw - 160px)";
|
|
167
174
|
default: return "90vw";
|
|
168
175
|
}
|
|
169
176
|
}};
|
|
170
177
|
max-width: ${({ theme, $size }) => {
|
|
171
178
|
switch ($size) {
|
|
172
179
|
case "auto": return "auto";
|
|
173
|
-
case "full": return "calc(
|
|
180
|
+
case "full": return "calc(100vw - 160px)";
|
|
174
181
|
default: return theme.modal.width[$size];
|
|
175
182
|
}
|
|
176
183
|
}};
|
|
@@ -267,7 +274,7 @@ const Modal$1 = ({ children, trigger, contentProps, noBodyPadding = false, size
|
|
|
267
274
|
isDismissable,
|
|
268
275
|
isKeyboardDismissDisabled,
|
|
269
276
|
shouldCloseOnInteractOutside: (element) => !element.closest("[data-react-aria-top-layer]"),
|
|
270
|
-
children: /* @__PURE__ */ jsx(
|
|
277
|
+
children: /* @__PURE__ */ jsx(EmbeddedSurfaceModal, {
|
|
271
278
|
ref: setPortalContainer,
|
|
272
279
|
children: content
|
|
273
280
|
})
|
|
@@ -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 type { ComponentProps, ComponentPropsWithoutRef } from 'react';\nimport { forwardRef, type ReactNode, useEffect, useState } from 'react';\nimport {\n Button as AriaButton,\n Dialog,\n DialogTrigger,\n Heading as AriaHeading,\n Modal as AriaModal,\n ModalOverlay,\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 useModalInsetRight, {\n SIDEBAR_CLOSE_TRANSITION_MS,\n SIDEBAR_OPEN_TRANSITION_MS,\n} from 'design-system/lib/useModalInsetRight';\n\nconst StyledModalOverlay = styled(ModalOverlay)<{ $insetRight: string; $transitionMs: number }>`\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 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: 100%;\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 ${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 }) => ($hasTabs ? 'none' : `1px solid ${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 left: 50%;\n transform: translateX(-50%);\n width: ${({ $size }) => {\n switch ($size) {\n case 'auto':\n return 'auto';\n case 'full':\n return 'calc(100% - 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(100% - 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 { 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 <StyledModalOverlay\n $insetRight={modalInsetRight}\n $transitionMs={transitionMs}\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n shouldCloseOnInteractOutside={(element) => !element.closest('[data-react-aria-top-layer]')}\n >\n <StyledModal ref={setPortalContainer}>{content}</StyledModal>\n </StyledModalOverlay>\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":["../../../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 type { ComponentProps, ComponentPropsWithoutRef } from 'react';\nimport { forwardRef, type ReactNode, useEffect, useState } from 'react';\nimport {\n Button as AriaButton,\n Dialog,\n DialogTrigger,\n Heading as AriaHeading,\n Modal as AriaModal,\n ModalOverlay,\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 useEmbeddedSurface 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)<{ $insetRight: string; $transitionMs: number }>`\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 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`;\n\nconst EmbeddedSurfaceModal = forwardRef<HTMLDivElement, { children: ReactNode }>(\n function EmbeddedSurfaceModal({ children }, ref) {\n useEmbeddedSurface();\n return <StyledModal ref={ref}>{children}</StyledModal>;\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 ${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 }) => ($hasTabs ? 'none' : `1px solid ${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 { 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 <StyledModalOverlay\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}>{content}</EmbeddedSurfaceModal>\n </StyledModalOverlay>\n </DialogTrigger>\n );\n};\n\nexport default Object.assign(Modal, {\n Title: ModalTitle,\n});\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as PageHeaderContainer, t as PageHeader } from "../../PageHeader-
|
|
1
|
+
import { n as PageHeaderContainer, t as PageHeader } from "../../PageHeader-C2IUKhCg.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-ygLutOst.mjs";
|
|
2
|
+
import { r as PageSelector, t as PAGE_LIMIT_BEFORE_SCROLL_MODE } from "../../PageSelector-vay4jpMp.mjs";
|
|
3
|
+
import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "../../constants-BASogfT_.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-0VhVdXv0.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-C7pA72Bh.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-BkDpDdaO.mjs";
|
|
2
2
|
export { PopoverAnchor, PopoverCard, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Popover_default as default };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
2
|
-
import { a as Tooltip } from "../../Tooltip-
|
|
2
|
+
import { a as Tooltip } from "../../Tooltip-BvDbmXak.mjs";
|
|
3
3
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
4
4
|
import styled, { keyframes } from "styled-components";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { useId } from "react-aria";
|
|
7
|
-
import CircleAlertIcon from "@persona/icons/CircleAlertIcon";
|
|
8
7
|
import CircleCheckFillIcon from "@persona/icons/CircleCheckFillIcon";
|
|
8
|
+
import CircleWarningFillIcon from "@persona/icons/CircleWarningFillIcon";
|
|
9
9
|
//#region components/ProgressBar/ProgressBar.tsx
|
|
10
10
|
const STATUS_FILL_COLORS = {
|
|
11
11
|
default: Color.BorderInputActive,
|
|
@@ -155,7 +155,7 @@ const ProgressBar = ({ percent = 0, size = "sm", status = "default", type = "det
|
|
|
155
155
|
children: tooltip
|
|
156
156
|
}) : track, effectiveShowInfo && /* @__PURE__ */ jsx(SuffixRow, { children: isTerminal ? /* @__PURE__ */ jsx(IconWrapper, {
|
|
157
157
|
$color: STATUS_ICON_COLORS[effectiveStatus],
|
|
158
|
-
children: effectiveStatus === "exception" ? /* @__PURE__ */ jsx(
|
|
158
|
+
children: effectiveStatus === "exception" ? /* @__PURE__ */ jsx(CircleWarningFillIcon, { size: 16 }) : /* @__PURE__ */ jsx(CircleCheckFillIcon, { size: 16 })
|
|
159
159
|
}) : /* @__PURE__ */ jsx(PercentText, { children: formattedPercent }) })] })]
|
|
160
160
|
});
|
|
161
161
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../components/ProgressBar/ProgressBar.tsx","../../../components/ProgressBar/index.ts"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { useId } from 'react-aria';\nimport styled, { keyframes } from 'styled-components';\n\nimport { Tooltip } from '@persona/design-system/components/Tooltip';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport CircleAlertIcon from '@persona/icons/CircleAlertIcon';\nimport CircleCheckFillIcon from '@persona/icons/CircleCheckFillIcon';\n\nexport type ProgressBarStatus = 'default' | 'exception' | 'success';\nexport type ProgressBarSize = 'sm' | 'md';\nexport type ProgressBarType = 'determinate' | 'indeterminate';\n\nconst STATUS_FILL_COLORS: Record<ProgressBarStatus, Color> = {\n default: Color.BorderInputActive,\n exception: Color.BorderInputDanger,\n success: Color.BorderIconSuccess,\n};\n\nconst STATUS_ICON_COLORS: Record<'exception' | 'success', Color> = {\n exception: Color.BorderInputDanger,\n success: Color.BorderIconSuccess,\n};\n\nconst TRACK_HEIGHT: Record<ProgressBarSize, string> = {\n sm: '4px',\n md: '8px',\n};\n\n// 20px matches the line-height of TextMedium — the tallest element in the bar row\nconst BAR_ROW_HEIGHT = '20px';\n\nconst indeterminateScan = keyframes`\n 0% { left: -40%; width: 40%; }\n 60% { left: 100%; width: 40%; }\n 100% { left: 100%; width: 40%; }\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst LabelText = styled.span`\n ${paragraphMixins.md}\n color: ${Color.TextPrimary};\n`;\n\nconst BarRow = styled.div`\n display: flex;\n gap: ${Spacing[2]};\n align-items: center;\n min-height: ${BAR_ROW_HEIGHT};\n width: 100%;\n`;\n\nconst Track = styled.div<{ $size: ProgressBarSize; $railColor?: Color }>`\n flex: 1;\n height: ${({ $size }) => TRACK_HEIGHT[$size]};\n background-color: ${({ $railColor }) => $railColor ?? Color.BorderDivider};\n border-radius: 4px;\n overflow: hidden;\n position: relative;\n`;\n\nconst Fill = styled.div<{\n $percent: number;\n $left: number;\n $status: ProgressBarStatus;\n $fillColor?: Color;\n $hasSuccessBefore: boolean;\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: ${({ $left }) => `${$left}%`};\n width: ${({ $percent }) => `${$percent}%`};\n background-color: ${({ $status, $fillColor }) => $fillColor ?? STATUS_FILL_COLORS[$status]};\n border-radius: ${({ $hasSuccessBefore }) => ($hasSuccessBefore ? '0 4px 4px 0' : '4px')};\n transition: width 0.3s ease, left 0.3s ease;\n`;\n\nconst SuccessFill = styled.div<{ $percent: number; $hasInProgressAfter: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: ${({ $percent }) => `${$percent}%`};\n background-color: ${STATUS_FILL_COLORS.success};\n border-radius: ${({ $hasInProgressAfter }) => ($hasInProgressAfter ? '4px 0 0 4px' : '4px')};\n transition: width 0.3s ease;\n`;\n\nconst IndeterminateFill = styled.div`\n position: absolute;\n inset: 0 auto 0 auto;\n height: 100%;\n /* Same neutral as Spinner (Color.BorderIconPrimary) */\n background-color: ${Color.BorderIconPrimary};\n border-radius: 4px;\n animation: ${indeterminateScan} 2.5s ease-in-out infinite;\n`;\n\nconst SuffixRow = styled.div`\n display: flex;\n gap: ${Spacing[1]};\n align-items: center;\n flex-shrink: 0;\n`;\n\nconst PercentText = styled.span`\n ${paragraphMixins.md}\n color: ${Color.TextPrimary};\n white-space: nowrap;\n`;\n\nconst IconWrapper = styled.span<{ $color: Color }>`\n display: flex;\n flex-shrink: 0;\n line-height: 0;\n color: ${({ $color }) => $color};\n`;\n\nexport interface ProgressBarProps extends ComponentPropsWithoutRef<'div'> {\n /** Completion percentage, 0–100 */\n percent?: number;\n /** Size of the bar track */\n size?: ProgressBarSize;\n /** Status — affects fill color */\n status?: ProgressBarStatus;\n /**\n * `'determinate'` shows a filled bar for a known percentage.\n * `'indeterminate'` shows a scanning animation for unknown progress.\n * @defaultValue 'determinate'\n */\n type?: ProgressBarType;\n /** Label text */\n label?: string;\n /**\n * Show a right-hand info slot: percentage while in progress, status icon when\n * success or exception. The two are mutually exclusive — icon replaces percentage\n * once the bar reaches a terminal state.\n * Defaults to `true` when `successPercent` is set.\n */\n showInfo?: boolean;\n /** Custom fill color (design-system token) — overrides status color */\n fillColor?: Color;\n /** Custom track/rail background color (design-system token) */\n railColor?: Color;\n /**\n * Format function for the displayed percentage value.\n * @defaultValue (percent) => `${percent}%`\n */\n format?: (percent: number) => string;\n /**\n * When set, renders a green success segment from 0 to `successPercent`%,\n * with the main fill continuing from `successPercent`% to `percent`%.\n * Clamped to [0, percent]. Also enables `showInfo` by default.\n */\n successPercent?: number;\n /**\n * Tooltip content shown when hovering the bar track.\n * Use to surface a segment breakdown, e.g. \"3 done / 3 in progress / 4 to do\".\n */\n tooltip?: string;\n}\n\n/**\n * ProgressBar shows the completion status of an operation as a filled bar.\n *\n * @example\n * ```tsx\n * <ProgressBar\n * percent={60}\n * size=\"md\"\n * label=\"Uploading\"\n * showInfo\n * />\n * ```\n */\nexport const ProgressBar = ({\n percent = 0,\n size = 'sm',\n status = 'default',\n type = 'determinate',\n label,\n showInfo,\n fillColor,\n railColor,\n format,\n successPercent,\n tooltip,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) => {\n const labelId = useId();\n const clampedPercent = Math.min(100, Math.max(0, percent));\n const clampedSuccessPercent =\n successPercent != null ? Math.min(clampedPercent, Math.max(0, successPercent)) : 0;\n const inProgressPercent = clampedPercent - clampedSuccessPercent;\n const hasSuccessSegment = clampedSuccessPercent > 0;\n const hasInProgressSegment = inProgressPercent > 0;\n\n // Automatically derive success status when fully complete (unless caller set exception)\n const effectiveStatus: ProgressBarStatus =\n clampedPercent >= 100 && status !== 'exception' ? 'success' : status;\n\n // showInfo defaults to true when successPercent is used\n const effectiveShowInfo = showInfo ?? successPercent != null;\n\n const isTerminal = effectiveStatus === 'exception' || effectiveStatus === 'success';\n const formattedPercent = format ? format(clampedPercent) : `${clampedPercent}%`;\n const isIndeterminate = type === 'indeterminate';\n\n const labelledBy = label ? [labelId, ariaLabelledBy].filter(Boolean).join(' ') : ariaLabelledBy;\n const accessibleLabel = labelledBy ? undefined : (ariaLabel ?? 'Progress');\n\n const track = (\n <Track\n $size={size}\n $railColor={railColor}\n role='progressbar'\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={isIndeterminate ? undefined : clampedPercent}\n aria-valuetext={isIndeterminate ? undefined : formattedPercent}\n aria-labelledby={labelledBy || undefined}\n aria-label={accessibleLabel}\n >\n {isIndeterminate ? (\n <IndeterminateFill />\n ) : (\n <>\n {hasSuccessSegment && (\n <SuccessFill\n $percent={clampedSuccessPercent}\n $hasInProgressAfter={hasInProgressSegment}\n />\n )}\n {hasInProgressSegment && (\n <Fill\n $percent={inProgressPercent}\n $left={clampedSuccessPercent}\n $status={effectiveStatus}\n $fillColor={fillColor}\n $hasSuccessBefore={hasSuccessSegment}\n />\n )}\n </>\n )}\n </Track>\n );\n\n return (\n <Container {...props}>\n {label && <LabelText id={labelId}>{label}</LabelText>}\n <BarRow>\n {tooltip ? (\n <Tooltip trigger={track} side='top' contentAlignment='center'>\n {tooltip}\n </Tooltip>\n ) : (\n track\n )}\n {effectiveShowInfo && (\n <SuffixRow>\n {isTerminal ? (\n <IconWrapper $color={STATUS_ICON_COLORS[effectiveStatus]}>\n {effectiveStatus === 'exception' ? (\n <CircleAlertIcon size={16} />\n ) : (\n <CircleCheckFillIcon size={16} />\n )}\n </IconWrapper>\n ) : (\n <PercentText>{formattedPercent}</PercentText>\n )}\n </SuffixRow>\n )}\n </BarRow>\n </Container>\n );\n};\n\nexport default ProgressBar;\n","import ProgressBar from './ProgressBar';\n\nexport { ProgressBar };\nexport type {\n ProgressBarProps,\n ProgressBarSize,\n ProgressBarStatus,\n ProgressBarType,\n} from './ProgressBar';\n\nexport default ProgressBar;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../components/ProgressBar/ProgressBar.tsx","../../../components/ProgressBar/index.ts"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { useId } from 'react-aria';\nimport styled, { keyframes } from 'styled-components';\n\nimport { Tooltip } from '@persona/design-system/components/Tooltip';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport CircleCheckFillIcon from '@persona/icons/CircleCheckFillIcon';\nimport CircleWarningFillIcon from '@persona/icons/CircleWarningFillIcon';\n\nexport type ProgressBarStatus = 'default' | 'exception' | 'success';\nexport type ProgressBarSize = 'sm' | 'md';\nexport type ProgressBarType = 'determinate' | 'indeterminate';\n\nconst STATUS_FILL_COLORS: Record<ProgressBarStatus, Color> = {\n default: Color.BorderInputActive,\n exception: Color.BorderInputDanger,\n success: Color.BorderIconSuccess,\n};\n\nconst STATUS_ICON_COLORS: Record<'exception' | 'success', Color> = {\n exception: Color.BorderInputDanger,\n success: Color.BorderIconSuccess,\n};\n\nconst TRACK_HEIGHT: Record<ProgressBarSize, string> = {\n sm: '4px',\n md: '8px',\n};\n\n// 20px matches the line-height of TextMedium — the tallest element in the bar row\nconst BAR_ROW_HEIGHT = '20px';\n\nconst indeterminateScan = keyframes`\n 0% { left: -40%; width: 40%; }\n 60% { left: 100%; width: 40%; }\n 100% { left: 100%; width: 40%; }\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst LabelText = styled.span`\n ${paragraphMixins.md}\n color: ${Color.TextPrimary};\n`;\n\nconst BarRow = styled.div`\n display: flex;\n gap: ${Spacing[2]};\n align-items: center;\n min-height: ${BAR_ROW_HEIGHT};\n width: 100%;\n`;\n\nconst Track = styled.div<{ $size: ProgressBarSize; $railColor?: Color }>`\n flex: 1;\n height: ${({ $size }) => TRACK_HEIGHT[$size]};\n background-color: ${({ $railColor }) => $railColor ?? Color.BorderDivider};\n border-radius: 4px;\n overflow: hidden;\n position: relative;\n`;\n\nconst Fill = styled.div<{\n $percent: number;\n $left: number;\n $status: ProgressBarStatus;\n $fillColor?: Color;\n $hasSuccessBefore: boolean;\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: ${({ $left }) => `${$left}%`};\n width: ${({ $percent }) => `${$percent}%`};\n background-color: ${({ $status, $fillColor }) => $fillColor ?? STATUS_FILL_COLORS[$status]};\n border-radius: ${({ $hasSuccessBefore }) => ($hasSuccessBefore ? '0 4px 4px 0' : '4px')};\n transition: width 0.3s ease, left 0.3s ease;\n`;\n\nconst SuccessFill = styled.div<{ $percent: number; $hasInProgressAfter: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: ${({ $percent }) => `${$percent}%`};\n background-color: ${STATUS_FILL_COLORS.success};\n border-radius: ${({ $hasInProgressAfter }) => ($hasInProgressAfter ? '4px 0 0 4px' : '4px')};\n transition: width 0.3s ease;\n`;\n\nconst IndeterminateFill = styled.div`\n position: absolute;\n inset: 0 auto 0 auto;\n height: 100%;\n /* Same neutral as Spinner (Color.BorderIconPrimary) */\n background-color: ${Color.BorderIconPrimary};\n border-radius: 4px;\n animation: ${indeterminateScan} 2.5s ease-in-out infinite;\n`;\n\nconst SuffixRow = styled.div`\n display: flex;\n gap: ${Spacing[1]};\n align-items: center;\n flex-shrink: 0;\n`;\n\nconst PercentText = styled.span`\n ${paragraphMixins.md}\n color: ${Color.TextPrimary};\n white-space: nowrap;\n`;\n\nconst IconWrapper = styled.span<{ $color: Color }>`\n display: flex;\n flex-shrink: 0;\n line-height: 0;\n color: ${({ $color }) => $color};\n`;\n\nexport interface ProgressBarProps extends ComponentPropsWithoutRef<'div'> {\n /** Completion percentage, 0–100 */\n percent?: number;\n /** Size of the bar track */\n size?: ProgressBarSize;\n /** Status — affects fill color */\n status?: ProgressBarStatus;\n /**\n * `'determinate'` shows a filled bar for a known percentage.\n * `'indeterminate'` shows a scanning animation for unknown progress.\n * @defaultValue 'determinate'\n */\n type?: ProgressBarType;\n /** Label text */\n label?: string;\n /**\n * Show a right-hand info slot: percentage while in progress, status icon when\n * success or exception. The two are mutually exclusive — icon replaces percentage\n * once the bar reaches a terminal state.\n * Defaults to `true` when `successPercent` is set.\n */\n showInfo?: boolean;\n /** Custom fill color (design-system token) — overrides status color */\n fillColor?: Color;\n /** Custom track/rail background color (design-system token) */\n railColor?: Color;\n /**\n * Format function for the displayed percentage value.\n * @defaultValue (percent) => `${percent}%`\n */\n format?: (percent: number) => string;\n /**\n * When set, renders a green success segment from 0 to `successPercent`%,\n * with the main fill continuing from `successPercent`% to `percent`%.\n * Clamped to [0, percent]. Also enables `showInfo` by default.\n */\n successPercent?: number;\n /**\n * Tooltip content shown when hovering the bar track.\n * Use to surface a segment breakdown, e.g. \"3 done / 3 in progress / 4 to do\".\n */\n tooltip?: string;\n}\n\n/**\n * ProgressBar shows the completion status of an operation as a filled bar.\n *\n * @example\n * ```tsx\n * <ProgressBar\n * percent={60}\n * size=\"md\"\n * label=\"Uploading\"\n * showInfo\n * />\n * ```\n */\nexport const ProgressBar = ({\n percent = 0,\n size = 'sm',\n status = 'default',\n type = 'determinate',\n label,\n showInfo,\n fillColor,\n railColor,\n format,\n successPercent,\n tooltip,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) => {\n const labelId = useId();\n const clampedPercent = Math.min(100, Math.max(0, percent));\n const clampedSuccessPercent =\n successPercent != null ? Math.min(clampedPercent, Math.max(0, successPercent)) : 0;\n const inProgressPercent = clampedPercent - clampedSuccessPercent;\n const hasSuccessSegment = clampedSuccessPercent > 0;\n const hasInProgressSegment = inProgressPercent > 0;\n\n // Automatically derive success status when fully complete (unless caller set exception)\n const effectiveStatus: ProgressBarStatus =\n clampedPercent >= 100 && status !== 'exception' ? 'success' : status;\n\n // showInfo defaults to true when successPercent is used\n const effectiveShowInfo = showInfo ?? successPercent != null;\n\n const isTerminal = effectiveStatus === 'exception' || effectiveStatus === 'success';\n const formattedPercent = format ? format(clampedPercent) : `${clampedPercent}%`;\n const isIndeterminate = type === 'indeterminate';\n\n const labelledBy = label ? [labelId, ariaLabelledBy].filter(Boolean).join(' ') : ariaLabelledBy;\n const accessibleLabel = labelledBy ? undefined : (ariaLabel ?? 'Progress');\n\n const track = (\n <Track\n $size={size}\n $railColor={railColor}\n role='progressbar'\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={isIndeterminate ? undefined : clampedPercent}\n aria-valuetext={isIndeterminate ? undefined : formattedPercent}\n aria-labelledby={labelledBy || undefined}\n aria-label={accessibleLabel}\n >\n {isIndeterminate ? (\n <IndeterminateFill />\n ) : (\n <>\n {hasSuccessSegment && (\n <SuccessFill\n $percent={clampedSuccessPercent}\n $hasInProgressAfter={hasInProgressSegment}\n />\n )}\n {hasInProgressSegment && (\n <Fill\n $percent={inProgressPercent}\n $left={clampedSuccessPercent}\n $status={effectiveStatus}\n $fillColor={fillColor}\n $hasSuccessBefore={hasSuccessSegment}\n />\n )}\n </>\n )}\n </Track>\n );\n\n return (\n <Container {...props}>\n {label && <LabelText id={labelId}>{label}</LabelText>}\n <BarRow>\n {tooltip ? (\n <Tooltip trigger={track} side='top' contentAlignment='center'>\n {tooltip}\n </Tooltip>\n ) : (\n track\n )}\n {effectiveShowInfo && (\n <SuffixRow>\n {isTerminal ? (\n <IconWrapper $color={STATUS_ICON_COLORS[effectiveStatus]}>\n {effectiveStatus === 'exception' ? (\n <CircleWarningFillIcon size={16} />\n ) : (\n <CircleCheckFillIcon size={16} />\n )}\n </IconWrapper>\n ) : (\n <PercentText>{formattedPercent}</PercentText>\n )}\n </SuffixRow>\n )}\n </BarRow>\n </Container>\n );\n};\n\nexport default ProgressBar;\n","import ProgressBar from './ProgressBar';\n\nexport { ProgressBar };\nexport type {\n ProgressBarProps,\n ProgressBarSize,\n ProgressBarStatus,\n ProgressBarType,\n} from './ProgressBar';\n\nexport default ProgressBar;\n"],"mappings":";;;;;;;;;AAcA,MAAM,qBAAuD;CAC3D,SAAS,MAAM;CACf,WAAW,MAAM;CACjB,SAAS,MAAM;CAChB;AAED,MAAM,qBAA6D;CACjE,WAAW,MAAM;CACjB,SAAS,MAAM;CAChB;AAED,MAAM,eAAgD;CACpD,IAAI;CACJ,IAAI;CACL;AAGD,MAAM,iBAAiB;AAEvB,MAAM,oBAAoB,SAAS;;;;;AAMnC,MAAM,YAAY,OAAO,GAAG;;;;;AAM5B,MAAM,YAAY,OAAO,IAAI;IACzB,gBAAgB,GAAG;WACZ,MAAM,YAAY;;AAG7B,MAAM,SAAS,OAAO,GAAG;;SAEhB,QAAQ,GAAG;;gBAEJ,eAAe;;;AAI/B,MAAM,QAAQ,OAAO,GAAmD;;aAE3D,EAAE,YAAY,aAAa,OAAO;uBACxB,EAAE,iBAAiB,cAAc,MAAM,cAAc;;;;;AAM5E,MAAM,OAAO,OAAO,GAMlB;;;;WAIS,EAAE,YAAY,GAAG,MAAM,GAAG;YACzB,EAAE,eAAe,GAAG,SAAS,GAAG;uBACrB,EAAE,SAAS,iBAAiB,cAAc,mBAAmB,SAAS;oBACzE,EAAE,wBAAyB,oBAAoB,gBAAgB,MAAO;;;AAI1F,MAAM,cAAc,OAAO,GAAuD;;;;;YAKtE,EAAE,eAAe,GAAG,SAAS,GAAG;sBACtB,mBAAmB,QAAQ;oBAC7B,EAAE,0BAA2B,sBAAsB,gBAAgB,MAAO;;;AAI9F,MAAM,oBAAoB,OAAO,GAAG;;;;;sBAKd,MAAM,kBAAkB;;eAE/B,kBAAkB;;AAGjC,MAAM,YAAY,OAAO,GAAG;;SAEnB,QAAQ,GAAG;;;;AAKpB,MAAM,cAAc,OAAO,IAAI;IAC3B,gBAAgB,GAAG;WACZ,MAAM,YAAY;;;AAI7B,MAAM,cAAc,OAAO,IAAuB;;;;YAItC,EAAE,aAAa,OAAO;;;;;;;;;;;;;;;AA4DlC,MAAa,eAAe,EAC1B,UAAU,GACV,OAAO,MACP,SAAS,WACT,OAAO,eACP,OACA,UACA,WACA,WACA,QACA,gBACA,SACA,cAAc,WACd,mBAAmB,gBACnB,GAAG,YACmB;CACtB,MAAM,UAAU,OAAO;CACvB,MAAM,iBAAiB,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC;CAC1D,MAAM,wBACJ,kBAAkB,OAAO,KAAK,IAAI,gBAAgB,KAAK,IAAI,GAAG,eAAe,CAAC,GAAG;CACnF,MAAM,oBAAoB,iBAAiB;CAC3C,MAAM,oBAAoB,wBAAwB;CAClD,MAAM,uBAAuB,oBAAoB;CAGjD,MAAM,kBACJ,kBAAkB,OAAO,WAAW,cAAc,YAAY;CAGhE,MAAM,oBAAoB,YAAY,kBAAkB;CAExD,MAAM,aAAa,oBAAoB,eAAe,oBAAoB;CAC1E,MAAM,mBAAmB,SAAS,OAAO,eAAe,GAAG,GAAG,eAAe;CAC7E,MAAM,kBAAkB,SAAS;CAEjC,MAAM,aAAa,QAAQ,CAAC,SAAS,eAAe,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,GAAG;CAGjF,MAAM,QACJ,oBAAC,OAAD;EACE,OAAO;EACP,YAAY;EACZ,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe,kBAAkB,KAAA,IAAY;EAC7C,kBAAgB,kBAAkB,KAAA,IAAY;EAC9C,mBAAiB,cAAc,KAAA;EAC/B,cAZoB,aAAa,KAAA,IAAa,aAAa;YAc1D,kBACC,oBAAC,mBAAD,EAAqB,CAAA,GAErB,qBAAA,UAAA,EAAA,UAAA,CACG,qBACC,oBAAC,aAAD;GACE,UAAU;GACV,qBAAqB;GACrB,CAAA,EAEH,wBACC,oBAAC,MAAD;GACE,UAAU;GACV,OAAO;GACP,SAAS;GACT,YAAY;GACZ,mBAAmB;GACnB,CAAA,CAEH,EAAA,CAAA;EAEC,CAAA;AAGV,QACE,qBAAC,WAAD;EAAW,GAAI;YAAf,CACG,SAAS,oBAAC,WAAD;GAAW,IAAI;aAAU;GAAkB,CAAA,EACrD,qBAAC,QAAD,EAAA,UAAA,CACG,UACC,oBAAC,SAAD;GAAS,SAAS;GAAO,MAAK;GAAM,kBAAiB;aAClD;GACO,CAAA,GAEV,OAED,qBACC,oBAAC,WAAD,EAAA,UACG,aACC,oBAAC,aAAD;GAAa,QAAQ,mBAAmB;aACrC,oBAAoB,cACnB,oBAAC,uBAAD,EAAuB,MAAM,IAAM,CAAA,GAEnC,oBAAC,qBAAD,EAAqB,MAAM,IAAM,CAAA;GAEvB,CAAA,GAEd,oBAAC,aAAD,EAAA,UAAc,kBAA+B,CAAA,EAErC,CAAA,CAEP,EAAA,CAAA,CACC;;;;;ACjRhB,IAAA,sBAAe"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
2
1
|
import { focusOutline } from "../../mixins/focus.mjs";
|
|
2
|
+
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
3
3
|
import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
|
|
4
4
|
import styled, { css } from "styled-components";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Radio } from "../../Radio-
|
|
1
|
+
import { t as Radio } from "../../Radio-BaFutxgV.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-BuJaitgG.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-ClMzOZl0.mjs";
|
|
2
2
|
export { RadioGroup, RadioGroup as default };
|
|
@@ -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-_I4sWeD7.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-DgyJL4uN.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-vwXGlHuW.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-D6MqSYVa.mjs";
|
|
2
2
|
export { Option, Select, Select as default, SelectHeader };
|