@persona/design-system 0.10.10 → 0.10.12
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 +48 -0
- package/dist/AdvancedFilterRuleRow.d.mts +5 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +6 -2
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/{Badge-BCdsVKuj.mjs → Badge-B2AJMf3d.mjs} +2 -2
- package/dist/{Badge-BCdsVKuj.mjs.map → Badge-B2AJMf3d.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumbs-CMf3Uvow.mjs → Breadcrumbs-DRs9eo1o.mjs} +5 -5
- package/dist/Breadcrumbs-DRs9eo1o.mjs.map +1 -0
- package/dist/{CardV2-CrV6eEQb.mjs → CardV2-DO-8COfu.mjs} +11 -8
- package/dist/CardV2-DO-8COfu.mjs.map +1 -0
- package/dist/ChartFrame.d.mts +61 -0
- package/dist/ChartLegend.d.mts +60 -0
- package/dist/ChartPopover.d.mts +155 -0
- package/dist/{Checkbox-Dr4LMKHV.mjs → Checkbox-BAh-wF_F.mjs} +5 -5
- package/dist/Checkbox-BAh-wF_F.mjs.map +1 -0
- package/dist/{CheckboxGroupField-Bpu2j6G2.d.mts → CheckboxGroupField-XSVAmESI.d.mts} +2 -2
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-Gb_j1dg6.mjs → Combobox-BNjYEAmv.mjs} +313 -138
- package/dist/Combobox-BNjYEAmv.mjs.map +1 -0
- package/dist/Combobox-DbcSss15.d.mts +12 -0
- package/dist/Combobox.d.mts +3 -3
- package/dist/{ComboboxBase-BPXqJHaQ.d.mts → ComboboxBase-CrFweFGi.d.mts} +61 -21
- package/dist/ComboboxBase.d.mts +2 -2
- package/dist/{ComboboxMultiSelect-BwkkSymj.d.mts → ComboboxMultiSelect-Cp5GBGQj.d.mts} +10 -6
- package/dist/ComboboxMultiSelect.d.mts +2 -2
- package/dist/{ComboboxSingleSelect-CdNNJNkp.d.mts → ComboboxSingleSelect-u7fK3Yvy.d.mts} +8 -6
- package/dist/ComboboxSingleSelect.d.mts +2 -2
- package/dist/{DataTable-BE9inUi-.d.mts → DataTable-C1mdfmQa.d.mts} +17 -7
- package/dist/{DataTable-CIZJ1vO8.mjs → DataTable-DdSY9mzT.mjs} +36 -23
- package/dist/DataTable-DdSY9mzT.mjs.map +1 -0
- package/dist/DataTable.d.mts +1 -1
- package/dist/{DatePicker-C9redLBr.mjs → DatePicker-DiilpYQg.mjs} +5 -5
- package/dist/{DatePicker-C9redLBr.mjs.map → DatePicker-DiilpYQg.mjs.map} +1 -1
- package/dist/DateRangeValueControl.d.mts +1 -1
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-DpLG-cIj.mjs → DropdownButton-BxZ5hn0X.mjs} +3 -3
- package/dist/{DropdownButton-DpLG-cIj.mjs.map → DropdownButton-BxZ5hn0X.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +1 -1
- package/dist/{DropdownMenu-B6D4stkF.d.mts → DropdownMenu-CQR0U-zM.d.mts} +2 -2
- package/dist/{DropdownMenu-c8XK2Lr4.mjs → DropdownMenu-Ip75l4Th.mjs} +21 -2
- package/dist/DropdownMenu-Ip75l4Th.mjs.map +1 -0
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{FieldRegistry-C2NVPhMO.d.mts → FieldRegistry-CJwGpUVK.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-BE_gBM0H.d.mts → FilterBar-CA4mDAXK.d.mts} +13 -5
- 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 +3 -2
- package/dist/{FloatingToolbar-DLRaE0o7.mjs → FloatingToolbar-BA8Fqmrz.mjs} +35 -38
- package/dist/FloatingToolbar-BA8Fqmrz.mjs.map +1 -0
- package/dist/{FormControl-BztNXLn6.mjs → FormControl-BoKGiWdQ.mjs} +2 -2
- package/dist/{FormControl-BztNXLn6.mjs.map → FormControl-BoKGiWdQ.mjs.map} +1 -1
- package/dist/{FormField-Cf1VMvoa.mjs → FormField-yYJFkJ6R.mjs} +13 -13
- package/dist/{FormField-Cf1VMvoa.mjs.map → FormField-yYJFkJ6R.mjs.map} +1 -1
- package/dist/{HoverCopyableField-XHC_n9tp.mjs → HoverCopyableField-X2XfKTTh.mjs} +10 -5
- package/dist/HoverCopyableField-X2XfKTTh.mjs.map +1 -0
- package/dist/{IconButton-DxHB2g80.mjs → IconButton-Bj1fry_K.mjs} +4 -3
- package/dist/IconButton-Bj1fry_K.mjs.map +1 -0
- package/dist/IndexTableLayout.d.mts +11 -3
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-RHXujO9u.mjs → Input-DcbzPaax.mjs} +2 -2
- package/dist/{Input-RHXujO9u.mjs.map → Input-DcbzPaax.mjs.map} +1 -1
- package/dist/IntegerValueControl.d.mts +3 -2
- package/dist/{Link-D_kCyLYX.mjs → Link-B29ZMN6m.mjs} +3 -3
- package/dist/Link-B29ZMN6m.mjs.map +1 -0
- package/dist/{ListBox-BZp6exb8.mjs → ListBox-4rTgr3IJ.mjs} +6 -6
- package/dist/{ListBox-BZp6exb8.mjs.map → ListBox-4rTgr3IJ.mjs.map} +1 -1
- package/dist/{ListBox-DpFcM-dM.d.mts → ListBox-ZDaitaXR.d.mts} +2 -2
- package/dist/ListBox.d.mts +1 -1
- package/dist/{ListBoxField-DL6Zk8TU.d.mts → ListBoxField-CGvVWKyL.d.mts} +4 -4
- package/dist/ListBoxField.d.mts +1 -1
- package/dist/{LoadingShimmer-oPIv2ESr.mjs → LoadingShimmer-BVVdBeN-.mjs} +18 -20
- package/dist/LoadingShimmer-BVVdBeN-.mjs.map +1 -0
- package/dist/{LogicRow-BakOUtzx.d.mts → LogicRow-Bzp5o1sL.d.mts} +2 -2
- package/dist/LogicRow.d.mts +1 -1
- package/dist/{Menu-D6OrKCTC.d.mts → Menu-DviYNrFd.d.mts} +2 -2
- package/dist/Menu.d.mts +1 -1
- package/dist/{Modal-De5_bPJ_.mjs → Modal-CiPFqr0L.mjs} +52 -23
- package/dist/{Modal-De5_bPJ_.mjs.map → Modal-CiPFqr0L.mjs.map} +1 -1
- package/dist/{PageHeader-7_Hf6rHl.mjs → PageHeader-6KvtGED-.mjs} +2 -2
- package/dist/{PageHeader-7_Hf6rHl.mjs.map → PageHeader-6KvtGED-.mjs.map} +1 -1
- package/dist/{PageLayout-DjtGrvJa.mjs → PageLayout-CPiVnS_r.mjs} +3 -1
- package/dist/PageLayout-CPiVnS_r.mjs.map +1 -0
- package/dist/{Pagination-DMH2IaV0.mjs → Pagination-CqFvnlXc.mjs} +4 -4
- package/dist/{Pagination-DMH2IaV0.mjs.map → Pagination-CqFvnlXc.mjs.map} +1 -1
- package/dist/{Pii-24D_nSRQ.mjs → Pii-jSYND7Cn.mjs} +2 -2
- package/dist/{Pii-24D_nSRQ.mjs.map → Pii-jSYND7Cn.mjs.map} +1 -1
- package/dist/{PillShell-B7Bm-dsE.d.mts → PillShell-Bkyu5FXB.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-DordjYNM.mjs → Popover-CVX-dfYb.mjs} +48 -18
- package/dist/Popover-CVX-dfYb.mjs.map +1 -0
- package/dist/{Radio-BlEtetrr.mjs → Radio-B1H_S-Qj.mjs} +2 -2
- package/dist/Radio-B1H_S-Qj.mjs.map +1 -0
- package/dist/{RadioGroup-CMrXmmn4.mjs → RadioGroup-7hdcVhsp.mjs} +2 -2
- package/dist/{RadioGroup-CMrXmmn4.mjs.map → RadioGroup-7hdcVhsp.mjs.map} +1 -1
- package/dist/RuleEditorFields.d.mts +2 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SegmentedControl-D_DA-MU1.mjs → SegmentedControl-BNOJ1FYQ.mjs} +5 -2
- package/dist/SegmentedControl-BNOJ1FYQ.mjs.map +1 -0
- package/dist/{Select-DOlw_LPR.mjs → Select-DbWEgH5c.mjs} +5 -3
- package/dist/Select-DbWEgH5c.mjs.map +1 -0
- package/dist/{Select-CR9TjFfo.d.mts → Select-DsVeAyZy.d.mts} +2 -2
- package/dist/Select.d.mts +1 -1
- package/dist/SmartTextInputField.d.mts +2 -2
- package/dist/{Spinner-CXb-KUs1.mjs → Spinner-k9ZiOdTr.mjs} +1 -1
- package/dist/{Spinner-CXb-KUs1.mjs.map → Spinner-k9ZiOdTr.mjs.map} +1 -1
- package/dist/{Sticker-C1_6I08u.mjs → Sticker-4VdGEFAu.mjs} +2 -2
- package/dist/{Sticker-C1_6I08u.mjs.map → Sticker-4VdGEFAu.mjs.map} +1 -1
- package/dist/StringValueControl.d.mts +2 -1
- package/dist/{TabBar-BCFO38E0.mjs → TabBar-d4sdknti.mjs} +5 -5
- package/dist/TabBar-d4sdknti.mjs.map +1 -0
- package/dist/{Table-DPi4Dt5H.mjs → Table-9mNn8Q-d.mjs} +14 -6
- package/dist/Table-9mNn8Q-d.mjs.map +1 -0
- package/dist/{TableBox-DNQsgQ8x.mjs → TableBox-D9NA-s9l.mjs} +16 -12
- package/dist/TableBox-D9NA-s9l.mjs.map +1 -0
- package/dist/TableBox.d.mts +1 -1
- package/dist/{TableBoxCell-CsRt_5gP.d.mts → TableBoxCell-CQOL30et.d.mts} +4 -4
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/{TableBoxField-Db0Vjo6Z.d.mts → TableBoxField-z0GIFeQw.d.mts} +5 -5
- package/dist/TableBoxField.d.mts +1 -1
- package/dist/{TableBoxRow-exMlZyc4.d.mts → TableBoxRow-tb9-KMr9.d.mts} +2 -2
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-UO9YN34k.d.mts → TableBoxRowActions-BZwulsFP.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableControls-BrP_BqnF.mjs → TableControls-BXykbUBf.mjs} +126 -40
- package/dist/TableControls-BXykbUBf.mjs.map +1 -0
- package/dist/{TableControls-Clo_0Mty.d.mts → TableControls-DE6eHq8h.d.mts} +4 -4
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-BNd6z9mD.d.mts → TableControlsContext-C2_2EuMh.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-Cp7ausV_.d.mts → TableViewConfigurationDropdown-DE9HFXYY.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-Cq5jzYKQ.mjs → TechnicalSticker-DtV7Gawf.mjs} +5 -3
- package/dist/TechnicalSticker-DtV7Gawf.mjs.map +1 -0
- package/dist/{TextArea-Dro-HH8O.mjs → TextArea-CQ1YNi2b.mjs} +4 -5
- package/dist/TextArea-CQ1YNi2b.mjs.map +1 -0
- package/dist/{Toggle-D9MzTIZs.mjs → Toggle-CzHoIR-n.mjs} +8 -4
- package/dist/Toggle-CzHoIR-n.mjs.map +1 -0
- package/dist/{Tooltip-YViXzMdm.mjs → Tooltip-CVBxc1yf.mjs} +17 -4
- package/dist/Tooltip-CVBxc1yf.mjs.map +1 -0
- package/dist/chartColors.d.mts +92 -0
- package/dist/chartFrameLayout.d.mts +46 -0
- package/dist/{clientFilterUtils-CGHYF5NE.d.mts → clientFilterUtils-2TBUC31K.d.mts} +2 -2
- package/dist/clientFilterUtils.d.mts +1 -1
- package/dist/components/Accordion/index.mjs +22 -13
- package/dist/components/Accordion/index.mjs.map +1 -1
- package/dist/components/Attribute/index.mjs +6 -4
- package/dist/components/Attribute/index.mjs.map +1 -1
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +1 -1
- package/dist/components/BottomPanel/index.mjs +7 -5
- package/dist/components/BottomPanel/index.mjs.map +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Chart/index.d.mts +9 -0
- package/dist/components/Chart/index.mjs +680 -0
- package/dist/components/Chart/index.mjs.map +1 -0
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/CodeHighlight/index.mjs +1 -1
- package/dist/components/Combobox/index.d.mts +5 -3
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/DataTable/TableControls/index.d.mts +19 -19
- package/dist/components/DataTable/TableControls/index.mjs +2 -2
- package/dist/components/DataTable/index.d.mts +5 -5
- package/dist/components/DataTable/index.mjs +1 -1
- package/dist/components/DataTable/types.d.mts +1 -1
- 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 +16 -14
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FloatingToolbar/index.mjs +1 -1
- package/dist/components/FormControl/index.mjs +1 -1
- package/dist/components/FormField/index.d.mts +4 -4
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +7 -7
- package/dist/components/ImageTile/index.mjs.map +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/Link/index.mjs +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/LoadingShimmer/index.mjs +1 -1
- package/dist/components/MaskedInput/index.mjs +1 -1
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Modal/index.mjs +1 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- 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 +20 -3
- package/dist/components/ProgressBar/index.mjs.map +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RichTextEditor/index.mjs +5 -5
- package/dist/components/RightPanel/index.mjs +28 -13
- package/dist/components/RightPanel/index.mjs.map +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/SelectionCard/index.mjs +2 -2
- package/dist/components/Slider/index.mjs +3 -2
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/index.mjs +9 -78
- package/dist/components/SmartTextInput/index.mjs.map +1 -1
- package/dist/{safe-parse.d.mts → components/SmartTextInput/parser/safe-parse.d.mts} +1 -1
- package/dist/components/SmartTextInput/parser/safe-parse.mjs +30 -0
- package/dist/components/SmartTextInput/parser/safe-parse.mjs.map +1 -0
- package/dist/{tree.d.mts → components/SmartTextInput/parser/tree.d.mts} +1 -1
- package/dist/components/SmartTextInput/parser/tree.mjs +42 -0
- package/dist/components/SmartTextInput/parser/tree.mjs.map +1 -0
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/SwatchPicker/index.mjs +2 -1
- package/dist/components/SwatchPicker/index.mjs.map +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +1 -1
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +2 -2
- package/dist/components/Toast/index.mjs +16 -10
- package/dist/components/Toast/index.mjs.map +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/components/VersionHistory/index.mjs +5 -5
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{date-range-rule-value-ASr06ClE.d.mts → date-range-rule-value-DyLlMtjr.d.mts} +2 -2
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/display.d.mts +1 -1
- package/dist/duration-token.d.mts +11 -0
- package/dist/exit-motion.d.mts +7 -0
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{filter-size-context-CmFyIPCm.d.mts → filter-size-context-DVnjmuhk.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/{filters-DTBc0mE7.d.mts → filters-DW7pqWv3.d.mts} +2 -2
- package/dist/filters.d.mts +1 -1
- package/dist/{helpers-CBJ2AqGZ.d.mts → helpers-BTD2kXLs.d.mts} +2 -2
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-OkdnW-u5.d.mts → index-B4tE0RxY.d.mts} +3 -3
- package/dist/{index-kIon1vPp.d.mts → index-DTM_t7OG.d.mts} +2 -2
- package/dist/index4.d.mts +3 -3
- package/dist/index5.d.mts +1 -1
- package/dist/index6.d.mts +14 -14
- package/dist/{inputFields-DpHeZiFX.d.mts → inputFields-DnBb3NhK.d.mts} +4 -4
- package/dist/inputFields.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/useCloseFocus.d.mts +45 -0
- package/dist/lib/useCloseFocus.mjs +123 -0
- package/dist/lib/useCloseFocus.mjs.map +1 -0
- package/dist/lib/useModalInsetRight.d.mts +4 -3
- package/dist/lib/useModalInsetRight.mjs +7 -5
- package/dist/lib/useModalInsetRight.mjs.map +1 -1
- package/dist/lint/THIRD_PARTY_NOTICES.md +30 -0
- package/dist/lint/index.mjs +696 -11
- package/dist/lint/index.mjs.map +1 -1
- package/dist/lint/recommended.json +7 -1
- package/dist/mixins/hoverable.mjs +1 -1
- package/dist/mixins/hoverable.mjs.map +1 -1
- package/dist/mixins/input.mjs +1 -0
- package/dist/mixins/input.mjs.map +1 -1
- package/dist/mixins/menuItem.mjs +2 -0
- package/dist/mixins/menuItem.mjs.map +1 -1
- package/dist/mixins/motion.d.mts +28 -0
- package/dist/mixins/motion.mjs +66 -0
- package/dist/mixins/motion.mjs.map +1 -0
- package/dist/motion-origin.d.mts +7 -0
- package/dist/motion.d.mts +63 -0
- package/dist/no-layout-motion.d.mts +7 -0
- package/dist/no-transition-all.d.mts +7 -0
- package/dist/{operators-BHxKZcpD.d.mts → operators-B8_k3r69.d.mts} +10 -3
- package/dist/operators.d.mts +2 -2
- package/dist/overlay-motion.d.mts +7 -0
- package/dist/patterns/CardGrouping/index.mjs +6 -6
- package/dist/patterns/CardGrouping/index.mjs.map +1 -1
- package/dist/patterns/IndexTableLayout/index.mjs +23 -16
- package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
- package/dist/patterns/LayoutLoadingSpinner/index.mjs +3 -1
- package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
- package/dist/patterns/PageLayout/index.mjs +1 -1
- package/dist/patterns/WizardModal/index.mjs +2 -2
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/{types-DLnCkvTt.d.mts → types-BJqmRXFV.d.mts} +15 -1
- package/dist/{types-CqcbWyUY.d.mts → types-BOsCi-kZ.d.mts} +8 -2
- package/dist/{types-BiqzeNsa.d.mts → types-Dws2XDz2.d.mts} +2 -2
- package/dist/{types-BEdERA4v.d.mts → types-NO2GRlM-.d.mts} +2 -2
- 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-CXUuK3_r.d.mts → url-state-CXPmXzIZ.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/useChartColors.d.mts +30 -0
- package/dist/useChartSeriesVisibility.d.mts +22 -0
- package/dist/useChartStyles.d.mts +108 -0
- package/dist/useColumnConfiguration.d.mts +2 -2
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-DBpbxAEC.d.mts → useFilterStateV2-DiTS9DTg.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useTableColumns-Xd14vx_h.d.mts → useTableColumns-tITjHasE.d.mts} +2 -2
- package/dist/useTableColumns.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/useValueControlError.d.mts +26 -0
- package/dist/utils.d.mts +1 -1
- package/dist/{validation-Tgg3AhuP.d.mts → validation-BDQdQ1cY.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-XQbGCdsP.d.mts → value-control-resolver-BFJZEWDn.d.mts} +9 -3
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/value-labels.d.mts +12 -0
- package/dist/variables/keyframes.d.mts +2 -1
- package/dist/variables/keyframes.mjs +9 -1
- package/dist/variables/keyframes.mjs.map +1 -1
- package/dist/variables/transitions.d.mts +31 -1
- package/dist/variables/transitions.mjs +50 -1
- package/dist/variables/transitions.mjs.map +1 -1
- package/llms.txt +2 -1
- package/package.json +20 -4
- package/skills/new-screen/SKILL.md +33 -0
- package/skills/ui-authoring/COMPONENTS.md +19 -1
- package/skills/ui-authoring/PATTERNS.md +57 -36
- package/skills/ui-authoring/STANDARD.md +78 -4
- package/skills/ui-authoring/TOKENS.md +27 -24
- package/dist/Breadcrumbs-CMf3Uvow.mjs.map +0 -1
- package/dist/CardV2-CrV6eEQb.mjs.map +0 -1
- package/dist/Checkbox-Dr4LMKHV.mjs.map +0 -1
- package/dist/Combobox-CIKqTYZt.d.mts +0 -11
- package/dist/Combobox-Gb_j1dg6.mjs.map +0 -1
- package/dist/DataTable-CIZJ1vO8.mjs.map +0 -1
- package/dist/DropdownMenu-c8XK2Lr4.mjs.map +0 -1
- package/dist/FloatingToolbar-DLRaE0o7.mjs.map +0 -1
- package/dist/HoverCopyableField-XHC_n9tp.mjs.map +0 -1
- package/dist/IconButton-DxHB2g80.mjs.map +0 -1
- package/dist/Link-D_kCyLYX.mjs.map +0 -1
- package/dist/LoadingShimmer-oPIv2ESr.mjs.map +0 -1
- package/dist/PageLayout-DjtGrvJa.mjs.map +0 -1
- package/dist/Popover-DordjYNM.mjs.map +0 -1
- package/dist/Radio-BlEtetrr.mjs.map +0 -1
- package/dist/SegmentedControl-D_DA-MU1.mjs.map +0 -1
- package/dist/Select-DOlw_LPR.mjs.map +0 -1
- package/dist/TabBar-BCFO38E0.mjs.map +0 -1
- package/dist/Table-DPi4Dt5H.mjs.map +0 -1
- package/dist/TableBox-DNQsgQ8x.mjs.map +0 -1
- package/dist/TableControls-BrP_BqnF.mjs.map +0 -1
- package/dist/TechnicalSticker-Cq5jzYKQ.mjs.map +0 -1
- package/dist/TextArea-Dro-HH8O.mjs.map +0 -1
- package/dist/Toggle-D9MzTIZs.mjs.map +0 -1
- package/dist/Tooltip-YViXzMdm.mjs.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
//#region src/components/Chart/useChartStyles.d.ts
|
|
2
|
+
/** Axis tick text style (TextSmall). @experimental */
|
|
3
|
+
interface ChartTickStyle {
|
|
4
|
+
fill: string;
|
|
5
|
+
fontSize: string;
|
|
6
|
+
fontFamily: string;
|
|
7
|
+
}
|
|
8
|
+
/** What {@link useChartStyles} returns: props to spread on Recharts components. @experimental */
|
|
9
|
+
interface ChartStyles {
|
|
10
|
+
/** The resolved semantic colours behind the props below. */
|
|
11
|
+
colors: {
|
|
12
|
+
grid: string;
|
|
13
|
+
axis: string;
|
|
14
|
+
text: string;
|
|
15
|
+
surface: string;
|
|
16
|
+
hover: string;
|
|
17
|
+
};
|
|
18
|
+
grid: {
|
|
19
|
+
vertical: false;
|
|
20
|
+
stroke: string;
|
|
21
|
+
zIndex: number;
|
|
22
|
+
};
|
|
23
|
+
xAxis: {
|
|
24
|
+
tick: ChartTickStyle;
|
|
25
|
+
tickLine: false;
|
|
26
|
+
axisLine: {
|
|
27
|
+
stroke: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
yAxis: {
|
|
31
|
+
tick: ChartTickStyle;
|
|
32
|
+
tickLine: false;
|
|
33
|
+
axisLine: false;
|
|
34
|
+
};
|
|
35
|
+
barCursor: {
|
|
36
|
+
fill: string;
|
|
37
|
+
fillOpacity: number;
|
|
38
|
+
};
|
|
39
|
+
lineCursor: {
|
|
40
|
+
stroke: string;
|
|
41
|
+
};
|
|
42
|
+
segmentGap: {
|
|
43
|
+
stroke: string;
|
|
44
|
+
strokeWidth: number;
|
|
45
|
+
};
|
|
46
|
+
activeDot: {
|
|
47
|
+
r: number;
|
|
48
|
+
stroke: string;
|
|
49
|
+
strokeWidth: number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* PDS styling for hand-built Recharts charts, as props to spread on Recharts' own components so a
|
|
54
|
+
* custom chart (reference lines, formatters, extra children) keeps the PDS look:
|
|
55
|
+
*
|
|
56
|
+
* ```tsx
|
|
57
|
+
* const styles = useChartStyles();
|
|
58
|
+
* <BarChart data={data} margin={CHART_PLOT_MARGIN}>
|
|
59
|
+
* <Tooltip cursor={styles.barCursor} content={<ChartPopover series={series} />} />
|
|
60
|
+
* <CartesianGrid {...styles.grid} />
|
|
61
|
+
* <XAxis dataKey='month' {...styles.xAxis} tickFormatter={formatMonth} />
|
|
62
|
+
* <YAxis {...styles.yAxis} />
|
|
63
|
+
* <ReferenceLine y={target} stroke={styles.colors.axis} strokeDasharray='4 4' />
|
|
64
|
+
* ...
|
|
65
|
+
* </BarChart>
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* Colours come from semantic tokens, so they follow light and dark mode.
|
|
69
|
+
*
|
|
70
|
+
* @experimental Part of the in-progress PDS charting components; the API may change.
|
|
71
|
+
*/
|
|
72
|
+
declare function useChartStyles(): ChartStyles;
|
|
73
|
+
/** @experimental */
|
|
74
|
+
interface ChartActiveSeries<K extends string> {
|
|
75
|
+
/** The series under the pointer, for `ChartPopover activeSeries`. */
|
|
76
|
+
activeSeries: K | undefined;
|
|
77
|
+
/** Spread on each `<Bar>`: tracks which series and category the pointer is on. */
|
|
78
|
+
barHandlers: (key: K) => {
|
|
79
|
+
onMouseEnter: (data: unknown, index: number) => void;
|
|
80
|
+
onMouseLeave: () => void;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* `fillOpacity` for a series' bar at `index` (pass it to a `<Cell>`): 0.65 for the other series in
|
|
84
|
+
* the hovered category, 1 otherwise.
|
|
85
|
+
*/
|
|
86
|
+
segmentOpacity: (key: K, index: number) => number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Hover emphasis for bars holding several series (stacked or grouped): the segment under the
|
|
90
|
+
* pointer stays at full strength, the other segments of the same category drop to 65% opacity, and
|
|
91
|
+
* `activeSeries` dims the matching popover rows.
|
|
92
|
+
*
|
|
93
|
+
* ```tsx
|
|
94
|
+
* const { activeSeries, barHandlers, segmentOpacity } = useChartActiveSeries<Key>();
|
|
95
|
+
* <Tooltip content={<ChartPopover series={series} activeSeries={activeSeries} />} />
|
|
96
|
+
* {series.map(({ key }) => (
|
|
97
|
+
* <Bar key={key} dataKey={key} {...barHandlers(key)}>
|
|
98
|
+
* {data.map((_, i) => <Cell key={i} fillOpacity={segmentOpacity(key, i)} />)}
|
|
99
|
+
* </Bar>
|
|
100
|
+
* ))}
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @experimental
|
|
104
|
+
*/
|
|
105
|
+
declare function useChartActiveSeries<K extends string>(): ChartActiveSeries<K>;
|
|
106
|
+
//#endregion
|
|
107
|
+
export { ChartActiveSeries, ChartStyles, ChartTickStyle, useChartActiveSeries, useChartStyles };
|
|
108
|
+
//# sourceMappingURL=useChartStyles.d.mts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as TableViewConfigurationProps } from "./TableViewConfigurationDropdown-
|
|
2
|
-
import { i as ColumnConfig } from "./types-
|
|
1
|
+
import { i as TableViewConfigurationProps } from "./TableViewConfigurationDropdown-DE9HFXYY.mjs";
|
|
2
|
+
import { i as ColumnConfig } from "./types-Dws2XDz2.mjs";
|
|
3
3
|
import { RowData } from "@tanstack/react-table";
|
|
4
4
|
|
|
5
5
|
//#region src/patterns/IndexTableLayout/useColumnConfiguration.d.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as FilterStateV2, n as CompoundExpression, u as FilterRule } from "./types-
|
|
2
|
-
import { t as FieldRegistry } from "./FieldRegistry-
|
|
1
|
+
import { m as FilterStateV2, n as CompoundExpression, u as FilterRule } from "./types-BJqmRXFV.mjs";
|
|
2
|
+
import { t as FieldRegistry } from "./FieldRegistry-CJwGpUVK.mjs";
|
|
3
3
|
import { SetStateAction } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/DataTable/TableControls/FiltersV2/useFilterStateV2.d.ts
|
|
@@ -91,4 +91,4 @@ interface UseFilterStateV2Result {
|
|
|
91
91
|
declare function useFilterStateV2(options: UseFilterStateV2Options): UseFilterStateV2Result;
|
|
92
92
|
//#endregion
|
|
93
93
|
export { UseFilterStateV2Result as n, useFilterStateV2 as r, UseFilterStateV2Options as t };
|
|
94
|
-
//# sourceMappingURL=useFilterStateV2-
|
|
94
|
+
//# sourceMappingURL=useFilterStateV2-DiTS9DTg.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as UseFilterStateV2Result, r as useFilterStateV2, t as UseFilterStateV2Options } from "./useFilterStateV2-
|
|
1
|
+
import { n as UseFilterStateV2Result, r as useFilterStateV2, t as UseFilterStateV2Options } from "./useFilterStateV2-DiTS9DTg.mjs";
|
|
2
2
|
export { UseFilterStateV2Options, UseFilterStateV2Result, useFilterStateV2 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as RowAction, O as SortProps, _ as DataTableColumns, l as DataTableColumnFormat } from "./types-
|
|
1
|
+
import { C as RowAction, O as SortProps, _ as DataTableColumns, l as DataTableColumnFormat } from "./types-Dws2XDz2.mjs";
|
|
2
2
|
import { ColumnDef, Row, RowData, Table } from "@tanstack/react-table";
|
|
3
3
|
|
|
4
4
|
//#region src/components/DataTable/useTableColumns.d.ts
|
|
@@ -69,4 +69,4 @@ declare function useTableColumns<TData extends RowData, TFormat extends {
|
|
|
69
69
|
}[]];
|
|
70
70
|
//#endregion
|
|
71
71
|
export { UseTableColumnsParams as n, useTableColumns as r, RenderFormatFn as t };
|
|
72
|
-
//# sourceMappingURL=useTableColumns-
|
|
72
|
+
//# sourceMappingURL=useTableColumns-tITjHasE.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as UseTableColumnsParams, r as useTableColumns, t as RenderFormatFn } from "./useTableColumns-
|
|
1
|
+
import { n as UseTableColumnsParams, r as useTableColumns, t as RenderFormatFn } from "./useTableColumns-tITjHasE.mjs";
|
|
2
2
|
export { RenderFormatFn, UseTableColumnsParams, useTableColumns };
|
package/dist/useTruncation.d.mts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/DataTable/TableControls/FiltersV2/value-controls/useValueControlError.d.ts
|
|
4
|
+
interface ValueControlErrorInputProps {
|
|
5
|
+
hasError?: boolean;
|
|
6
|
+
'aria-describedby'?: string;
|
|
7
|
+
'aria-errormessage'?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Error state for a text-like value control (`Input`). Returns the props that
|
|
11
|
+
* put the input in its error state (red border, `aria-invalid`, linked to the
|
|
12
|
+
* message) and the message element to render after the input, styled like
|
|
13
|
+
* `FormField`'s `errorText`.
|
|
14
|
+
*
|
|
15
|
+
* With no `errorMessage` both are empty, so the control renders exactly as it
|
|
16
|
+
* did without validation. The message is a sibling rather than a wrapper, so
|
|
17
|
+
* the input keeps its place in the tree (and its focus) when the message
|
|
18
|
+
* appears or clears while the user types.
|
|
19
|
+
*/
|
|
20
|
+
declare function useValueControlError(errorMessage: string | undefined): {
|
|
21
|
+
inputProps: ValueControlErrorInputProps;
|
|
22
|
+
errorText: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { useValueControlError };
|
|
26
|
+
//# sourceMappingURL=useValueControlError.d.mts.map
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as FilterStateV2, u as FilterRule } from "./types-
|
|
2
|
-
import { t as FieldRegistry } from "./FieldRegistry-
|
|
1
|
+
import { m as FilterStateV2, u as FilterRule } from "./types-BJqmRXFV.mjs";
|
|
2
|
+
import { t as FieldRegistry } from "./FieldRegistry-CJwGpUVK.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/components/DataTable/TableControls/FiltersV2/validation.d.ts
|
|
5
5
|
/**
|
|
@@ -48,4 +48,4 @@ declare function pruneToRegistry(state: FilterStateV2, registry: FieldRegistry |
|
|
|
48
48
|
declare function hasCompleteValue(rule: FilterRule, registry: FieldRegistry): boolean;
|
|
49
49
|
//#endregion
|
|
50
50
|
export { isFilterStateV2 as n, pruneToRegistry as r, hasCompleteValue as t };
|
|
51
|
-
//# sourceMappingURL=validation-
|
|
51
|
+
//# sourceMappingURL=validation-BDQdQ1cY.d.mts.map
|
package/dist/validation.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-
|
|
1
|
+
import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-BDQdQ1cY.mjs";
|
|
2
2
|
export { hasCompleteValue, isFilterStateV2, pruneToRegistry };
|
package/dist/{value-control-resolver-XQbGCdsP.d.mts → value-control-resolver-BFJZEWDn.d.mts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as FilterRuleValue, f as FilterRuleValueChange, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-
|
|
1
|
+
import { d as FilterRuleValue, f as FilterRuleValueChange, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-BJqmRXFV.mjs";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/DataTable/TableControls/FiltersV2/FilterBar/value-control-resolver.d.ts
|
|
@@ -41,9 +41,15 @@ interface ResolveValueControlOptions {
|
|
|
41
41
|
* with chips over a vertically expansive list.
|
|
42
42
|
*/
|
|
43
43
|
layout?: 'popover' | 'inline';
|
|
44
|
+
/**
|
|
45
|
+
* Validation error for the current value. When omitted,
|
|
46
|
+
* `resolveValueControl` fills it from the condition operator's `validate`
|
|
47
|
+
* (see `FilterConditionOperator`), so a host resolver receives it too.
|
|
48
|
+
*/
|
|
49
|
+
errorMessage?: string;
|
|
44
50
|
}
|
|
45
51
|
type ValueControlResolver = (opts: ResolveValueControlOptions) => ReactNode | undefined;
|
|
46
|
-
declare function resolveValueControl(
|
|
52
|
+
declare function resolveValueControl(options: ResolveValueControlOptions, hostResolver?: ValueControlResolver): ReactNode;
|
|
47
53
|
//#endregion
|
|
48
54
|
export { ValueControlResolver as n, resolveValueControl as r, ResolveValueControlOptions as t };
|
|
49
|
-
//# sourceMappingURL=value-control-resolver-
|
|
55
|
+
//# sourceMappingURL=value-control-resolver-BFJZEWDn.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-
|
|
1
|
+
import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-BFJZEWDn.mjs";
|
|
2
2
|
export { ResolveValueControlOptions, ValueControlResolver, resolveValueControl };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { d as FilterRuleValue, o as FilterField } from "./types-BJqmRXFV.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/components/DataTable/TableControls/FiltersV2/FilterBar/value-labels.d.ts
|
|
4
|
+
type GetValueLabel = (fieldId: string, value: string) => string | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Render-only overlay; never mutate/cache labels in the immutable registry. Re-evaluate
|
|
7
|
+
* on each render so a stable host getter can read newly hydrated external names.
|
|
8
|
+
*/
|
|
9
|
+
declare function optionLabelsForDisplay(field: FilterField | undefined, value: FilterRuleValue, optionLabels: Record<string, string> | undefined, getValueLabel?: GetValueLabel): Record<string, string> | undefined;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { GetValueLabel, optionLabelsForDisplay };
|
|
12
|
+
//# sourceMappingURL=value-labels.d.mts.map
|
|
@@ -3,6 +3,7 @@ import * as _$styled_components0 from "styled-components";
|
|
|
3
3
|
//#region src/variables/keyframes.d.ts
|
|
4
4
|
declare const rotate: _$styled_components0.Keyframes;
|
|
5
5
|
declare const fadeIn: _$styled_components0.Keyframes;
|
|
6
|
+
declare const fadeOut: _$styled_components0.Keyframes;
|
|
6
7
|
//#endregion
|
|
7
|
-
export { fadeIn, rotate };
|
|
8
|
+
export { fadeIn, fadeOut, rotate };
|
|
8
9
|
//# sourceMappingURL=keyframes.d.mts.map
|
|
@@ -13,7 +13,15 @@ const fadeIn = keyframes`
|
|
|
13
13
|
opacity: 1;
|
|
14
14
|
}
|
|
15
15
|
`;
|
|
16
|
+
const fadeOut = keyframes`
|
|
17
|
+
0% {
|
|
18
|
+
opacity: 1;
|
|
19
|
+
}
|
|
20
|
+
100% {
|
|
21
|
+
opacity: 0;
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
16
24
|
//#endregion
|
|
17
|
-
export { fadeIn, rotate };
|
|
25
|
+
export { fadeIn, fadeOut, rotate };
|
|
18
26
|
|
|
19
27
|
//# sourceMappingURL=keyframes.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyframes.mjs","names":[],"sources":["../../src/variables/keyframes.ts"],"sourcesContent":["import { keyframes } from 'styled-components';\n\nexport const rotate = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n"],"mappings":";;AAEA,MAAa,SAAS,SAAS;;;;;AAM/B,MAAa,SAAS,SAAS"}
|
|
1
|
+
{"version":3,"file":"keyframes.mjs","names":[],"sources":["../../src/variables/keyframes.ts"],"sourcesContent":["import { keyframes } from 'styled-components';\n\nexport const rotate = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const fadeOut = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n`;\n"],"mappings":";;AAEA,MAAa,SAAS,SAAS;;;;;AAM/B,MAAa,SAAS,SAAS;;;;;;;;AAS/B,MAAa,UAAU,SAAS"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
//#region src/variables/transitions.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Durations for CSS. Which step a motion takes depends on its use, not on the nearest number: see the
|
|
4
|
+
* motion scale in `skills/ui-authoring/STANDARD.md`. Closes run one step faster than opens, nothing
|
|
5
|
+
* over `Medium` is a state change, and `OneSecond` is for loop periods only.
|
|
6
|
+
*/
|
|
2
7
|
declare enum TransitionDuration {
|
|
3
8
|
ExtraFast = "100ms",
|
|
4
9
|
Faster = "150ms",
|
|
5
10
|
Fast = "200ms",
|
|
11
|
+
MediumFast = "300ms",
|
|
6
12
|
Medium = "400ms",
|
|
7
13
|
OneSecond = "1000ms"
|
|
8
14
|
}
|
|
15
|
+
/** The same steps in seconds, for framer-motion. */
|
|
9
16
|
declare enum TransitionDurationInSeconds {
|
|
10
17
|
ExtraFast = 0.1,
|
|
11
18
|
Faster = 0.15,
|
|
@@ -14,6 +21,29 @@ declare enum TransitionDurationInSeconds {
|
|
|
14
21
|
Medium = 0.4,
|
|
15
22
|
OneSecond = 1
|
|
16
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Timing functions for CSS. `Enter` decelerates something arriving, `Exit` accelerates something
|
|
26
|
+
* leaving, and `Move` is for anything already on screen changing (colour, size, position) and for
|
|
27
|
+
* the reduced-motion fade. `Linear` is for loops only.
|
|
28
|
+
*/
|
|
29
|
+
declare enum TransitionEasing {
|
|
30
|
+
Enter = "cubic-bezier(0, 0, 0.2, 1)",
|
|
31
|
+
Exit = "cubic-bezier(0.4, 0, 1, 1)",
|
|
32
|
+
Move = "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
33
|
+
Linear = "linear"
|
|
34
|
+
}
|
|
35
|
+
type CubicBezier = [number, number, number, number];
|
|
36
|
+
/** `TransitionEasing`'s curves as control points, for framer-motion's `ease`. */
|
|
37
|
+
declare const TransitionEasingCurve: Readonly<Record<'Enter' | 'Exit' | 'Move', CubicBezier>>;
|
|
38
|
+
/**
|
|
39
|
+
* Under `prefers-reduced-motion: reduce`, an enter or exit keeps a short opacity fade on the same
|
|
40
|
+
* cue, with no translate, scale or size change. It is never instant.
|
|
41
|
+
*/
|
|
42
|
+
declare const ReducedMotionFade: {
|
|
43
|
+
readonly duration: TransitionDuration.Faster;
|
|
44
|
+
readonly durationInSeconds: TransitionDurationInSeconds.Faster;
|
|
45
|
+
readonly easing: TransitionEasing.Move;
|
|
46
|
+
};
|
|
17
47
|
//#endregion
|
|
18
|
-
export { TransitionDuration, TransitionDurationInSeconds };
|
|
48
|
+
export { ReducedMotionFade, TransitionDuration, TransitionDurationInSeconds, TransitionEasing, TransitionEasingCurve };
|
|
19
49
|
//# sourceMappingURL=transitions.d.mts.map
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
//#region src/variables/transitions.ts
|
|
2
|
+
/**
|
|
3
|
+
* Durations for CSS. Which step a motion takes depends on its use, not on the nearest number: see the
|
|
4
|
+
* motion scale in `skills/ui-authoring/STANDARD.md`. Closes run one step faster than opens, nothing
|
|
5
|
+
* over `Medium` is a state change, and `OneSecond` is for loop periods only.
|
|
6
|
+
*/
|
|
2
7
|
let TransitionDuration = /* @__PURE__ */ function(TransitionDuration) {
|
|
3
8
|
TransitionDuration["ExtraFast"] = "100ms";
|
|
4
9
|
TransitionDuration["Faster"] = "150ms";
|
|
5
10
|
TransitionDuration["Fast"] = "200ms";
|
|
11
|
+
TransitionDuration["MediumFast"] = "300ms";
|
|
6
12
|
TransitionDuration["Medium"] = "400ms";
|
|
7
13
|
TransitionDuration["OneSecond"] = "1000ms";
|
|
8
14
|
return TransitionDuration;
|
|
9
15
|
}({});
|
|
16
|
+
/** The same steps in seconds, for framer-motion. */
|
|
10
17
|
let TransitionDurationInSeconds = /* @__PURE__ */ function(TransitionDurationInSeconds) {
|
|
11
18
|
TransitionDurationInSeconds[TransitionDurationInSeconds["ExtraFast"] = .1] = "ExtraFast";
|
|
12
19
|
TransitionDurationInSeconds[TransitionDurationInSeconds["Faster"] = .15] = "Faster";
|
|
@@ -16,7 +23,49 @@ let TransitionDurationInSeconds = /* @__PURE__ */ function(TransitionDurationInS
|
|
|
16
23
|
TransitionDurationInSeconds[TransitionDurationInSeconds["OneSecond"] = 1] = "OneSecond";
|
|
17
24
|
return TransitionDurationInSeconds;
|
|
18
25
|
}({});
|
|
26
|
+
/**
|
|
27
|
+
* Timing functions for CSS. `Enter` decelerates something arriving, `Exit` accelerates something
|
|
28
|
+
* leaving, and `Move` is for anything already on screen changing (colour, size, position) and for
|
|
29
|
+
* the reduced-motion fade. `Linear` is for loops only.
|
|
30
|
+
*/
|
|
31
|
+
let TransitionEasing = /* @__PURE__ */ function(TransitionEasing) {
|
|
32
|
+
TransitionEasing["Enter"] = "cubic-bezier(0, 0, 0.2, 1)";
|
|
33
|
+
TransitionEasing["Exit"] = "cubic-bezier(0.4, 0, 1, 1)";
|
|
34
|
+
TransitionEasing["Move"] = "cubic-bezier(0.4, 0, 0.2, 1)";
|
|
35
|
+
TransitionEasing["Linear"] = "linear";
|
|
36
|
+
return TransitionEasing;
|
|
37
|
+
}({});
|
|
38
|
+
/** `TransitionEasing`'s curves as control points, for framer-motion's `ease`. */
|
|
39
|
+
const TransitionEasingCurve = {
|
|
40
|
+
Enter: [
|
|
41
|
+
0,
|
|
42
|
+
0,
|
|
43
|
+
.2,
|
|
44
|
+
1
|
|
45
|
+
],
|
|
46
|
+
Exit: [
|
|
47
|
+
.4,
|
|
48
|
+
0,
|
|
49
|
+
1,
|
|
50
|
+
1
|
|
51
|
+
],
|
|
52
|
+
Move: [
|
|
53
|
+
.4,
|
|
54
|
+
0,
|
|
55
|
+
.2,
|
|
56
|
+
1
|
|
57
|
+
]
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Under `prefers-reduced-motion: reduce`, an enter or exit keeps a short opacity fade on the same
|
|
61
|
+
* cue, with no translate, scale or size change. It is never instant.
|
|
62
|
+
*/
|
|
63
|
+
const ReducedMotionFade = {
|
|
64
|
+
duration: "150ms",
|
|
65
|
+
durationInSeconds: .15,
|
|
66
|
+
easing: "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
67
|
+
};
|
|
19
68
|
//#endregion
|
|
20
|
-
export { TransitionDuration, TransitionDurationInSeconds };
|
|
69
|
+
export { ReducedMotionFade, TransitionDuration, TransitionDurationInSeconds, TransitionEasing, TransitionEasingCurve };
|
|
21
70
|
|
|
22
71
|
//# sourceMappingURL=transitions.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.mjs","names":[],"sources":["../../src/variables/transitions.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"transitions.mjs","names":[],"sources":["../../src/variables/transitions.ts"],"sourcesContent":["/**\n * Durations for CSS. Which step a motion takes depends on its use, not on the nearest number: see the\n * motion scale in `skills/ui-authoring/STANDARD.md`. Closes run one step faster than opens, nothing\n * over `Medium` is a state change, and `OneSecond` is for loop periods only.\n */\nexport enum TransitionDuration {\n ExtraFast = '100ms',\n Faster = '150ms',\n Fast = '200ms',\n MediumFast = '300ms',\n Medium = '400ms',\n\n OneSecond = '1000ms',\n}\n\n/** The same steps in seconds, for framer-motion. */\nexport enum TransitionDurationInSeconds {\n ExtraFast = 0.1,\n Faster = 0.15,\n Fast = 0.2,\n MediumFast = 0.3,\n Medium = 0.4,\n\n OneSecond = 1,\n}\n\n/**\n * Timing functions for CSS. `Enter` decelerates something arriving, `Exit` accelerates something\n * leaving, and `Move` is for anything already on screen changing (colour, size, position) and for\n * the reduced-motion fade. `Linear` is for loops only.\n */\nexport enum TransitionEasing {\n Enter = 'cubic-bezier(0, 0, 0.2, 1)',\n Exit = 'cubic-bezier(0.4, 0, 1, 1)',\n Move = 'cubic-bezier(0.4, 0, 0.2, 1)',\n Linear = 'linear',\n}\n\ntype CubicBezier = [number, number, number, number];\n\n/** `TransitionEasing`'s curves as control points, for framer-motion's `ease`. */\nexport const TransitionEasingCurve: Readonly<Record<'Enter' | 'Exit' | 'Move', CubicBezier>> = {\n Enter: [0, 0, 0.2, 1],\n Exit: [0.4, 0, 1, 1],\n Move: [0.4, 0, 0.2, 1],\n};\n\n/**\n * Under `prefers-reduced-motion: reduce`, an enter or exit keeps a short opacity fade on the same\n * cue, with no translate, scale or size change. It is never instant.\n */\nexport const ReducedMotionFade = {\n duration: TransitionDuration.Faster,\n durationInSeconds: TransitionDurationInSeconds.Faster,\n easing: TransitionEasing.Move,\n} as const;\n"],"mappings":";;;;;;AAKA,IAAY,qBAAL,yBAAA,oBAAA;AACL,oBAAA,eAAA;AACA,oBAAA,YAAA;AACA,oBAAA,UAAA;AACA,oBAAA,gBAAA;AACA,oBAAA,YAAA;AAEA,oBAAA,eAAA;;KACD;;AAGD,IAAY,8BAAL,yBAAA,6BAAA;AACL,6BAAA,4BAAA,eAAA,MAAA;AACA,6BAAA,4BAAA,YAAA,OAAA;AACA,6BAAA,4BAAA,UAAA,MAAA;AACA,6BAAA,4BAAA,gBAAA,MAAA;AACA,6BAAA,4BAAA,YAAA,MAAA;AAEA,6BAAA,4BAAA,eAAA,KAAA;;KACD;;;;;;AAOD,IAAY,mBAAL,yBAAA,kBAAA;AACL,kBAAA,WAAA;AACA,kBAAA,UAAA;AACA,kBAAA,UAAA;AACA,kBAAA,YAAA;;KACD;;AAKD,MAAa,wBAAkF;CAC7F,OAAO;EAAC;EAAG;EAAG;EAAK;EAAE;CACrB,MAAM;EAAC;EAAK;EAAG;EAAG;EAAE;CACpB,MAAM;EAAC;EAAK;EAAG;EAAK;EAAE;CACvB;;;;;AAMD,MAAa,oBAAoB;CAC/B,UAAA;CACA,mBAAA;CACA,QAAA;CACD"}
|
package/llms.txt
CHANGED
|
@@ -39,11 +39,12 @@ their own subpaths.
|
|
|
39
39
|
- Overlays: `Modal`, `WizardModal` (`patterns/WizardModal`), `RightPanel`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
|
|
40
40
|
- Modal close button: localize the default with `PDSProvider strings={{ closeModal: translatedLabel }}` (English: "Close"), or override one modal with `contentProps.closeButtonLabel`.
|
|
41
41
|
- Forms: `ConfigFormGroup`, `FormField` (`TextField`, `TextAreaField`, `TableBoxField`), `Input`, `TextArea`, `Select`, `Combobox`, `Checkbox`, `Radio`, `Toggle`, `DatePicker`, `RichTextEditor` (tiptap-based Markdown/HTML editor with menu bar and optional floating toolbar), `FloatingToolbar` (tiptap bubble-menu toolbar)
|
|
42
|
+
- Combobox server search: `filterMode='server'` requires controlled `query` / `onQueryChange`, `selectedOptions` for selected labels, and flat `options`. Only native edits change the query; selection/display events never report it. PDS skips Fuse and hides Select all. Consumers own requests/pages; wire `onScrollEnd={loadMore}` for repeatable near-end reports and `isLoadingMore` for a loading row. Callers dedupe loading/exhausted requests; PDS re-checks short lists only on open/count changes and has no request lock. Use generic `footerAction` for error retry. Nested/grouped options and `onInputChange` remain client-mode features. See skills/ui-authoring/COMPONENTS.md.
|
|
42
43
|
- Status: `StatusIndicator` (named lifecycle status, including version and deployment status), `Badge` (counts); `Sticker` is for tags and complementary labels, not status
|
|
43
44
|
- Saved views: `TableControls` (or `DataTable.controls`) requires `onSetDefaultView` and `onUnsetDefaultView` together, or neither. Editable views offer "Set as default" / "Unset default" based on `view.isDefault`; the design system confirms before calling either callback and warns that both changes affect the entire organization. Consumers own persistence and must remove their own confirmations to avoid double prompts. Compact controls omit saved views. Pass `starredDefaultView` to star the default view: the `isDefault` view is pinned first with a star icon, cannot be dragged, hidden, deleted or unset, and its menu offers only Save, Duplicate and Reset (its name field still renames it); every other view gets the full menu. Rename and Duplicate on it call `onViewNameChange` / `onDuplicateView` with its id; Save calls `onSaveView()` with no id, saving whatever the consumer treats as the current view. A null `currentView` is shown as the starred view, so `onSaveView` and toolbar Save must treat null as the starred view; while an `isDefault` view exists, pass its id as `currentView` rather than null. A lazy default is a consumer-owned placeholder view with `isDefault: true`. While a view is the default the built-in tab is not shown and a `null` `currentView` is displayed as the starred view; with no `isDefault` view the built-in tab is shown starred and read-only.
|
|
44
45
|
- DataTable filters: pass `filtersV2` (`TableControlsFiltersV2Props` / `FilterBarProps`) through `DataTable.controls` or directly to `TableControls` for a first-class FilterBar; defaults visible with size derived from `compact`. Hosts own V2 data filtering and feed `onChange` back to `initialState` for active-filter messaging; hydration needs no remount key. Precedence: `filterPanel` → `filtersV2` → legacy `filters`. Legacy `filters` supports `input`, `select`, `multiselect`, `combobox`, and `daterange` with optional `filterResolver`. With `clientFiltering`, `column.filter` generates legacy-only controls backed by TanStack column-filter state, not V2 filtering.
|
|
45
46
|
- SmartTextInput: when method chains are allowed (`ValueType.MethodChain` or `{{...}}` interpolation), you MUST pass `renderFunctionForm`. PDS does not build the function-parameter form, so without it the dialog opened by placing the cursor in a call like `convert_to(...)` shows only the function name over an empty body. It receives `FunctionFormRenderProps` and must call `onComplete(nodes)` or `onCancel()`. In persona-web, `useDashboardSmartTextInputProps` supplies it (backed by `InputMethodChain/FunctionForm`). See components/SmartTextInput/SmartTextInput.mdx.
|
|
46
|
-
- FilterBar: optional `FilterField.condition`, `pickerGroup`, and `disabledReason` support host-defined individual predicates
|
|
47
|
+
- FilterBar: optional `getValueLabel(fieldId, value)` supplies synchronous display-only choice/multi-choice names in closed pills, overflow tooltips and Rules summaries, before registry labels/raw values. Re-render when host names arrive; it does not fetch, change values/options or mutate the registry. Optional `FilterField.condition`, `pickerGroup`, and `disabledReason` support host-defined individual predicates; existing aggregate fields stay unchanged. See components/DataTable/DataTable.mdx; hosts own editors, feature activation and serialization.
|
|
47
48
|
|
|
48
49
|
## Testing
|
|
49
50
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@persona/design-system",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.12",
|
|
4
4
|
"description": "React components for Persona UI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tanstack-intent"
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
|
|
42
42
|
"./components/Card": "./dist/components/Card/index.mjs",
|
|
43
43
|
"./components/CardV2": "./dist/components/CardV2/index.mjs",
|
|
44
|
+
"./components/Chart": "./dist/components/Chart/index.mjs",
|
|
44
45
|
"./components/Checkbox": "./dist/components/Checkbox/index.mjs",
|
|
45
46
|
"./components/CodeHighlight": "./dist/components/CodeHighlight/index.mjs",
|
|
46
47
|
"./components/CodeHighlight/PrismWithLanguages": "./dist/components/CodeHighlight/PrismWithLanguages.mjs",
|
|
@@ -84,8 +85,10 @@
|
|
|
84
85
|
"./components/SmartTextInput": "./dist/components/SmartTextInput/index.mjs",
|
|
85
86
|
"./components/SmartTextInput/parser/method-chain/parser": "./dist/components/SmartTextInput/parser/method-chain/parser.mjs",
|
|
86
87
|
"./components/SmartTextInput/parser/method-chain/types": "./dist/components/SmartTextInput/parser/method-chain/types.mjs",
|
|
88
|
+
"./components/SmartTextInput/parser/safe-parse": "./dist/components/SmartTextInput/parser/safe-parse.mjs",
|
|
87
89
|
"./components/SmartTextInput/parser/smart-text/parser": "./dist/components/SmartTextInput/parser/smart-text/parser.mjs",
|
|
88
90
|
"./components/SmartTextInput/parser/smart-text/types": "./dist/components/SmartTextInput/parser/smart-text/types.mjs",
|
|
91
|
+
"./components/SmartTextInput/parser/tree": "./dist/components/SmartTextInput/parser/tree.mjs",
|
|
89
92
|
"./components/SmartTextInput/PillType": "./dist/components/SmartTextInput/PillType.mjs",
|
|
90
93
|
"./components/Spacer": "./dist/components/Spacer/index.mjs",
|
|
91
94
|
"./components/Spinner": "./dist/components/Spinner/index.mjs",
|
|
@@ -142,6 +145,7 @@
|
|
|
142
145
|
"./lib/TruncatedText": "./dist/lib/TruncatedText.mjs",
|
|
143
146
|
"./lib/TruncatedTextWithTooltip": "./dist/lib/TruncatedTextWithTooltip.mjs",
|
|
144
147
|
"./lib/useChain": "./dist/lib/useChain.mjs",
|
|
148
|
+
"./lib/useCloseFocus": "./dist/lib/useCloseFocus.mjs",
|
|
145
149
|
"./lib/useControlled": "./dist/lib/useControlled.mjs",
|
|
146
150
|
"./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
|
|
147
151
|
"./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
|
|
@@ -155,6 +159,7 @@
|
|
|
155
159
|
"./mixins/hoverable": "./dist/mixins/hoverable.mjs",
|
|
156
160
|
"./mixins/input": "./dist/mixins/input.mjs",
|
|
157
161
|
"./mixins/menuItem": "./dist/mixins/menuItem.mjs",
|
|
162
|
+
"./mixins/motion": "./dist/mixins/motion.mjs",
|
|
158
163
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
159
164
|
"./mixins/scrollbar": "./dist/mixins/scrollbar.mjs",
|
|
160
165
|
"./mixins/text": "./dist/mixins/text.mjs",
|
|
@@ -182,6 +187,7 @@
|
|
|
182
187
|
"build": "tsdown && node scripts/assert-no-node-imports.mjs && node scripts/assert-styled-components-interop.mjs && node scripts/assert-parser-declarations.mjs",
|
|
183
188
|
"release": "scripts/release.sh --dry-run",
|
|
184
189
|
"skills:validate": "intent validate skills",
|
|
190
|
+
"typecheck:charts": "node scripts/typecheck-charts.mjs",
|
|
185
191
|
"tokens:generate": "node scripts/generate-semantic-tokens.mjs && node scripts/generate-charting-tokens.mjs",
|
|
186
192
|
"tokens:check": "node scripts/generate-semantic-tokens.mjs --check && node scripts/generate-charting-tokens.mjs --check",
|
|
187
193
|
"skills:stale": "intent stale"
|
|
@@ -242,8 +248,8 @@
|
|
|
242
248
|
"@faker-js/faker": "^10.5.0",
|
|
243
249
|
"@figma/code-connect": "^1.4.4",
|
|
244
250
|
"@oxlint/plugins": "1.72.0",
|
|
245
|
-
"@persona/design-tokens": "0.4.
|
|
246
|
-
"@persona/icons": "0.1.
|
|
251
|
+
"@persona/design-tokens": "0.4.26",
|
|
252
|
+
"@persona/icons": "0.1.15",
|
|
247
253
|
"@storybook/react": "^10.6.2",
|
|
248
254
|
"@storybook/react-vite": "^10.6.2",
|
|
249
255
|
"@tanstack/intent": "^0.3.6",
|
|
@@ -276,6 +282,7 @@
|
|
|
276
282
|
"react-dom": "^17.0.2",
|
|
277
283
|
"react-router-dom": "^6.30.5",
|
|
278
284
|
"recharts": "^2.13.3",
|
|
285
|
+
"recharts-v3": "npm:recharts@^3.2.1",
|
|
279
286
|
"storybook": "^10.6.2",
|
|
280
287
|
"styled-components": "^5.3.5",
|
|
281
288
|
"tsdown": "^0.21.0",
|
|
@@ -284,7 +291,7 @@
|
|
|
284
291
|
},
|
|
285
292
|
"peerDependencies": {
|
|
286
293
|
"@persona/design-tokens": ">=0.4.17",
|
|
287
|
-
"@persona/icons": ">=0.1.
|
|
294
|
+
"@persona/icons": ">=0.1.14",
|
|
288
295
|
"@tanstack/react-router": ">=1.0.0",
|
|
289
296
|
"@testing-library/dom": ">=8",
|
|
290
297
|
"@testing-library/react": ">=12",
|
|
@@ -293,6 +300,7 @@
|
|
|
293
300
|
"react": ">=17",
|
|
294
301
|
"react-dom": ">=17",
|
|
295
302
|
"react-router-dom": "^6.30.1 || ^7.18.2",
|
|
303
|
+
"recharts": "^2.13.3 || ^3",
|
|
296
304
|
"styled-components": "^5.3.5"
|
|
297
305
|
},
|
|
298
306
|
"peerDependenciesMeta": {
|
|
@@ -304,6 +312,9 @@
|
|
|
304
312
|
},
|
|
305
313
|
"oxlint": {
|
|
306
314
|
"optional": true
|
|
315
|
+
},
|
|
316
|
+
"recharts": {
|
|
317
|
+
"optional": true
|
|
307
318
|
}
|
|
308
319
|
},
|
|
309
320
|
"publishConfig": {
|
|
@@ -319,6 +330,7 @@
|
|
|
319
330
|
"./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
|
|
320
331
|
"./components/Card": "./dist/components/Card/index.mjs",
|
|
321
332
|
"./components/CardV2": "./dist/components/CardV2/index.mjs",
|
|
333
|
+
"./components/Chart": "./dist/components/Chart/index.mjs",
|
|
322
334
|
"./components/Checkbox": "./dist/components/Checkbox/index.mjs",
|
|
323
335
|
"./components/CodeHighlight": "./dist/components/CodeHighlight/index.mjs",
|
|
324
336
|
"./components/CodeHighlight/PrismWithLanguages": "./dist/components/CodeHighlight/PrismWithLanguages.mjs",
|
|
@@ -362,8 +374,10 @@
|
|
|
362
374
|
"./components/SmartTextInput": "./dist/components/SmartTextInput/index.mjs",
|
|
363
375
|
"./components/SmartTextInput/parser/method-chain/parser": "./dist/components/SmartTextInput/parser/method-chain/parser.mjs",
|
|
364
376
|
"./components/SmartTextInput/parser/method-chain/types": "./dist/components/SmartTextInput/parser/method-chain/types.mjs",
|
|
377
|
+
"./components/SmartTextInput/parser/safe-parse": "./dist/components/SmartTextInput/parser/safe-parse.mjs",
|
|
365
378
|
"./components/SmartTextInput/parser/smart-text/parser": "./dist/components/SmartTextInput/parser/smart-text/parser.mjs",
|
|
366
379
|
"./components/SmartTextInput/parser/smart-text/types": "./dist/components/SmartTextInput/parser/smart-text/types.mjs",
|
|
380
|
+
"./components/SmartTextInput/parser/tree": "./dist/components/SmartTextInput/parser/tree.mjs",
|
|
367
381
|
"./components/SmartTextInput/PillType": "./dist/components/SmartTextInput/PillType.mjs",
|
|
368
382
|
"./components/Spacer": "./dist/components/Spacer/index.mjs",
|
|
369
383
|
"./components/Spinner": "./dist/components/Spinner/index.mjs",
|
|
@@ -420,6 +434,7 @@
|
|
|
420
434
|
"./lib/TruncatedText": "./dist/lib/TruncatedText.mjs",
|
|
421
435
|
"./lib/TruncatedTextWithTooltip": "./dist/lib/TruncatedTextWithTooltip.mjs",
|
|
422
436
|
"./lib/useChain": "./dist/lib/useChain.mjs",
|
|
437
|
+
"./lib/useCloseFocus": "./dist/lib/useCloseFocus.mjs",
|
|
423
438
|
"./lib/useControlled": "./dist/lib/useControlled.mjs",
|
|
424
439
|
"./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
|
|
425
440
|
"./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
|
|
@@ -433,6 +448,7 @@
|
|
|
433
448
|
"./mixins/hoverable": "./dist/mixins/hoverable.mjs",
|
|
434
449
|
"./mixins/input": "./dist/mixins/input.mjs",
|
|
435
450
|
"./mixins/menuItem": "./dist/mixins/menuItem.mjs",
|
|
451
|
+
"./mixins/motion": "./dist/mixins/motion.mjs",
|
|
436
452
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
437
453
|
"./mixins/scrollbar": "./dist/mixins/scrollbar.mjs",
|
|
438
454
|
"./mixins/text": "./dist/mixins/text.mjs",
|
|
@@ -44,6 +44,39 @@ Put this in the PR body before building, so the design source is consulted first
|
|
|
44
44
|
- **Intent:** who uses the screen, to do what, in one line
|
|
45
45
|
- **Source:** the live product, a Figma link, or none (say so if a source couldn't be reached)
|
|
46
46
|
- **PDS version:** from the app's lockfile
|
|
47
|
+
- **State changes:** the table below
|
|
48
|
+
|
|
49
|
+
### State changes
|
|
50
|
+
|
|
51
|
+
Give every state change on the screen one row: open and close, enter and exit, loading to loaded,
|
|
52
|
+
empty, error, success, selection, disabled, and any value that updates in place.
|
|
53
|
+
|
|
54
|
+
| State change | Motion | Reason |
|
|
55
|
+
| ------------ | ------ | ------ |
|
|
56
|
+
| Review dialog opens | `Modal`, built in | |
|
|
57
|
+
| Review dialog closes | `Modal`, built in | |
|
|
58
|
+
| Case list loads | `IndexViewLayoutShimmer`, built in | Built in; the shimmer holds still under reduced motion |
|
|
59
|
+
| Save fails | instant | An error shouldn't wait on an animation |
|
|
60
|
+
| Result count updates | instant | The number is the content |
|
|
61
|
+
| Edited value is highlighted | Feedback on a surface: `TransitionDuration.Fast`, `TransitionEasing.Move` | No PDS component highlights an edit |
|
|
62
|
+
|
|
63
|
+
Motion is one of these, in this order:
|
|
64
|
+
|
|
65
|
+
1. **A PDS component's own motion.** Name the component's export and add nothing on top.
|
|
66
|
+
2. **A usage row from the motion scale** ([STANDARD.md](../ui-authoring/STANDARD.md#motion-scale)),
|
|
67
|
+
for motion the screen authors itself: its `TransitionDuration` (CSS) or
|
|
68
|
+
`TransitionDurationInSeconds` (framer-motion) step and its `TransitionEasing` or
|
|
69
|
+
`TransitionEasingCurve`, plus `fadeIn` or `rotate` from `variables/keyframes`. Say why no
|
|
70
|
+
component covers it. No literal durations or timing functions.
|
|
71
|
+
3. **`instant`**, with a reason.
|
|
72
|
+
|
|
73
|
+
**Reduced motion.** Any file the screen adds that animates keeps a short opacity fade with no
|
|
74
|
+
movement under reduced motion (`ReducedMotionFade`, 150 ms): a `prefers-reduced-motion` block in CSS
|
|
75
|
+
(`pds/reduced-motion` checks this), or `useReducedMotion()` in framer-motion. The state changes at
|
|
76
|
+
the same cue, never instantly.
|
|
77
|
+
If a component's own motion ignores reduced motion, pick `instant` or another component that honours
|
|
78
|
+
it. If neither works, keep the component and note the gap in the PR body as a PDS gap, not a
|
|
79
|
+
departure: no screen bends the PDH-F3 floor. Don't override the component from the screen.
|
|
47
80
|
|
|
48
81
|
## Before you hand it over
|
|
49
82
|
|