@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
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { a as styled, r as css } from "../../styledComponentsInterop-Cs5CCPRy.mjs";
|
|
2
2
|
import { semanticColor, semanticOnly, semanticTokens } from "../../lib/semanticColor.mjs";
|
|
3
3
|
import { i as Paragraph } from "../../Text-D0vEReED.mjs";
|
|
4
|
-
import { a as Tooltip } from "../../Tooltip-
|
|
4
|
+
import { a as Tooltip } from "../../Tooltip-CVBxc1yf.mjs";
|
|
5
5
|
import { opacityOf, withAlpha } from "../../lib/color.mjs";
|
|
6
6
|
import useControlled from "../../lib/useControlled.mjs";
|
|
7
7
|
import { focusStyle } from "../../mixins/focus.mjs";
|
|
8
8
|
import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
|
|
9
9
|
import { n as useFormField, t as FormControlContext } from "../../useFormField-pOVkb5BK.mjs";
|
|
10
|
-
import { t as Checkbox } from "../../Checkbox-
|
|
10
|
+
import { t as Checkbox } from "../../Checkbox-BAh-wF_F.mjs";
|
|
11
11
|
import { Children, cloneElement, isValidElement, useContext } from "react";
|
|
12
12
|
import { Color, Spacing, Typography } from "@persona/design-tokens";
|
|
13
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { a as styled, r as css } from "../../styledComponentsInterop-Cs5CCPRy.mjs";
|
|
2
2
|
import { semanticColor, semanticOnly } from "../../lib/semanticColor.mjs";
|
|
3
3
|
import { paragraphMixins } from "../../mixins/text.mjs";
|
|
4
|
-
import
|
|
4
|
+
import "../../variables/transitions.mjs";
|
|
5
|
+
import { i as FloatingTooltip } from "../../Tooltip-CVBxc1yf.mjs";
|
|
5
6
|
import { focusStyle } from "../../mixins/focus.mjs";
|
|
6
7
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
7
8
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
@@ -129,7 +130,7 @@ const SliderTrack = styled.div`
|
|
|
129
130
|
height: 4px;
|
|
130
131
|
border-radius: 4px;
|
|
131
132
|
outline: none;
|
|
132
|
-
transition: background 0.
|
|
133
|
+
transition: background ${"200ms"} ${"cubic-bezier(0.4, 0, 0.2, 1)"};
|
|
133
134
|
|
|
134
135
|
/* Disable clicks on slide bar */
|
|
135
136
|
pointer-events: none;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/Slider/SliderThumb.tsx","../../../src/components/Slider/Slider.tsx","../../../src/components/Slider/SliderRHF.tsx"],"sourcesContent":["import {\n autoUpdate,\n type ElementProps,\n flip,\n type FloatingContext,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useSliderThumb } from '@react-aria/slider';\nimport { mergeProps } from '@react-aria/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport type { SliderState } from '@react-stately/slider';\nimport { debounce } from 'lodash-es';\nimport {\n type OutputHTMLAttributes,\n type RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\n\nimport { FloatingTooltip } from '#src/components/Tooltip';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { focusStyle } from '#src/mixins/focus';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst Tooltip = styled(FloatingTooltip)`\n ${paragraphMixins.sm};\n`;\n\nconst Thumb = styled('div')<{ disabled?: boolean }>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-thumb: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n background: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputSurfaceDisabled', Color.BackgroundInputDisabled)\n : semanticColor(theme, 'InputSurfaceInverseStatic', Color.BackgroundInputDefault)};\n cursor: ${(props) => (props.disabled ? 'inherit' : 'pointer')};\n border-radius: 50%;\n border: 1px solid\n ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'BorderDefault', Color.BorderInputDisabled)};\n /* Enable clicks on thumb */\n pointer-events: auto;\n\n &[data-focused] {\n ${focusStyle}\n /* Extra pixel of size to overlap into the outline, fixing a small visual bug */\n box-shadow: 0 0 0 2px var(--background-color-behind-thumb);\n }\n`;\n\ninterface SliderThumbProps {\n state: SliderState;\n trackRef: RefObject<HTMLElement>;\n index: number;\n outputProps: OutputHTMLAttributes<HTMLOutputElement>;\n hideTooltips?: boolean;\n}\n\ninterface UsePressedOptions {\n delay?: number;\n}\n\nconst usePressed = (context: FloatingContext, options?: UsePressedOptions): ElementProps => {\n const closeHandler = useMemo(\n () => debounce(() => context.onOpenChange(false), options?.delay ?? 500),\n [],\n );\n return {\n reference: {\n onPointerDown: () => {\n context.onOpenChange(true);\n },\n onPointerUp: () => {\n closeHandler();\n },\n },\n };\n};\n\nconst SliderThumb = ({ state, trackRef, index, outputProps, hideTooltips }: SliderThumbProps) => {\n const inputRef = useRef(null);\n const { thumbProps, inputProps } = useSliderThumb(\n {\n index,\n trackRef,\n inputRef,\n },\n state,\n );\n\n const { focusProps, isFocused } = useFocusRing();\n\n const [open, setOpen] = useState(false);\n\n const { x, y, refs, strategy, context } = useFloating({\n placement: 'top',\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n });\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: 'tooltip' }),\n useDismiss(context),\n usePressed(context),\n ]);\n\n useEffect(() => {\n setOpen(isFocused);\n }, [isFocused]);\n\n return (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n left: `${state.getThumbPercent(index) * 100}%`,\n }}\n >\n {open && !hideTooltips && (\n <Tooltip\n {...mergeProps(\n getFloatingProps({\n ref: refs.setFloating,\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n }),\n outputProps,\n )}\n >\n {state.getThumbValueLabel(index)}\n </Tooltip>\n )}\n <Thumb\n {...mergeProps(\n thumbProps,\n getReferenceProps({\n ref: refs.setReference,\n }),\n isFocused ? { 'data-focused': true } : undefined,\n )}\n >\n <VisuallyHidden>\n <input ref={inputRef} {...mergeProps(inputProps, focusProps)} />\n </VisuallyHidden>\n </Thumb>\n </div>\n );\n};\n\nexport default SliderThumb;\n","import type { NumberFormatOptions } from '@internationalized/number';\nimport { useNumberFormatter } from '@react-aria/i18n';\nimport { useSlider } from '@react-aria/slider';\nimport { useSliderState } from '@react-stately/slider';\nimport type { SliderProps as SliderPropsType } from '@react-types/slider';\nimport { type FocusEventHandler, type ReactNode, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\n\nimport SliderThumb from '#src/components/Slider/SliderThumb';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst SliderContainer = styled.div`\n display: flex;\n align-items: center;\n touch-action: none;\n position: relative;\n`;\n\nconst SliderLabel = styled.div<{ $disabled?: boolean }>`\n ${paragraphMixins.md};\n ${({ $disabled }) =>\n semanticOnly((tokens) => `color: ${$disabled ? tokens.FgDisabled : tokens.FgPrimary};`)}\n &:first-of-type {\n padding-right: ${Spacing[2]};\n }\n\n &:last-of-type {\n padding-left: ${Spacing[2]};\n }\n`;\n\ntype SliderTrackProps = {\n track?: boolean;\n percents: number[];\n disabled?: boolean;\n};\nconst SliderTrack = styled.div<SliderTrackProps>`\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 4px;\n outline: none;\n transition: background 0.2s;\n\n /* Disable clicks on slide bar */\n pointer-events: none;\n\n ${({ theme, percents, track, disabled }) => {\n const activeColor = disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'InputBorderAccent', Color.CoreBlue700);\n const trackColor = semanticColor(theme, 'BorderSubtle', Color.BorderDivider);\n\n if (track === false) {\n return css`\n background: ${trackColor};\n `;\n }\n\n if (percents.length === 2) {\n return css`\n background: linear-gradient(\n to right,\n ${trackColor} 0%,\n ${trackColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[1] * 100}%,\n ${trackColor} ${percents[1] * 100}%,\n ${trackColor} 100%\n );\n `;\n }\n\n const leftColor = activeColor;\n const rightColor = trackColor;\n\n return css`\n background: linear-gradient(\n to right,\n ${leftColor} 0%,\n ${leftColor} ${percents[0] * 100}%,\n ${rightColor} ${percents[0] * 100}%,\n ${rightColor} 100%\n );\n `;\n }}\n`;\n\nexport interface SliderProps<T = number | number[]> {\n min?: number;\n minLabel?: ReactNode;\n max?: number;\n maxLabel?: ReactNode;\n onChange?: (value: T) => void;\n value?: T;\n defaultValue?: T;\n step?: number;\n\n /**\n * Show labels on ends of track\n */\n showLabels?: boolean;\n\n /**\n * Track style\n */\n track?: boolean;\n\n /**\n * Hide tooltips on slider thumbs\n */\n hideTooltips?: boolean;\n width?: number | 'auto';\n disabled?: boolean;\n formatOptions?: NumberFormatOptions;\n\n id?: string;\n className?: string;\n name?: string;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport const Slider = ({\n minLabel,\n maxLabel,\n showLabels,\n track,\n width,\n hideTooltips,\n className,\n id,\n onBlur,\n ...elemProps\n}: SliderProps) => {\n const { min, max, value, defaultValue, disabled } = elemProps;\n const trackRef = useRef(null);\n const numberFormatter = useNumberFormatter(elemProps.formatOptions);\n\n const ariaElemProps: SliderPropsType = {\n ...elemProps,\n isDisabled: disabled,\n minValue: min,\n maxValue: max,\n value: typeof value === 'number' ? [value] : value,\n defaultValue: typeof defaultValue === 'number' ? [defaultValue] : defaultValue,\n onChange:\n typeof elemProps.onChange !== 'undefined'\n ? (v) => {\n if (Array.isArray(v) && v.length === 1) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v[0]);\n }\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v);\n }\n : undefined,\n };\n\n const state = useSliderState({ ...ariaElemProps, numberFormatter });\n const { groupProps, trackProps, outputProps } = useSlider(ariaElemProps, state, trackRef);\n\n return (\n <SliderContainer\n {...groupProps}\n style={{\n position: 'relative',\n alignItems: 'center',\n width: width ?? 300,\n touchAction: 'none',\n }}\n className={className}\n id={id}\n onBlur={onBlur}\n >\n {showLabels && <SliderLabel $disabled={disabled}>{minLabel ?? min}</SliderLabel>}\n <SliderTrack\n {...trackProps}\n track={track}\n ref={trackRef}\n percents={state.values.map((_v, i) => state.getThumbPercent(i))}\n disabled={disabled}\n >\n {state.values.map((_v, i) => (\n <SliderThumb\n key={`${trackProps.id}_thumb${i}`}\n index={i}\n state={state}\n trackRef={trackRef}\n hideTooltips={hideTooltips}\n outputProps={outputProps}\n />\n ))}\n </SliderTrack>\n {showLabels && <SliderLabel $disabled={disabled}>{maxLabel ?? max}</SliderLabel>}\n </SliderContainer>\n );\n};\n\nexport default Slider;\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { type Control, type FieldValues, useController } from 'react-hook-form';\n\nimport Slider from './Slider';\n\ninterface SliderRHFProps extends ComponentPropsWithoutRef<typeof Slider> {\n control: Control<FieldValues, object>;\n name: string;\n}\n\nconst SliderRHF = ({ control, name: nameProp, defaultValue, ...elemProps }: SliderRHFProps) => {\n const {\n field: { onChange, onBlur, name, value },\n } = useController({\n name: nameProp,\n control,\n rules: { required: true },\n defaultValue,\n });\n\n return <Slider {...elemProps} onBlur={onBlur} onChange={onChange} value={value} name={name} />;\n};\n\nexport default SliderRHF;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/Slider/SliderThumb.tsx","../../../src/components/Slider/Slider.tsx","../../../src/components/Slider/SliderRHF.tsx"],"sourcesContent":["import {\n autoUpdate,\n type ElementProps,\n flip,\n type FloatingContext,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useSliderThumb } from '@react-aria/slider';\nimport { mergeProps } from '@react-aria/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport type { SliderState } from '@react-stately/slider';\nimport { debounce } from 'lodash-es';\nimport {\n type OutputHTMLAttributes,\n type RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\n\nimport { FloatingTooltip } from '#src/components/Tooltip';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { focusStyle } from '#src/mixins/focus';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst Tooltip = styled(FloatingTooltip)`\n ${paragraphMixins.sm};\n`;\n\nconst Thumb = styled('div')<{ disabled?: boolean }>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-thumb: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n background: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputSurfaceDisabled', Color.BackgroundInputDisabled)\n : semanticColor(theme, 'InputSurfaceInverseStatic', Color.BackgroundInputDefault)};\n cursor: ${(props) => (props.disabled ? 'inherit' : 'pointer')};\n border-radius: 50%;\n border: 1px solid\n ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'BorderDefault', Color.BorderInputDisabled)};\n /* Enable clicks on thumb */\n pointer-events: auto;\n\n &[data-focused] {\n ${focusStyle}\n /* Extra pixel of size to overlap into the outline, fixing a small visual bug */\n box-shadow: 0 0 0 2px var(--background-color-behind-thumb);\n }\n`;\n\ninterface SliderThumbProps {\n state: SliderState;\n trackRef: RefObject<HTMLElement>;\n index: number;\n outputProps: OutputHTMLAttributes<HTMLOutputElement>;\n hideTooltips?: boolean;\n}\n\ninterface UsePressedOptions {\n delay?: number;\n}\n\nconst usePressed = (context: FloatingContext, options?: UsePressedOptions): ElementProps => {\n const closeHandler = useMemo(\n () => debounce(() => context.onOpenChange(false), options?.delay ?? 500),\n [],\n );\n return {\n reference: {\n onPointerDown: () => {\n context.onOpenChange(true);\n },\n onPointerUp: () => {\n closeHandler();\n },\n },\n };\n};\n\nconst SliderThumb = ({ state, trackRef, index, outputProps, hideTooltips }: SliderThumbProps) => {\n const inputRef = useRef(null);\n const { thumbProps, inputProps } = useSliderThumb(\n {\n index,\n trackRef,\n inputRef,\n },\n state,\n );\n\n const { focusProps, isFocused } = useFocusRing();\n\n const [open, setOpen] = useState(false);\n\n const { x, y, refs, strategy, context } = useFloating({\n placement: 'top',\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n });\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: 'tooltip' }),\n useDismiss(context),\n usePressed(context),\n ]);\n\n useEffect(() => {\n setOpen(isFocused);\n }, [isFocused]);\n\n return (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n left: `${state.getThumbPercent(index) * 100}%`,\n }}\n >\n {open && !hideTooltips && (\n <Tooltip\n {...mergeProps(\n getFloatingProps({\n ref: refs.setFloating,\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n }),\n outputProps,\n )}\n >\n {state.getThumbValueLabel(index)}\n </Tooltip>\n )}\n <Thumb\n {...mergeProps(\n thumbProps,\n getReferenceProps({\n ref: refs.setReference,\n }),\n isFocused ? { 'data-focused': true } : undefined,\n )}\n >\n <VisuallyHidden>\n <input ref={inputRef} {...mergeProps(inputProps, focusProps)} />\n </VisuallyHidden>\n </Thumb>\n </div>\n );\n};\n\nexport default SliderThumb;\n","import type { NumberFormatOptions } from '@internationalized/number';\nimport { useNumberFormatter } from '@react-aria/i18n';\nimport { useSlider } from '@react-aria/slider';\nimport { useSliderState } from '@react-stately/slider';\nimport type { SliderProps as SliderPropsType } from '@react-types/slider';\nimport { type FocusEventHandler, type ReactNode, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\n\nimport SliderThumb from '#src/components/Slider/SliderThumb';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { paragraphMixins } from '#src/mixins/text';\nimport { TransitionDuration, TransitionEasing } from '#src/variables/transitions';\n\nconst SliderContainer = styled.div`\n display: flex;\n align-items: center;\n touch-action: none;\n position: relative;\n`;\n\nconst SliderLabel = styled.div<{ $disabled?: boolean }>`\n ${paragraphMixins.md};\n ${({ $disabled }) =>\n semanticOnly((tokens) => `color: ${$disabled ? tokens.FgDisabled : tokens.FgPrimary};`)}\n &:first-of-type {\n padding-right: ${Spacing[2]};\n }\n\n &:last-of-type {\n padding-left: ${Spacing[2]};\n }\n`;\n\ntype SliderTrackProps = {\n track?: boolean;\n percents: number[];\n disabled?: boolean;\n};\nconst SliderTrack = styled.div<SliderTrackProps>`\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 4px;\n outline: none;\n transition: background ${TransitionDuration.Fast} ${TransitionEasing.Move};\n\n /* Disable clicks on slide bar */\n pointer-events: none;\n\n ${({ theme, percents, track, disabled }) => {\n const activeColor = disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'InputBorderAccent', Color.CoreBlue700);\n const trackColor = semanticColor(theme, 'BorderSubtle', Color.BorderDivider);\n\n if (track === false) {\n return css`\n background: ${trackColor};\n `;\n }\n\n if (percents.length === 2) {\n return css`\n background: linear-gradient(\n to right,\n ${trackColor} 0%,\n ${trackColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[1] * 100}%,\n ${trackColor} ${percents[1] * 100}%,\n ${trackColor} 100%\n );\n `;\n }\n\n const leftColor = activeColor;\n const rightColor = trackColor;\n\n return css`\n background: linear-gradient(\n to right,\n ${leftColor} 0%,\n ${leftColor} ${percents[0] * 100}%,\n ${rightColor} ${percents[0] * 100}%,\n ${rightColor} 100%\n );\n `;\n }}\n`;\n\nexport interface SliderProps<T = number | number[]> {\n min?: number;\n minLabel?: ReactNode;\n max?: number;\n maxLabel?: ReactNode;\n onChange?: (value: T) => void;\n value?: T;\n defaultValue?: T;\n step?: number;\n\n /**\n * Show labels on ends of track\n */\n showLabels?: boolean;\n\n /**\n * Track style\n */\n track?: boolean;\n\n /**\n * Hide tooltips on slider thumbs\n */\n hideTooltips?: boolean;\n width?: number | 'auto';\n disabled?: boolean;\n formatOptions?: NumberFormatOptions;\n\n id?: string;\n className?: string;\n name?: string;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport const Slider = ({\n minLabel,\n maxLabel,\n showLabels,\n track,\n width,\n hideTooltips,\n className,\n id,\n onBlur,\n ...elemProps\n}: SliderProps) => {\n const { min, max, value, defaultValue, disabled } = elemProps;\n const trackRef = useRef(null);\n const numberFormatter = useNumberFormatter(elemProps.formatOptions);\n\n const ariaElemProps: SliderPropsType = {\n ...elemProps,\n isDisabled: disabled,\n minValue: min,\n maxValue: max,\n value: typeof value === 'number' ? [value] : value,\n defaultValue: typeof defaultValue === 'number' ? [defaultValue] : defaultValue,\n onChange:\n typeof elemProps.onChange !== 'undefined'\n ? (v) => {\n if (Array.isArray(v) && v.length === 1) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v[0]);\n }\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v);\n }\n : undefined,\n };\n\n const state = useSliderState({ ...ariaElemProps, numberFormatter });\n const { groupProps, trackProps, outputProps } = useSlider(ariaElemProps, state, trackRef);\n\n return (\n <SliderContainer\n {...groupProps}\n style={{\n position: 'relative',\n alignItems: 'center',\n width: width ?? 300,\n touchAction: 'none',\n }}\n className={className}\n id={id}\n onBlur={onBlur}\n >\n {showLabels && <SliderLabel $disabled={disabled}>{minLabel ?? min}</SliderLabel>}\n <SliderTrack\n {...trackProps}\n track={track}\n ref={trackRef}\n percents={state.values.map((_v, i) => state.getThumbPercent(i))}\n disabled={disabled}\n >\n {state.values.map((_v, i) => (\n <SliderThumb\n key={`${trackProps.id}_thumb${i}`}\n index={i}\n state={state}\n trackRef={trackRef}\n hideTooltips={hideTooltips}\n outputProps={outputProps}\n />\n ))}\n </SliderTrack>\n {showLabels && <SliderLabel $disabled={disabled}>{maxLabel ?? max}</SliderLabel>}\n </SliderContainer>\n );\n};\n\nexport default Slider;\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { type Control, type FieldValues, useController } from 'react-hook-form';\n\nimport Slider from './Slider';\n\ninterface SliderRHFProps extends ComponentPropsWithoutRef<typeof Slider> {\n control: Control<FieldValues, object>;\n name: string;\n}\n\nconst SliderRHF = ({ control, name: nameProp, defaultValue, ...elemProps }: SliderRHFProps) => {\n const {\n field: { onChange, onBlur, name, value },\n } = useController({\n name: nameProp,\n control,\n rules: { required: true },\n defaultValue,\n });\n\n return <Slider {...elemProps} onBlur={onBlur} onChange={onChange} value={value} name={name} />;\n};\n\nexport default SliderRHF;\n"],"mappings":"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"}
|
|
@@ -12,14 +12,15 @@ import { Z_INDICES } from "../../lib/zindex.mjs";
|
|
|
12
12
|
import { focusStyle } from "../../mixins/focus.mjs";
|
|
13
13
|
import "../../variables/effect.mjs";
|
|
14
14
|
import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
|
|
15
|
-
import { n as Button } from "../../IconButton-
|
|
15
|
+
import { n as Button } from "../../IconButton-Bj1fry_K.mjs";
|
|
16
16
|
import { n as useFormField } from "../../useFormField-pOVkb5BK.mjs";
|
|
17
17
|
import Input_default from "../Input/index.mjs";
|
|
18
|
-
import { n as ErrorText } from "../../FormControl-
|
|
19
|
-
import { m as FormField, n as TableBoxField, p as splitOutFormFieldProps } from "../../FormField-
|
|
18
|
+
import { n as ErrorText } from "../../FormControl-BoKGiWdQ.mjs";
|
|
19
|
+
import { m as FormField, n as TableBoxField, p as splitOutFormFieldProps } from "../../FormField-yYJFkJ6R.mjs";
|
|
20
20
|
import PillType from "./PillType.mjs";
|
|
21
21
|
import { ErrorMessageByKind, NodeType, isASTChainNode, isASTContainerNode, isMethodChainNode } from "./parser/smart-text/types.mjs";
|
|
22
|
-
import {
|
|
22
|
+
import { enclosingExpr, findAll, resolve } from "./parser/tree.mjs";
|
|
23
|
+
import { safeParse } from "./parser/safe-parse.mjs";
|
|
23
24
|
import { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
24
25
|
import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
|
|
25
26
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -28,44 +29,6 @@ import { ArrowLeftIcon as ArrowLeftIcon$1 } from "@persona/icons/12px";
|
|
|
28
29
|
import { FocusScope, mergeProps, useComboBox, useDialog, useFocusManager, useInteractOutside, useListBox, useOption, usePopover } from "react-aria";
|
|
29
30
|
import { Item, useComboBoxState } from "react-stately";
|
|
30
31
|
import { createPortal } from "react-dom";
|
|
31
|
-
//#region src/components/SmartTextInput/parser/tree.ts
|
|
32
|
-
function getChildren(node) {
|
|
33
|
-
return node.children ?? [];
|
|
34
|
-
}
|
|
35
|
-
function findAll(node, type, acc = []) {
|
|
36
|
-
if (node.type === type) acc.push(node);
|
|
37
|
-
getChildren(node).forEach((c) => findAll(c, type, acc));
|
|
38
|
-
return acc;
|
|
39
|
-
}
|
|
40
|
-
function resolve(node, charIdx) {
|
|
41
|
-
if (charIdx < node.start || charIdx >= Math.max(node.end, node.start + 1)) return null;
|
|
42
|
-
const children = getChildren(node);
|
|
43
|
-
for (let i = 0; i < children.length; i++) {
|
|
44
|
-
const hit = resolve(children[i], charIdx);
|
|
45
|
-
if (hit) return hit;
|
|
46
|
-
}
|
|
47
|
-
return node;
|
|
48
|
-
}
|
|
49
|
-
function findAncestor(root, target, pred) {
|
|
50
|
-
function walk(n, ancestors) {
|
|
51
|
-
if (n === target) {
|
|
52
|
-
for (let i = ancestors.length - 1; i >= 0; i--) if (pred(ancestors[i])) return [true, ancestors[i]];
|
|
53
|
-
return [true, null];
|
|
54
|
-
}
|
|
55
|
-
const children = getChildren(n);
|
|
56
|
-
for (let j = 0; j < children.length; j++) {
|
|
57
|
-
const [found, result] = walk(children[j], ancestors.concat([n]));
|
|
58
|
-
if (found) return [true, result];
|
|
59
|
-
}
|
|
60
|
-
return [false, null];
|
|
61
|
-
}
|
|
62
|
-
const [, result] = walk(root, []);
|
|
63
|
-
return result;
|
|
64
|
-
}
|
|
65
|
-
function enclosingExpr(root, node) {
|
|
66
|
-
return findAncestor(root, node, (a) => a.type === NodeType.Handlebars || a.type === NodeType.Code);
|
|
67
|
-
}
|
|
68
|
-
//#endregion
|
|
69
32
|
//#region src/components/SmartTextInput/HighlightedText.tsx
|
|
70
33
|
const LoadingIndicator = styled(LoaderIcon)`
|
|
71
34
|
color: ${Color.BorderIconSecondary};
|
|
@@ -374,40 +337,7 @@ let ValueType = /* @__PURE__ */ function(ValueType) {
|
|
|
374
337
|
return ValueType;
|
|
375
338
|
}({});
|
|
376
339
|
//#endregion
|
|
377
|
-
//#region src/components/SmartTextInput/parser/safe-parse.ts
|
|
378
|
-
/**
|
|
379
|
-
* Parses the input string into an ASTNode tree.
|
|
380
|
-
*/
|
|
381
|
-
function safeParse(input, options) {
|
|
382
|
-
try {
|
|
383
|
-
return peg$parse(input, {
|
|
384
|
-
startRule: "Root",
|
|
385
|
-
strict: false,
|
|
386
|
-
...options
|
|
387
|
-
});
|
|
388
|
-
} catch {
|
|
389
|
-
return {
|
|
390
|
-
type: NodeType.Root,
|
|
391
|
-
start: 0,
|
|
392
|
-
end: input.length,
|
|
393
|
-
children: [{
|
|
394
|
-
type: NodeType.Error,
|
|
395
|
-
start: 0,
|
|
396
|
-
end: input.length
|
|
397
|
-
}]
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
//#endregion
|
|
402
340
|
//#region src/components/SmartTextInput/utils.ts
|
|
403
|
-
const createMeasureCanvas = () => {
|
|
404
|
-
const canvas = document.createElement("canvas");
|
|
405
|
-
return [canvas, () => {
|
|
406
|
-
canvas.width = 0;
|
|
407
|
-
canvas.height = 0;
|
|
408
|
-
canvas.remove();
|
|
409
|
-
}];
|
|
410
|
-
};
|
|
411
341
|
const safeCursorIdx = (cursorIdx, ast) => {
|
|
412
342
|
const idx = cursorIdx ?? ast.end;
|
|
413
343
|
return Math.max(Math.min(idx, ast.end), 0);
|
|
@@ -442,7 +372,7 @@ function canExitToInterpolation(value, allowedValueType) {
|
|
|
442
372
|
const syncScroll = (from, to) => {
|
|
443
373
|
if (from.current && to.current) to.current.scrollLeft = from.current.scrollLeft;
|
|
444
374
|
};
|
|
445
|
-
|
|
375
|
+
let globalMeasureCanvas;
|
|
446
376
|
/**
|
|
447
377
|
* Scroll the input so the cursor at cursorIdx is visible, then sync the overlay.
|
|
448
378
|
*
|
|
@@ -453,6 +383,7 @@ const [globalMeasureCanvas] = createMeasureCanvas();
|
|
|
453
383
|
const scrollInputToCursor = (inputRef, cursorIdx) => {
|
|
454
384
|
const input = inputRef.current;
|
|
455
385
|
if (!input) return;
|
|
386
|
+
globalMeasureCanvas ??= document.createElement("canvas");
|
|
456
387
|
const ctx = globalMeasureCanvas.getContext("2d");
|
|
457
388
|
if (!ctx) return;
|
|
458
389
|
const style = window.getComputedStyle(input);
|
|
@@ -1351,7 +1282,7 @@ function findSchemaErrors(tree, rootSchema, platformObjectJsonSchema, primitiveU
|
|
|
1351
1282
|
}
|
|
1352
1283
|
const hasIncomplete = findAll(chainNode, NodeType.Error).some((c) => c.wip);
|
|
1353
1284
|
const enclosing = enclosingExpr(tree, chainNode);
|
|
1354
|
-
const inClosedHandlebars = enclosing?.type === NodeType.Handlebars && !enclosing.children?.some((c) => c.type === NodeType.Error && c.kind === "unclosedHandlebars");
|
|
1285
|
+
const inClosedHandlebars = enclosing?.type === NodeType.Handlebars && enclosing.children?.includes(chainNode) && !enclosing.children?.some((c) => c.type === NodeType.Error && c.kind === "unclosedHandlebars");
|
|
1355
1286
|
if (!hasIncomplete && identifierLinks.length > 0 && inClosedHandlebars) {
|
|
1356
1287
|
if (!(prevSchema === UNTYPED_ADDITIONAL_PROPERTY_SCHEMA || isSchemaTypeAllowed(prevSchema, JsonSchemaStringifiableTypes))) {
|
|
1357
1288
|
const lastLink = identifierLinks[identifierLinks.length - 1];
|
|
@@ -1417,7 +1348,7 @@ function getError(leftmostSyntaxError, leftmostIncompleteError, leftmostSchemaEr
|
|
|
1417
1348
|
const useInternalValidation = ({ tree, valueIsEmpty, focused, schemaValidator, onValidationChange, value, valueType }) => {
|
|
1418
1349
|
const errorNodes = findAll(tree, NodeType.Error);
|
|
1419
1350
|
let leftmostSyntaxError = errorNodes.find((e) => e.start < e.end && !e.wip);
|
|
1420
|
-
const leftmostIncompleteError = errorNodes.find((e) => e.start === e.end);
|
|
1351
|
+
const leftmostIncompleteError = errorNodes.find((e) => e.wip || e.start === e.end);
|
|
1421
1352
|
const leftmostSchemaError = useMemo(() => schemaValidator(tree), [tree, schemaValidator]);
|
|
1422
1353
|
if (leftmostSyntaxError != null && valueType === "method-chain" && (value.includes("{{") || value.includes("${"))) leftmostSyntaxError = {
|
|
1423
1354
|
...leftmostSyntaxError,
|