@astryxdesign/core 0.4.4 → 0.4.5-canary.0472ec1
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 +40 -0
- package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
- package/dist/Blockquote/Blockquote.d.ts +4 -3
- package/dist/Blockquote/Blockquote.d.ts.map +1 -1
- package/dist/Blockquote/Blockquote.js +9 -10
- package/dist/BottomSheet/BottomSheet.d.ts +11 -2
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +4 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +5 -2
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +77 -18
- package/dist/BottomSheet/index.d.ts +1 -1
- package/dist/BottomSheet/index.d.ts.map +1 -1
- package/dist/BottomSheet/snapOffsets.d.ts +57 -20
- package/dist/BottomSheet/snapOffsets.d.ts.map +1 -1
- package/dist/BottomSheet/snapOffsets.js +106 -30
- package/dist/BottomSheet/useSheetGestures.d.ts +13 -8
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +160 -64
- package/dist/Breadcrumbs/BreadcrumbItem.js +6 -6
- package/dist/Button/Button.js +5 -5
- package/dist/Calendar/Calendar.d.ts +17 -0
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +55 -15
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +14 -0
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +1 -0
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +26 -0
- package/dist/Calendar/hooks/useCalendarConstraints.d.ts +22 -1
- package/dist/Calendar/hooks/useCalendarConstraints.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarConstraints.js +26 -4
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +14 -10
- package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarNavigation.js +8 -4
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts +47 -0
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +1 -0
- package/dist/Calendar/standaloneShortWeekdayNames.generated.js +40 -0
- package/dist/Calendar/styles.js +3 -3
- package/dist/Center/Center.d.ts +23 -1
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +12 -6
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +2 -2
- package/dist/Chat/ChatToolCalls.js +1 -1
- package/dist/Chat/useChatDictation.d.ts +1 -1
- package/dist/Chat/useChatDictation.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.d.ts +1 -1
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +4 -3
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +9 -0
- package/dist/Citation/Citation.js +3 -3
- package/dist/ClickableCard/ClickableCard.js +2 -2
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +8 -3
- package/dist/DateInput/DateInput.d.ts +31 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +92 -19
- package/dist/DateInput/MonthScroller.d.ts +35 -0
- package/dist/DateInput/MonthScroller.d.ts.map +1 -0
- package/dist/DateInput/MonthScroller.js +573 -0
- package/dist/DateInput/MonthYearWheels.d.ts +24 -0
- package/dist/DateInput/MonthYearWheels.d.ts.map +1 -0
- package/dist/DateInput/MonthYearWheels.js +114 -0
- package/dist/DateInput/TouchDateField.d.ts +10 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -0
- package/dist/DateInput/TouchDateField.js +810 -0
- package/dist/DateInput/Wheel.d.ts +41 -0
- package/dist/DateInput/Wheel.d.ts.map +1 -0
- package/dist/DateInput/Wheel.js +315 -0
- package/dist/DateInput/monthGeometry.d.ts +65 -0
- package/dist/DateInput/monthGeometry.d.ts.map +1 -0
- package/dist/DateInput/monthGeometry.js +98 -0
- package/dist/DateInput/tokens.stylex.d.ts +63 -0
- package/dist/DateInput/tokens.stylex.d.ts.map +1 -0
- package/dist/DateInput/tokens.stylex.js +74 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts +41 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -0
- package/dist/DateInput/useOwnScrollGesture.js +202 -0
- package/dist/DateInput/usePointerDragScroll.d.ts +15 -0
- package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -0
- package/dist/DateInput/usePointerDragScroll.js +216 -0
- package/dist/DateInput/useScrollSettle.d.ts +26 -0
- package/dist/DateInput/useScrollSettle.d.ts.map +1 -0
- package/dist/DateInput/useScrollSettle.js +149 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +47 -9
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +18 -10
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +3 -3
- package/dist/Field/FieldLabel.d.ts +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +21 -3
- package/dist/Field/InputClearButton.d.ts +2 -1
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +12 -1
- package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
- package/dist/Field/inputStyles.stylex.js +4 -4
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +2 -2
- package/dist/FormLayout/FormLayout.d.ts +24 -2
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/FormLayout/FormLayout.js +7 -2
- package/dist/FormLayout/FormLayoutContext.d.ts +15 -2
- package/dist/FormLayout/FormLayoutContext.d.ts.map +1 -1
- package/dist/FormLayout/FormLayoutContext.js +19 -4
- package/dist/FormLayout/index.d.ts +1 -1
- package/dist/FormLayout/index.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.d.ts +13 -3
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +2 -0
- package/dist/HoverCard/index.d.ts +1 -1
- package/dist/HoverCard/index.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.d.ts +17 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +78 -9
- package/dist/Item/Item.d.ts +9 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +46 -8
- package/dist/Layer/index.d.ts +4 -2
- package/dist/Layer/index.d.ts.map +1 -1
- package/dist/Layer/index.js +2 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +3 -2
- package/dist/Layer/useTouchTrigger.d.ts +113 -0
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -0
- package/dist/Layer/useTouchTrigger.js +241 -0
- package/dist/Layout/container.stylex.d.ts +4 -2
- package/dist/Layout/container.stylex.d.ts.map +1 -1
- package/dist/Layout/container.stylex.js +19 -11
- package/dist/Layout/index.d.ts +1 -0
- package/dist/Layout/index.d.ts.map +1 -1
- package/dist/Layout/index.js +4 -0
- package/dist/Layout/padding.stylex.d.ts +315 -12
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +389 -12
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +2 -1
- package/dist/Link/Link.js +4 -4
- package/dist/Markdown/Markdown.d.ts +8 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +31 -3
- package/dist/Markdown/parser.d.ts +14 -2
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +50 -2
- package/dist/MobileNav/MobileNav.d.ts +1 -0
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +24 -6
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +8 -3
- package/dist/NavItem/navItemStyles.stylex.d.ts +2 -2
- package/dist/NavItem/navItemStyles.stylex.js +2 -2
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +38 -5
- package/dist/Outline/Outline.js +2 -2
- package/dist/Outline/parseOutlineFromMarkdown.d.ts +2 -0
- package/dist/Outline/parseOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.js +5 -31
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +11 -12
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -1
- package/dist/PowerSearch/formatFilterValue.d.ts +11 -2
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +23 -8
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +12 -1
- package/dist/RadioList/RadioListItem.d.ts +2 -2
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +68 -38
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -3
- package/dist/Section/Section.d.ts +36 -1
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +12 -2
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +6 -1
- package/dist/SelectableCard/SelectableCard.js +1 -1
- package/dist/Selector/Selector.d.ts +26 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +95 -17
- package/dist/Selector/SelectorOption.d.ts +14 -1
- package/dist/Selector/SelectorOption.d.ts.map +1 -1
- package/dist/Selector/SelectorOption.js +6 -0
- package/dist/Selector/SelectorRowLayoutContext.d.ts +8 -0
- package/dist/Selector/SelectorRowLayoutContext.d.ts.map +1 -0
- package/dist/Selector/SelectorRowLayoutContext.js +27 -0
- package/dist/Selector/types.d.ts +1 -0
- package/dist/Selector/types.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +1 -1
- package/dist/SideNav/SideNavItem.js +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +3 -3
- package/dist/Stack/Stack.d.ts +23 -1
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +12 -6
- package/dist/StatusDot/StatusDot.d.ts +43 -3
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +42 -5
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +9 -0
- package/dist/TabList/TabMenu.js +1 -1
- package/dist/Table/TableRow.js +4 -4
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/Table/plugins/sortable/useTableSortableState.d.ts +5 -3
- package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortableState.js +12 -9
- package/dist/Table/plugins/tree/useTableTreeData.js +2 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +6 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +6 -1
- package/dist/Thumbnail/Thumbnail.js +1 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +6 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +6 -4
- package/dist/Timestamp/formatInstant.d.ts +3 -2
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +8 -8
- package/dist/Timestamp/tooltipEntries.d.ts +2 -1
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.js +5 -3
- package/dist/Token/Token.js +1 -1
- package/dist/Tooltip/Tooltip.d.ts +16 -3
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +2 -0
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +21 -2
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +71 -13
- package/dist/TopNav/TopNavHeading.js +2 -2
- package/dist/TopNav/TopNavItem.js +2 -2
- package/dist/TopNav/TopNavMegaMenu.js +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
- package/dist/TopNav/TopNavMenu.js +2 -2
- package/dist/TreeList/TreeListItem.js +1 -1
- package/dist/astryx.css +123 -60
- package/dist/hooks/containerReveal.stylex.d.ts.map +1 -1
- package/dist/hooks/containerReveal.stylex.js +18 -18
- package/dist/hooks/scrollbarGutter.d.ts +28 -0
- package/dist/hooks/scrollbarGutter.d.ts.map +1 -0
- package/dist/hooks/scrollbarGutter.js +103 -0
- package/dist/hooks/useResolvedRequired.d.ts +19 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -0
- package/dist/hooks/useResolvedRequired.js +40 -0
- package/dist/hooks/useScrollLock.d.ts +4 -0
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +13 -1
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +2 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +6 -0
- package/dist/i18n/useCollator.d.ts +12 -0
- package/dist/i18n/useCollator.d.ts.map +1 -0
- package/dist/i18n/useCollator.js +40 -0
- package/dist/i18n/useLocale.d.ts +3 -0
- package/dist/i18n/useLocale.d.ts.map +1 -0
- package/dist/i18n/useLocale.js +31 -0
- package/dist/theme/defineTheme.d.ts +5 -0
- 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 +7 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +66 -5
- package/dist/theme/syntax/index.d.ts +6 -0
- package/dist/theme/syntax/index.d.ts.map +1 -1
- package/dist/theme/syntax/index.js +7 -2
- package/dist/utils/dateParser.d.ts +4 -3
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +8 -8
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/plainDate.d.ts +11 -2
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +32 -4
- package/locales/af-ZA.json +958 -0
- package/locales/ar-SA.json +998 -0
- package/locales/ca-ES.json +974 -0
- package/locales/cs-CZ.json +990 -0
- package/locales/da-DK.json +966 -0
- package/locales/de-DE.json +966 -0
- package/locales/el-GR.json +990 -0
- package/locales/en.json +32 -0
- package/locales/es-ES.json +978 -0
- package/locales/fi-FI.json +990 -0
- package/locales/fr-FR.json +928 -0
- package/locales/he-IL.json +990 -0
- package/locales/hu-HU.json +990 -0
- package/locales/it-IT.json +978 -0
- package/locales/ja-JP.json +998 -0
- package/locales/ko-KR.json +990 -0
- package/locales/nl-NL.json +954 -0
- package/locales/no-NO.json +978 -0
- package/locales/pl-PL.json +982 -0
- package/locales/pseudo.json +24 -0
- package/locales/pt-BR.json +982 -0
- package/locales/pt-PT.json +982 -0
- package/locales/ro-RO.json +982 -0
- package/locales/ru-RU.json +990 -0
- package/locales/sr-SP.json +990 -0
- package/locales/sv-SE.json +986 -0
- package/locales/tr-TR.json +990 -0
- package/locales/uk-UA.json +990 -0
- package/locales/vi-VN.json +986 -0
- package/locales/zh-CN.json +998 -0
- package/locales/zh-TW.json +998 -0
- package/package.json +3 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
- package/src/Banner/Banner.doc.mjs +2 -0
- package/src/Blockquote/Blockquote.doc.mjs +30 -7
- package/src/Blockquote/Blockquote.test.tsx +34 -3
- package/src/Blockquote/Blockquote.tsx +11 -9
- package/src/BottomSheet/BottomSheet.doc.mjs +36 -3
- package/src/BottomSheet/BottomSheet.test.tsx +177 -2
- package/src/BottomSheet/BottomSheet.tsx +16 -2
- package/src/BottomSheet/BottomSheetPanel.test.tsx +91 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +121 -15
- package/src/BottomSheet/index.ts +5 -1
- package/src/BottomSheet/snapOffsets.test.ts +114 -47
- package/src/BottomSheet/snapOffsets.ts +119 -33
- package/src/BottomSheet/useSheetGestures.test.ts +113 -15
- package/src/BottomSheet/useSheetGestures.ts +196 -100
- package/src/Breadcrumbs/BreadcrumbItem.tsx +1 -1
- package/src/Button/Button.tsx +7 -7
- package/src/Calendar/Calendar.doc.mjs +16 -0
- package/src/Calendar/Calendar.test.tsx +137 -0
- package/src/Calendar/Calendar.tsx +80 -11
- package/src/Calendar/getStandaloneShortWeekdayNames.test.ts +54 -0
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +38 -0
- package/src/Calendar/hooks/useCalendarConstraints.ts +54 -3
- package/src/Calendar/hooks/useCalendarDays.ts +13 -10
- package/src/Calendar/hooks/useCalendarNavigation.ts +6 -4
- package/src/Calendar/standaloneShortWeekdayNames.generated.ts +50 -0
- package/src/Calendar/styles.ts +3 -3
- package/src/Center/Center.doc.mjs +48 -0
- package/src/Center/Center.test.tsx +158 -0
- package/src/Center/Center.tsx +50 -9
- package/src/Chat/ChatComposer.tsx +7 -4
- package/src/Chat/ChatToolCalls.tsx +1 -1
- package/src/Chat/{useChatDictation.test.ts → useChatDictation.test.tsx} +29 -14
- package/src/Chat/useChatDictation.ts +1 -1
- package/src/Chat/useSpeechRecognition.ts +5 -3
- package/src/CheckboxInput/CheckboxInput.tsx +6 -0
- package/src/Citation/Citation.tsx +3 -3
- package/src/ClickableCard/ClickableCard.tsx +2 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/ComplexSelector/ComplexSelector.doc.mjs +10 -0
- package/src/ComplexSelector/ComplexSelector.tsx +8 -5
- package/src/DateInput/DateInput.test.tsx +17 -1
- package/src/DateInput/DateInput.tsx +90 -19
- package/src/DateInput/DateInputTouch.test.tsx +2393 -0
- package/src/DateInput/MonthScroller.tsx +784 -0
- package/src/DateInput/MonthYearWheels.tsx +147 -0
- package/src/DateInput/TouchDateField.tsx +1214 -0
- package/src/DateInput/Wheel.tsx +470 -0
- package/src/DateInput/monthGeometry.ts +118 -0
- package/src/DateInput/tokens.stylex.ts +99 -0
- package/src/DateInput/useOwnScrollGesture.ts +227 -0
- package/src/DateInput/usePointerDragScroll.ts +220 -0
- package/src/DateInput/useScrollSettle.ts +164 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +81 -1
- package/src/DateRangeInput/DateRangeInput.tsx +88 -8
- package/src/DateTimeInput/DateTimeInput.tsx +23 -8
- package/src/Dialog/Dialog.test.tsx +24 -0
- package/src/Dialog/Dialog.tsx +3 -0
- package/src/Field/Field.doc.mjs +3 -0
- package/src/Field/FieldLabel.tsx +20 -4
- package/src/Field/InputClearButton.test.tsx +134 -2
- package/src/Field/InputClearButton.tsx +42 -1
- package/src/Field/inputStyles.stylex.ts +16 -12
- package/src/FileInput/FileInput.tsx +5 -4
- package/src/FormLayout/FormLayout.doc.mjs +13 -0
- package/src/FormLayout/FormLayout.test.tsx +181 -4
- package/src/FormLayout/FormLayout.tsx +33 -2
- package/src/FormLayout/FormLayoutContext.ts +22 -7
- package/src/FormLayout/index.ts +1 -1
- package/src/HoverCard/HoverCard.doc.mjs +18 -0
- package/src/HoverCard/HoverCard.test.tsx +189 -0
- package/src/HoverCard/HoverCard.tsx +22 -2
- package/src/HoverCard/index.ts +1 -0
- package/src/HoverCard/useHoverCard.doc.mjs +2 -0
- package/src/HoverCard/useHoverCard.tsx +103 -7
- package/src/Item/Item.doc.mjs +1 -0
- package/src/Item/Item.test.tsx +50 -0
- package/src/Item/Item.tsx +41 -2
- package/src/Layer/index.ts +10 -0
- package/src/Layer/useLayer.tsx +13 -2
- package/src/Layer/useTouchTrigger.test.ts +70 -0
- package/src/Layer/useTouchTrigger.ts +366 -0
- package/src/Layout/Layout.doc.mjs +18 -0
- package/src/Layout/container.stylex.ts +11 -3
- package/src/Layout/index.ts +4 -0
- package/src/Layout/overlayPaddingReset.test.tsx +222 -0
- package/src/Layout/padding.stylex.ts +192 -12
- package/src/Lightbox/Lightbox.tsx +2 -1
- package/src/Link/Link.tsx +4 -4
- package/src/Markdown/Markdown.doc.mjs +3 -0
- package/src/Markdown/Markdown.test.tsx +78 -0
- package/src/Markdown/Markdown.tsx +41 -1
- package/src/Markdown/parser.ts +60 -2
- package/src/MobileNav/MobileNav.tsx +61 -5
- package/src/MobileNav/MobileNavEntryAnimation.test.tsx +212 -0
- package/src/MobileNav/MobileNavScrollbarGutter.test.tsx +109 -0
- package/src/MultiSelector/MultiSelector.test.tsx +1 -1
- package/src/MultiSelector/MultiSelector.tsx +8 -5
- package/src/NavItem/navItemStyles.stylex.ts +2 -2
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +24 -0
- package/src/NumberInput/NumberInput.test.tsx +138 -0
- package/src/NumberInput/NumberInput.tsx +44 -6
- package/src/Outline/Outline.doc.mjs +2 -0
- package/src/Outline/Outline.tsx +1 -1
- package/src/Outline/parseOutlineFromMarkdown.ts +10 -40
- package/src/PowerSearch/PowerSearch.tsx +17 -8
- package/src/PowerSearch/PowerSearchToken.tsx +3 -0
- package/src/PowerSearch/formatFilterValue.test.ts +22 -2
- package/src/PowerSearch/formatFilterValue.ts +31 -6
- package/src/RadioList/RadioList.doc.mjs +1 -1
- package/src/RadioList/RadioList.test.tsx +170 -2
- package/src/RadioList/RadioList.tsx +9 -1
- package/src/RadioList/RadioListItem.tsx +83 -51
- package/src/Resizable/ResizeHandle.test.tsx +22 -0
- package/src/Resizable/ResizeHandle.tsx +9 -3
- package/src/Section/Section.doc.mjs +55 -0
- package/src/Section/Section.test.tsx +201 -4
- package/src/Section/Section.tsx +69 -0
- package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +11 -2
- package/src/SelectableCard/SelectableCard.tsx +1 -1
- package/src/Selector/Selector.doc.mjs +16 -2
- package/src/Selector/Selector.test.tsx +525 -1
- package/src/Selector/Selector.tsx +166 -21
- package/src/Selector/SelectorOption.doc.mjs +7 -0
- package/src/Selector/SelectorOption.tsx +21 -0
- package/src/Selector/SelectorRowLayoutContext.ts +32 -0
- package/src/Selector/types.ts +4 -4
- package/src/SideNav/SideNavHeading.tsx +2 -2
- package/src/SideNav/SideNavItem.tsx +1 -1
- package/src/Slider/Slider.tsx +11 -1
- package/src/Stack/Stack.doc.mjs +72 -0
- package/src/Stack/Stack.test.tsx +156 -0
- package/src/Stack/Stack.tsx +50 -8
- package/src/StatusDot/StatusDot.doc.mjs +13 -0
- package/src/StatusDot/StatusDot.test.tsx +115 -8
- package/src/StatusDot/StatusDot.tsx +74 -9
- package/src/Switch/Switch.tsx +6 -0
- package/src/TabList/TabMenu.tsx +1 -1
- package/src/Table/TableRow.tsx +4 -4
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +2 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +22 -4
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +34 -0
- package/src/Table/plugins/sortable/useTableSortableState.tsx +26 -23
- package/src/Table/plugins/tree/useTableTreeData.tsx +2 -2
- package/src/TextArea/TextArea.doc.mjs +1 -1
- package/src/TextArea/TextArea.tsx +3 -1
- package/src/TextInput/TextInput.tsx +3 -1
- package/src/Thumbnail/Thumbnail.tsx +1 -1
- package/src/TimeInput/TimeInput.tsx +3 -1
- package/src/Timestamp/Timestamp.test.tsx +27 -7
- package/src/Timestamp/Timestamp.tsx +8 -4
- package/src/Timestamp/formatInstant.ts +9 -7
- package/src/Timestamp/tooltipEntries.test.ts +11 -6
- package/src/Timestamp/tooltipEntries.ts +6 -2
- package/src/Token/Token.tsx +1 -1
- package/src/Tooltip/Tooltip.doc.mjs +18 -0
- package/src/Tooltip/Tooltip.test.tsx +254 -1
- package/src/Tooltip/Tooltip.tsx +22 -2
- package/src/Tooltip/index.ts +1 -0
- package/src/Tooltip/useTooltip.doc.mjs +2 -0
- package/src/Tooltip/useTooltip.tsx +99 -21
- package/src/TopNav/TopNavHeading.tsx +1 -1
- package/src/TopNav/TopNavItem.tsx +2 -2
- package/src/TopNav/TopNavMegaMenu.tsx +1 -1
- package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
- package/src/TopNav/TopNavMenu.tsx +2 -2
- package/src/TreeList/TreeListItem.tsx +1 -1
- package/src/hooks/containerReveal.stylex.ts +54 -18
- package/src/hooks/scrollbarGutter.test.ts +167 -0
- package/src/hooks/scrollbarGutter.ts +121 -0
- package/src/hooks/useResolvedRequired.ts +42 -0
- package/src/hooks/useScrollLock.doc.mjs +4 -4
- package/src/hooks/useScrollLock.test.ts +73 -0
- package/src/hooks/useScrollLock.ts +14 -0
- package/src/i18n/InternationalizationContext.ts +2 -0
- package/src/i18n/__tests__/e2e-powersearch.test.tsx +37 -1
- package/src/i18n/__tests__/useCollator.test.tsx +115 -0
- package/src/i18n/__tests__/useLocale.test.tsx +52 -0
- package/src/i18n/index.ts +6 -0
- package/src/i18n/useCollator.doc.mjs +84 -0
- package/src/i18n/useCollator.ts +44 -0
- package/src/i18n/useLocale.doc.mjs +70 -0
- package/src/i18n/useLocale.ts +34 -0
- package/src/i18n/useTranslator.doc.mjs +1 -1
- package/src/theme/defineTheme.test.ts +9 -3
- package/src/theme/defineTheme.ts +5 -0
- package/src/theme/derivedVarRegistry.test.ts +19 -5
- package/src/theme/derivedVarRegistry.ts +4 -0
- package/src/theme/generateThemeRules.test.ts +118 -0
- package/src/theme/generateThemeRules.ts +83 -5
- package/src/theme/syntax/index.ts +6 -2
- package/src/theme/syntax/serverSafeSyntax.test.ts +68 -0
- package/src/utils/dateParser.test.ts +20 -0
- package/src/utils/dateParser.ts +14 -7
- package/src/utils/index.ts +2 -0
- package/src/utils/plainDate.test.ts +56 -0
- package/src/utils/plainDate.ts +33 -4
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file Guards the server-safety of the `./theme/syntax` subpath.
|
|
5
|
+
* @input Reads the source files in this directory
|
|
6
|
+
* @output One invariant per module: only the provider carries `'use client'`
|
|
7
|
+
* @position Narrow sibling of src/serverSafeComponents.test.ts, which only
|
|
8
|
+
* walks `./src/<Name>/index.ts` subpaths and so never sees this directory.
|
|
9
|
+
*
|
|
10
|
+
* `./theme/syntax` is the only export subpath for the syntax module, and it
|
|
11
|
+
* mixes a provider with presets, token defaults and pure functions. A
|
|
12
|
+
* directive on the barrel makes React hand a server importer a client
|
|
13
|
+
* reference for every one of those exports, so `dracula.tokens` reads back
|
|
14
|
+
* `undefined` — a silent failure far from its cause.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {describe, it, expect} from 'vitest';
|
|
18
|
+
import {readdirSync, readFileSync} from 'node:fs';
|
|
19
|
+
import {join} from 'node:path';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The directives at the top of a module, in order. Comments and blank lines
|
|
23
|
+
* may precede them; the prologue ends at the first statement that is not a
|
|
24
|
+
* bare string literal, so a `'use strict';` cannot hide a later directive.
|
|
25
|
+
*/
|
|
26
|
+
function directives(file: string): string[] {
|
|
27
|
+
const source = readFileSync(join(__dirname, file), 'utf-8');
|
|
28
|
+
const found: string[] = [];
|
|
29
|
+
let rest = source;
|
|
30
|
+
for (;;) {
|
|
31
|
+
const trimmed = rest.replace(/^(?:\s+|\/\/[^\n]*|\/\*[\s\S]*?\*\/)+/, '');
|
|
32
|
+
const directive = /^(['"])([^'"]*)\1\s*;?/.exec(trimmed);
|
|
33
|
+
if (!directive) {
|
|
34
|
+
return found;
|
|
35
|
+
}
|
|
36
|
+
found.push(directive[2]);
|
|
37
|
+
rest = trimmed.slice(directive[0].length);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The modules in this directory that legitimately need a client boundary.
|
|
43
|
+
* Everything else is data or pure functions and must stay directive-free —
|
|
44
|
+
* derived from the directory, so a module added here is covered by default.
|
|
45
|
+
*/
|
|
46
|
+
const CLIENT_MODULES = ['SyntaxTheme.tsx'];
|
|
47
|
+
|
|
48
|
+
const serverSafeModules = readdirSync(__dirname)
|
|
49
|
+
.filter(
|
|
50
|
+
name =>
|
|
51
|
+
/\.[jt]sx?$/.test(name) &&
|
|
52
|
+
!/\.(test|stories|doc|perf)\./.test(name) &&
|
|
53
|
+
!name.endsWith('.d.ts') &&
|
|
54
|
+
!CLIENT_MODULES.includes(name),
|
|
55
|
+
)
|
|
56
|
+
.sort();
|
|
57
|
+
|
|
58
|
+
describe('./theme/syntax is importable from a server component', () => {
|
|
59
|
+
it.each(serverSafeModules)('%s carries no "use client"', file => {
|
|
60
|
+
expect(directives(file)).not.toContain('use client');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Also the proof that the reader above is not blind, which would make every
|
|
64
|
+
// assertion in this file pass vacuously.
|
|
65
|
+
it.each(CLIENT_MODULES)('%s keeps the directive it needs', file => {
|
|
66
|
+
expect(directives(file)).toContain('use client');
|
|
67
|
+
});
|
|
68
|
+
});
|
|
@@ -277,6 +277,26 @@ describe('parseDateInput', () => {
|
|
|
277
277
|
});
|
|
278
278
|
});
|
|
279
279
|
|
|
280
|
+
describe('ambiguous numeric formats follow the passed locale (#5074)', () => {
|
|
281
|
+
// Both numbers are <= 12, so the day/month order is genuinely ambiguous
|
|
282
|
+
// and resolved by isLocaleDayFirst(locale) rather than the host locale.
|
|
283
|
+
it('reads month-first for en-US', () => {
|
|
284
|
+
expect(parseDateInput('3/4/2026', 'en-US')).toEqual({
|
|
285
|
+
year: 2026,
|
|
286
|
+
month: 3,
|
|
287
|
+
day: 4,
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('reads day-first for es-ES', () => {
|
|
292
|
+
expect(parseDateInput('3/4/2026', 'es-ES')).toEqual({
|
|
293
|
+
year: 2026,
|
|
294
|
+
month: 4,
|
|
295
|
+
day: 3,
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
|
|
280
300
|
describe('edge cases', () => {
|
|
281
301
|
it('returns null for empty string', () => {
|
|
282
302
|
expect(parseDateInput('')).toBeNull();
|
package/src/utils/dateParser.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import {type PlainDate, plainDateCreate, plainDateFromDate} from './plainDate';
|
|
15
|
+
import type {Locale} from '../i18n/types';
|
|
15
16
|
|
|
16
17
|
export {
|
|
17
18
|
plainDateFromISO as parseISO,
|
|
@@ -19,11 +20,13 @@ export {
|
|
|
19
20
|
} from './plainDate';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
|
-
* Detects if the
|
|
23
|
+
* Detects if the locale uses day-first date format (DD/MM/YYYY).
|
|
23
24
|
* US and a few others use month-first (MM/DD/YYYY).
|
|
24
25
|
*/
|
|
25
|
-
export function isLocaleDayFirst(): boolean {
|
|
26
|
-
const parts = new Intl.DateTimeFormat().formatToParts(
|
|
26
|
+
export function isLocaleDayFirst(locale?: Locale): boolean {
|
|
27
|
+
const parts = new Intl.DateTimeFormat(locale).formatToParts(
|
|
28
|
+
new Date(2000, 0, 15),
|
|
29
|
+
);
|
|
27
30
|
const dayIndex = parts.findIndex(p => p.type === 'day');
|
|
28
31
|
const monthIndex = parts.findIndex(p => p.type === 'month');
|
|
29
32
|
return dayIndex < monthIndex;
|
|
@@ -43,7 +46,10 @@ export function isLocaleDayFirst(): boolean {
|
|
|
43
46
|
*
|
|
44
47
|
* @returns PlainDate if valid, null if unparseable
|
|
45
48
|
*/
|
|
46
|
-
export function parseDateInput(
|
|
49
|
+
export function parseDateInput(
|
|
50
|
+
input: string,
|
|
51
|
+
locale?: Locale,
|
|
52
|
+
): PlainDate | null {
|
|
47
53
|
const trimmed = input.trim();
|
|
48
54
|
if (!trimmed) {
|
|
49
55
|
return null;
|
|
@@ -114,14 +120,14 @@ export function parseDateInput(input: string): PlainDate | null {
|
|
|
114
120
|
if (sep1 !== sep2) {
|
|
115
121
|
return null;
|
|
116
122
|
}
|
|
117
|
-
return parseNumericDate(+first, +second, +year);
|
|
123
|
+
return parseNumericDate(+first, +second, +year, locale);
|
|
118
124
|
}
|
|
119
125
|
|
|
120
126
|
// 5. Try numeric formats WITHOUT year (defaults to current year)
|
|
121
127
|
const numericNoYearMatch = trimmed.match(/^(\d{1,2})[-/.](\d{1,2})$/);
|
|
122
128
|
if (numericNoYearMatch) {
|
|
123
129
|
const [, first, second] = numericNoYearMatch;
|
|
124
|
-
return parseNumericDate(+first, +second, currentYear);
|
|
130
|
+
return parseNumericDate(+first, +second, currentYear, locale);
|
|
125
131
|
}
|
|
126
132
|
|
|
127
133
|
// 6. Fall back to native Date parsing for other formats.
|
|
@@ -151,6 +157,7 @@ function parseNumericDate(
|
|
|
151
157
|
first: number,
|
|
152
158
|
second: number,
|
|
153
159
|
year: number,
|
|
160
|
+
locale?: Locale,
|
|
154
161
|
): PlainDate | null {
|
|
155
162
|
let day: number;
|
|
156
163
|
let month: number;
|
|
@@ -164,7 +171,7 @@ function parseNumericDate(
|
|
|
164
171
|
} else if (first > 12 && second > 12) {
|
|
165
172
|
return null;
|
|
166
173
|
} else {
|
|
167
|
-
if (isLocaleDayFirst()) {
|
|
174
|
+
if (isLocaleDayFirst(locale)) {
|
|
168
175
|
day = first;
|
|
169
176
|
month = second;
|
|
170
177
|
} else {
|
package/src/utils/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
plainDateDayOfWeek,
|
|
14
14
|
plainDateAddMonths,
|
|
15
15
|
plainDateAddDays,
|
|
16
|
+
plainDateDiffDays,
|
|
16
17
|
plainDateToInstant,
|
|
17
18
|
plainDateFromInstant,
|
|
18
19
|
plainDateIsBefore,
|
|
@@ -312,6 +313,55 @@ describe('plainDateAddDays', () => {
|
|
|
312
313
|
});
|
|
313
314
|
});
|
|
314
315
|
|
|
316
|
+
describe('plainDateDiffDays', () => {
|
|
317
|
+
it('counts whole days forward', () => {
|
|
318
|
+
expect(
|
|
319
|
+
plainDateDiffDays(
|
|
320
|
+
{year: 2026, month: 1, day: 10},
|
|
321
|
+
{year: 2026, month: 1, day: 17},
|
|
322
|
+
),
|
|
323
|
+
).toBe(7);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
it('is negative when the second date is earlier', () => {
|
|
327
|
+
expect(
|
|
328
|
+
plainDateDiffDays(
|
|
329
|
+
{year: 2026, month: 1, day: 10},
|
|
330
|
+
{year: 2026, month: 1, day: 3},
|
|
331
|
+
),
|
|
332
|
+
).toBe(-7);
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
it('is zero for the same day', () => {
|
|
336
|
+
expect(
|
|
337
|
+
plainDateDiffDays(
|
|
338
|
+
{year: 2026, month: 6, day: 15},
|
|
339
|
+
{year: 2026, month: 6, day: 15},
|
|
340
|
+
),
|
|
341
|
+
).toBe(0);
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
it('counts across month and year boundaries', () => {
|
|
345
|
+
expect(
|
|
346
|
+
plainDateDiffDays(
|
|
347
|
+
{year: 2025, month: 12, day: 30},
|
|
348
|
+
{year: 2026, month: 1, day: 2},
|
|
349
|
+
),
|
|
350
|
+
).toBe(3);
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
it('ignores DST — every calendar day counts once across a spring-forward', () => {
|
|
354
|
+
// US DST 2026 begins Mar 8. The gap Mar 7 → Mar 9 is two calendar days
|
|
355
|
+
// even though one of them is 23 hours long.
|
|
356
|
+
expect(
|
|
357
|
+
plainDateDiffDays(
|
|
358
|
+
{year: 2026, month: 3, day: 7},
|
|
359
|
+
{year: 2026, month: 3, day: 9},
|
|
360
|
+
),
|
|
361
|
+
).toBe(2);
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
|
|
315
365
|
describe('plainDateToInstant / plainDateFromInstant', () => {
|
|
316
366
|
it('converts a PlainDate to midnight in the requested timezone', () => {
|
|
317
367
|
expect(
|
|
@@ -560,4 +610,10 @@ describe('formatSharedDate', () => {
|
|
|
560
610
|
it('formats the ISO "system_date" shape', () => {
|
|
561
611
|
expect(formatSharedDate(pd, 'system_date')).toBe('2026-01-25');
|
|
562
612
|
});
|
|
613
|
+
|
|
614
|
+
it('follows the passed locale rather than the host locale (#5074)', () => {
|
|
615
|
+
expect(formatSharedDate(pd, 'date_long', 'es-ES')).toBe(
|
|
616
|
+
'25 de enero de 2026',
|
|
617
|
+
);
|
|
618
|
+
});
|
|
563
619
|
});
|
package/src/utils/plainDate.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import type {ISODateString, PlainDate} from './dateTypes';
|
|
11
|
+
import type {Locale} from '../i18n/types';
|
|
11
12
|
|
|
12
13
|
export type {PlainDate} from './dateTypes';
|
|
13
14
|
|
|
@@ -88,6 +89,18 @@ export function plainDateAddDays(pd: PlainDate, n: number): PlainDate {
|
|
|
88
89
|
return plainDateFromDate(d);
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Whole calendar days from `a` to `b`, ignoring time of day. Positive when
|
|
94
|
+
* `b` is after `a`, negative when before. Uses UTC midnight so DST shifts
|
|
95
|
+
* never add or drop a day.
|
|
96
|
+
*/
|
|
97
|
+
export function plainDateDiffDays(a: PlainDate, b: PlainDate): number {
|
|
98
|
+
const msPerDay = 24 * 60 * 60 * 1000;
|
|
99
|
+
const aUTC = Date.UTC(a.year, a.month - 1, a.day);
|
|
100
|
+
const bUTC = Date.UTC(b.year, b.month - 1, b.day);
|
|
101
|
+
return Math.round((bUTC - aUTC) / msPerDay);
|
|
102
|
+
}
|
|
103
|
+
|
|
91
104
|
/**
|
|
92
105
|
* The wall-clock fields an instant reads as in a given zone.
|
|
93
106
|
*
|
|
@@ -265,6 +278,22 @@ export const DATE_FORMAT_MONTH_YEAR: Intl.DateTimeFormatOptions = {
|
|
|
265
278
|
month: 'long',
|
|
266
279
|
};
|
|
267
280
|
|
|
281
|
+
// e.g. "Sun" (locale-dependent) — the weekday on its own, abbreviated.
|
|
282
|
+
//
|
|
283
|
+
// This is CLDR's `abbreviated` width, which `Intl` reaches natively. Note
|
|
284
|
+
// that Calendar's 2-letter header ("Su") is CLDR's *short* width, a
|
|
285
|
+
// different thing that `Intl` cannot express at all — which is why that one
|
|
286
|
+
// needs the generated lookup table beside it and this one does not.
|
|
287
|
+
export const DATE_FORMAT_WEEKDAY_ONLY: Intl.DateTimeFormatOptions = {
|
|
288
|
+
weekday: 'short',
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// e.g. "January" (locale-dependent) — the month on its own, for a control
|
|
292
|
+
// that shows a list of months and carries the year separately.
|
|
293
|
+
export const DATE_FORMAT_MONTH_ONLY: Intl.DateTimeFormatOptions = {
|
|
294
|
+
month: 'long',
|
|
295
|
+
};
|
|
296
|
+
|
|
268
297
|
// e.g. "Jan 25" (locale-dependent)
|
|
269
298
|
export const DATE_FORMAT_SHORT: Intl.DateTimeFormatOptions = {
|
|
270
299
|
month: 'short',
|
|
@@ -281,10 +310,9 @@ export const DATE_FORMAT_SHORT_WITH_YEAR: Intl.DateTimeFormatOptions = {
|
|
|
281
310
|
export function plainDateFormat(
|
|
282
311
|
pd: PlainDate,
|
|
283
312
|
options: Intl.DateTimeFormatOptions,
|
|
313
|
+
locale?: Locale,
|
|
284
314
|
): string {
|
|
285
|
-
return new Intl.DateTimeFormat(
|
|
286
|
-
plainDateToDate(pd),
|
|
287
|
-
);
|
|
315
|
+
return new Intl.DateTimeFormat(locale, options).format(plainDateToDate(pd));
|
|
288
316
|
}
|
|
289
317
|
|
|
290
318
|
// =============================================================================
|
|
@@ -332,9 +360,10 @@ export const SHARED_DATE_FORMAT_OPTIONS: Record<
|
|
|
332
360
|
export function formatSharedDate(
|
|
333
361
|
pd: PlainDate,
|
|
334
362
|
format: SharedDateFormat,
|
|
363
|
+
locale?: Locale,
|
|
335
364
|
): string {
|
|
336
365
|
if (format === 'system_date') {
|
|
337
366
|
return plainDateToISO(pd);
|
|
338
367
|
}
|
|
339
|
-
return plainDateFormat(pd, SHARED_DATE_FORMAT_OPTIONS[format]);
|
|
368
|
+
return plainDateFormat(pd, SHARED_DATE_FORMAT_OPTIONS[format], locale);
|
|
340
369
|
}
|