@persona/design-system 0.10.10 → 0.10.11
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 +27 -0
- package/dist/{Action-CHWYwpYR.d.mts → Action-sLO73eKq.d.mts} +2 -2
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +2 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +2 -2
- package/dist/{Badge-BCdsVKuj.mjs → Badge-DZq6ByIU.mjs} +2 -2
- package/dist/{Badge-BCdsVKuj.mjs.map → Badge-DZq6ByIU.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumbs-CMf3Uvow.mjs → Breadcrumbs-DpsNZWF9.mjs} +9 -9
- package/dist/Breadcrumbs-DpsNZWF9.mjs.map +1 -0
- package/dist/{Button-DjD8QxcY.d.mts → Button-C4a4BTjL.d.mts} +2 -2
- package/dist/Button.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-DiUHtYg_.d.mts → Card-CPV4_mHk.d.mts} +4 -4
- package/dist/Card.d.mts +1 -1
- package/dist/Card2.d.mts +1 -1
- package/dist/CardGrouping.d.mts +1 -1
- package/dist/{CardV2-CrV6eEQb.mjs → CardV2-DCoDfEvr.mjs} +16 -13
- package/dist/CardV2-DCoDfEvr.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-C3z7UUSC.mjs} +8 -8
- package/dist/Checkbox-C3z7UUSC.mjs.map +1 -0
- package/dist/{CheckboxGroupField-Bpu2j6G2.d.mts → CheckboxGroupField-BT87OVOF.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-BkK_tosd.mjs} +300 -116
- package/dist/Combobox-BkK_tosd.mjs.map +1 -0
- package/dist/Combobox-aOJDTjzC.d.mts +12 -0
- package/dist/Combobox.d.mts +3 -3
- package/dist/{ComboboxBase-BPXqJHaQ.d.mts → ComboboxBase-Brgv5nxk.d.mts} +65 -25
- package/dist/ComboboxBase.d.mts +2 -2
- package/dist/{ComboboxMultiSelect-BwkkSymj.d.mts → ComboboxMultiSelect-DJyAv0Eg.d.mts} +10 -6
- package/dist/ComboboxMultiSelect.d.mts +2 -2
- package/dist/{ComboboxSingleSelect-CdNNJNkp.d.mts → ComboboxSingleSelect-CP8-HLKl.d.mts} +8 -6
- package/dist/ComboboxSingleSelect.d.mts +2 -2
- package/dist/{CompactBar-BLZZWtIE.d.mts → CompactBar-B0LhjrYV.d.mts} +2 -2
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-BCTWCws5.mjs → ConfigFormGroup-DAUqAhJW.mjs} +2 -2
- package/dist/{ConfigFormGroup-BCTWCws5.mjs.map → ConfigFormGroup-DAUqAhJW.mjs.map} +1 -1
- package/dist/{DataTable-BE9inUi-.d.mts → DataTable-CSl5Jn3E.d.mts} +18 -8
- package/dist/{DataTable-CIZJ1vO8.mjs → DataTable-DiwzhNMt.mjs} +41 -28
- package/dist/DataTable-DiwzhNMt.mjs.map +1 -0
- package/dist/DataTable.d.mts +1 -1
- package/dist/{DatePicker-C9redLBr.mjs → DatePicker-BK7ioKBm.mjs} +410 -410
- package/dist/DatePicker-BK7ioKBm.mjs.map +1 -0
- package/dist/DateRangeValueControl.d.mts +1 -1
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-DpLG-cIj.mjs → DropdownButton-Dp-MZ5tA.mjs} +3 -3
- package/dist/{DropdownButton-DpLG-cIj.mjs.map → DropdownButton-Dp-MZ5tA.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-B6D4stkF.d.mts → DropdownMenu-BnHPeHOm.d.mts} +3 -3
- package/dist/{DropdownMenu-c8XK2Lr4.mjs → DropdownMenu-jJSHQaih.mjs} +4 -2
- package/dist/DropdownMenu-jJSHQaih.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-DDyk14sx.d.mts} +4 -4
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +2 -2
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +1 -1
- package/dist/FloatValueControl.d.mts +3 -2
- package/dist/{FloatingToolbar-DLRaE0o7.mjs → FloatingToolbar-rfKurDs8.mjs} +36 -39
- package/dist/FloatingToolbar-rfKurDs8.mjs.map +1 -0
- package/dist/{FormControl-BztNXLn6.mjs → FormControl--pbTH3bY.mjs} +3 -3
- package/dist/{FormControl-BztNXLn6.mjs.map → FormControl--pbTH3bY.mjs.map} +1 -1
- package/dist/{FormControl-BQe3GRhi.d.mts → FormControl-DPYbLcBK.d.mts} +2 -2
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +2 -2
- package/dist/{FormField-BW5uMzId.d.mts → FormField-CYNGm2bJ.d.mts} +2 -2
- package/dist/{FormField-Cf1VMvoa.mjs → FormField-DMxjftFw.mjs} +14 -14
- package/dist/{FormField-Cf1VMvoa.mjs.map → FormField-DMxjftFw.mjs.map} +1 -1
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-CYpOqTUu.mjs → Grid-DVC0SSEZ.mjs} +2 -2
- package/dist/{Grid-CYpOqTUu.mjs.map → Grid-DVC0SSEZ.mjs.map} +1 -1
- package/dist/{Header-CV0Lcf0C.d.mts → Header-DaaUprCL.d.mts} +2 -2
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-BNM3pTM-.d.mts → HelperTooltip-C5BDdJSI.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/HighlightedText.d.mts +1 -1
- package/dist/{HoverCopyableField-XHC_n9tp.mjs → HoverCopyableField-B2-xlwUt.mjs} +12 -7
- package/dist/HoverCopyableField-B2-xlwUt.mjs.map +1 -0
- package/dist/{IconButton-C_ReZm8v.d.mts → IconButton-7k-wjvH3.d.mts} +2 -2
- package/dist/{IconButton-DxHB2g80.mjs → IconButton-kSjnfhWt.mjs} +11 -10
- package/dist/IconButton-kSjnfhWt.mjs.map +1 -0
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +1 -1
- package/dist/IndexTableLayout.d.mts +4 -4
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-DH-5dKor.d.mts → Input-CwvrBsiS.d.mts} +3 -3
- package/dist/{Input-RHXujO9u.mjs → Input-TRmTBEav.mjs} +5 -5
- package/dist/{Input-RHXujO9u.mjs.map → Input-TRmTBEav.mjs.map} +1 -1
- package/dist/Input.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +3 -2
- package/dist/{Link-D_kCyLYX.mjs → Link-XvzUN8sY.mjs} +6 -6
- package/dist/Link-XvzUN8sY.mjs.map +1 -0
- package/dist/{ListBox-DpFcM-dM.d.mts → ListBox-BePQBYR7.d.mts} +3 -3
- package/dist/{ListBox-BZp6exb8.mjs → ListBox-DahM1PgU.mjs} +12 -12
- package/dist/{ListBox-BZp6exb8.mjs.map → ListBox-DahM1PgU.mjs.map} +1 -1
- package/dist/ListBox.d.mts +1 -1
- package/dist/{ListBoxField-DL6Zk8TU.d.mts → ListBoxField-lj7JN1BX.d.mts} +4 -4
- package/dist/ListBoxField.d.mts +1 -1
- package/dist/{LoadingShimmer-oPIv2ESr.mjs → LoadingShimmer-CpfKTSUs.mjs} +4 -3
- package/dist/LoadingShimmer-CpfKTSUs.mjs.map +1 -0
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-BakOUtzx.d.mts → LogicRow-Do7t7Suf.d.mts} +2 -2
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/MatchHighlight.d.mts +1 -1
- package/dist/{Menu-BVn1jh46.mjs → Menu-BvMzSH2I.mjs} +5 -5
- package/dist/{Menu-BVn1jh46.mjs.map → Menu-BvMzSH2I.mjs.map} +1 -1
- package/dist/{Menu-D6OrKCTC.d.mts → Menu-Ca5ftvo6.d.mts} +4 -4
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-DicQsLDG.mjs → MiddleTruncatedText--jzGTD00.mjs} +2 -2
- package/dist/{MiddleTruncatedText-DicQsLDG.mjs.map → MiddleTruncatedText--jzGTD00.mjs.map} +1 -1
- package/dist/{Modal-De5_bPJ_.mjs → Modal-B6X5AgWj.mjs} +54 -25
- package/dist/{Modal-De5_bPJ_.mjs.map → Modal-B6X5AgWj.mjs.map} +1 -1
- package/dist/{Modal-CujB7DuB.d.mts → Modal-BPfFyzkw.d.mts} +3 -3
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-UPiqJpIF.d.mts → PageHeader-BeBmYmUX.d.mts} +2 -2
- package/dist/{PageHeader-7_Hf6rHl.mjs → PageHeader-bhQTjuZF.mjs} +2 -2
- package/dist/{PageHeader-7_Hf6rHl.mjs.map → PageHeader-bhQTjuZF.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageLayout-BdVM37bV.d.mts → PageLayout-BXM_pyrU.d.mts} +2 -2
- package/dist/{PageLayout-DjtGrvJa.mjs → PageLayout-DgEGcZgB.mjs} +3 -3
- package/dist/{PageLayout-DjtGrvJa.mjs.map → PageLayout-DgEGcZgB.mjs.map} +1 -1
- package/dist/PageLayout.d.mts +1 -1
- package/dist/{PageSelector-B5CcAzss.d.mts → PageSelector-C14ABZVL.d.mts} +2 -2
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-DMH2IaV0.mjs → Pagination-DE8wT55m.mjs} +5 -5
- package/dist/{Pagination-DMH2IaV0.mjs.map → Pagination-DE8wT55m.mjs.map} +1 -1
- package/dist/{Pii-24D_nSRQ.mjs → Pii-C42ZY88Y.mjs} +2 -2
- package/dist/{Pii-24D_nSRQ.mjs.map → Pii-C42ZY88Y.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-DuFjaSoq.mjs} +4 -2
- package/dist/Popover-DuFjaSoq.mjs.map +1 -0
- package/dist/Popover.d.mts +1 -1
- package/dist/ProgressBar.d.mts +1 -1
- package/dist/{ProgressIndicator-zt3ndT9U.mjs → ProgressIndicator-hy1P-RG1.mjs} +3 -3
- package/dist/{ProgressIndicator-zt3ndT9U.mjs.map → ProgressIndicator-hy1P-RG1.mjs.map} +1 -1
- package/dist/{Radio-BlEtetrr.mjs → Radio-B4TBAho6.mjs} +5 -5
- package/dist/Radio-B4TBAho6.mjs.map +1 -0
- package/dist/{RadioGroup-CMrXmmn4.mjs → RadioGroup-Bf24GKOb.mjs} +3 -3
- package/dist/{RadioGroup-CMrXmmn4.mjs.map → RadioGroup-Bf24GKOb.mjs.map} +1 -1
- package/dist/RichTextEditor.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +2 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-D_DA-MU1.mjs → SegmentedControl-BpR7sUWO.mjs} +6 -3
- package/dist/SegmentedControl-BpR7sUWO.mjs.map +1 -0
- package/dist/{Select-CR9TjFfo.d.mts → Select-DYdn73Nh.d.mts} +2 -2
- package/dist/{Select-DOlw_LPR.mjs → Select-RdTT2KoH.mjs} +10 -8
- package/dist/Select-RdTT2KoH.mjs.map +1 -0
- package/dist/Select.d.mts +1 -1
- package/dist/SmartTextInput.d.mts +1 -1
- package/dist/SmartTextInputField.d.mts +2 -2
- package/dist/SmartTextInputFunctionDialog.d.mts +1 -1
- package/dist/SmartTextInputPopover.d.mts +1 -1
- package/dist/{Spinner-CXb-KUs1.mjs → Spinner-vcApnJzv.mjs} +2 -2
- package/dist/{Spinner-CXb-KUs1.mjs.map → Spinner-vcApnJzv.mjs.map} +1 -1
- package/dist/{Stack-CODxfzhl.d.mts → Stack-B6MrjJeW.d.mts} +2 -2
- package/dist/Stack.d.mts +1 -1
- package/dist/{StatusIndicator-CzRaEFSz.mjs → StatusIndicator-lwt35J6B.mjs} +3 -3
- package/dist/{StatusIndicator-CzRaEFSz.mjs.map → StatusIndicator-lwt35J6B.mjs.map} +1 -1
- package/dist/{Sticker-CLvRB8V5.d.mts → Sticker-C7Wv3Obx.d.mts} +4 -4
- package/dist/{Sticker-C1_6I08u.mjs → Sticker-jfOM4Yi6.mjs} +5 -5
- package/dist/{Sticker-C1_6I08u.mjs.map → Sticker-jfOM4Yi6.mjs.map} +1 -1
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +2 -1
- package/dist/Tab.d.mts +2 -2
- package/dist/{TabBar-BCFO38E0.mjs → TabBar-DwHgbIQ6.mjs} +8 -8
- package/dist/TabBar-DwHgbIQ6.mjs.map +1 -0
- package/dist/{Table-DPi4Dt5H.mjs → Table-SMJAWqoe.mjs} +21 -13
- package/dist/Table-SMJAWqoe.mjs.map +1 -0
- package/dist/{TableBox-DNQsgQ8x.mjs → TableBox-DS8mpN3-.mjs} +21 -17
- package/dist/TableBox-DS8mpN3-.mjs.map +1 -0
- package/dist/TableBox.d.mts +1 -1
- package/dist/{TableBoxCell-CsRt_5gP.d.mts → TableBoxCell-Bo5xYEmR.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/{TableBoxField-Db0Vjo6Z.d.mts → TableBoxField-CdgjSGLK.d.mts} +5 -5
- package/dist/TableBoxField.d.mts +1 -1
- package/dist/{TableBoxRow-exMlZyc4.d.mts → TableBoxRow-DuWS2iRC.d.mts} +2 -2
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-UO9YN34k.d.mts → TableBoxRowActions-zW74DkXt.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-CQsF7t4e.d.mts → TableCell-uv_jqT5e.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-Clo_0Mty.d.mts → TableControls-9vz-HfDu.d.mts} +4 -4
- package/dist/{TableControls-BrP_BqnF.mjs → TableControls-CX7BvgD2.mjs} +107 -43
- package/dist/TableControls-CX7BvgD2.mjs.map +1 -0
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-BNd6z9mD.d.mts → TableControlsContext-D0Hn3rwL.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-Cp7ausV_.d.mts → TableViewConfigurationDropdown-CZcLH8uR.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-Cq5jzYKQ.mjs → TechnicalSticker-DrN45Vut.mjs} +9 -7
- package/dist/TechnicalSticker-DrN45Vut.mjs.map +1 -0
- package/dist/{Text-CvaqognH.d.mts → Text-CdHeSHCc.d.mts} +2 -2
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-Dro-HH8O.mjs → TextArea-CQ1YNi2b.mjs} +4 -5
- package/dist/TextArea-CQ1YNi2b.mjs.map +1 -0
- package/dist/{TextUnderlineTooltip-Bd5e8KH3.d.mts → TextUnderlineTooltip-By1VVsSs.d.mts} +3 -3
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +1 -1
- package/dist/{Toggle-D9MzTIZs.mjs → Toggle-DjmkjJlw.mjs} +13 -9
- package/dist/Toggle-DjmkjJlw.mjs.map +1 -0
- package/dist/{Tooltip-YViXzMdm.mjs → Tooltip-C2VB8I6y.mjs} +18 -5
- package/dist/Tooltip-C2VB8I6y.mjs.map +1 -0
- package/dist/{Tooltip-Ddy2Jq0K.d.mts → Tooltip-OxVvOfn8.d.mts} +3 -3
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-sr9Fhm3N.d.mts → TruncatedText-Dqj94BFK.d.mts} +2 -2
- package/dist/WizardModal.d.mts +1 -1
- package/dist/chartColors.d.mts +92 -0
- package/dist/chartFrameLayout.d.mts +46 -0
- package/dist/{clientFilterUtils-CGHYF5NE.d.mts → clientFilterUtils-CMLuN8kK.d.mts} +2 -2
- package/dist/clientFilterUtils.d.mts +1 -1
- package/dist/components/Accordion/index.mjs +25 -16
- package/dist/components/Accordion/index.mjs.map +1 -1
- package/dist/components/Attribute/index.mjs +8 -6
- package/dist/components/Attribute/index.mjs.map +1 -1
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +3 -3
- package/dist/components/BottomPanel/index.mjs +10 -8
- package/dist/components/BottomPanel/index.mjs.map +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/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 +4 -4
- package/dist/components/Combobox/index.d.mts +5 -3
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +1 -1
- package/dist/components/DataTable/TableControls/index.d.mts +20 -20
- 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 +20 -18
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FloatingToolbar/index.mjs +1 -1
- package/dist/components/FormControl/index.d.mts +1 -1
- package/dist/components/FormControl/index.mjs +1 -1
- package/dist/components/FormField/index.d.mts +5 -5
- 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 +10 -10
- 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 -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/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.d.mts +1 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +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/ProgressIndicator/index.mjs +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RichTextEditor/index.mjs +9 -9
- package/dist/components/RightPanel/index.mjs +30 -15
- 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 +5 -5
- package/dist/components/Slider/index.mjs +5 -4
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/index.mjs +11 -18
- package/dist/components/SmartTextInput/index.mjs.map +1 -1
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/StatusIndicator/index.mjs +1 -1
- package/dist/components/Sticker/index.d.mts +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/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.d.mts +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/Text/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 +19 -13
- package/dist/components/Toast/index.mjs.map +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/components/VersionHistory/index.mjs +8 -8
- 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-By_TYKAZ.d.mts} +3 -3
- package/dist/filters.d.mts +1 -1
- package/dist/{helpers-CBJ2AqGZ.d.mts → helpers-BIHsqdyX.d.mts} +2 -2
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-kIon1vPp.d.mts → index-BozzRwby.d.mts} +2 -2
- package/dist/{index-OkdnW-u5.d.mts → index-CZJp4Af6.d.mts} +3 -3
- package/dist/index2.d.mts +1 -1
- 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-BqO2H-Kj.d.mts} +6 -6
- package/dist/inputFields.d.mts +1 -1
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/colorMode.d.mts +1 -1
- package/dist/lib/useChain.d.mts +1 -1
- 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/focus.mjs +1 -1
- package/dist/mixins/hoverable.mjs +2 -2
- package/dist/mixins/hoverable.mjs.map +1 -1
- package/dist/mixins/input.mjs +3 -2
- 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 +24 -0
- package/dist/mixins/motion.mjs +44 -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 +9 -9
- package/dist/patterns/CardGrouping/index.mjs.map +1 -1
- package/dist/patterns/IndexTableLayout/index.mjs +3 -3
- 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.d.mts +1 -1
- package/dist/patterns/PageLayout/index.mjs +1 -1
- package/dist/patterns/WizardModal/index.mjs +4 -4
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/tone.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-BEdERA4v.d.mts → types-C_CncajO.d.mts} +2 -2
- package/dist/{types-BiqzeNsa.d.mts → types-D5txFacG.d.mts} +3 -3
- 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/{useChain-B--KAtdN.d.mts → useChain-x9fd9Fyq.d.mts} +2 -2
- package/dist/useChainAtCursor.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-BEKJNrb1.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/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 +1 -0
- package/package.json +14 -4
- package/skills/new-screen/SKILL.md +33 -0
- package/skills/ui-authoring/COMPONENTS.md +18 -0
- package/skills/ui-authoring/PATTERNS.md +51 -34
- package/skills/ui-authoring/STANDARD.md +68 -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/DatePicker-C9redLBr.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/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
|
@@ -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-D5txFacG.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-BEKJNrb1.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-BEKJNrb1.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 };
|
|
@@ -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,6 +39,7 @@ 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.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@persona/design-system",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.11",
|
|
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",
|
|
@@ -155,6 +156,7 @@
|
|
|
155
156
|
"./mixins/hoverable": "./dist/mixins/hoverable.mjs",
|
|
156
157
|
"./mixins/input": "./dist/mixins/input.mjs",
|
|
157
158
|
"./mixins/menuItem": "./dist/mixins/menuItem.mjs",
|
|
159
|
+
"./mixins/motion": "./dist/mixins/motion.mjs",
|
|
158
160
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
159
161
|
"./mixins/scrollbar": "./dist/mixins/scrollbar.mjs",
|
|
160
162
|
"./mixins/text": "./dist/mixins/text.mjs",
|
|
@@ -182,6 +184,7 @@
|
|
|
182
184
|
"build": "tsdown && node scripts/assert-no-node-imports.mjs && node scripts/assert-styled-components-interop.mjs && node scripts/assert-parser-declarations.mjs",
|
|
183
185
|
"release": "scripts/release.sh --dry-run",
|
|
184
186
|
"skills:validate": "intent validate skills",
|
|
187
|
+
"typecheck:charts": "node scripts/typecheck-charts.mjs",
|
|
185
188
|
"tokens:generate": "node scripts/generate-semantic-tokens.mjs && node scripts/generate-charting-tokens.mjs",
|
|
186
189
|
"tokens:check": "node scripts/generate-semantic-tokens.mjs --check && node scripts/generate-charting-tokens.mjs --check",
|
|
187
190
|
"skills:stale": "intent stale"
|
|
@@ -242,8 +245,8 @@
|
|
|
242
245
|
"@faker-js/faker": "^10.5.0",
|
|
243
246
|
"@figma/code-connect": "^1.4.4",
|
|
244
247
|
"@oxlint/plugins": "1.72.0",
|
|
245
|
-
"@persona/design-tokens": "0.4.
|
|
246
|
-
"@persona/icons": "0.1.
|
|
248
|
+
"@persona/design-tokens": "0.4.25",
|
|
249
|
+
"@persona/icons": "0.1.14",
|
|
247
250
|
"@storybook/react": "^10.6.2",
|
|
248
251
|
"@storybook/react-vite": "^10.6.2",
|
|
249
252
|
"@tanstack/intent": "^0.3.6",
|
|
@@ -276,6 +279,7 @@
|
|
|
276
279
|
"react-dom": "^17.0.2",
|
|
277
280
|
"react-router-dom": "^6.30.5",
|
|
278
281
|
"recharts": "^2.13.3",
|
|
282
|
+
"recharts-v3": "npm:recharts@^3.2.1",
|
|
279
283
|
"storybook": "^10.6.2",
|
|
280
284
|
"styled-components": "^5.3.5",
|
|
281
285
|
"tsdown": "^0.21.0",
|
|
@@ -284,7 +288,7 @@
|
|
|
284
288
|
},
|
|
285
289
|
"peerDependencies": {
|
|
286
290
|
"@persona/design-tokens": ">=0.4.17",
|
|
287
|
-
"@persona/icons": ">=0.1.
|
|
291
|
+
"@persona/icons": ">=0.1.14",
|
|
288
292
|
"@tanstack/react-router": ">=1.0.0",
|
|
289
293
|
"@testing-library/dom": ">=8",
|
|
290
294
|
"@testing-library/react": ">=12",
|
|
@@ -293,6 +297,7 @@
|
|
|
293
297
|
"react": ">=17",
|
|
294
298
|
"react-dom": ">=17",
|
|
295
299
|
"react-router-dom": "^6.30.1 || ^7.18.2",
|
|
300
|
+
"recharts": "^2.13.3 || ^3",
|
|
296
301
|
"styled-components": "^5.3.5"
|
|
297
302
|
},
|
|
298
303
|
"peerDependenciesMeta": {
|
|
@@ -304,6 +309,9 @@
|
|
|
304
309
|
},
|
|
305
310
|
"oxlint": {
|
|
306
311
|
"optional": true
|
|
312
|
+
},
|
|
313
|
+
"recharts": {
|
|
314
|
+
"optional": true
|
|
307
315
|
}
|
|
308
316
|
},
|
|
309
317
|
"publishConfig": {
|
|
@@ -319,6 +327,7 @@
|
|
|
319
327
|
"./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
|
|
320
328
|
"./components/Card": "./dist/components/Card/index.mjs",
|
|
321
329
|
"./components/CardV2": "./dist/components/CardV2/index.mjs",
|
|
330
|
+
"./components/Chart": "./dist/components/Chart/index.mjs",
|
|
322
331
|
"./components/Checkbox": "./dist/components/Checkbox/index.mjs",
|
|
323
332
|
"./components/CodeHighlight": "./dist/components/CodeHighlight/index.mjs",
|
|
324
333
|
"./components/CodeHighlight/PrismWithLanguages": "./dist/components/CodeHighlight/PrismWithLanguages.mjs",
|
|
@@ -433,6 +442,7 @@
|
|
|
433
442
|
"./mixins/hoverable": "./dist/mixins/hoverable.mjs",
|
|
434
443
|
"./mixins/input": "./dist/mixins/input.mjs",
|
|
435
444
|
"./mixins/menuItem": "./dist/mixins/menuItem.mjs",
|
|
445
|
+
"./mixins/motion": "./dist/mixins/motion.mjs",
|
|
436
446
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
437
447
|
"./mixins/scrollbar": "./dist/mixins/scrollbar.mjs",
|
|
438
448
|
"./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
|
|
|
@@ -17,6 +17,7 @@ exists. If there is no `.mdx`, use the published type declarations
|
|
|
17
17
|
| `Button` | Triggering an action. Use `IconButton` when there is no label | `@persona/design-system/components/Button` |
|
|
18
18
|
| `ButtonGroup` | Choosing among related modes in a compact connected button set (often icons, e.g. alignment). Use `Toggle` for a single on/off setting; `RadioGroup` for a visible list of labeled choices | `@persona/design-system/components/ButtonGroup` |
|
|
19
19
|
| `Card` + `Card.Section` | Grouping related content and actions so they're easier to scan. Collapsible sections on long settings pages | `@persona/design-system/components/CardV2` |
|
|
20
|
+
| `ChartFrame`, `ChartLegend`, `ChartPopover` | Experimental (beta). Charts built on `recharts` (optional peer, 2.x or 3.x): `ChartFrame` lays out legend and plot, `ChartLegend` keys and toggles series, `ChartPopover` is the `<Tooltip>` content. Colour series with `useChartColors` / `resolveSeriesColors`; style hand-built Recharts parts with `useChartStyles`. See Storybook Charts → Design | `@persona/design-system/components/Chart` |
|
|
20
21
|
| `Checkbox` | Selecting one or more options from a visible list | `@persona/design-system/components/Checkbox` |
|
|
21
22
|
| `Combobox` | Picking from a long list that needs search (single or multi). Use `RadioGroup` when every choice should stay visible (one); `Checkbox` when every choice should stay visible (several); `Select` for a short closed list with no search | `@persona/design-system/components/Combobox` |
|
|
22
23
|
| `ConfigFormGroup` | Form fields — spacing a group of config fields and setting `configField` via context. Pair with `TextField` / `TextAreaField` | `@persona/design-system/components/ConfigFormGroup` |
|
|
@@ -81,6 +82,23 @@ exists. If there is no `.mdx`, use the published type declarations
|
|
|
81
82
|
| `VersionHistory` | Show previous versions of a file and let the user compare or restore one | `@persona/design-system/components/VersionHistory` |
|
|
82
83
|
|
|
83
84
|
|
|
85
|
+
## Server-backed Combobox
|
|
86
|
+
|
|
87
|
+
`filterMode='server'` requires flat `options`, a controlled `query` / `onQueryChange` pair and
|
|
88
|
+
`selectedOptions` for every selected value, including off-page values. Query text is separate from
|
|
89
|
+
the selected label: only native edits call `onQueryChange`; selection and menu transitions do not
|
|
90
|
+
change it. `onInputChange` and grouped/nested browsing stay client-mode only. PDS bypasses Fuse and
|
|
91
|
+
hides built-in Select all in server mode. Missing selection metadata has a `String(value)` safety
|
|
92
|
+
fallback, not a selection cache. Your hook owns debounce, requests, cancellation and accumulated
|
|
93
|
+
pages. Wire `onScrollEnd={loadMore}` for near-end reports and `isLoadingMore` for the optional loading
|
|
94
|
+
row. Calls may repeat; the caller ignores duplicate/loading/exhausted requests. PDS has no
|
|
95
|
+
`hasMore` or request lock and re-checks short lists only on open/count changes, not loading changes.
|
|
96
|
+
Use generic `footerAction` for error retries. Keep `isOptionsLoading={isInitialLoading || isSearching}`
|
|
97
|
+
for initial/replacement searches (`isSearching` includes debounce and page-1 requests); clear stale
|
|
98
|
+
options if a replacement fails. Existing prop
|
|
99
|
+
types and FormField/table wrappers remain client-only; separate `ComboboxServer*Props` types are
|
|
100
|
+
exported for direct server Combobox use. See Combobox.mdx.
|
|
101
|
+
|
|
84
102
|
## Testing
|
|
85
103
|
|
|
86
104
|
```tsx
|
|
@@ -11,7 +11,7 @@ Which pattern to use, and for what. Patterns with a dedicated doc link to
|
|
|
11
11
|
| [Forms](../../patterns/Forms/Forms.mdx) | Labeled fields in a `Modal`, `RightPanel`, or page. Unlabeled controls (search, toolbars) stay as `Input` |
|
|
12
12
|
| Stack / HStack | A heading above content, a cancel/save pair, a title next to an add button, or a wrapping row of tags |
|
|
13
13
|
| EmptyStates | A list, table, or card has no items yet and you want to invite adding one |
|
|
14
|
-
| Charting |
|
|
14
|
+
| Charting | Build charts with `recharts` and the experimental `@persona/design-system/components/Chart` pieces; colour series from the chart palettes, never hex |
|
|
15
15
|
| Indicators | A record’s open, pending, completed, or failed state next to other content. An in-page notice the user shouldn’t miss (success, warning, error). Use `Toast` if it can auto-dismiss |
|
|
16
16
|
| [SingleColumnLayout](../../patterns/PageLayout/SingleColumnLayout.mdx) | One page column under `PageHeader`, with optional tabs and a page notice. `width="wide"` uses the fluid grid |
|
|
17
17
|
| [SplitColumnLayout](../../patterns/PageLayout/SplitColumnLayout.mdx) | An 8:4 main and aside page. Same optional regions. Stacks main then aside below 768px |
|
|
@@ -20,7 +20,7 @@ Which pattern to use, and for what. Patterns with a dedicated doc link to
|
|
|
20
20
|
| LayoutLoadingShimmer | Filling space while content loads |
|
|
21
21
|
| [Panels](../../patterns/Panels/Panels.mdx) | Use `RightPanel` when the page should stay visible. Use `Modal` when the task needs full attention. Never a custom drawer. |
|
|
22
22
|
| [WizardModal](../../patterns/WizardModal/WizardModal.mdx) | A linear multi-step task behind a page overlay. |
|
|
23
|
-
| [Versioned resources: Page header](../../patterns/VersionedResources/VersionedResourcePageHeader.mdx) | Header order for a versioned resource (template,
|
|
23
|
+
| [Versioned resources: Page header](../../patterns/VersionedResources/VersionedResourcePageHeader.mdx) | Header order for a versioned resource (template, policy, workflow): breadcrumbs → object status (icon) → deployment status (no icon) → version status (no icon) → actions (optional Last updated caption, then buttons, one primary rightmost). A code example, not a component: copy the stories and compose `PageHeader` + `StatusIndicator`; there is nothing to import |
|
|
24
24
|
| [CardGrouping](../../patterns/CardGrouping/CardGrouping.mdx) | Distinct records as cards in collapsible groups, for a clean view rather than querying or filtering. Optional controls sit under the list description |
|
|
25
25
|
|
|
26
26
|
|
|
@@ -299,44 +299,61 @@ For `Card.Section`, pass `empty={true}` to show the built-in empty state.
|
|
|
299
299
|
|
|
300
300
|
## Charting
|
|
301
301
|
|
|
302
|
-
|
|
303
|
-
|
|
302
|
+
Experimental (beta). Build charts with `recharts` (an optional peer, 2.x or 3.x) and the pieces in
|
|
303
|
+
`@persona/design-system/components/Chart`. Full usage guidance comes later; until then see Storybook
|
|
304
|
+
**Charts → Design** (Chart frame, Elements, Themes) and **Charts → Chart types** (Bar chart, Line
|
|
305
|
+
chart).
|
|
304
306
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
ChartingColors.Sequential
|
|
307
|
+
- `ChartFrame`: legend and plot layout, full width, 300px plot height by default.
|
|
308
|
+
- `ChartLegend`: series key; with `onToggle` (and `useChartSeriesVisibility`) it shows and hides series.
|
|
309
|
+
- `ChartPopover`: the content of a Recharts `<Tooltip>`.
|
|
310
|
+
- `useChartStyles()`: PDS props for Recharts' grid, axes and tooltip cursor in a hand-built chart.
|
|
311
|
+
- `useChartColors()` / `resolveSeriesColors()`: series colours from a chart palette.
|
|
311
312
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
313
|
+
```tsx
|
|
314
|
+
import {
|
|
315
|
+
ChartFrame,
|
|
316
|
+
ChartLegend,
|
|
317
|
+
ChartPopover,
|
|
318
|
+
CHART_PLOT_MARGIN,
|
|
319
|
+
useChartColors,
|
|
320
|
+
useChartStyles,
|
|
321
|
+
} from '@persona/design-system/components/Chart';
|
|
322
|
+
import { Bar, BarChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';
|
|
323
|
+
|
|
324
|
+
const colors = useChartColors().resolve(series); // { [series.key]: Color }
|
|
325
|
+
const styles = useChartStyles();
|
|
326
|
+
const items = series.map((s) => ({ ...s, color: colors[s.key] }));
|
|
327
|
+
|
|
328
|
+
<ChartFrame aria-label='Tickets by status' legend={<ChartLegend items={items} />}>
|
|
329
|
+
<ResponsiveContainer width='100%' height='100%'>
|
|
330
|
+
<BarChart data={data} margin={CHART_PLOT_MARGIN}>
|
|
331
|
+
<Tooltip cursor={styles.barCursor} content={<ChartPopover series={items} />} />
|
|
332
|
+
<CartesianGrid {...styles.grid} />
|
|
333
|
+
<XAxis dataKey='month' {...styles.xAxis} />
|
|
334
|
+
<YAxis {...styles.yAxis} />
|
|
335
|
+
{items.map((s) => <Bar key={s.key} dataKey={s.key} name={s.label} fill={s.color} />)}
|
|
336
|
+
</BarChart>
|
|
337
|
+
</ResponsiveContainer>
|
|
338
|
+
</ChartFrame>
|
|
315
339
|
```
|
|
316
340
|
|
|
317
|
-
###
|
|
341
|
+
### Palettes
|
|
318
342
|
|
|
319
|
-
| Data
|
|
320
|
-
|
|
321
|
-
|
|
|
322
|
-
|
|
|
343
|
+
| Data | Palette (`useChartColors(palette)`) | Colours |
|
|
344
|
+
|------|-------------------------------------|---------|
|
|
345
|
+
| Distinct, unordered series (default) | `'qualitative'` | 12 |
|
|
346
|
+
| Ordered magnitude in one hue | `'sequentialMono'` | 8 |
|
|
347
|
+
| Values diverging around a midpoint | `'sequentialDivergent'` | 10 |
|
|
323
348
|
|
|
324
|
-
|
|
349
|
+
Take Qualitative colours in palette order: the order is tuned for readability. Override a series
|
|
350
|
+
only with a Persona token, `chartColor(Color.X)` or a `{ light, dark }` pair of tokens; never hex.
|
|
325
351
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
<PieChart>
|
|
331
|
-
<Pie data={data} dataKey="value">
|
|
332
|
-
{data.map((_, i) => (
|
|
333
|
-
<Cell key={i} fill={ChartingColors.Categorical[i % ChartingColors.Categorical.length]} />
|
|
334
|
-
))}
|
|
335
|
-
</Pie>
|
|
336
|
-
</PieChart>
|
|
337
|
-
```
|
|
352
|
+
**Legacy:** `ChartingColors.Sequential` and `ChartingColors.Categorical` from
|
|
353
|
+
`@persona/design-tokens` are deprecated for new charts. Existing charts may keep them until they
|
|
354
|
+
move to the palettes above.
|
|
338
355
|
|
|
339
356
|
**Anti-patterns:**
|
|
340
|
-
- Hardcoding hex values
|
|
341
|
-
-
|
|
342
|
-
- Using `
|
|
357
|
+
- Hardcoding hex values for series colours
|
|
358
|
+
- Picking Qualitative colours out of order
|
|
359
|
+
- Using `'sequentialMono'` for unordered categories
|