@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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useCalendarDays.ts
|
|
7
|
-
* @input Uses React
|
|
7
|
+
* @input Uses React useMemo, useLocale, PlainDate utilities, generated CLDR weekday data
|
|
8
8
|
* @output Exports useCalendarDays hook for generating calendar day grids
|
|
9
9
|
* @position Calendar-specific hook; used by Calendar
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/Calendar/hooks/index.ts
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import {useMemo} from 'react';
|
|
16
16
|
import type {DayOfWeek, ISODateString} from '../../utils/dateTypes';
|
|
17
17
|
import {
|
|
18
18
|
type PlainDate,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
plainDateDayOfWeek,
|
|
22
22
|
plainDateAddDays,
|
|
23
23
|
} from '../../utils/plainDate';
|
|
24
|
-
import {
|
|
24
|
+
import {useLocale} from '../../i18n';
|
|
25
25
|
import {getStandaloneShortWeekdayNames} from '../getStandaloneShortWeekdayNames';
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -86,7 +86,7 @@ export function useCalendarDays(
|
|
|
86
86
|
options: UseCalendarDaysOptions,
|
|
87
87
|
): UseCalendarDaysReturn {
|
|
88
88
|
const {year, month, weekStartsOn = 0, hasVariableRowCount = false} = options;
|
|
89
|
-
const
|
|
89
|
+
const locale = useLocale();
|
|
90
90
|
|
|
91
91
|
// Calculate grid structure
|
|
92
92
|
const gridInfo = useMemo(() => {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useCalendarNavigation.ts
|
|
7
|
-
* @input Uses React useState, useMemo, useCallback, PlainDate utilities
|
|
7
|
+
* @input Uses React useState, useMemo, useCallback, useLocale, PlainDate utilities
|
|
8
8
|
* @output Exports useCalendarNavigation hook for month navigation
|
|
9
9
|
* @position Calendar-specific hook; used by Calendar
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/Calendar/hooks/index.ts
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import {useState, useMemo, useCallback} from 'react';
|
|
16
16
|
import type {ISODateString} from '../../utils/dateTypes';
|
|
17
17
|
import {
|
|
18
18
|
type PlainDate,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
plainDateFormat,
|
|
26
26
|
DATE_FORMAT_MONTH_YEAR,
|
|
27
27
|
} from '../../utils/plainDate';
|
|
28
|
-
import {
|
|
28
|
+
import {useLocale} from '../../i18n';
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Configuration for calendar navigation
|
|
@@ -99,7 +99,7 @@ export function useCalendarNavigation(
|
|
|
99
99
|
onFocusDateChange,
|
|
100
100
|
numberOfMonths = 1,
|
|
101
101
|
} = options;
|
|
102
|
-
const
|
|
102
|
+
const locale = useLocale();
|
|
103
103
|
|
|
104
104
|
// Pending focus target after month navigation
|
|
105
105
|
const [pendingFocus, setPendingFocus] = useState<ISODateString | null>(null);
|
package/src/Calendar/styles.ts
CHANGED
|
@@ -51,19 +51,12 @@ export const calendarStyles = stylex.create({
|
|
|
51
51
|
},
|
|
52
52
|
monthsContainer: {
|
|
53
53
|
display: 'flex',
|
|
54
|
+
// Wraps rather than overflowing: two months side by side need ~488px, so
|
|
55
|
+
// an unwrapped row scrolls the document sideways below that and puts the
|
|
56
|
+
// next-month button off-viewport (WCAG 1.4.10). Above 488px nothing moves.
|
|
57
|
+
flexWrap: 'wrap',
|
|
54
58
|
gap: spacingVars['--spacing-4'],
|
|
55
59
|
},
|
|
56
|
-
srOnly: {
|
|
57
|
-
position: 'absolute',
|
|
58
|
-
width: '1px',
|
|
59
|
-
height: '1px',
|
|
60
|
-
padding: 0,
|
|
61
|
-
margin: '-1px',
|
|
62
|
-
overflow: 'hidden',
|
|
63
|
-
clip: 'rect(0, 0, 0, 0)',
|
|
64
|
-
whiteSpace: 'nowrap',
|
|
65
|
-
borderWidth: 0,
|
|
66
|
-
},
|
|
67
60
|
/**
|
|
68
61
|
* Wrapper for the month nav chevrons. RTL mirroring is applied by
|
|
69
62
|
* composing the shared `rtlStyles.mirror` transform onto this wrapper
|
|
@@ -123,6 +116,17 @@ export const monthGridStyles = stylex.create({
|
|
|
123
116
|
// Day Cell Styles - Structural (layout, sizing, positioning)
|
|
124
117
|
// =============================================================================
|
|
125
118
|
|
|
119
|
+
// Half the gap between the day button and its cell — (--size-element-md minus
|
|
120
|
+
// --size-element-sm) / 2 — so the band's rounded caps line up with the button
|
|
121
|
+
// and the button's ::before bleeds out to meet its neighbour's. Deliberately a
|
|
122
|
+
// literal and NOT a spacing token: this is a layout value derived from the two
|
|
123
|
+
// size tokens, and pinning it to --spacing-0-5 desynchronises it from them
|
|
124
|
+
// (matcha sets that step to 3px, which overlaps adjacent days' hit targets by
|
|
125
|
+
// 2px). Deriving it with calc() from the size tokens would be better still and
|
|
126
|
+
// would close butter's 4px dead gap; that needs its own measured change.
|
|
127
|
+
const BAND_INSET = '2px';
|
|
128
|
+
const HIT_BLEED = '-2px';
|
|
129
|
+
|
|
126
130
|
export const dayCellStyles = stylex.create({
|
|
127
131
|
// Cell container
|
|
128
132
|
cell: {
|
|
@@ -137,53 +141,53 @@ export const dayCellStyles = stylex.create({
|
|
|
137
141
|
// Range background - structural positioning
|
|
138
142
|
rangeBg: {
|
|
139
143
|
position: 'absolute',
|
|
140
|
-
top:
|
|
141
|
-
bottom:
|
|
144
|
+
top: BAND_INSET,
|
|
145
|
+
bottom: BAND_INSET,
|
|
142
146
|
insetInlineStart: 0,
|
|
143
147
|
insetInlineEnd: 0,
|
|
144
148
|
},
|
|
145
149
|
rangeBgRadiusStart: {
|
|
146
|
-
insetInlineStart:
|
|
150
|
+
insetInlineStart: BAND_INSET,
|
|
147
151
|
borderStartStartRadius: radiusVars['--radius-full'],
|
|
148
152
|
borderEndStartRadius: radiusVars['--radius-full'],
|
|
149
153
|
},
|
|
150
154
|
rangeBgRadiusEnd: {
|
|
151
|
-
insetInlineEnd:
|
|
155
|
+
insetInlineEnd: BAND_INSET,
|
|
152
156
|
borderStartEndRadius: radiusVars['--radius-full'],
|
|
153
157
|
borderEndEndRadius: radiusVars['--radius-full'],
|
|
154
158
|
},
|
|
155
159
|
rangeInsetStart: {
|
|
156
|
-
insetInlineStart:
|
|
160
|
+
insetInlineStart: BAND_INSET,
|
|
157
161
|
},
|
|
158
162
|
rangeInsetEnd: {
|
|
159
|
-
insetInlineEnd:
|
|
163
|
+
insetInlineEnd: BAND_INSET,
|
|
160
164
|
},
|
|
161
165
|
|
|
162
166
|
// Preview background - structural positioning
|
|
163
167
|
previewBg: {
|
|
164
168
|
position: 'absolute',
|
|
165
|
-
top:
|
|
166
|
-
bottom:
|
|
169
|
+
top: BAND_INSET,
|
|
170
|
+
bottom: BAND_INSET,
|
|
167
171
|
insetInlineStart: 0,
|
|
168
172
|
insetInlineEnd: 0,
|
|
169
173
|
},
|
|
170
174
|
previewBgRadiusStart: {
|
|
171
|
-
insetInlineStart:
|
|
175
|
+
insetInlineStart: BAND_INSET,
|
|
172
176
|
borderStartStartRadius: radiusVars['--radius-full'],
|
|
173
177
|
borderEndStartRadius: radiusVars['--radius-full'],
|
|
174
178
|
},
|
|
175
179
|
previewBgRadiusEnd: {
|
|
176
|
-
insetInlineEnd:
|
|
180
|
+
insetInlineEnd: BAND_INSET,
|
|
177
181
|
borderStartEndRadius: radiusVars['--radius-full'],
|
|
178
182
|
borderEndEndRadius: radiusVars['--radius-full'],
|
|
179
183
|
},
|
|
180
184
|
previewStart: {
|
|
181
|
-
insetInlineStart:
|
|
185
|
+
insetInlineStart: BAND_INSET,
|
|
182
186
|
borderStartStartRadius: radiusVars['--radius-full'],
|
|
183
187
|
borderEndStartRadius: radiusVars['--radius-full'],
|
|
184
188
|
},
|
|
185
189
|
previewEnd: {
|
|
186
|
-
insetInlineEnd:
|
|
190
|
+
insetInlineEnd: BAND_INSET,
|
|
187
191
|
borderStartEndRadius: radiusVars['--radius-full'],
|
|
188
192
|
borderEndEndRadius: radiusVars['--radius-full'],
|
|
189
193
|
},
|
|
@@ -195,7 +199,7 @@ export const dayCellStyles = stylex.create({
|
|
|
195
199
|
display: 'flex',
|
|
196
200
|
alignItems: 'center',
|
|
197
201
|
justifyContent: 'center',
|
|
198
|
-
borderRadius: '
|
|
202
|
+
borderRadius: radiusVars['--radius-full'],
|
|
199
203
|
borderWidth: 0,
|
|
200
204
|
borderStyle: 'none',
|
|
201
205
|
cursor: {
|
|
@@ -213,14 +217,14 @@ export const dayCellStyles = stylex.create({
|
|
|
213
217
|
},
|
|
214
218
|
transitionDuration: durationVars['--duration-fast'],
|
|
215
219
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
216
|
-
// Expand hit target
|
|
220
|
+
// Expand hit target so adjacent days meet with no gap
|
|
217
221
|
'::before': {
|
|
218
222
|
content: '""',
|
|
219
223
|
position: 'absolute',
|
|
220
|
-
top:
|
|
221
|
-
insetInlineEnd:
|
|
222
|
-
bottom:
|
|
223
|
-
insetInlineStart:
|
|
224
|
+
top: HIT_BLEED,
|
|
225
|
+
insetInlineEnd: HIT_BLEED,
|
|
226
|
+
bottom: HIT_BLEED,
|
|
227
|
+
insetInlineStart: HIT_BLEED,
|
|
224
228
|
},
|
|
225
229
|
},
|
|
226
230
|
|
|
@@ -255,12 +259,6 @@ export const dayCellTheme = stylex.create({
|
|
|
255
259
|
day: {
|
|
256
260
|
color: colorVars['--color-text-primary'],
|
|
257
261
|
backgroundColor: 'transparent',
|
|
258
|
-
backgroundImage: {
|
|
259
|
-
default: null,
|
|
260
|
-
':hover:where(:not(:disabled,[aria-disabled="true"]))': {
|
|
261
|
-
'@media (hover: hover)': `linear-gradient(${colorVars['--color-overlay-hover']}, ${colorVars['--color-overlay-hover']})`,
|
|
262
|
-
},
|
|
263
|
-
},
|
|
264
262
|
},
|
|
265
263
|
|
|
266
264
|
// Outside days (adjacent months)
|
|
@@ -280,13 +278,21 @@ export const dayCellTheme = stylex.create({
|
|
|
280
278
|
|
|
281
279
|
// Selected state (single selection or range endpoints)
|
|
282
280
|
daySelected: {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
281
|
+
// Forced colors (Windows High Contrast) strips the accent fill, which
|
|
282
|
+
// leaves the selected date looking exactly like every other day.
|
|
283
|
+
// Highlight/HighlightText is the platform convention for a selected
|
|
284
|
+
// control (WCAG 1.4.11), and `forced-color-adjust: none` is required
|
|
285
|
+
// because this is a <button>: the UA otherwise keeps the native
|
|
286
|
+
// ButtonFace surface and ignores the authored fill, the same trap
|
|
287
|
+
// ToggleButton documents.
|
|
288
|
+
forcedColorAdjust: 'none',
|
|
289
|
+
backgroundColor: {
|
|
290
|
+
default: colorVars['--color-accent'],
|
|
291
|
+
'@media (forced-colors: active)': 'Highlight',
|
|
292
|
+
},
|
|
293
|
+
color: {
|
|
294
|
+
default: colorVars['--color-on-accent'],
|
|
295
|
+
'@media (forced-colors: active)': 'HighlightText',
|
|
290
296
|
},
|
|
291
297
|
},
|
|
292
298
|
|
package/src/Card/Card.doc.mjs
CHANGED
|
@@ -57,8 +57,9 @@ export const docs = {
|
|
|
57
57
|
{
|
|
58
58
|
name: 'padding',
|
|
59
59
|
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
60
|
-
description:
|
|
61
|
-
|
|
60
|
+
description:
|
|
61
|
+
"Internal padding using the spacing scale. Omit it and the card takes the theme's card padding rather than a step, so passing a step is a decision to override the theme, not a way to restate the default.",
|
|
62
|
+
default: "the theme's card padding (spacing step 4 with no theme)",
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
65
|
name: 'variant',
|
|
@@ -77,7 +78,6 @@ export const docs = {
|
|
|
77
78
|
],
|
|
78
79
|
playground: {
|
|
79
80
|
defaults: {
|
|
80
|
-
padding: 4,
|
|
81
81
|
children: {
|
|
82
82
|
__element: 'VStack',
|
|
83
83
|
props: {gap: 2},
|
|
@@ -91,7 +91,7 @@ export const docs = {
|
|
|
91
91
|
theming: {
|
|
92
92
|
container: true,
|
|
93
93
|
targets: [
|
|
94
|
-
{className: 'astryx-card', visualProps: ['variant']},
|
|
94
|
+
{className: 'astryx-card', visualProps: ['variant', 'elevation']},
|
|
95
95
|
],
|
|
96
96
|
vars: [
|
|
97
97
|
{name: '--_card-radius', description: 'Border radius of the card', default: 'var(--radius-container)', private: true},
|
|
@@ -135,16 +135,19 @@ export const docsZh = {
|
|
|
135
135
|
{name: 'maxWidth', type: 'SizeValue', description: '卡片最大宽度。'},
|
|
136
136
|
{name: 'minHeight', type: 'SizeValue', description: '卡片最小高度。'},
|
|
137
137
|
{name: 'children', type: 'ReactNode', description: '在卡片内部渲染的内容。'},
|
|
138
|
-
{name: 'padding', type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10', description: '
|
|
138
|
+
{name: 'padding', type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10', description: '使用间距比例的内边距。省略时,卡片采用主题的卡片内边距,而不是某个步进值;传入步进值意味着覆盖主题,而不是复述默认值。', default: "the theme's card padding (spacing step 4 with no theme)"},
|
|
139
|
+
{name: 'variant', type: "'default' | 'transparent' | 'muted' | 'blue' | 'cyan' | 'gray' | 'green' | 'orange' | 'pink' | 'purple' | 'red' | 'teal' | 'yellow'", description: '背景颜色变体。`default` 使用标准卡片背景;`transparent` 完全去掉背景;`muted` 使用弱化卡片的柔和背景。非语义变体使用对应的 `--color-background-<name>` 令牌。', default: "'default'"},
|
|
139
140
|
{name: 'elevation', type: "'none' | 'low' | 'med' | 'high'", description: '静止阴影深度。`none` 为扁平;`low`/`med`/`high` 对应阴影令牌比例。', default: "'none'"},
|
|
140
141
|
],
|
|
141
142
|
theming: {
|
|
142
143
|
container: true,
|
|
143
144
|
targets: [
|
|
144
|
-
{className: 'astryx-card', visualProps: ['variant']},
|
|
145
|
+
{className: 'astryx-card', visualProps: ['variant', 'elevation']},
|
|
145
146
|
],
|
|
146
147
|
vars: [
|
|
147
148
|
{name: '--_card-radius', description: 'Border radius of the card', default: 'var(--radius-container)', private: true},
|
|
149
|
+
{name: '--_card-elevation', description: 'Resting shadow of the card, set from the elevation prop.', default: '0 0 transparent', private: true},
|
|
150
|
+
{name: '--_card-ring', description: 'Inset ring drawn in the card box-shadow list.', default: '0 0 transparent', private: true},
|
|
148
151
|
],
|
|
149
152
|
derived: [
|
|
150
153
|
{property: 'borderRadius', vars: ['--_card-radius']},
|
|
@@ -178,7 +181,7 @@ export const docsDense = {
|
|
|
178
181
|
maxWidth: 'max card width',
|
|
179
182
|
minHeight: 'min card height',
|
|
180
183
|
children: 'content inside card',
|
|
181
|
-
padding:
|
|
184
|
+
padding: "internal padding via spacing scale; omitted = the theme's card padding, NOT a fixed step. Passing a step overrides the theme.",
|
|
182
185
|
variant: 'background color variant; `default` = standard card bg, `transparent` = no background at all, `muted` = muted bg for de-emphasised cards; non-semantic variants use the corresponding `--color-background-<name>` token',
|
|
183
186
|
elevation: 'resting shadow depth: none (flat) | low | med | high (shadow token scale). Raise only to float above content.',
|
|
184
187
|
},
|
package/src/Card/Card.test.tsx
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
+
import {createRef} from 'react';
|
|
3
4
|
import {describe, it, expect} from 'vitest';
|
|
4
5
|
import {render} from '@testing-library/react';
|
|
5
6
|
import {Card} from './Card';
|
|
7
|
+
import type {CardVariant} from './Card';
|
|
6
8
|
|
|
7
9
|
describe('Card', () => {
|
|
8
10
|
it('renders children', () => {
|
|
@@ -10,17 +12,52 @@ describe('Card', () => {
|
|
|
10
12
|
expect(getByText('Hello')).toBeInTheDocument();
|
|
11
13
|
});
|
|
12
14
|
|
|
13
|
-
it('
|
|
14
|
-
const
|
|
15
|
-
const
|
|
15
|
+
it('forwards ref to the rendered element', () => {
|
|
16
|
+
const ref = createRef<HTMLDivElement>();
|
|
17
|
+
const {container} = render(<Card ref={ref}>C</Card>);
|
|
18
|
+
expect(ref.current).toBe(container.firstElementChild);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('spreads unknown props onto the same element that carries the theme target', () => {
|
|
22
|
+
const {getByTestId} = render(
|
|
23
|
+
<Card data-testid="card" id="promo" aria-label="Promotion">
|
|
24
|
+
C
|
|
25
|
+
</Card>,
|
|
26
|
+
);
|
|
27
|
+
const root = getByTestId('card');
|
|
28
|
+
expect(root).toHaveAttribute('id', 'promo');
|
|
29
|
+
expect(root).toHaveAttribute('aria-label', 'Promotion');
|
|
16
30
|
expect(root.className).toContain('astryx-card');
|
|
17
31
|
});
|
|
18
32
|
|
|
19
|
-
it('
|
|
20
|
-
const {container} = render(<Card
|
|
33
|
+
it('merges a consumer className instead of replacing the theme target', () => {
|
|
34
|
+
const {container} = render(<Card className="promo">C</Card>);
|
|
21
35
|
const root = container.firstElementChild!;
|
|
22
36
|
expect(root.className).toContain('astryx-card');
|
|
23
|
-
expect(root.className).toContain('
|
|
37
|
+
expect(root.className).toContain('promo');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('reflects variant as a theme data attribute', () => {
|
|
41
|
+
const {container} = render(<Card variant="muted">C</Card>);
|
|
42
|
+
expect(container.firstElementChild).toHaveAttribute(
|
|
43
|
+
'data-variant',
|
|
44
|
+
'muted',
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('reflects elevation as a theme data attribute', () => {
|
|
49
|
+
const {container} = render(<Card elevation="high">C</Card>);
|
|
50
|
+
expect(container.firstElementChild).toHaveAttribute(
|
|
51
|
+
'data-elevation',
|
|
52
|
+
'high',
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('defaults to the default variant at rest elevation', () => {
|
|
57
|
+
const {container} = render(<Card>C</Card>);
|
|
58
|
+
const root = container.firstElementChild!;
|
|
59
|
+
expect(root).toHaveAttribute('data-variant', 'default');
|
|
60
|
+
expect(root).toHaveAttribute('data-elevation', 'none');
|
|
24
61
|
});
|
|
25
62
|
|
|
26
63
|
it('applies a distinct class for each elevation level', () => {
|
|
@@ -28,18 +65,75 @@ describe('Card', () => {
|
|
|
28
65
|
const {container} = render(<Card elevation={elevation}>C</Card>);
|
|
29
66
|
return container.firstElementChild!.className;
|
|
30
67
|
};
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
68
|
+
const classes = (['none', 'low', 'med', 'high'] as const).map(classFor);
|
|
69
|
+
expect(new Set(classes).size).toBe(4);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Deriving the prop from CardVariantMap must not change which values it
|
|
73
|
+
// accepts. A key added to or dropped from the map fails to type-check here:
|
|
74
|
+
// a missing one against Record<CardVariant, true>, an extra one as an excess
|
|
75
|
+
// property.
|
|
76
|
+
const builtInVariants: Record<CardVariant, true> = {
|
|
77
|
+
default: true,
|
|
78
|
+
transparent: true,
|
|
79
|
+
muted: true,
|
|
80
|
+
blue: true,
|
|
81
|
+
cyan: true,
|
|
82
|
+
gray: true,
|
|
83
|
+
green: true,
|
|
84
|
+
orange: true,
|
|
85
|
+
pink: true,
|
|
86
|
+
purple: true,
|
|
87
|
+
red: true,
|
|
88
|
+
teal: true,
|
|
89
|
+
yellow: true,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
it('accepts exactly the thirteen built-in variants, each reflected', () => {
|
|
93
|
+
const variants = Object.keys(builtInVariants) as CardVariant[];
|
|
94
|
+
expect(variants).toHaveLength(13);
|
|
95
|
+
for (const variant of variants) {
|
|
96
|
+
const {container} = render(<Card variant={variant}>C</Card>);
|
|
97
|
+
expect(container.firstElementChild).toHaveAttribute(
|
|
98
|
+
'data-variant',
|
|
99
|
+
variant,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe('a variant a theme added', () => {
|
|
105
|
+
// The cast stands in for the module augmentation `astryx theme build`
|
|
106
|
+
// emits; that the augmentation itself widens the prop is covered by
|
|
107
|
+
// packages/cli/clients/cli/commands/build-theme.variants.test.mjs.
|
|
108
|
+
const themeAdded = 'brand' as CardVariant;
|
|
109
|
+
|
|
110
|
+
const classesFor = (variant: CardVariant) => {
|
|
111
|
+
const {container} = render(<Card variant={variant}>C</Card>);
|
|
112
|
+
return new Set(container.firstElementChild!.className.split(' '));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
it('renders the selector a theme rule needs', () => {
|
|
116
|
+
const {container} = render(<Card variant={themeAdded}>C</Card>);
|
|
117
|
+
const root = container.firstElementChild!;
|
|
118
|
+
expect(root).toHaveAttribute('data-variant', 'brand');
|
|
119
|
+
expect(root.className).toContain('astryx-card');
|
|
120
|
+
expect(root.className).toContain('brand');
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('falls through to base styles instead of another variant', () => {
|
|
124
|
+
const muted = classesFor('muted');
|
|
125
|
+
const blue = classesFor('blue');
|
|
126
|
+
const brand = classesFor(themeAdded);
|
|
127
|
+
|
|
128
|
+
const variantOwned = [
|
|
129
|
+
...[...muted].filter(c => !blue.has(c)),
|
|
130
|
+
...[...blue].filter(c => !muted.has(c)),
|
|
131
|
+
];
|
|
132
|
+
const shared = [...muted].filter(c => blue.has(c));
|
|
133
|
+
|
|
134
|
+
expect(variantOwned.length).toBeGreaterThan(0);
|
|
135
|
+
expect(variantOwned.filter(c => brand.has(c))).toEqual([]);
|
|
136
|
+
expect(shared.filter(c => !brand.has(c))).toEqual([]);
|
|
137
|
+
});
|
|
44
138
|
});
|
|
45
139
|
});
|