@persona/design-system 0.7.2 → 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 +32 -0
- package/dist/Accordion.d.mts +1 -1
- package/dist/AccordionItem.d.mts +1 -1
- package/dist/{Action-Cyo6KCsS.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-CYXkrKXl.d.mts → Breadcrumb-DRFY46ZW.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-CP7eUYUy.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-Dhiund3f.d.mts → Button-xZ6DC5XC.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-CMeIZ0BO.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-DCYB_mtR.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-AjL7ucoR.mjs → Checkbox-DQynkc_I.mjs} +3 -3
- package/dist/{Checkbox-AjL7ucoR.mjs.map → Checkbox-DQynkc_I.mjs.map} +1 -1
- package/dist/{Checkbox-fWj7GkBl.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-C2b9u955.mjs → Combobox-C_kCY3P3.mjs} +23 -10
- package/dist/Combobox-C_kCY3P3.mjs.map +1 -0
- package/dist/{Combobox-CC-Osr57.d.mts → Combobox-D7hyf-jA.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-Evo0FRxP.d.mts → ComboboxBase-BMCY6O7Y.d.mts} +8 -5
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-CvAc0FT3.d.mts → ComboboxMultiSelect-L0KYMkmm.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-CBm7x0oh.d.mts → ComboboxSingleSelect-v5oNrJ7M.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-D_2qMK4y.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-B7j9sOr9.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-BamAk9_w.d.mts → DateField-Dk5ykLdr.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-IgiUI3Wj.mjs → DatePicker-C7z1yodK.mjs} +77 -42
- package/dist/DatePicker-C7z1yodK.mjs.map +1 -0
- package/dist/{DatePicker-C3xNSkPG.d.mts → DatePicker-Dtvv0V45.d.mts} +2 -2
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-C4QKMo2a.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-DL5ye-0m.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-BA0-m_Wp.d.mts → ErrorProps-B8-Mqf1W.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-bKxrF1gC.d.mts → FieldRegistry-0LmSQ-jc.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-DhlBLWxw.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-DnfZTli_.mjs → FormControl-DXrxoJLl.mjs} +3 -3
- package/dist/{FormControl-DnfZTli_.mjs.map → FormControl-DXrxoJLl.mjs.map} +1 -1
- package/dist/{FormControl-D5xyPkST.d.mts → FormControl-Dg8doZq2.d.mts} +2 -2
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-BJZUj6jg.d.mts → FormField-BeLigf9j.d.mts} +2 -2
- package/dist/{FormField-74TPV8-8.mjs → FormField-Crp3F-hv.mjs} +16 -16
- package/dist/{FormField-74TPV8-8.mjs.map → FormField-Crp3F-hv.mjs.map} +1 -1
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-DOyYYsvk.mjs → Grid-eMLuyRzV.mjs} +1 -1
- package/dist/{Grid-DOyYYsvk.mjs.map → Grid-eMLuyRzV.mjs.map} +1 -1
- package/dist/{Header-BqEKkEp5.d.mts → Header-DxJ6TfPw.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-mOVSuEB8.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-CjPFhpVG.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-CZ_6KWDN.d.mts → Input-2N2e5JCf.d.mts} +3 -3
- package/dist/{Input-C_3QwAAt.mjs → Input-Cl4o41k4.mjs} +7 -3
- package/dist/Input-Cl4o41k4.mjs.map +1 -0
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-lag6BM5h.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-nYAdYVQx.d.mts → ListBox-BcoXOt73.d.mts} +3 -3
- package/dist/{ListBox-D4j4LCT3.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 +2 -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-k4ZPtjN0.d.mts → LogicRow-DXywXdYt.d.mts} +3 -3
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +1 -1
- package/dist/{Menu-Bu7-KBhp.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-BN0K8QXi.mjs → Modal-CMiFcXC9.mjs} +6 -4
- package/dist/Modal-CMiFcXC9.mjs.map +1 -0
- package/dist/{Modal-Dwq-QBw_.d.mts → Modal-ymxlGYKt.d.mts} +2 -2
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-BTtm3hRQ.mjs → PageHeader-D_0p7UK_.mjs} +2 -2
- package/dist/{PageHeader-BTtm3hRQ.mjs.map → PageHeader-D_0p7UK_.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageSelector-CeGC84N1.d.mts → PageSelector-Bxulu6vU.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-CPd4mSnw.mjs → Pagination-Co9CfyFQ.mjs} +5 -5
- package/dist/{Pagination-CPd4mSnw.mjs.map → Pagination-Co9CfyFQ.mjs.map} +1 -1
- package/dist/{Pagination-H-CcXrCD.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-BQC-k7Rl.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-3A4Aqci6.mjs → ProgressIndicator-CQg08vuA.mjs} +3 -3
- package/dist/ProgressIndicator-CQg08vuA.mjs.map +1 -0
- package/dist/{ProgressIndicator-DbOLOaxJ.d.mts → ProgressIndicator-D85HQGSx.d.mts} +1 -1
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{PseudoClassProps-CHtBNv8B.d.mts → PseudoClassProps-BHs8TX_3.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-Cxt89w8s.mjs → Radio-CYV290JI.mjs} +2 -2
- package/dist/{Radio-Cxt89w8s.mjs.map → Radio-CYV290JI.mjs.map} +1 -1
- package/dist/{RadioGroup-BjrfVPZQ.d.mts → RadioGroup-Cq3KV1TN.d.mts} +1 -1
- package/dist/{RadioGroup-B6Cg1kdm.mjs → RadioGroup-lWMMtu9V.mjs} +2 -2
- package/dist/{RadioGroup-B6Cg1kdm.mjs.map → RadioGroup-lWMMtu9V.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-CPnLaM-J.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-CbvHIl4K.d.mts → RouterContext-B3IU1jb0.d.mts} +2 -2
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-v9AG9fYa.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-CIjwmT8R.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-BcwfLuHA.mjs → SegmentedControl-BEbIcV3g.mjs} +3 -3
- package/dist/SegmentedControl-BEbIcV3g.mjs.map +1 -0
- package/dist/{SegmentedControl-Crr_aHAs.d.mts → SegmentedControl-DgDabSgr.d.mts} +1 -1
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-CJQeuCiF.d.mts → Select-wqTtGyga.d.mts} +3 -3
- package/dist/{Select-BstCz8P1.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/{Spinner-DplDSBqf.mjs → Spinner-BlAg8_OX.mjs} +1 -1
- package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-BlAg8_OX.mjs.map} +1 -1
- 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-RVptVTVi.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-BVX38LKi.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-DFiSWroB.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-Di9JYHDN.d.mts → TableBody-qoSvQDds.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-DAQ3Plqx.mjs → TableBox-obl64W5Y.mjs} +22 -17
- package/dist/TableBox-obl64W5Y.mjs.map +1 -0
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-D6h1X5ph.d.mts → TableBoxCell-DzYMx4Ju.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +3 -3
- package/dist/{TableBoxRow-C6l6J4mq.d.mts → TableBoxRow-B4rFCvWK.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CsLN1b1J.d.mts → TableBoxRowActions-qMKcVuTL.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-WSDXw79Q.d.mts → TableCell-CGPQRc5g.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-BxuPCUQS.mjs → TableControls-RS_ozBsI.mjs} +207 -66
- package/dist/TableControls-RS_ozBsI.mjs.map +1 -0
- package/dist/{TableControls-cswMgBAr.d.mts → TableControls-WP78qtET.d.mts} +4 -3
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-Cbh8wear.d.mts → TableControlsContext-DZIZSyfX.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-CkL1fEg2.d.mts → TableHead-36j-_oyn.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-K9Ry6YqO.d.mts → TableHeaderCell-C7gp9j1X.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-CYRGIFEl.d.mts → TableLayout-CQqIV0vj.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-DMHlo1eg.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-BRbOcVNc.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-B69gp3X_.d.mts → Text-DbtTa83E.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-Cjsdl07-.d.mts → TextArea-CbxF6u7z.d.mts} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs → TextArea-CfZr5Sk4.mjs} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs.map → TextArea-CfZr5Sk4.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-DDzKLCeX.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-B5sSdb_q.d.mts → Toggle-BYMLrPXk.d.mts} +1 -1
- package/dist/{Toggle-DWbJOwf3.mjs → Toggle-D4ZaUcVt.mjs} +9 -4
- package/dist/Toggle-D4ZaUcVt.mjs.map +1 -0
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-x1pFf-Mj.d.mts → Tooltip-4pshzB_i.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-BE8FuEQm.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 +2 -2
- package/dist/{accordionTitleTypography-BYhjSN9t.d.mts → accordionTitleTypography-CNB1w3kn.d.mts} +2 -2
- package/dist/accordionTitleTypography.d.mts +1 -1
- package/dist/assertNever.d.mts +5 -0
- package/dist/{codec-BcgsGCHE.d.mts → codec-BXVBsB8Y.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-LH7zKfKo.d.mts → color-3UO63ocQ.d.mts} +9 -4
- package/dist/components/Accordion/index.d.mts +1 -1
- package/dist/components/Accordion/index.mjs +1 -1
- 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.mjs +1 -1
- 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 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +1 -2
- package/dist/components/ProgressBar/index.mjs.map +1 -1
- package/dist/components/ProgressIndicator/index.d.mts +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/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.mjs +4 -4
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-BpwnTzcv.d.mts → constants-BOxzLX-O.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/{createPath-Bst12Uxr.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-C4ir2Y8W.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-gKmuxMVA.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-BOpH6pBm.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-C2-PBfN3.d.mts → index-BXSe73Xn.d.mts} +2 -2
- package/dist/{index-c0aXmZV9.d.mts → index-CyAok7As.d.mts} +2 -2
- package/dist/{index-BXdrzR0c.d.mts → index-wKK9f9La.d.mts} +3 -3
- 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-DVJhMlxU.d.mts → input-C6cyiqm2.d.mts} +3 -3
- package/dist/inputFields.d.mts +10 -10
- 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-DmdZYC4a.d.mts → jsonSchema-CfGi1bzI.d.mts} +34 -2
- 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 +26 -1
- 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-CKSLIKF0.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-1_jTgYRX.d.mts → operators-CoXL5Hv6.d.mts} +2 -2
- package/dist/operators.d.mts +1 -1
- package/dist/{palette-CMOEyNPH.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.mjs +2 -2
- package/dist/reactRouterFallback.d.mts +1 -1
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/{semantic-BXwNUd4a.d.mts → semantic-CFMBsuiJ.d.mts} +2 -2
- package/dist/{semanticColor-Cru2gSys.d.mts → semanticColor-DuJCmDrH.d.mts} +3 -3
- package/dist/{text-CxIup7HJ.d.mts → text-D8HPjiEX.d.mts} +1 -1
- package/dist/{theme-CW6qlONZ.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-ChkiGhjQ.d.mts → types-BCiq4hGv.d.mts} +1 -1
- package/dist/types-BGMmkUpy.d.mts +105 -0
- package/dist/{types-BEjWTkZV.d.mts → types-C4WUSW3e.d.mts} +7 -2
- package/dist/{types-B-stjYNc.d.mts → types-CkpixGWr.d.mts} +1 -1
- package/dist/{types-YojUycQK.d.mts → types-Cl-w8tYc.d.mts} +1 -1
- package/dist/{types-3iEDsymE.d.mts → types-CoVZwrMW.d.mts} +2 -2
- package/dist/{types-g-aqbnek.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-CHK2N2fA.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-B26e5iUx.d.mts → useFilterStateV2-CW6eght1.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-DPFClB5h.d.mts → useFormField-CLRZkUZt.d.mts} +2 -2
- package/dist/{useFormField-BzhMbl5P.mjs → useFormField-XezSxho_.mjs} +2 -2
- package/dist/{useFormField-BzhMbl5P.mjs.map → useFormField-XezSxho_.mjs.map} +1 -1
- 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-CnRd_Rzn.d.mts → useLocationPathname-DH5Tdq5X.d.mts} +1 -1
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-DWlG5vhl.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-BcGuP8Fd.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.d.mts +1 -1
- package/dist/{validation-B-Om4ANo.d.mts → validation-BgwNghi2.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-BiyhB8zt.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/package.json +23 -4
- package/skills/ui-authoring/COMPONENTS.md +1 -0
- package/dist/Combobox-C2b9u955.mjs.map +0 -1
- package/dist/DatePicker-IgiUI3Wj.mjs.map +0 -1
- package/dist/DropdownMenu-CuKSNxc9.mjs.map +0 -1
- package/dist/Input-C_3QwAAt.mjs.map +0 -1
- package/dist/ListBox-D4j4LCT3.mjs.map +0 -1
- package/dist/LoadingShimmer-Dizk2sZu.mjs.map +0 -1
- package/dist/Modal-BN0K8QXi.mjs.map +0 -1
- package/dist/Popover-opVa9Xhc.mjs.map +0 -1
- package/dist/ProgressIndicator-3A4Aqci6.mjs.map +0 -1
- package/dist/SegmentedControl-BcwfLuHA.mjs.map +0 -1
- package/dist/Select-BstCz8P1.mjs.map +0 -1
- package/dist/Sticker-C3Eb13OQ.mjs.map +0 -1
- package/dist/Table-B1gRr2XT.mjs.map +0 -1
- package/dist/TableBox-DAQ3Plqx.mjs.map +0 -1
- package/dist/TableControls-BxuPCUQS.mjs.map +0 -1
- package/dist/Toggle-DWbJOwf3.mjs.map +0 -1
- package/dist/components/Link/index.mjs.map +0 -1
- package/dist/components/StatusIndicator/index.mjs.map +0 -1
- package/dist/lib/methodChain.mjs.map +0 -1
- /package/dist/{index--p6oQT9I.d.mts → index-B24gUwOx.d.mts} +0 -0
- /package/dist/{index-BCh-G39Y2.d.mts → index-BFnNtGdX.d.mts} +0 -0
- /package/dist/{index-BMBcfD_R.d.mts → index-BNRXMhlr.d.mts} +0 -0
- /package/dist/{index-BO_854F2.d.mts → index-BPiqSRRl.d.mts} +0 -0
- /package/dist/{index-BOn0AAue.d.mts → index-BYd3Btr1.d.mts} +0 -0
- /package/dist/{index-BcsXXrHq.d.mts → index-B_BBnMou.d.mts} +0 -0
- /package/dist/{index-BwFl_eS0.d.mts → index-Bt4QNofW.d.mts} +0 -0
- /package/dist/{index-C-lwXyQ6.d.mts → index-C6HcjJiY.d.mts} +0 -0
- /package/dist/{index-C1o2TFfS.d.mts → index-CEqOS-7M.d.mts} +0 -0
- /package/dist/{index-C3kE54DD.d.mts → index-CIABef8t.d.mts} +0 -0
- /package/dist/{index-CREkvfw9.d.mts → index-CTHojwxd.d.mts} +0 -0
- /package/dist/{index-CRo77wc3.d.mts → index-CjDodOH2.d.mts} +0 -0
- /package/dist/{index-CfCYi7PF.d.mts → index-Cm-1i165.d.mts} +0 -0
- /package/dist/{index-CuYZJcK3.d.mts → index-DB7t8whN.d.mts} +0 -0
- /package/dist/{index-DCTy4zg0.d.mts → index-DBGd4WeR.d.mts} +0 -0
- /package/dist/{index-DWIh4oP5.d.mts → index-DGsJdI5l.d.mts} +0 -0
- /package/dist/{index-De7MV8-j.d.mts → index-DWfPppPU.d.mts} +0 -0
- /package/dist/{index-Dflz2i1X.d.mts → index-DeVKzGce.d.mts} +0 -0
- /package/dist/{index-DgJfEygr.d.mts → index-DedbSZMv.d.mts} +0 -0
- /package/dist/{index-DkrC-i1D.d.mts → index-Deol7ZWO.d.mts} +0 -0
- /package/dist/{index-DrK1_jKY.d.mts → index-Jh0C5PIG.d.mts} +0 -0
- /package/dist/{index-Es5nKSSL.d.mts → index-NKYLt_R9.d.mts} +0 -0
- /package/dist/{index-Wc1llEvP.d.mts → index-VWno75SQ.d.mts} +0 -0
- /package/dist/{index-bHnO4ZKt.d.mts → index-fxXoW-qc.d.mts} +0 -0
- /package/dist/{index-dhjtMp5F.d.mts → index-gVcIuWLd.d.mts} +0 -0
- /package/dist/{index-xmouCHX9.d.mts → index-zeAhjge4.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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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as styled } from "../../styledComponentsInterop-NxwFjeA4.mjs";
|
|
2
2
|
import { semanticColor } from "../../lib/semanticColor.mjs";
|
|
3
|
-
import { t as HStack } from "../../Stack-
|
|
4
|
-
import { n as Button } from "../../IconButton-
|
|
5
|
-
import { i as Modal_default } from "../../Modal-
|
|
6
|
-
import { t as ProgressIndicator } from "../../ProgressIndicator-
|
|
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
7
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
8
8
|
import { useState } from "react";
|
|
9
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-filter-CZeChs9T.mjs","names":[],"sources":["../lib/date-filter/types.ts","../lib/date-filter/codec.ts"],"sourcesContent":["/** Ordered preset list shared by date-filter consumers. */\nexport const DATE_FILTER_PRESETS = [\n 'last_7_days',\n 'last_14_days',\n 'last_30_days',\n 'this_month',\n 'last_month',\n 'this_year',\n 'last_year',\n] as const;\n\n/** Closed vocabulary of named presets the picker offers. */\nexport type DateFilterPreset = (typeof DATE_FILTER_PRESETS)[number];\n\nexport const DATE_FILTER_PRESET_LABELS: Record<DateFilterPreset, string> = {\n last_7_days: 'Last 7 days',\n last_14_days: 'Last 14 days',\n last_30_days: 'Last 30 days',\n this_month: 'This month',\n last_month: 'Last month',\n this_year: 'This year',\n last_year: 'Last year',\n};\n\nexport interface AbsoluteDateFilterValue {\n kind: 'absolute';\n startDate?: string;\n endDate?: string;\n}\n\nexport interface PresetRelativeDateFilterValue {\n kind: 'relative';\n preset: DateFilterPreset;\n}\n\nexport type RelativeDateFilterValue = PresetRelativeDateFilterValue;\n\nexport type DateFilterValue = AbsoluteDateFilterValue | RelativeDateFilterValue;\n\nexport interface AbsoluteDateRange {\n startDate?: string;\n endDate?: string;\n}\n","import { DateTime, Settings } from 'luxon';\n\nimport { DATE_FILTER_PRESET_LABELS, DATE_FILTER_PRESETS } from './types';\nimport type {\n AbsoluteDateFilterValue,\n AbsoluteDateRange,\n DateFilterPreset,\n DateFilterValue,\n PresetRelativeDateFilterValue,\n RelativeDateFilterValue,\n} from './types';\n\ntype InternalWindow =\n | { mode: 'rolling-days'; days: number }\n | { mode: 'calendar'; unit: 'month' | 'year'; offset: 0 | 1 };\n\nconst PRESET_WINDOWS = {\n last_7_days: { mode: 'rolling-days', days: 7 },\n last_14_days: { mode: 'rolling-days', days: 14 },\n last_30_days: { mode: 'rolling-days', days: 30 },\n this_month: { mode: 'calendar', unit: 'month', offset: 0 },\n last_month: { mode: 'calendar', unit: 'month', offset: 1 },\n this_year: { mode: 'calendar', unit: 'year', offset: 0 },\n last_year: { mode: 'calendar', unit: 'year', offset: 1 },\n} satisfies Record<DateFilterPreset, InternalWindow>;\n\nconst DATE_FILTER_PRESET_SET = new Set<DateFilterPreset>(DATE_FILTER_PRESETS);\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return typeof value === 'undefined' || typeof value === 'string';\n}\n\nfunction normalizeOptionalString(value: unknown): unknown {\n return value == null ? undefined : value;\n}\n\nfunction isAbsoluteDateFilterValue(value: unknown): value is AbsoluteDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'absolute' &&\n isOptionalString(normalizeOptionalString(record.startDate)) &&\n isOptionalString(normalizeOptionalString(record.endDate))\n );\n}\n\nfunction isPresetRelativeDateFilterValue(value: unknown): value is PresetRelativeDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'relative' &&\n typeof record.preset === 'string' &&\n DATE_FILTER_PRESET_SET.has(record.preset as DateFilterPreset)\n );\n}\n\nfunction normalizedAbsoluteDateRange(value: Record<string, unknown>): AbsoluteDateRange {\n return {\n startDate: normalizeOptionalString(value.startDate) as string | undefined,\n endDate: normalizeOptionalString(value.endDate) as string | undefined,\n };\n}\n\nexport function parseDateFilterValue(raw: unknown): DateFilterValue | null {\n if (typeof raw !== 'object' || raw == null || Array.isArray(raw)) {\n return null;\n }\n const value = raw as Record<string, unknown>;\n if (!('kind' in value)) {\n if (\n ('startDate' in value || 'endDate' in value) &&\n isOptionalString(normalizeOptionalString(value.startDate)) &&\n isOptionalString(normalizeOptionalString(value.endDate))\n ) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n return null;\n }\n if (isAbsoluteDateFilterValue(value)) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n if (isPresetRelativeDateFilterValue(value)) {\n return {\n kind: 'relative',\n preset: value.preset,\n };\n }\n return 'startDate' in value || 'endDate' in value\n ? parseDateFilterValue({ startDate: value.startDate, endDate: value.endDate })\n : null;\n}\n\nfunction relativeWindowFor(value: RelativeDateFilterValue): InternalWindow {\n return PRESET_WINDOWS[value.preset];\n}\n\nfunction dateTimeToISO(value: DateTime): string {\n const iso = value.toISO();\n if (iso == null) {\n throw new Error(\n `Unable to evaluate invalid date: ${value.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return iso;\n}\n\nfunction isValidZone(zone: string): boolean {\n return DateTime.utc().setZone(zone).isValid;\n}\n\nfunction resolvedZone(zone?: string): string {\n if (zone && isValidZone(zone)) {\n return zone;\n }\n\n const defaultZone = Settings.defaultZone.name;\n return isValidZone(defaultZone) ? defaultZone : 'UTC';\n}\n\nfunction evaluationNow(context: { zone?: string; now?: DateTime }): DateTime {\n // Constructing `DateTime.now()` uses Settings.defaultZone and is itself invalid\n // when an application has configured an unsupported default zone. UTC gives us\n // the same instant without depending on that ambient setting.\n const now = context.now ?? DateTime.utc();\n if (!now.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${now.invalidExplanation ?? 'unknown error'}`,\n );\n }\n\n const zonedNow = now.setZone(resolvedZone(context.zone));\n if (!zonedNow.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${zonedNow.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return zonedNow;\n}\n\nfunction evaluateRelative(\n value: RelativeDateFilterValue,\n context: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange> {\n const window = relativeWindowFor(value);\n const zonedNow = evaluationNow(context);\n let start: DateTime;\n let end: DateTime;\n\n if (window.mode === 'rolling-days') {\n end = zonedNow.endOf('day');\n // Preserve the established picker and legacy-filter contract: `days` is a\n // lookback offset, so the start date and today are both included.\n start = zonedNow.minus({ days: window.days }).startOf('day');\n } else {\n const referencedPeriod = zonedNow.minus({ [window.unit]: window.offset });\n start = referencedPeriod.startOf(window.unit);\n end = window.offset === 0 ? zonedNow.endOf('day') : referencedPeriod.endOf(window.unit);\n }\n\n return { startDate: dateTimeToISO(start), endDate: dateTimeToISO(end) };\n}\n\nexport function resolveDateFilterValue(\n value: RelativeDateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange>;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): AbsoluteDateRange;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context: { zone?: string; now?: DateTime } = {},\n): AbsoluteDateRange {\n if (!isRelative(value)) {\n return {\n startDate: value.startDate,\n endDate: value.endDate,\n };\n }\n return evaluateRelative(value, context);\n}\n\n/**\n * Which preset a control should render as selected.\n *\n * Only stored metadata makes a value semantic. Once writes are enabled an absolute\n * value means the user picked dates, so inferring a preset from them would relabel\n * their choice; with writes disabled no metadata is ever stored, so inference is\n * the only thing that can highlight a preset at all.\n *\n * `undefined` asks the picker to infer from the dates, `null` selects nothing.\n */\nexport function selectedPresetFor(\n value: DateFilterValue | null,\n writesEnabled: boolean,\n): DateFilterPreset | null | undefined {\n if (value != null && isRelative(value)) {\n return value.preset;\n }\n return writesEnabled ? null : undefined;\n}\n\nexport function isRelative(value: DateFilterValue): value is RelativeDateFilterValue {\n return value.kind === 'relative';\n}\n\nexport function formatDateFilterValue(value: DateFilterValue): string | null {\n if (!isRelative(value)) {\n return null;\n }\n return DATE_FILTER_PRESET_LABELS[value.preset];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-filter-BnzR6NxT.mjs","names":[],"sources":["../lib/date-filter/types.ts","../lib/date-filter/codec.ts"],"sourcesContent":["/** Ordered preset list shared by date-filter consumers. */\nexport const DATE_FILTER_PRESETS = [\n 'last_7_days',\n 'last_14_days',\n 'last_30_days',\n 'this_month',\n 'last_month',\n 'this_year',\n 'last_year',\n] as const;\n\n/** Closed vocabulary of named presets the picker offers. */\nexport type DateFilterPreset = (typeof DATE_FILTER_PRESETS)[number];\n\nexport const DATE_FILTER_PRESET_LABELS: Record<DateFilterPreset, string> = {\n last_7_days: 'Last 7 days',\n last_14_days: 'Last 14 days',\n last_30_days: 'Last 30 days',\n this_month: 'This month',\n last_month: 'Last month',\n this_year: 'This year',\n last_year: 'Last year',\n};\n\nexport interface AbsoluteDateFilterValue {\n kind: 'absolute';\n startDate?: string;\n endDate?: string;\n}\n\nexport interface PresetRelativeDateFilterValue {\n kind: 'relative';\n preset: DateFilterPreset;\n}\n\nexport type RelativeDateFilterValue = PresetRelativeDateFilterValue;\n\nexport type DateFilterValue = AbsoluteDateFilterValue | RelativeDateFilterValue;\n\nexport interface AbsoluteDateRange {\n startDate?: string;\n endDate?: string;\n}\n","import { DateTime, Settings } from 'luxon';\n\nimport { DATE_FILTER_PRESET_LABELS, DATE_FILTER_PRESETS } from './types';\nimport type {\n AbsoluteDateFilterValue,\n AbsoluteDateRange,\n DateFilterPreset,\n DateFilterValue,\n PresetRelativeDateFilterValue,\n RelativeDateFilterValue,\n} from './types';\n\ntype InternalWindow =\n | { mode: 'rolling-days'; days: number }\n | { mode: 'calendar'; unit: 'month' | 'year'; offset: 0 | 1 };\n\nconst PRESET_WINDOWS = {\n last_7_days: { mode: 'rolling-days', days: 7 },\n last_14_days: { mode: 'rolling-days', days: 14 },\n last_30_days: { mode: 'rolling-days', days: 30 },\n this_month: { mode: 'calendar', unit: 'month', offset: 0 },\n last_month: { mode: 'calendar', unit: 'month', offset: 1 },\n this_year: { mode: 'calendar', unit: 'year', offset: 0 },\n last_year: { mode: 'calendar', unit: 'year', offset: 1 },\n} satisfies Record<DateFilterPreset, InternalWindow>;\n\nconst DATE_FILTER_PRESET_SET = new Set<DateFilterPreset>(DATE_FILTER_PRESETS);\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return typeof value === 'undefined' || typeof value === 'string';\n}\n\nfunction normalizeOptionalString(value: unknown): unknown {\n return value == null ? undefined : value;\n}\n\nfunction isAbsoluteDateFilterValue(value: unknown): value is AbsoluteDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'absolute' &&\n isOptionalString(normalizeOptionalString(record.startDate)) &&\n isOptionalString(normalizeOptionalString(record.endDate))\n );\n}\n\nfunction isPresetRelativeDateFilterValue(value: unknown): value is PresetRelativeDateFilterValue {\n if (typeof value !== 'object' || value == null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.kind === 'relative' &&\n typeof record.preset === 'string' &&\n DATE_FILTER_PRESET_SET.has(record.preset as DateFilterPreset)\n );\n}\n\nfunction normalizedAbsoluteDateRange(value: Record<string, unknown>): AbsoluteDateRange {\n return {\n startDate: normalizeOptionalString(value.startDate) as string | undefined,\n endDate: normalizeOptionalString(value.endDate) as string | undefined,\n };\n}\n\nexport function parseDateFilterValue(raw: unknown): DateFilterValue | null {\n if (typeof raw !== 'object' || raw == null || Array.isArray(raw)) {\n return null;\n }\n const value = raw as Record<string, unknown>;\n if (!('kind' in value)) {\n if (\n ('startDate' in value || 'endDate' in value) &&\n isOptionalString(normalizeOptionalString(value.startDate)) &&\n isOptionalString(normalizeOptionalString(value.endDate))\n ) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n return null;\n }\n if (isAbsoluteDateFilterValue(value)) {\n return {\n kind: 'absolute',\n ...normalizedAbsoluteDateRange(value),\n };\n }\n if (isPresetRelativeDateFilterValue(value)) {\n return {\n kind: 'relative',\n preset: value.preset,\n };\n }\n return 'startDate' in value || 'endDate' in value\n ? parseDateFilterValue({ startDate: value.startDate, endDate: value.endDate })\n : null;\n}\n\nfunction relativeWindowFor(value: RelativeDateFilterValue): InternalWindow {\n return PRESET_WINDOWS[value.preset];\n}\n\nfunction dateTimeToISO(value: DateTime): string {\n const iso = value.toISO();\n if (iso == null) {\n throw new Error(\n `Unable to evaluate invalid date: ${value.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return iso;\n}\n\nfunction isValidZone(zone: string): boolean {\n return DateTime.utc().setZone(zone).isValid;\n}\n\nfunction resolvedZone(zone?: string): string {\n if (zone && isValidZone(zone)) {\n return zone;\n }\n\n const defaultZone = Settings.defaultZone.name;\n return isValidZone(defaultZone) ? defaultZone : 'UTC';\n}\n\nfunction evaluationNow(context: { zone?: string; now?: DateTime }): DateTime {\n // Constructing `DateTime.now()` uses Settings.defaultZone and is itself invalid\n // when an application has configured an unsupported default zone. UTC gives us\n // the same instant without depending on that ambient setting.\n const now = context.now ?? DateTime.utc();\n if (!now.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${now.invalidExplanation ?? 'unknown error'}`,\n );\n }\n\n const zonedNow = now.setZone(resolvedZone(context.zone));\n if (!zonedNow.isValid) {\n throw new Error(\n `Unable to evaluate invalid date: ${zonedNow.invalidExplanation ?? 'unknown error'}`,\n );\n }\n return zonedNow;\n}\n\nfunction evaluateRelative(\n value: RelativeDateFilterValue,\n context: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange> {\n const window = relativeWindowFor(value);\n const zonedNow = evaluationNow(context);\n let start: DateTime;\n let end: DateTime;\n\n if (window.mode === 'rolling-days') {\n end = zonedNow.endOf('day');\n // Preserve the established picker and legacy-filter contract: `days` is a\n // lookback offset, so the start date and today are both included.\n start = zonedNow.minus({ days: window.days }).startOf('day');\n } else {\n const referencedPeriod = zonedNow.minus({ [window.unit]: window.offset });\n start = referencedPeriod.startOf(window.unit);\n end = window.offset === 0 ? zonedNow.endOf('day') : referencedPeriod.endOf(window.unit);\n }\n\n return { startDate: dateTimeToISO(start), endDate: dateTimeToISO(end) };\n}\n\nexport function resolveDateFilterValue(\n value: RelativeDateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): Required<AbsoluteDateRange>;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context?: { zone?: string; now?: DateTime },\n): AbsoluteDateRange;\nexport function resolveDateFilterValue(\n value: DateFilterValue,\n context: { zone?: string; now?: DateTime } = {},\n): AbsoluteDateRange {\n if (!isRelative(value)) {\n return {\n startDate: value.startDate,\n endDate: value.endDate,\n };\n }\n return evaluateRelative(value, context);\n}\n\n/**\n * Which preset a control should render as selected.\n *\n * Only stored metadata makes a value semantic. Once writes are enabled an absolute\n * value means the user picked dates, so inferring a preset from them would relabel\n * their choice; with writes disabled no metadata is ever stored, so inference is\n * the only thing that can highlight a preset at all.\n *\n * `undefined` asks the picker to infer from the dates, `null` selects nothing.\n */\nexport function selectedPresetFor(\n value: DateFilterValue | null,\n writesEnabled: boolean,\n): DateFilterPreset | null | undefined {\n if (value != null && isRelative(value)) {\n return value.preset;\n }\n return writesEnabled ? null : undefined;\n}\n\nexport function isRelative(value: DateFilterValue): value is RelativeDateFilterValue {\n return value.kind === 'relative';\n}\n\nexport function formatDateFilterValue(value: DateFilterValue): string | null {\n if (!isRelative(value)) {\n return null;\n }\n return DATE_FILTER_PRESET_LABELS[value.preset];\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from "./types-
|
|
1
|
+
import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from "./types-C4WUSW3e.mjs";
|
|
2
2
|
|
|
3
3
|
//#region components/DataTable/TableControls/FiltersV2/date-range-rule-value.d.ts
|
|
4
4
|
/**
|
|
@@ -14,4 +14,4 @@ import { l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType } from
|
|
|
14
14
|
declare function resolveDateRangeRuleValue(rule: Pick<FilterRule, 'operator' | 'relativeDate' | 'value'>, fieldType?: FilterFieldType): DateRangeFilterValue | null;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { resolveDateRangeRuleValue as t };
|
|
17
|
-
//# sourceMappingURL=date-range-rule-value-
|
|
17
|
+
//# sourceMappingURL=date-range-rule-value-BRp5Bi7R.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-
|
|
1
|
+
import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-BRp5Bi7R.mjs";
|
|
2
2
|
export { resolveDateRangeRuleValue };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as DateFilterPreset } from "./types-
|
|
2
|
-
import { t as DateFilterChange } from "./DateRangePicker-
|
|
1
|
+
import { a as DateFilterPreset } from "./types-Cl-w8tYc.mjs";
|
|
2
|
+
import { t as DateFilterChange } from "./DateRangePicker-HPYsa4wC.mjs";
|
|
3
3
|
import { DateValue } from "@internationalized/date";
|
|
4
4
|
import { RangeValue } from "@react-types/shared";
|
|
5
5
|
|
|
@@ -17,4 +17,4 @@ type DateRuleIntent = {
|
|
|
17
17
|
declare function dateRuleIntent(change: DateFilterChange, writesEnabled: boolean): DateRuleIntent;
|
|
18
18
|
//#endregion
|
|
19
19
|
export { dateRuleIntent as t };
|
|
20
|
-
//# sourceMappingURL=date-rule-intent-
|
|
20
|
+
//# sourceMappingURL=date-rule-intent-CDBtV0ET.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as dateRuleIntent } from "./date-rule-intent-
|
|
1
|
+
import { t as dateRuleIntent } from "./date-rule-intent-CDBtV0ET.mjs";
|
|
2
2
|
export { dateRuleIntent };
|
package/dist/display.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as FilterField, c as FilterOperator, l as FilterRule, u as FilterRuleValue } from "./types-
|
|
1
|
+
import { a as FilterField, c as FilterOperator, l as FilterRule, s as FilterFieldType, u as FilterRuleValue } from "./types-C4WUSW3e.mjs";
|
|
2
2
|
|
|
3
3
|
//#region components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/display.d.ts
|
|
4
|
-
declare function valueDisplayString(value: FilterRuleValue, optionLabels?: Record<string, string>, relativeDate?: FilterRule['relativeDate']): string | undefined;
|
|
4
|
+
declare function valueDisplayString(value: FilterRuleValue, optionLabels?: Record<string, string>, relativeDate?: FilterRule['relativeDate'], fieldType?: FilterFieldType): string | undefined;
|
|
5
5
|
declare function draftValueFor(field: FilterField, operator: FilterOperator): FilterRuleValue;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { draftValueFor, valueDisplayString };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-
|
|
2
|
-
import { t as FieldRegistry } from "./FieldRegistry-
|
|
1
|
+
import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-BMCY6O7Y.mjs";
|
|
2
|
+
import { t as FieldRegistry } from "./FieldRegistry-0LmSQ-jc.mjs";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/FiltersV2/fieldPickerOptions.d.ts
|
|
5
5
|
declare const FIELDS_SUBMENU_LABEL = "Fields";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as FilterSize } from "./types-
|
|
1
|
+
import { f as FilterSize } from "./types-C4WUSW3e.mjs";
|
|
2
2
|
import * as _$react from "react";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/FiltersV2/filter-size-context.d.ts
|
|
@@ -49,4 +49,4 @@ declare const FILTER_SIZE_TOKENS: Record<FilterSize, FilterSizeTokens>;
|
|
|
49
49
|
declare function useFilterSizeTokens(override?: FilterSize): FilterSizeTokens;
|
|
50
50
|
//#endregion
|
|
51
51
|
export { useFilterBarSize as a, FilterSizeTokens as i, FilterBarContext as n, useFilterSizeTokens as o, FilterBarContextValue as r, FILTER_SIZE_TOKENS as t };
|
|
52
|
-
//# sourceMappingURL=filter-size-context-
|
|
52
|
+
//# sourceMappingURL=filter-size-context-CqvQ190x.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-
|
|
1
|
+
import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-CqvQ190x.mjs";
|
|
2
2
|
export { FILTER_SIZE_TOKENS, FilterBarContext, FilterBarContextValue, FilterSizeTokens, useFilterBarSize, useFilterSizeTokens };
|