@persona/design-system 0.7.2 → 0.8.1
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 +273 -0
- package/dist/Accordion.d.mts +1 -1
- package/dist/AccordionItem.d.mts +1 -1
- package/dist/{Action-Cyo6KCsS.d.mts → Action-BwYS9qaG.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +4 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +5 -3
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +3 -3
- package/dist/{Badge-BD0Ut46g.mjs → Badge-D-5tbZDw.mjs} +2 -2
- package/dist/{Badge-BD0Ut46g.mjs.map → Badge-D-5tbZDw.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumb-CYXkrKXl.d.mts → Breadcrumb-BADja8tn.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-CrXfUK1V.mjs → Breadcrumbs-CNpM0aXm.mjs} +5 -5
- package/dist/{Breadcrumbs-CrXfUK1V.mjs.map → Breadcrumbs-CNpM0aXm.mjs.map} +1 -1
- package/dist/{Breadcrumbs-CP7eUYUy.d.mts → Breadcrumbs-CxP7ktfM.d.mts} +2 -2
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-Dhiund3f.d.mts → Button-CnswHEJ2.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-CMeIZ0BO.d.mts → Calendar-Cke5IlMI.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-Bp6L08H4.d.mts} +3 -3
- package/dist/Card.d.mts +1 -1
- package/dist/{CardV2-M3o4BELp.mjs → CardV2-DEW6mw_o.mjs} +9 -7
- package/dist/{CardV2-M3o4BELp.mjs.map → CardV2-DEW6mw_o.mjs.map} +1 -1
- package/dist/{Checkbox-fWj7GkBl.d.mts → Checkbox-DUXws1Os.d.mts} +1 -1
- package/dist/{Checkbox-AjL7ucoR.mjs → Checkbox-GibG2pg5.mjs} +3 -3
- package/dist/{Checkbox-AjL7ucoR.mjs.map → Checkbox-GibG2pg5.mjs.map} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField-DzdOYIjo.d.mts +25 -0
- package/dist/CheckboxGroupField.d.mts +2 -25
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-C2b9u955.mjs → Combobox-CCDoNF9Y.mjs} +23 -10
- package/dist/Combobox-CCDoNF9Y.mjs.map +1 -0
- package/dist/{Combobox-CC-Osr57.d.mts → Combobox-CnxmKUQf.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-Evo0FRxP.d.mts → ComboboxBase-CtNrsPO9.d.mts} +8 -5
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-CvAc0FT3.d.mts → ComboboxMultiSelect-CMH6iVu4.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-CBm7x0oh.d.mts → ComboboxSingleSelect-BLPbLmMY.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-D_2qMK4y.d.mts → CompactBar-BwKIIlWz.d.mts} +4 -4
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs → ConfigFormGroup-BQXN2Pgj.mjs} +2 -2
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs.map → ConfigFormGroup-BQXN2Pgj.mjs.map} +1 -1
- package/dist/{ControlBar-B7j9sOr9.d.mts → ControlBar-BJUY6GOX.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-BojOHfrv.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-C3xNSkPG.d.mts → DatePicker-BHVx_i_F.d.mts} +2 -2
- package/dist/{DatePicker-IgiUI3Wj.mjs → DatePicker-LPIJrc0n.mjs} +77 -42
- package/dist/DatePicker-LPIJrc0n.mjs.map +1 -0
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-C4QKMo2a.d.mts → DateRangePicker-CelDK_44.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-i5Dmxiq1.mjs} +3 -3
- package/dist/{DropdownButton-BWiXLMfD.mjs.map → DropdownButton-i5Dmxiq1.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-DL5ye-0m.d.mts → DropdownMenu-YtLxcNWt.d.mts} +2 -2
- package/dist/{DropdownMenu-CuKSNxc9.mjs → DropdownMenu-j8NWbAvM.mjs} +7 -2
- package/dist/DropdownMenu-j8NWbAvM.mjs.map +1 -0
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-BA0-m_Wp.d.mts → ErrorProps-6dRdJ4QQ.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-bKxrF1gC.d.mts → FieldRegistry-DqO8HiYb.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-DhlBLWxw.d.mts → FilterBar-CpAA2Ozk.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 +8 -2
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/{FormControl-D5xyPkST.d.mts → FormControl-B-s6G9mp.d.mts} +2 -2
- package/dist/{FormControl-DnfZTli_.mjs → FormControl-bDxFF0hl.mjs} +3 -3
- package/dist/{FormControl-DnfZTli_.mjs.map → FormControl-bDxFF0hl.mjs.map} +1 -1
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-BJZUj6jg.d.mts → FormField-D3k-f3-f.d.mts} +2 -2
- package/dist/{FormField-74TPV8-8.mjs → FormField-DbcqNcx2.mjs} +16 -16
- package/dist/{FormField-74TPV8-8.mjs.map → FormField-DbcqNcx2.mjs.map} +1 -1
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-DOyYYsvk.mjs → Grid-CeH9E5Ai.mjs} +1 -1
- package/dist/{Grid-DOyYYsvk.mjs.map → Grid-CeH9E5Ai.mjs.map} +1 -1
- package/dist/{Header-BqEKkEp5.d.mts → Header-2K49LYkR.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-mOVSuEB8.d.mts → HelperTooltip-CTHUM2nC.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/HighlightedText.d.mts +61 -0
- package/dist/{HoverCopyableField-CN3gl0ny.mjs → HoverCopyableField-BARZLhfO.mjs} +3 -3
- package/dist/{HoverCopyableField-CN3gl0ny.mjs.map → HoverCopyableField-BARZLhfO.mjs.map} +1 -1
- package/dist/{IconButton-CqTPMhjV.mjs → IconButton-BHFCjvzs.mjs} +1 -1
- package/dist/{IconButton-CqTPMhjV.mjs.map → IconButton-BHFCjvzs.mjs.map} +1 -1
- package/dist/{IconButton-CjPFhpVG.d.mts → IconButton-D5hx405r.d.mts} +2 -2
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +1 -1
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-C_3QwAAt.mjs → Input-BQN97Hzm.mjs} +7 -3
- package/dist/Input-BQN97Hzm.mjs.map +1 -0
- package/dist/{Input-CZ_6KWDN.d.mts → Input-BQbcIiVj.d.mts} +3 -3
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-lag6BM5h.d.mts → InputProps-DT1ZReZS.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/Link-Bzm4AL5J.mjs +79 -0
- package/dist/Link-Bzm4AL5J.mjs.map +1 -0
- package/dist/Link.d.mts +1 -1
- package/dist/{ListBox-nYAdYVQx.d.mts → ListBox-CdqRwBvA.d.mts} +7 -7
- package/dist/{ListBox-D4j4LCT3.mjs → ListBox-DOqN9DNl.mjs} +33 -16
- package/dist/ListBox-DOqN9DNl.mjs.map +1 -0
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField-Bl2WLplO.d.mts +51 -0
- package/dist/ListBoxField.d.mts +2 -51
- package/dist/{LoadingShimmer-Dizk2sZu.mjs → LoadingShimmer-Ds7rvIUN.mjs} +13 -8
- package/dist/LoadingShimmer-Ds7rvIUN.mjs.map +1 -0
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-k4ZPtjN0.d.mts → LogicRow-CwMAn1sh.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-CUN9bmc1.d.mts} +3 -3
- package/dist/{Menu-Cd6oxjAe.mjs → Menu-DjW2b3Wk.mjs} +1 -1
- package/dist/{Menu-Cd6oxjAe.mjs.map → Menu-DjW2b3Wk.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-CO58jrNF.mjs → MiddleTruncatedText-DoTyfMem.mjs} +2 -2
- package/dist/{MiddleTruncatedText-CO58jrNF.mjs.map → MiddleTruncatedText-DoTyfMem.mjs.map} +1 -1
- package/dist/{Modal-Dwq-QBw_.d.mts → Modal-CGXJGrKg.d.mts} +2 -2
- package/dist/{Modal-BN0K8QXi.mjs → Modal-DHLPK65-.mjs} +6 -4
- package/dist/Modal-DHLPK65-.mjs.map +1 -0
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-BTtm3hRQ.mjs → PageHeader-eI4RM_uL.mjs} +2 -2
- package/dist/{PageHeader-BTtm3hRQ.mjs.map → PageHeader-eI4RM_uL.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageSelector-CeGC84N1.d.mts → PageSelector-kAfYxEky.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-CPd4mSnw.mjs → Pagination-6BDOn9bX.mjs} +6 -6
- package/dist/Pagination-6BDOn9bX.mjs.map +1 -0
- package/dist/{Pagination-H-CcXrCD.d.mts → Pagination-Bhr7xyd2.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-Dz4woKd8.mjs → Pii-DhL1gblz.mjs} +2 -2
- package/dist/{Pii-Dz4woKd8.mjs.map → Pii-DhL1gblz.mjs.map} +1 -1
- package/dist/{PillShell-BQC-k7Rl.d.mts → PillShell-CVJL1k5I.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-opVa9Xhc.mjs → Popover-CbYaWrAy.mjs} +15 -2
- package/dist/Popover-CbYaWrAy.mjs.map +1 -0
- package/dist/{ProgressIndicator-3A4Aqci6.mjs → ProgressIndicator-BpF3XLn3.mjs} +3 -3
- package/dist/ProgressIndicator-BpF3XLn3.mjs.map +1 -0
- package/dist/{ProgressIndicator-DbOLOaxJ.d.mts → ProgressIndicator-CYyM6OSx.d.mts} +1 -1
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{PseudoClassProps-CHtBNv8B.d.mts → PseudoClassProps-BOVN6Etr.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-Cxt89w8s.mjs → Radio-DPaX-9LH.mjs} +2 -2
- package/dist/{Radio-Cxt89w8s.mjs.map → Radio-DPaX-9LH.mjs.map} +1 -1
- package/dist/{RadioGroup-BjrfVPZQ.d.mts → RadioGroup-C0l0pdEt.d.mts} +1 -1
- package/dist/{RadioGroup-B6Cg1kdm.mjs → RadioGroup-D7f4m2Uc.mjs} +2 -2
- package/dist/{RadioGroup-B6Cg1kdm.mjs.map → RadioGroup-D7f4m2Uc.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-CPnLaM-J.d.mts → RangeCalendar-BJn9V3iN.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-BLrzYlJ_.d.mts} +2 -2
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-v9AG9fYa.d.mts → RouterLink-BHXjhqps.d.mts} +2 -2
- package/dist/RouterLink.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +4 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-CIjwmT8R.d.mts → SearchInput-Buh8LdIL.d.mts} +2 -2
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-Crr_aHAs.d.mts → SegmentedControl-B9qLyIIW.d.mts} +1 -1
- package/dist/{SegmentedControl-BcwfLuHA.mjs → SegmentedControl-zEvBtVj0.mjs} +3 -3
- package/dist/SegmentedControl-zEvBtVj0.mjs.map +1 -0
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-BstCz8P1.mjs → Select-BoZuM_e9.mjs} +10 -8
- package/dist/Select-BoZuM_e9.mjs.map +1 -0
- package/dist/{Select-CJQeuCiF.d.mts → Select-Cv_9PLOt.d.mts} +3 -3
- package/dist/Select.d.mts +1 -1
- package/dist/SmartTextInput.d.mts +107 -0
- package/dist/SmartTextInputCodeDialog.d.mts +18 -0
- package/dist/SmartTextInputField.d.mts +25 -0
- package/dist/SmartTextInputFunctionDialog.d.mts +37 -0
- package/dist/SmartTextInputListbox.d.mts +26 -0
- package/dist/SmartTextInputPopover.d.mts +45 -0
- package/dist/{Spinner-DplDSBqf.mjs → Spinner-CarSRiBF.mjs} +1 -1
- package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-CarSRiBF.mjs.map} +1 -1
- package/dist/{Stack-ChsImaEY.mjs → Stack-CEPzs4Pb.mjs} +1 -1
- package/dist/{Stack-ChsImaEY.mjs.map → Stack-CEPzs4Pb.mjs.map} +1 -1
- package/dist/{Stack-RVptVTVi.d.mts → Stack-XzBzPvSV.d.mts} +1 -1
- package/dist/Stack.d.mts +1 -1
- package/dist/StatusIndicator-bEnMWV_S.mjs +315 -0
- package/dist/StatusIndicator-bEnMWV_S.mjs.map +1 -0
- package/dist/{Sticker-C3Eb13OQ.mjs → Sticker-B-fU8lgu.mjs} +5 -8
- package/dist/Sticker-B-fU8lgu.mjs.map +1 -0
- package/dist/{Sticker-BVX38LKi.d.mts → Sticker-DGfNuxUK.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-BSl5v5aa.mjs} +4 -7
- package/dist/{TabBar-BepWbJHz.mjs.map → TabBar-BSl5v5aa.mjs.map} +1 -1
- package/dist/{Table-DFiSWroB.d.mts → Table-B2V5tlfA.d.mts} +1 -1
- package/dist/{Table-B1gRr2XT.mjs → Table-msXj0glu.mjs} +22 -3
- package/dist/Table-msXj0glu.mjs.map +1 -0
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-Di9JYHDN.d.mts → TableBody-SlQe4Jyp.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-DAQ3Plqx.mjs → TableBox-CF1_Fk0j.mjs} +22 -17
- package/dist/TableBox-CF1_Fk0j.mjs.map +1 -0
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-D6h1X5ph.d.mts → TableBoxCell-BRhGeUnO.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField-Cq9M1upV.d.mts +103 -0
- package/dist/TableBoxField.d.mts +2 -103
- package/dist/{TableBoxRow-C6l6J4mq.d.mts → TableBoxRow-DZzRYoID.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CsLN1b1J.d.mts → TableBoxRowActions-4-j3flJq.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-WSDXw79Q.d.mts → TableCell-D5Sqb6iO.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-cswMgBAr.d.mts → TableControls-B-LakH-8.d.mts} +4 -3
- package/dist/{TableControls-BxuPCUQS.mjs → TableControls-CqW_nyBY.mjs} +286 -78
- package/dist/TableControls-CqW_nyBY.mjs.map +1 -0
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-Cbh8wear.d.mts → TableControlsContext-Dh1YVmBM.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-CkL1fEg2.d.mts → TableHead-BCrVa0BY.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-K9Ry6YqO.d.mts → TableHeaderCell-CcEkDozs.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-CYRGIFEl.d.mts → TableLayout-Bhj1QBBz.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-DMHlo1eg.d.mts → TableRow-Cy1y7b9S.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-BzygLtGm.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-_LtE-PRY.mjs → TechnicalSticker-B6T7cHHc.mjs} +2 -2
- package/dist/{TechnicalSticker-_LtE-PRY.mjs.map → TechnicalSticker-B6T7cHHc.mjs.map} +1 -1
- package/dist/{Text-B69gp3X_.d.mts → Text-BVGJ-Nlw.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-Cjsdl07-.d.mts → TextArea-Bzj593VO.d.mts} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs → TextArea-C1CmFRiz.mjs} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs.map → TextArea-C1CmFRiz.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-DDzKLCeX.d.mts → TextUnderlineTooltip-CgFmtqF_.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-DWbJOwf3.mjs → Toggle-CntyMUPJ.mjs} +9 -4
- package/dist/Toggle-CntyMUPJ.mjs.map +1 -0
- package/dist/{Toggle-B5sSdb_q.d.mts → Toggle-bSu1xAaq.d.mts} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-x1pFf-Mj.d.mts → Tooltip-Duw4Fz1t.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-BE8FuEQm.d.mts → TruncatedText-CbTpX_R1.d.mts} +1 -1
- package/dist/VersionHistory.d.mts +23 -0
- package/dist/VersionHistoryItem-D05QYej7.d.mts +54 -0
- package/dist/VersionHistoryItem.d.mts +2 -0
- package/dist/WizardModal.d.mts +3 -3
- package/dist/{accordionTitleTypography-BYhjSN9t.d.mts → accordionTitleTypography-Leehcmb3.d.mts} +2 -2
- package/dist/accordionTitleTypography.d.mts +1 -1
- package/dist/assertNever.d.mts +5 -0
- package/dist/chainTypes-D8SGRGba.d.mts +17 -0
- package/dist/{codec-BcgsGCHE.d.mts → codec-Vsztf4fe.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-LH7zKfKo.d.mts → color-CrlF3pba.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 +6 -6
- 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/index.d.mts +5 -0
- package/dist/components/SmartTextInput/index.mjs +2035 -0
- package/dist/components/SmartTextInput/index.mjs.map +1 -0
- package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +2 -105
- package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +3 -72
- 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/compound-expression.d.mts +1 -1
- package/dist/{constants-BpwnTzcv.d.mts → constants-CQUCM6__.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/{createPath-Bst12Uxr.d.mts → createPath-Bq7wYGt_.d.mts} +2 -2
- package/dist/createPath.d.mts +1 -1
- package/dist/{date-filter-CZeChs9T.mjs → date-filter-D6IfCkwp.mjs} +1 -1
- package/dist/{date-filter-CZeChs9T.mjs.map → date-filter-D6IfCkwp.mjs.map} +1 -1
- package/dist/{date-range-rule-value-C4ir2Y8W.d.mts → date-range-rule-value-DVhMQP4-.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-BwQ6OTVD.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-BjTzcZwZ.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-BFIFjR7Q.d.mts} +2 -2
- package/dist/{index-BXdrzR0c.d.mts → index-BhDvrF4l.d.mts} +4 -4
- package/dist/{index-c0aXmZV9.d.mts → index-C-xpEL8b.d.mts} +2 -2
- package/dist/index-irNqT1qQ2.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-DVJhMlxU.d.mts → input-DpHBIUpP.d.mts} +3 -3
- package/dist/inputFields-BVDurw3L.d.mts +71 -0
- package/dist/inputFields.d.mts +2 -71
- package/dist/{intersperse-Bxcrxj2Q.mjs → intersperse-bvY2gibK.mjs} +1 -1
- package/dist/{intersperse-Bxcrxj2Q.mjs.map → intersperse-bvY2gibK.mjs.map} +1 -1
- package/dist/{jsonSchema-DmdZYC4a.d.mts → jsonSchema-Bl-qzgrr.d.mts} +34 -2
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/PDSProvider.d.mts +2 -2
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedText.mjs +1 -1
- package/dist/lib/TruncatedText.mjs.map +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
- package/dist/lib/chainTypes.d.mts +2 -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 -238
- 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 +2 -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/lib/useChain.d.mts +2 -0
- package/dist/lib/useChain.mjs +2 -0
- package/dist/listbox-options-BjOkovND.d.mts +38 -0
- package/dist/listbox-options.d.mts +2 -0
- package/dist/{message-CKSLIKF0.d.mts → message-w_1-kTDE.d.mts} +1 -1
- package/dist/methodChain-B5vZEOff.d.mts +66 -0
- package/dist/methodChain-L_h8Z8Bx.mjs +241 -0
- package/dist/methodChain-L_h8Z8Bx.mjs.map +1 -0
- package/dist/methodChainTypes-BVkTI8MX.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-BG82-g3M.d.mts} +9 -3
- package/dist/operators.d.mts +2 -2
- package/dist/{palette-CMOEyNPH.d.mts → palette-C8tyI81D.d.mts} +3 -3
- package/dist/palette.d.mts +1 -1
- package/dist/{parser-Kxos6siN.mjs → parser-BeTiVjRs.mjs} +3 -2
- package/dist/{parser-Kxos6siN.mjs.map → parser-BeTiVjRs.mjs.map} +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
- package/dist/patterns/PageLayout/index.mjs +2 -2
- package/dist/{components → patterns}/WizardModal/index.mjs +5 -5
- package/dist/patterns/WizardModal/index.mjs.map +1 -0
- package/dist/reactRouterFallback.d.mts +1 -1
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/safe-parse.d.mts +23 -0
- package/dist/schemaOptions-DGca6x7E.d.mts +173 -0
- package/dist/{semantic-BXwNUd4a.d.mts → semantic-D1661f_6.d.mts} +2 -2
- package/dist/{semanticColor-Cru2gSys.d.mts → semanticColor-Bg0H3RUL.d.mts} +3 -3
- package/dist/{text-CxIup7HJ.d.mts → text-Iw9DKpbZ.d.mts} +1 -1
- package/dist/{theme-CW6qlONZ.d.mts → theme-BB1B6Wkz.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/tree.d.mts +9 -0
- package/dist/{types-3iEDsymE.d.mts → types-B0ilOIfE.d.mts} +2 -2
- package/dist/types-BYRTxB0a.d.mts +72 -0
- package/dist/{types-ChkiGhjQ.d.mts → types-CI2bPi02.d.mts} +1 -1
- package/dist/types-Cs6CdZCO.d.mts +83 -0
- package/dist/{types-B-stjYNc.d.mts → types-D1DijcJv.d.mts} +1 -1
- package/dist/{types-YojUycQK.d.mts → types-DZTbvdpO.d.mts} +1 -1
- package/dist/{types-g-aqbnek.d.mts → types-DdTu747j.d.mts} +1 -1
- package/dist/{types-BEjWTkZV.d.mts → types-Dy3lZv9z.d.mts} +7 -2
- package/dist/types-M-rsm1Km.d.mts +105 -0
- 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/types7.d.mts +2 -0
- package/dist/{url-state-CHK2N2fA.d.mts → url-state-DWA7UFxS.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/useChain-CEsXE2Bx.d.mts +77 -0
- package/dist/useChain-CKqYGdx4.mjs +4589 -0
- package/dist/useChain-CKqYGdx4.mjs.map +1 -0
- package/dist/useChainAtCursor.d.mts +87 -0
- package/dist/useCodeChainFunctionPanel.d.mts +26 -0
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-B26e5iUx.d.mts → useFilterStateV2-DoJ9lyJx.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-BzhMbl5P.mjs → useFormField-BAmkdxtA.mjs} +2 -2
- package/dist/{useFormField-BzhMbl5P.mjs.map → useFormField-BAmkdxtA.mjs.map} +1 -1
- package/dist/{useFormField-DPFClB5h.d.mts → useFormField-BtnAYcHV.d.mts} +2 -2
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs → useFormGroup-BZayb9fZ.mjs} +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs.map → useFormGroup-BZayb9fZ.mjs.map} +1 -1
- package/dist/{useLocationPathname-CnRd_Rzn.d.mts → useLocationPathname-pLyLOrAi.d.mts} +1 -1
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-DWlG5vhl.d.mts → useTableBoxDragAndDrop-wjc_LCpC.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-DL18UdPs.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/utils4.d.mts +111 -0
- package/dist/{validation-B-Om4ANo.d.mts → validation-PeVTwtd-.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/validation2.d.mts +64 -0
- package/dist/{value-control-resolver-BiyhB8zt.d.mts → value-control-resolver-Cx_wXQFv.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 +1 -1
- package/package.json +32 -6
- package/skills/ui-authoring/COMPONENTS.md +1 -1
- package/skills/ui-authoring/PATTERNS.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/Pagination-CPd4mSnw.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/components/WizardModal/index.mjs.map +0 -1
- package/dist/lib/methodChain.mjs.map +0 -1
- /package/dist/{index--p6oQT9I.d.mts → index-7in8TPrM.d.mts} +0 -0
- /package/dist/{index-BCh-G39Y2.d.mts → index-BCq_fh4A2.d.mts} +0 -0
- /package/dist/{index-BO_854F2.d.mts → index-BINnViIh.d.mts} +0 -0
- /package/dist/{index-BwFl_eS0.d.mts → index-BjgW3E7y.d.mts} +0 -0
- /package/dist/{index-C-lwXyQ6.d.mts → index-BwXb5CoQ.d.mts} +0 -0
- /package/dist/{index-C1o2TFfS.d.mts → index-C3usUse7.d.mts} +0 -0
- /package/dist/{index-C3kE54DD.d.mts → index-C9achTF6.d.mts} +0 -0
- /package/dist/{index-CREkvfw9.d.mts → index-CCKHlTA4.d.mts} +0 -0
- /package/dist/{index-CRo77wc3.d.mts → index-CFuHCx9T.d.mts} +0 -0
- /package/dist/{index-CfCYi7PF.d.mts → index-CP2eJYlK.d.mts} +0 -0
- /package/dist/{index-CoUVmp_Q.d.mts → index-CWB6exYm.d.mts} +0 -0
- /package/dist/{index-DCTy4zg0.d.mts → index-CryTAIZM.d.mts} +0 -0
- /package/dist/{index-DWIh4oP5.d.mts → index-CuheJfs-.d.mts} +0 -0
- /package/dist/{index-De7MV8-j.d.mts → index-D-9tW2r5.d.mts} +0 -0
- /package/dist/{index-DgJfEygr.d.mts → index-D9XihFV1.d.mts} +0 -0
- /package/dist/{index-Es5nKSSL.d.mts → index-Deol7ZWO.d.mts} +0 -0
- /package/dist/{index-Qwqzz3XM.d.mts → index-DjOaHFU3.d.mts} +0 -0
- /package/dist/{index-Wc1llEvP.d.mts → index-Iujpc9_6.d.mts} +0 -0
- /package/dist/{index-bHnO4ZKt.d.mts → index-e6k85DKM.d.mts} +0 -0
- /package/dist/{index-dhjtMp5F.d.mts → index-gpCH5158.d.mts} +0 -0
- /package/dist/{components → patterns}/WizardModal/index.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-CEPzs4Pb.mjs";
|
|
7
|
+
import { n as Button, t as IconButton } from "../../IconButton-BHFCjvzs.mjs";
|
|
8
|
+
import { n as DropdownMenu_default } from "../../DropdownMenu-j8NWbAvM.mjs";
|
|
9
|
+
import { t as Spinner } from "../../Spinner-CarSRiBF.mjs";
|
|
10
|
+
import { i as Modal_default } from "../../Modal-DHLPK65-.mjs";
|
|
11
|
+
import { t as TextAreaWithStyle } from "../../TextArea-C1CmFRiz.mjs";
|
|
12
|
+
import { n as StatusIndicator } from "../../StatusIndicator-bEnMWV_S.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,4 +1,4 @@
|
|
|
1
|
-
import { l as FilterRule, n as CompoundExpression } from "./types-
|
|
1
|
+
import { l as FilterRule, n as CompoundExpression } from "./types-Dy3lZv9z.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-CQUCM6__.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-D1DijcJv.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-Bq7wYGt_.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-Bq7wYGt_.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-D6IfCkwp.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-D6IfCkwp.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-Dy3lZv9z.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-DVhMQP4-.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-DVhMQP4-.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-DZTbvdpO.mjs";
|
|
2
|
+
import { t as DateFilterChange } from "./DateRangePicker-CelDK_44.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-BwQ6OTVD.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-BwQ6OTVD.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-Dy3lZv9z.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-CtNrsPO9.mjs";
|
|
2
|
+
import { t as FieldRegistry } from "./FieldRegistry-DqO8HiYb.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-Dy3lZv9z.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-BjTzcZwZ.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-BjTzcZwZ.mjs";
|
|
2
2
|
export { FILTER_SIZE_TOKENS, FilterBarContext, FilterBarContextValue, FilterSizeTokens, useFilterBarSize, useFilterSizeTokens };
|
package/dist/helpers.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CheckboxProps } from "./Checkbox-
|
|
1
|
+
import { n as CheckboxProps } from "./Checkbox-DUXws1Os.mjs";
|
|
2
2
|
import { DataTableColumnFormat, DataTableColumnImageFormat, DataTableColumnPiiFormat, DataTableColumnStringFormat, DateConfig, DatetimeConfig, RenderValueStickerFormatConfig } from "./components/DataTable/types.mjs";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
4
|
|