@dxos/react-ui 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/chunk-parse-stack.mjs +1566 -0
- package/dist/lib/chunk-parse-stack.mjs.map +1 -0
- package/dist/lib/index.mjs +5220 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/testing.mjs +144 -0
- package/dist/lib/testing.mjs.map +1 -0
- package/dist/lib/translations.mjs +38 -0
- package/dist/lib/translations.mjs.map +1 -0
- package/dist/types/src/components/Avatars/Avatar.d.ts +1 -6
- package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/AvatarContext.d.ts +9 -0
- package/dist/types/src/components/Avatars/AvatarContext.d.ts.map +1 -0
- package/dist/types/src/components/Avatars/index.d.ts +1 -0
- package/dist/types/src/components/Avatars/index.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.d.ts +1 -6
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/ButtonGroupContext.d.ts +9 -0
- package/dist/types/src/components/Button/ButtonGroupContext.d.ts.map +1 -0
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.theme.d.ts +1 -0
- package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -1
- package/dist/types/src/components/Button/SystemIconButton.d.ts +1 -1
- package/dist/types/src/components/Button/SystemIconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/index.d.ts +1 -0
- package/dist/types/src/components/Button/index.d.ts.map +1 -1
- package/dist/types/src/components/Calendar/Calendar.d.ts +0 -2
- package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/types/src/components/Calendar/index.d.ts +1 -0
- package/dist/types/src/components/Calendar/index.d.ts.map +1 -1
- package/dist/types/src/components/Calendar/parse-calendar-date.d.ts +3 -0
- package/dist/types/src/components/Calendar/parse-calendar-date.d.ts.map +1 -0
- package/dist/types/src/components/Card/Card.d.ts +42 -15
- package/dist/types/src/components/Card/Card.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.theme.d.ts +0 -1
- package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -1
- package/dist/types/src/components/Carousel/Carousel.d.ts +2 -4
- package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/src/components/Carousel/CarouselContext.d.ts +8 -0
- package/dist/types/src/components/Carousel/CarouselContext.d.ts.map +1 -0
- package/dist/types/src/components/Carousel/index.d.ts +1 -0
- package/dist/types/src/components/Carousel/index.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/ClipboardContext.d.ts +7 -0
- package/dist/types/src/components/Clipboard/ClipboardContext.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts +0 -6
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.d.ts +7 -12
- package/dist/types/src/components/Column/Column.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.stories.d.ts +2 -2
- package/dist/types/src/components/Column/Column.theme.d.ts +0 -1
- package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -1
- package/dist/types/src/components/Column/ColumnContext.d.ts +9 -0
- package/dist/types/src/components/Column/ColumnContext.d.ts.map +1 -0
- package/dist/types/src/components/Column/index.d.ts +1 -0
- package/dist/types/src/components/Column/index.d.ts.map +1 -1
- package/dist/types/src/components/Column/withColumn.d.ts +40 -4
- package/dist/types/src/components/Column/withColumn.d.ts.map +1 -1
- package/dist/types/src/components/DatePicker/DatePicker.d.ts +0 -10
- package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/types/src/components/DatePicker/DatePickerContext.d.ts +13 -0
- package/dist/types/src/components/DatePicker/DatePickerContext.d.ts.map +1 -0
- package/dist/types/src/components/DatePicker/index.d.ts +1 -0
- package/dist/types/src/components/DatePicker/index.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +3 -3
- package/dist/types/src/components/Dialog/Dialog.d.ts +3 -3
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +5 -10
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/index.d.ts +1 -0
- package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/parse-stack.d.ts +8 -0
- package/dist/types/src/components/ErrorFallback/parse-stack.d.ts.map +1 -0
- package/dist/types/src/components/Focus/Focus.d.ts +2 -10
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
- package/dist/types/src/components/Focus/FocusContext.d.ts +10 -0
- package/dist/types/src/components/Focus/FocusContext.d.ts.map +1 -0
- package/dist/types/src/components/Focus/index.d.ts +1 -0
- package/dist/types/src/components/Focus/index.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +9 -10
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +7 -2
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.theme.d.ts +13 -0
- package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -1
- package/dist/types/src/components/Input/InputTriggerContext.d.ts +15 -0
- package/dist/types/src/components/Input/InputTriggerContext.d.ts.map +1 -0
- package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -1
- package/dist/types/src/components/Input/index.d.ts +1 -0
- package/dist/types/src/components/Input/index.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.d.ts +2 -35
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -1
- package/dist/types/src/components/Main/MainContext.d.ts +38 -0
- package/dist/types/src/components/Main/MainContext.d.ts.map +1 -0
- package/dist/types/src/components/Main/index.d.ts +1 -0
- package/dist/types/src/components/Main/index.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +1 -17
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/index.d.ts +1 -0
- package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/media-kind.d.ts +18 -0
- package/dist/types/src/components/MediaPlayer/media-kind.d.ts.map +1 -0
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +6 -22
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +1 -11
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenuContext.d.ts +27 -0
- package/dist/types/src/components/Menu/DropdownMenuContext.d.ts.map +1 -0
- package/dist/types/src/components/Menu/index.d.ts +1 -0
- package/dist/types/src/components/Menu/index.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.d.ts +11 -6
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +4 -1
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -1
- package/dist/types/src/components/Message/index.d.ts +1 -0
- package/dist/types/src/components/Message/index.d.ts.map +1 -1
- package/dist/types/src/components/Message/message-icons.d.ts +3 -0
- package/dist/types/src/components/Message/message-icons.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Panel.d.ts +4 -4
- package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -1
- package/dist/types/src/components/Panel/Panel.theme.d.ts +1 -1
- package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +6 -10
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/PopoverContext.d.ts +29 -0
- package/dist/types/src/components/Popover/PopoverContext.d.ts.map +1 -0
- package/dist/types/src/components/Popover/index.d.ts +1 -0
- package/dist/types/src/components/Popover/index.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +2 -2
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +2 -2
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +3 -16
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainerContext.d.ts +16 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainerContext.d.ts.map +1 -0
- package/dist/types/src/components/ScrollContainer/index.d.ts +1 -0
- package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -1
- package/dist/types/src/components/Slider/Slider.d.ts +25 -0
- package/dist/types/src/components/Slider/Slider.d.ts.map +1 -0
- package/dist/types/src/components/Slider/Slider.stories.d.ts +29 -0
- package/dist/types/src/components/Slider/Slider.stories.d.ts.map +1 -0
- package/dist/types/src/components/Slider/Slider.test.d.ts +2 -0
- package/dist/types/src/components/Slider/Slider.test.d.ts.map +1 -0
- package/dist/types/src/components/Slider/Slider.theme.d.ts +7 -0
- package/dist/types/src/components/Slider/Slider.theme.d.ts.map +1 -0
- package/dist/types/src/components/Slider/index.d.ts +2 -0
- package/dist/types/src/components/Slider/index.d.ts.map +1 -0
- package/dist/types/src/components/Splitter/Splitter.d.ts +3 -3
- package/dist/types/src/components/Status/Status.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +4 -2
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/TextTooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.d.ts +2 -23
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/TooltipContext.d.ts +35 -0
- package/dist/types/src/components/Tooltip/TooltipContext.d.ts.map +1 -0
- package/dist/types/src/components/Tooltip/index.d.ts +1 -0
- package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts +1 -1
- package/dist/types/src/hooks/useIconHref.d.ts +8 -0
- package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
- package/dist/types/src/hooks/useThemeContext.d.ts +2 -1
- package/dist/types/src/hooks/useThemeContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useThemeContext.test.d.ts +2 -0
- package/dist/types/src/hooks/useThemeContext.test.d.ts.map +1 -0
- package/dist/types/src/playground/Density.stories.d.ts +11 -0
- package/dist/types/src/playground/Density.stories.d.ts.map +1 -0
- package/dist/types/src/playground/Elevation.stories.d.ts +14 -0
- package/dist/types/src/playground/Elevation.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Container.d.ts +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
- package/dist/types/src/primitives/DensityProvider/DensityContext.d.ts +6 -0
- package/dist/types/src/primitives/DensityProvider/DensityContext.d.ts.map +1 -0
- package/dist/types/src/primitives/DensityProvider/DensityProvider.d.ts +10 -4
- package/dist/types/src/primitives/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/DensityProvider/index.d.ts +1 -0
- package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -1
- package/dist/types/src/primitives/Flex/Flex.d.ts +1 -1
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
- package/dist/types/src/primitives/ThemeProvider/IconRegistry.d.ts +15 -0
- package/dist/types/src/primitives/ThemeProvider/IconRegistry.d.ts.map +1 -0
- package/dist/types/src/primitives/ThemeProvider/ThemeProvider.d.ts +1 -2
- package/dist/types/src/primitives/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
- package/dist/types/src/primitives/ThemeProvider/TranslationsContext.d.ts +112 -0
- package/dist/types/src/primitives/ThemeProvider/TranslationsContext.d.ts.map +1 -0
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +0 -109
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/ThemeProvider/icon-registry.d.ts +34 -0
- package/dist/types/src/primitives/ThemeProvider/icon-registry.d.ts.map +1 -0
- package/dist/types/src/primitives/ThemeProvider/index.d.ts +3 -1
- package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/theme/defaultTheme.d.ts.map +1 -1
- package/dist/types/src/theme/index.d.ts +1 -0
- package/dist/types/src/theme/index.d.ts.map +1 -1
- package/dist/types/src/util/slots.d.ts +6 -3
- package/dist/types/src/util/slots.d.ts.map +1 -1
- package/dist/types/src/util/slots.stories.d.ts +14 -0
- package/dist/types/src/util/slots.stories.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +25 -27
- package/src/components/Avatars/Avatar.tsx +1 -11
- package/src/components/Avatars/AvatarContext.ts +16 -0
- package/src/components/Avatars/index.ts +2 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +27 -25
- package/src/components/Breadcrumb/Breadcrumb.theme.ts +7 -5
- package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
- package/src/components/Button/Button.tsx +2 -11
- package/src/components/Button/ButtonGroupContext.ts +17 -0
- package/src/components/Button/IconButton.stories.tsx +2 -3
- package/src/components/Button/IconButton.theme.ts +15 -2
- package/src/components/Button/IconButton.tsx +6 -1
- package/src/components/Button/SystemIconButton.tsx +23 -16
- package/src/components/Button/index.ts +2 -0
- package/src/components/Calendar/Calendar.theme.ts +5 -5
- package/src/components/Calendar/Calendar.tsx +1 -3
- package/src/components/Calendar/index.ts +2 -0
- package/src/components/Calendar/parse-calendar-date.ts +9 -0
- package/src/components/Card/Card.theme.ts +48 -38
- package/src/components/Card/Card.tsx +77 -16
- package/src/components/Carousel/Carousel.tsx +4 -11
- package/src/components/Carousel/CarouselContext.ts +17 -0
- package/src/components/Carousel/index.ts +2 -0
- package/src/components/Clipboard/ClipboardContext.ts +20 -0
- package/src/components/Clipboard/ClipboardProvider.tsx +2 -12
- package/src/components/Clipboard/CopyButton.tsx +1 -1
- package/src/components/Clipboard/index.ts +1 -1
- package/src/components/Column/Column.stories.tsx +2 -2
- package/src/components/Column/Column.theme.ts +2 -11
- package/src/components/Column/Column.tsx +35 -57
- package/src/components/Column/ColumnContext.ts +22 -0
- package/src/components/Column/index.ts +2 -0
- package/src/components/Column/withColumn.ts +41 -4
- package/src/components/DatePicker/DatePicker.theme.ts +2 -2
- package/src/components/DatePicker/DatePicker.tsx +1 -14
- package/src/components/DatePicker/DatePickerContext.ts +21 -0
- package/src/components/DatePicker/index.ts +2 -0
- package/src/components/ErrorFallback/ErrorStack.tsx +8 -28
- package/src/components/ErrorFallback/index.ts +1 -0
- package/src/components/ErrorFallback/parse-stack.ts +33 -0
- package/src/components/Focus/Focus.stories.tsx +6 -6
- package/src/components/Focus/Focus.tsx +2 -30
- package/src/components/Focus/FocusContext.ts +22 -0
- package/src/components/Focus/index.ts +2 -0
- package/src/components/Image/Image.tsx +1 -1
- package/src/components/Input/Input.stories.tsx +63 -48
- package/src/components/Input/Input.theme.ts +33 -27
- package/src/components/Input/Input.tsx +46 -43
- package/src/components/Input/InputTriggerContext.ts +45 -0
- package/src/components/Input/SegmentedInput.tsx +2 -1
- package/src/components/Input/index.ts +2 -0
- package/src/components/Main/Main.stories.tsx +2 -1
- package/src/components/Main/Main.theme.ts +10 -1
- package/src/components/Main/Main.tsx +1 -115
- package/src/components/Main/MainContext.ts +126 -0
- package/src/components/Main/index.ts +2 -0
- package/src/components/MediaPlayer/MediaPlayer.tsx +16 -47
- package/src/components/MediaPlayer/index.ts +2 -0
- package/src/components/MediaPlayer/media-kind.ts +41 -0
- package/src/components/Menu/DropdownMenu.tsx +27 -44
- package/src/components/Menu/DropdownMenuContext.ts +35 -0
- package/src/components/Menu/Menu.theme.ts +3 -3
- package/src/components/Menu/index.ts +2 -0
- package/src/components/Message/Message.stories.tsx +32 -15
- package/src/components/Message/Message.theme.ts +8 -2
- package/src/components/Message/Message.tsx +47 -23
- package/src/components/Message/index.ts +2 -0
- package/src/components/Message/message-icons.ts +16 -0
- package/src/components/Panel/Panel.stories.tsx +15 -2
- package/src/components/Panel/Panel.theme.ts +15 -6
- package/src/components/Popover/Popover.theme.ts +1 -1
- package/src/components/Popover/Popover.tsx +22 -37
- package/src/components/Popover/PopoverContext.ts +32 -0
- package/src/components/Popover/index.ts +2 -0
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +1 -1
- package/src/components/ScrollContainer/ScrollContainer.tsx +1 -18
- package/src/components/ScrollContainer/ScrollContainerContext.ts +25 -0
- package/src/components/ScrollContainer/index.ts +2 -0
- package/src/components/Select/Select.theme.ts +2 -2
- package/src/components/Slider/Slider.stories.tsx +107 -0
- package/src/components/Slider/Slider.test.tsx +105 -0
- package/src/components/Slider/Slider.theme.ts +38 -0
- package/src/components/Slider/Slider.tsx +64 -0
- package/src/components/Slider/index.ts +5 -0
- package/src/components/Status/Status.theme.ts +1 -1
- package/src/components/Status/Status.tsx +0 -1
- package/src/components/Tag/Tag.stories.tsx +1 -1
- package/src/components/Toolbar/Toolbar.theme.ts +14 -5
- package/src/components/Toolbar/Toolbar.tsx +5 -1
- package/src/components/Tooltip/TextTooltip.tsx +2 -1
- package/src/components/Tooltip/Tooltip.tsx +12 -35
- package/src/components/Tooltip/TooltipContext.ts +41 -0
- package/src/components/Tooltip/index.ts +2 -0
- package/src/components/index.ts +1 -0
- package/src/hooks/useIconHref.ts +26 -5
- package/src/hooks/useThemeContext.test.tsx +33 -0
- package/src/hooks/useThemeContext.ts +28 -3
- package/src/playground/Density.stories.tsx +41 -0
- package/src/playground/Elevation.stories.tsx +348 -0
- package/src/primitives/DensityProvider/DensityContext.ts +15 -0
- package/src/primitives/DensityProvider/DensityProvider.tsx +12 -6
- package/src/primitives/DensityProvider/index.ts +1 -0
- package/src/primitives/Flex/Flex.stories.tsx +1 -1
- package/src/primitives/Grid/Grid.stories.tsx +1 -1
- package/src/primitives/ThemeProvider/IconRegistry.tsx +42 -0
- package/src/primitives/ThemeProvider/ThemeProvider.tsx +16 -15
- package/src/primitives/ThemeProvider/TranslationsContext.ts +24 -0
- package/src/primitives/ThemeProvider/TranslationsProvider.tsx +4 -16
- package/src/primitives/ThemeProvider/icon-registry.ts +272 -0
- package/src/primitives/ThemeProvider/index.ts +9 -1
- package/src/testing/decorators/withLayout.tsx +4 -4
- package/src/testing/decorators/withLayoutVariants.tsx +3 -3
- package/src/testing/decorators/withTheme.tsx +1 -2
- package/src/theme/defaultTheme.ts +2 -0
- package/src/theme/index.ts +1 -0
- package/src/util/slots.stories.tsx +80 -0
- package/src/util/slots.ts +14 -5
- package/dist/lib/browser/chunk-CMHHVHX3.mjs +0 -46
- package/dist/lib/browser/chunk-CMHHVHX3.mjs.map +0 -7
- package/dist/lib/browser/chunk-GTHV4WYK.mjs +0 -1499
- package/dist/lib/browser/chunk-GTHV4WYK.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -5632
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs +0 -133
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/browser/translations.mjs +0 -9
- package/dist/lib/browser/translations.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3VSKWNCQ.mjs +0 -1501
- package/dist/lib/node-esm/chunk-3VSKWNCQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P4KFQGJI.mjs +0 -48
- package/dist/lib/node-esm/chunk-P4KFQGJI.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -5633
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -134
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/translations.mjs +0 -10
- package/dist/lib/node-esm/translations.mjs.map +0 -7
- package/src/components/Column/AUDIT.md +0 -148
- package/src/components/Focus/AUDIT.md +0 -43
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Low-level React components for DXOS, applying a theme to a core group of primitives",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -18,21 +18,18 @@
|
|
|
18
18
|
"exports": {
|
|
19
19
|
".": {
|
|
20
20
|
"source": "./src/index.ts",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"types": "./dist/types/src/index.d.ts"
|
|
21
|
+
"types": "./dist/types/src/index.d.ts",
|
|
22
|
+
"import": "./dist/lib/index.mjs"
|
|
24
23
|
},
|
|
25
24
|
"./testing": {
|
|
26
25
|
"source": "./src/testing/index.ts",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"types": "./dist/types/src/testing/index.d.ts"
|
|
26
|
+
"types": "./dist/types/src/testing/index.d.ts",
|
|
27
|
+
"import": "./dist/lib/testing.mjs"
|
|
30
28
|
},
|
|
31
29
|
"./translations": {
|
|
32
30
|
"source": "./src/translations.ts",
|
|
33
31
|
"types": "./dist/types/src/translations.d.ts",
|
|
34
|
-
"
|
|
35
|
-
"node": "./dist/lib/node-esm/translations.mjs"
|
|
32
|
+
"import": "./dist/lib/translations.mjs"
|
|
36
33
|
}
|
|
37
34
|
},
|
|
38
35
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -42,7 +39,6 @@
|
|
|
42
39
|
],
|
|
43
40
|
"dependencies": {
|
|
44
41
|
"@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
|
|
45
|
-
"@effect-atom/atom-react": "^0.5.0",
|
|
46
42
|
"@fluentui/react-tabster": "9.26.11",
|
|
47
43
|
"@internationalized/date": "^3.12.1",
|
|
48
44
|
"@radix-ui/primitive": "1.1.1",
|
|
@@ -66,6 +62,7 @@
|
|
|
66
62
|
"@radix-ui/react-scroll-area": "1.2.10",
|
|
67
63
|
"@radix-ui/react-select": "2.1.6",
|
|
68
64
|
"@radix-ui/react-separator": "1.1.2",
|
|
65
|
+
"@radix-ui/react-slider": "1.4.7",
|
|
69
66
|
"@radix-ui/react-slot": "1.1.2",
|
|
70
67
|
"@radix-ui/react-switch": "1.1.3",
|
|
71
68
|
"@radix-ui/react-toast": "1.2.6",
|
|
@@ -85,18 +82,18 @@
|
|
|
85
82
|
"react-error-boundary": "^4.0.13",
|
|
86
83
|
"react-i18next": "^11.18.6",
|
|
87
84
|
"react-remove-scroll": "^2.6.0",
|
|
88
|
-
"@dxos/
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/
|
|
92
|
-
"@dxos/log": "0.
|
|
93
|
-
"@dxos/react-
|
|
94
|
-
"@dxos/
|
|
95
|
-
"@dxos/
|
|
96
|
-
"@dxos/
|
|
97
|
-
"@dxos/
|
|
98
|
-
"@dxos/
|
|
99
|
-
"@dxos/
|
|
85
|
+
"@dxos/debug": "0.11.0",
|
|
86
|
+
"@dxos/i18n": "0.11.0",
|
|
87
|
+
"@dxos/invariant": "0.11.0",
|
|
88
|
+
"@dxos/lit-ui": "0.11.0",
|
|
89
|
+
"@dxos/log": "0.11.0",
|
|
90
|
+
"@dxos/react-error-boundary": "0.11.0",
|
|
91
|
+
"@dxos/react-hooks": "0.11.0",
|
|
92
|
+
"@dxos/react-input": "0.11.0",
|
|
93
|
+
"@dxos/util": "0.11.0",
|
|
94
|
+
"@dxos/ui-types": "0.11.0",
|
|
95
|
+
"@dxos/react-list": "0.11.0",
|
|
96
|
+
"@dxos/async": "0.11.0"
|
|
100
97
|
},
|
|
101
98
|
"devDependencies": {
|
|
102
99
|
"@dnd-kit/core": "^6.0.5",
|
|
@@ -104,20 +101,21 @@
|
|
|
104
101
|
"@dnd-kit/utilities": "^3.2.0",
|
|
105
102
|
"@phosphor-icons/react": "2.1.10",
|
|
106
103
|
"@tanstack/react-virtual": "^3.13.18",
|
|
104
|
+
"@testing-library/react": "^16.3.2",
|
|
107
105
|
"@types/react": "~19.2.17",
|
|
108
106
|
"@types/react-dom": "~19.2.3",
|
|
109
107
|
"react": "~19.2.7",
|
|
110
108
|
"react-dom": "~19.2.7",
|
|
111
109
|
"tabster": "^8.5.5",
|
|
112
|
-
"vite": "^8.
|
|
113
|
-
"@dxos/random": "0.
|
|
114
|
-
"@dxos/
|
|
115
|
-
"@dxos/
|
|
110
|
+
"vite": "^8.1.4",
|
|
111
|
+
"@dxos/random": "0.11.0",
|
|
112
|
+
"@dxos/util": "0.11.0",
|
|
113
|
+
"@dxos/ui-theme": "0.11.0"
|
|
116
114
|
},
|
|
117
115
|
"peerDependencies": {
|
|
118
116
|
"react": "~19.2.7",
|
|
119
117
|
"react-dom": "~19.2.7",
|
|
120
|
-
"@dxos/ui-theme": "0.
|
|
118
|
+
"@dxos/ui-theme": "^0.11.0"
|
|
121
119
|
},
|
|
122
120
|
"publishConfig": {
|
|
123
121
|
"access": "public"
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { createContext } from '@radix-ui/react-context';
|
|
6
5
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
7
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
7
|
import React, { type ComponentProps, type ComponentPropsWithRef, type PropsWithChildren, forwardRef } from 'react';
|
|
@@ -20,17 +19,10 @@ import { mx } from '@dxos/ui-theme';
|
|
|
20
19
|
|
|
21
20
|
import { useIconHref, useThemeContext } from '../../hooks';
|
|
22
21
|
import { type ThemedClassName } from '../../util';
|
|
22
|
+
import { type AvatarContextValue, AvatarProvider, useAvatarContext } from './AvatarContext';
|
|
23
23
|
|
|
24
24
|
export type AvatarRootProps = PropsWithChildren<Partial<AvatarContextValue>>;
|
|
25
25
|
|
|
26
|
-
type AvatarContextValue = {
|
|
27
|
-
labelId: string;
|
|
28
|
-
descriptionId: string;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const AVATAR_NAME = 'Avatar';
|
|
32
|
-
const [AvatarProvider, useAvatarContext] = createContext<AvatarContextValue>(AVATAR_NAME);
|
|
33
|
-
|
|
34
26
|
const AvatarRoot = ({ children, labelId: propsLabelId, descriptionId: propsDescriptionId }: AvatarRootProps) => {
|
|
35
27
|
const labelId = useId('avatar__label', propsLabelId);
|
|
36
28
|
const descriptionId = useId('avatar__description', propsDescriptionId);
|
|
@@ -98,8 +90,6 @@ export const Avatar = {
|
|
|
98
90
|
Description: AvatarDescription,
|
|
99
91
|
};
|
|
100
92
|
|
|
101
|
-
export { useAvatarContext };
|
|
102
|
-
|
|
103
93
|
export type {
|
|
104
94
|
AvatarAnimation,
|
|
105
95
|
AvatarContentProps,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { createContext } from '@radix-ui/react-context';
|
|
6
|
+
|
|
7
|
+
// Kept out of `Avatar.tsx`: react-refresh only fast-refreshes a module whose exports are all
|
|
8
|
+
// components, so a context and its hook exported beside them force a full page reload on every edit.
|
|
9
|
+
|
|
10
|
+
export type AvatarContextValue = {
|
|
11
|
+
labelId: string;
|
|
12
|
+
descriptionId: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const AVATAR_NAME = 'Avatar';
|
|
16
|
+
export const [AvatarProvider, useAvatarContext] = createContext<AvatarContextValue>(AVATAR_NAME);
|
|
@@ -5,35 +5,37 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import { withTheme } from '../../testing';
|
|
8
|
+
import { withLayout, withTheme } from '../../testing';
|
|
9
9
|
import { Button } from '../Button';
|
|
10
10
|
import { Breadcrumb, type BreadcrumbRootProps } from './Breadcrumb';
|
|
11
11
|
|
|
12
12
|
const DefaultStory = (props: BreadcrumbRootProps) => {
|
|
13
13
|
return (
|
|
14
|
-
<
|
|
15
|
-
<Breadcrumb.
|
|
16
|
-
<Breadcrumb.
|
|
17
|
-
<Breadcrumb.
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<Breadcrumb.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<Breadcrumb.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<Breadcrumb.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
<div>
|
|
15
|
+
<Breadcrumb.Root {...props}>
|
|
16
|
+
<Breadcrumb.List>
|
|
17
|
+
<Breadcrumb.ListItem>
|
|
18
|
+
<Breadcrumb.Link>
|
|
19
|
+
<Button variant='ghost' classNames='px-0 text-base-fg font-normal'>
|
|
20
|
+
Home
|
|
21
|
+
</Button>
|
|
22
|
+
</Breadcrumb.Link>
|
|
23
|
+
<Breadcrumb.Separator />
|
|
24
|
+
</Breadcrumb.ListItem>
|
|
25
|
+
<Breadcrumb.ListItem>
|
|
26
|
+
<Breadcrumb.Link href='#'>Mailbox</Breadcrumb.Link>
|
|
27
|
+
<Breadcrumb.Separator />
|
|
28
|
+
</Breadcrumb.ListItem>
|
|
29
|
+
<Breadcrumb.ListItem>
|
|
30
|
+
<Breadcrumb.Link href='#'>Work</Breadcrumb.Link>
|
|
31
|
+
<Breadcrumb.Separator />
|
|
32
|
+
</Breadcrumb.ListItem>
|
|
33
|
+
<Breadcrumb.ListItem>
|
|
34
|
+
<Breadcrumb.Current>All</Breadcrumb.Current>
|
|
35
|
+
</Breadcrumb.ListItem>
|
|
36
|
+
</Breadcrumb.List>
|
|
37
|
+
</Breadcrumb.Root>
|
|
38
|
+
</div>
|
|
37
39
|
);
|
|
38
40
|
};
|
|
39
41
|
|
|
@@ -41,7 +43,7 @@ const meta = {
|
|
|
41
43
|
title: 'ui/react-ui-core/components/Breadcrumb',
|
|
42
44
|
component: Breadcrumb.Root as any,
|
|
43
45
|
render: DefaultStory,
|
|
44
|
-
decorators: [withTheme()],
|
|
46
|
+
decorators: [withTheme(), withLayout({ layout: 'column' })],
|
|
45
47
|
} satisfies Meta<typeof DefaultStory>;
|
|
46
48
|
|
|
47
49
|
export default meta;
|
|
@@ -7,15 +7,17 @@ import { type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
|
7
7
|
|
|
8
8
|
export type breadcrumbStyleProps = {};
|
|
9
9
|
|
|
10
|
-
const root: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) =>
|
|
10
|
+
const root: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) =>
|
|
11
|
+
mx('flex items-center grow overflow-hidden', ...etc);
|
|
11
12
|
|
|
12
|
-
const list: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) =>
|
|
13
|
+
const list: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) =>
|
|
14
|
+
mx('flex items-center min-w-0 grow overflow-x-auto scrollbar-none', ...etc);
|
|
13
15
|
|
|
14
|
-
const listItem: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx('
|
|
16
|
+
const listItem: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx('flex items-center shrink-0', ...etc);
|
|
15
17
|
|
|
16
|
-
const current: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx(...etc);
|
|
18
|
+
const current: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx('whitespace-nowrap', ...etc);
|
|
17
19
|
|
|
18
|
-
const separator: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx('opacity-50', ...etc);
|
|
20
|
+
const separator: ComponentFunction<breadcrumbStyleProps> = (_props, ...etc) => mx('shrink-0 opacity-50', ...etc);
|
|
19
21
|
|
|
20
22
|
export const breadcrumbTheme: Theme<breadcrumbStyleProps> = {
|
|
21
23
|
root,
|
|
@@ -75,7 +75,7 @@ BreadcrumbCurrent.displayName = 'Breadcrumb.Current';
|
|
|
75
75
|
|
|
76
76
|
type BreadcrumbSeparatorProps = ThemedClassName<ComponentPropsWithoutRef<typeof Primitive.span>>;
|
|
77
77
|
|
|
78
|
-
function BreadcrumbSeparator({
|
|
78
|
+
function BreadcrumbSeparator({ classNames, children, ...props }: BreadcrumbSeparatorProps) {
|
|
79
79
|
const { tx } = useThemeContext();
|
|
80
80
|
return (
|
|
81
81
|
<Primitive.span
|
|
@@ -84,7 +84,7 @@ function BreadcrumbSeparator({ children, classNames, ...props }: BreadcrumbSepar
|
|
|
84
84
|
{...props}
|
|
85
85
|
className={tx('breadcrumb.separator', {}, classNames)}
|
|
86
86
|
>
|
|
87
|
-
{children ?? <Icon icon='ph--
|
|
87
|
+
{children ?? <Icon icon='ph--caret-double-right--regular' />}
|
|
88
88
|
</Primitive.span>
|
|
89
89
|
);
|
|
90
90
|
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { createContext } from '@radix-ui/react-context';
|
|
6
5
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
7
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
7
|
import React, { type ComponentPropsWithRef, forwardRef, memo } from 'react';
|
|
@@ -12,6 +11,7 @@ import { type Density, type Elevation } from '@dxos/ui-types';
|
|
|
12
11
|
import { useDensityContext, useElevationContext, useThemeContext } from '../../hooks';
|
|
13
12
|
import { type ThemedClassName } from '../../util';
|
|
14
13
|
import { Icon } from '../Icon';
|
|
14
|
+
import { BUTTON_GROUP_NAME, BUTTON_NAME, ButtonGroupProvider, useButtonGroupContext } from './ButtonGroupContext';
|
|
15
15
|
|
|
16
16
|
type ButtonProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.button>> & {
|
|
17
17
|
variant?: 'default' | 'primary' | 'outline' | 'ghost' | 'destructive' | 'valence';
|
|
@@ -22,15 +22,6 @@ type ButtonProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.button
|
|
|
22
22
|
caretDown?: boolean;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
type ButtonGroupContextValue = { inGroup?: boolean };
|
|
26
|
-
|
|
27
|
-
const BUTTON_GROUP_NAME = 'ButtonGroup';
|
|
28
|
-
const BUTTON_NAME = 'Button';
|
|
29
|
-
|
|
30
|
-
const [ButtonGroupProvider, useButtonGroupContext] = createContext<ButtonGroupContextValue>(BUTTON_GROUP_NAME, {
|
|
31
|
-
inGroup: false,
|
|
32
|
-
});
|
|
33
|
-
|
|
34
25
|
const Button = memo(
|
|
35
26
|
forwardRef<HTMLButtonElement, ButtonProps>(
|
|
36
27
|
(
|
|
@@ -109,6 +100,6 @@ const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(
|
|
|
109
100
|
|
|
110
101
|
ButtonGroup.displayName = BUTTON_GROUP_NAME;
|
|
111
102
|
|
|
112
|
-
export { Button,
|
|
103
|
+
export { Button, ButtonGroup };
|
|
113
104
|
|
|
114
105
|
export type { ButtonGroupProps, ButtonProps };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { createContext } from '@radix-ui/react-context';
|
|
6
|
+
|
|
7
|
+
// Kept out of `Button.tsx`: react-refresh only fast-refreshes a module whose exports are all
|
|
8
|
+
// components, so a context and its hook exported beside them force a full page reload on every edit.
|
|
9
|
+
|
|
10
|
+
export type ButtonGroupContextValue = { inGroup?: boolean };
|
|
11
|
+
|
|
12
|
+
export const BUTTON_GROUP_NAME = 'ButtonGroup';
|
|
13
|
+
export const BUTTON_NAME = 'Button';
|
|
14
|
+
|
|
15
|
+
export const [ButtonGroupProvider, useButtonGroupContext] = createContext<ButtonGroupContextValue>(BUTTON_GROUP_NAME, {
|
|
16
|
+
inGroup: false,
|
|
17
|
+
});
|
|
@@ -26,18 +26,17 @@ const DefaultStory = (props: IconButtonProps) => {
|
|
|
26
26
|
);
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
const densities: Density[] = ['lg', 'md', 'sm'
|
|
29
|
+
const densities: Density[] = ['lg', 'md', 'sm'];
|
|
30
30
|
const densityIconSize: Record<Density, IconButtonProps['size']> = {
|
|
31
31
|
lg: 5,
|
|
32
32
|
md: 4,
|
|
33
33
|
sm: 4,
|
|
34
|
-
xs: 4,
|
|
35
34
|
};
|
|
36
35
|
|
|
37
36
|
const DensitiesStory = (props: Omit<IconButtonProps, 'density' | 'size'>) => {
|
|
38
37
|
return (
|
|
39
38
|
<Tooltip.Provider>
|
|
40
|
-
<div className='grid grid-cols-[
|
|
39
|
+
<div className='grid grid-cols-[auto_1fr_1fr] gap-4 items-center'>
|
|
41
40
|
<div />
|
|
42
41
|
<div className='text-xs text-subdued uppercase'>iconOnly</div>
|
|
43
42
|
<div className='text-xs text-subdued uppercase'>label + icon</div>
|
|
@@ -10,10 +10,23 @@ import { type ButtonStyleProps } from './Button.theme';
|
|
|
10
10
|
export type IconButtonStyleProps = ButtonStyleProps & {
|
|
11
11
|
iconOnly?: boolean;
|
|
12
12
|
square?: boolean;
|
|
13
|
+
caretDown?: boolean;
|
|
13
14
|
};
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
// No padding utility here: `utilities` is the last cascade layer, so a `px-*` would override the
|
|
17
|
+
// density-driven `padding-inline` on `.dx-button` at every density.
|
|
18
|
+
//
|
|
19
|
+
// An icon-only button is square, but only while it really holds one glyph: `caretDown` adds a
|
|
20
|
+
// second (the dropdown caret), and squaring that composite crushes both into one control width —
|
|
21
|
+
// as it did to the markdown toolbar's view selector. `aspect-square` pins the inline size, which
|
|
22
|
+
// stops the button stretching to a wider grid cell, so it is paired with `justify-self-center`;
|
|
23
|
+
// without that it silently left-aligns (what pushed the R0 rail's sidebar toggle 4px off-centre).
|
|
24
|
+
const root: ComponentFunction<IconButtonStyleProps> = ({ iconOnly, square, caretDown }, ...etc) => {
|
|
25
|
+
return mx(
|
|
26
|
+
!iconOnly && 'gap-1.5',
|
|
27
|
+
(square || (iconOnly && !caretDown)) && 'aspect-square justify-self-center',
|
|
28
|
+
...etc,
|
|
29
|
+
);
|
|
17
30
|
};
|
|
18
31
|
|
|
19
32
|
export const iconButtonTheme: Theme<IconButtonStyleProps> = {
|
|
@@ -50,7 +50,12 @@ const LabelledIconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
50
50
|
) => {
|
|
51
51
|
const { tx } = useThemeContext();
|
|
52
52
|
return (
|
|
53
|
-
|
|
53
|
+
// `caretDown` stays in `props` so `Button` still renders the caret; the theme only reads it.
|
|
54
|
+
<Button
|
|
55
|
+
{...props}
|
|
56
|
+
classNames={tx('iconButton.root', { iconOnly, square, caretDown: props.caretDown }, classNames)}
|
|
57
|
+
ref={forwardedRef}
|
|
58
|
+
>
|
|
54
59
|
{icon && !iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
|
|
55
60
|
<span className={iconOnly ? 'sr-only' : undefined}>{label}</span>
|
|
56
61
|
{icon && iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
|
|
@@ -203,33 +203,40 @@ UploadIconButton.displayName = 'SystemIconButton.Upload';
|
|
|
203
203
|
|
|
204
204
|
type DownloadIconButtonProps = StaticPresetProps & {
|
|
205
205
|
filename: string;
|
|
206
|
-
|
|
206
|
+
// Blob may be produced asynchronously (e.g. serialized from a query) or synchronously.
|
|
207
|
+
onDownload: () => Blob | null | Promise<Blob | null>;
|
|
207
208
|
};
|
|
208
209
|
|
|
209
210
|
const DownloadIconButton = forwardRef<HTMLButtonElement, DownloadIconButtonProps>(
|
|
210
211
|
({ filename, onDownload, label, ...props }, forwardedRef) => {
|
|
211
212
|
const { t } = useTranslation(translationKey);
|
|
212
|
-
const handleDownload = useCallback(() => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
const handleDownload = useCallback(async () => {
|
|
214
|
+
try {
|
|
215
|
+
const blob = await onDownload();
|
|
216
|
+
if (!blob) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const url = URL.createObjectURL(blob);
|
|
221
|
+
|
|
222
|
+
// TODO(burdon): Use Domino.
|
|
223
|
+
const a = document.createElement('a');
|
|
224
|
+
a.href = url;
|
|
225
|
+
a.download = filename;
|
|
226
|
+
a.click();
|
|
227
|
+
|
|
228
|
+
URL.revokeObjectURL(url);
|
|
229
|
+
} catch {
|
|
230
|
+
// Best-effort: blob generation or the download click may fail; swallow to avoid an unhandled
|
|
231
|
+
// promise rejection (the click handler discards the returned promise with `void`).
|
|
216
232
|
}
|
|
217
|
-
|
|
218
|
-
const url = URL.createObjectURL(blob);
|
|
219
|
-
|
|
220
|
-
const a = document.createElement('a');
|
|
221
|
-
a.href = url;
|
|
222
|
-
a.download = filename;
|
|
223
|
-
a.click();
|
|
224
|
-
|
|
225
|
-
URL.revokeObjectURL(url);
|
|
226
|
-
}, [onDownload]);
|
|
233
|
+
}, [onDownload, filename]);
|
|
227
234
|
return (
|
|
228
235
|
<IconButton
|
|
229
236
|
icon='ph--download-simple--regular'
|
|
230
237
|
label={label ?? t('system-button.download.label')}
|
|
231
238
|
{...props}
|
|
232
|
-
onClick={handleDownload}
|
|
239
|
+
onClick={() => void handleDownload()}
|
|
233
240
|
ref={forwardedRef}
|
|
234
241
|
/>
|
|
235
242
|
);
|
|
@@ -15,7 +15,7 @@ export type CalendarStyleProps = Partial<{}>;
|
|
|
15
15
|
//
|
|
16
16
|
|
|
17
17
|
const root: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
18
|
-
mx('relative w-fit h-fit self-start p-2 select-none
|
|
18
|
+
mx('relative w-fit h-fit self-start p-2 select-none dx-group-surface text-base-fg', ...etc);
|
|
19
19
|
|
|
20
20
|
const nav: ComponentFunction<CalendarStyleProps> = (_p, ...etc) => mx('flex items-center justify-between pb-1', ...etc);
|
|
21
21
|
|
|
@@ -24,7 +24,7 @@ const caption_label: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
|
24
24
|
|
|
25
25
|
const button_previous: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
26
26
|
mx(
|
|
27
|
-
'
|
|
27
|
+
'size-(--dx-control-sm) inline-flex items-center justify-center rounded-sm shrink-0',
|
|
28
28
|
'text-description hover:bg-hover-surface',
|
|
29
29
|
'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',
|
|
30
30
|
...etc,
|
|
@@ -32,7 +32,7 @@ const button_previous: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
|
32
32
|
|
|
33
33
|
const button_next: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
34
34
|
mx(
|
|
35
|
-
'
|
|
35
|
+
'size-(--dx-control-sm) inline-flex items-center justify-center rounded-sm shrink-0',
|
|
36
36
|
'text-description hover:bg-hover-surface',
|
|
37
37
|
'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',
|
|
38
38
|
...etc,
|
|
@@ -43,11 +43,11 @@ const month_grid: ComponentFunction<CalendarStyleProps> = (_p, ...etc) => mx('w-
|
|
|
43
43
|
const weekdays: ComponentFunction<CalendarStyleProps> = (_p, ...etc) => mx('', ...etc);
|
|
44
44
|
|
|
45
45
|
const weekday: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
46
|
-
mx('w-
|
|
46
|
+
mx('w-(--dx-control-md) h-(--dx-control-sm) text-xs font-thin text-description', ...etc);
|
|
47
47
|
|
|
48
48
|
const day: ComponentFunction<CalendarStyleProps> = (_p, ...etc) =>
|
|
49
49
|
mx(
|
|
50
|
-
'relative
|
|
50
|
+
'relative size-(--dx-control-md) p-0 text-center text-sm rounded-sm inline-flex items-center justify-center cursor-pointer',
|
|
51
51
|
'outline-none',
|
|
52
52
|
'data-[hovered]:bg-hover-surface',
|
|
53
53
|
'data-[focus-visible]:outline-2 data-[focus-visible]:outline-primary-500',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { CalendarDate
|
|
5
|
+
import { CalendarDate } from '@internationalized/date';
|
|
6
6
|
import React, { type ComponentPropsWithoutRef, type ReactNode, forwardRef } from 'react';
|
|
7
7
|
import {
|
|
8
8
|
type DateValue,
|
|
@@ -191,6 +191,4 @@ export const Calendar = {
|
|
|
191
191
|
Root: CalendarRoot,
|
|
192
192
|
};
|
|
193
193
|
|
|
194
|
-
// Re-export the iso parser for convenience.
|
|
195
|
-
export { parseDate as parseCalendarDate };
|
|
196
194
|
export type { ComponentPropsWithoutRef };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// Kept out of `Calendar.tsx`: react-refresh only fast-refreshes a module whose exports are all
|
|
6
|
+
// components, so a value exported beside them forces a full page reload on every edit.
|
|
7
|
+
|
|
8
|
+
/** The ISO date parser, re-exported for convenience alongside `Calendar`. */
|
|
9
|
+
export { parseDate as parseCalendarDate } from '@internationalized/date';
|