@persona/design-system 0.7.1 → 0.8.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 +49 -0
- package/README.md +9 -9
- package/dist/Accordion.d.mts +38 -0
- package/dist/AccordionItem.d.mts +31 -0
- package/dist/{Action-C7INft7X.d.mts → Action-B-AiHknZ.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +2 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +3 -3
- package/dist/{Badge-BD0Ut46g.mjs → Badge-COqUjFQu.mjs} +2 -2
- package/dist/{Badge-BD0Ut46g.mjs.map → Badge-COqUjFQu.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumb-DtW1R9xW.d.mts → Breadcrumb-DRFY46ZW.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-B6JyoS8n.d.mts → Breadcrumbs-DUSbT1I7.d.mts} +2 -2
- package/dist/{Breadcrumbs-CrXfUK1V.mjs → Breadcrumbs-DXS7rU7_.mjs} +5 -5
- package/dist/{Breadcrumbs-CrXfUK1V.mjs.map → Breadcrumbs-DXS7rU7_.mjs.map} +1 -1
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-HodDf_bB.d.mts → Button-xZ6DC5XC.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-DrdTvzAa.d.mts → Calendar-dPmo2dkj.d.mts} +1 -1
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-CpDwATnX.d.mts → Card-CUeM8Lh8.d.mts} +3 -3
- package/dist/Card.d.mts +1 -1
- package/dist/{CardV2-M3o4BELp.mjs → CardV2-D9p7D7jX.mjs} +9 -7
- package/dist/{CardV2-M3o4BELp.mjs.map → CardV2-D9p7D7jX.mjs.map} +1 -1
- package/dist/{Checkbox-CyWXhuby.mjs → Checkbox-DQynkc_I.mjs} +3 -3
- package/dist/{Checkbox-CyWXhuby.mjs.map → Checkbox-DQynkc_I.mjs.map} +1 -1
- package/dist/{Checkbox-C-hMfItK.d.mts → Checkbox-DoJpxPEz.d.mts} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-1M6EwVmq.mjs → Combobox-C_kCY3P3.mjs} +28 -12
- package/dist/Combobox-C_kCY3P3.mjs.map +1 -0
- package/dist/{Combobox-DyNllwt8.d.mts → Combobox-D7hyf-jA.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-B3YqkjQp.d.mts → ComboboxBase-BMCY6O7Y.d.mts} +10 -5
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-BuwVssvZ.d.mts → ComboboxMultiSelect-L0KYMkmm.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-gJC4v7ER.d.mts → ComboboxSingleSelect-v5oNrJ7M.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-DhHh7Roq.d.mts → CompactBar-DjFaUAsN.d.mts} +4 -4
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs → ConfigFormGroup-DLOZOuLf.mjs} +2 -2
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs.map → ConfigFormGroup-DLOZOuLf.mjs.map} +1 -1
- package/dist/{ControlBar-C8kagIck.d.mts → ControlBar-Cegjxa6-.d.mts} +7 -2
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable.d.mts +4 -3
- package/dist/{DateField-2aigfD4u.d.mts → DateField-Dk5ykLdr.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-D9JurBBj.mjs → DatePicker-C7z1yodK.mjs} +77 -42
- package/dist/DatePicker-C7z1yodK.mjs.map +1 -0
- package/dist/{DatePicker-DC_RKjdM.d.mts → DatePicker-Dtvv0V45.d.mts} +2 -2
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-ByD6IsLB.d.mts → DateRangePicker-HPYsa4wC.d.mts} +3 -3
- package/dist/DateRangePicker.d.mts +1 -1
- package/dist/DateRangeValueControl.d.mts +5 -3
- package/dist/DateValueControl.d.mts +8 -5
- package/dist/{DropdownButton-BWiXLMfD.mjs → DropdownButton-CQrFHOIW.mjs} +3 -3
- package/dist/{DropdownButton-BWiXLMfD.mjs.map → DropdownButton-CQrFHOIW.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-Xl1BYXsY.d.mts → DropdownMenu-D1qvgGTZ.d.mts} +2 -2
- package/dist/{DropdownMenu-CuKSNxc9.mjs → DropdownMenu-rm9Nnxn7.mjs} +7 -2
- package/dist/DropdownMenu-rm9Nnxn7.mjs.map +1 -0
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-Dgu98PkH.d.mts → ErrorProps-B8-Mqf1W.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-BdtxI1N2.d.mts → FieldRegistry-0LmSQ-jc.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-jYjPeD7F.d.mts → FilterBar-BMM4Swbt.d.mts} +11 -4
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +2 -2
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +1 -1
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/{FormControl-BEk4F1EV.mjs → FormControl-DXrxoJLl.mjs} +26 -11
- package/dist/FormControl-DXrxoJLl.mjs.map +1 -0
- package/dist/{FormControl-CJfYdgZF.d.mts → FormControl-Dg8doZq2.d.mts} +6 -2
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-CK8o1sMB.d.mts → FormField-BeLigf9j.d.mts} +4 -2
- package/dist/{FormField-ByT0avVx.mjs → FormField-Crp3F-hv.mjs} +31 -21
- package/dist/FormField-Crp3F-hv.mjs.map +1 -0
- package/dist/FormField.d.mts +1 -1
- package/dist/Grid-eMLuyRzV.mjs +92 -0
- package/dist/Grid-eMLuyRzV.mjs.map +1 -0
- package/dist/Grid.d.mts +4 -1
- package/dist/{Header-ZnHGm8fs.d.mts → Header-DxJ6TfPw.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-CQpPO16Q.d.mts → HelperTooltip-DcyrpEZI.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/{HoverCopyableField-CN3gl0ny.mjs → HoverCopyableField-12bBuG-d.mjs} +3 -3
- package/dist/{HoverCopyableField-CN3gl0ny.mjs.map → HoverCopyableField-12bBuG-d.mjs.map} +1 -1
- package/dist/{IconButton-zu-VNp1h.d.mts → IconButton-BUMMN-gH.d.mts} +2 -2
- package/dist/{IconButton-CqTPMhjV.mjs → IconButton-CCLMYWVN.mjs} +1 -1
- package/dist/{IconButton-CqTPMhjV.mjs.map → IconButton-CCLMYWVN.mjs.map} +1 -1
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +1 -1
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-Ce8FvSYf.d.mts → Input-2N2e5JCf.d.mts} +3 -3
- package/dist/{Input-Bc2yWH3j.mjs → Input-Cl4o41k4.mjs} +7 -3
- package/dist/Input-Cl4o41k4.mjs.map +1 -0
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-B1Xod4wm.d.mts → InputProps-TWzig3QO.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/Link-I9Bklen-.mjs +79 -0
- package/dist/Link-I9Bklen-.mjs.map +1 -0
- package/dist/Link.d.mts +1 -1
- package/dist/{ListBox-D-8iwYVj.d.mts → ListBox-BcoXOt73.d.mts} +3 -3
- package/dist/{ListBox-CFBhILRy.mjs → ListBox-sqeLBiKS.mjs} +33 -16
- package/dist/ListBox-sqeLBiKS.mjs.map +1 -0
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField.d.mts +3 -2
- package/dist/{LoadingShimmer-Dizk2sZu.mjs → LoadingShimmer-dRSkdlqD.mjs} +13 -8
- package/dist/LoadingShimmer-dRSkdlqD.mjs.map +1 -0
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-CgPds2tq.d.mts → LogicRow-DXywXdYt.d.mts} +3 -3
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/{Menu-CSwzFqdv.d.mts → Menu-BekLwm8w.d.mts} +3 -3
- package/dist/{Menu-Cd6oxjAe.mjs → Menu-CwlI7BMN.mjs} +1 -1
- package/dist/{Menu-Cd6oxjAe.mjs.map → Menu-CwlI7BMN.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/Modal-CMiFcXC9.mjs +260 -0
- package/dist/Modal-CMiFcXC9.mjs.map +1 -0
- package/dist/Modal-ymxlGYKt.d.mts +145 -0
- package/dist/Modal.d.mts +2 -145
- package/dist/{PageHeader-DJOlcAiW.mjs → PageHeader-D_0p7UK_.mjs} +2 -2
- package/dist/{PageHeader-DJOlcAiW.mjs.map → PageHeader-D_0p7UK_.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/PageLayoutFrame.d.mts +28 -0
- package/dist/{PageSelector-BMz2Q4P6.d.mts → PageSelector-Bxulu6vU.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-B1u203DE.mjs → Pagination-Co9CfyFQ.mjs} +5 -5
- package/dist/{Pagination-B1u203DE.mjs.map → Pagination-Co9CfyFQ.mjs.map} +1 -1
- package/dist/{Pagination-ne9hnVoe.d.mts → Pagination-Dg-4O7F7.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-Dz4woKd8.mjs → Pii-JGV9gP95.mjs} +2 -2
- package/dist/{Pii-Dz4woKd8.mjs.map → Pii-JGV9gP95.mjs.map} +1 -1
- package/dist/{PillShell-ChTB_koa.d.mts → PillShell-BA7KK1zS.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-opVa9Xhc.mjs → Popover-ZAj03lws.mjs} +15 -2
- package/dist/Popover-ZAj03lws.mjs.map +1 -0
- package/dist/ProgressIndicator-CQg08vuA.mjs +188 -0
- package/dist/ProgressIndicator-CQg08vuA.mjs.map +1 -0
- package/dist/ProgressIndicator-D85HQGSx.d.mts +66 -0
- package/dist/ProgressIndicator.d.mts +2 -66
- package/dist/{PseudoClassProps-CdRF3QNn.d.mts → PseudoClassProps-BHs8TX_3.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-Ds1pODKw.mjs → Radio-CYV290JI.mjs} +2 -2
- package/dist/{Radio-Ds1pODKw.mjs.map → Radio-CYV290JI.mjs.map} +1 -1
- package/dist/{RadioGroup-CxL6LW4q.d.mts → RadioGroup-Cq3KV1TN.d.mts} +1 -1
- package/dist/{RadioGroup-HIC9V2hO.mjs → RadioGroup-lWMMtu9V.mjs} +2 -2
- package/dist/{RadioGroup-HIC9V2hO.mjs.map → RadioGroup-lWMMtu9V.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-B7TwRJbg.d.mts → RangeCalendar-Mh7h74Tp.d.mts} +2 -2
- package/dist/RangeCalendar.d.mts +1 -1
- package/dist/RangeCalendarPresets.d.mts +1 -1
- package/dist/{RouterContext-B7N12wkK.d.mts → RouterContext-B3IU1jb0.d.mts} +2 -2
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-Bq36EGjc.d.mts → RouterLink-CwAqTLC2.d.mts} +2 -2
- package/dist/RouterLink.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +2 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-D69WxMNq.d.mts → SearchInput-BGyUUcoz.d.mts} +2 -2
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-OHrfJiw0.mjs → SegmentedControl-BEbIcV3g.mjs} +13 -6
- package/dist/SegmentedControl-BEbIcV3g.mjs.map +1 -0
- package/dist/{SegmentedControl-vCnGsdXo.d.mts → SegmentedControl-DgDabSgr.d.mts} +2 -1
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-sQb4dQwT.d.mts → Select-wqTtGyga.d.mts} +3 -3
- package/dist/{Select-DE7uv9C8.mjs → Select-yC2t_gZb.mjs} +10 -8
- package/dist/Select-yC2t_gZb.mjs.map +1 -0
- package/dist/Select.d.mts +1 -1
- package/dist/SingleColumnLayout.d.mts +16 -0
- package/dist/{Spinner-DplDSBqf.mjs → Spinner-BlAg8_OX.mjs} +1 -1
- package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-BlAg8_OX.mjs.map} +1 -1
- package/dist/SplitColumnLayout.d.mts +19 -0
- package/dist/{Stack-ChsImaEY.mjs → Stack-Bkn0TUDe.mjs} +1 -1
- package/dist/{Stack-ChsImaEY.mjs.map → Stack-Bkn0TUDe.mjs.map} +1 -1
- package/dist/{Stack-8KGPQp0u.d.mts → Stack-CYqjBXe8.d.mts} +1 -1
- package/dist/Stack.d.mts +1 -1
- package/dist/StatusIndicator-DT2zNbkp.mjs +315 -0
- package/dist/StatusIndicator-DT2zNbkp.mjs.map +1 -0
- package/dist/{Sticker-C3Eb13OQ.mjs → Sticker-BLbgJxcH.mjs} +5 -8
- package/dist/Sticker-BLbgJxcH.mjs.map +1 -0
- package/dist/{Sticker-Bf9rhSkv.d.mts → Sticker-BmyKaxwx.d.mts} +4 -4
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/Tab.d.mts +1 -1
- package/dist/{TabBar-BepWbJHz.mjs → TabBar-Bj84q1Mr.mjs} +4 -7
- package/dist/{TabBar-BepWbJHz.mjs.map → TabBar-Bj84q1Mr.mjs.map} +1 -1
- package/dist/{Table-BefytM6w.d.mts → Table-DhdHUQ8V.d.mts} +1 -1
- package/dist/{Table-B1gRr2XT.mjs → Table-WqNfjasd.mjs} +22 -3
- package/dist/Table-WqNfjasd.mjs.map +1 -0
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-BZ34-_wV.d.mts → TableBody-qoSvQDds.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-NP6bhtKb.mjs → TableBox-obl64W5Y.mjs} +22 -17
- package/dist/TableBox-obl64W5Y.mjs.map +1 -0
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-CHGw9HVj.d.mts → TableBoxCell-DzYMx4Ju.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +4 -3
- package/dist/{TableBoxRow-BljsXKrL.d.mts → TableBoxRow-B4rFCvWK.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-h6HNEv9F.d.mts → TableBoxRowActions-qMKcVuTL.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-DorRxyke.d.mts → TableCell-CGPQRc5g.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-CYTpBlQN.mjs → TableControls-RS_ozBsI.mjs} +219 -70
- package/dist/TableControls-RS_ozBsI.mjs.map +1 -0
- package/dist/{TableControls-BtGFiZeD.d.mts → TableControls-WP78qtET.d.mts} +4 -3
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-C3DYeUmB.d.mts → TableControlsContext-DZIZSyfX.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-B0Fdldgw.d.mts → TableHead-36j-_oyn.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-C_7X8QAT.d.mts → TableHeaderCell-C7gp9j1X.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-CXVVzq0e.d.mts → TableLayout-CQqIV0vj.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-Dr61XJNw.d.mts → TableRow-BJZM8I8i.d.mts} +2 -2
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-CCtwcB3I.d.mts → TableViewConfigurationDropdown-Dwy_9FBz.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-_LtE-PRY.mjs → TechnicalSticker-CL0zkOAj.mjs} +1 -1
- package/dist/{TechnicalSticker-_LtE-PRY.mjs.map → TechnicalSticker-CL0zkOAj.mjs.map} +1 -1
- package/dist/{Text-DD_W_ixb.d.mts → Text-DbtTa83E.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-DOofaXJi.d.mts → TextArea-CbxF6u7z.d.mts} +2 -2
- package/dist/{TextArea-8TuVvmvj.mjs → TextArea-CfZr5Sk4.mjs} +2 -2
- package/dist/{TextArea-8TuVvmvj.mjs.map → TextArea-CfZr5Sk4.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-BPLKU9wu.d.mts → TextUnderlineTooltip-BgLQuK38.d.mts} +2 -2
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +1 -1
- package/dist/Toast.d.mts +1 -1
- package/dist/{Toggle-2nrUX591.d.mts → Toggle-BYMLrPXk.d.mts} +3 -1
- package/dist/{Toggle-Dcn2Rqgm.mjs → Toggle-D4ZaUcVt.mjs} +11 -5
- package/dist/Toggle-D4ZaUcVt.mjs.map +1 -0
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-Cnqf1-tx.d.mts → Tooltip-4pshzB_i.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-g2T5HlqX.d.mts → TruncatedText-O7hE3w0O.d.mts} +1 -1
- package/dist/VersionHistory.d.mts +23 -0
- package/dist/VersionHistoryItem-CIcEgl0K.d.mts +54 -0
- package/dist/VersionHistoryItem.d.mts +2 -0
- package/dist/WizardModal.d.mts +41 -0
- package/dist/accordionTitleTypography-CNB1w3kn.d.mts +17 -0
- package/dist/accordionTitleTypography.d.mts +2 -0
- package/dist/assertNever.d.mts +5 -0
- package/dist/{codec-CoX6LfOY.d.mts → codec-BXVBsB8Y.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-Bt0Lv1e3.d.mts → color-3UO63ocQ.d.mts} +9 -4
- package/dist/components/Accordion/index.d.mts +4 -0
- package/dist/components/Accordion/index.mjs +330 -0
- package/dist/components/Accordion/index.mjs.map +1 -0
- package/dist/components/Attribute/index.mjs +2 -2
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +1 -1
- package/dist/components/BottomPanel/index.mjs +5 -3
- package/dist/components/BottomPanel/index.mjs.map +1 -1
- package/dist/components/Breadcrumbs/index.d.mts +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.d.mts +2 -2
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +2 -2
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/CardV2/index.d.mts +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/CodeHighlight/index.mjs +3 -1
- package/dist/components/CodeHighlight/index.mjs.map +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 +19 -19
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.mjs +27 -16
- 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 +5 -5
- 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.mjs +10 -7
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FormControl/index.d.mts +2 -2
- package/dist/components/FormControl/index.mjs +2 -2
- package/dist/components/FormField/index.d.mts +1 -1
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/Grid/index.d.mts +2 -2
- package/dist/components/Grid/index.mjs +2 -85
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +13 -9
- package/dist/components/ImageTile/index.mjs.map +1 -1
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/Link/index.mjs +1 -78
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/LoadingShimmer/index.mjs +1 -1
- package/dist/components/MaskedInput/index.mjs +1 -1
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Menu/index.mjs +1 -1
- package/dist/components/Modal/index.d.mts +1 -1
- package/dist/components/Modal/index.mjs +1 -257
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +1 -2
- package/dist/components/ProgressBar/index.mjs.map +1 -1
- package/dist/components/ProgressIndicator/index.d.mts +2 -2
- package/dist/components/ProgressIndicator/index.mjs +1 -187
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.d.mts +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RightPanel/index.mjs +10 -7
- package/dist/components/RightPanel/index.mjs.map +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 +1 -1
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +2 -105
- package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +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 -314
- package/dist/components/Sticker/index.d.mts +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +8 -8
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +2 -2
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Text/index.d.mts +1 -1
- package/dist/components/TextArea/index.d.mts +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +2 -2
- package/dist/components/Toast/index.mjs +2 -2
- package/dist/components/Toast/index.mjs.map +1 -1
- package/dist/components/Toggle/index.d.mts +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/VersionHistory/index.d.mts +3 -0
- package/dist/components/VersionHistory/index.mjs +389 -0
- package/dist/components/VersionHistory/index.mjs.map +1 -0
- package/dist/components/WizardModal/index.d.mts +2 -0
- package/dist/components/WizardModal/index.mjs +106 -0
- package/dist/components/WizardModal/index.mjs.map +1 -0
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-D8bzZ-7B.d.mts → constants-BOxzLX-O.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/{createPath-BDYRvl57.d.mts → createPath-OeTC9kvS.d.mts} +2 -2
- package/dist/createPath.d.mts +1 -1
- package/dist/{date-filter-CZeChs9T.mjs → date-filter-BnzR6NxT.mjs} +1 -1
- package/dist/{date-filter-CZeChs9T.mjs.map → date-filter-BnzR6NxT.mjs.map} +1 -1
- package/dist/{date-range-rule-value-jZAHuxZJ.d.mts → date-range-rule-value-BRp5Bi7R.d.mts} +2 -2
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/{date-rule-intent-CC1LdkE7.d.mts → date-rule-intent-CDBtV0ET.d.mts} +3 -3
- package/dist/date-rule-intent.d.mts +1 -1
- package/dist/display.d.mts +2 -2
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{filter-size-context-BGczB5R9.d.mts → filter-size-context-CqvQ190x.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/format-date-value.d.mts +5 -0
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-DalP_w0c.d.mts → index-BXSe73Xn.d.mts} +2 -2
- package/dist/{index-BRKXhLGa.d.mts → index-CyAok7As.d.mts} +2 -2
- package/dist/index-gVcIuWLd.d.mts +1 -0
- package/dist/{index-BZmGEbsA.d.mts → index-wKK9f9La.d.mts} +3 -3
- package/dist/index-zeAhjge4.d.mts +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index2.d.mts +1 -1
- package/dist/index3.d.mts +3 -3
- package/dist/index4.d.mts +1 -1
- package/dist/index5.d.mts +14 -14
- package/dist/{input-DCJivcWf.d.mts → input-C6cyiqm2.d.mts} +3 -3
- package/dist/inputFields.d.mts +14 -12
- package/dist/{intersperse-Bxcrxj2Q.mjs → intersperse-Df9zw7Bk.mjs} +1 -1
- package/dist/{intersperse-Bxcrxj2Q.mjs.map → intersperse-Df9zw7Bk.mjs.map} +1 -1
- package/dist/{jsonSchema-c_EfAj8y.d.mts → jsonSchema-CfGi1bzI.d.mts} +67 -11
- package/dist/lib/PDSProvider.d.mts +2 -2
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/chainTypes.d.mts +17 -0
- package/dist/lib/chainTypes.mjs +0 -0
- package/dist/lib/color.d.mts +2 -2
- package/dist/lib/color.mjs +18 -11
- package/dist/lib/color.mjs.map +1 -1
- package/dist/lib/customFunctionSchema.d.mts +49 -0
- package/dist/lib/customFunctionSchema.mjs +299 -0
- package/dist/lib/customFunctionSchema.mjs.map +1 -0
- package/dist/lib/date-filter/index.d.mts +2 -2
- package/dist/lib/date-filter/index.mjs +1 -1
- package/dist/lib/jsonSchema.d.mts +2 -2
- package/dist/lib/jsonSchema.mjs +36 -11
- package/dist/lib/jsonSchema.mjs.map +1 -1
- package/dist/lib/jsonSchemaType.d.mts +7 -0
- package/dist/lib/jsonSchemaType.mjs +31 -0
- package/dist/lib/jsonSchemaType.mjs.map +1 -0
- package/dist/lib/letPointerDownReachDocument.d.mts +22 -0
- package/dist/lib/letPointerDownReachDocument.mjs +25 -0
- package/dist/lib/letPointerDownReachDocument.mjs.map +1 -0
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/methodChain.d.mts +3 -66
- package/dist/lib/methodChain.mjs +1 -237
- package/dist/lib/methodChainNormalize.d.mts +2 -2
- package/dist/lib/methodChainTypes.d.mts +2 -23
- package/dist/lib/objectSchemaTypes.d.mts +1 -1
- package/dist/lib/platformObject.d.mts +38 -0
- package/dist/lib/platformObject.mjs +79 -0
- package/dist/lib/platformObject.mjs.map +1 -0
- package/dist/lib/pseudoClass.d.mts +1 -1
- package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
- package/dist/lib/router/adapters/tanstack.d.mts +1 -1
- package/dist/lib/router/index.d.mts +5 -5
- package/dist/lib/schemaOptions.d.mts +173 -0
- package/dist/lib/schemaOptions.mjs +481 -0
- package/dist/lib/schemaOptions.mjs.map +1 -0
- package/dist/lib/semanticColor.d.mts +1 -1
- package/dist/lib/snakifyPath.d.mts +5 -0
- package/dist/lib/snakifyPath.mjs +11 -0
- package/dist/lib/snakifyPath.mjs.map +1 -0
- package/dist/{message-CjIHdhX1.d.mts → message-CblP0EjG.d.mts} +1 -1
- package/dist/methodChain-DAQxLgxt.mjs +241 -0
- package/dist/methodChain-DAQxLgxt.mjs.map +1 -0
- package/dist/methodChain-Pk1C3i_E.d.mts +66 -0
- package/dist/methodChainTypes-CqWzfx0M.d.mts +23 -0
- package/dist/mixins/focus.d.mts +1 -1
- package/dist/mixins/hoverable.d.mts +2 -2
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/input.mjs +6 -14
- package/dist/mixins/input.mjs.map +1 -1
- package/dist/mixins/menuItem.d.mts +2 -2
- package/dist/mixins/scrollbar.d.mts +10 -0
- package/dist/mixins/scrollbar.mjs +31 -0
- package/dist/mixins/scrollbar.mjs.map +1 -0
- package/dist/mixins/text.d.mts +1 -1
- package/dist/{operators-x_ZENhrT.d.mts → operators-CoXL5Hv6.d.mts} +2 -2
- package/dist/operators.d.mts +1 -1
- package/dist/{palette-qgPRWgUN.d.mts → palette-CxXUs1Fu.d.mts} +3 -3
- package/dist/palette.d.mts +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
- package/dist/patterns/PageLayout/index.d.mts +4 -1
- package/dist/patterns/PageLayout/index.mjs +99 -2
- package/dist/patterns/PageLayout/index.mjs.map +1 -1
- package/dist/reactRouterFallback.d.mts +1 -1
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/scrollExpandedItemIntoView.d.mts +12 -0
- package/dist/{semantic-DUctmpu_.d.mts → semantic-CFMBsuiJ.d.mts} +2 -2
- package/dist/{semanticColor-IAhXS17y.d.mts → semanticColor-DuJCmDrH.d.mts} +3 -3
- package/dist/{text-DjTGRUM1.d.mts → text-D8HPjiEX.d.mts} +1 -1
- package/dist/{theme-DKiszVRN.d.mts → theme-BcaR-Au5.d.mts} +3 -3
- package/dist/theme.d.mts +1 -1
- package/dist/time-range.d.mts +7 -0
- package/dist/tone.d.mts +3 -3
- package/dist/{types-CcZbBH0e.d.mts → types-BCiq4hGv.d.mts} +1 -1
- package/dist/types-BGMmkUpy.d.mts +105 -0
- package/dist/{types-N8PYonjD.d.mts → types-C4WUSW3e.d.mts} +7 -2
- package/dist/{types-CuQSgl1F.d.mts → types-CkpixGWr.d.mts} +1 -1
- package/dist/{types-D8rWSj3z.d.mts → types-Cl-w8tYc.d.mts} +1 -1
- package/dist/{types-gnF3MPfk2.d.mts → types-CoVZwrMW.d.mts} +2 -2
- package/dist/{types-RWjW1d9I.d.mts → types-DgyGecdM.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/types5.d.mts +1 -1
- package/dist/types6.d.mts +1 -1
- package/dist/{url-state-C2gl07_y.d.mts → url-state-8j_ef8Uf.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-BQYcAdKR.d.mts → useFilterStateV2-CW6eght1.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-DDbo-ExT.d.mts → useFormField-CLRZkUZt.d.mts} +4 -2
- package/dist/{useFormField-DsvC5dOb.mjs → useFormField-XezSxho_.mjs} +3 -2
- package/dist/useFormField-XezSxho_.mjs.map +1 -0
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs → useFormGroup-C7Cax8zO.mjs} +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs.map → useFormGroup-C7Cax8zO.mjs.map} +1 -1
- package/dist/{useLocationPathname-K2N4fw8j.d.mts → useLocationPathname-DH5Tdq5X.d.mts} +1 -1
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-CbbH3pMK.d.mts → useTableBoxDragAndDrop-Da4TiYBT.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/{utilities-D0EhDri-.d.mts → utilities-DcsbI71T.d.mts} +1 -1
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/storybook.mjs +1 -1
- package/dist/utils/testing.d.mts +1 -1
- package/dist/utils/testing.mjs.map +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/{validation-CMtfUd-R.d.mts → validation-BgwNghi2.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-Au9JNS5z.d.mts → value-control-resolver-B0HDRxRN.d.mts} +3 -2
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/variables/effect.d.mts +1 -1
- package/dist/variables/semantic.d.mts +1 -1
- package/dist/variables/semantic.mjs +15 -18
- package/dist/variables/semantic.mjs.map +1 -1
- package/llms.txt +10 -1
- package/package.json +27 -6
- package/skills/ui-authoring/COMPONENTS.md +6 -1
- package/skills/ui-authoring/PATTERNS.md +74 -115
- package/dist/Combobox-1M6EwVmq.mjs.map +0 -1
- package/dist/DatePicker-D9JurBBj.mjs.map +0 -1
- package/dist/DropdownMenu-CuKSNxc9.mjs.map +0 -1
- package/dist/FormControl-BEk4F1EV.mjs.map +0 -1
- package/dist/FormField-ByT0avVx.mjs.map +0 -1
- package/dist/Input-Bc2yWH3j.mjs.map +0 -1
- package/dist/ListBox-CFBhILRy.mjs.map +0 -1
- package/dist/LoadingShimmer-Dizk2sZu.mjs.map +0 -1
- package/dist/Popover-opVa9Xhc.mjs.map +0 -1
- package/dist/SegmentedControl-OHrfJiw0.mjs.map +0 -1
- package/dist/Select-DE7uv9C8.mjs.map +0 -1
- package/dist/Sticker-C3Eb13OQ.mjs.map +0 -1
- package/dist/Table-B1gRr2XT.mjs.map +0 -1
- package/dist/TableBox-NP6bhtKb.mjs.map +0 -1
- package/dist/TableControls-CYTpBlQN.mjs.map +0 -1
- package/dist/Toggle-Dcn2Rqgm.mjs.map +0 -1
- package/dist/components/Grid/index.mjs.map +0 -1
- package/dist/components/Link/index.mjs.map +0 -1
- package/dist/components/Modal/index.mjs.map +0 -1
- package/dist/components/ProgressIndicator/index.mjs.map +0 -1
- package/dist/components/StatusIndicator/index.mjs.map +0 -1
- package/dist/fieldSchemaTypes-BVYSm74B.d.mts +0 -39
- package/dist/lib/fieldSchemaTypes.d.mts +0 -2
- package/dist/lib/fieldSchemaTypes.mjs +0 -41
- package/dist/lib/fieldSchemaTypes.mjs.map +0 -1
- package/dist/lib/methodChain.mjs.map +0 -1
- package/dist/useFormField-DsvC5dOb.mjs.map +0 -1
- /package/dist/{index--p6oQT9I.d.mts → index-B24gUwOx.d.mts} +0 -0
- /package/dist/{index-B33elXxm.d.mts → index-BFnNtGdX.d.mts} +0 -0
- /package/dist/{index-BO_854F2.d.mts → index-BNRXMhlr.d.mts} +0 -0
- /package/dist/{index-BrGZHEgX.d.mts → index-BPiqSRRl.d.mts} +0 -0
- /package/dist/{index-BwAfCVZH2.d.mts → index-BYd3Btr1.d.mts} +0 -0
- /package/dist/{index-CRo77wc3.d.mts → index-Bt4QNofW.d.mts} +0 -0
- /package/dist/{index-CX869wwk.d.mts → index-CEqOS-7M.d.mts} +0 -0
- /package/dist/{index-CsuikFeJ.d.mts → index-CIABef8t.d.mts} +0 -0
- /package/dist/{index-CuYZJcK3.d.mts → index-CTHojwxd.d.mts} +0 -0
- /package/dist/{index-CzItj62a.d.mts → index-Cm-1i165.d.mts} +0 -0
- /package/dist/{index-D13oYj4_.d.mts → index-DB7t8whN.d.mts} +0 -0
- /package/dist/{index-D4DUvwPf.d.mts → index-DBGd4WeR.d.mts} +0 -0
- /package/dist/{index-DMRtRo7y.d.mts → index-DGsJdI5l.d.mts} +0 -0
- /package/dist/{index-DXJd7-2Z.d.mts → index-DWfPppPU.d.mts} +0 -0
- /package/dist/{index-DZlqSwCF.d.mts → index-DedbSZMv.d.mts} +0 -0
- /package/dist/{index-Dflz2i1X.d.mts → index-Jh0C5PIG.d.mts} +0 -0
- /package/dist/{index-DkrC-i1D.d.mts → index-NKYLt_R9.d.mts} +0 -0
- /package/dist/{index-DztUdPP_.d.mts → index-Qwqzz3XM.d.mts} +0 -0
- /package/dist/{index-Rvd9MEUQ.d.mts → index-VWno75SQ.d.mts} +0 -0
- /package/dist/{index-bHnO4ZKt.d.mts → index-fxXoW-qc.d.mts} +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { a as styled } from "../../styledComponentsInterop-NxwFjeA4.mjs";
|
|
2
|
+
import { semanticColor } from "../../lib/semanticColor.mjs";
|
|
3
|
+
import { i as Paragraph } from "../../Text-BdluS7Fy.mjs";
|
|
4
|
+
import { focusOutline } from "../../mixins/focus.mjs";
|
|
5
|
+
import { semanticScrollbar } from "../../mixins/scrollbar.mjs";
|
|
6
|
+
import { n as Stack, t as HStack } from "../../Stack-Bkn0TUDe.mjs";
|
|
7
|
+
import { n as Button, t as IconButton } from "../../IconButton-CCLMYWVN.mjs";
|
|
8
|
+
import { n as DropdownMenu_default } from "../../DropdownMenu-rm9Nnxn7.mjs";
|
|
9
|
+
import { t as Spinner } from "../../Spinner-BlAg8_OX.mjs";
|
|
10
|
+
import { t as TextAreaWithStyle } from "../../TextArea-CfZr5Sk4.mjs";
|
|
11
|
+
import { i as Modal_default } from "../../Modal-CMiFcXC9.mjs";
|
|
12
|
+
import { n as StatusIndicator } from "../../StatusIndicator-DT2zNbkp.mjs";
|
|
13
|
+
import { Color, Spacing } from "@persona/design-tokens";
|
|
14
|
+
import { useCallback, useMemo, useState } from "react";
|
|
15
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { MoreIcon, XIcon } from "@persona/icons";
|
|
17
|
+
//#region components/VersionHistory/VersionHistoryItem.tsx
|
|
18
|
+
const DEFAULT_COMPARE_LABEL = "Compare to latest version";
|
|
19
|
+
const DEFAULT_RESTORE_LABEL = "Restore";
|
|
20
|
+
const DEFAULT_DISCARD_LABEL = "Discard";
|
|
21
|
+
const DEFAULT_EDIT_DESCRIPTION_LABEL = "Edit description";
|
|
22
|
+
const hasVersionHistoryItemActions = (item) => item.onCompare != null || item.onRestore != null || item.onDiscard != null || item.onEditDescription != null;
|
|
23
|
+
/** Timeline stroke; 3px is the rail weight from the source panel. */
|
|
24
|
+
const RAIL_THICKNESS = "3px";
|
|
25
|
+
const ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;
|
|
26
|
+
const Row = styled.div`
|
|
27
|
+
display: grid;
|
|
28
|
+
grid-template-columns: ${({ $withActionSlot }) => $withActionSlot ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}` : `${Spacing[7]} minmax(0, 1fr)`};
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
background-color: ${({ theme }) => semanticColor(theme, "SurfacePrimary", Color.BackgroundPrimary)};
|
|
31
|
+
${focusOutline}
|
|
32
|
+
|
|
33
|
+
&:hover:not([aria-current='true']) {
|
|
34
|
+
background-color: ${({ theme }) => semanticColor(theme, "SurfaceHover", Color.BackgroundSecondary)};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&[aria-current='true'] {
|
|
38
|
+
background-color: ${({ theme }) => semanticColor(theme, "SurfaceAccent", theme.color.background.highlight)};
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
const RailColumn = styled.div`
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
align-items: center;
|
|
45
|
+
`;
|
|
46
|
+
const RailSegment = styled.div`
|
|
47
|
+
width: 0;
|
|
48
|
+
border-left: ${RAIL_THICKNESS} solid
|
|
49
|
+
${({ theme, $selected }) => $selected ? semanticColor(theme, "FgAccent", Color.TextActive) : semanticColor(theme, "BorderDefault", Color.BorderDivider)};
|
|
50
|
+
flex: 1;
|
|
51
|
+
`;
|
|
52
|
+
const RailStart = styled.div`
|
|
53
|
+
height: ${Spacing[5]};
|
|
54
|
+
flex-shrink: 0;
|
|
55
|
+
`;
|
|
56
|
+
const TimelineDot = styled.span`
|
|
57
|
+
width: ${Spacing[2]};
|
|
58
|
+
height: ${Spacing[2]};
|
|
59
|
+
border-radius: 50%;
|
|
60
|
+
flex-shrink: 0;
|
|
61
|
+
background-color: ${({ theme, $selected }) => $selected ? semanticColor(theme, "FgAccent", Color.TextActive) : semanticColor(theme, "BorderDefault", Color.BorderDivider)};
|
|
62
|
+
`;
|
|
63
|
+
const BodyColumn = styled.div`
|
|
64
|
+
min-width: 0;
|
|
65
|
+
padding: ${Spacing[4]} 0;
|
|
66
|
+
`;
|
|
67
|
+
const ActionsColumn = styled.div`
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
align-items: flex-end;
|
|
71
|
+
width: ${ACTION_SLOT_WIDTH};
|
|
72
|
+
padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};
|
|
73
|
+
box-sizing: border-box;
|
|
74
|
+
|
|
75
|
+
> * {
|
|
76
|
+
visibility: ${({ $revealed }) => $revealed ? "visible" : "hidden"};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
${Row}:hover &,
|
|
80
|
+
${Row}:focus-within & {
|
|
81
|
+
> * {
|
|
82
|
+
visibility: visible;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
const StatusChip = ({ status }) => {
|
|
87
|
+
const chip = useMemo(() => {
|
|
88
|
+
switch (status) {
|
|
89
|
+
case "live": return {
|
|
90
|
+
label: "Deployed",
|
|
91
|
+
type: "success"
|
|
92
|
+
};
|
|
93
|
+
case "unsaved": return {
|
|
94
|
+
label: "Unsaved",
|
|
95
|
+
type: "critical"
|
|
96
|
+
};
|
|
97
|
+
case "saved": return {
|
|
98
|
+
label: "Saved",
|
|
99
|
+
type: "feature"
|
|
100
|
+
};
|
|
101
|
+
default: return null;
|
|
102
|
+
}
|
|
103
|
+
}, [status]);
|
|
104
|
+
if (chip == null) return null;
|
|
105
|
+
return /* @__PURE__ */ jsx(StatusIndicator, {
|
|
106
|
+
type: chip.type,
|
|
107
|
+
showIcon: false,
|
|
108
|
+
children: chip.label
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const VersionHistoryItem = ({ id, title, status, timestamp, lastUpdater, description, compareLabel = DEFAULT_COMPARE_LABEL, restoreLabel = DEFAULT_RESTORE_LABEL, discardLabel = DEFAULT_DISCARD_LABEL, editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL, onRestore, onDiscard, onCompare, onEditDescription, isFirst, isLast, isSelected, isLoadingVersion, onSelect, showActionSlot }) => {
|
|
112
|
+
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
113
|
+
const [isDiscardOpen, setIsDiscardOpen] = useState(false);
|
|
114
|
+
const [isDiscarding, setIsDiscarding] = useState(false);
|
|
115
|
+
const [isEditOpen, setIsEditOpen] = useState(false);
|
|
116
|
+
const [draftDescription, setDraftDescription] = useState(description ?? "");
|
|
117
|
+
const menuItems = [
|
|
118
|
+
onCompare != null && {
|
|
119
|
+
id: `${id}__compare`,
|
|
120
|
+
label: compareLabel,
|
|
121
|
+
variant: "basic",
|
|
122
|
+
onClick: onCompare
|
|
123
|
+
},
|
|
124
|
+
onRestore != null && {
|
|
125
|
+
id: `${id}__restore`,
|
|
126
|
+
label: restoreLabel,
|
|
127
|
+
variant: "basic",
|
|
128
|
+
onClick: onRestore
|
|
129
|
+
},
|
|
130
|
+
onDiscard != null && {
|
|
131
|
+
id: `${id}__discard`,
|
|
132
|
+
label: discardLabel,
|
|
133
|
+
variant: "basic",
|
|
134
|
+
onClick: () => setIsDiscardOpen(true)
|
|
135
|
+
},
|
|
136
|
+
onEditDescription != null && {
|
|
137
|
+
id: `${id}__edit-description`,
|
|
138
|
+
label: editDescriptionLabel,
|
|
139
|
+
variant: "basic",
|
|
140
|
+
onClick: () => {
|
|
141
|
+
setDraftDescription(description ?? "");
|
|
142
|
+
setIsEditOpen(true);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
].filter((item) => Boolean(item));
|
|
146
|
+
const stopRowClick = (event) => {
|
|
147
|
+
event.stopPropagation();
|
|
148
|
+
};
|
|
149
|
+
const confirmDiscard = async () => {
|
|
150
|
+
setIsDiscarding(true);
|
|
151
|
+
try {
|
|
152
|
+
await onDiscard?.();
|
|
153
|
+
setIsDiscardOpen(false);
|
|
154
|
+
} catch {} finally {
|
|
155
|
+
setIsDiscarding(false);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const confirmEdit = () => {
|
|
159
|
+
onEditDescription?.(draftDescription);
|
|
160
|
+
setIsEditOpen(false);
|
|
161
|
+
};
|
|
162
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
163
|
+
/* @__PURE__ */ jsx(Modal_default, {
|
|
164
|
+
open: isDiscardOpen,
|
|
165
|
+
onOpenChange: setIsDiscardOpen,
|
|
166
|
+
isKeyboardDismissDisabled: isDiscarding,
|
|
167
|
+
contentProps: isDiscarding ? { showCloseButton: false } : void 0,
|
|
168
|
+
title: "Discard draft?",
|
|
169
|
+
footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
|
|
170
|
+
variant: "basic",
|
|
171
|
+
width: "auto",
|
|
172
|
+
disabled: isDiscarding,
|
|
173
|
+
onClick: () => setIsDiscardOpen(false),
|
|
174
|
+
children: "Cancel"
|
|
175
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
176
|
+
variant: "danger",
|
|
177
|
+
width: "auto",
|
|
178
|
+
isPending: isDiscarding,
|
|
179
|
+
onClick: confirmDiscard,
|
|
180
|
+
children: "Discard"
|
|
181
|
+
})] }),
|
|
182
|
+
children: /* @__PURE__ */ jsx(Paragraph, {
|
|
183
|
+
color: "primary",
|
|
184
|
+
children: "All unpublished changes in this draft will be discarded. This action is permanent and cannot be undone."
|
|
185
|
+
})
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ jsx(Modal_default, {
|
|
188
|
+
open: isEditOpen,
|
|
189
|
+
onOpenChange: (open) => {
|
|
190
|
+
setIsEditOpen(open);
|
|
191
|
+
if (open) setDraftDescription(description ?? "");
|
|
192
|
+
},
|
|
193
|
+
title: "Edit description",
|
|
194
|
+
footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
|
|
195
|
+
variant: "basic",
|
|
196
|
+
width: "auto",
|
|
197
|
+
onClick: () => setIsEditOpen(false),
|
|
198
|
+
children: "Cancel"
|
|
199
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
200
|
+
variant: "primary",
|
|
201
|
+
width: "auto",
|
|
202
|
+
onClick: confirmEdit,
|
|
203
|
+
children: "Confirm"
|
|
204
|
+
})] }),
|
|
205
|
+
children: /* @__PURE__ */ jsx(TextAreaWithStyle, {
|
|
206
|
+
autoFocus: true,
|
|
207
|
+
value: draftDescription,
|
|
208
|
+
onChange: (event) => setDraftDescription(event.target.value),
|
|
209
|
+
placeholder: "No description"
|
|
210
|
+
})
|
|
211
|
+
}),
|
|
212
|
+
/* @__PURE__ */ jsxs(Row, {
|
|
213
|
+
role: "listitem",
|
|
214
|
+
$withActionSlot: showActionSlot,
|
|
215
|
+
"aria-current": isSelected || void 0,
|
|
216
|
+
"aria-busy": isLoadingVersion || void 0,
|
|
217
|
+
tabIndex: 0,
|
|
218
|
+
onClick: () => {
|
|
219
|
+
if (!isSelected) onSelect();
|
|
220
|
+
},
|
|
221
|
+
onKeyDown: (event) => {
|
|
222
|
+
if (isSelected) return;
|
|
223
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
onSelect();
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
children: [
|
|
229
|
+
/* @__PURE__ */ jsxs(RailColumn, { children: [
|
|
230
|
+
isFirst ? /* @__PURE__ */ jsx(RailStart, {}) : /* @__PURE__ */ jsx(RailSegment, { $selected: isSelected }),
|
|
231
|
+
/* @__PURE__ */ jsx(TimelineDot, { $selected: isSelected }),
|
|
232
|
+
!isLast && /* @__PURE__ */ jsx(RailSegment, { $selected: isSelected })
|
|
233
|
+
] }),
|
|
234
|
+
/* @__PURE__ */ jsx(BodyColumn, { children: /* @__PURE__ */ jsxs(Stack, {
|
|
235
|
+
spacing: Spacing[1],
|
|
236
|
+
children: [
|
|
237
|
+
/* @__PURE__ */ jsxs(HStack, {
|
|
238
|
+
spacing: Spacing[2],
|
|
239
|
+
align: "center",
|
|
240
|
+
children: [
|
|
241
|
+
/* @__PURE__ */ jsx(Paragraph, {
|
|
242
|
+
color: "primary",
|
|
243
|
+
as: "span",
|
|
244
|
+
children: timestamp
|
|
245
|
+
}),
|
|
246
|
+
/* @__PURE__ */ jsx(StatusChip, { status }),
|
|
247
|
+
isLoadingVersion && !showActionSlot && /* @__PURE__ */ jsx(Spinner, { srText: "Version loading" })
|
|
248
|
+
]
|
|
249
|
+
}),
|
|
250
|
+
/* @__PURE__ */ jsxs(HStack, {
|
|
251
|
+
spacing: Spacing[1],
|
|
252
|
+
align: "center",
|
|
253
|
+
children: [/* @__PURE__ */ jsx(Paragraph, {
|
|
254
|
+
color: "secondary",
|
|
255
|
+
size: "sm",
|
|
256
|
+
children: title
|
|
257
|
+
}), lastUpdater && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Paragraph, {
|
|
258
|
+
color: "secondary",
|
|
259
|
+
size: "sm",
|
|
260
|
+
children: "·"
|
|
261
|
+
}), /* @__PURE__ */ jsx(Paragraph, {
|
|
262
|
+
color: "secondary",
|
|
263
|
+
size: "sm",
|
|
264
|
+
children: lastUpdater
|
|
265
|
+
})] })]
|
|
266
|
+
}),
|
|
267
|
+
description != null && description !== "" && /* @__PURE__ */ jsx(Paragraph, {
|
|
268
|
+
color: "secondary",
|
|
269
|
+
size: "sm",
|
|
270
|
+
children: description
|
|
271
|
+
})
|
|
272
|
+
]
|
|
273
|
+
}) }),
|
|
274
|
+
showActionSlot && /* @__PURE__ */ jsx(ActionsColumn, {
|
|
275
|
+
$revealed: isLoadingVersion || isMenuOpen,
|
|
276
|
+
onClick: isLoadingVersion ? void 0 : stopRowClick,
|
|
277
|
+
children: isLoadingVersion ? /* @__PURE__ */ jsx(Spinner, { srText: "Version loading" }) : menuItems.length > 0 && /* @__PURE__ */ jsx(DropdownMenu_default, {
|
|
278
|
+
portal: true,
|
|
279
|
+
onOpenChange: setIsMenuOpen,
|
|
280
|
+
trigger: /* @__PURE__ */ jsx(IconButton, {
|
|
281
|
+
size: "md",
|
|
282
|
+
"aria-label": "More",
|
|
283
|
+
children: /* @__PURE__ */ jsx(MoreIcon, {})
|
|
284
|
+
}),
|
|
285
|
+
children: menuItems.map((item) => /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
|
|
286
|
+
variant: item.variant,
|
|
287
|
+
onClick: (event) => {
|
|
288
|
+
event.preventDefault();
|
|
289
|
+
event.stopPropagation();
|
|
290
|
+
item.onClick?.();
|
|
291
|
+
},
|
|
292
|
+
children: item.label
|
|
293
|
+
}, item.id))
|
|
294
|
+
})
|
|
295
|
+
})
|
|
296
|
+
]
|
|
297
|
+
})
|
|
298
|
+
] });
|
|
299
|
+
};
|
|
300
|
+
//#endregion
|
|
301
|
+
//#region components/VersionHistory/VersionHistory.tsx
|
|
302
|
+
const Panel = styled.nav`
|
|
303
|
+
display: flex;
|
|
304
|
+
flex-direction: column;
|
|
305
|
+
flex-shrink: 0;
|
|
306
|
+
width: ${"600px"};
|
|
307
|
+
height: 100%;
|
|
308
|
+
overflow: hidden;
|
|
309
|
+
background-color: ${({ theme }) => semanticColor(theme, "SurfacePrimary", Color.BackgroundPrimary)};
|
|
310
|
+
border-left: 1px solid
|
|
311
|
+
${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
|
|
312
|
+
`;
|
|
313
|
+
const Header = styled.div`
|
|
314
|
+
flex-shrink: 0;
|
|
315
|
+
padding: ${Spacing[3]} ${Spacing[5]};
|
|
316
|
+
border-bottom: 1px solid
|
|
317
|
+
${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
|
|
318
|
+
`;
|
|
319
|
+
const List = styled.div`
|
|
320
|
+
flex: 1;
|
|
321
|
+
overflow-x: hidden;
|
|
322
|
+
overflow-y: auto;
|
|
323
|
+
${semanticScrollbar}
|
|
324
|
+
`;
|
|
325
|
+
const LoadingBody = styled.div`
|
|
326
|
+
display: flex;
|
|
327
|
+
flex: 1;
|
|
328
|
+
align-items: center;
|
|
329
|
+
justify-content: center;
|
|
330
|
+
`;
|
|
331
|
+
const VersionHistory = ({ items, selectedVersionId, onSelectVersion, onClose, loading = false, emptyText = "No versions yet. Save or publish your changes to create one." }) => {
|
|
332
|
+
const [pendingVersionId, setPendingVersionId] = useState(null);
|
|
333
|
+
const selectVersion = useCallback((versionId) => {
|
|
334
|
+
if (pendingVersionId != null) return;
|
|
335
|
+
const result = onSelectVersion(versionId);
|
|
336
|
+
if (result instanceof Promise) {
|
|
337
|
+
setPendingVersionId(versionId);
|
|
338
|
+
const clearPending = () => setPendingVersionId(null);
|
|
339
|
+
result.then(clearPending, clearPending);
|
|
340
|
+
}
|
|
341
|
+
}, [onSelectVersion, pendingVersionId]);
|
|
342
|
+
const showActionSlot = items.some(hasVersionHistoryItemActions);
|
|
343
|
+
return /* @__PURE__ */ jsxs(Panel, {
|
|
344
|
+
"aria-label": "Version History",
|
|
345
|
+
children: [/* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(HStack, {
|
|
346
|
+
justify: "space-between",
|
|
347
|
+
align: "center",
|
|
348
|
+
spacing: Spacing[2],
|
|
349
|
+
children: [/* @__PURE__ */ jsx(Paragraph, {
|
|
350
|
+
as: "h3",
|
|
351
|
+
size: "lg",
|
|
352
|
+
weight: "bold",
|
|
353
|
+
color: "primary",
|
|
354
|
+
children: "Version History"
|
|
355
|
+
}), onClose != null && /* @__PURE__ */ jsx(IconButton, {
|
|
356
|
+
size: "md",
|
|
357
|
+
"aria-label": "Close",
|
|
358
|
+
onClick: onClose,
|
|
359
|
+
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
360
|
+
})]
|
|
361
|
+
}) }), loading ? /* @__PURE__ */ jsx(LoadingBody, { children: /* @__PURE__ */ jsx(Spinner, {
|
|
362
|
+
size: "md",
|
|
363
|
+
srText: "Loading versions..."
|
|
364
|
+
}) }) : items.length === 0 ? /* @__PURE__ */ jsx(Stack, {
|
|
365
|
+
spacing: Spacing[3],
|
|
366
|
+
style: { padding: Spacing[5] },
|
|
367
|
+
children: /* @__PURE__ */ jsx(Paragraph, {
|
|
368
|
+
color: "secondary",
|
|
369
|
+
children: emptyText
|
|
370
|
+
})
|
|
371
|
+
}) : /* @__PURE__ */ jsx(List, {
|
|
372
|
+
role: "list",
|
|
373
|
+
"aria-label": "Version history",
|
|
374
|
+
children: items.map((item, index) => /* @__PURE__ */ jsx(VersionHistoryItem, {
|
|
375
|
+
...item,
|
|
376
|
+
isFirst: index === 0,
|
|
377
|
+
isLast: index === items.length - 1,
|
|
378
|
+
isSelected: item.id === (pendingVersionId ?? selectedVersionId),
|
|
379
|
+
isLoadingVersion: item.id === pendingVersionId,
|
|
380
|
+
showActionSlot,
|
|
381
|
+
onSelect: () => selectVersion(item.id)
|
|
382
|
+
}, item.id))
|
|
383
|
+
})]
|
|
384
|
+
});
|
|
385
|
+
};
|
|
386
|
+
//#endregion
|
|
387
|
+
export { VersionHistory, VersionHistory as default };
|
|
388
|
+
|
|
389
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Modal","TextArea","DropdownMenu"],"sources":["../../../components/VersionHistory/VersionHistoryItem.tsx","../../../components/VersionHistory/VersionHistory.tsx"],"sourcesContent":["import { type MouseEvent, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport Modal from 'design-system/components/Modal';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport StatusIndicator from 'design-system/components/StatusIndicator';\nimport { Paragraph } from 'design-system/components/Text';\nimport TextArea from 'design-system/components/TextArea';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { focusOutline } from 'design-system/mixins/focus';\n\nexport type VersionHistoryStatus = 'live' | 'saved' | 'unsaved' | 'published';\n\nexport type VersionHistoryItemProps = {\n id: string;\n title: string;\n status: VersionHistoryStatus;\n timestamp: string;\n lastUpdater?: string;\n description?: string;\n compareLabel?: string;\n restoreLabel?: string;\n discardLabel?: string;\n editDescriptionLabel?: string;\n onRestore?: () => void;\n onDiscard?: () => void | Promise<void>;\n onCompare?: () => void;\n onEditDescription?: (description: string) => void;\n};\n\nconst DEFAULT_COMPARE_LABEL = 'Compare to latest version';\nconst DEFAULT_RESTORE_LABEL = 'Restore';\nconst DEFAULT_DISCARD_LABEL = 'Discard';\nconst DEFAULT_EDIT_DESCRIPTION_LABEL = 'Edit description';\n\nexport const hasVersionHistoryItemActions = (item: VersionHistoryItemProps) =>\n item.onCompare != null ||\n item.onRestore != null ||\n item.onDiscard != null ||\n item.onEditDescription != null;\n\ntype VersionHistoryItemViewProps = VersionHistoryItemProps & {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n isLoadingVersion: boolean;\n onSelect: () => void;\n showActionSlot: boolean;\n};\n\n/** Timeline stroke; 3px is the rail weight from the source panel. */\nconst RAIL_THICKNESS = '3px';\n\nconst ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;\n\nconst Row = styled.div<{ $withActionSlot: boolean }>`\n display: grid;\n grid-template-columns: ${({ $withActionSlot }) =>\n $withActionSlot\n ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}`\n : `${Spacing[7]} minmax(0, 1fr)`};\n cursor: pointer;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n ${focusOutline}\n\n &:hover:not([aria-current='true']) {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceHover', Color.BackgroundSecondary)};\n }\n\n &[aria-current='true'] {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceAccent', theme.color.background.highlight)};\n }\n`;\n\nconst RailColumn = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst RailSegment = styled.div<{ $selected: boolean }>`\n width: 0;\n border-left: ${RAIL_THICKNESS} solid\n ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n flex: 1;\n`;\n\nconst RailStart = styled.div`\n height: ${Spacing[5]};\n flex-shrink: 0;\n`;\n\nconst TimelineDot = styled.span<{ $selected: boolean }>`\n width: ${Spacing[2]};\n height: ${Spacing[2]};\n border-radius: 50%;\n flex-shrink: 0;\n background-color: ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n`;\n\nconst BodyColumn = styled.div`\n min-width: 0;\n padding: ${Spacing[4]} 0;\n`;\n\nconst ActionsColumn = styled.div<{ $revealed: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: ${ACTION_SLOT_WIDTH};\n padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};\n box-sizing: border-box;\n\n > * {\n visibility: ${({ $revealed }) => ($revealed ? 'visible' : 'hidden')};\n }\n\n ${Row}:hover &,\n ${Row}:focus-within & {\n > * {\n visibility: visible;\n }\n }\n`;\n\nconst StatusChip = ({ status }: { status: VersionHistoryStatus }) => {\n const chip = useMemo(() => {\n switch (status) {\n case 'live':\n return { label: 'Deployed', type: 'success' as const };\n case 'unsaved':\n return { label: 'Unsaved', type: 'critical' as const };\n case 'saved':\n return { label: 'Saved', type: 'feature' as const };\n default:\n return null;\n }\n }, [status]);\n\n if (chip == null) {\n return null;\n }\n\n return (\n <StatusIndicator type={chip.type} showIcon={false}>\n {chip.label}\n </StatusIndicator>\n );\n};\n\nconst VersionHistoryItem = ({\n id,\n title,\n status,\n timestamp,\n lastUpdater,\n description,\n compareLabel = DEFAULT_COMPARE_LABEL,\n restoreLabel = DEFAULT_RESTORE_LABEL,\n discardLabel = DEFAULT_DISCARD_LABEL,\n editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL,\n onRestore,\n onDiscard,\n onCompare,\n onEditDescription,\n isFirst,\n isLast,\n isSelected,\n isLoadingVersion,\n onSelect,\n showActionSlot,\n}: VersionHistoryItemViewProps) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isDiscardOpen, setIsDiscardOpen] = useState(false);\n const [isDiscarding, setIsDiscarding] = useState(false);\n const [isEditOpen, setIsEditOpen] = useState(false);\n const [draftDescription, setDraftDescription] = useState(description ?? '');\n\n const menuItems = [\n onCompare != null && {\n id: `${id}__compare`,\n label: compareLabel,\n variant: 'basic' as const,\n onClick: onCompare,\n },\n onRestore != null && {\n id: `${id}__restore`,\n label: restoreLabel,\n variant: 'basic' as const,\n onClick: onRestore,\n },\n onDiscard != null && {\n id: `${id}__discard`,\n label: discardLabel,\n variant: 'basic' as const,\n onClick: () => setIsDiscardOpen(true),\n },\n onEditDescription != null && {\n id: `${id}__edit-description`,\n label: editDescriptionLabel,\n variant: 'basic' as const,\n onClick: () => {\n setDraftDescription(description ?? '');\n setIsEditOpen(true);\n },\n },\n ].filter((item): item is Exclude<typeof item, false> => Boolean(item));\n\n const stopRowClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const confirmDiscard = async () => {\n setIsDiscarding(true);\n try {\n await onDiscard?.();\n setIsDiscardOpen(false);\n } catch {\n // Keep the dialog open so the user can retry.\n } finally {\n setIsDiscarding(false);\n }\n };\n\n const confirmEdit = () => {\n onEditDescription?.(draftDescription);\n setIsEditOpen(false);\n };\n\n return (\n <>\n <Modal\n open={isDiscardOpen}\n onOpenChange={setIsDiscardOpen}\n isKeyboardDismissDisabled={isDiscarding}\n contentProps={isDiscarding ? { showCloseButton: false } : undefined}\n title='Discard draft?'\n footer={\n <>\n <Button\n variant='basic'\n width='auto'\n disabled={isDiscarding}\n onClick={() => setIsDiscardOpen(false)}\n >\n Cancel\n </Button>\n <Button variant='danger' width='auto' isPending={isDiscarding} onClick={confirmDiscard}>\n Discard\n </Button>\n </>\n }\n >\n <Paragraph color='primary'>\n All unpublished changes in this draft will be discarded. This action is permanent and\n cannot be undone.\n </Paragraph>\n </Modal>\n <Modal\n open={isEditOpen}\n onOpenChange={(open) => {\n setIsEditOpen(open);\n if (open) {\n setDraftDescription(description ?? '');\n }\n }}\n title='Edit description'\n footer={\n <>\n <Button variant='basic' width='auto' onClick={() => setIsEditOpen(false)}>\n Cancel\n </Button>\n <Button variant='primary' width='auto' onClick={confirmEdit}>\n Confirm\n </Button>\n </>\n }\n >\n <TextArea\n autoFocus\n value={draftDescription}\n onChange={(event) => setDraftDescription(event.target.value)}\n placeholder='No description'\n />\n </Modal>\n <Row\n role='listitem'\n $withActionSlot={showActionSlot}\n aria-current={isSelected || undefined}\n aria-busy={isLoadingVersion || undefined}\n tabIndex={0}\n onClick={() => {\n if (!isSelected) {\n onSelect();\n }\n }}\n onKeyDown={(event) => {\n if (isSelected) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect();\n }\n }}\n >\n <RailColumn>\n {isFirst ? <RailStart /> : <RailSegment $selected={isSelected} />}\n <TimelineDot $selected={isSelected} />\n {!isLast && <RailSegment $selected={isSelected} />}\n </RailColumn>\n <BodyColumn>\n <Stack spacing={Spacing[1]}>\n <HStack spacing={Spacing[2]} align='center'>\n <Paragraph color='primary' as='span'>\n {timestamp}\n </Paragraph>\n <StatusChip status={status} />\n {isLoadingVersion && !showActionSlot && <Spinner srText='Version loading' />}\n </HStack>\n <HStack spacing={Spacing[1]} align='center'>\n <Paragraph color='secondary' size='sm'>\n {title}\n </Paragraph>\n {lastUpdater && (\n <>\n <Paragraph color='secondary' size='sm'>\n ·\n </Paragraph>\n <Paragraph color='secondary' size='sm'>\n {lastUpdater}\n </Paragraph>\n </>\n )}\n </HStack>\n {description != null && description !== '' && (\n <Paragraph color='secondary' size='sm'>\n {description}\n </Paragraph>\n )}\n </Stack>\n </BodyColumn>\n {showActionSlot && (\n <ActionsColumn\n $revealed={isLoadingVersion || isMenuOpen}\n onClick={isLoadingVersion ? undefined : stopRowClick}\n >\n {isLoadingVersion ? (\n <Spinner srText='Version loading' />\n ) : (\n menuItems.length > 0 && (\n <DropdownMenu\n portal\n onOpenChange={setIsMenuOpen}\n trigger={\n <IconButton size='md' aria-label='More'>\n <MoreIcon />\n </IconButton>\n }\n >\n {menuItems.map((item) => (\n <DropdownMenu.Item\n key={item.id}\n variant={item.variant}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n item.onClick?.();\n }}\n >\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n )\n )}\n </ActionsColumn>\n )}\n </Row>\n </>\n );\n};\n\nexport default VersionHistoryItem;\n","import { useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nimport VersionHistoryItem, {\n hasVersionHistoryItemActions,\n type VersionHistoryItemProps,\n} from './VersionHistoryItem';\n\nexport type { VersionHistoryItemProps, VersionHistoryStatus } from './VersionHistoryItem';\n\n/** Matches the redesigned dashboard panel width. */\nconst PANEL_WIDTH = '600px';\n\nexport type VersionHistoryProps = {\n items: VersionHistoryItemProps[];\n selectedVersionId: string;\n onSelectVersion: (id: string) => void | Promise<void>;\n onClose?: () => void;\n loading?: boolean;\n emptyText?: string;\n};\n\nconst Panel = styled.nav`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: ${PANEL_WIDTH};\n height: 100%;\n overflow: hidden;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n border-left: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n padding: ${Spacing[3]} ${Spacing[5]};\n border-bottom: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst List = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n ${semanticScrollbar}\n`;\n\nconst LoadingBody = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n`;\n\nconst VersionHistory = ({\n items,\n selectedVersionId,\n onSelectVersion,\n onClose,\n loading = false,\n emptyText = 'No versions yet. Save or publish your changes to create one.',\n}: VersionHistoryProps) => {\n const [pendingVersionId, setPendingVersionId] = useState<string | null>(null);\n\n const selectVersion = useCallback(\n (versionId: string) => {\n if (pendingVersionId != null) {\n return;\n }\n const result = onSelectVersion(versionId);\n if (result instanceof Promise) {\n setPendingVersionId(versionId);\n const clearPending = () => setPendingVersionId(null);\n result.then(clearPending, clearPending);\n }\n },\n [onSelectVersion, pendingVersionId],\n );\n\n const showActionSlot = items.some(hasVersionHistoryItemActions);\n\n return (\n <Panel aria-label='Version History'>\n <Header>\n <HStack justify='space-between' align='center' spacing={Spacing[2]}>\n <Paragraph as='h3' size='lg' weight='bold' color='primary'>\n Version History\n </Paragraph>\n {onClose != null && (\n <IconButton size='md' aria-label='Close' onClick={onClose}>\n <XIcon />\n </IconButton>\n )}\n </HStack>\n </Header>\n {loading ? (\n <LoadingBody>\n <Spinner size='md' srText='Loading versions...' />\n </LoadingBody>\n ) : items.length === 0 ? (\n <Stack spacing={Spacing[3]} style={{ padding: Spacing[5] }}>\n <Paragraph color='secondary'>{emptyText}</Paragraph>\n </Stack>\n ) : (\n <List role='list' aria-label='Version history'>\n {items.map((item, index) => (\n <VersionHistoryItem\n key={item.id}\n {...item}\n isFirst={index === 0}\n isLast={index === items.length - 1}\n isSelected={item.id === (pendingVersionId ?? selectedVersionId)}\n isLoadingVersion={item.id === pendingVersionId}\n showActionSlot={showActionSlot}\n onSelect={() => selectVersion(item.id)}\n />\n ))}\n </List>\n )}\n </Panel>\n );\n};\n\nexport { VersionHistory };\nexport default VersionHistory;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { a as styled } from "../../styledComponentsInterop-NxwFjeA4.mjs";
|
|
2
|
+
import { semanticColor } from "../../lib/semanticColor.mjs";
|
|
3
|
+
import { t as HStack } from "../../Stack-Bkn0TUDe.mjs";
|
|
4
|
+
import { n as Button } from "../../IconButton-CCLMYWVN.mjs";
|
|
5
|
+
import { i as Modal_default } from "../../Modal-CMiFcXC9.mjs";
|
|
6
|
+
import { t as ProgressIndicator } from "../../ProgressIndicator-CQg08vuA.mjs";
|
|
7
|
+
import { Color, Spacing } from "@persona/design-tokens";
|
|
8
|
+
import { useState } from "react";
|
|
9
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region components/WizardModal/WizardModal.tsx
|
|
11
|
+
const statusFromProceed = (result) => result === "valid" ? "completed" : result;
|
|
12
|
+
const VERTICAL_STEPPER_RAIL_WIDTH = "240px";
|
|
13
|
+
const BodyShell = styled.div`
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
flex: 1;
|
|
17
|
+
min-height: 0;
|
|
18
|
+
height: 100%;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
`;
|
|
21
|
+
const VerticalBody = styled(HStack)`
|
|
22
|
+
flex: 1;
|
|
23
|
+
min-height: 0;
|
|
24
|
+
align-items: stretch;
|
|
25
|
+
width: 100%;
|
|
26
|
+
`;
|
|
27
|
+
const VerticalRail = styled.div`
|
|
28
|
+
flex: 0 0 ${VERTICAL_STEPPER_RAIL_WIDTH};
|
|
29
|
+
width: ${VERTICAL_STEPPER_RAIL_WIDTH};
|
|
30
|
+
padding: ${Spacing[4]};
|
|
31
|
+
overflow-y: auto;
|
|
32
|
+
border-right: 1px solid
|
|
33
|
+
${({ theme }) => semanticColor(theme, "BorderSubtle", Color.BorderDivider)};
|
|
34
|
+
`;
|
|
35
|
+
const HorizontalProgress = styled.div`
|
|
36
|
+
flex: 0 0 auto;
|
|
37
|
+
padding: ${Spacing[4]} ${Spacing[4]} 0;
|
|
38
|
+
`;
|
|
39
|
+
const StepBody = styled.div`
|
|
40
|
+
flex: 1;
|
|
41
|
+
min-width: 0;
|
|
42
|
+
min-height: 0;
|
|
43
|
+
overflow-y: auto;
|
|
44
|
+
padding: ${Spacing[5]} ${Spacing[4]};
|
|
45
|
+
`;
|
|
46
|
+
const WizardModal = ({ steps, activeStepId, onActiveStepChange, onProceed, onComplete, confirmLabel = "Confirm", layout = "vertical", children, title, open, defaultOpen, onOpenChange, size = "lg", trigger, isDismissable, isKeyboardDismissDisabled }) => {
|
|
47
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
48
|
+
const foundIndex = steps.findIndex((step) => step.id === activeStepId);
|
|
49
|
+
const activeIndex = foundIndex === -1 ? 0 : foundIndex;
|
|
50
|
+
const activeId = steps[activeIndex]?.id;
|
|
51
|
+
const previousStepId = activeIndex > 0 ? steps[activeIndex - 1]?.id : void 0;
|
|
52
|
+
const nextStepId = activeIndex < steps.length - 1 ? steps[activeIndex + 1]?.id : void 0;
|
|
53
|
+
const handlePrimary = () => {
|
|
54
|
+
if (steps.length < 2) return;
|
|
55
|
+
if ((onProceed?.() ?? "valid") === "error") return;
|
|
56
|
+
if (nextStepId) {
|
|
57
|
+
onActiveStepChange(nextStepId);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setIsSubmitting(true);
|
|
61
|
+
return Promise.resolve().then(() => onComplete()).catch(() => void 0).finally(() => setIsSubmitting(false));
|
|
62
|
+
};
|
|
63
|
+
const progress = /* @__PURE__ */ jsx(ProgressIndicator, {
|
|
64
|
+
steps,
|
|
65
|
+
activeStepId: activeId,
|
|
66
|
+
layout,
|
|
67
|
+
onStepClick: isSubmitting ? void 0 : onActiveStepChange
|
|
68
|
+
});
|
|
69
|
+
const renderBody = (renderProps) => {
|
|
70
|
+
const stepBody = /* @__PURE__ */ jsx(StepBody, { children: typeof children === "function" ? children(renderProps) : children });
|
|
71
|
+
return /* @__PURE__ */ jsx(BodyShell, { children: layout === "horizontal" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(HorizontalProgress, { children: progress }), stepBody] }) : /* @__PURE__ */ jsxs(VerticalBody, {
|
|
72
|
+
spacing: Spacing[0],
|
|
73
|
+
children: [/* @__PURE__ */ jsx(VerticalRail, { children: progress }), stepBody]
|
|
74
|
+
}) });
|
|
75
|
+
};
|
|
76
|
+
return /* @__PURE__ */ jsx(Modal_default, {
|
|
77
|
+
title,
|
|
78
|
+
open,
|
|
79
|
+
defaultOpen,
|
|
80
|
+
onOpenChange,
|
|
81
|
+
size,
|
|
82
|
+
trigger,
|
|
83
|
+
isDismissable: isSubmitting ? false : isDismissable,
|
|
84
|
+
isKeyboardDismissDisabled: isSubmitting || isKeyboardDismissDisabled,
|
|
85
|
+
contentProps: isSubmitting ? { showCloseButton: false } : void 0,
|
|
86
|
+
noBodyPadding: true,
|
|
87
|
+
footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
|
|
88
|
+
width: "auto",
|
|
89
|
+
variant: "basic",
|
|
90
|
+
disabled: !previousStepId || isSubmitting,
|
|
91
|
+
onClick: () => previousStepId && onActiveStepChange(previousStepId),
|
|
92
|
+
children: "Previous"
|
|
93
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
94
|
+
width: "auto",
|
|
95
|
+
variant: "primary",
|
|
96
|
+
isPending: isSubmitting,
|
|
97
|
+
onClick: handlePrimary,
|
|
98
|
+
children: nextStepId ? "Next" : confirmLabel
|
|
99
|
+
})] }),
|
|
100
|
+
children: renderBody
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
export { WizardModal, WizardModal as default, statusFromProceed };
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Modal"],"sources":["../../../components/WizardModal/WizardModal.tsx"],"sourcesContent":["import { type ComponentProps, type ReactNode, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Button from '@persona/design-system/components/Button';\nimport Modal, { type ModalRenderProps } from '@persona/design-system/components/Modal';\nimport ProgressIndicator, {\n type ProgressIndicatorStep,\n type StepStatus,\n} from '@persona/design-system/components/ProgressIndicator';\nimport { HStack } from '@persona/design-system/components/Stack';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\ntype ModalChromeProps = Pick<\n ComponentProps<typeof Modal>,\n | 'title'\n | 'open'\n | 'defaultOpen'\n | 'onOpenChange'\n | 'size'\n | 'trigger'\n | 'isDismissable'\n | 'isKeyboardDismissDisabled'\n>;\n\nexport type WizardProceedResult = 'valid' | Extract<StepStatus, 'warning' | 'error'>;\n\nexport const statusFromProceed = (result: WizardProceedResult): StepStatus =>\n result === 'valid' ? 'completed' : result;\n\nexport type WizardModalSteps = [\n ProgressIndicatorStep,\n ProgressIndicatorStep,\n ...ProgressIndicatorStep[],\n];\n\nexport interface WizardModalProps extends ModalChromeProps {\n steps: WizardModalSteps;\n activeStepId: string;\n onActiveStepChange: (stepId: string) => void;\n onProceed?: () => WizardProceedResult;\n onComplete: () => void | Promise<void>;\n confirmLabel?: string;\n layout?: 'vertical' | 'horizontal';\n children: ReactNode | ((props: ModalRenderProps) => ReactNode);\n}\n\nconst VERTICAL_STEPPER_RAIL_WIDTH = '240px';\n\nconst BodyShell = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n`;\n\nconst VerticalBody = styled(HStack)`\n flex: 1;\n min-height: 0;\n align-items: stretch;\n width: 100%;\n`;\n\nconst VerticalRail = styled.div`\n flex: 0 0 ${VERTICAL_STEPPER_RAIL_WIDTH};\n width: ${VERTICAL_STEPPER_RAIL_WIDTH};\n padding: ${Spacing[4]};\n overflow-y: auto;\n border-right: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst HorizontalProgress = styled.div`\n flex: 0 0 auto;\n padding: ${Spacing[4]} ${Spacing[4]} 0;\n`;\n\nconst StepBody = styled.div`\n flex: 1;\n min-width: 0;\n min-height: 0;\n overflow-y: auto;\n padding: ${Spacing[5]} ${Spacing[4]};\n`;\n\nexport const WizardModal = ({\n steps,\n activeStepId,\n onActiveStepChange,\n onProceed,\n onComplete,\n confirmLabel = 'Confirm',\n layout = 'vertical',\n children,\n title,\n open,\n defaultOpen,\n onOpenChange,\n size = 'lg',\n trigger,\n isDismissable,\n isKeyboardDismissDisabled,\n}: WizardModalProps) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const foundIndex = steps.findIndex((step) => step.id === activeStepId);\n const activeIndex = foundIndex === -1 ? 0 : foundIndex;\n const activeId = steps[activeIndex]?.id;\n const previousStepId = activeIndex > 0 ? steps[activeIndex - 1]?.id : undefined;\n const nextStepId = activeIndex < steps.length - 1 ? steps[activeIndex + 1]?.id : undefined;\n\n const handlePrimary = () => {\n if (steps.length < 2) {\n return;\n }\n const result = onProceed?.() ?? 'valid';\n if (result === 'error') {\n return;\n }\n if (nextStepId) {\n onActiveStepChange(nextStepId);\n return;\n }\n setIsSubmitting(true);\n return Promise.resolve()\n .then(() => onComplete())\n .catch(() => undefined)\n .finally(() => setIsSubmitting(false));\n };\n\n const progress = (\n <ProgressIndicator\n steps={steps}\n activeStepId={activeId}\n layout={layout}\n onStepClick={isSubmitting ? undefined : onActiveStepChange}\n />\n );\n\n const renderBody = (renderProps: ModalRenderProps) => {\n const stepBody = (\n <StepBody>{typeof children === 'function' ? children(renderProps) : children}</StepBody>\n );\n\n return (\n <BodyShell>\n {layout === 'horizontal' ? (\n <>\n <HorizontalProgress>{progress}</HorizontalProgress>\n {stepBody}\n </>\n ) : (\n <VerticalBody spacing={Spacing[0]}>\n <VerticalRail>{progress}</VerticalRail>\n {stepBody}\n </VerticalBody>\n )}\n </BodyShell>\n );\n };\n\n return (\n <Modal\n title={title}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n size={size}\n trigger={trigger}\n isDismissable={isSubmitting ? false : isDismissable}\n isKeyboardDismissDisabled={isSubmitting || isKeyboardDismissDisabled}\n contentProps={isSubmitting ? { showCloseButton: false } : undefined}\n noBodyPadding\n footer={\n <>\n <Button\n width='auto'\n variant='basic'\n disabled={!previousStepId || isSubmitting}\n onClick={() => previousStepId && onActiveStepChange(previousStepId)}\n >\n Previous\n </Button>\n <Button width='auto' variant='primary' isPending={isSubmitting} onClick={handlePrimary}>\n {nextStepId ? 'Next' : confirmLabel}\n </Button>\n </>\n }\n >\n {renderBody}\n </Modal>\n );\n};\n\nexport default WizardModal;\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,qBAAqB,WAChC,WAAW,UAAU,cAAc;AAmBrC,MAAM,8BAA8B;AAEpC,MAAM,YAAY,OAAO,GAAG;;;;;;;;AAS5B,MAAM,eAAe,OAAO,OAAO;;;;;;AAOnC,MAAM,eAAe,OAAO,GAAG;cACjB,4BAA4B;WAC/B,4BAA4B;aAC1B,QAAQ,GAAG;;;OAGjB,EAAE,YAAY,cAAc,OAAO,gBAAgB,MAAM,cAAc,CAAC;;AAG/E,MAAM,qBAAqB,OAAO,GAAG;;aAExB,QAAQ,GAAG,GAAG,QAAQ,GAAG;;AAGtC,MAAM,WAAW,OAAO,GAAG;;;;;aAKd,QAAQ,GAAG,GAAG,QAAQ,GAAG;;AAGtC,MAAa,eAAe,EAC1B,OACA,cACA,oBACA,WACA,YACA,eAAe,WACf,SAAS,YACT,UACA,OACA,MACA,aACA,cACA,OAAO,MACP,SACA,eACA,gCACsB;CACtB,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CACvD,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,OAAO,aAAa;CACtE,MAAM,cAAc,eAAe,KAAK,IAAI;CAC5C,MAAM,WAAW,MAAM,cAAc;CACrC,MAAM,iBAAiB,cAAc,IAAI,MAAM,cAAc,IAAI,KAAK,KAAA;CACtE,MAAM,aAAa,cAAc,MAAM,SAAS,IAAI,MAAM,cAAc,IAAI,KAAK,KAAA;CAEjF,MAAM,sBAAsB;AAC1B,MAAI,MAAM,SAAS,EACjB;AAGF,OADe,aAAa,IAAI,aACjB,QACb;AAEF,MAAI,YAAY;AACd,sBAAmB,WAAW;AAC9B;;AAEF,kBAAgB,KAAK;AACrB,SAAO,QAAQ,SAAS,CACrB,WAAW,YAAY,CAAC,CACxB,YAAY,KAAA,EAAU,CACtB,cAAc,gBAAgB,MAAM,CAAC;;CAG1C,MAAM,WACJ,oBAAC,mBAAD;EACS;EACP,cAAc;EACN;EACR,aAAa,eAAe,KAAA,IAAY;EACxC,CAAA;CAGJ,MAAM,cAAc,gBAAkC;EACpD,MAAM,WACJ,oBAAC,UAAD,EAAA,UAAW,OAAO,aAAa,aAAa,SAAS,YAAY,GAAG,UAAoB,CAAA;AAG1F,SACE,oBAAC,WAAD,EAAA,UACG,WAAW,eACV,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,oBAAD,EAAA,UAAqB,UAA8B,CAAA,EAClD,SACA,EAAA,CAAA,GAEH,qBAAC,cAAD;GAAc,SAAS,QAAQ;aAA/B,CACE,oBAAC,cAAD,EAAA,UAAe,UAAwB,CAAA,EACtC,SACY;MAEP,CAAA;;AAIhB,QACE,oBAACA,eAAD;EACS;EACD;EACO;EACC;EACR;EACG;EACT,eAAe,eAAe,QAAQ;EACtC,2BAA2B,gBAAgB;EAC3C,cAAc,eAAe,EAAE,iBAAiB,OAAO,GAAG,KAAA;EAC1D,eAAA;EACA,QACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GACE,OAAM;GACN,SAAQ;GACR,UAAU,CAAC,kBAAkB;GAC7B,eAAe,kBAAkB,mBAAmB,eAAe;aACpE;GAEQ,CAAA,EACT,oBAAC,QAAD;GAAQ,OAAM;GAAO,SAAQ;GAAU,WAAW;GAAc,SAAS;aACtE,aAAa,SAAS;GAChB,CAAA,CACR,EAAA,CAAA;YAGJ;EACK,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as FilterRule, n as CompoundExpression } from "./types-
|
|
1
|
+
import { l as FilterRule, n as CompoundExpression } from "./types-C4WUSW3e.mjs";
|
|
2
2
|
|
|
3
3
|
//#region components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/compound-expression.d.ts
|
|
4
4
|
declare function addRuleToGroup(compound: CompoundExpression, groupIndex: number, rule: FilterRule): CompoundExpression;
|
package/dist/constants.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-
|
|
1
|
+
import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-BOxzLX-O.mjs";
|
|
2
2
|
export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { i as To } from "./types-
|
|
1
|
+
import { i as To } from "./types-CkpixGWr.mjs";
|
|
2
2
|
|
|
3
3
|
//#region lib/router/createPath.d.ts
|
|
4
4
|
declare function createPath(to: To): string;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { createPath as t };
|
|
7
|
-
//# sourceMappingURL=createPath-
|
|
7
|
+
//# sourceMappingURL=createPath-OeTC9kvS.d.mts.map
|
package/dist/createPath.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createPath } from "./createPath-
|
|
1
|
+
import { t as createPath } from "./createPath-OeTC9kvS.mjs";
|
|
2
2
|
export { createPath };
|
|
@@ -173,4 +173,4 @@ function formatDateFilterValue(value) {
|
|
|
173
173
|
//#endregion
|
|
174
174
|
export { selectedPresetFor as i, parseDateFilterValue as n, resolveDateFilterValue as r, formatDateFilterValue as t };
|
|
175
175
|
|
|
176
|
-
//# sourceMappingURL=date-filter-
|
|
176
|
+
//# sourceMappingURL=date-filter-BnzR6NxT.mjs.map
|