@astryxdesign/core 0.5.0 → 0.5.1-canary.f64186a
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 +222 -0
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AspectRatio/AspectRatio.d.ts +6 -6
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +43 -9
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +5 -2
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +11 -7
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +26 -2
- package/dist/Banner/Banner.d.ts +10 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +11 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +8 -7
- package/dist/Calendar/Calendar.d.ts +4 -2
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +15 -21
- package/dist/Calendar/hooks/useCalendarDays.js +4 -6
- package/dist/Calendar/hooks/useCalendarNavigation.js +4 -6
- package/dist/Calendar/styles.d.ts +5 -20
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -17
- package/dist/Card/Card.d.ts +12 -12
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +17 -9
- package/dist/Card/index.d.ts +35 -1
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +21 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +108 -7
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -7
- package/dist/ComplexSelector/ComplexSelector.d.ts +10 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -7
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -5
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -3
- package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
- package/dist/DateInput/MonthYearWheels.js +6 -4
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +52 -25
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +1 -0
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +3 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts +23 -24
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +35 -10
- package/dist/DateTimeInput/TouchDateTimeField.d.ts +6 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -0
- package/dist/DateTimeInput/TouchDateTimeField.js +1021 -0
- package/dist/Dialog/Dialog.d.ts +16 -2
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +28 -7
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/Field/InputClearButton.d.ts +9 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +14 -3
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +0 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +14 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -1
- package/dist/Icon/Icon.d.ts +4 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.d.ts +3 -2
- package/dist/Icon/defaultIcons.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.js +7 -0
- package/dist/Icon/globalIconRegistry.d.ts +13 -0
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +34 -6
- package/dist/Icon/index.d.ts +1 -1
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/useIcon.d.ts +5 -2
- package/dist/Icon/useIcon.d.ts.map +1 -1
- package/dist/Icon/useIcon.js +3 -0
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +2 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -26
- package/dist/Layer/gestureCounter.d.ts +8 -0
- package/dist/Layer/gestureCounter.d.ts.map +1 -0
- package/dist/Layer/gestureCounter.js +53 -0
- package/dist/Layer/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +146 -24
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +15 -4
- package/dist/Markdown/Markdown.d.ts +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +20 -7
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +5 -3
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/MetadataList/MetadataListItem.js +4 -1
- package/dist/MultiSelector/MultiSelector.d.ts +18 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +58 -11
- package/dist/MultiSelector/hooks.d.ts +7 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +3 -2
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavItem/navItemStyles.stylex.d.ts +0 -8
- package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
- package/dist/NavItem/navItemStyles.stylex.js +0 -2
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +7 -4
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +95 -126
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +2 -3
- package/dist/OverflowList/OverflowList.d.ts +41 -1
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +43 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +8 -14
- package/dist/Popover/usePopover.d.ts +15 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +26 -7
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +91 -18
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +4 -2
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/useResizable.d.ts +19 -1
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +104 -38
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +9 -0
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +92 -21
- package/dist/Selector/hooks.d.ts +7 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +3 -2
- package/dist/SideNav/SideNav.d.ts +6 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +57 -27
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +5 -4
- package/dist/SideNav/SideNavItem.d.ts +29 -4
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +75 -20
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +34 -2
- package/dist/Spinner/Spinner.d.ts +3 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +199 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts.map +1 -1
- package/dist/Stepper/Step.js +7 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +5 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +6 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +34 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +25 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +0 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +13 -8
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +10 -18
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +10 -5
- package/dist/Toast/Toast.d.ts +17 -2
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +77 -11
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +76 -21
- package/dist/Toast/index.d.ts +1 -1
- package/dist/Toast/index.d.ts.map +1 -1
- package/dist/Toast/types.d.ts +38 -0
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToastGesture.d.ts +26 -0
- package/dist/Toast/useToastGesture.d.ts.map +1 -0
- package/dist/Toast/useToastGesture.js +223 -0
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +23 -12
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +5 -2
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +31 -21
- package/dist/TopNav/TopNavHeading.js +2 -2
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -3
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +30 -9
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +3 -3
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +21 -6
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +7 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +2 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +33 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +51 -8
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +2 -0
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +7 -2
- package/dist/astryx.css +87 -22
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -25
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +14 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/defineTheme.d.ts +9 -3
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +5 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/generateThemeRules.d.ts +21 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +26 -0
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +6 -7
- package/dist/utils/dateParser.d.ts +5 -8
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +10 -11
- package/dist/utils/focusOutline.stylex.d.ts +25 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.js +15 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +26 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -0
- package/dist/utils/interactionOverlay.stylex.js +42 -0
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/plainDate.d.ts +11 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +20 -4
- package/locales/af-ZA.json +7 -7
- package/locales/ar-SA.json +7 -7
- package/locales/ca-ES.json +6 -6
- package/locales/cs-CZ.json +7 -7
- package/locales/da-DK.json +7 -7
- package/locales/de-DE.json +7 -7
- package/locales/el-GR.json +7 -7
- package/locales/en.json +178 -6
- package/locales/es-ES.json +6 -6
- package/locales/fi-FI.json +7 -7
- package/locales/fr-FR.json +7 -7
- package/locales/he-IL.json +7 -7
- package/locales/hu-HU.json +7 -7
- package/locales/it-IT.json +7 -7
- package/locales/ja-JP.json +7 -7
- package/locales/ko-KR.json +7 -7
- package/locales/nl-NL.json +7 -7
- package/locales/no-NO.json +7 -7
- package/locales/pl-PL.json +7 -7
- package/locales/pseudo.json +130 -1
- package/locales/pt-BR.json +7 -7
- package/locales/pt-PT.json +7 -7
- package/locales/ro-RO.json +7 -7
- package/locales/ru-RU.json +7 -7
- package/locales/sr-SP.json +7 -7
- package/locales/sv-SE.json +7 -7
- package/locales/tr-TR.json +7 -7
- package/locales/uk-UA.json +7 -7
- package/locales/vi-VN.json +7 -7
- package/locales/zh-CN.json +7 -7
- package/locales/zh-TW.json +7 -7
- package/package.json +4 -5
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +6 -6
- package/src/Avatar/Avatar.doc.mjs +12 -2
- package/src/Avatar/Avatar.test.tsx +80 -0
- package/src/Avatar/Avatar.tsx +64 -14
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +12 -4
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +12 -12
- package/src/Badge/Badge.doc.mjs +3 -2
- package/src/Badge/Badge.test.tsx +32 -3
- package/src/Badge/Badge.tsx +42 -1
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +76 -11
- package/src/Banner/Banner.tsx +21 -2
- package/src/Button/Button.doc.mjs +2 -1
- package/src/Button/Button.test.tsx +19 -4
- package/src/Button/Button.tsx +9 -29
- package/src/ButtonGroup/ButtonGroup.doc.mjs +2 -2
- package/src/ButtonGroup/ButtonGroup.test.tsx +13 -0
- package/src/Calendar/Calendar.doc.mjs +3 -3
- package/src/Calendar/Calendar.test.tsx +112 -0
- package/src/Calendar/Calendar.tsx +18 -16
- package/src/Calendar/hooks/useCalendarDays.ts +4 -4
- package/src/Calendar/hooks/useCalendarNavigation.ts +4 -4
- package/src/Calendar/styles.ts +48 -42
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +113 -19
- package/src/Card/Card.tsx +67 -89
- package/src/Card/index.ts +36 -1
- package/src/Carousel/Carousel.doc.mjs +3 -0
- package/src/Carousel/Carousel.test.tsx +360 -0
- package/src/Carousel/Carousel.tsx +116 -15
- package/src/CheckboxInput/CheckboxInput.doc.mjs +2 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +5 -0
- package/src/CodeBlock/CodeBlock.doc.mjs +10 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteItem.tsx +2 -12
- package/src/ComplexSelector/ComplexSelector.doc.mjs +7 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +183 -0
- package/src/ComplexSelector/ComplexSelector.tsx +22 -12
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.test.tsx +9 -4
- package/src/DateInput/DateInput.tsx +54 -3
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/MonthScroller.tsx +5 -1
- package/src/DateInput/MonthYearWheels.tsx +7 -4
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +83 -33
- package/src/DateInput/Wheel.tsx +1 -0
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +46 -0
- package/src/DateRangeInput/DateRangeInput.tsx +8 -13
- package/src/DateTimeInput/DateTimeInput.doc.mjs +38 -21
- package/src/DateTimeInput/DateTimeInput.test.tsx +76 -0
- package/src/DateTimeInput/DateTimeInput.tsx +54 -20
- package/src/DateTimeInput/DateTimeInputTouch.test.tsx +980 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +1437 -0
- package/src/Dialog/Dialog.test.tsx +185 -18
- package/src/Dialog/Dialog.tsx +35 -11
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/Field/InputClearButton.test.tsx +15 -1
- package/src/Field/InputClearButton.tsx +28 -4
- package/src/Heading/Heading.tsx +0 -1
- package/src/HoverCard/HoverCard.doc.mjs +8 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +137 -3
- package/src/HoverCard/useHoverCard.tsx +23 -3
- package/src/Icon/Icon.test.tsx +55 -1
- package/src/Icon/Icon.tsx +5 -3
- package/src/Icon/defaultIcons.tsx +11 -2
- package/src/Icon/globalIconRegistry.test.tsx +16 -3
- package/src/Icon/globalIconRegistry.tsx +37 -6
- package/src/Icon/index.ts +1 -0
- package/src/Icon/useIcon.ts +9 -2
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +2 -0
- package/src/Item/Item.tsx +2 -7
- package/src/Kbd/Kbd.test.tsx +0 -17
- package/src/Kbd/Kbd.tsx +2 -26
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/useLayer.test.tsx +368 -16
- package/src/Layer/useLayer.tsx +208 -35
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/parser.test.ts +33 -0
- package/src/Markdown/parser.ts +9 -3
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MultiSelector/MultiSelector.doc.mjs +22 -1
- package/src/MultiSelector/MultiSelector.test.tsx +205 -0
- package/src/MultiSelector/MultiSelector.tsx +103 -16
- package/src/MultiSelector/hooks.ts +9 -2
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavItem/navItemStyles.stylex.ts +0 -8
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +7 -4
- package/src/NumberInput/NumberInput.doc.mjs +26 -7
- package/src/NumberInput/NumberInput.test.tsx +563 -8
- package/src/NumberInput/NumberInput.tsx +77 -131
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +2 -4
- package/src/OverflowList/OverflowList.doc.mjs +102 -21
- package/src/OverflowList/OverflowList.test.tsx +550 -4
- package/src/OverflowList/OverflowList.tsx +100 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.doc.mjs +2 -2
- package/src/Popover/Popover.test.tsx +38 -0
- package/src/Popover/Popover.tsx +28 -66
- package/src/Popover/usePopover.tsx +44 -5
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +87 -0
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +64 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +109 -10
- package/src/PowerSearch/formatFilterValue.test.ts +16 -1
- package/src/PowerSearch/formatFilterValue.ts +2 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/useResizable.doc.mjs +21 -2
- package/src/Resizable/useResizable.test.ts +421 -0
- package/src/Resizable/useResizable.ts +133 -48
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +16 -0
- package/src/Selector/Selector.doc.mjs +14 -0
- package/src/Selector/Selector.source-build.test.mjs +65 -0
- package/src/Selector/Selector.test.tsx +301 -0
- package/src/Selector/Selector.tsx +145 -32
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +2 -2
- package/src/SideNav/SideNav.test.tsx +1069 -6
- package/src/SideNav/SideNav.tsx +109 -38
- package/src/SideNav/SideNavHeading.tsx +5 -2
- package/src/SideNav/SideNavItem.doc.mjs +24 -3
- package/src/SideNav/SideNavItem.tsx +134 -44
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +52 -1
- package/src/Spinner/Spinner.doc.mjs +17 -5
- package/src/Spinner/Spinner.test.tsx +164 -0
- package/src/Spinner/Spinner.tsx +252 -22
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +1 -1
- package/src/Stepper/Step.tsx +7 -14
- package/src/Switch/Switch.doc.mjs +2 -0
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +3 -0
- package/src/Table/BaseTable.tsx +6 -1
- package/src/Table/Table.doc.mjs +5 -3
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +2 -2
- package/src/Table/TableFooter.doc.mjs +1 -1
- package/src/Table/TableHeader.doc.mjs +1 -1
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +50 -4
- package/src/Table/plugins/selection/useTableSelection.test.tsx +62 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +25 -2
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/useTableGroupedRows.doc.mjs +3 -3
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +44 -0
- package/src/Text/Text.tsx +0 -1
- package/src/TextArea/TextArea.doc.mjs +12 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +34 -22
- package/src/Timestamp/Timestamp.test.tsx +89 -0
- package/src/Timestamp/Timestamp.tsx +8 -8
- package/src/Timestamp/formatInstant.ts +5 -0
- package/src/Toast/Toast.doc.mjs +213 -44
- package/src/Toast/Toast.tsx +118 -23
- package/src/Toast/ToastViewport.test.tsx +1434 -8
- package/src/Toast/ToastViewport.tsx +85 -14
- package/src/Toast/index.ts +2 -0
- package/src/Toast/types.ts +43 -5
- package/src/Toast/useToastGesture.ts +361 -0
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +19 -17
- package/src/Token/TokenLink.tsx +12 -3
- package/src/Tokenizer/Tokenizer.doc.mjs +16 -3
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +49 -24
- package/src/TopNav/TopNavHeading.tsx +2 -2
- package/src/TopNav/TopNavItem.tsx +3 -7
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -4
- package/src/TopNav/TopNavMegaMenuItem.tsx +10 -9
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -5
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/TreeList/TreeListItem.tsx +2 -7
- package/src/Typeahead/BaseTypeahead.doc.mjs +13 -0
- package/src/Typeahead/BaseTypeahead.tsx +96 -6
- package/src/Typeahead/Typeahead.doc.mjs +6 -0
- package/src/Typeahead/Typeahead.test.tsx +154 -0
- package/src/Typeahead/Typeahead.tsx +9 -0
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useHotkeys.test.ts +0 -18
- package/src/hooks/useHotkeys.ts +3 -25
- package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
- package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
- package/src/hooks/useInteractiveRole.doc.mjs +119 -0
- package/src/hooks/useLongPress.doc.mjs +123 -0
- package/src/hooks/useOverflow.doc.mjs +58 -17
- package/src/hooks/useOverflow.ts +16 -4
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/index.ts +2 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/Theme.test.tsx +104 -2
- package/src/theme/Theme.tsx +49 -14
- package/src/theme/defineTheme.test.ts +23 -0
- package/src/theme/defineTheme.ts +12 -3
- package/src/theme/derivedVarRegistry.test.ts +87 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +99 -1
- package/src/theme/generateThemeRules.ts +28 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/theme/useTheme.test.tsx +10 -0
- package/src/theme/useTheme.ts +16 -10
- package/src/utils/dateParser.test.ts +34 -2
- package/src/utils/dateParser.ts +11 -14
- package/src/utils/focusOutline.stylex.ts +50 -0
- package/src/utils/interactionOverlay.stylex.ts +74 -0
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/plainDate.test.ts +46 -0
- package/src/utils/plainDate.ts +18 -3
package/dist/theme/Theme.js
CHANGED
|
@@ -41,6 +41,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
41
41
|
import "./tokens.stylex.js";
|
|
42
42
|
import { colorVars, typographyVars } from "./tokens.stylex.js";
|
|
43
43
|
import { generateThemeCSS } from "./defineTheme.js";
|
|
44
|
+
import { generateDataTokenDefaultsCSS } from "./generateThemeRules.js";
|
|
44
45
|
import { registerTheme } from "./themeRegistry.js";
|
|
45
46
|
import { dataAttr } from "../naming.js";
|
|
46
47
|
import { ThemeContext } from "./useTheme.js";
|
|
@@ -93,6 +94,16 @@ ThemeNestingContext.displayName = 'ThemeNestingContext';
|
|
|
93
94
|
/** Track which themes have already been injected */
|
|
94
95
|
const injectedThemes = new Set();
|
|
95
96
|
|
|
97
|
+
/**
|
|
98
|
+
* How many mounted `Theme`s are relying on the injected data-token defaults.
|
|
99
|
+
*
|
|
100
|
+
* The defaults are one document-wide `:root` block, shared by every theme, so
|
|
101
|
+
* they are injected once and removed only when the last theme that took a
|
|
102
|
+
* reference unmounts — tearing them down with whichever provider happened to
|
|
103
|
+
* inject them would strip the palette from the providers still mounted.
|
|
104
|
+
*/
|
|
105
|
+
let dataTokenDefaultsRefCount = 0;
|
|
106
|
+
|
|
96
107
|
/**
|
|
97
108
|
* Hook to inject theme CSS into the document.
|
|
98
109
|
* Built themes (from `astryx theme build`) skip injection — their CSS
|
|
@@ -105,6 +116,9 @@ function useThemeStyleInjection(theme) {
|
|
|
105
116
|
if (theme.__built) {
|
|
106
117
|
return;
|
|
107
118
|
}
|
|
119
|
+
|
|
120
|
+
// Second and later `Theme`s using this theme do no work at all —
|
|
121
|
+
// generation included. Its CSS is document-wide and identical for each.
|
|
108
122
|
const themeKey = `astryx-theme-${theme.name}`;
|
|
109
123
|
if (injectedThemes.has(themeKey)) {
|
|
110
124
|
return;
|
|
@@ -116,8 +130,26 @@ function useThemeStyleInjection(theme) {
|
|
|
116
130
|
prose,
|
|
117
131
|
component
|
|
118
132
|
} = generateThemeCSS(theme);
|
|
119
|
-
|
|
120
|
-
|
|
133
|
+
const base = generateDataTokenDefaultsCSS();
|
|
134
|
+
injectedThemes.add(themeKey);
|
|
135
|
+
const cleanups = [() => injectedThemes.delete(themeKey)];
|
|
136
|
+
|
|
137
|
+
// Data token defaults go into @layer astryx-base, where StyleX puts the
|
|
138
|
+
// core token defaults, so a theme's own `--color-data-*` outranks them by
|
|
139
|
+
// layer. Appended (never prepended) so it cannot register `astryx-base`
|
|
140
|
+
// ahead of `reset` and invert the layer order.
|
|
141
|
+
if (base) {
|
|
142
|
+
if (dataTokenDefaultsRefCount++ === 0) {
|
|
143
|
+
const baseStyle = document.createElement('style');
|
|
144
|
+
baseStyle.setAttribute(dataAttr('theme-base'), '');
|
|
145
|
+
baseStyle.textContent = `@layer astryx-base {\n${base}\n}`;
|
|
146
|
+
document.head.appendChild(baseStyle);
|
|
147
|
+
}
|
|
148
|
+
cleanups.push(() => {
|
|
149
|
+
if (--dataTokenDefaultsRefCount === 0) {
|
|
150
|
+
document.querySelector(`style[${dataAttr('theme-base')}]`)?.remove();
|
|
151
|
+
}
|
|
152
|
+
});
|
|
121
153
|
}
|
|
122
154
|
|
|
123
155
|
// Prose defaults go into @layer reset — lowest priority, scoped to
|
|
@@ -139,15 +171,19 @@ function useThemeStyleInjection(theme) {
|
|
|
139
171
|
compStyle.textContent = `@layer astryx-theme {\n${component}\n}`;
|
|
140
172
|
document.head.appendChild(compStyle);
|
|
141
173
|
}
|
|
142
|
-
|
|
174
|
+
if (prose || component) {
|
|
175
|
+
cleanups.push(() => {
|
|
176
|
+
// Matched by the astryx id marker, which is always written above.
|
|
177
|
+
const proseEl = document.querySelector(`style[${dataAttr('theme-prose')}="${theme.name}"][${dataAttr('id')}="${id}"]`);
|
|
178
|
+
const compEl = document.querySelector(`style[${dataAttr('theme')}="${theme.name}"][${dataAttr('id')}="${id}"]`);
|
|
179
|
+
proseEl?.remove();
|
|
180
|
+
compEl?.remove();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
143
183
|
return () => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const compEl = document.querySelector(`style[${dataAttr('theme')}="${theme.name}"][${dataAttr('id')}="${id}"]`);
|
|
148
|
-
proseEl?.remove();
|
|
149
|
-
compEl?.remove();
|
|
150
|
-
injectedThemes.delete(themeKey);
|
|
184
|
+
for (const cleanup of cleanups) {
|
|
185
|
+
cleanup();
|
|
186
|
+
}
|
|
151
187
|
};
|
|
152
188
|
}, [theme, id]);
|
|
153
189
|
}
|
|
@@ -33,7 +33,13 @@
|
|
|
33
33
|
* drift guard is scripts/check-theme-template.test.mjs)
|
|
34
34
|
* - /packages/cli/assets/docs/theme.doc.mjs (`astryx docs theme`)
|
|
35
35
|
*/
|
|
36
|
-
import type {
|
|
36
|
+
import type { ReactNode } from 'react';
|
|
37
|
+
import type { IconName, NamespacedIconName } from '../Icon/globalIconRegistry';
|
|
38
|
+
/**
|
|
39
|
+
* Icon overrides a theme may declare: any built-in semantic name, plus the
|
|
40
|
+
* namespaced keys components and libraries own (`'richtext:bold'`).
|
|
41
|
+
*/
|
|
42
|
+
type ThemeIconOverrides = Partial<Record<IconName | NamespacedIconName, ReactNode>>;
|
|
37
43
|
import type { IndicatorRegistry } from '../Indicator/types';
|
|
38
44
|
import type { TypographyConfig } from './types';
|
|
39
45
|
import { type OnMediaOverrides, type ResolvedOnMedia } from './onMediaTokens';
|
|
@@ -265,7 +271,7 @@ export interface DefineThemeInput {
|
|
|
265
271
|
*/
|
|
266
272
|
components?: ComponentStyleMap;
|
|
267
273
|
/** Icon registry — maps semantic icon names to React nodes */
|
|
268
|
-
icons?:
|
|
274
|
+
icons?: ThemeIconOverrides;
|
|
269
275
|
/**
|
|
270
276
|
* Indicator overrides — replaces the components that draw stateful control
|
|
271
277
|
* visuals with the theme's own, by name.
|
|
@@ -326,7 +332,7 @@ export interface DefinedTheme {
|
|
|
326
332
|
/** Component style overrides */
|
|
327
333
|
components?: ComponentStyleMap;
|
|
328
334
|
/** Icon registry */
|
|
329
|
-
icons?:
|
|
335
|
+
icons?: ThemeIconOverrides;
|
|
330
336
|
/** Indicator overrides for stateful control visuals, keyed by name */
|
|
331
337
|
indicators?: IndicatorRegistry;
|
|
332
338
|
/** Whether this theme has been pre-compiled by theme build CLI */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineTheme.d.ts","sourceRoot":"","sources":["../../src/theme/defineTheme.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAC,
|
|
1
|
+
{"version":3,"file":"defineTheme.d.ts","sourceRoot":"","sources":["../../src/theme/defineTheme.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
* - /packages/cli/assets/docs/theme.doc.mjs (`astryx docs theme`)
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Icon overrides a theme may declare: any built-in semantic name, plus the
|
|
41
|
+
* namespaced keys components and libraries own (`'richtext:bold'`).
|
|
42
|
+
*/
|
|
43
|
+
|
|
39
44
|
import { resolveOnMedia } from "./onMediaTokens.js";
|
|
40
45
|
import { colorDefaults, spacingDefaults, sizeDefaults, borderDefaults, focusDefaults, radiusDefaults, shadowDefaults, durationDefaults, easeDefaults, typographyDefaults, textSizeDefaults, fontWeightDefaults, typeScaleDefaults } from "./tokens.stylex.js";
|
|
41
46
|
import { expandTypeScale, generateTypeScaleComponents } from "./expandTypeScale.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivedVarRegistry.d.ts","sourceRoot":"","sources":["../../src/theme/derivedVarRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"derivedVarRegistry.d.ts","sourceRoot":"","sources":["../../src/theme/derivedVarRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CA+ChE,CAAC;AAiBF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,eAAe,EAAE,CASnB"}
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
* entries share the same property.
|
|
27
27
|
*/
|
|
28
28
|
export const derivedVarRegistry = {
|
|
29
|
+
avatar: [{
|
|
30
|
+
property: 'borderRadius',
|
|
31
|
+
vars: ['--_avatar-radius']
|
|
32
|
+
}],
|
|
29
33
|
banner: [{
|
|
30
34
|
property: 'borderRadius',
|
|
31
35
|
vars: ['--_banner-radius']
|
|
@@ -73,7 +77,7 @@ export const derivedVarRegistry = {
|
|
|
73
77
|
property: 'borderRadius',
|
|
74
78
|
vars: ['--_field-radius']
|
|
75
79
|
}],
|
|
76
|
-
|
|
80
|
+
'hover-card': [{
|
|
77
81
|
property: 'borderRadius',
|
|
78
82
|
vars: ['--_hovercard-radius']
|
|
79
83
|
}],
|
|
@@ -88,7 +92,7 @@ export const derivedVarRegistry = {
|
|
|
88
92
|
property: 'borderRadius',
|
|
89
93
|
vars: ['--_popover-radius']
|
|
90
94
|
}],
|
|
91
|
-
'
|
|
95
|
+
'progress-bar-mark': [{
|
|
92
96
|
property: 'width',
|
|
93
97
|
vars: ['--_progressbar-mark-width'],
|
|
94
98
|
replaces: true
|
|
@@ -108,19 +112,35 @@ export const derivedVarRegistry = {
|
|
|
108
112
|
property: 'padding',
|
|
109
113
|
vars: ['--_segmented-control-padding']
|
|
110
114
|
}],
|
|
111
|
-
|
|
115
|
+
'text-area': [{
|
|
112
116
|
property: 'paddingInline',
|
|
113
117
|
vars: ['--_textarea-inline-padding'],
|
|
114
118
|
replaces: true
|
|
115
119
|
}]
|
|
116
120
|
};
|
|
117
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Deprecated component keys → the key that superseded them.
|
|
124
|
+
*
|
|
125
|
+
* A renamed target keeps emitting its old class, so a theme written against
|
|
126
|
+
* the old key still selects the element. Without this the rule would land but
|
|
127
|
+
* its derived vars would not expand, and the half that travels through a var
|
|
128
|
+
* (a hover card's radius, a text area's inline padding) would silently do
|
|
129
|
+
* nothing. Drop these with the classes, in the next major.
|
|
130
|
+
*/
|
|
131
|
+
const DEPRECATED_REGISTRY_KEYS = {
|
|
132
|
+
hovercard: 'hover-card',
|
|
133
|
+
'progressbar-mark': 'progress-bar-mark',
|
|
134
|
+
textarea: 'text-area'
|
|
135
|
+
};
|
|
136
|
+
|
|
118
137
|
/**
|
|
119
138
|
* Look up derived var entries for a component + CSS property.
|
|
120
139
|
* Returns matching entries in priority order, or empty array if none.
|
|
121
140
|
*/
|
|
122
141
|
export function getDerivedVars(component, property) {
|
|
123
|
-
const
|
|
142
|
+
const renamedTo = DEPRECATED_REGISTRY_KEYS[component];
|
|
143
|
+
const entries = derivedVarRegistry[component] ?? (renamedTo ? derivedVarRegistry[renamedTo] : undefined);
|
|
124
144
|
if (!entries) {
|
|
125
145
|
return [];
|
|
126
146
|
}
|
|
@@ -68,6 +68,24 @@ export declare function generateThemeRulesSplit(theme: DefinedTheme): ThemeRules
|
|
|
68
68
|
* via onDark.components / onLight.components.
|
|
69
69
|
*/
|
|
70
70
|
export declare function generateOnMediaCSS(theme: DefinedTheme): string;
|
|
71
|
+
/**
|
|
72
|
+
* The `--color-data-*` defaults as one unscoped `:root` block.
|
|
73
|
+
*
|
|
74
|
+
* Core tokens reach CSS once, at `:root`, from StyleX's `defineVars` output in
|
|
75
|
+
* `@layer astryx-base`; a theme's own scope block then carries only the tokens
|
|
76
|
+
* that theme overrides, which is why a nested theme inherits its parent's
|
|
77
|
+
* override instead of shadowing it. Data tokens are not StyleX vars, so nothing
|
|
78
|
+
* declares them — this is their equivalent, and callers put it in
|
|
79
|
+
* `@layer astryx-base` so a theme's override wins by layer rather than by
|
|
80
|
+
* specificity. Seeding it per theme scope instead re-declares the default
|
|
81
|
+
* inside every nested theme, which is the shadowing this shape avoids.
|
|
82
|
+
*
|
|
83
|
+
* @internal Not exported from `@astryxdesign/core/theme`: the `<Theme>`
|
|
84
|
+
* runtime is the only caller. `astryx theme build` formats the same block from
|
|
85
|
+
* the public `dataTokenDefaults` export, and a CLI test asserts the two are
|
|
86
|
+
* byte-identical.
|
|
87
|
+
*/
|
|
88
|
+
export declare function generateDataTokenDefaultsCSS(): string;
|
|
71
89
|
/**
|
|
72
90
|
* Generate layered CSS for a theme — runtime path.
|
|
73
91
|
*
|
|
@@ -78,6 +96,9 @@ export declare function generateOnMediaCSS(theme: DefinedTheme): string;
|
|
|
78
96
|
* This separation ensures prose defaults (what bare HTML looks like in a theme)
|
|
79
97
|
* sit at reset-layer priority where any class-based style wins, while component
|
|
80
98
|
* overrides sit above StyleX so themes can restyle components intentionally.
|
|
99
|
+
*
|
|
100
|
+
* The theme-independent `--color-data-*` defaults are not part of this output:
|
|
101
|
+
* see `generateDataTokenDefaultsCSS`.
|
|
81
102
|
*/
|
|
82
103
|
export declare function generateThemeCSS(theme: DefinedTheme): ThemeCSSOutput;
|
|
83
104
|
//# sourceMappingURL=generateThemeRules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateThemeRules.d.ts","sourceRoot":"","sources":["../../src/theme/generateThemeRules.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generateThemeRules.d.ts","sourceRoot":"","sources":["../../src/theme/generateThemeRules.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAiGhD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AA8LD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAoChE;AAkRD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAe5E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CA4E9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAKrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CA2BpE"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { parseStyleKey } from "../utils/parseStyleKey.js";
|
|
19
19
|
import { getDerivedVars } from "./derivedVarRegistry.js";
|
|
20
|
+
import { dataTokenDefaults } from "./domainTokens/dataTokens.js";
|
|
20
21
|
import { cssVar, classPrefix, dataAttrNamespace } from "../naming.js";
|
|
21
22
|
|
|
22
23
|
/**
|
|
@@ -623,6 +624,28 @@ export function generateOnMediaCSS(theme) {
|
|
|
623
624
|
return `@scope (${scopeSelector}) to (${THEME_SCOPE_TO}) {\n${inner}\n}`;
|
|
624
625
|
}
|
|
625
626
|
|
|
627
|
+
/**
|
|
628
|
+
* The `--color-data-*` defaults as one unscoped `:root` block.
|
|
629
|
+
*
|
|
630
|
+
* Core tokens reach CSS once, at `:root`, from StyleX's `defineVars` output in
|
|
631
|
+
* `@layer astryx-base`; a theme's own scope block then carries only the tokens
|
|
632
|
+
* that theme overrides, which is why a nested theme inherits its parent's
|
|
633
|
+
* override instead of shadowing it. Data tokens are not StyleX vars, so nothing
|
|
634
|
+
* declares them — this is their equivalent, and callers put it in
|
|
635
|
+
* `@layer astryx-base` so a theme's override wins by layer rather than by
|
|
636
|
+
* specificity. Seeding it per theme scope instead re-declares the default
|
|
637
|
+
* inside every nested theme, which is the shadowing this shape avoids.
|
|
638
|
+
*
|
|
639
|
+
* @internal Not exported from `@astryxdesign/core/theme`: the `<Theme>`
|
|
640
|
+
* runtime is the only caller. `astryx theme build` formats the same block from
|
|
641
|
+
* the public `dataTokenDefaults` export, and a CLI test asserts the two are
|
|
642
|
+
* byte-identical.
|
|
643
|
+
*/
|
|
644
|
+
export function generateDataTokenDefaultsCSS() {
|
|
645
|
+
const declarations = Object.entries(dataTokenDefaults).map(([prop, value]) => ` ${prop}: ${value};`).join('\n');
|
|
646
|
+
return `:root {\n${declarations}\n}`;
|
|
647
|
+
}
|
|
648
|
+
|
|
626
649
|
/**
|
|
627
650
|
* Generate layered CSS for a theme — runtime path.
|
|
628
651
|
*
|
|
@@ -633,6 +656,9 @@ export function generateOnMediaCSS(theme) {
|
|
|
633
656
|
* This separation ensures prose defaults (what bare HTML looks like in a theme)
|
|
634
657
|
* sit at reset-layer priority where any class-based style wins, while component
|
|
635
658
|
* overrides sit above StyleX so themes can restyle components intentionally.
|
|
659
|
+
*
|
|
660
|
+
* The theme-independent `--color-data-*` defaults are not part of this output:
|
|
661
|
+
* see `generateDataTokenDefaultsCSS`.
|
|
636
662
|
*/
|
|
637
663
|
export function generateThemeCSS(theme) {
|
|
638
664
|
const {
|
|
@@ -29,7 +29,7 @@ export declare const syntaxTokenDefaults: {
|
|
|
29
29
|
readonly '--color-syntax-tag': "var(--color-text-red)";
|
|
30
30
|
readonly '--color-syntax-attribute': "var(--color-text-teal)";
|
|
31
31
|
readonly '--color-syntax-property': "var(--color-text-cyan)";
|
|
32
|
-
readonly '--color-syntax-punctuation': "var(--color-text-
|
|
32
|
+
readonly '--color-syntax-punctuation': "var(--color-text-secondary)";
|
|
33
33
|
readonly '--color-syntax-background': "var(--color-background-muted)";
|
|
34
34
|
};
|
|
35
35
|
export type SyntaxTokenName = keyof typeof syntaxTokenDefaults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/theme/syntax/tokens.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/theme/syntax/tokens.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;CAgCtB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,mBAAmB,CAAC"}
|
|
@@ -44,8 +44,11 @@ export const syntaxTokenDefaults = {
|
|
|
44
44
|
'--color-syntax-attribute': 'var(--color-text-teal)',
|
|
45
45
|
// property -> cyan text (object properties)
|
|
46
46
|
'--color-syntax-property': 'var(--color-text-cyan)',
|
|
47
|
-
// punctuation ->
|
|
48
|
-
|
|
47
|
+
// punctuation -> secondary text (brackets, semicolons). Not disabled text:
|
|
48
|
+
// disabled grey is calibrated to fail AA on purpose (WCAG exempts inactive
|
|
49
|
+
// controls), and punctuation in a code sample is normal, always-active
|
|
50
|
+
// text — see #5386.
|
|
51
|
+
'--color-syntax-punctuation': 'var(--color-text-secondary)',
|
|
49
52
|
// background -> muted surface
|
|
50
53
|
'--color-syntax-background': 'var(--color-background-muted)'
|
|
51
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/theme/useTheme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/theme/useTheme.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAUhD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,0CAA0C;IAC1C,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAO1E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AA+HD;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAM5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,QAAQ,IAAI,cAAc,CAmCzC"}
|
package/dist/theme/useTheme.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* SYNC: When modified, update:
|
|
21
21
|
* - /packages/core/src/theme/index.ts
|
|
22
22
|
*/
|
|
23
|
-
import { createContext, use, useMemo, useSyncExternalStore } from 'react';
|
|
23
|
+
import { createContext, use, useCallback, useMemo, useSyncExternalStore } from 'react';
|
|
24
24
|
import { resolveThemeTokens } from "./tokens.js";
|
|
25
25
|
import { getRegisteredTheme } from "./themeRegistry.js";
|
|
26
26
|
import { dataAttr } from "../naming.js";
|
|
@@ -207,13 +207,12 @@ export function useTheme() {
|
|
|
207
207
|
const tokens = useMemo(() => resolveThemeTokens(theme, {
|
|
208
208
|
mode: effectiveMode
|
|
209
209
|
}), [theme, effectiveMode]);
|
|
210
|
-
const token = name =>
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
name: theme?.name ?? 'default',
|
|
210
|
+
const token = useCallback(name => tokens[name] ?? '', [tokens]);
|
|
211
|
+
const name = theme?.name ?? 'default';
|
|
212
|
+
return useMemo(() => ({
|
|
213
|
+
name,
|
|
215
214
|
mode: effectiveMode,
|
|
216
215
|
token,
|
|
217
216
|
tokens
|
|
218
|
-
};
|
|
217
|
+
}), [name, effectiveMode, token, tokens]);
|
|
219
218
|
}
|
|
@@ -19,14 +19,11 @@ export declare function isLocaleDayFirst(locale?: Locale): boolean;
|
|
|
19
19
|
/**
|
|
20
20
|
* Parses user input into a PlainDate.
|
|
21
21
|
*
|
|
22
|
-
* Supports
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* - Numeric formats without year: "1/25", "25/1" (defaults to current year)
|
|
28
|
-
*
|
|
29
|
-
* For ambiguous numeric formats (both numbers ≤ 12), uses locale preference.
|
|
22
|
+
* Supports ISO dates, English month names, and ASCII numeric dates with or
|
|
23
|
+
* without a year. For ambiguous ASCII numeric input where both fields are at
|
|
24
|
+
* most 12, `locale` selects month-first versus day-first order. It does not
|
|
25
|
+
* localize month-name parsing, accept non-ASCII digits, or provide a general
|
|
26
|
+
* locale-aware parser.
|
|
30
27
|
*
|
|
31
28
|
* @returns PlainDate if valid, null if unparseable
|
|
32
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateParser.d.ts","sourceRoot":"","sources":["../../src/utils/dateParser.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAqC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,EACL,gBAAgB,IAAI,QAAQ,EAC5B,cAAc,IAAI,SAAS,GAC5B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"dateParser.d.ts","sourceRoot":"","sources":["../../src/utils/dateParser.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAqC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,EACL,gBAAgB,IAAI,QAAQ,EAC5B,cAAc,IAAI,SAAS,GAC5B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAa,GAAG,OAAO,CAO/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAa,GACpB,SAAS,GAAG,IAAI,CAsGlB"}
|
package/dist/utils/dateParser.js
CHANGED
|
@@ -18,8 +18,10 @@ export { plainDateFromISO as parseISO, plainDateToISO as dateToISO } from "./pla
|
|
|
18
18
|
* Detects if the locale uses day-first date format (DD/MM/YYYY).
|
|
19
19
|
* US and a few others use month-first (MM/DD/YYYY).
|
|
20
20
|
*/
|
|
21
|
-
export function isLocaleDayFirst(locale) {
|
|
22
|
-
const parts = new Intl.DateTimeFormat(locale
|
|
21
|
+
export function isLocaleDayFirst(locale = 'en') {
|
|
22
|
+
const parts = new Intl.DateTimeFormat(locale, {
|
|
23
|
+
calendar: 'gregory'
|
|
24
|
+
}).formatToParts(new Date(2000, 0, 15));
|
|
23
25
|
const dayIndex = parts.findIndex(p => p.type === 'day');
|
|
24
26
|
const monthIndex = parts.findIndex(p => p.type === 'month');
|
|
25
27
|
return dayIndex < monthIndex;
|
|
@@ -28,18 +30,15 @@ export function isLocaleDayFirst(locale) {
|
|
|
28
30
|
/**
|
|
29
31
|
* Parses user input into a PlainDate.
|
|
30
32
|
*
|
|
31
|
-
* Supports
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* - Numeric formats without year: "1/25", "25/1" (defaults to current year)
|
|
37
|
-
*
|
|
38
|
-
* For ambiguous numeric formats (both numbers ≤ 12), uses locale preference.
|
|
33
|
+
* Supports ISO dates, English month names, and ASCII numeric dates with or
|
|
34
|
+
* without a year. For ambiguous ASCII numeric input where both fields are at
|
|
35
|
+
* most 12, `locale` selects month-first versus day-first order. It does not
|
|
36
|
+
* localize month-name parsing, accept non-ASCII digits, or provide a general
|
|
37
|
+
* locale-aware parser.
|
|
39
38
|
*
|
|
40
39
|
* @returns PlainDate if valid, null if unparseable
|
|
41
40
|
*/
|
|
42
|
-
export function parseDateInput(input, locale) {
|
|
41
|
+
export function parseDateInput(input, locale = 'en') {
|
|
43
42
|
const trimmed = input.trim();
|
|
44
43
|
if (!trimmed) {
|
|
45
44
|
return null;
|
|
@@ -78,6 +78,17 @@ export declare const focusOutlineStyles: Readonly<{
|
|
|
78
78
|
readonly outlineColor: stylex.StyleXClassNameFor<"outlineColor", "var(--color-accent)" | null>;
|
|
79
79
|
readonly outlineOffset: stylex.StyleXClassNameFor<"outlineOffset", "0" | "3px">;
|
|
80
80
|
}>;
|
|
81
|
+
readonly focusWithinFirstChild: Readonly<{
|
|
82
|
+
readonly outlineWidth: stylex.StyleXClassNameFor<"outlineWidth", "0" | "2px">;
|
|
83
|
+
readonly outlineStyle: stylex.StyleXClassNameFor<"outlineStyle", "none" | "solid">;
|
|
84
|
+
readonly outlineColor: stylex.StyleXClassNameFor<"outlineColor", "var(--color-accent)" | null>;
|
|
85
|
+
readonly outlineOffset: stylex.StyleXClassNameFor<"outlineOffset", "0" | "3px">;
|
|
86
|
+
}>;
|
|
87
|
+
readonly suppressed: Readonly<{
|
|
88
|
+
readonly outlineWidth: stylex.StyleXClassNameFor<"outlineWidth", "0">;
|
|
89
|
+
readonly outlineStyle: stylex.StyleXClassNameFor<"outlineStyle", "none">;
|
|
90
|
+
readonly outlineOffset: stylex.StyleXClassNameFor<"outlineOffset", "0">;
|
|
91
|
+
}>;
|
|
81
92
|
readonly publishFocusVisibleVars: Readonly<{
|
|
82
93
|
readonly '--_focus-outline': stylex.StyleXClassNameFor<"--_focus-outline", string>;
|
|
83
94
|
readonly '--_focus-outline-offset': stylex.StyleXClassNameFor<"--_focus-outline-offset", "0" | "3px">;
|
|
@@ -103,6 +114,20 @@ export declare const focusOutlineProps: {
|
|
|
103
114
|
[$$Key$$: string]: string | number;
|
|
104
115
|
}>;
|
|
105
116
|
}>;
|
|
117
|
+
readonly focusWithinFirstChild: (...styles: StyleXPropsArg[]) => Readonly<{
|
|
118
|
+
className?: string;
|
|
119
|
+
'data-style-src'?: string;
|
|
120
|
+
style?: Readonly<{
|
|
121
|
+
[$$Key$$: string]: string | number;
|
|
122
|
+
}>;
|
|
123
|
+
}>;
|
|
124
|
+
readonly suppressed: (...styles: StyleXPropsArg[]) => Readonly<{
|
|
125
|
+
className?: string;
|
|
126
|
+
'data-style-src'?: string;
|
|
127
|
+
style?: Readonly<{
|
|
128
|
+
[$$Key$$: string]: string | number;
|
|
129
|
+
}>;
|
|
130
|
+
}>;
|
|
106
131
|
readonly publishFocusVisibleVars: (...styles: StyleXPropsArg[]) => Readonly<{
|
|
107
132
|
className?: string;
|
|
108
133
|
'data-style-src'?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusOutline.stylex.d.ts","sourceRoot":"","sources":["../../src/utils/focusOutline.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAyE,CAAC;AAgBpG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"focusOutline.stylex.d.ts","sourceRoot":"","sources":["../../src/utils/focusOutline.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAyE,CAAC;AAgBpG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG7B,CAAC;AAIH,KAAK,cAAc,GAAG,OAAO,CAAC;AAiB9B,eAAO,MAAM,iBAAiB;uCAdT,cAAc,EAAE;;;;;;;sCAAhB,cAAc,EAAE;;;;;;;gDAAhB,cAAc,EAAE;;;;;;;qCAAhB,cAAc,EAAE;;;;;;;kDAAhB,cAAc,EAAE;;;;;;;iDAAhB,cAAc,EAAE;;;;;;;CA2B3B,CAAC"}
|
|
@@ -106,6 +106,19 @@ export const focusOutlineStyles = {
|
|
|
106
106
|
kInvED: "x1wfwxd8 x1jumodi",
|
|
107
107
|
$$css: true
|
|
108
108
|
},
|
|
109
|
+
focusWithinFirstChild: {
|
|
110
|
+
kMeerF: "x1k57tk5 xmmisi4",
|
|
111
|
+
k3XXqK: "x1t137rt xfd04fr",
|
|
112
|
+
kjBf7l: "xobxmqy",
|
|
113
|
+
kInvED: "x1wfwxd8 x2vr5qc",
|
|
114
|
+
$$css: true
|
|
115
|
+
},
|
|
116
|
+
suppressed: {
|
|
117
|
+
kMeerF: "x1k57tk5",
|
|
118
|
+
k3XXqK: "x1t137rt",
|
|
119
|
+
kInvED: "x1wfwxd8",
|
|
120
|
+
$$css: true
|
|
121
|
+
},
|
|
109
122
|
publishFocusVisibleVars: {
|
|
110
123
|
"--_focus-outline": "x17wzz1v xqih627",
|
|
111
124
|
"--_focus-outline-offset": "xgzxwq1 xqchwus",
|
|
@@ -138,6 +151,8 @@ function makeFocusOutlineProps(style) {
|
|
|
138
151
|
export const focusOutlineProps = {
|
|
139
152
|
focusVisible: makeFocusOutlineProps(focusOutlineStyles.focusVisible),
|
|
140
153
|
focusWithin: makeFocusOutlineProps(focusOutlineStyles.focusWithin),
|
|
154
|
+
focusWithinFirstChild: makeFocusOutlineProps(focusOutlineStyles.focusWithinFirstChild),
|
|
155
|
+
suppressed: makeFocusOutlineProps(focusOutlineStyles.suppressed),
|
|
141
156
|
publishFocusVisibleVars: makeFocusOutlineProps(focusOutlineStyles.publishFocusVisibleVars),
|
|
142
157
|
focusWithinOrPublished: makeFocusOutlineProps(focusOutlineStyles.focusWithinOrPublished)
|
|
143
158
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared hover and pressed overlay states
|
|
3
|
+
* @input Uses StyleX and the semantic interaction-overlay color tokens
|
|
4
|
+
* @output Exports reusable background-color and background-image state styles
|
|
5
|
+
* @position Internal styling utility for interactive core surfaces
|
|
6
|
+
*
|
|
7
|
+
* Keep the enabled guard outside the individual states. StyleX assigns an
|
|
8
|
+
* extra priority bucket (and generated selector specificity) to media-nested
|
|
9
|
+
* rules. Repeating `:active` inside the hover-capable branch gives hover and
|
|
10
|
+
* press the same generated specificity; StyleX's native pseudo-state ordering
|
|
11
|
+
* then emits `:active` last. The bare `:active` branch remains the touch
|
|
12
|
+
* fallback, where `(hover: hover)` does not match.
|
|
13
|
+
*/
|
|
14
|
+
import * as stylex from '@stylexjs/stylex';
|
|
15
|
+
export declare const interactionOverlayStyles: Readonly<{
|
|
16
|
+
readonly backgroundColor: Readonly<{
|
|
17
|
+
readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "light-dark(#0536590C, #FFFFFF0C)" | "light-dark(#05365919, #FFFFFF19)" | "transparent" | null>;
|
|
18
|
+
}>;
|
|
19
|
+
readonly backgroundImage: Readonly<{
|
|
20
|
+
readonly backgroundImage: stylex.StyleXClassNameFor<"backgroundImage", string | null>;
|
|
21
|
+
}>;
|
|
22
|
+
readonly backgroundImageOnNeutral: Readonly<{
|
|
23
|
+
readonly backgroundImage: stylex.StyleXClassNameFor<"backgroundImage", string | null>;
|
|
24
|
+
}>;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=interactionOverlay.stylex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactionOverlay.stylex.d.ts","sourceRoot":"","sources":["../../src/utils/interactionOverlay.stylex.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAU3C,eAAO,MAAM,wBAAwB;;;;;;;;;;EA2CnC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/* eslint-disable @astryx/no-hover-on-disabled -- Every hover branch is
|
|
4
|
+
* nested beneath ENABLED below. Keeping that shared guard outside the media
|
|
5
|
+
* branch is what gives hover and active matching generated specificity. */
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @file Shared hover and pressed overlay states
|
|
9
|
+
* @input Uses StyleX and the semantic interaction-overlay color tokens
|
|
10
|
+
* @output Exports reusable background-color and background-image state styles
|
|
11
|
+
* @position Internal styling utility for interactive core surfaces
|
|
12
|
+
*
|
|
13
|
+
* Keep the enabled guard outside the individual states. StyleX assigns an
|
|
14
|
+
* extra priority bucket (and generated selector specificity) to media-nested
|
|
15
|
+
* rules. Repeating `:active` inside the hover-capable branch gives hover and
|
|
16
|
+
* press the same generated specificity; StyleX's native pseudo-state ordering
|
|
17
|
+
* then emits `:active` last. The bare `:active` branch remains the touch
|
|
18
|
+
* fallback, where `(hover: hover)` does not match.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import * as stylex from '@stylexjs/stylex';
|
|
22
|
+
import "../theme/tokens.stylex.js";
|
|
23
|
+
import { colorVars } from "../theme/tokens.stylex.js";
|
|
24
|
+
const ENABLED = ':where(:not(:disabled,[aria-disabled="true"]))';
|
|
25
|
+
const HOVER_HOVER = '@media (hover: hover)';
|
|
26
|
+
const hoverImage = `linear-gradient(${colorVars['--color-overlay-hover']}, ${colorVars['--color-overlay-hover']})`;
|
|
27
|
+
const pressedImage = `linear-gradient(${colorVars['--color-overlay-pressed']}, ${colorVars['--color-overlay-pressed']})`;
|
|
28
|
+
const neutralImage = `linear-gradient(${colorVars['--color-neutral']}, ${colorVars['--color-neutral']})`;
|
|
29
|
+
export const interactionOverlayStyles = {
|
|
30
|
+
backgroundColor: {
|
|
31
|
+
kWkggS: "xjbqb8w x1anq1lc xoevpu5 xprvw0a",
|
|
32
|
+
$$css: true
|
|
33
|
+
},
|
|
34
|
+
backgroundImage: {
|
|
35
|
+
kKwaWg: "x7uyq82 xmvprkv xetgvay",
|
|
36
|
+
$$css: true
|
|
37
|
+
},
|
|
38
|
+
backgroundImageOnNeutral: {
|
|
39
|
+
kKwaWg: "x14bno8m xzmimnh x1otsd3y xo3fi6e",
|
|
40
|
+
$$css: true
|
|
41
|
+
}
|
|
42
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file isApplePlatform.ts
|
|
3
|
+
* @input Reads navigator.userAgentData.platform and navigator.platform
|
|
4
|
+
* @output Exports isApplePlatform
|
|
5
|
+
* @position Internal util; the single platform detection behind useHotkeys and Kbd
|
|
6
|
+
*
|
|
7
|
+
* Deliberately absent from utils/index.ts: packages/core/src/index.ts does
|
|
8
|
+
* `export * from './utils'`, so naming it there would publish it as API.
|
|
9
|
+
* Import it by path, as interactionModality is imported.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Detects whether the current platform is macOS/iOS.
|
|
13
|
+
* Prefers the User-Agent Client Hints API when it names a platform (modern
|
|
14
|
+
* Chrome/Edge), falls back to navigator.platform (deprecated but universally
|
|
15
|
+
* supported) when it names none.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isApplePlatform(): boolean;
|
|
18
|
+
//# sourceMappingURL=isApplePlatform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isApplePlatform.d.ts","sourceRoot":"","sources":["../../src/utils/isApplePlatform.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAiBzC"}
|