@astryxdesign/core 0.5.2-canary.2da7a39 → 0.5.2-canary.2e51213
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/dist/AppShell/AppShell.d.ts +2 -2
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +10 -7
- package/dist/Banner/Banner.d.ts +5 -0
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +7 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +3 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +22 -15
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +2 -2
- package/dist/Chat/ChatComposer.d.ts +2 -2
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +21 -2
- package/dist/Chat/ChatToolCalls.d.ts +1 -1
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +12 -34
- package/dist/Chat/useChatNewMessages.js +3 -3
- package/dist/CheckboxList/CheckboxListItem.d.ts +5 -3
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +47 -13
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +269 -162
- package/dist/DateTimeInput/NativeDateSegment.d.ts +24 -0
- package/dist/DateTimeInput/NativeDateSegment.d.ts.map +1 -0
- package/dist/DateTimeInput/NativeDateSegment.js +235 -0
- package/dist/DateTimeInput/NativeTimeSegment.d.ts +30 -0
- package/dist/DateTimeInput/NativeTimeSegment.d.ts.map +1 -0
- package/dist/DateTimeInput/NativeTimeSegment.js +248 -0
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts +95 -0
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts.map +1 -0
- package/dist/DateTimeInput/nativePickerSegmentStyles.js +103 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +2 -4
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +10 -4
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +3 -5
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +4 -2
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +2 -4
- package/dist/Layout/Layout.d.ts +7 -8
- package/dist/Layout/Layout.d.ts.map +1 -1
- package/dist/Layout/Layout.js +7 -8
- package/dist/MultiSelector/MultiSelector.d.ts +11 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +89 -45
- package/dist/RadioList/RadioListItem.d.ts +30 -5
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +17 -4
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +102 -44
- package/dist/Resizable/index.d.ts +2 -0
- package/dist/Resizable/index.d.ts.map +1 -1
- package/dist/Resizable/index.js +1 -0
- package/dist/Resizable/useResizable.d.ts +89 -8
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +521 -38
- package/dist/Resizable/utils.d.ts +35 -0
- package/dist/Resizable/utils.d.ts.map +1 -0
- package/dist/Resizable/utils.js +27 -0
- package/dist/Selector/Selector.d.ts +10 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +105 -57
- package/dist/Selector/useSelectorPresentation.d.ts +1 -0
- package/dist/Selector/useSelectorPresentation.d.ts.map +1 -1
- package/dist/Selector/useSelectorPresentation.js +17 -2
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +3 -5
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +9 -10
- package/dist/Stepper/Step.d.ts +2 -1
- package/dist/Stepper/Step.d.ts.map +1 -1
- package/dist/Stepper/Step.js +75 -11
- package/dist/Stepper/Stepper.d.ts.map +1 -1
- package/dist/Stepper/Stepper.js +1 -0
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +2 -3
- package/dist/Table/index.d.ts +16 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +4 -0
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +8 -9
- package/dist/Table/plugins/rowStatus/index.d.ts +1 -1
- package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +11 -30
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +108 -62
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +9 -1
- package/dist/Text/useTruncation.d.ts +1 -1
- package/dist/Text/useTruncation.d.ts.map +1 -1
- package/dist/Text/useTruncation.js +8 -7
- package/dist/TimeInput/TimeInput.d.ts +16 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +98 -60
- package/dist/TimeInput/index.d.ts +1 -1
- package/dist/TimeInput/index.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.d.ts +2 -2
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +4 -145
- package/dist/Timestamp/formatRelativeTime.d.ts +20 -0
- package/dist/Timestamp/formatRelativeTime.d.ts.map +1 -0
- package/dist/Timestamp/formatRelativeTime.js +81 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +125 -77
- package/dist/Tokenizer/Tokenizer.d.ts +0 -38
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +94 -26
- package/dist/Tokenizer/useEndLaneReserve.d.ts +31 -0
- package/dist/Tokenizer/useEndLaneReserve.d.ts.map +1 -0
- package/dist/Tokenizer/useEndLaneReserve.js +136 -0
- package/dist/Tooltip/useTooltip.d.ts +1 -1
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +53 -42
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +85 -30
- package/dist/Typeahead/Typeahead.d.ts +0 -21
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +108 -67
- package/dist/Typeahead/busyIndicatorLane.d.ts +62 -0
- package/dist/Typeahead/busyIndicatorLane.d.ts.map +1 -0
- package/dist/Typeahead/busyIndicatorLane.js +98 -0
- package/dist/astryx.css +25 -7
- package/dist/hooks/useFocusReturnVisibility.d.ts.map +1 -1
- package/dist/hooks/useFocusReturnVisibility.js +3 -5
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +11 -11
- package/dist/hooks/useScrollOverflow.d.ts.map +1 -1
- package/dist/hooks/useScrollOverflow.js +7 -4
- package/dist/theme/defineTheme.d.ts +13 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +7 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +1 -1
- package/dist/theme/localTokens.d.ts +18 -0
- package/dist/theme/localTokens.d.ts.map +1 -0
- package/dist/theme/localTokens.js +162 -0
- package/dist/utils/interactionModality.d.ts +6 -28
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +72 -37
- package/dist/utils/sharedResizeObserver.d.ts +17 -9
- package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
- package/dist/utils/sharedResizeObserver.js +54 -12
- package/locales/en.json +8 -0
- package/locales/pseudo.json +6 -0
- package/package.json +7 -2
- package/src/AlertDialog/useImperativeAlertDialog.test.tsx +163 -0
- package/src/AppShell/AppShell.doc.mjs +4 -3
- package/src/AppShell/AppShell.test.tsx +21 -0
- package/src/AppShell/AppShell.tsx +12 -7
- package/src/Banner/Banner.doc.mjs +5 -1
- package/src/Banner/Banner.tsx +12 -1
- package/src/BottomSheet/BottomSheet.doc.mjs +31 -0
- package/src/BottomSheet/BottomSheet.spec.md +178 -0
- package/src/Breadcrumbs/BreadcrumbItem.tsx +18 -9
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +4 -1
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +12 -0
- package/src/Button/Button.doc.mjs +56 -0
- package/src/ButtonGroup/ButtonGroup.doc.mjs +47 -0
- package/src/Calendar/hooks/useCalendarConstraints.test.ts +153 -0
- package/src/Calendar/hooks/useCalendarDays.test.ts +265 -0
- package/src/Calendar/hooks/useCalendarNavigation.test.ts +252 -0
- package/src/Carousel/Carousel.test.tsx +83 -0
- package/src/Carousel/Carousel.tsx +8 -2
- package/src/Chat/ChatComposer.doc.mjs +7 -4
- package/src/Chat/ChatComposer.test.tsx +84 -2
- package/src/Chat/ChatComposer.tsx +45 -3
- package/src/Chat/ChatSendButton.test.tsx +189 -0
- package/src/Chat/ChatToolCalls.doc.mjs +1 -1
- package/src/Chat/ChatToolCalls.test.tsx +33 -1
- package/src/Chat/ChatToolCalls.tsx +13 -34
- package/src/Chat/useChatNewMessages.ts +3 -3
- package/src/Chat/useChatPasteAsToken.test.ts +191 -0
- package/src/CheckboxList/CheckboxList.doc.mjs +172 -31
- package/src/CheckboxList/CheckboxList.spec.md +215 -0
- package/src/CheckboxList/CheckboxList.test.tsx +45 -0
- package/src/CheckboxList/CheckboxListItem.doc.mjs +11 -9
- package/src/CheckboxList/CheckboxListItem.tsx +5 -3
- package/src/Collapsible/useCollapsible.test.tsx +236 -0
- package/src/CommandPalette/CommandPalette.doc.mjs +72 -0
- package/src/CommandPalette/CommandPalette.spec.md +224 -0
- package/src/CommandPalette/CommandPaletteEmpty.test.tsx +101 -0
- package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
- package/src/ComplexSelector/ComplexSelector.spec.md +190 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +48 -0
- package/src/ContextMenu/ContextMenu.spec.md +207 -0
- package/src/DateTimeInput/DateTimeInput.doc.mjs +43 -23
- package/src/DateTimeInput/DateTimeInput.tsx +388 -181
- package/src/DateTimeInput/DateTimeInputTouch.test.tsx +10 -2
- package/src/DateTimeInput/NativeDateSegment.tsx +308 -0
- package/src/DateTimeInput/NativePickerSegments.test.tsx +626 -0
- package/src/DateTimeInput/NativeTimeSegment.tsx +331 -0
- package/src/DateTimeInput/index.ts +1 -0
- package/src/DateTimeInput/nativePickerSegmentStyles.ts +120 -0
- package/src/Divider/Divider.doc.mjs +24 -0
- package/src/Divider/Divider.spec.md +157 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +104 -0
- package/src/DropdownMenu/DropdownMenu.spec.md +246 -0
- package/src/DropdownMenu/DropdownMenu.tsx +2 -4
- package/src/Field/Field.doc.mjs +1 -0
- package/src/Field/Field.test.tsx +39 -0
- package/src/Field/Field.tsx +18 -1
- package/src/Field/InputClearButton.test.tsx +68 -6
- package/src/Field/PanelSearchInput.tsx +3 -5
- package/src/FieldStatus/FieldStatus.doc.mjs +21 -0
- package/src/FieldStatus/FieldStatus.spec.md +213 -0
- package/src/FieldStatus/FieldStatus.test.tsx +17 -0
- package/src/FieldStatus/FieldStatus.tsx +7 -2
- package/src/Grid/Grid.doc.mjs +19 -0
- package/src/Grid/Grid.spec.md +162 -0
- package/src/Icon/Icon.doc.mjs +196 -48
- package/src/Icon/Icon.spec.md +192 -0
- package/src/IconButton/IconButton.doc.mjs +38 -0
- package/src/Kbd/Kbd.doc.mjs +18 -0
- package/src/Kbd/Kbd.spec.md +142 -0
- package/src/Layer/useTouchTrigger.ts +2 -4
- package/src/Layout/Layout.doc.mjs +57 -17
- package/src/Layout/Layout.spec.md +235 -0
- package/src/Layout/Layout.test.tsx +1 -1
- package/src/Layout/Layout.tsx +7 -8
- package/src/Layout/LayoutHeader.doc.mjs +9 -0
- package/src/Layout/LayoutPanel.doc.mjs +4 -3
- package/src/Lightbox/Lightbox.doc.mjs +149 -33
- package/src/Lightbox/Lightbox.spec.md +198 -0
- package/src/Lightbox/useLightbox.test.tsx +263 -0
- package/src/Markdown/Markdown.doc.mjs +60 -0
- package/src/Markdown/Markdown.spec.md +207 -0
- package/src/MobileNav/MobileNav.doc.mjs +140 -32
- package/src/MobileNav/MobileNav.spec.md +209 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +42 -0
- package/src/MoreMenu/MoreMenu.spec.md +222 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +124 -1
- package/src/MultiSelector/MultiSelector.spec.md +293 -0
- package/src/MultiSelector/MultiSelector.test.tsx +305 -2
- package/src/MultiSelector/MultiSelector.tsx +124 -55
- package/src/NavIcon/NavIcon.doc.mjs +17 -0
- package/src/NavIcon/NavIcon.spec.md +134 -0
- package/src/NavMenu/NavHeadingMenu.spec.md +210 -0
- package/src/NavMenu/NavMenu.doc.mjs +37 -0
- package/src/Outline/Outline.doc.mjs +35 -0
- package/src/Outline/Outline.spec.md +162 -0
- package/src/OverflowList/OverflowList.doc.mjs +24 -0
- package/src/OverflowList/OverflowList.spec.md +157 -0
- package/src/Pagination/Pagination.doc.mjs +74 -0
- package/src/Pagination/Pagination.spec.md +226 -0
- package/src/Popover/Popover.doc.mjs +264 -65
- package/src/Popover/Popover.spec.md +421 -0
- package/src/Popover/usePopover.doc.mjs +208 -33
- package/src/PowerSearch/PowerSearch.spec.md +291 -0
- package/src/PowerSearch/PowerSearchFilterEditor.test.tsx +253 -0
- package/src/PowerSearch/PowerSearchToken.test.tsx +228 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +198 -38
- package/src/ProgressBar/ProgressBar.spec.md +261 -0
- package/src/RadioList/RadioList.test.tsx +136 -2
- package/src/RadioList/RadioListItem.doc.mjs +30 -11
- package/src/RadioList/RadioListItem.tsx +44 -8
- package/src/Resizable/Resizable.doc.mjs +130 -24
- package/src/Resizable/Resizable.spec.md +246 -0
- package/src/Resizable/ResizeHandle.test.tsx +177 -56
- package/src/Resizable/ResizeHandle.tsx +128 -45
- package/src/Resizable/index.ts +2 -0
- package/src/Resizable/shippedDirections.test.ts +462 -0
- package/src/Resizable/useResizable.doc.mjs +124 -29
- package/src/Resizable/useResizable.test.ts +1277 -3
- package/src/Resizable/useResizable.ts +760 -48
- package/src/Resizable/utils.test.ts +74 -0
- package/src/Resizable/utils.ts +35 -0
- package/src/Section/Section.doc.mjs +17 -0
- package/src/Section/Section.spec.md +139 -0
- package/src/SegmentedControl/SegmentedControl.doc.mjs +83 -0
- package/src/SegmentedControl/SegmentedControl.spec.md +152 -0
- package/src/Selector/Selector.doc.mjs +133 -97
- package/src/Selector/Selector.spec.md +300 -0
- package/src/Selector/Selector.test.tsx +318 -1
- package/src/Selector/Selector.tsx +127 -60
- package/src/Selector/useSelectorPresentation.ts +24 -4
- package/src/SideNav/SideNav.test.tsx +3 -3
- package/src/SideNav/SideNavCollapseButton.doc.mjs +8 -0
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/Skeleton/Skeleton.doc.mjs +12 -0
- package/src/Skeleton/Skeleton.spec.md +127 -0
- package/src/Slider/Slider.doc.mjs +184 -30
- package/src/Slider/Slider.spec.md +224 -0
- package/src/Slider/Slider.tsx +2 -5
- package/src/Spinner/Spinner.doc.mjs +5 -5
- package/src/Spinner/Spinner.test.tsx +32 -7
- package/src/Spinner/Spinner.tsx +46 -14
- package/src/Stack/Stack.doc.mjs +22 -0
- package/src/Stack/Stack.spec.md +155 -0
- package/src/StatusDot/StatusDot.doc.mjs +17 -0
- package/src/StatusDot/StatusDot.spec.md +138 -0
- package/src/Stepper/Step.doc.mjs +1 -1
- package/src/Stepper/Step.tsx +118 -5
- package/src/Stepper/Stepper.doc.mjs +51 -1
- package/src/Stepper/Stepper.spec.md +245 -0
- package/src/Stepper/Stepper.test.tsx +315 -0
- package/src/Stepper/Stepper.tsx +8 -0
- package/src/Switch/Switch.doc.mjs +40 -0
- package/src/Switch/Switch.spec.md +175 -0
- package/src/TabList/TabList.tsx +2 -3
- package/src/Table/Table.doc.mjs +102 -24
- package/src/Table/Table.perf.test.tsx +51 -1
- package/src/Table/Table.spec.md +325 -0
- package/src/Table/TableHeaderCell.test.tsx +291 -0
- package/src/Table/index.ts +19 -4
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +8 -12
- package/src/Table/plugins/filtering/useTableFilterState.test.tsx +143 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +2 -1
- package/src/Table/plugins/rowStatus/index.ts +1 -4
- package/src/Table/plugins/rowStatus/useTableRowStatus.public.test.ts +92 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.spec.md +354 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +431 -56
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +155 -84
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +72 -0
- package/src/Table/plugins/sortable/useTableSortable.tsx +18 -1
- package/src/Table/useTableGroupedRows.doc.mjs +2 -2
- package/src/Table/useTableRowStatus.doc.mjs +5 -5
- package/src/Text/Text.doc.mjs +190 -43
- package/src/Text/Text.spec.md +206 -0
- package/src/Text/useTruncation.ts +8 -7
- package/src/TextArea/TextArea.doc.mjs +255 -45
- package/src/TextArea/TextArea.spec.md +205 -0
- package/src/TimeInput/NativeTimeInput.test.tsx +269 -0
- package/src/TimeInput/TimeInput.doc.mjs +47 -23
- package/src/TimeInput/TimeInput.tsx +109 -50
- package/src/TimeInput/index.ts +1 -0
- package/src/Timestamp/Timestamp.doc.mjs +2 -2
- package/src/Timestamp/Timestamp.test.tsx +75 -3
- package/src/Timestamp/Timestamp.tsx +7 -153
- package/src/Timestamp/formatRelativeTime.ts +96 -0
- package/src/Toast/ToastViewport.test.tsx +194 -0
- package/src/Toast/ToastViewport.tsx +136 -58
- package/src/ToggleButton/ToggleButton.doc.mjs +56 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -0
- package/src/Tokenizer/Tokenizer.spec.md +293 -0
- package/src/Tokenizer/Tokenizer.test.tsx +335 -1
- package/src/Tokenizer/Tokenizer.tsx +129 -46
- package/src/Tokenizer/useEndLaneReserve.ts +146 -0
- package/src/Toolbar/Toolbar.doc.mjs +19 -0
- package/src/Toolbar/Toolbar.spec.md +174 -0
- package/src/Tooltip/Tooltip.doc.mjs +17 -0
- package/src/Tooltip/Tooltip.spec.md +142 -0
- package/src/Tooltip/Tooltip.test.tsx +21 -1
- package/src/Tooltip/useTooltip.test.tsx +318 -0
- package/src/Tooltip/useTooltip.tsx +60 -39
- package/src/TreeList/TreeList.doc.mjs +58 -0
- package/src/TreeList/TreeList.spec.md +224 -0
- package/src/Typeahead/BaseTypeahead.tsx +96 -25
- package/src/Typeahead/Typeahead.doc.mjs +89 -1
- package/src/Typeahead/Typeahead.spec.md +257 -0
- package/src/Typeahead/Typeahead.test.tsx +502 -1
- package/src/Typeahead/Typeahead.tsx +187 -69
- package/src/Typeahead/TypeaheadItem.test.tsx +93 -2
- package/src/Typeahead/busyIndicatorLane.tsx +109 -0
- package/src/__tests__/stylexDeclarations.ts +51 -0
- package/src/hooks/useFocusReturnVisibility.ts +3 -5
- package/src/hooks/useOverflow.ts +11 -11
- package/src/hooks/useScrollLock.test.ts +103 -0
- package/src/hooks/useScrollOverflow.ts +7 -4
- package/src/i18n/useTranslator.test.tsx +197 -0
- package/src/theme/defineTheme.test.ts +227 -0
- package/src/theme/defineTheme.ts +30 -0
- package/src/theme/derivedVarRegistry.test.ts +6 -0
- package/src/theme/generateThemeRules.ts +4 -1
- package/src/theme/localTokens.ts +272 -0
- package/src/theme/themingTargets.test.ts +126 -28
- package/src/utils/interactionModality.test.ts +83 -0
- package/src/utils/interactionModality.ts +88 -36
- package/src/utils/sharedResizeObserver.test.ts +124 -5
- package/src/utils/sharedResizeObserver.ts +60 -14
|
@@ -7,13 +7,26 @@ export const docs = {
|
|
|
7
7
|
displayName: 'Popover',
|
|
8
8
|
group: 'Popover',
|
|
9
9
|
category: 'Overlay',
|
|
10
|
-
keywords: [
|
|
10
|
+
keywords: [
|
|
11
|
+
'popover',
|
|
12
|
+
'popup',
|
|
13
|
+
'dropdown',
|
|
14
|
+
'tooltip',
|
|
15
|
+
'overlay',
|
|
16
|
+
'flyout',
|
|
17
|
+
'callout',
|
|
18
|
+
'popper',
|
|
19
|
+
'anchor',
|
|
20
|
+
'floating',
|
|
21
|
+
'bubble',
|
|
22
|
+
],
|
|
11
23
|
components: [
|
|
12
24
|
{
|
|
13
25
|
name: 'Popover',
|
|
14
26
|
displayName: 'Popover',
|
|
15
27
|
description:
|
|
16
|
-
'A click-triggered popover for displaying interactive content anchored to a trigger element.',
|
|
28
|
+
'A click-triggered popover for displaying interactive content anchored to a trigger element.',
|
|
29
|
+
props: [
|
|
17
30
|
{
|
|
18
31
|
name: 'children',
|
|
19
32
|
type: 'ReactNode',
|
|
@@ -31,18 +44,26 @@ export const docs = {
|
|
|
31
44
|
type: 'ReactNode',
|
|
32
45
|
description: 'Content to display inside the popover.',
|
|
33
46
|
required: true,
|
|
34
|
-
slotElements: [
|
|
47
|
+
slotElements: [
|
|
48
|
+
{
|
|
49
|
+
__element: 'Text',
|
|
50
|
+
props: {type: 'body'},
|
|
51
|
+
children: 'Content text',
|
|
52
|
+
},
|
|
53
|
+
],
|
|
35
54
|
},
|
|
36
55
|
{
|
|
37
56
|
name: 'placement',
|
|
38
57
|
type: "'above' | 'below' | 'start' | 'end'",
|
|
39
|
-
description:
|
|
58
|
+
description:
|
|
59
|
+
"Position placement relative to the trigger. Logical: start/end resolve against the popover's own inherited direction, so RTL contexts mirror automatically in pure CSS.",
|
|
40
60
|
default: "'below'",
|
|
41
61
|
},
|
|
42
62
|
{
|
|
43
63
|
name: 'alignment',
|
|
44
64
|
type: "'start' | 'center' | 'end'",
|
|
45
|
-
description:
|
|
65
|
+
description:
|
|
66
|
+
"Alignment along the placement axis. Logical: start/end follow the popover's own inherited direction (RTL mirrors).",
|
|
46
67
|
default: "'start'",
|
|
47
68
|
},
|
|
48
69
|
{
|
|
@@ -64,7 +85,8 @@ export const docs = {
|
|
|
64
85
|
{
|
|
65
86
|
name: 'width',
|
|
66
87
|
type: 'number | string',
|
|
67
|
-
description:
|
|
88
|
+
description:
|
|
89
|
+
'Width of the popover container. The layer still caps to the viewport with alignment-aware safe-area gutters before scrolling long content.',
|
|
68
90
|
default: "'auto'",
|
|
69
91
|
},
|
|
70
92
|
{
|
|
@@ -89,7 +111,8 @@ export const docs = {
|
|
|
89
111
|
{
|
|
90
112
|
name: 'hasCloseButton',
|
|
91
113
|
type: 'boolean',
|
|
92
|
-
description:
|
|
114
|
+
description:
|
|
115
|
+
'Whether to include a hidden close button for accessibility.',
|
|
93
116
|
default: 'true',
|
|
94
117
|
},
|
|
95
118
|
{
|
|
@@ -101,61 +124,126 @@ export const docs = {
|
|
|
101
124
|
{
|
|
102
125
|
name: 'hasAutoFocus',
|
|
103
126
|
type: 'boolean',
|
|
104
|
-
description:
|
|
127
|
+
description:
|
|
128
|
+
'Whether to move focus into the popover when it opens. Keyboard activation focuses the first content control; pointer activation focuses the labeled dialog container so an action does not appear preselected. Set to false for inline showcases or documentation previews.',
|
|
105
129
|
default: 'true',
|
|
106
130
|
},
|
|
107
131
|
{
|
|
108
132
|
name: 'hasLightDismiss',
|
|
109
133
|
type: 'boolean',
|
|
110
|
-
description:
|
|
134
|
+
description:
|
|
135
|
+
'Whether clicking outside dismisses the popover. Set to false for surfaces that stay open until explicitly dismissed, like onboarding coachmarks.',
|
|
111
136
|
default: 'true',
|
|
112
137
|
},
|
|
113
138
|
{
|
|
114
139
|
name: 'hasEscapeDismiss',
|
|
115
140
|
type: 'boolean',
|
|
116
|
-
description:
|
|
141
|
+
description:
|
|
142
|
+
'Whether pressing Escape dismisses the popover. Only takes full effect together with hasLightDismiss={false}, since native light dismiss also closes on Escape.',
|
|
117
143
|
default: 'true',
|
|
118
144
|
},
|
|
119
145
|
{
|
|
120
146
|
name: 'xstyle',
|
|
121
147
|
type: 'StyleXStyles',
|
|
122
|
-
description:
|
|
148
|
+
description:
|
|
149
|
+
'StyleX styles for layout customization (margins, positioning, sizing). Must be a stylex.create() value, not an inline style object like style={{}}.',
|
|
123
150
|
},
|
|
124
151
|
],
|
|
125
152
|
},
|
|
126
153
|
],
|
|
127
154
|
playground: {
|
|
128
155
|
defaults: {
|
|
129
|
-
content: {
|
|
130
|
-
|
|
156
|
+
content: {
|
|
157
|
+
__element: 'Text',
|
|
158
|
+
props: {type: 'body'},
|
|
159
|
+
children: 'Popover content goes here.',
|
|
160
|
+
},
|
|
161
|
+
children: {
|
|
162
|
+
__element: 'Button',
|
|
163
|
+
props: {label: 'Open popover', variant: 'secondary'},
|
|
164
|
+
},
|
|
131
165
|
},
|
|
132
166
|
},
|
|
133
167
|
theming: {
|
|
134
168
|
targets: [
|
|
169
|
+
// Canonical broad target for the painted Popover surface.
|
|
135
170
|
{className: 'astryx-popover'},
|
|
136
|
-
|
|
171
|
+
// Deprecated compatibility alias. Existing themes keep working during
|
|
172
|
+
// migration; new themes target `popover`.
|
|
173
|
+
{
|
|
174
|
+
className: 'astryx-popover-surface',
|
|
175
|
+
deprecatedFor: 'popover',
|
|
176
|
+
},
|
|
137
177
|
],
|
|
138
178
|
vars: [
|
|
139
|
-
{
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
179
|
+
{
|
|
180
|
+
name: '--_popover-radius',
|
|
181
|
+
description: 'Border radius of the popover surface',
|
|
182
|
+
default: 'var(--radius-container)',
|
|
183
|
+
private: true,
|
|
184
|
+
},
|
|
143
185
|
],
|
|
186
|
+
derived: [{property: 'borderRadius', vars: ['--_popover-radius']}],
|
|
144
187
|
},
|
|
145
188
|
usage: {
|
|
146
189
|
description:
|
|
147
190
|
'A click-triggered overlay anchored to a button or trigger element. Use it for secondary actions, inline confirmations, or supplementary information that does not warrant a full dialog. For hover previews use HoverCard, for brief helper text use Tooltip.',
|
|
148
191
|
bestPractices: [
|
|
149
|
-
{
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
192
|
+
{
|
|
193
|
+
guidance: true,
|
|
194
|
+
description:
|
|
195
|
+
'Keep popover content focused on a single task or piece of information.',
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
guidance: true,
|
|
199
|
+
description:
|
|
200
|
+
'Provide a clear way to close: either by clicking outside or with an explicit close button.',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
guidance: true,
|
|
204
|
+
description:
|
|
205
|
+
'Theme the painted surface through popover. Existing popover-surface overrides remain supported during migration, but new themes should not depend on that deprecated alias.',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
guidance: false,
|
|
209
|
+
description:
|
|
210
|
+
'Nest popovers inside other popovers; it creates confusing focus and navigation.',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
guidance: false,
|
|
214
|
+
description:
|
|
215
|
+
"Assume input complexity alone determines the presentation; evaluate the task's focus, space, and interaction requirements.",
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
guidance: false,
|
|
219
|
+
description:
|
|
220
|
+
'Assume scrolling alone means Popover is the wrong component; a bounded Popover may scroll while a focused anchored interaction remains appropriate.',
|
|
221
|
+
},
|
|
154
222
|
],
|
|
155
223
|
anatomy: [
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
224
|
+
{
|
|
225
|
+
name: 'Trigger element',
|
|
226
|
+
required: true,
|
|
227
|
+
description:
|
|
228
|
+
'Caller-supplied or externally referenced control that anchors and toggles the popover.',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'Popover surface',
|
|
232
|
+
required: true,
|
|
233
|
+
description:
|
|
234
|
+
'Painted surface owned by Popover. Theme it through the canonical popover target; popover-surface remains only as a deprecated compatibility alias during migration.',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: 'Popover content',
|
|
238
|
+
required: true,
|
|
239
|
+
description: 'Caller-supplied content rendered inside the surface.',
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: 'Fallback close control',
|
|
243
|
+
required: false,
|
|
244
|
+
description:
|
|
245
|
+
'Keyboard-reachable close affordance appended by usePopover when enabled.',
|
|
246
|
+
},
|
|
159
247
|
],
|
|
160
248
|
},
|
|
161
249
|
};
|
|
@@ -168,8 +256,7 @@ export const docsZh = {
|
|
|
168
256
|
{
|
|
169
257
|
name: 'Popover',
|
|
170
258
|
displayName: 'Popover',
|
|
171
|
-
description:
|
|
172
|
-
'一个点击触发的弹出框,用于显示锚定到触发元素的交互式内容。',
|
|
259
|
+
description: '一个点击触发的弹出框,用于显示锚定到触发元素的交互式内容。',
|
|
173
260
|
props: [
|
|
174
261
|
{
|
|
175
262
|
name: 'children',
|
|
@@ -180,8 +267,7 @@ export const docsZh = {
|
|
|
180
267
|
{
|
|
181
268
|
name: 'anchorRef',
|
|
182
269
|
type: 'React.RefObject<HTMLElement>',
|
|
183
|
-
description:
|
|
184
|
-
'在兄弟模式下用作弹出框锚点的外部 ref。',
|
|
270
|
+
description: '在兄弟模式下用作弹出框锚点的外部 ref。',
|
|
185
271
|
},
|
|
186
272
|
{
|
|
187
273
|
name: 'content',
|
|
@@ -192,13 +278,15 @@ export const docsZh = {
|
|
|
192
278
|
{
|
|
193
279
|
name: 'placement',
|
|
194
280
|
type: "'above' | 'below' | 'start' | 'end'",
|
|
195
|
-
description:
|
|
281
|
+
description:
|
|
282
|
+
'相对于触发器的位置放置方式。逻辑值:start/end 根据弹出层自身继承的方向解析,RTL 环境通过纯 CSS 自动镜像。',
|
|
196
283
|
default: "'below'",
|
|
197
284
|
},
|
|
198
285
|
{
|
|
199
286
|
name: 'alignment',
|
|
200
287
|
type: "'start' | 'center' | 'end'",
|
|
201
|
-
description:
|
|
288
|
+
description:
|
|
289
|
+
'沿放置轴的对齐方式。逻辑值:start/end 跟随弹出层自身继承的方向(RTL 镜像)。',
|
|
202
290
|
default: "'start'",
|
|
203
291
|
},
|
|
204
292
|
{
|
|
@@ -220,7 +308,8 @@ export const docsZh = {
|
|
|
220
308
|
{
|
|
221
309
|
name: 'width',
|
|
222
310
|
type: 'number | string',
|
|
223
|
-
description:
|
|
311
|
+
description:
|
|
312
|
+
'弹出框容器的宽度。弹出层仍会限制在视口和安全区域留白内,长内容再滚动。',
|
|
224
313
|
default: "'auto'",
|
|
225
314
|
},
|
|
226
315
|
{
|
|
@@ -257,19 +346,22 @@ export const docsZh = {
|
|
|
257
346
|
{
|
|
258
347
|
name: 'hasAutoFocus',
|
|
259
348
|
type: 'boolean',
|
|
260
|
-
description:
|
|
349
|
+
description:
|
|
350
|
+
'弹出框打开时是否自动聚焦第一个可聚焦元素。内联展示或文档预览设为 false。',
|
|
261
351
|
default: 'true',
|
|
262
352
|
},
|
|
263
353
|
{
|
|
264
354
|
name: 'hasLightDismiss',
|
|
265
355
|
type: 'boolean',
|
|
266
|
-
description:
|
|
356
|
+
description:
|
|
357
|
+
'点击外部是否关闭弹出框。需要显式关闭的界面(如新手引导提示)设为 false。',
|
|
267
358
|
default: 'true',
|
|
268
359
|
},
|
|
269
360
|
{
|
|
270
361
|
name: 'hasEscapeDismiss',
|
|
271
362
|
type: 'boolean',
|
|
272
|
-
description:
|
|
363
|
+
description:
|
|
364
|
+
'按 Escape 是否关闭弹出框。仅在 hasLightDismiss={false} 时生效,因为原生 light dismiss 行为同样响应 Escape。',
|
|
273
365
|
default: 'true',
|
|
274
366
|
},
|
|
275
367
|
],
|
|
@@ -277,30 +369,84 @@ export const docsZh = {
|
|
|
277
369
|
],
|
|
278
370
|
theming: {
|
|
279
371
|
targets: [
|
|
372
|
+
// Canonical broad target for the painted Popover surface.
|
|
280
373
|
{className: 'astryx-popover'},
|
|
281
|
-
|
|
374
|
+
// Deprecated compatibility alias. Existing themes keep working during
|
|
375
|
+
// migration; new themes target `popover`.
|
|
376
|
+
{
|
|
377
|
+
className: 'astryx-popover-surface',
|
|
378
|
+
deprecatedFor: 'popover',
|
|
379
|
+
},
|
|
282
380
|
],
|
|
283
381
|
vars: [
|
|
284
|
-
{
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
382
|
+
{
|
|
383
|
+
name: '--_popover-radius',
|
|
384
|
+
description: 'Border radius of the popover surface',
|
|
385
|
+
default: 'var(--radius-container)',
|
|
386
|
+
private: true,
|
|
387
|
+
},
|
|
288
388
|
],
|
|
389
|
+
derived: [{property: 'borderRadius', vars: ['--_popover-radius']}],
|
|
289
390
|
},
|
|
290
391
|
usage: {
|
|
291
392
|
description:
|
|
292
393
|
'A click-triggered overlay anchored to a button or trigger element. Use it for secondary actions, inline confirmations, or supplementary information that does not warrant a full dialog. For hover previews use HoverCard, for brief helper text use Tooltip.',
|
|
293
394
|
bestPractices: [
|
|
294
|
-
{
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
395
|
+
{
|
|
396
|
+
guidance: true,
|
|
397
|
+
description:
|
|
398
|
+
'Keep popover content focused on a single task or piece of information.',
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
guidance: true,
|
|
402
|
+
description:
|
|
403
|
+
'Provide a clear way to close: either by clicking outside or with an explicit close button.',
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
guidance: true,
|
|
407
|
+
description:
|
|
408
|
+
'Theme the painted surface through popover. Existing popover-surface overrides remain supported during migration, but new themes should not depend on that deprecated alias.',
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
guidance: false,
|
|
412
|
+
description:
|
|
413
|
+
'Nest popovers inside other popovers; it creates confusing focus and navigation.',
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
guidance: false,
|
|
417
|
+
description:
|
|
418
|
+
"Assume input complexity alone determines the presentation; evaluate the task's focus, space, and interaction requirements.",
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
guidance: false,
|
|
422
|
+
description:
|
|
423
|
+
'Assume scrolling alone means Popover is the wrong component; a bounded Popover may scroll while a focused anchored interaction remains appropriate.',
|
|
424
|
+
},
|
|
299
425
|
],
|
|
300
426
|
anatomy: [
|
|
301
|
-
{
|
|
302
|
-
|
|
303
|
-
|
|
427
|
+
{
|
|
428
|
+
name: 'Trigger element',
|
|
429
|
+
required: true,
|
|
430
|
+
description:
|
|
431
|
+
'Caller-supplied or externally referenced control that anchors and toggles the popover.',
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: 'Popover surface',
|
|
435
|
+
required: true,
|
|
436
|
+
description:
|
|
437
|
+
'Painted surface owned by Popover. Theme it through the canonical popover target; popover-surface remains only as a deprecated compatibility alias during migration.',
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: 'Popover content',
|
|
441
|
+
required: true,
|
|
442
|
+
description: 'Caller-supplied content rendered inside the surface.',
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
name: 'Fallback close control',
|
|
446
|
+
required: false,
|
|
447
|
+
description:
|
|
448
|
+
'Keyboard-reachable close affordance appended by usePopover when enabled.',
|
|
449
|
+
},
|
|
304
450
|
],
|
|
305
451
|
},
|
|
306
452
|
};
|
|
@@ -313,16 +459,61 @@ export const docsDense = {
|
|
|
313
459
|
description:
|
|
314
460
|
'A click-triggered overlay anchored to a button or trigger element. Use it for secondary actions, inline confirmations, or supplementary information that does not warrant a full dialog. For hover previews use HoverCard, for brief helper text use Tooltip.',
|
|
315
461
|
bestPractices: [
|
|
316
|
-
{
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
462
|
+
{
|
|
463
|
+
guidance: true,
|
|
464
|
+
description:
|
|
465
|
+
'Keep popover content focused on a single task or piece of information.',
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
guidance: true,
|
|
469
|
+
description:
|
|
470
|
+
'Provide a clear way to close: either by clicking outside or with an explicit close button.',
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
guidance: true,
|
|
474
|
+
description:
|
|
475
|
+
'Theme the painted surface through popover. Existing popover-surface overrides remain supported during migration, but new themes should not depend on that deprecated alias.',
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
guidance: false,
|
|
479
|
+
description:
|
|
480
|
+
'Nest popovers inside other popovers; it creates confusing focus and navigation.',
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
guidance: false,
|
|
484
|
+
description:
|
|
485
|
+
"Assume input complexity alone determines the presentation; evaluate the task's focus, space, and interaction requirements.",
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
guidance: false,
|
|
489
|
+
description:
|
|
490
|
+
'Assume scrolling alone means Popover is the wrong component; a bounded Popover may scroll while a focused anchored interaction remains appropriate.',
|
|
491
|
+
},
|
|
321
492
|
],
|
|
322
493
|
anatomy: [
|
|
323
|
-
{
|
|
324
|
-
|
|
325
|
-
|
|
494
|
+
{
|
|
495
|
+
name: 'Trigger element',
|
|
496
|
+
required: true,
|
|
497
|
+
description:
|
|
498
|
+
'Caller-supplied or externally referenced control that anchors and toggles the popover.',
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
name: 'Popover surface',
|
|
502
|
+
required: true,
|
|
503
|
+
description:
|
|
504
|
+
'Painted surface owned by Popover. Theme it through the canonical popover target; popover-surface remains only as a deprecated compatibility alias during migration.',
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
name: 'Popover content',
|
|
508
|
+
required: true,
|
|
509
|
+
description: 'Caller-supplied content rendered inside the surface.',
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
name: 'Fallback close control',
|
|
513
|
+
required: false,
|
|
514
|
+
description:
|
|
515
|
+
'Keyboard-reachable close affordance appended by usePopover when enabled.',
|
|
516
|
+
},
|
|
326
517
|
],
|
|
327
518
|
},
|
|
328
519
|
components: [
|
|
@@ -332,21 +523,29 @@ export const docsDense = {
|
|
|
332
523
|
description:
|
|
333
524
|
'Click-triggered popover for interactive content anchored to trigger element.',
|
|
334
525
|
propDescriptions: {
|
|
335
|
-
children:
|
|
526
|
+
children:
|
|
527
|
+
'Trigger element. Must contain <button> or [role="button"] element.',
|
|
336
528
|
anchorRef: 'External ref for popover anchor in sibling mode.',
|
|
337
529
|
content: 'Content displayed inside popover.',
|
|
338
|
-
placement:
|
|
339
|
-
|
|
530
|
+
placement:
|
|
531
|
+
"Position relative to trigger. Logical: start/end resolve against the popover's inherited direction (RTL mirrors).",
|
|
532
|
+
alignment:
|
|
533
|
+
"Alignment along placement axis. Logical: start/end follow the popover's inherited direction (RTL mirrors).",
|
|
340
534
|
isOpen: 'Whether popover shown in controlled mode.',
|
|
341
535
|
onOpenChange: 'Callback fired when popover visibility changes.',
|
|
342
536
|
isEnabled: 'When false, trigger interactions ignored.',
|
|
343
|
-
width:
|
|
537
|
+
width:
|
|
538
|
+
'Popover container width; capped to alignment-aware viewport/safe-area gutters before long content scrolls.',
|
|
344
539
|
label: 'Accessible label for popover dialog.',
|
|
345
|
-
hasCloseButton:
|
|
540
|
+
hasCloseButton:
|
|
541
|
+
'Whether to include hidden close button for accessibility.',
|
|
346
542
|
closeButtonLabel: 'Label for hidden close button.',
|
|
347
|
-
hasAutoFocus:
|
|
348
|
-
|
|
349
|
-
|
|
543
|
+
hasAutoFocus:
|
|
544
|
+
'Move focus into the popover on open; keyboard targets the first control and pointer targets the dialog container.',
|
|
545
|
+
hasLightDismiss:
|
|
546
|
+
'Outside click dismisses; false for explicit-dismiss surfaces (coachmarks).',
|
|
547
|
+
hasEscapeDismiss:
|
|
548
|
+
'Escape dismisses; full effect only with hasLightDismiss=false.',
|
|
350
549
|
},
|
|
351
550
|
},
|
|
352
551
|
],
|