@persona/design-system 0.10.4 → 0.10.5
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 +22 -0
- package/dist/Accordion.d.mts +2 -2
- package/dist/AccordionItem.d.mts +2 -2
- package/dist/{Action-DT8WqfEg.d.mts → Action-Bmo8B-Q3.d.mts} +4 -4
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +3 -3
- package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
- package/dist/ArrayValueControl.d.mts +2 -2
- package/dist/Attribute.d.mts +4 -4
- package/dist/AttributeGrid.d.mts +1 -1
- package/dist/{Badge-Bvn3afds.mjs → Badge-8YzapjWf.mjs} +4 -4
- package/dist/Badge-8YzapjWf.mjs.map +1 -0
- package/dist/Badge.d.mts +1 -1
- package/dist/Banner.d.mts +1 -1
- package/dist/BooleanValueControl.d.mts +2 -2
- package/dist/BottomPanel.d.mts +1 -1
- package/dist/{Breadcrumb-CA0vAzUN.d.mts → Breadcrumb-DnY8n3EL.d.mts} +2 -2
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-47jYLqNP.d.mts → Breadcrumbs-DRu_JfdI.d.mts} +3 -3
- package/dist/{Breadcrumbs-gRAsKF4R.mjs → Breadcrumbs-Dft2TR4v.mjs} +12 -12
- package/dist/Breadcrumbs-Dft2TR4v.mjs.map +1 -0
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-CyjqQa5v.d.mts → Button-Cg8KyT5M.d.mts} +5 -5
- package/dist/Button.d.mts +1 -1
- package/dist/ButtonGroup.d.mts +1 -1
- package/dist/{Calendar-CkjYG7Mj.d.mts → Calendar-D-6WOLJ1.d.mts} +2 -2
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +2 -2
- package/dist/CalendarCell.d.mts +1 -1
- package/dist/CalendarGrid.d.mts +1 -1
- package/dist/{Card-CzRHVUFo.d.mts → Card-CfECLwQ6.d.mts} +5 -5
- package/dist/{Card-BXNxWX5C.mjs → Card-DuQHyroh.mjs} +7 -7
- package/dist/Card-DuQHyroh.mjs.map +1 -0
- package/dist/Card.d.mts +1 -1
- package/dist/Card2.d.mts +1 -1
- package/dist/CardGrouping.d.mts +3 -3
- package/dist/{CardV2-Dp4eHSE-.mjs → CardV2-BRJbRSts.mjs} +14 -14
- package/dist/CardV2-BRJbRSts.mjs.map +1 -0
- package/dist/{Checkbox-BaJ-dGdX.mjs → Checkbox-Dr4LMKHV.mjs} +7 -7
- package/dist/Checkbox-Dr4LMKHV.mjs.map +1 -0
- package/dist/{Checkbox-B2MZShdu.d.mts → Checkbox-ZywrdT_h.d.mts} +2 -2
- package/dist/Checkbox.d.mts +1 -1
- package/dist/{CheckboxGroupField-BrPGNIyD.d.mts → CheckboxGroupField-UHpA38U5.d.mts} +4 -4
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/ChoicesValueControl.d.mts +2 -2
- package/dist/CodeHighlight.d.mts +1 -1
- package/dist/{Combobox-D0dMN5eY.d.mts → Combobox-BXkcQ2aY.d.mts} +4 -4
- package/dist/{Combobox-CBM-oY-e.mjs → Combobox-DQxaOCLA.mjs} +18 -18
- package/dist/Combobox-DQxaOCLA.mjs.map +1 -0
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-BlNi9OnF.d.mts → ComboboxBase-D2rDQHYZ.d.mts} +8 -8
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-DbTYO-Yz.d.mts → ComboboxMultiSelect-CrvB6ap5.d.mts} +3 -3
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-Cd6VYdwr.d.mts → ComboboxSingleSelect-Dp0iTdDO.d.mts} +5 -5
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-D9egXqY_.d.mts → CompactBar-zYfXjFmn.d.mts} +4 -4
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-CidT_cE9.mjs → ConfigFormGroup-BCTWCws5.mjs} +5 -5
- package/dist/ConfigFormGroup-BCTWCws5.mjs.map +1 -0
- package/dist/ConfigFormGroup.d.mts +1 -1
- package/dist/{ControlBar-RIz-xjxs.d.mts → ControlBar-kJ_eWf8f.d.mts} +3 -3
- package/dist/ControlBar.d.mts +1 -1
- package/dist/{DataTable-D15C5lfd.d.mts → DataTable-C000E74h.d.mts} +7 -7
- package/dist/{DataTable-DQ8axNfo.mjs → DataTable-DEJHWrsy.mjs} +25 -25
- package/dist/DataTable-DEJHWrsy.mjs.map +1 -0
- package/dist/DataTable.d.mts +1 -1
- package/dist/{DateField-CwSq77Ri.d.mts → DateField-g7malFm-.d.mts} +3 -3
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-DRhY_0st.d.mts → DatePicker-8kUpFFh8.d.mts} +3 -3
- package/dist/{DatePicker-D0cvVbzq.mjs → DatePicker-D-_ibUd1.mjs} +20 -20
- package/dist/DatePicker-D-_ibUd1.mjs.map +1 -0
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-CLuBLF1q.d.mts → DateRangePicker-Nv4uNuIW.d.mts} +4 -4
- package/dist/DateRangePicker.d.mts +1 -1
- package/dist/DateRangeValueControl.d.mts +3 -3
- package/dist/DateValueControl.d.mts +2 -2
- package/dist/{DropdownButton-5oNcpsOq.mjs → DropdownButton-BiFRlSVD.mjs} +4 -4
- package/dist/DropdownButton-BiFRlSVD.mjs.map +1 -0
- package/dist/DropdownButton.d.mts +3 -3
- package/dist/{DropdownMenu-nxFNS1kH.d.mts → DropdownMenu-CQbS7ML5.d.mts} +3 -3
- package/dist/{DropdownMenu-CedsmO5h.mjs → DropdownMenu-Q8S-9rXm.mjs} +4 -4
- package/dist/DropdownMenu-Q8S-9rXm.mjs.map +1 -0
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-DH0fzeGf.d.mts → ErrorProps-Cy-APmdC.d.mts} +2 -2
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-B5E-GN91.d.mts → FieldRegistry-a44G08fS.d.mts} +3 -3
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-BQWpTi2b.d.mts → FilterBar-BpMguIXl.d.mts} +5 -5
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +3 -3
- package/dist/FilterPill.d.mts +2 -2
- package/dist/FilterPopover.d.mts +2 -2
- package/dist/FloatValueControl.d.mts +2 -2
- package/dist/{FloatingActionBar-CpvLefPm.d.mts → FloatingActionBar-DPA9v_yH.d.mts} +2 -2
- package/dist/FloatingActionBar.d.mts +1 -1
- package/dist/FloatingPanel.d.mts +1 -1
- package/dist/FloatingPanelContext.d.mts +1 -1
- package/dist/FloatingPanelRenderer.d.mts +1 -1
- package/dist/FloatingToolbar.d.mts +27 -0
- package/dist/{FormControl-C4CiA0H-.mjs → FormControl-BztNXLn6.mjs} +7 -7
- package/dist/FormControl-BztNXLn6.mjs.map +1 -0
- package/dist/{FormControl-DEG_0oXt.d.mts → FormControl-TkYMZeBd.d.mts} +3 -3
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +2 -2
- package/dist/{FormField-mLbXDJ9B.d.mts → FormField-PBo1ctY8.d.mts} +3 -3
- package/dist/{FormField-C0cd1zVd.mjs → FormField-g1zQFM9T.mjs} +22 -22
- package/dist/FormField-g1zQFM9T.mjs.map +1 -0
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-DXVkhyNQ.mjs → Grid-BtTuj5mR.mjs} +5 -5
- package/dist/Grid-BtTuj5mR.mjs.map +1 -0
- package/dist/Grid.d.mts +1 -1
- package/dist/GridItem.d.mts +1 -1
- package/dist/{Header-ayDu4VWE.d.mts → Header-fwlbzxYx.d.mts} +2 -2
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-BB9Vznnx.d.mts → HelperTooltip-BLfPfJRN.d.mts} +3 -3
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/HighlightedText.d.mts +3 -3
- package/dist/{HoverCopyableField-D-BubaRd.mjs → HoverCopyableField-CW7Jxmni.mjs} +8 -8
- package/dist/HoverCopyableField-CW7Jxmni.mjs.map +1 -0
- package/dist/HoverCopyableField.d.mts +1 -1
- package/dist/{I18nContext-TXS9M8t5.d.mts → I18nContext-EPmbUprm.d.mts} +3 -3
- package/dist/I18nContext.d.mts +1 -1
- package/dist/{IconButton-HWx5Hlmi.mjs → IconButton-DftINsp7.mjs} +8 -8
- package/dist/IconButton-DftINsp7.mjs.map +1 -0
- package/dist/{IconButton-Bigvu1Q4.d.mts → IconButton-KhCwTwPx.d.mts} +3 -3
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageThumbnail.d.mts +1 -1
- package/dist/ImageTile.d.mts +2 -2
- package/dist/IndexTableLayout.d.mts +6 -6
- package/dist/InlineCombobox.d.mts +2 -2
- package/dist/InlineInput.d.mts +2 -2
- package/dist/{Input-Dap055xf.mjs → Input-DtO3qMnE.mjs} +7 -7
- package/dist/Input-DtO3qMnE.mjs.map +1 -0
- package/dist/{Input-Bg4bi6VZ.d.mts → Input-QNjbGo38.d.mts} +4 -4
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-Bl-G826g.d.mts → InputProps-BT7-RfnD.d.mts} +3 -3
- package/dist/InputProps.d.mts +1 -1
- package/dist/{Inserter-BKVrJ4M5.d.mts → Inserter-BnQVEqHV.d.mts} +2 -2
- package/dist/Inserter.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +2 -2
- package/dist/LayoutLoadingShimmer.d.mts +1 -1
- package/dist/LayoutLoadingSpinner.d.mts +1 -1
- package/dist/{Link-Cf__H8gD.mjs → Link-DKYmdL9t.mjs} +4 -4
- package/dist/Link-DKYmdL9t.mjs.map +1 -0
- package/dist/Link.d.mts +2 -2
- package/dist/{ListBox-eoyBHtnJ.mjs → ListBox-CDG0EAPg.mjs} +14 -14
- package/dist/ListBox-CDG0EAPg.mjs.map +1 -0
- package/dist/{ListBox-CXFI-0nG.d.mts → ListBox-D9SYTzOd.d.mts} +4 -4
- package/dist/ListBox.d.mts +1 -1
- package/dist/{ListBoxField-BCOrph2k.d.mts → ListBoxField-CtPDd_Aw.d.mts} +5 -5
- package/dist/ListBoxField.d.mts +1 -1
- package/dist/{LoadingShimmer-Bqjdut7i.mjs → LoadingShimmer-oPIv2ESr.mjs} +3 -3
- package/dist/LoadingShimmer-oPIv2ESr.mjs.map +1 -0
- package/dist/LoadingShimmer.d.mts +2 -2
- package/dist/{LogicRow-8oYRkwz5.d.mts → LogicRow-BWIZ7262.d.mts} +4 -4
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/MatchHighlight.d.mts +1 -1
- package/dist/{Menu-DHnQZ5yN.d.mts → Menu-DizjcMbO.d.mts} +5 -5
- package/dist/{Menu-Dw6Rcpk6.mjs → Menu-EIT_MwK6.mjs} +7 -9
- package/dist/Menu-EIT_MwK6.mjs.map +1 -0
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-DoTyfMem.mjs → MiddleTruncatedText-DicQsLDG.mjs} +5 -5
- package/dist/MiddleTruncatedText-DicQsLDG.mjs.map +1 -0
- package/dist/{Modal-kjUptzg1.mjs → Modal-92O_uW8H.mjs} +10 -10
- package/dist/Modal-92O_uW8H.mjs.map +1 -0
- package/dist/{Modal-BuxggahW.d.mts → Modal-Bhwq1bQJ.d.mts} +3 -3
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-D2j2XHD9.mjs → PageHeader-BzvA_NNt.mjs} +9 -6
- package/dist/PageHeader-BzvA_NNt.mjs.map +1 -0
- package/dist/{PageHeader-CnpDVOck.d.mts → PageHeader-D2QLrS7-.d.mts} +3 -3
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageLayout-fXJW7daI.mjs → PageLayout-DCe3F76N.mjs} +9 -9
- package/dist/PageLayout-DCe3F76N.mjs.map +1 -0
- package/dist/{PageLayout-TBemv7oL.d.mts → PageLayout-DfAbeFIh.d.mts} +2 -2
- package/dist/PageLayout.d.mts +1 -1
- package/dist/{PageLayoutFrame-DzwlkNZ1.d.mts → PageLayoutFrame-CQLREOBH.d.mts} +2 -2
- package/dist/PageLayoutFrame.d.mts +1 -1
- package/dist/{PageSelector-DXCeBUoU.d.mts → PageSelector-QaKYtk6y.d.mts} +4 -4
- package/dist/PageSelector.d.mts +1 -1
- package/dist/PageSizeSelector.d.mts +1 -1
- package/dist/{Pagination-COcFWlha.d.mts → Pagination-DeXorbSK.d.mts} +3 -3
- package/dist/{Pagination-DtK-jbEY.mjs → Pagination-dTsHLVAk.mjs} +13 -13
- package/dist/Pagination-dTsHLVAk.mjs.map +1 -0
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-DueIK287.mjs → Pii-Bvh_kfGN.mjs} +4 -4
- package/dist/Pii-Bvh_kfGN.mjs.map +1 -0
- package/dist/Pii.d.mts +1 -1
- package/dist/{PillShell-DqglbFHe.d.mts → PillShell-B35z66jZ.d.mts} +3 -3
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-BcII7usF.mjs → Popover-DordjYNM.mjs} +5 -5
- package/dist/Popover-DordjYNM.mjs.map +1 -0
- package/dist/Popover.d.mts +2 -2
- package/dist/ProgressBar.d.mts +2 -2
- package/dist/{ProgressIndicator-C5sbFQcd.d.mts → ProgressIndicator-COCwRZfK.d.mts} +2 -2
- package/dist/{ProgressIndicator-CM37EU1B.mjs → ProgressIndicator-ISARECzW.mjs} +3 -3
- package/dist/ProgressIndicator-ISARECzW.mjs.map +1 -0
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{PseudoClassProps-BFFh2-u8.d.mts → PseudoClassProps-D_f-JUT1.d.mts} +2 -2
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-BstZg3DI.mjs → Radio-BlEtetrr.mjs} +5 -5
- package/dist/Radio-BlEtetrr.mjs.map +1 -0
- package/dist/Radio.d.mts +1 -1
- package/dist/{RadioGroup-erKerwSt.mjs → RadioGroup-CMrXmmn4.mjs} +5 -5
- package/dist/RadioGroup-CMrXmmn4.mjs.map +1 -0
- package/dist/{RadioGroup-BxEmipHa.d.mts → RadioGroup-pyGpWhhj.d.mts} +2 -2
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-CK5ArbIQ.d.mts → RangeCalendar-BiugsdSP.d.mts} +3 -3
- package/dist/RangeCalendar.d.mts +1 -1
- package/dist/RangeCalendarPresets.d.mts +2 -2
- package/dist/ResizableVerticalPanel.d.mts +1 -1
- package/dist/ResizeHandle.d.mts +1 -1
- package/dist/RichTextEditor.d.mts +36 -0
- package/dist/RightPanel.d.mts +1 -1
- package/dist/RightPanelLoadingContent.d.mts +1 -1
- package/dist/RightPanelResizeHandle.d.mts +1 -1
- package/dist/{RouterContext-CoDbEb_X.d.mts → RouterContext-BUdfr1it.d.mts} +3 -3
- package/dist/{RouterContext-nPSb55p9.mjs → RouterContext-DAQHKOv6.mjs} +2 -2
- package/dist/RouterContext-DAQHKOv6.mjs.map +1 -0
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-BnIEi8d4.d.mts → RouterLink-BKbfvJcM.d.mts} +3 -3
- package/dist/RouterLink.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +3 -3
- package/dist/RulesPill.d.mts +2 -2
- package/dist/{SearchInput-DLC7-A7K.d.mts → SearchInput-BejaiGsS.d.mts} +3 -3
- package/dist/SearchInput.d.mts +1 -1
- package/dist/Section.d.mts +1 -1
- package/dist/SectionHeading.d.mts +2 -2
- package/dist/{SegmentedControl-DQjIO6iX.mjs → SegmentedControl-D_DA-MU1.mjs} +5 -5
- package/dist/SegmentedControl-D_DA-MU1.mjs.map +1 -0
- package/dist/{SegmentedControl-xjU-2IsJ.d.mts → SegmentedControl-UV03Ujqn.d.mts} +2 -2
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-CSbamhJO.d.mts → Select-Chk5WB1F.d.mts} +4 -4
- package/dist/{Select-BJ9ACmRD.mjs → Select-DkUMz4LG.mjs} +10 -10
- package/dist/Select-DkUMz4LG.mjs.map +1 -0
- package/dist/Select.d.mts +1 -1
- package/dist/SelectionCard.d.mts +1 -1
- package/dist/SelectionCardGroup.d.mts +1 -1
- package/dist/{SingleColumnLayout-CBynMc76.d.mts → SingleColumnLayout-DBo35psH.d.mts} +3 -3
- package/dist/SingleColumnLayout.d.mts +1 -1
- package/dist/Slider.d.mts +1 -1
- package/dist/SliderRHF.d.mts +1 -1
- package/dist/SliderThumb.d.mts +1 -1
- package/dist/SmartTextInput.d.mts +7 -7
- package/dist/SmartTextInputCodeDialog.d.mts +1 -1
- package/dist/SmartTextInputField.d.mts +3 -3
- package/dist/SmartTextInputFunctionDialog.d.mts +5 -5
- package/dist/SmartTextInputListbox.d.mts +3 -3
- package/dist/SmartTextInputPopover.d.mts +2 -2
- package/dist/{Spacer-J_HuhxX2.mjs → Spacer-C4d9Aho6.mjs} +3 -3
- package/dist/Spacer-C4d9Aho6.mjs.map +1 -0
- package/dist/Spacer.d.mts +1 -1
- package/dist/{Spinner-7Camx1vs.mjs → Spinner-CXb-KUs1.mjs} +3 -3
- package/dist/Spinner-CXb-KUs1.mjs.map +1 -0
- package/dist/Spinner.d.mts +1 -1
- package/dist/{SplitColumnLayout-BVzGbEDC.d.mts → SplitColumnLayout-C6m_mwdf.d.mts} +3 -3
- package/dist/SplitColumnLayout.d.mts +1 -1
- package/dist/{Stack-BkC7FCdF.mjs → Stack-Bzom2BTR.mjs} +3 -3
- package/dist/Stack-Bzom2BTR.mjs.map +1 -0
- package/dist/{Stack-BZyboHQl.d.mts → Stack-DrYxBkiF.d.mts} +3 -3
- package/dist/Stack.d.mts +1 -1
- package/dist/{StatusIndicator-Bunn9YLV.mjs → StatusIndicator-pWl1-FLb.mjs} +3 -3
- package/dist/StatusIndicator-pWl1-FLb.mjs.map +1 -0
- package/dist/StatusIndicator.d.mts +1 -1
- package/dist/{Sticker-yhxtIYH8.mjs → Sticker-Bi_fezCO.mjs} +6 -6
- package/dist/Sticker-Bi_fezCO.mjs.map +1 -0
- package/dist/{Sticker-CsUSNIH-.d.mts → Sticker-sIBnBbHD.d.mts} +5 -5
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +2 -2
- package/dist/StyledIconDrag.d.mts +1 -1
- package/dist/SwatchPicker.d.mts +1 -1
- package/dist/Tab.d.mts +2 -2
- package/dist/{TabBar-SX8E9-Bk.mjs → TabBar-DpXYsWgS.mjs} +9 -9
- package/dist/TabBar-DpXYsWgS.mjs.map +1 -0
- package/dist/TabBar.d.mts +1 -1
- package/dist/TabBarContext.d.mts +1 -1
- package/dist/TabBarIconButton.d.mts +1 -1
- package/dist/{Table-CadXF71E.d.mts → Table-BJfcRpMX.d.mts} +2 -2
- package/dist/{Table-BIDaC0uS.mjs → Table-DPi4Dt5H.mjs} +14 -14
- package/dist/Table-DPi4Dt5H.mjs.map +1 -0
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-BKSHNSTo.d.mts → TableBody-CBz2PjA-.d.mts} +2 -2
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-Bn_XZEYd.mjs → TableBox-BfSF36Gy.mjs} +23 -23
- package/dist/TableBox-BfSF36Gy.mjs.map +1 -0
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-Cag3ZYRs.d.mts → TableBoxCell-CwroLAWy.d.mts} +8 -8
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/{TableBoxField-C3Cg6Lv5.d.mts → TableBoxField-B7bHv7uV.d.mts} +6 -6
- package/dist/TableBoxField.d.mts +1 -1
- package/dist/{TableBoxRow-y5ay5lMt.d.mts → TableBoxRow-Dke8B99J.d.mts} +4 -4
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CDdVjAPQ.d.mts → TableBoxRowActions-CkUDVERC.d.mts} +3 -3
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/TableBoxRowContext.d.mts +1 -1
- package/dist/{TableCell-4u5_BgTC.d.mts → TableCell-KHx5JlqZ.d.mts} +3 -3
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-qxoq5abn.mjs → TableControls-BDXOQMr7.mjs} +69 -69
- package/dist/TableControls-BDXOQMr7.mjs.map +1 -0
- package/dist/{TableControls-ETB0Xk5X.d.mts → TableControls-DAjx1TYG.d.mts} +6 -6
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-CzJCMrSe.d.mts → TableControlsContext-BEIvE9qN.d.mts} +3 -3
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-BuCQeDAq.d.mts → TableHead-D5A3bOwt.d.mts} +2 -2
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-DIcQlZps.d.mts → TableHeaderCell-BXgnxPpX.d.mts} +2 -2
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-ScEVdvvA.d.mts → TableLayout-Dy5ht8KO.d.mts} +2 -2
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-lCsvG0a-.d.mts → TableRow-C1iGbNjZ.d.mts} +3 -3
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-BvOlDkJy.d.mts → TableViewConfigurationDropdown-vYnU0d4k.d.mts} +3 -3
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-CALVwnrT.mjs → TechnicalSticker-B_JlBkXZ.mjs} +7 -7
- package/dist/TechnicalSticker-B_JlBkXZ.mjs.map +1 -0
- package/dist/TechnicalSticker.d.mts +1 -1
- package/dist/{Text-CSwFifQF.mjs → Text-D0vEReED.mjs} +3 -3
- package/dist/Text-D0vEReED.mjs.map +1 -0
- package/dist/{Text-RSzei6Se.d.mts → Text-SaoRBdB6.d.mts} +4 -4
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-CaIEBz8d.mjs → TextArea-Dro-HH8O.mjs} +4 -4
- package/dist/TextArea-Dro-HH8O.mjs.map +1 -0
- package/dist/{TextArea-DFn4XuG-.d.mts → TextArea-gtSlghjy.d.mts} +3 -3
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-B0iYaPM1.d.mts → TextUnderlineTooltip-DV61avLv.d.mts} +3 -3
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +2 -2
- package/dist/Toast.d.mts +2 -2
- package/dist/{Toggle-xtPgGaGD.d.mts → Toggle-BlvrM-Cw.d.mts} +2 -2
- package/dist/{Toggle-BsqSNYok.mjs → Toggle-D9MzTIZs.mjs} +7 -7
- package/dist/Toggle-D9MzTIZs.mjs.map +1 -0
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-Blfhi2gT.d.mts → Tooltip-CysnLwST.d.mts} +3 -3
- package/dist/{Tooltip-B-0VRuKT.mjs → Tooltip-YViXzMdm.mjs} +7 -7
- package/dist/Tooltip-YViXzMdm.mjs.map +1 -0
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-BMQmveJG.d.mts → TruncatedText-YcjNG-zP.d.mts} +2 -2
- package/dist/VersionHistory.d.mts +2 -2
- package/dist/{VersionHistoryItem-BExp7oSr.d.mts → VersionHistoryItem-Px3ylMMq.d.mts} +2 -2
- package/dist/VersionHistoryItem.d.mts +1 -1
- package/dist/WizardModal.d.mts +3 -3
- package/dist/{accordionTitleTypography-PMKnfoy0.d.mts → accordionTitleTypography-Dlo2YyWd.d.mts} +3 -3
- package/dist/accordionTitleTypography.d.mts +1 -1
- package/dist/assertNever.d.mts +1 -1
- package/dist/chainTypes-aF5rWav-.d.mts +17 -0
- package/dist/{clientFilterUtils-BqDn44aM.d.mts → clientFilterUtils-DYKgw2Yq.d.mts} +3 -3
- package/dist/clientFilterUtils.d.mts +1 -1
- package/dist/{codec-KAvQRjTW.d.mts → codec-D8ZKFLgs.d.mts} +3 -3
- package/dist/codec.d.mts +1 -1
- package/dist/{color-C5B1pN1D.d.mts → color-Cy_0z4IY.d.mts} +3 -3
- package/dist/common.d.mts +1 -1
- package/dist/complete-typography.d.mts +7 -0
- package/dist/components/Accordion/index.d.mts +1 -1
- package/dist/components/Accordion/index.mjs +8 -8
- package/dist/components/Accordion/index.mjs.map +1 -1
- package/dist/components/Attribute/index.mjs +8 -8
- 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/Banner/index.mjs.map +1 -1
- package/dist/components/BottomPanel/index.mjs +8 -8
- package/dist/components/BottomPanel/index.mjs.map +1 -1
- package/dist/components/Breadcrumbs/index.d.mts +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.d.mts +2 -2
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +5 -5
- package/dist/components/ButtonGroup/index.mjs.map +1 -1
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/Card/index.mjs +1 -1
- package/dist/components/CardV2/index.d.mts +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/CodeHighlight/PrismWithLanguages.mjs +1 -1
- package/dist/components/CodeHighlight/PrismWithLanguages.mjs.map +1 -1
- package/dist/components/CodeHighlight/index.mjs +6 -6
- package/dist/components/CodeHighlight/index.mjs.map +1 -1
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +2 -2
- package/dist/components/DataTable/TableControls/index.d.mts +21 -21
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.d.mts +8 -8
- package/dist/components/DataTable/index.mjs +1 -1
- package/dist/components/DataTable/types.d.mts +1 -1
- package/dist/components/DatePicker/index.d.mts +5 -5
- package/dist/components/DatePicker/index.mjs +1 -1
- package/dist/components/DropdownButton/index.mjs +1 -1
- package/dist/components/DropdownMenu/index.d.mts +1 -1
- package/dist/components/DropdownMenu/index.mjs +1 -1
- package/dist/components/FloatingPanel/index.mjs +9 -9
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FormControl/index.d.mts +2 -2
- package/dist/components/FormControl/index.mjs +2 -2
- package/dist/components/FormField/index.d.mts +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 +11 -11
- package/dist/components/ImageTile/index.mjs.map +1 -1
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +2 -2
- package/dist/components/Input/index.mjs.map +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 +3 -3
- package/dist/components/MaskedInput/index.mjs.map +1 -1
- package/dist/components/MatchHighlight/index.mjs +2 -2
- package/dist/components/MatchHighlight/index.mjs.map +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 +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +4 -4
- package/dist/components/ProgressBar/index.mjs.map +1 -1
- package/dist/components/ProgressIndicator/index.d.mts +1 -1
- package/dist/components/ProgressIndicator/index.mjs +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.d.mts +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RichTextEditor/index.d.mts +5 -0
- package/dist/components/RichTextEditor/index.mjs +1050 -0
- package/dist/components/RichTextEditor/index.mjs.map +1 -0
- package/dist/components/RightPanel/index.mjs +9 -9
- package/dist/components/RightPanel/index.mjs.map +1 -1
- package/dist/components/SegmentedControl/index.d.mts +1 -1
- package/dist/components/SegmentedControl/index.mjs +1 -1
- package/dist/components/Select/index.d.mts +1 -1
- package/dist/components/Select/index.mjs +1 -1
- package/dist/components/SelectionCard/index.mjs +9 -9
- package/dist/components/SelectionCard/index.mjs.map +1 -1
- package/dist/components/Slider/index.mjs +6 -6
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/PillType.d.mts +1 -1
- package/dist/components/SmartTextInput/PillType.mjs +2 -2
- package/dist/components/SmartTextInput/PillType.mjs.map +1 -1
- package/dist/components/SmartTextInput/index.d.mts +2 -2
- package/dist/components/SmartTextInput/index.mjs +25 -25
- package/dist/components/SmartTextInput/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.mjs +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.mjs.map +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +2 -2
- package/dist/components/SmartTextInput/parser/smart-text/parser.mjs.map +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
- package/dist/components/SmartTextInput/parser/smart-text/types.mjs +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/types.mjs.map +1 -1
- package/dist/components/Spacer/index.mjs +1 -1
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/Stack/index.mjs +1 -1
- package/dist/components/StatusIndicator/index.mjs +1 -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 -2
- package/dist/components/SwatchPicker/index.mjs.map +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +8 -8
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +2 -2
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Text/index.d.mts +1 -1
- package/dist/components/Text/index.mjs +1 -1
- package/dist/components/TextArea/index.d.mts +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +6 -6
- package/dist/components/Tile/index.mjs.map +1 -1
- package/dist/components/Toast/index.mjs +3 -3
- package/dist/components/Toast/index.mjs.map +1 -1
- package/dist/components/Toggle/index.d.mts +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/components/VersionHistory/index.d.mts +1 -1
- package/dist/components/VersionHistory/index.mjs +12 -12
- package/dist/components/VersionHistory/index.mjs.map +1 -1
- package/dist/compound-expression.d.mts +2 -2
- package/dist/{constants-4rSh8e5G.d.mts → constants-CW1DRgwi.d.mts} +2 -2
- package/dist/{constants-BaMvTUbS.d.mts → constants-D1hoZ5LO.d.mts} +2 -2
- package/dist/constants.d.mts +1 -1
- package/dist/constants2.d.mts +1 -1
- package/dist/containers.d.mts +1 -1
- package/dist/createPath-C4ZFkt93.d.mts +7 -0
- package/dist/createPath.d.mts +1 -1
- package/dist/{date-filter-D0ys8s0D.mjs → date-filter-Bj4XkwkT.mjs} +3 -3
- package/dist/date-filter-Bj4XkwkT.mjs.map +1 -0
- package/dist/{date-range-rule-value-Dk6pZHnD.d.mts → date-range-rule-value-CrVBpQcf.d.mts} +3 -3
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/{date-rule-intent-C5C8HB1v.d.mts → date-rule-intent-C1aptAoX.d.mts} +4 -4
- package/dist/date-rule-intent.d.mts +1 -1
- package/dist/display.d.mts +3 -3
- package/dist/fieldPickerOptions.d.mts +3 -3
- package/dist/{filter-size-context-5xQ3ycnC.d.mts → filter-size-context-CbT4pi3S.d.mts} +3 -3
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/{filters-jG9Y3UKb.d.mts → filters-DjXkx8GJ.d.mts} +3 -3
- package/dist/filters.d.mts +1 -1
- package/dist/format-date-value.d.mts +1 -1
- package/dist/{formatDateTime-Dd9inM5H.d.mts → formatDateTime-BikGGrvq.d.mts} +2 -2
- package/dist/formatDateTime.d.mts +1 -1
- package/dist/{helpers-DCIto6aY.d.mts → helpers-CdxEL7ri.d.mts} +5 -5
- package/dist/helpers.d.mts +1 -1
- package/dist/{i18n-BscB9FUy.mjs → i18n-BLyCaSdJ.mjs} +4 -4
- package/dist/i18n-BLyCaSdJ.mjs.map +1 -0
- package/dist/index-BWAycP6L.d.mts +4025 -0
- package/dist/{index-EGvEhP1j.d.mts → index-D2YFHdsf.d.mts} +3 -3
- package/dist/{index-C3uFHTo0.d.mts → index-DX5Zu9JU.d.mts} +4 -4
- package/dist/index-FgIOTuJ4.d.mts +7 -0
- package/dist/index.d.mts +1 -2
- package/dist/index2.d.mts +2 -2
- package/dist/index3.d.mts +2 -4
- package/dist/index4.d.mts +4 -2
- package/dist/index5.d.mts +2 -15
- package/dist/index6.d.mts +15 -1
- package/dist/{input-CKhARTlS.d.mts → input-gtTnb9M8.d.mts} +4 -4
- package/dist/{inputFields-mUsms2tO.d.mts → inputFields-CYttsz5M.d.mts} +12 -12
- package/dist/inputFields.d.mts +1 -1
- package/dist/{intersperse-ObkRVOag.mjs → intersperse-DvJsBw5D.mjs} +2 -2
- package/dist/intersperse-DvJsBw5D.mjs.map +1 -0
- package/dist/intersperse.d.mts +1 -1
- package/dist/{jsonSchema-DmOA0Lnu.d.mts → jsonSchema-DUkfAip_.d.mts} +3 -3
- package/dist/lib/ConfigContext.d.mts +1 -1
- package/dist/lib/ConfigContext.mjs +1 -1
- package/dist/lib/ConfigContext.mjs.map +1 -1
- package/dist/lib/GlobalStyles.d.mts +1 -1
- package/dist/lib/GlobalStyles.mjs +2 -2
- package/dist/lib/GlobalStyles.mjs.map +1 -1
- package/dist/lib/HeadlessAriaButton.d.mts +1 -1
- package/dist/lib/HeadlessAriaButton.mjs +2 -2
- package/dist/lib/HeadlessAriaButton.mjs.map +1 -1
- package/dist/lib/MiddleTruncatedText.d.mts +1 -1
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/PDSProvider.d.mts +4 -4
- package/dist/lib/PDSProvider.mjs +4 -4
- package/dist/lib/PDSProvider.mjs.map +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedText.mjs +2 -2
- package/dist/lib/TruncatedText.mjs.map +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +2 -2
- package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
- package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
- package/dist/lib/chainTypes.d.mts +1 -1
- package/dist/lib/color.d.mts +1 -1
- package/dist/lib/color.mjs +1 -1
- package/dist/lib/color.mjs.map +1 -1
- package/dist/lib/colorMode.d.mts +3 -3
- package/dist/lib/colorMode.mjs +2 -2
- package/dist/lib/colorMode.mjs.map +1 -1
- package/dist/lib/comboboxHelper.d.mts +1 -1
- package/dist/lib/comboboxHelper.mjs +1 -1
- package/dist/lib/comboboxHelper.mjs.map +1 -1
- package/dist/lib/copyTextToClipboard.d.mts +1 -1
- package/dist/lib/copyTextToClipboard.mjs +1 -1
- package/dist/lib/copyTextToClipboard.mjs.map +1 -1
- package/dist/lib/customFunctionSchema.d.mts +2 -2
- package/dist/lib/customFunctionSchema.mjs +1 -1
- package/dist/lib/customFunctionSchema.mjs.map +1 -1
- package/dist/lib/date-filter/index.d.mts +2 -2
- package/dist/lib/date-filter/index.mjs +1 -1
- package/dist/lib/datePickerHelper.d.mts +1 -1
- package/dist/lib/datePickerHelper.mjs +1 -1
- package/dist/lib/datePickerHelper.mjs.map +1 -1
- package/dist/lib/embeddedSurfaceProtocol.d.mts +1 -1
- package/dist/lib/embeddedSurfaceProtocol.mjs +1 -1
- package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
- package/dist/lib/embeddedSurfaceRegistry.d.mts +1 -1
- package/dist/lib/embeddedSurfaceRegistry.mjs +1 -1
- package/dist/lib/embeddedSurfaceRegistry.mjs.map +1 -1
- package/dist/lib/errorReporter.d.mts +1 -1
- package/dist/lib/errorReporter.mjs +1 -1
- package/dist/lib/errorReporter.mjs.map +1 -1
- package/dist/lib/i18n/index.d.mts +3 -3
- package/dist/lib/i18n/index.mjs +1 -1
- package/dist/lib/jsonSchema.d.mts +1 -1
- package/dist/lib/jsonSchema.mjs +1 -1
- package/dist/lib/jsonSchema.mjs.map +1 -1
- package/dist/lib/jsonSchemaType.d.mts +2 -2
- package/dist/lib/jsonSchemaType.mjs +1 -1
- package/dist/lib/jsonSchemaType.mjs.map +1 -1
- package/dist/lib/letPointerDownReachDocument.d.mts +1 -1
- package/dist/lib/letPointerDownReachDocument.mjs +1 -1
- package/dist/lib/letPointerDownReachDocument.mjs.map +1 -1
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/message.mjs +1 -1
- package/dist/lib/message.mjs.map +1 -1
- package/dist/lib/methodChain.d.mts +2 -2
- package/dist/lib/methodChain.mjs +1 -1
- package/dist/lib/methodChainNormalize.d.mts +3 -3
- package/dist/lib/methodChainNormalize.mjs +1 -1
- package/dist/lib/methodChainNormalize.mjs.map +1 -1
- package/dist/lib/methodChainTypes.d.mts +1 -1
- package/dist/lib/objectSchemaTypes.d.mts +1 -1
- package/dist/lib/platformObject.d.mts +2 -2
- package/dist/lib/platformObject.mjs +1 -1
- package/dist/lib/platformObject.mjs.map +1 -1
- package/dist/lib/pseudoClass.d.mts +2 -2
- package/dist/lib/pseudoClass.mjs +1 -1
- package/dist/lib/pseudoClass.mjs.map +1 -1
- package/dist/lib/reorderItems.d.mts +1 -1
- package/dist/lib/reorderItems.mjs +1 -1
- package/dist/lib/reorderItems.mjs.map +1 -1
- package/dist/lib/router/adapters/reactRouter.d.mts +2 -2
- package/dist/lib/router/adapters/reactRouter.mjs +2 -2
- package/dist/lib/router/adapters/reactRouter.mjs.map +1 -1
- package/dist/lib/router/adapters/tanstack.d.mts +2 -2
- package/dist/lib/router/adapters/tanstack.mjs +2 -2
- package/dist/lib/router/adapters/tanstack.mjs.map +1 -1
- package/dist/lib/router/index.d.mts +5 -5
- package/dist/lib/router/index.mjs +2 -2
- package/dist/lib/schemaOptions.d.mts +1 -1
- package/dist/lib/schemaOptions.mjs +2 -2
- package/dist/lib/schemaOptions.mjs.map +1 -1
- package/dist/lib/selectHelper.d.mts +1 -1
- package/dist/lib/selectHelper.mjs +1 -1
- package/dist/lib/selectHelper.mjs.map +1 -1
- package/dist/lib/semanticColor.d.mts +1 -1
- package/dist/lib/semanticColor.mjs +1 -1
- package/dist/lib/semanticColor.mjs.map +1 -1
- package/dist/lib/snakifyPath.d.mts +1 -1
- package/dist/lib/snakifyPath.mjs +1 -1
- package/dist/lib/snakifyPath.mjs.map +1 -1
- package/dist/lib/useChain.d.mts +1 -1
- package/dist/lib/useChain.mjs +1 -1
- package/dist/lib/useControlled.d.mts +1 -1
- package/dist/lib/useControlled.mjs +1 -1
- package/dist/lib/useControlled.mjs.map +1 -1
- package/dist/lib/useEmbeddedSurface.d.mts +1 -1
- package/dist/lib/useEmbeddedSurface.mjs +1 -1
- package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
- package/dist/lib/useIsOverflow.d.mts +1 -1
- package/dist/lib/useIsOverflow.mjs +1 -1
- package/dist/lib/useIsOverflow.mjs.map +1 -1
- package/dist/lib/useModalInsetRight.d.mts +1 -1
- package/dist/lib/useModalInsetRight.mjs +1 -1
- package/dist/lib/useModalInsetRight.mjs.map +1 -1
- package/dist/lib/useOutsideClick.d.mts +1 -1
- package/dist/lib/useOutsideClick.mjs +1 -1
- package/dist/lib/useOutsideClick.mjs.map +1 -1
- package/dist/lib/useResizablePanel.d.mts +1 -1
- package/dist/lib/useResizablePanel.mjs +1 -1
- package/dist/lib/useResizablePanel.mjs.map +1 -1
- package/dist/lib/useScrollOverflow.d.mts +1 -1
- package/dist/lib/useScrollOverflow.mjs +1 -1
- package/dist/lib/useScrollOverflow.mjs.map +1 -1
- package/dist/lib/zindex.d.mts +1 -1
- package/dist/lib/zindex.mjs +1 -1
- package/dist/lib/zindex.mjs.map +1 -1
- package/dist/lint/index.d.mts +11 -0
- package/dist/lint/index.mjs +399 -0
- package/dist/lint/index.mjs.map +1 -0
- package/dist/lint/recommended.json +10 -0
- package/dist/{listbox-options-DCmqWWgy.d.mts → listbox-options-CkwENvff.d.mts} +4 -4
- package/dist/listbox-options.d.mts +1 -1
- package/dist/markdownUtils.d.mts +23 -0
- package/dist/{message-Dti22dmx.d.mts → message-klSuXfNN.d.mts} +2 -2
- package/dist/{methodChain-DaDvXsHF.d.mts → methodChain-CRYRDa1k.d.mts} +6 -6
- package/dist/{methodChain-xZ1_vhbz.mjs → methodChain-LVNHiGPB.mjs} +4 -4
- package/dist/methodChain-LVNHiGPB.mjs.map +1 -0
- package/dist/{methodChainTypes-a7kHYhs7.d.mts → methodChainTypes-BtbYWrdP.d.mts} +3 -3
- package/dist/middleTruncateText.d.mts +1 -1
- package/dist/min-copy-size.d.mts +7 -0
- package/dist/mixins/focus.d.mts +2 -2
- package/dist/mixins/focus.mjs +2 -2
- package/dist/mixins/focus.mjs.map +1 -1
- package/dist/mixins/hoverable.d.mts +3 -3
- package/dist/mixins/hoverable.mjs +2 -2
- package/dist/mixins/hoverable.mjs.map +1 -1
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/input.mjs +2 -2
- package/dist/mixins/input.mjs.map +1 -1
- package/dist/mixins/menuItem.d.mts +3 -3
- package/dist/mixins/menuItem.mjs +2 -2
- package/dist/mixins/menuItem.mjs.map +1 -1
- package/dist/mixins/print/index.d.mts +1 -1
- package/dist/mixins/print/index.mjs +2 -2
- package/dist/mixins/print/index.mjs.map +1 -1
- package/dist/mixins/scrollbar.d.mts +2 -2
- package/dist/mixins/scrollbar.mjs +2 -2
- package/dist/mixins/scrollbar.mjs.map +1 -1
- package/dist/mixins/text.d.mts +1 -1
- package/dist/mixins/text.mjs +6 -2
- package/dist/mixins/text.mjs.map +1 -1
- package/dist/navigationEvents.d.mts +1 -1
- package/dist/no-raw-table.d.mts +7 -0
- package/dist/{operators-Seez5p9U.d.mts → operators-gCG7uZ6y.d.mts} +4 -4
- package/dist/operators.d.mts +1 -1
- package/dist/{palette-Bp5G-S_5.d.mts → palette-C1gBbxLO.d.mts} +4 -4
- package/dist/palette.d.mts +1 -1
- package/dist/{parser-BeTiVjRs.mjs → parser-BQ2aDi7S.mjs} +2 -2
- package/dist/parser-BQ2aDi7S.mjs.map +1 -0
- package/dist/patterns/CardGrouping/index.mjs +11 -11
- package/dist/patterns/CardGrouping/index.mjs.map +1 -1
- package/dist/patterns/IndexTableLayout/index.mjs +6 -6
- package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +8 -8
- package/dist/patterns/LayoutLoadingShimmer/index.mjs.map +1 -1
- package/dist/patterns/LayoutLoadingSpinner/index.mjs +2 -2
- package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
- package/dist/patterns/PageLayout/index.d.mts +4 -4
- package/dist/patterns/PageLayout/index.mjs +1 -1
- package/dist/patterns/WizardModal/index.mjs +7 -7
- package/dist/patterns/WizardModal/index.mjs.map +1 -1
- package/dist/positioning.d.mts +1 -1
- package/dist/reactRouterFallback.d.mts +2 -2
- package/dist/reduced-motion.d.mts +7 -0
- package/dist/relative-date-label.d.mts +2 -2
- package/dist/{router-COrZcVkf.mjs → router-BxmA940v.mjs} +7 -7
- package/dist/router-BxmA940v.mjs.map +1 -0
- package/dist/safe-parse.d.mts +3 -3
- package/dist/{schemaOptions-BQgLOgtD.d.mts → schemaOptions-C_JM2-sg.d.mts} +4 -4
- package/dist/scrollExpandedItemIntoView.d.mts +1 -1
- package/dist/{semantic-DjKvtUi8.d.mts → semantic-BLaQSW1r.d.mts} +2 -2
- package/dist/semantic-color.d.mts +7 -0
- package/dist/{semanticColor-CmGmGRj8.d.mts → semanticColor-Bxufk3ZO.d.mts} +4 -4
- package/dist/shared.d.mts +30 -0
- package/dist/{strings-FWNWdSn1.d.mts → strings-CK9n6b65.d.mts} +2 -2
- package/dist/strings.d.mts +1 -1
- package/dist/{styledComponentsInterop-NxwFjeA4.mjs → styledComponentsInterop-Cs5CCPRy.mjs} +2 -2
- package/dist/styledComponentsInterop-Cs5CCPRy.mjs.map +1 -0
- package/dist/styles.d.mts +8 -0
- package/dist/tableBoxKeyboardNavigation.d.mts +1 -1
- package/dist/{text-BNfECpa5.d.mts → text-Csytfclh.d.mts} +3 -3
- package/dist/{theme-VNhXxAF3.d.mts → theme-mQ4WkH90.d.mts} +4 -4
- package/dist/theme.d.mts +1 -1
- package/dist/theme.mjs +1 -1
- package/dist/theme.mjs.map +1 -1
- package/dist/time-range.d.mts +1 -1
- package/dist/tone.d.mts +4 -4
- package/dist/tree.d.mts +2 -2
- package/dist/{types-CFe4tA8Q.d.mts → types-6L0ptM6-.d.mts} +2 -2
- package/dist/{types-SOkNtcBq.d.mts → types-B4KbdEDc.d.mts} +3 -3
- package/dist/{types-Kmnood9Y.d.mts → types-C2RhHxbE.d.mts} +2 -2
- package/dist/{types-CrRWZ0Ia.d.mts → types-CayYd8EX.d.mts} +4 -4
- package/dist/{types-DxJyE_U8.d.mts → types-DJobO07d.d.mts} +4 -4
- package/dist/{types-EodOhsjw.d.mts → types-DbOD5vE_.d.mts} +3 -3
- package/dist/{types-HxiGiwQN.d.mts → types-Dhz6VMKx.d.mts} +2 -2
- package/dist/{types-DWU0Dmy9.d.mts → types-XjJqUj-p.d.mts} +5 -5
- package/dist/{types-DfpVVjso.d.mts → types-dmItSshr.d.mts} +3 -3
- package/dist/{types-39QvBZuZ.d.mts → types-rDQg74j-.d.mts} +2 -2
- package/dist/types.d.mts +1 -1
- package/dist/types2.d.mts +1 -1
- package/dist/types3.d.mts +1 -1
- package/dist/types4.d.mts +1 -1
- package/dist/types5.d.mts +1 -1
- package/dist/types6.d.mts +1 -1
- package/dist/types7.d.mts +14 -2
- package/dist/types8.d.mts +2 -0
- package/dist/{url-state-CwaRVyXR.d.mts → url-state-CmgyDnG7.d.mts} +3 -3
- package/dist/url-state.d.mts +1 -1
- package/dist/use-rules-popover-selection.d.mts +1 -1
- package/dist/{useChain-DXkKKe-J.d.mts → useChain-7ztbfujM.d.mts} +7 -7
- package/dist/{useChain-Cu4KDfFk.mjs → useChain-D1aNsdvn.mjs} +4 -4
- package/dist/useChain-D1aNsdvn.mjs.map +1 -0
- package/dist/useChainAtCursor.d.mts +7 -7
- package/dist/useCodeChainFunctionPanel.d.mts +2 -2
- package/dist/useColumnConfiguration.d.mts +3 -3
- package/dist/useColumnWidthLock.d.mts +1 -1
- package/dist/useComboboxFooterAction.d.mts +2 -2
- package/dist/useDelayedInlineEditError.d.mts +1 -1
- package/dist/{useFilterStateV2-Bzo27PR-.d.mts → useFilterStateV2-CPBt0qwc.d.mts} +4 -4
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-Ba8rh1CH.d.mts → useFormField-CmEJCqse.d.mts} +3 -3
- package/dist/{useFormField-CbNYbDdp.mjs → useFormField-pOVkb5BK.mjs} +3 -3
- package/dist/useFormField-pOVkb5BK.mjs.map +1 -0
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-CsKC93Pt.mjs → useFormGroup-DSQkoWLh.mjs} +2 -2
- package/dist/useFormGroup-DSQkoWLh.mjs.map +1 -0
- package/dist/useFormGroup.d.mts +1 -1
- package/dist/useLocationPathname-Cnqj8pf4.d.mts +5 -0
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-CKPIY98e.d.mts → useTableBoxDragAndDrop-8NS4JBuI.d.mts} +2 -2
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/{useTableColumns-DSXRInPb.d.mts → useTableColumns-BK-KYY0L.d.mts} +3 -3
- package/dist/useTableColumns.d.mts +1 -1
- package/dist/{useToggle-DRzCDqrc.mjs → useToggle-1z8JE7Ym.mjs} +2 -2
- package/dist/useToggle-1z8JE7Ym.mjs.map +1 -0
- package/dist/useToggle.d.mts +1 -1
- package/dist/useTruncation.d.mts +2 -2
- package/dist/{utilities-BrEUGFGq.d.mts → utilities-CXoc5Cyr.d.mts} +2 -2
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/storybook.mjs +2 -2
- package/dist/utils/storybook.mjs.map +1 -1
- package/dist/utils/testing.d.mts +2 -2
- package/dist/utils/testing.mjs +1 -1
- package/dist/utils/testing.mjs.map +1 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils2.d.mts +1 -1
- package/dist/utils3.d.mts +1 -1
- package/dist/utils4.d.mts +6 -6
- package/dist/{validation-D6NPueNk.d.mts → validation-BaqPVG1C.d.mts} +4 -4
- package/dist/validation.d.mts +1 -1
- package/dist/validation2.d.mts +5 -5
- package/dist/{value-control-resolver-C-UrXVlB.d.mts → value-control-resolver-CMyFwEY7.d.mts} +3 -3
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/variables/color.d.mts +1 -1
- package/dist/variables/color.mjs +1 -1
- package/dist/variables/color.mjs.map +1 -1
- package/dist/variables/effect.d.mts +2 -2
- package/dist/variables/effect.mjs +1 -1
- package/dist/variables/effect.mjs.map +1 -1
- package/dist/variables/keyframes.d.mts +1 -1
- package/dist/variables/keyframes.mjs +2 -2
- package/dist/variables/keyframes.mjs.map +1 -1
- package/dist/variables/semantic.d.mts +1 -1
- package/dist/variables/semantic.mjs +1 -1
- package/dist/variables/semantic.mjs.map +1 -1
- package/dist/variables/spacing.d.mts +1 -1
- package/dist/variables/spacing.mjs +1 -1
- package/dist/variables/spacing.mjs.map +1 -1
- package/dist/variables/text.d.mts +1 -1
- package/dist/variables/text.mjs +1 -1
- package/dist/variables/text.mjs.map +1 -1
- package/dist/variables/transitions.d.mts +1 -1
- package/dist/variables/transitions.mjs +1 -1
- package/dist/variables/transitions.mjs.map +1 -1
- package/llms.txt +2 -2
- package/package.json +32 -8
- package/skills/design-system-component-authoring/SKILL.md +4 -4
- package/skills/design-system-component-authoring/component-conventions.md +2 -2
- package/skills/new-screen/SKILL.md +56 -0
- package/skills/ui-authoring/COMPONENTS.md +2 -1
- package/skills/ui-authoring/SKILL.md +5 -3
- package/skills/ui-authoring/STANDARD.md +65 -50
- package/dist/Badge-Bvn3afds.mjs.map +0 -1
- package/dist/Breadcrumbs-gRAsKF4R.mjs.map +0 -1
- package/dist/Card-BXNxWX5C.mjs.map +0 -1
- package/dist/CardV2-Dp4eHSE-.mjs.map +0 -1
- package/dist/Checkbox-BaJ-dGdX.mjs.map +0 -1
- package/dist/Combobox-CBM-oY-e.mjs.map +0 -1
- package/dist/ConfigFormGroup-CidT_cE9.mjs.map +0 -1
- package/dist/DataTable-DQ8axNfo.mjs.map +0 -1
- package/dist/DatePicker-D0cvVbzq.mjs.map +0 -1
- package/dist/DropdownButton-5oNcpsOq.mjs.map +0 -1
- package/dist/DropdownMenu-CedsmO5h.mjs.map +0 -1
- package/dist/FormControl-C4CiA0H-.mjs.map +0 -1
- package/dist/FormField-C0cd1zVd.mjs.map +0 -1
- package/dist/Grid-DXVkhyNQ.mjs.map +0 -1
- package/dist/HoverCopyableField-D-BubaRd.mjs.map +0 -1
- package/dist/IconButton-HWx5Hlmi.mjs.map +0 -1
- package/dist/Input-Dap055xf.mjs.map +0 -1
- package/dist/Link-Cf__H8gD.mjs.map +0 -1
- package/dist/ListBox-eoyBHtnJ.mjs.map +0 -1
- package/dist/LoadingShimmer-Bqjdut7i.mjs.map +0 -1
- package/dist/Menu-Dw6Rcpk6.mjs.map +0 -1
- package/dist/MiddleTruncatedText-DoTyfMem.mjs.map +0 -1
- package/dist/Modal-kjUptzg1.mjs.map +0 -1
- package/dist/PageHeader-D2j2XHD9.mjs.map +0 -1
- package/dist/PageLayout-fXJW7daI.mjs.map +0 -1
- package/dist/Pagination-DtK-jbEY.mjs.map +0 -1
- package/dist/Pii-DueIK287.mjs.map +0 -1
- package/dist/Popover-BcII7usF.mjs.map +0 -1
- package/dist/ProgressIndicator-CM37EU1B.mjs.map +0 -1
- package/dist/Radio-BstZg3DI.mjs.map +0 -1
- package/dist/RadioGroup-erKerwSt.mjs.map +0 -1
- package/dist/RouterContext-nPSb55p9.mjs.map +0 -1
- package/dist/SegmentedControl-DQjIO6iX.mjs.map +0 -1
- package/dist/Select-BJ9ACmRD.mjs.map +0 -1
- package/dist/Spacer-J_HuhxX2.mjs.map +0 -1
- package/dist/Spinner-7Camx1vs.mjs.map +0 -1
- package/dist/Stack-BkC7FCdF.mjs.map +0 -1
- package/dist/StatusIndicator-Bunn9YLV.mjs.map +0 -1
- package/dist/Sticker-yhxtIYH8.mjs.map +0 -1
- package/dist/TabBar-SX8E9-Bk.mjs.map +0 -1
- package/dist/Table-BIDaC0uS.mjs.map +0 -1
- package/dist/TableBox-Bn_XZEYd.mjs.map +0 -1
- package/dist/TableControls-qxoq5abn.mjs.map +0 -1
- package/dist/TechnicalSticker-CALVwnrT.mjs.map +0 -1
- package/dist/Text-CSwFifQF.mjs.map +0 -1
- package/dist/TextArea-CaIEBz8d.mjs.map +0 -1
- package/dist/Toggle-BsqSNYok.mjs.map +0 -1
- package/dist/Tooltip-B-0VRuKT.mjs.map +0 -1
- package/dist/chainTypes-Cjp0zZ4E.d.mts +0 -17
- package/dist/createPath-B_CLq82C.d.mts +0 -7
- package/dist/date-filter-D0ys8s0D.mjs.map +0 -1
- package/dist/i18n-BscB9FUy.mjs.map +0 -1
- package/dist/index-DTAcGzW4.d.mts +0 -7
- package/dist/intersperse-ObkRVOag.mjs.map +0 -1
- package/dist/methodChain-xZ1_vhbz.mjs.map +0 -1
- package/dist/parser-BeTiVjRs.mjs.map +0 -1
- package/dist/router-COrZcVkf.mjs.map +0 -1
- package/dist/styledComponentsInterop-NxwFjeA4.mjs.map +0 -1
- package/dist/useChain-Cu4KDfFk.mjs.map +0 -1
- package/dist/useFormField-CbNYbDdp.mjs.map +0 -1
- package/dist/useFormGroup-CsKC93Pt.mjs.map +0 -1
- package/dist/useLocationPathname-OsvI7mH5.d.mts +0 -5
- package/dist/useToggle-DRzCDqrc.mjs.map +0 -1
- package/skills/ui-authoring/lanes.json +0 -22
- /package/dist/{index-BOaE2xDE.d.mts → index-Bq9Ub6MB.d.mts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectHelper.mjs","names":[],"sources":["../../lib/selectHelper.ts"],"sourcesContent":["import { act, fireEvent, screen } from '@testing-library/react';\n\n/**\n * Click a PDS Select (Radix UI) option using fireEvent.click inside act().\n *\n * userEvent.click doesn't work for Radix SelectItem in React 18 + JSDOM because it fires\n * pointer events that set pointerTypeRef to \"mouse\", routing selection through onPointerUp\n * instead of onClick — and that path doesn't flush React state within act() due to focus()\n * calls from onPointerMove interfering with the concurrent scheduler. fireEvent.click\n * bypasses all of this cleanly.\n */\nexport const clickSelectItem = async (name: RegExp | string) => {\n await act(async () => {\n fireEvent.click(screen.getByRole('option', { name }));\n });\n};\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,kBAAkB,OAAO,SAA0B;AAC9D,OAAM,IAAI,YAAY;AACpB,YAAU,MAAM,OAAO,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;GACrD"}
|
|
1
|
+
{"version":3,"file":"selectHelper.mjs","names":[],"sources":["../../src/lib/selectHelper.ts"],"sourcesContent":["import { act, fireEvent, screen } from '@testing-library/react';\n\n/**\n * Click a PDS Select (Radix UI) option using fireEvent.click inside act().\n *\n * userEvent.click doesn't work for Radix SelectItem in React 18 + JSDOM because it fires\n * pointer events that set pointerTypeRef to \"mouse\", routing selection through onPointerUp\n * instead of onClick — and that path doesn't flush React state within act() due to focus()\n * calls from onPointerMove interfering with the concurrent scheduler. fireEvent.click\n * bypasses all of this cleanly.\n */\nexport const clickSelectItem = async (name: RegExp | string) => {\n await act(async () => {\n fireEvent.click(screen.getByRole('option', { name }));\n });\n};\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,kBAAkB,OAAO,SAA0B;AAC9D,OAAM,IAAI,YAAY;AACpB,YAAU,MAAM,OAAO,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;GACrD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as semanticTokens, i as semanticOnly, n as SemanticFallback, r as semanticColor, t as MaybeSemanticTheme } from "../semanticColor-
|
|
1
|
+
import { a as semanticTokens, i as semanticOnly, n as SemanticFallback, r as semanticColor, t as MaybeSemanticTheme } from "../semanticColor-Bxufk3ZO.mjs";
|
|
2
2
|
export { MaybeSemanticTheme, SemanticFallback, semanticColor, semanticOnly, semanticTokens };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semanticColor.mjs","names":[],"sources":["../../lib/semanticColor.ts"],"sourcesContent":["import type { CssColor } from 'design-system/lib/color';\nimport type { CssPercentage, SemanticTokens } from 'design-system/variables/semantic';\n\n/** PDS components also render under foreign themes (Relay, darkTheme), so `semantic` is optional. */\nexport interface MaybeSemanticTheme {\n semantic?: SemanticTokens;\n}\n\n/** Colour tokens also accept a computed `CssColor` fallback; percentage tokens only their own type. */\nexport type SemanticFallback<K extends keyof SemanticTokens> =\n | SemanticTokens[K]\n | (SemanticTokens[K] extends CssPercentage ? never : CssColor);\n\n/**\n * Reads a semantic token, falling back to `legacy` when the theme has no semantic namespace.\n * `legacy` must be the component's pre-migration expression (not a generic default) so themes\n * without semantic tokens keep rendering exactly as before. It is evaluated by the caller, so a\n * component Relay renders must pass a constant: Relay's theme has no `theme.color` either.\n * `theme` may be `undefined` (`useTheme()` outside a provider).\n */\nexport const semanticColor = <K extends keyof SemanticTokens>(\n theme: MaybeSemanticTheme | undefined,\n token: K,\n legacy: SemanticFallback<K>,\n): SemanticFallback<K> => theme?.semantic?.[token] ?? legacy;\n\n/** For palettes derived from several tokens; callers must branch and keep the legacy path intact. */\nexport const semanticTokens = (theme: MaybeSemanticTheme | undefined): SemanticTokens | undefined =>\n theme?.semantic;\n\n/** Interpolation for declarations that exist only under semantic theming; emits nothing otherwise. */\nexport const semanticOnly =\n <T>(build: (tokens: SemanticTokens) => T) =>\n ({ theme }: { theme?: MaybeSemanticTheme }): T | undefined =>\n theme?.semantic ? build(theme.semantic) : undefined;\n"],"mappings":";;;;;;;;AAoBA,MAAa,iBACX,OACA,OACA,WACwB,OAAO,WAAW,UAAU;;AAGtD,MAAa,kBAAkB,UAC7B,OAAO;;AAGT,MAAa,gBACP,WACH,EAAE,YACD,OAAO,WAAW,MAAM,MAAM,SAAS,GAAG,KAAA"}
|
|
1
|
+
{"version":3,"file":"semanticColor.mjs","names":[],"sources":["../../src/lib/semanticColor.ts"],"sourcesContent":["import type { CssColor } from 'design-system/lib/color';\nimport type { CssPercentage, SemanticTokens } from 'design-system/variables/semantic';\n\n/** PDS components also render under foreign themes (Relay, darkTheme), so `semantic` is optional. */\nexport interface MaybeSemanticTheme {\n semantic?: SemanticTokens;\n}\n\n/** Colour tokens also accept a computed `CssColor` fallback; percentage tokens only their own type. */\nexport type SemanticFallback<K extends keyof SemanticTokens> =\n | SemanticTokens[K]\n | (SemanticTokens[K] extends CssPercentage ? never : CssColor);\n\n/**\n * Reads a semantic token, falling back to `legacy` when the theme has no semantic namespace.\n * `legacy` must be the component's pre-migration expression (not a generic default) so themes\n * without semantic tokens keep rendering exactly as before. It is evaluated by the caller, so a\n * component Relay renders must pass a constant: Relay's theme has no `theme.color` either.\n * `theme` may be `undefined` (`useTheme()` outside a provider).\n */\nexport const semanticColor = <K extends keyof SemanticTokens>(\n theme: MaybeSemanticTheme | undefined,\n token: K,\n legacy: SemanticFallback<K>,\n): SemanticFallback<K> => theme?.semantic?.[token] ?? legacy;\n\n/** For palettes derived from several tokens; callers must branch and keep the legacy path intact. */\nexport const semanticTokens = (theme: MaybeSemanticTheme | undefined): SemanticTokens | undefined =>\n theme?.semantic;\n\n/** Interpolation for declarations that exist only under semantic theming; emits nothing otherwise. */\nexport const semanticOnly =\n <T>(build: (tokens: SemanticTokens) => T) =>\n ({ theme }: { theme?: MaybeSemanticTheme }): T | undefined =>\n theme?.semantic ? build(theme.semantic) : undefined;\n"],"mappings":";;;;;;;;AAoBA,MAAa,iBACX,OACA,OACA,WACwB,OAAO,WAAW,UAAU;;AAGtD,MAAa,kBAAkB,UAC7B,OAAO;;AAGT,MAAa,gBACP,WACH,EAAE,YACD,OAAO,WAAW,MAAM,MAAM,SAAS,GAAG,KAAA"}
|
package/dist/lib/snakifyPath.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snakifyPath.mjs","names":[],"sources":["../../lib/snakifyPath.ts"],"sourcesContent":["const ISO_8601_PATTERN = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:[+-]\\d{2}:\\d{2}|Z)?/;\n\nconst containsISO8601 = (value: string) => ISO_8601_PATTERN.test(value);\n\nexport const snakify = (toSnake: string) => {\n if (!toSnake) {\n return toSnake;\n }\n\n return toSnake\n .split('.')\n .map((segment) => (containsISO8601(segment) ? segment : segment.replace(/-/g, '_')))\n .join('.');\n};\n"],"mappings":";AAAA,MAAM,mBAAmB;AAEzB,MAAM,mBAAmB,UAAkB,iBAAiB,KAAK,MAAM;AAEvE,MAAa,WAAW,YAAoB;AAC1C,KAAI,CAAC,QACH,QAAO;AAGT,QAAO,QACJ,MAAM,IAAI,CACV,KAAK,YAAa,gBAAgB,QAAQ,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI,CAAE,CACnF,KAAK,IAAI"}
|
|
1
|
+
{"version":3,"file":"snakifyPath.mjs","names":[],"sources":["../../src/lib/snakifyPath.ts"],"sourcesContent":["const ISO_8601_PATTERN = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:[+-]\\d{2}:\\d{2}|Z)?/;\n\nconst containsISO8601 = (value: string) => ISO_8601_PATTERN.test(value);\n\nexport const snakify = (toSnake: string) => {\n if (!toSnake) {\n return toSnake;\n }\n\n return toSnake\n .split('.')\n .map((segment) => (containsISO8601(segment) ? segment : segment.replace(/-/g, '_')))\n .join('.');\n};\n"],"mappings":";AAAA,MAAM,mBAAmB;AAEzB,MAAM,mBAAmB,UAAkB,iBAAiB,KAAK,MAAM;AAEvE,MAAa,WAAW,YAAoB;AAC1C,KAAI,CAAC,QACH,QAAO;AAGT,QAAO,QACJ,MAAM,IAAI,CACV,KAAK,YAAa,gBAAgB,QAAQ,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI,CAAE,CACnF,KAAK,IAAI"}
|
package/dist/lib/useChain.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useChain, r as useChainSchema, t as chainRootsFromSchemaProperties } from "../useChain-
|
|
1
|
+
import { n as useChain, r as useChainSchema, t as chainRootsFromSchemaProperties } from "../useChain-7ztbfujM.mjs";
|
|
2
2
|
export { chainRootsFromSchemaProperties, useChain as default, useChainSchema };
|
package/dist/lib/useChain.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useChain, r as useChainSchema, t as chainRootsFromSchemaProperties } from "../useChain-
|
|
1
|
+
import { n as useChain, r as useChainSchema, t as chainRootsFromSchemaProperties } from "../useChain-D1aNsdvn.mjs";
|
|
2
2
|
export { chainRootsFromSchemaProperties, useChain as default, useChainSchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControlled.mjs","names":[],"sources":["../../lib/useControlled.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\n/**\n * Hook to allow components that can be controlled and uncontrolled to get and set state.\n *\n * Inspired by MUI's neat controlled util\n * https://github.com/mui-org/material-ui/blob/master/packages/mui-utils/src/useControlled.js\n */\nexport default function useControlled<T>({\n controlledValue,\n default: defaultProp,\n}: {\n controlledValue?: T;\n default: T;\n}) {\n const { current: isControlled } = useRef(controlledValue !== undefined);\n const [valueState, setValue] = useState<T | undefined>(defaultProp);\n const value = isControlled ? controlledValue : valueState;\n\n const setValueIfUncontrolled = useCallback((newValue: T | undefined) => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n\n return [value, setValueIfUncontrolled] as const;\n}\n"],"mappings":";;;;;;;;AAQA,SAAwB,cAAiB,EACvC,iBACA,SAAS,eAIR;CACD,MAAM,EAAE,SAAS,iBAAiB,OAAO,oBAAoB,KAAA,EAAU;CACvE,MAAM,CAAC,YAAY,YAAY,SAAwB,YAAY;AASnE,QAAO,CARO,eAAe,kBAAkB,YAEhB,aAAa,aAA4B;AACtE,MAAI,CAAC,aACH,UAAS,SAAS;IAEnB,EAAE,CAEgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useControlled.mjs","names":[],"sources":["../../src/lib/useControlled.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\n/**\n * Hook to allow components that can be controlled and uncontrolled to get and set state.\n *\n * Inspired by MUI's neat controlled util\n * https://github.com/mui-org/material-ui/blob/master/packages/mui-utils/src/useControlled.js\n */\nexport default function useControlled<T>({\n controlledValue,\n default: defaultProp,\n}: {\n controlledValue?: T;\n default: T;\n}) {\n const { current: isControlled } = useRef(controlledValue !== undefined);\n const [valueState, setValue] = useState<T | undefined>(defaultProp);\n const value = isControlled ? controlledValue : valueState;\n\n const setValueIfUncontrolled = useCallback((newValue: T | undefined) => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n\n return [value, setValueIfUncontrolled] as const;\n}\n"],"mappings":";;;;;;;;AAQA,SAAwB,cAAiB,EACvC,iBACA,SAAS,eAIR;CACD,MAAM,EAAE,SAAS,iBAAiB,OAAO,oBAAoB,KAAA,EAAU;CACvE,MAAM,CAAC,YAAY,YAAY,SAAwB,YAAY;AASnE,QAAO,CARO,eAAe,kBAAkB,YAEhB,aAAa,aAA4B;AACtE,MAAI,CAAC,aACH,UAAS,SAAS;IAEnB,EAAE,CAEgC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region lib/useEmbeddedSurface.d.ts
|
|
1
|
+
//#region src/lib/useEmbeddedSurface.d.ts
|
|
2
2
|
/**
|
|
3
3
|
* How long the overlay stays paused waiting for an acknowledgement. It has to outlast the host's
|
|
4
4
|
* animation lead so a slow acknowledgement still gets used rather than raced by this fallback.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EMBEDDED_SURFACE_CHANNEL, coerceChildboundEnvelope } from "./embeddedSurfaceProtocol.mjs";
|
|
2
2
|
import { getEmbeddedSurfaceTransport, subscribeEmbeddedSurfaceTransportChanges } from "./embeddedSurfaceRegistry.mjs";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
|
-
//#region lib/useEmbeddedSurface.ts
|
|
4
|
+
//#region src/lib/useEmbeddedSurface.ts
|
|
5
5
|
const SURFACE_REANNOUNCE_INTERVAL_MS = 2e3;
|
|
6
6
|
const HELLO_ROTATION_THRESHOLD = 2;
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmbeddedSurface.mjs","names":[],"sources":["../../lib/useEmbeddedSurface.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n EMBEDDED_SURFACE_PROTOCOL_VERSION,\n EMBEDDED_SURFACE_CHANNEL,\n coerceChildboundEnvelope,\n type EmbeddedSurfacePayloads,\n} from 'design-system/lib/embeddedSurfaceProtocol';\nimport {\n getEmbeddedSurfaceTransport,\n subscribeEmbeddedSurfaceTransportChanges,\n type EmbeddedSurfaceTransport,\n} from 'design-system/lib/embeddedSurfaceRegistry';\n\nconst SURFACE_REANNOUNCE_INTERVAL_MS = 2000;\nconst HELLO_ROTATION_THRESHOLD = 2;\n/**\n * How long the overlay stays paused waiting for an acknowledgement. It has to outlast the host's\n * animation lead so a slow acknowledgement still gets used rather than raced by this fallback.\n */\nexport const EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS = 80;\n\nlet fallbackId = 0;\ntype SurfaceSession = {\n connectionId: string;\n surfaces: Set<string>;\n leaseTimer?: number;\n unsubscribe?: () => void;\n unansweredHellos: number;\n epoch?: string;\n /** Acknowledged surfaces, keyed to the shared wall-clock instant their animation starts at. */\n acknowledgedAt: Map<string, number>;\n acknowledgementListeners: Map<string, Set<(startAt: number) => void>>;\n};\nconst sessions = new WeakMap<EmbeddedSurfaceTransport, SurfaceSession>();\n\nconst mintId = (prefix: string): string => {\n const randomUUID =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID()\n : undefined;\n if (randomUUID) {\n return `${prefix}-${randomUUID}`;\n }\n fallbackId += 1;\n return `${prefix}-${fallbackId.toString(36)}`;\n};\n\nconst getSession = (transport: EmbeddedSurfaceTransport) => {\n const current = sessions.get(transport);\n if (current) {\n return current;\n }\n const session: SurfaceSession = {\n connectionId: mintId('connection'),\n surfaces: new Set<string>(),\n unansweredHellos: 0,\n acknowledgedAt: new Map<string, number>(),\n acknowledgementListeners: new Map<string, Set<(startAt: number) => void>>(),\n };\n sessions.set(transport, session);\n return session;\n};\n\nconst send = (\n transport: EmbeddedSurfaceTransport,\n session: SurfaceSession,\n kind: 'hello' | 'surfaceSnapshot',\n payload: EmbeddedSurfacePayloads['hello'] | EmbeddedSurfacePayloads['surfaceSnapshot'],\n) => {\n transport.send({\n channel: EMBEDDED_SURFACE_CHANNEL,\n version: EMBEDDED_SURFACE_PROTOCOL_VERSION,\n connectionId: session.connectionId,\n kind,\n payload,\n });\n};\n\nconst sendSnapshot = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.epoch == null) {\n return;\n }\n send(transport, session, 'surfaceSnapshot', {\n epoch: session.epoch,\n surfaces: Array.from(session.surfaces, (surfaceId) => ({ surfaceId })),\n awaitsAck: true,\n });\n};\n\nconst rotateConnection = (session: SurfaceSession) => {\n // The host may have retired this connectionId in its LRU, so hellos stay dropped\n // until a fresh connectionId is minted.\n session.connectionId = mintId('connection');\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n};\n\nconst acknowledgeSurface = (session: SurfaceSession, surfaceId: string, startAt: number) => {\n if (session.acknowledgedAt.has(surfaceId)) {\n return;\n }\n session.acknowledgedAt.set(surfaceId, startAt);\n session.acknowledgementListeners.get(surfaceId)?.forEach((listener) => listener(startAt));\n};\n\nconst startSurfaceLease = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.leaseTimer != null) {\n return;\n }\n // Re-announces active surfaces to renew the host's lease. If the child stops\n // running, announcements cease and the host releases shell effects after timeout.\n session.leaseTimer = window.setInterval(() => {\n session.unansweredHellos += 1;\n if (session.unansweredHellos >= HELLO_ROTATION_THRESHOLD) {\n rotateConnection(session);\n }\n send(transport, session, 'hello', {});\n sendSnapshot(transport, session);\n }, SURFACE_REANNOUNCE_INTERVAL_MS);\n};\n\nconst stopSurfaceLease = (session: SurfaceSession) => {\n if (session.leaseTimer == null) {\n return;\n }\n window.clearInterval(session.leaseTimer);\n session.leaseTimer = undefined;\n};\n\nconst activateSession = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.unsubscribe != null) {\n return;\n }\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n session.unsubscribe = transport.subscribe((message) => {\n const childbound = coerceChildboundEnvelope(message);\n if (!childbound || childbound.connectionId !== session.connectionId) {\n return;\n }\n session.unansweredHellos = 0;\n if (childbound.kind === 'welcome') {\n if (session.epoch !== childbound.payload.epoch) {\n session.acknowledgedAt.clear();\n }\n session.epoch = childbound.payload.epoch;\n sendSnapshot(transport, session);\n return;\n }\n if (childbound.payload.epoch !== session.epoch) {\n return;\n }\n if (childbound.kind !== 'surfaceAck') {\n return;\n }\n childbound.payload.surfaces.forEach(({ surfaceId }) => {\n acknowledgeSurface(session, surfaceId, childbound.payload.startAt);\n });\n });\n send(transport, session, 'hello', {});\n};\n\nconst deactivateSession = (session: SurfaceSession) => {\n session.unsubscribe?.();\n session.unsubscribe = undefined;\n stopSurfaceLease(session);\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n};\n\nconst useEmbeddedSurfaceTransport = (): EmbeddedSurfaceTransport | null => {\n const [transport, setTransport] = useState<EmbeddedSurfaceTransport | null>(\n getEmbeddedSurfaceTransport,\n );\n\n useEffect(() => {\n const unsubscribe = subscribeEmbeddedSurfaceTransportChanges(() => {\n setTransport(getEmbeddedSurfaceTransport());\n });\n // A transport can register between render and this effect, and the registry only\n // notifies on change, so reconcile once the subscription is installed.\n setTransport(getEmbeddedSurfaceTransport());\n return unsubscribe;\n }, []);\n\n return transport;\n};\n\n/** Mints an id for a surface whose registration and host gate live in separate components. */\nexport const useEmbeddedSurfaceId = (): string => {\n const [surfaceId] = useState(() => mintId('surface'));\n return surfaceId;\n};\n\n/**\n * Announces the surface to the host for as long as the caller is mounted. Callers must render\n * only while their overlay is on screen: the host dims the shell around every announced surface,\n * and holding the announcement through React Aria's exit animation is what keeps the two halves\n * of the dim disappearing together.\n */\nexport default function useEmbeddedSurface(surfaceId?: string): void {\n const transport = useEmbeddedSurfaceTransport();\n const fallbackSurfaceId = useEmbeddedSurfaceId();\n const ownSurfaceId = surfaceId ?? fallbackSurfaceId;\n\n useEffect(() => {\n if (!transport) {\n return;\n }\n const session = getSession(transport);\n activateSession(transport, session);\n session.surfaces.add(ownSurfaceId);\n if (session.surfaces.size === 1) {\n startSurfaceLease(transport, session);\n }\n if (session.epoch != null) {\n sendSnapshot(transport, session);\n }\n\n return () => {\n session.surfaces.delete(ownSurfaceId);\n session.acknowledgedAt.delete(ownSurfaceId);\n if (session.surfaces.size === 0) {\n if (session.epoch != null) {\n sendSnapshot(transport, session);\n }\n deactivateSession(session);\n } else {\n sendSnapshot(transport, session);\n }\n };\n }, [ownSurfaceId, transport]);\n\n useEffect(() => {\n if (!transport) {\n return;\n }\n let active = true;\n let pendingAnimationFrame: number | null = null;\n const handleFocusOut = (event: FocusEvent) => {\n if (event.relatedTarget != null) {\n return;\n }\n event.stopImmediatePropagation();\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const target = event.target;\n if (pendingAnimationFrame != null) {\n cancelAnimationFrame(pendingAnimationFrame);\n }\n pendingAnimationFrame = requestAnimationFrame(() => {\n pendingAnimationFrame = null;\n if (!active || !target.isConnected) {\n return;\n }\n if (\n document.hasFocus() &&\n (document.activeElement == null || document.activeElement === document.body)\n ) {\n target.focus();\n }\n });\n };\n document.addEventListener('focusout', handleFocusOut, true);\n return () => {\n active = false;\n if (pendingAnimationFrame != null) {\n cancelAnimationFrame(pendingAnimationFrame);\n }\n document.removeEventListener('focusout', handleFocusOut, true);\n };\n }, [transport]);\n}\n\nexport type EmbeddedSurfaceGate = {\n /** False while the overlay must hold its opening animation paused on its first frame. */\n ready: boolean;\n /**\n * CSS `animation-delay` that lands the overlay's animation on the host's shared start instant.\n * Negative when the acknowledgement arrived after that instant, so the animation joins in\n * progress rather than starting late.\n */\n animationDelayMs: number;\n};\n\nconst PENDING_GATE: EmbeddedSurfaceGate = { ready: false, animationDelayMs: 0 };\nconst RELEASED_GATE: EmbeddedSurfaceGate = { ready: true, animationDelayMs: 0 };\n// A start instant further out than the no-ack fallback would have waited is not a schedule worth\n// honouring; with fill-mode `both` an unbounded positive delay holds the overlay hidden.\nconst releasedGateAt = (startAt: number): EmbeddedSurfaceGate => ({\n ready: true,\n animationDelayMs: Math.min(startAt - Date.now(), EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS),\n});\n\n/**\n * Holds the surface's opening animation until the host acknowledges it, then reports the delay that\n * aligns the animation with the host's shared start instant. Lives outside the overlay so the gate\n * can hold the child's animation from its very first frame, before the overlay content mounts and\n * announces.\n */\nexport const useEmbeddedSurfaceGate = (surfaceId: string, isOpen: boolean): EmbeddedSurfaceGate => {\n const transport = useEmbeddedSurfaceTransport();\n const [gate, setGate] = useState(() =>\n getEmbeddedSurfaceTransport() == null ? RELEASED_GATE : PENDING_GATE,\n );\n // The gate stays mounted while closed, so a previous cycle left the surface released. Flip back\n // to pending during the opening render: an effect would land after the browser has painted a\n // frame of the entrance animation. Closing leaves the gate untouched so the overlay's animation\n // declaration is stable while React Aria watches it for an exit animation.\n const [wasOpen, setWasOpen] = useState(isOpen);\n if (wasOpen !== isOpen) {\n setWasOpen(isOpen);\n if (isOpen && transport != null) {\n setGate(PENDING_GATE);\n }\n }\n\n useEffect(() => {\n if (!transport) {\n setGate(RELEASED_GATE);\n return;\n }\n if (!isOpen) {\n return;\n }\n const session = getSession(transport);\n const acknowledgedStartAt = session.acknowledgedAt.get(surfaceId);\n if (acknowledgedStartAt != null) {\n setGate(releasedGateAt(acknowledgedStartAt));\n return;\n }\n\n const listeners =\n session.acknowledgementListeners.get(surfaceId) ?? new Set<(startAt: number) => void>();\n const unsubscribe = () => {\n listeners.delete(release);\n if (listeners.size === 0) {\n session.acknowledgementListeners.delete(surfaceId);\n }\n };\n // A host that never acknowledges (an older dashboard, or none at all) must not leave the\n // overlay paused at opacity 0. Once released either way, the animation is running and a later\n // acknowledgement must not reschedule it.\n const fallback = window.setTimeout(() => {\n unsubscribe();\n setGate(RELEASED_GATE);\n }, EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS);\n const release = (startAt: number) => {\n window.clearTimeout(fallback);\n unsubscribe();\n setGate(releasedGateAt(startAt));\n };\n listeners.add(release);\n session.acknowledgementListeners.set(surfaceId, listeners);\n\n return () => {\n window.clearTimeout(fallback);\n unsubscribe();\n };\n }, [isOpen, surfaceId, transport]);\n\n return gate;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useEmbeddedSurface.mjs","names":[],"sources":["../../src/lib/useEmbeddedSurface.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n EMBEDDED_SURFACE_PROTOCOL_VERSION,\n EMBEDDED_SURFACE_CHANNEL,\n coerceChildboundEnvelope,\n type EmbeddedSurfacePayloads,\n} from 'design-system/lib/embeddedSurfaceProtocol';\nimport {\n getEmbeddedSurfaceTransport,\n subscribeEmbeddedSurfaceTransportChanges,\n type EmbeddedSurfaceTransport,\n} from 'design-system/lib/embeddedSurfaceRegistry';\n\nconst SURFACE_REANNOUNCE_INTERVAL_MS = 2000;\nconst HELLO_ROTATION_THRESHOLD = 2;\n/**\n * How long the overlay stays paused waiting for an acknowledgement. It has to outlast the host's\n * animation lead so a slow acknowledgement still gets used rather than raced by this fallback.\n */\nexport const EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS = 80;\n\nlet fallbackId = 0;\ntype SurfaceSession = {\n connectionId: string;\n surfaces: Set<string>;\n leaseTimer?: number;\n unsubscribe?: () => void;\n unansweredHellos: number;\n epoch?: string;\n /** Acknowledged surfaces, keyed to the shared wall-clock instant their animation starts at. */\n acknowledgedAt: Map<string, number>;\n acknowledgementListeners: Map<string, Set<(startAt: number) => void>>;\n};\nconst sessions = new WeakMap<EmbeddedSurfaceTransport, SurfaceSession>();\n\nconst mintId = (prefix: string): string => {\n const randomUUID =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID()\n : undefined;\n if (randomUUID) {\n return `${prefix}-${randomUUID}`;\n }\n fallbackId += 1;\n return `${prefix}-${fallbackId.toString(36)}`;\n};\n\nconst getSession = (transport: EmbeddedSurfaceTransport) => {\n const current = sessions.get(transport);\n if (current) {\n return current;\n }\n const session: SurfaceSession = {\n connectionId: mintId('connection'),\n surfaces: new Set<string>(),\n unansweredHellos: 0,\n acknowledgedAt: new Map<string, number>(),\n acknowledgementListeners: new Map<string, Set<(startAt: number) => void>>(),\n };\n sessions.set(transport, session);\n return session;\n};\n\nconst send = (\n transport: EmbeddedSurfaceTransport,\n session: SurfaceSession,\n kind: 'hello' | 'surfaceSnapshot',\n payload: EmbeddedSurfacePayloads['hello'] | EmbeddedSurfacePayloads['surfaceSnapshot'],\n) => {\n transport.send({\n channel: EMBEDDED_SURFACE_CHANNEL,\n version: EMBEDDED_SURFACE_PROTOCOL_VERSION,\n connectionId: session.connectionId,\n kind,\n payload,\n });\n};\n\nconst sendSnapshot = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.epoch == null) {\n return;\n }\n send(transport, session, 'surfaceSnapshot', {\n epoch: session.epoch,\n surfaces: Array.from(session.surfaces, (surfaceId) => ({ surfaceId })),\n awaitsAck: true,\n });\n};\n\nconst rotateConnection = (session: SurfaceSession) => {\n // The host may have retired this connectionId in its LRU, so hellos stay dropped\n // until a fresh connectionId is minted.\n session.connectionId = mintId('connection');\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n};\n\nconst acknowledgeSurface = (session: SurfaceSession, surfaceId: string, startAt: number) => {\n if (session.acknowledgedAt.has(surfaceId)) {\n return;\n }\n session.acknowledgedAt.set(surfaceId, startAt);\n session.acknowledgementListeners.get(surfaceId)?.forEach((listener) => listener(startAt));\n};\n\nconst startSurfaceLease = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.leaseTimer != null) {\n return;\n }\n // Re-announces active surfaces to renew the host's lease. If the child stops\n // running, announcements cease and the host releases shell effects after timeout.\n session.leaseTimer = window.setInterval(() => {\n session.unansweredHellos += 1;\n if (session.unansweredHellos >= HELLO_ROTATION_THRESHOLD) {\n rotateConnection(session);\n }\n send(transport, session, 'hello', {});\n sendSnapshot(transport, session);\n }, SURFACE_REANNOUNCE_INTERVAL_MS);\n};\n\nconst stopSurfaceLease = (session: SurfaceSession) => {\n if (session.leaseTimer == null) {\n return;\n }\n window.clearInterval(session.leaseTimer);\n session.leaseTimer = undefined;\n};\n\nconst activateSession = (transport: EmbeddedSurfaceTransport, session: SurfaceSession) => {\n if (session.unsubscribe != null) {\n return;\n }\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n session.unsubscribe = transport.subscribe((message) => {\n const childbound = coerceChildboundEnvelope(message);\n if (!childbound || childbound.connectionId !== session.connectionId) {\n return;\n }\n session.unansweredHellos = 0;\n if (childbound.kind === 'welcome') {\n if (session.epoch !== childbound.payload.epoch) {\n session.acknowledgedAt.clear();\n }\n session.epoch = childbound.payload.epoch;\n sendSnapshot(transport, session);\n return;\n }\n if (childbound.payload.epoch !== session.epoch) {\n return;\n }\n if (childbound.kind !== 'surfaceAck') {\n return;\n }\n childbound.payload.surfaces.forEach(({ surfaceId }) => {\n acknowledgeSurface(session, surfaceId, childbound.payload.startAt);\n });\n });\n send(transport, session, 'hello', {});\n};\n\nconst deactivateSession = (session: SurfaceSession) => {\n session.unsubscribe?.();\n session.unsubscribe = undefined;\n stopSurfaceLease(session);\n session.epoch = undefined;\n session.acknowledgedAt.clear();\n session.unansweredHellos = 0;\n};\n\nconst useEmbeddedSurfaceTransport = (): EmbeddedSurfaceTransport | null => {\n const [transport, setTransport] = useState<EmbeddedSurfaceTransport | null>(\n getEmbeddedSurfaceTransport,\n );\n\n useEffect(() => {\n const unsubscribe = subscribeEmbeddedSurfaceTransportChanges(() => {\n setTransport(getEmbeddedSurfaceTransport());\n });\n // A transport can register between render and this effect, and the registry only\n // notifies on change, so reconcile once the subscription is installed.\n setTransport(getEmbeddedSurfaceTransport());\n return unsubscribe;\n }, []);\n\n return transport;\n};\n\n/** Mints an id for a surface whose registration and host gate live in separate components. */\nexport const useEmbeddedSurfaceId = (): string => {\n const [surfaceId] = useState(() => mintId('surface'));\n return surfaceId;\n};\n\n/**\n * Announces the surface to the host for as long as the caller is mounted. Callers must render\n * only while their overlay is on screen: the host dims the shell around every announced surface,\n * and holding the announcement through React Aria's exit animation is what keeps the two halves\n * of the dim disappearing together.\n */\nexport default function useEmbeddedSurface(surfaceId?: string): void {\n const transport = useEmbeddedSurfaceTransport();\n const fallbackSurfaceId = useEmbeddedSurfaceId();\n const ownSurfaceId = surfaceId ?? fallbackSurfaceId;\n\n useEffect(() => {\n if (!transport) {\n return;\n }\n const session = getSession(transport);\n activateSession(transport, session);\n session.surfaces.add(ownSurfaceId);\n if (session.surfaces.size === 1) {\n startSurfaceLease(transport, session);\n }\n if (session.epoch != null) {\n sendSnapshot(transport, session);\n }\n\n return () => {\n session.surfaces.delete(ownSurfaceId);\n session.acknowledgedAt.delete(ownSurfaceId);\n if (session.surfaces.size === 0) {\n if (session.epoch != null) {\n sendSnapshot(transport, session);\n }\n deactivateSession(session);\n } else {\n sendSnapshot(transport, session);\n }\n };\n }, [ownSurfaceId, transport]);\n\n useEffect(() => {\n if (!transport) {\n return;\n }\n let active = true;\n let pendingAnimationFrame: number | null = null;\n const handleFocusOut = (event: FocusEvent) => {\n if (event.relatedTarget != null) {\n return;\n }\n event.stopImmediatePropagation();\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const target = event.target;\n if (pendingAnimationFrame != null) {\n cancelAnimationFrame(pendingAnimationFrame);\n }\n pendingAnimationFrame = requestAnimationFrame(() => {\n pendingAnimationFrame = null;\n if (!active || !target.isConnected) {\n return;\n }\n if (\n document.hasFocus() &&\n (document.activeElement == null || document.activeElement === document.body)\n ) {\n target.focus();\n }\n });\n };\n document.addEventListener('focusout', handleFocusOut, true);\n return () => {\n active = false;\n if (pendingAnimationFrame != null) {\n cancelAnimationFrame(pendingAnimationFrame);\n }\n document.removeEventListener('focusout', handleFocusOut, true);\n };\n }, [transport]);\n}\n\nexport type EmbeddedSurfaceGate = {\n /** False while the overlay must hold its opening animation paused on its first frame. */\n ready: boolean;\n /**\n * CSS `animation-delay` that lands the overlay's animation on the host's shared start instant.\n * Negative when the acknowledgement arrived after that instant, so the animation joins in\n * progress rather than starting late.\n */\n animationDelayMs: number;\n};\n\nconst PENDING_GATE: EmbeddedSurfaceGate = { ready: false, animationDelayMs: 0 };\nconst RELEASED_GATE: EmbeddedSurfaceGate = { ready: true, animationDelayMs: 0 };\n// A start instant further out than the no-ack fallback would have waited is not a schedule worth\n// honouring; with fill-mode `both` an unbounded positive delay holds the overlay hidden.\nconst releasedGateAt = (startAt: number): EmbeddedSurfaceGate => ({\n ready: true,\n animationDelayMs: Math.min(startAt - Date.now(), EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS),\n});\n\n/**\n * Holds the surface's opening animation until the host acknowledges it, then reports the delay that\n * aligns the animation with the host's shared start instant. Lives outside the overlay so the gate\n * can hold the child's animation from its very first frame, before the overlay content mounts and\n * announces.\n */\nexport const useEmbeddedSurfaceGate = (surfaceId: string, isOpen: boolean): EmbeddedSurfaceGate => {\n const transport = useEmbeddedSurfaceTransport();\n const [gate, setGate] = useState(() =>\n getEmbeddedSurfaceTransport() == null ? RELEASED_GATE : PENDING_GATE,\n );\n // The gate stays mounted while closed, so a previous cycle left the surface released. Flip back\n // to pending during the opening render: an effect would land after the browser has painted a\n // frame of the entrance animation. Closing leaves the gate untouched so the overlay's animation\n // declaration is stable while React Aria watches it for an exit animation.\n const [wasOpen, setWasOpen] = useState(isOpen);\n if (wasOpen !== isOpen) {\n setWasOpen(isOpen);\n if (isOpen && transport != null) {\n setGate(PENDING_GATE);\n }\n }\n\n useEffect(() => {\n if (!transport) {\n setGate(RELEASED_GATE);\n return;\n }\n if (!isOpen) {\n return;\n }\n const session = getSession(transport);\n const acknowledgedStartAt = session.acknowledgedAt.get(surfaceId);\n if (acknowledgedStartAt != null) {\n setGate(releasedGateAt(acknowledgedStartAt));\n return;\n }\n\n const listeners =\n session.acknowledgementListeners.get(surfaceId) ?? new Set<(startAt: number) => void>();\n const unsubscribe = () => {\n listeners.delete(release);\n if (listeners.size === 0) {\n session.acknowledgementListeners.delete(surfaceId);\n }\n };\n // A host that never acknowledges (an older dashboard, or none at all) must not leave the\n // overlay paused at opacity 0. Once released either way, the animation is running and a later\n // acknowledgement must not reschedule it.\n const fallback = window.setTimeout(() => {\n unsubscribe();\n setGate(RELEASED_GATE);\n }, EMBEDDED_SURFACE_HOST_ACK_TIMEOUT_MS);\n const release = (startAt: number) => {\n window.clearTimeout(fallback);\n unsubscribe();\n setGate(releasedGateAt(startAt));\n };\n listeners.add(release);\n session.acknowledgementListeners.set(surfaceId, listeners);\n\n return () => {\n window.clearTimeout(fallback);\n unsubscribe();\n };\n }, [isOpen, surfaceId, transport]);\n\n return gate;\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsOverflow.mjs","names":[],"sources":["../../lib/useIsOverflow.ts"],"sourcesContent":["import { type RefObject, useLayoutEffect, useMemo, useState } from 'react';\n\ntype OverflowState = {\n isOverflowWidth: boolean;\n isOverflowHeight: boolean;\n};\n\nconst INITIAL_STATE: OverflowState = { isOverflowWidth: false, isOverflowHeight: false };\n\nconst subscribers = new WeakMap<Element, (state: OverflowState) => void>();\nlet sharedObserver: ResizeObserver | null = null;\n\nconst measureOverflow = (el: HTMLElement): OverflowState => ({\n isOverflowWidth: el.scrollWidth > el.clientWidth,\n isOverflowHeight: el.scrollHeight > el.clientHeight,\n});\n\nconst getSharedObserver = (): ResizeObserver => {\n if (sharedObserver) {\n return sharedObserver;\n }\n sharedObserver = new ResizeObserver((entries) => {\n const updates: { setter: (state: OverflowState) => void; state: OverflowState }[] = [];\n for (const entry of entries) {\n const setter = subscribers.get(entry.target);\n if (!setter) {\n continue;\n }\n const el = entry.target as HTMLElement;\n updates.push({\n setter,\n state: measureOverflow(el),\n });\n }\n for (const { setter, state } of updates) {\n setter(state);\n }\n });\n return sharedObserver;\n};\n\nexport const useIsOverflow = <T extends HTMLElement>(ref: RefObject<T>) => {\n const [state, setState] = useState<OverflowState>(INITIAL_STATE);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) {\n return;\n }\n\n const onUpdate = (next: OverflowState) => {\n setState((prev) =>\n prev.isOverflowWidth === next.isOverflowWidth &&\n prev.isOverflowHeight === next.isOverflowHeight\n ? prev\n : next,\n );\n };\n\n subscribers.set(node, onUpdate);\n const observer = getSharedObserver();\n observer.observe(node);\n onUpdate(measureOverflow(node));\n\n return () => {\n observer.unobserve(node);\n subscribers.delete(node);\n };\n }, [ref]);\n\n return useMemo(\n () => ({\n isOverflowWidth: state.isOverflowWidth,\n isOverflowHeight: state.isOverflowHeight,\n isOverflow: state.isOverflowWidth || state.isOverflowHeight,\n }),\n [state],\n );\n};\n"],"mappings":";;AAOA,MAAM,gBAA+B;CAAE,iBAAiB;CAAO,kBAAkB;CAAO;AAExF,MAAM,8BAAc,IAAI,SAAkD;AAC1E,IAAI,iBAAwC;AAE5C,MAAM,mBAAmB,QAAoC;CAC3D,iBAAiB,GAAG,cAAc,GAAG;CACrC,kBAAkB,GAAG,eAAe,GAAG;CACxC;AAED,MAAM,0BAA0C;AAC9C,KAAI,eACF,QAAO;AAET,kBAAiB,IAAI,gBAAgB,YAAY;EAC/C,MAAM,UAA8E,EAAE;AACtF,OAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,SAAS,YAAY,IAAI,MAAM,OAAO;AAC5C,OAAI,CAAC,OACH;GAEF,MAAM,KAAK,MAAM;AACjB,WAAQ,KAAK;IACX;IACA,OAAO,gBAAgB,GAAG;IAC3B,CAAC;;AAEJ,OAAK,MAAM,EAAE,QAAQ,WAAW,QAC9B,QAAO,MAAM;GAEf;AACF,QAAO;;AAGT,MAAa,iBAAwC,QAAsB;CACzE,MAAM,CAAC,OAAO,YAAY,SAAwB,cAAc;AAEhE,uBAAsB;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,CAAC,KACH;EAGF,MAAM,YAAY,SAAwB;AACxC,aAAU,SACR,KAAK,oBAAoB,KAAK,mBAC9B,KAAK,qBAAqB,KAAK,mBAC3B,OACA,KACL;;AAGH,cAAY,IAAI,MAAM,SAAS;EAC/B,MAAM,WAAW,mBAAmB;AACpC,WAAS,QAAQ,KAAK;AACtB,WAAS,gBAAgB,KAAK,CAAC;AAE/B,eAAa;AACX,YAAS,UAAU,KAAK;AACxB,eAAY,OAAO,KAAK;;IAEzB,CAAC,IAAI,CAAC;AAET,QAAO,eACE;EACL,iBAAiB,MAAM;EACvB,kBAAkB,MAAM;EACxB,YAAY,MAAM,mBAAmB,MAAM;EAC5C,GACD,CAAC,MAAM,CACR"}
|
|
1
|
+
{"version":3,"file":"useIsOverflow.mjs","names":[],"sources":["../../src/lib/useIsOverflow.ts"],"sourcesContent":["import { type RefObject, useLayoutEffect, useMemo, useState } from 'react';\n\ntype OverflowState = {\n isOverflowWidth: boolean;\n isOverflowHeight: boolean;\n};\n\nconst INITIAL_STATE: OverflowState = { isOverflowWidth: false, isOverflowHeight: false };\n\nconst subscribers = new WeakMap<Element, (state: OverflowState) => void>();\nlet sharedObserver: ResizeObserver | null = null;\n\nconst measureOverflow = (el: HTMLElement): OverflowState => ({\n isOverflowWidth: el.scrollWidth > el.clientWidth,\n isOverflowHeight: el.scrollHeight > el.clientHeight,\n});\n\nconst getSharedObserver = (): ResizeObserver => {\n if (sharedObserver) {\n return sharedObserver;\n }\n sharedObserver = new ResizeObserver((entries) => {\n const updates: { setter: (state: OverflowState) => void; state: OverflowState }[] = [];\n for (const entry of entries) {\n const setter = subscribers.get(entry.target);\n if (!setter) {\n continue;\n }\n const el = entry.target as HTMLElement;\n updates.push({\n setter,\n state: measureOverflow(el),\n });\n }\n for (const { setter, state } of updates) {\n setter(state);\n }\n });\n return sharedObserver;\n};\n\nexport const useIsOverflow = <T extends HTMLElement>(ref: RefObject<T>) => {\n const [state, setState] = useState<OverflowState>(INITIAL_STATE);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) {\n return;\n }\n\n const onUpdate = (next: OverflowState) => {\n setState((prev) =>\n prev.isOverflowWidth === next.isOverflowWidth &&\n prev.isOverflowHeight === next.isOverflowHeight\n ? prev\n : next,\n );\n };\n\n subscribers.set(node, onUpdate);\n const observer = getSharedObserver();\n observer.observe(node);\n onUpdate(measureOverflow(node));\n\n return () => {\n observer.unobserve(node);\n subscribers.delete(node);\n };\n }, [ref]);\n\n return useMemo(\n () => ({\n isOverflowWidth: state.isOverflowWidth,\n isOverflowHeight: state.isOverflowHeight,\n isOverflow: state.isOverflowWidth || state.isOverflowHeight,\n }),\n [state],\n );\n};\n"],"mappings":";;AAOA,MAAM,gBAA+B;CAAE,iBAAiB;CAAO,kBAAkB;CAAO;AAExF,MAAM,8BAAc,IAAI,SAAkD;AAC1E,IAAI,iBAAwC;AAE5C,MAAM,mBAAmB,QAAoC;CAC3D,iBAAiB,GAAG,cAAc,GAAG;CACrC,kBAAkB,GAAG,eAAe,GAAG;CACxC;AAED,MAAM,0BAA0C;AAC9C,KAAI,eACF,QAAO;AAET,kBAAiB,IAAI,gBAAgB,YAAY;EAC/C,MAAM,UAA8E,EAAE;AACtF,OAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,SAAS,YAAY,IAAI,MAAM,OAAO;AAC5C,OAAI,CAAC,OACH;GAEF,MAAM,KAAK,MAAM;AACjB,WAAQ,KAAK;IACX;IACA,OAAO,gBAAgB,GAAG;IAC3B,CAAC;;AAEJ,OAAK,MAAM,EAAE,QAAQ,WAAW,QAC9B,QAAO,MAAM;GAEf;AACF,QAAO;;AAGT,MAAa,iBAAwC,QAAsB;CACzE,MAAM,CAAC,OAAO,YAAY,SAAwB,cAAc;AAEhE,uBAAsB;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,CAAC,KACH;EAGF,MAAM,YAAY,SAAwB;AACxC,aAAU,SACR,KAAK,oBAAoB,KAAK,mBAC9B,KAAK,qBAAqB,KAAK,mBAC3B,OACA,KACL;;AAGH,cAAY,IAAI,MAAM,SAAS;EAC/B,MAAM,WAAW,mBAAmB;AACpC,WAAS,QAAQ,KAAK;AACtB,WAAS,gBAAgB,KAAK,CAAC;AAE/B,eAAa;AACX,YAAS,UAAU,KAAK;AACxB,eAAY,OAAO,KAAK;;IAEzB,CAAC,IAAI,CAAC;AAET,QAAO,eACE;EACL,iBAAiB,MAAM;EACvB,kBAAkB,MAAM;EACxB,YAAY,MAAM,mBAAmB,MAAM;EAC5C,GACD,CAAC,MAAM,CACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModalInsetRight.mjs","names":[],"sources":["../../lib/useModalInsetRight.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nconst CSS_VAR = '--modal-inset-right';\n\n// Match AgentsPanel sidebar transition durations\nexport const SIDEBAR_OPEN_TRANSITION_MS = 425;\nexport const SIDEBAR_CLOSE_TRANSITION_MS = 200;\n\nconst getModalInsetRight = () =>\n getComputedStyle(document.documentElement).getPropertyValue(CSS_VAR).trim() || '0px';\n\nconst prefersReducedMotion = () =>\n typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\nexport type PanelInsetState = 'closed' | 'opening' | 'open' | 'closing';\n\nexport interface ModalInsetRight {\n /** Animated inset value — starts at 0px on panel open so CSS transition fires */\n insetRight: string;\n panelState: PanelInsetState;\n}\n\n/**\n * Returns the current value of --modal-inset-right from :root, reactively updating\n * as the agents side panel animates open/closed or is resized. Also tracks whether\n * the panel is opening, open, closing, or closed.\n *\n * panelState stays 'opening'/'closing' for the full transition duration so that\n * CSS transitions on consumers have time to animate.\n */\nconst useModalInsetRight = (): ModalInsetRight => {\n const [insetRight, setInsetRight] = useState(getModalInsetRight);\n const [panelState, setPanelState] = useState<PanelInsetState>(() =>\n getModalInsetRight() !== '0px' ? 'open' : 'closed',\n );\n const prevInsetRight = useRef(getModalInsetRight());\n const transitionTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const prev = prevInsetRight.current;\n const next = getModalInsetRight();\n prevInsetRight.current = next;\n\n if (prev === '0px' && next !== '0px') {\n if (prefersReducedMotion()) {\n setInsetRight(next);\n setPanelState('open');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight('0px');\n setPanelState('opening');\n rafRef.current = requestAnimationFrame(() => setInsetRight(next));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('open'),\n SIDEBAR_OPEN_TRANSITION_MS,\n );\n }\n } else if (prev !== '0px' && next === '0px') {\n if (prefersReducedMotion()) {\n setInsetRight('0px');\n setPanelState('closed');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight(prev);\n setPanelState('closing');\n rafRef.current = requestAnimationFrame(() => setInsetRight('0px'));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('closed'),\n SIDEBAR_CLOSE_TRANSITION_MS,\n );\n }\n } else {\n setInsetRight(next);\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n\n return () => {\n observer.disconnect();\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n };\n }, []);\n\n return { insetRight, panelState };\n};\n\nexport default useModalInsetRight;\n"],"mappings":";;AAEA,MAAM,UAAU;AAGhB,MAAa,6BAA6B;AAC1C,MAAa,8BAA8B;AAE3C,MAAM,2BACJ,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,QAAQ,CAAC,MAAM,IAAI;AAEjF,MAAM,6BACJ,OAAO,WAAW,eAAe,OAAO,WAAW,mCAAmC,CAAC;;;;;;;;;AAkBzF,MAAM,2BAA4C;CAChD,MAAM,CAAC,YAAY,iBAAiB,SAAS,mBAAmB;CAChE,MAAM,CAAC,YAAY,iBAAiB,eAClC,oBAAoB,KAAK,QAAQ,SAAS,SAC3C;CACD,MAAM,iBAAiB,OAAO,oBAAoB,CAAC;CACnD,MAAM,qBAAqB,OAA6C,KAAK;CAC7E,MAAM,SAAS,OAAsB,KAAK;AAE1C,iBAAgB;EACd,MAAM,WAAW,IAAI,uBAAuB;GAC1C,MAAM,OAAO,eAAe;GAC5B,MAAM,OAAO,oBAAoB;AACjC,kBAAe,UAAU;AAEzB,OAAI,SAAS,SAAS,SAAS,MAC7B,KAAI,sBAAsB,EAAE;AAC1B,kBAAc,KAAK;AACnB,kBAAc,OAAO;UAChB;AACL,QAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;AAEtC,QAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,kBAAc,MAAM;AACpB,kBAAc,UAAU;AACxB,WAAO,UAAU,4BAA4B,cAAc,KAAK,CAAC;AACjE,uBAAmB,UAAU,iBACrB,cAAc,OAAO,EAAA,IAE5B;;YAEM,SAAS,SAAS,SAAS,MACpC,KAAI,sBAAsB,EAAE;AAC1B,kBAAc,MAAM;AACpB,kBAAc,SAAS;UAClB;AACL,QAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;AAEtC,QAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,kBAAc,KAAK;AACnB,kBAAc,UAAU;AACxB,WAAO,UAAU,4BAA4B,cAAc,MAAM,CAAC;AAClE,uBAAmB,UAAU,iBACrB,cAAc,SAAS,EAAA,IAE9B;;OAGH,eAAc,KAAK;IAErB;AAEF,WAAS,QAAQ,SAAS,iBAAiB;GACzC,YAAY;GACZ,iBAAiB,CAAC,QAAQ;GAC3B,CAAC;AAEF,eAAa;AACX,YAAS,YAAY;AACrB,OAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,OAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;;IAGvC,EAAE,CAAC;AAEN,QAAO;EAAE;EAAY;EAAY"}
|
|
1
|
+
{"version":3,"file":"useModalInsetRight.mjs","names":[],"sources":["../../src/lib/useModalInsetRight.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nconst CSS_VAR = '--modal-inset-right';\n\n// Match AgentsPanel sidebar transition durations\nexport const SIDEBAR_OPEN_TRANSITION_MS = 425;\nexport const SIDEBAR_CLOSE_TRANSITION_MS = 200;\n\nconst getModalInsetRight = () =>\n getComputedStyle(document.documentElement).getPropertyValue(CSS_VAR).trim() || '0px';\n\nconst prefersReducedMotion = () =>\n typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\nexport type PanelInsetState = 'closed' | 'opening' | 'open' | 'closing';\n\nexport interface ModalInsetRight {\n /** Animated inset value — starts at 0px on panel open so CSS transition fires */\n insetRight: string;\n panelState: PanelInsetState;\n}\n\n/**\n * Returns the current value of --modal-inset-right from :root, reactively updating\n * as the agents side panel animates open/closed or is resized. Also tracks whether\n * the panel is opening, open, closing, or closed.\n *\n * panelState stays 'opening'/'closing' for the full transition duration so that\n * CSS transitions on consumers have time to animate.\n */\nconst useModalInsetRight = (): ModalInsetRight => {\n const [insetRight, setInsetRight] = useState(getModalInsetRight);\n const [panelState, setPanelState] = useState<PanelInsetState>(() =>\n getModalInsetRight() !== '0px' ? 'open' : 'closed',\n );\n const prevInsetRight = useRef(getModalInsetRight());\n const transitionTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const prev = prevInsetRight.current;\n const next = getModalInsetRight();\n prevInsetRight.current = next;\n\n if (prev === '0px' && next !== '0px') {\n if (prefersReducedMotion()) {\n setInsetRight(next);\n setPanelState('open');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight('0px');\n setPanelState('opening');\n rafRef.current = requestAnimationFrame(() => setInsetRight(next));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('open'),\n SIDEBAR_OPEN_TRANSITION_MS,\n );\n }\n } else if (prev !== '0px' && next === '0px') {\n if (prefersReducedMotion()) {\n setInsetRight('0px');\n setPanelState('closed');\n } else {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n setInsetRight(prev);\n setPanelState('closing');\n rafRef.current = requestAnimationFrame(() => setInsetRight('0px'));\n transitionTimerRef.current = setTimeout(\n () => setPanelState('closed'),\n SIDEBAR_CLOSE_TRANSITION_MS,\n );\n }\n } else {\n setInsetRight(next);\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n\n return () => {\n observer.disconnect();\n if (transitionTimerRef.current) {\n clearTimeout(transitionTimerRef.current);\n }\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n };\n }, []);\n\n return { insetRight, panelState };\n};\n\nexport default useModalInsetRight;\n"],"mappings":";;AAEA,MAAM,UAAU;AAGhB,MAAa,6BAA6B;AAC1C,MAAa,8BAA8B;AAE3C,MAAM,2BACJ,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,QAAQ,CAAC,MAAM,IAAI;AAEjF,MAAM,6BACJ,OAAO,WAAW,eAAe,OAAO,WAAW,mCAAmC,CAAC;;;;;;;;;AAkBzF,MAAM,2BAA4C;CAChD,MAAM,CAAC,YAAY,iBAAiB,SAAS,mBAAmB;CAChE,MAAM,CAAC,YAAY,iBAAiB,eAClC,oBAAoB,KAAK,QAAQ,SAAS,SAC3C;CACD,MAAM,iBAAiB,OAAO,oBAAoB,CAAC;CACnD,MAAM,qBAAqB,OAA6C,KAAK;CAC7E,MAAM,SAAS,OAAsB,KAAK;AAE1C,iBAAgB;EACd,MAAM,WAAW,IAAI,uBAAuB;GAC1C,MAAM,OAAO,eAAe;GAC5B,MAAM,OAAO,oBAAoB;AACjC,kBAAe,UAAU;AAEzB,OAAI,SAAS,SAAS,SAAS,MAC7B,KAAI,sBAAsB,EAAE;AAC1B,kBAAc,KAAK;AACnB,kBAAc,OAAO;UAChB;AACL,QAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;AAEtC,QAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,kBAAc,MAAM;AACpB,kBAAc,UAAU;AACxB,WAAO,UAAU,4BAA4B,cAAc,KAAK,CAAC;AACjE,uBAAmB,UAAU,iBACrB,cAAc,OAAO,EAAA,IAE5B;;YAEM,SAAS,SAAS,SAAS,MACpC,KAAI,sBAAsB,EAAE;AAC1B,kBAAc,MAAM;AACpB,kBAAc,SAAS;UAClB;AACL,QAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;AAEtC,QAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,kBAAc,KAAK;AACnB,kBAAc,UAAU;AACxB,WAAO,UAAU,4BAA4B,cAAc,MAAM,CAAC;AAClE,uBAAmB,UAAU,iBACrB,cAAc,SAAS,EAAA,IAE9B;;OAGH,eAAc,KAAK;IAErB;AAEF,WAAS,QAAQ,SAAS,iBAAiB;GACzC,YAAY;GACZ,iBAAiB,CAAC,QAAQ;GAC3B,CAAC;AAEF,eAAa;AACX,YAAS,YAAY;AACrB,OAAI,mBAAmB,QACrB,cAAa,mBAAmB,QAAQ;AAE1C,OAAI,OAAO,QACT,sBAAqB,OAAO,QAAQ;;IAGvC,EAAE,CAAC;AAEN,QAAO;EAAE;EAAY;EAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOutsideClick.mjs","names":[],"sources":["../../lib/useOutsideClick.tsx"],"sourcesContent":["import { type RefObject, useEffect } from 'react';\n\nexport const useOutsideClick = ({\n ref,\n onOutsideClick,\n}: {\n ref: RefObject<HTMLElement>;\n onOutsideClick: (event: MouseEvent) => void;\n}) => {\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n onOutsideClick(event);\n }\n };\n\n document.addEventListener('mousedown', handleClick);\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [ref, onOutsideClick]);\n};\n"],"mappings":";;AAEA,MAAa,mBAAmB,EAC9B,KACA,qBAII;AACJ,iBAAgB;EACd,MAAM,eAAe,UAAsB;AACzC,OAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,OAAe,CAC5D,gBAAe,MAAM;;AAIzB,WAAS,iBAAiB,aAAa,YAAY;AACnD,eAAa;AACX,YAAS,oBAAoB,aAAa,YAAY;;IAEvD,CAAC,KAAK,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"useOutsideClick.mjs","names":[],"sources":["../../src/lib/useOutsideClick.tsx"],"sourcesContent":["import { type RefObject, useEffect } from 'react';\n\nexport const useOutsideClick = ({\n ref,\n onOutsideClick,\n}: {\n ref: RefObject<HTMLElement>;\n onOutsideClick: (event: MouseEvent) => void;\n}) => {\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n onOutsideClick(event);\n }\n };\n\n document.addEventListener('mousedown', handleClick);\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [ref, onOutsideClick]);\n};\n"],"mappings":";;AAEA,MAAa,mBAAmB,EAC9B,KACA,qBAII;AACJ,iBAAgB;EACd,MAAM,eAAe,UAAsB;AACzC,OAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,OAAe,CAC5D,gBAAe,MAAM;;AAIzB,WAAS,iBAAiB,aAAa,YAAY;AACnD,eAAa;AACX,YAAS,oBAAoB,aAAa,YAAY;;IAEvD,CAAC,KAAK,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizablePanel.mjs","names":[],"sources":["../../lib/useResizablePanel.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nexport enum PanelState {\n Drawer = 'drawer',\n Maximized = 'maximized',\n}\n\ninterface UseResizablePanelOptions {\n initialPanelState?: PanelState;\n initialSize?: number;\n /** Smallest size the panel snaps back to when a drag ends below it. */\n minSize: number;\n /** Fraction of the available space past which a released drag snaps to maximized. */\n snapThreshold?: number;\n}\n\nexport interface ResizablePanelState {\n /** Leave maximized and return to the drawer at `size` (null = `minSize`). */\n collapse: () => void;\n /** Open the drawer at the given size. */\n expandTo: (size: number) => void;\n /**\n * Called on every drag frame. `size` is the requested panel size and\n * `maxSize` the space the panel can grow into; both in px.\n */\n handleDragMove: (size: number, maxSize: number) => void;\n /** Called once when a drag ends; snaps to maximized or back to `minSize`. */\n handleDragRelease: () => void;\n maximize: () => void;\n panelState: PanelState;\n /**\n * Return from maximized to the drawer size the panel had before maximizing\n * (for a drag that snapped to maximized, the size when the drag started).\n */\n restore: () => void;\n size: number | null;\n toggleMaximized: () => void;\n}\n\n/**\n * Size and maximize/restore state for a resizable panel. Coordinates are\n * caller-supplied sizes, so the hook works for both viewport- and\n * container-anchored panels.\n */\nexport const useResizablePanel = ({\n initialPanelState = PanelState.Drawer,\n initialSize,\n minSize,\n snapThreshold = 0.95,\n}: UseResizablePanelOptions): ResizablePanelState => {\n const [size, setSize] = useState<number | null>(initialSize ?? null);\n const [panelState, setPanelState] = useState<PanelState>(initialPanelState);\n const maxSizeRef = useRef<number | null>(null);\n const dragStartSizeRef = useRef<number | null>(null);\n const sizeBeforeMaximizeRef = useRef<number | null>(\n initialPanelState === PanelState.Maximized ? (initialSize ?? null) : null,\n );\n\n const maximize = useCallback(() => {\n if (panelState !== PanelState.Maximized) {\n sizeBeforeMaximizeRef.current = size;\n }\n setPanelState(PanelState.Maximized);\n }, [panelState, size]);\n\n const restore = useCallback(() => {\n setPanelState(PanelState.Drawer);\n setSize(sizeBeforeMaximizeRef.current ?? minSize);\n }, [minSize]);\n\n const toggleMaximized = useCallback(() => {\n if (panelState === PanelState.Maximized) {\n restore();\n } else {\n maximize();\n }\n }, [maximize, panelState, restore]);\n\n const collapse = useCallback(() => {\n setPanelState(PanelState.Drawer);\n setSize(null);\n }, []);\n\n const expandTo = useCallback((nextSize: number) => {\n setPanelState(PanelState.Drawer);\n setSize(nextSize);\n }, []);\n\n const handleDragMove = useCallback(\n (nextSize: number, maxSize: number) => {\n if (maxSizeRef.current == null) {\n dragStartSizeRef.current = panelState === PanelState.Maximized ? null : size;\n }\n maxSizeRef.current = maxSize;\n setPanelState(PanelState.Drawer);\n setSize(Math.max(0, Math.min(nextSize, maxSize)));\n },\n [panelState, size],\n );\n\n const handleDragRelease = useCallback(() => {\n const maxSize = maxSizeRef.current;\n const dragStartSize = dragStartSizeRef.current;\n maxSizeRef.current = null;\n dragStartSizeRef.current = null;\n if (size == null || maxSize == null) {\n return;\n }\n\n if (size > maxSize * snapThreshold) {\n sizeBeforeMaximizeRef.current = dragStartSize;\n setPanelState(PanelState.Maximized);\n } else if (size < minSize) {\n setSize(minSize);\n }\n }, [minSize, size, snapThreshold]);\n\n return {\n collapse,\n expandTo,\n handleDragMove,\n handleDragRelease,\n maximize,\n panelState,\n restore,\n size,\n toggleMaximized,\n };\n};\n"],"mappings":";;AAEA,IAAY,aAAL,yBAAA,YAAA;AACL,YAAA,YAAA;AACA,YAAA,eAAA;;KACD;;;;;;AAuCD,MAAa,qBAAqB,EAChC,oBAAA,UACA,aACA,SACA,gBAAgB,UACmC;CACnD,MAAM,CAAC,MAAM,WAAW,SAAwB,eAAe,KAAK;CACpE,MAAM,CAAC,YAAY,iBAAiB,SAAqB,kBAAkB;CAC3E,MAAM,aAAa,OAAsB,KAAK;CAC9C,MAAM,mBAAmB,OAAsB,KAAK;CACpD,MAAM,wBAAwB,OAC5B,sBAAA,cAA8C,eAAe,OAAQ,KACtE;CAED,MAAM,WAAW,kBAAkB;AACjC,MAAI,eAAA,YACF,uBAAsB,UAAU;AAElC,gBAAA,YAAmC;IAClC,CAAC,YAAY,KAAK,CAAC;CAEtB,MAAM,UAAU,kBAAkB;AAChC,gBAAA,SAAgC;AAChC,UAAQ,sBAAsB,WAAW,QAAQ;IAChD,CAAC,QAAQ,CAAC;CAEb,MAAM,kBAAkB,kBAAkB;AACxC,MAAI,eAAA,YACF,UAAS;MAET,WAAU;IAEX;EAAC;EAAU;EAAY;EAAQ,CAAC;AAyCnC,QAAO;EACL,UAxCe,kBAAkB;AACjC,iBAAA,SAAgC;AAChC,WAAQ,KAAK;KACZ,EAAE,CAqCK;EACR,UApCe,aAAa,aAAqB;AACjD,iBAAA,SAAgC;AAChC,WAAQ,SAAS;KAChB,EAAE,CAiCK;EACR,gBAhCqB,aACpB,UAAkB,YAAoB;AACrC,OAAI,WAAW,WAAW,KACxB,kBAAiB,UAAU,eAAA,cAAsC,OAAO;AAE1E,cAAW,UAAU;AACrB,iBAAA,SAAgC;AAChC,WAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC;KAEnD,CAAC,YAAY,KAAK,CAuBJ;EACd,mBArBwB,kBAAkB;GAC1C,MAAM,UAAU,WAAW;GAC3B,MAAM,gBAAgB,iBAAiB;AACvC,cAAW,UAAU;AACrB,oBAAiB,UAAU;AAC3B,OAAI,QAAQ,QAAQ,WAAW,KAC7B;AAGF,OAAI,OAAO,UAAU,eAAe;AAClC,0BAAsB,UAAU;AAChC,kBAAA,YAAmC;cAC1B,OAAO,QAChB,SAAQ,QAAQ;KAEjB;GAAC;GAAS;GAAM;GAAc,CAMd;EACjB;EACA;EACA;EACA;EACA;EACD"}
|
|
1
|
+
{"version":3,"file":"useResizablePanel.mjs","names":[],"sources":["../../src/lib/useResizablePanel.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nexport enum PanelState {\n Drawer = 'drawer',\n Maximized = 'maximized',\n}\n\ninterface UseResizablePanelOptions {\n initialPanelState?: PanelState;\n initialSize?: number;\n /** Smallest size the panel snaps back to when a drag ends below it. */\n minSize: number;\n /** Fraction of the available space past which a released drag snaps to maximized. */\n snapThreshold?: number;\n}\n\nexport interface ResizablePanelState {\n /** Leave maximized and return to the drawer at `size` (null = `minSize`). */\n collapse: () => void;\n /** Open the drawer at the given size. */\n expandTo: (size: number) => void;\n /**\n * Called on every drag frame. `size` is the requested panel size and\n * `maxSize` the space the panel can grow into; both in px.\n */\n handleDragMove: (size: number, maxSize: number) => void;\n /** Called once when a drag ends; snaps to maximized or back to `minSize`. */\n handleDragRelease: () => void;\n maximize: () => void;\n panelState: PanelState;\n /**\n * Return from maximized to the drawer size the panel had before maximizing\n * (for a drag that snapped to maximized, the size when the drag started).\n */\n restore: () => void;\n size: number | null;\n toggleMaximized: () => void;\n}\n\n/**\n * Size and maximize/restore state for a resizable panel. Coordinates are\n * caller-supplied sizes, so the hook works for both viewport- and\n * container-anchored panels.\n */\nexport const useResizablePanel = ({\n initialPanelState = PanelState.Drawer,\n initialSize,\n minSize,\n snapThreshold = 0.95,\n}: UseResizablePanelOptions): ResizablePanelState => {\n const [size, setSize] = useState<number | null>(initialSize ?? null);\n const [panelState, setPanelState] = useState<PanelState>(initialPanelState);\n const maxSizeRef = useRef<number | null>(null);\n const dragStartSizeRef = useRef<number | null>(null);\n const sizeBeforeMaximizeRef = useRef<number | null>(\n initialPanelState === PanelState.Maximized ? (initialSize ?? null) : null,\n );\n\n const maximize = useCallback(() => {\n if (panelState !== PanelState.Maximized) {\n sizeBeforeMaximizeRef.current = size;\n }\n setPanelState(PanelState.Maximized);\n }, [panelState, size]);\n\n const restore = useCallback(() => {\n setPanelState(PanelState.Drawer);\n setSize(sizeBeforeMaximizeRef.current ?? minSize);\n }, [minSize]);\n\n const toggleMaximized = useCallback(() => {\n if (panelState === PanelState.Maximized) {\n restore();\n } else {\n maximize();\n }\n }, [maximize, panelState, restore]);\n\n const collapse = useCallback(() => {\n setPanelState(PanelState.Drawer);\n setSize(null);\n }, []);\n\n const expandTo = useCallback((nextSize: number) => {\n setPanelState(PanelState.Drawer);\n setSize(nextSize);\n }, []);\n\n const handleDragMove = useCallback(\n (nextSize: number, maxSize: number) => {\n if (maxSizeRef.current == null) {\n dragStartSizeRef.current = panelState === PanelState.Maximized ? null : size;\n }\n maxSizeRef.current = maxSize;\n setPanelState(PanelState.Drawer);\n setSize(Math.max(0, Math.min(nextSize, maxSize)));\n },\n [panelState, size],\n );\n\n const handleDragRelease = useCallback(() => {\n const maxSize = maxSizeRef.current;\n const dragStartSize = dragStartSizeRef.current;\n maxSizeRef.current = null;\n dragStartSizeRef.current = null;\n if (size == null || maxSize == null) {\n return;\n }\n\n if (size > maxSize * snapThreshold) {\n sizeBeforeMaximizeRef.current = dragStartSize;\n setPanelState(PanelState.Maximized);\n } else if (size < minSize) {\n setSize(minSize);\n }\n }, [minSize, size, snapThreshold]);\n\n return {\n collapse,\n expandTo,\n handleDragMove,\n handleDragRelease,\n maximize,\n panelState,\n restore,\n size,\n toggleMaximized,\n };\n};\n"],"mappings":";;AAEA,IAAY,aAAL,yBAAA,YAAA;AACL,YAAA,YAAA;AACA,YAAA,eAAA;;KACD;;;;;;AAuCD,MAAa,qBAAqB,EAChC,oBAAA,UACA,aACA,SACA,gBAAgB,UACmC;CACnD,MAAM,CAAC,MAAM,WAAW,SAAwB,eAAe,KAAK;CACpE,MAAM,CAAC,YAAY,iBAAiB,SAAqB,kBAAkB;CAC3E,MAAM,aAAa,OAAsB,KAAK;CAC9C,MAAM,mBAAmB,OAAsB,KAAK;CACpD,MAAM,wBAAwB,OAC5B,sBAAA,cAA8C,eAAe,OAAQ,KACtE;CAED,MAAM,WAAW,kBAAkB;AACjC,MAAI,eAAA,YACF,uBAAsB,UAAU;AAElC,gBAAA,YAAmC;IAClC,CAAC,YAAY,KAAK,CAAC;CAEtB,MAAM,UAAU,kBAAkB;AAChC,gBAAA,SAAgC;AAChC,UAAQ,sBAAsB,WAAW,QAAQ;IAChD,CAAC,QAAQ,CAAC;CAEb,MAAM,kBAAkB,kBAAkB;AACxC,MAAI,eAAA,YACF,UAAS;MAET,WAAU;IAEX;EAAC;EAAU;EAAY;EAAQ,CAAC;AAyCnC,QAAO;EACL,UAxCe,kBAAkB;AACjC,iBAAA,SAAgC;AAChC,WAAQ,KAAK;KACZ,EAAE,CAqCK;EACR,UApCe,aAAa,aAAqB;AACjD,iBAAA,SAAgC;AAChC,WAAQ,SAAS;KAChB,EAAE,CAiCK;EACR,gBAhCqB,aACpB,UAAkB,YAAoB;AACrC,OAAI,WAAW,WAAW,KACxB,kBAAiB,UAAU,eAAA,cAAsC,OAAO;AAE1E,cAAW,UAAU;AACrB,iBAAA,SAAgC;AAChC,WAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC;KAEnD,CAAC,YAAY,KAAK,CAuBJ;EACd,mBArBwB,kBAAkB;GAC1C,MAAM,UAAU,WAAW;GAC3B,MAAM,gBAAgB,iBAAiB;AACvC,cAAW,UAAU;AACrB,oBAAiB,UAAU;AAC3B,OAAI,QAAQ,QAAQ,WAAW,KAC7B;AAGF,OAAI,OAAO,UAAU,eAAe;AAClC,0BAAsB,UAAU;AAChC,kBAAA,YAAmC;cAC1B,OAAO,QAChB,SAAQ,QAAQ;KAEjB;GAAC;GAAS;GAAM;GAAc,CAMd;EACjB;EACA;EACA;EACA;EACA;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollOverflow.mjs","names":[],"sources":["../../lib/useScrollOverflow.ts"],"sourcesContent":["import { type RefObject, useEffect, useState } from 'react';\n\ninterface UseScrollOverflowOptions {\n /**\n * When false, the hook short-circuits — no listeners are attached and\n * both flags stay `false`. Use to opt out when the consumer is in a\n * fixed-layout / no-overflow mode where overflow detection is wasted\n * work, or when the scroll container is not yet mounted (e.g. gated\n * behind conditional render).\n */\n enabled?: boolean;\n}\n\nconst NO_SCROLLBARS = { vertical: 0, horizontal: 0 };\n\n/**\n * Tracks the horizontal-overflow state of a scroll container.\n *\n * - `hasHorizontalOverflow` — true while the content is wider than the box.\n * - `hasMoreScrollLeft` — true while the user has not yet scrolled to the\n * left edge. Drives the left-edge fade affordance.\n * - `hasMoreScrollRight` — true while the user has not yet scrolled to the\n * right edge. Drives the right-edge fade affordance.\n * - `scrollbarSize` — space the scrollbars take inside the box, in pixels.\n * Zero on platforms with overlay scrollbars. Edge affordances inset\n * themselves by this so they don't cover the scrollbars.\n *\n * Listens to `scroll` on the element, size changes via `ResizeObserver`,\n * and content changes via `MutationObserver` (child add/remove and text\n * changes within existing descendants).\n */\nexport const useScrollOverflow = (\n ref: RefObject<HTMLElement>,\n { enabled = true }: UseScrollOverflowOptions = {},\n) => {\n const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);\n const [hasMoreScrollLeft, setHasMoreScrollLeft] = useState(false);\n const [hasMoreScrollRight, setHasMoreScrollRight] = useState(false);\n const [scrollbarSize, setScrollbarSize] = useState(NO_SCROLLBARS);\n\n useEffect(() => {\n if (!enabled) {\n setHasHorizontalOverflow(false);\n setHasMoreScrollLeft(false);\n setHasMoreScrollRight(false);\n setScrollbarSize(NO_SCROLLBARS);\n return undefined;\n }\n const el = ref.current;\n if (!el) {\n return undefined;\n }\n const update = () => {\n // 1px tolerance for sub-pixel rounding on fractional layouts.\n setHasHorizontalOverflow(el.scrollWidth > el.clientWidth + 1);\n setHasMoreScrollLeft(el.scrollLeft > 1);\n setHasMoreScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);\n setScrollbarSize((current) => {\n // Borders widen `offsetWidth` past `clientWidth` alongside the\n // scrollbars, so they have to come back out of the difference.\n const style = getComputedStyle(el);\n const borderX = parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n const borderY = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n const vertical = Math.max(0, el.offsetWidth - el.clientWidth - borderX);\n const horizontal = Math.max(0, el.offsetHeight - el.clientHeight - borderY);\n return current.vertical === vertical && current.horizontal === horizontal\n ? current\n : { vertical, horizontal };\n });\n };\n update();\n el.addEventListener('scroll', update, { passive: true });\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null;\n ro?.observe(el);\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(update) : null;\n mo?.observe(el, { characterData: true, childList: true, subtree: true });\n return () => {\n el.removeEventListener('scroll', update);\n ro?.disconnect();\n mo?.disconnect();\n };\n }, [ref, enabled]);\n\n return { hasHorizontalOverflow, hasMoreScrollLeft, hasMoreScrollRight, scrollbarSize };\n};\n"],"mappings":";;AAaA,MAAM,gBAAgB;CAAE,UAAU;CAAG,YAAY;CAAG;;;;;;;;;;;;;;;;;AAkBpD,MAAa,qBACX,KACA,EAAE,UAAU,SAAmC,EAAE,KAC9C;CACH,MAAM,CAAC,uBAAuB,4BAA4B,SAAS,MAAM;CACzE,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CACjE,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,MAAM;CACnE,MAAM,CAAC,eAAe,oBAAoB,SAAS,cAAc;AAEjE,iBAAgB;AACd,MAAI,CAAC,SAAS;AACZ,4BAAyB,MAAM;AAC/B,wBAAqB,MAAM;AAC3B,yBAAsB,MAAM;AAC5B,oBAAiB,cAAc;AAC/B;;EAEF,MAAM,KAAK,IAAI;AACf,MAAI,CAAC,GACH;EAEF,MAAM,eAAe;AAEnB,4BAAyB,GAAG,cAAc,GAAG,cAAc,EAAE;AAC7D,wBAAqB,GAAG,aAAa,EAAE;AACvC,yBAAsB,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,EAAE;AAC1E,qBAAkB,YAAY;IAG5B,MAAM,QAAQ,iBAAiB,GAAG;IAClC,MAAM,UAAU,WAAW,MAAM,gBAAgB,GAAG,WAAW,MAAM,iBAAiB;IACtF,MAAM,UAAU,WAAW,MAAM,eAAe,GAAG,WAAW,MAAM,kBAAkB;IACtF,MAAM,WAAW,KAAK,IAAI,GAAG,GAAG,cAAc,GAAG,cAAc,QAAQ;IACvE,MAAM,aAAa,KAAK,IAAI,GAAG,GAAG,eAAe,GAAG,eAAe,QAAQ;AAC3E,WAAO,QAAQ,aAAa,YAAY,QAAQ,eAAe,aAC3D,UACA;KAAE;KAAU;KAAY;KAC5B;;AAEJ,UAAQ;AACR,KAAG,iBAAiB,UAAU,QAAQ,EAAE,SAAS,MAAM,CAAC;EACxD,MAAM,KAAK,OAAO,mBAAmB,cAAc,IAAI,eAAe,OAAO,GAAG;AAChF,MAAI,QAAQ,GAAG;EACf,MAAM,KAAK,OAAO,qBAAqB,cAAc,IAAI,iBAAiB,OAAO,GAAG;AACpF,MAAI,QAAQ,IAAI;GAAE,eAAe;GAAM,WAAW;GAAM,SAAS;GAAM,CAAC;AACxE,eAAa;AACX,MAAG,oBAAoB,UAAU,OAAO;AACxC,OAAI,YAAY;AAChB,OAAI,YAAY;;IAEjB,CAAC,KAAK,QAAQ,CAAC;AAElB,QAAO;EAAE;EAAuB;EAAmB;EAAoB;EAAe"}
|
|
1
|
+
{"version":3,"file":"useScrollOverflow.mjs","names":[],"sources":["../../src/lib/useScrollOverflow.ts"],"sourcesContent":["import { type RefObject, useEffect, useState } from 'react';\n\ninterface UseScrollOverflowOptions {\n /**\n * When false, the hook short-circuits — no listeners are attached and\n * both flags stay `false`. Use to opt out when the consumer is in a\n * fixed-layout / no-overflow mode where overflow detection is wasted\n * work, or when the scroll container is not yet mounted (e.g. gated\n * behind conditional render).\n */\n enabled?: boolean;\n}\n\nconst NO_SCROLLBARS = { vertical: 0, horizontal: 0 };\n\n/**\n * Tracks the horizontal-overflow state of a scroll container.\n *\n * - `hasHorizontalOverflow` — true while the content is wider than the box.\n * - `hasMoreScrollLeft` — true while the user has not yet scrolled to the\n * left edge. Drives the left-edge fade affordance.\n * - `hasMoreScrollRight` — true while the user has not yet scrolled to the\n * right edge. Drives the right-edge fade affordance.\n * - `scrollbarSize` — space the scrollbars take inside the box, in pixels.\n * Zero on platforms with overlay scrollbars. Edge affordances inset\n * themselves by this so they don't cover the scrollbars.\n *\n * Listens to `scroll` on the element, size changes via `ResizeObserver`,\n * and content changes via `MutationObserver` (child add/remove and text\n * changes within existing descendants).\n */\nexport const useScrollOverflow = (\n ref: RefObject<HTMLElement>,\n { enabled = true }: UseScrollOverflowOptions = {},\n) => {\n const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);\n const [hasMoreScrollLeft, setHasMoreScrollLeft] = useState(false);\n const [hasMoreScrollRight, setHasMoreScrollRight] = useState(false);\n const [scrollbarSize, setScrollbarSize] = useState(NO_SCROLLBARS);\n\n useEffect(() => {\n if (!enabled) {\n setHasHorizontalOverflow(false);\n setHasMoreScrollLeft(false);\n setHasMoreScrollRight(false);\n setScrollbarSize(NO_SCROLLBARS);\n return undefined;\n }\n const el = ref.current;\n if (!el) {\n return undefined;\n }\n const update = () => {\n // 1px tolerance for sub-pixel rounding on fractional layouts.\n setHasHorizontalOverflow(el.scrollWidth > el.clientWidth + 1);\n setHasMoreScrollLeft(el.scrollLeft > 1);\n setHasMoreScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);\n setScrollbarSize((current) => {\n // Borders widen `offsetWidth` past `clientWidth` alongside the\n // scrollbars, so they have to come back out of the difference.\n const style = getComputedStyle(el);\n const borderX = parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n const borderY = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n const vertical = Math.max(0, el.offsetWidth - el.clientWidth - borderX);\n const horizontal = Math.max(0, el.offsetHeight - el.clientHeight - borderY);\n return current.vertical === vertical && current.horizontal === horizontal\n ? current\n : { vertical, horizontal };\n });\n };\n update();\n el.addEventListener('scroll', update, { passive: true });\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null;\n ro?.observe(el);\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(update) : null;\n mo?.observe(el, { characterData: true, childList: true, subtree: true });\n return () => {\n el.removeEventListener('scroll', update);\n ro?.disconnect();\n mo?.disconnect();\n };\n }, [ref, enabled]);\n\n return { hasHorizontalOverflow, hasMoreScrollLeft, hasMoreScrollRight, scrollbarSize };\n};\n"],"mappings":";;AAaA,MAAM,gBAAgB;CAAE,UAAU;CAAG,YAAY;CAAG;;;;;;;;;;;;;;;;;AAkBpD,MAAa,qBACX,KACA,EAAE,UAAU,SAAmC,EAAE,KAC9C;CACH,MAAM,CAAC,uBAAuB,4BAA4B,SAAS,MAAM;CACzE,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CACjE,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,MAAM;CACnE,MAAM,CAAC,eAAe,oBAAoB,SAAS,cAAc;AAEjE,iBAAgB;AACd,MAAI,CAAC,SAAS;AACZ,4BAAyB,MAAM;AAC/B,wBAAqB,MAAM;AAC3B,yBAAsB,MAAM;AAC5B,oBAAiB,cAAc;AAC/B;;EAEF,MAAM,KAAK,IAAI;AACf,MAAI,CAAC,GACH;EAEF,MAAM,eAAe;AAEnB,4BAAyB,GAAG,cAAc,GAAG,cAAc,EAAE;AAC7D,wBAAqB,GAAG,aAAa,EAAE;AACvC,yBAAsB,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,EAAE;AAC1E,qBAAkB,YAAY;IAG5B,MAAM,QAAQ,iBAAiB,GAAG;IAClC,MAAM,UAAU,WAAW,MAAM,gBAAgB,GAAG,WAAW,MAAM,iBAAiB;IACtF,MAAM,UAAU,WAAW,MAAM,eAAe,GAAG,WAAW,MAAM,kBAAkB;IACtF,MAAM,WAAW,KAAK,IAAI,GAAG,GAAG,cAAc,GAAG,cAAc,QAAQ;IACvE,MAAM,aAAa,KAAK,IAAI,GAAG,GAAG,eAAe,GAAG,eAAe,QAAQ;AAC3E,WAAO,QAAQ,aAAa,YAAY,QAAQ,eAAe,aAC3D,UACA;KAAE;KAAU;KAAY;KAC5B;;AAEJ,UAAQ;AACR,KAAG,iBAAiB,UAAU,QAAQ,EAAE,SAAS,MAAM,CAAC;EACxD,MAAM,KAAK,OAAO,mBAAmB,cAAc,IAAI,eAAe,OAAO,GAAG;AAChF,MAAI,QAAQ,GAAG;EACf,MAAM,KAAK,OAAO,qBAAqB,cAAc,IAAI,iBAAiB,OAAO,GAAG;AACpF,MAAI,QAAQ,IAAI;GAAE,eAAe;GAAM,WAAW;GAAM,SAAS;GAAM,CAAC;AACxE,eAAa;AACX,MAAG,oBAAoB,UAAU,OAAO;AACxC,OAAI,YAAY;AAChB,OAAI,YAAY;;IAEjB,CAAC,KAAK,QAAQ,CAAC;AAElB,QAAO;EAAE;EAAuB;EAAmB;EAAoB;EAAe"}
|
package/dist/lib/zindex.d.mts
CHANGED
package/dist/lib/zindex.mjs
CHANGED
package/dist/lib/zindex.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zindex.mjs","names":[],"sources":["../../lib/zindex.ts"],"sourcesContent":["/*\n * Prefer adding these values together instead of adding new ones if possible.\n */\nexport const Z_INDICES = {\n withShadow: 1,\n\n sticky: 2,\n\n loadingOverlays: 5,\n\n tooltip: 10,\n\n floatingBar: 100,\n\n /*\n * The main levels we have in dashboard\n */\n topNav: 1000,\n dropdown: 1001,\n layeredDropdown: 1002,\n banner: 2000,\n sideNav: 3000,\n topNavTooltip: 3001,\n embeddedSurfaceBackdrop: 9998,\n embeddedSurface: 9999,\n modal: 10000,\n /*\n * For elements that should expand out of modals, but NOT cover things like dropdowns\n */\n modalElevated: 10001,\n modalDropdown: 10010,\n modalDropdownTooltip: 10020,\n personaAssistant: 10011,\n /*\n * Full-app blocking modal overlays that must sit above in-app floating panels and\n * their portaled UI (e.g. flow editor rule panels at Z_INDICES.modal).\n */\n modalBlocking: 10030,\n toast: 100000,\n} as const;\n\nexport type ZIndex = (typeof Z_INDICES)[keyof typeof Z_INDICES];\n"],"mappings":";AAGA,MAAa,YAAY;CACvB,YAAY;CAEZ,QAAQ;CAER,iBAAiB;CAEjB,SAAS;CAET,aAAa;CAKb,QAAQ;CACR,UAAU;CACV,iBAAiB;CACjB,QAAQ;CACR,SAAS;CACT,eAAe;CACf,yBAAyB;CACzB,iBAAiB;CACjB,OAAO;CAIP,eAAe;CACf,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAKlB,eAAe;CACf,OAAO;CACR"}
|
|
1
|
+
{"version":3,"file":"zindex.mjs","names":[],"sources":["../../src/lib/zindex.ts"],"sourcesContent":["/*\n * Prefer adding these values together instead of adding new ones if possible.\n */\nexport const Z_INDICES = {\n withShadow: 1,\n\n sticky: 2,\n\n loadingOverlays: 5,\n\n tooltip: 10,\n\n floatingBar: 100,\n\n /*\n * The main levels we have in dashboard\n */\n topNav: 1000,\n dropdown: 1001,\n layeredDropdown: 1002,\n banner: 2000,\n sideNav: 3000,\n topNavTooltip: 3001,\n embeddedSurfaceBackdrop: 9998,\n embeddedSurface: 9999,\n modal: 10000,\n /*\n * For elements that should expand out of modals, but NOT cover things like dropdowns\n */\n modalElevated: 10001,\n modalDropdown: 10010,\n modalDropdownTooltip: 10020,\n personaAssistant: 10011,\n /*\n * Full-app blocking modal overlays that must sit above in-app floating panels and\n * their portaled UI (e.g. flow editor rule panels at Z_INDICES.modal).\n */\n modalBlocking: 10030,\n toast: 100000,\n} as const;\n\nexport type ZIndex = (typeof Z_INDICES)[keyof typeof Z_INDICES];\n"],"mappings":";AAGA,MAAa,YAAY;CACvB,YAAY;CAEZ,QAAQ;CAER,iBAAiB;CAEjB,SAAS;CAET,aAAa;CAKb,QAAQ;CACR,UAAU;CACV,iBAAiB;CACjB,QAAQ;CACR,SAAS;CACT,eAAe;CACf,yBAAyB;CACzB,iBAAiB;CACjB,OAAO;CAIP,eAAe;CACf,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAKlB,eAAe;CACf,OAAO;CACR"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { n as Plugin } from "../index-BWAycP6L.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/lint/index.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The product UI standard's automated checks as an oxlint JS plugin. Load it with
|
|
6
|
+
* `"jsPlugins": ["@persona/design-system/lint"]` and enable rules as `pds/<rule>`.
|
|
7
|
+
*/
|
|
8
|
+
declare const plugin: Plugin;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { plugin as default };
|
|
11
|
+
//# sourceMappingURL=index.d.mts.map
|