@adgytec/adgytec-web-ui-components 2.3.1 → 2.4.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/README.md +27 -16
- package/dist/App.d.ts +0 -1
- package/dist/assets/BottomSheetModal.css +1 -1
- package/dist/assets/Card.css +1 -1
- package/dist/assets/Input.css +1 -1
- package/dist/assets/ListItem.css +1 -1
- package/dist/assets/Radio.css +1 -1
- package/dist/assets/SideSheetModal.css +1 -1
- package/dist/assets/Switch.css +1 -1
- package/dist/assets/ThemeSelector.css +1 -1
- package/dist/assets/core7.css +1 -1
- package/dist/chunks/ActionDialog +0 -1
- package/dist/chunks/ActionDialog.map +1 -1
- package/dist/chunks/AppBar +0 -1
- package/dist/chunks/AppBar.map +1 -1
- package/dist/chunks/AppBarAction +0 -1
- package/dist/chunks/AppBarAction.map +1 -1
- package/dist/chunks/AppBarAvatar +1 -2
- package/dist/chunks/AppBarAvatar.map +1 -1
- package/dist/chunks/AppBarHeadline +1 -2
- package/dist/chunks/AppBarHeadline.map +1 -1
- package/dist/chunks/BaseCalendar +2 -11
- package/dist/chunks/BaseCalendar.map +1 -1
- package/dist/chunks/BottomSheet +1 -2
- package/dist/chunks/BottomSheet.map +1 -1
- package/dist/chunks/BottomSheetModal +1 -2
- package/dist/chunks/BottomSheetModal.map +1 -1
- package/dist/chunks/ButtonGroup +1 -2
- package/dist/chunks/ButtonGroup.map +1 -1
- package/dist/chunks/CalendarCell +0 -1
- package/dist/chunks/CalendarCell.map +1 -1
- package/dist/chunks/CalendarGrid +1 -2
- package/dist/chunks/CalendarGrid.map +1 -1
- package/dist/chunks/CalendarMenuItem +1 -2
- package/dist/chunks/CalendarMenuItem.map +1 -1
- package/dist/chunks/Card +4 -5
- package/dist/chunks/Card.map +1 -1
- package/dist/chunks/CardIcon +1 -2
- package/dist/chunks/CardIcon.map +1 -1
- package/dist/chunks/CenteredSlider +1 -2
- package/dist/chunks/CenteredSlider.map +1 -1
- package/dist/chunks/ComboBox +1 -2
- package/dist/chunks/ComboBox.map +1 -1
- package/dist/chunks/ComboBoxPopover +0 -1
- package/dist/chunks/ComboBoxPopover.map +1 -1
- package/dist/chunks/ComboBoxTrigger +182 -200
- package/dist/chunks/ComboBoxTrigger.map +1 -1
- package/dist/chunks/ConnectedButtonGroup +0 -1
- package/dist/chunks/ConnectedButtonGroup.map +1 -1
- package/dist/chunks/Dialog +1 -2
- package/dist/chunks/Dialog.map +1 -1
- package/dist/chunks/Disclosure +1 -2
- package/dist/chunks/Disclosure.map +1 -1
- package/dist/chunks/DisclosureGroup +1 -2
- package/dist/chunks/DisclosureGroup.map +1 -1
- package/dist/chunks/DisclosureHeader +1 -2
- package/dist/chunks/DisclosureHeader.map +1 -1
- package/dist/chunks/DisclosurePanel +1 -2
- package/dist/chunks/DisclosurePanel.map +1 -1
- package/dist/chunks/Divider +1 -2
- package/dist/chunks/Divider.map +1 -1
- package/dist/chunks/FieldError +1 -2
- package/dist/chunks/FieldError.map +1 -1
- package/dist/chunks/GridBackgroundDecorator +0 -1
- package/dist/chunks/GridBackgroundDecorator.map +1 -1
- package/dist/chunks/Icon +1 -2
- package/dist/chunks/Icon.map +1 -1
- package/dist/chunks/Input +67 -78
- package/dist/chunks/Input.map +1 -1
- package/dist/chunks/Input2 +4 -8
- package/dist/chunks/Input2.map +1 -1
- package/dist/chunks/ListAction +0 -1
- package/dist/chunks/ListAction.map +1 -1
- package/dist/chunks/ListAvatar +1 -2
- package/dist/chunks/ListAvatar.map +1 -1
- package/dist/chunks/ListBox +12 -9
- package/dist/chunks/ListBox.map +1 -1
- package/dist/chunks/ListIcon +1 -2
- package/dist/chunks/ListIcon.map +1 -1
- package/dist/chunks/ListItem +62 -49
- package/dist/chunks/ListItem.map +1 -1
- package/dist/chunks/ListLabelText +1 -2
- package/dist/chunks/ListLabelText.map +1 -1
- package/dist/chunks/ListMedia +0 -1
- package/dist/chunks/ListMedia.map +1 -1
- package/dist/chunks/ListOverlineText +1 -2
- package/dist/chunks/ListOverlineText.map +1 -1
- package/dist/chunks/ListSupportingText +1 -2
- package/dist/chunks/ListSupportingText.map +1 -1
- package/dist/chunks/ListTrailingText +1 -2
- package/dist/chunks/ListTrailingText.map +1 -1
- package/dist/chunks/Loader +1 -2
- package/dist/chunks/Loader.map +1 -1
- package/dist/chunks/MenuPopover +1 -2
- package/dist/chunks/MenuPopover.map +1 -1
- package/dist/chunks/Modal +1 -2
- package/dist/chunks/Modal.map +1 -1
- package/dist/chunks/ModalOverlay +1 -2
- package/dist/chunks/ModalOverlay.map +1 -1
- package/dist/chunks/Navigation +2 -4
- package/dist/chunks/Navigation.map +1 -1
- package/dist/chunks/NavigationScrollContainer +2 -4
- package/dist/chunks/NavigationScrollContainer.map +1 -1
- package/dist/chunks/NavigationSection +1 -2
- package/dist/chunks/NavigationSection.map +1 -1
- package/dist/chunks/NavigationSectionLabel +1 -2
- package/dist/chunks/NavigationSectionLabel.map +1 -1
- package/dist/chunks/Popover +1 -2
- package/dist/chunks/Popover.map +1 -1
- package/dist/chunks/RadialGlowDecorator +0 -1
- package/dist/chunks/RadialGlowDecorator.map +1 -1
- package/dist/chunks/Radio +57 -70
- package/dist/chunks/Radio.map +1 -1
- package/dist/chunks/RichTooltip +1 -2
- package/dist/chunks/RichTooltip.map +1 -1
- package/dist/chunks/RichTooltipActions +1 -2
- package/dist/chunks/RichTooltipActions.map +1 -1
- package/dist/chunks/RichTooltipInfo +1 -2
- package/dist/chunks/RichTooltipInfo.map +1 -1
- package/dist/chunks/SearchField +0 -1
- package/dist/chunks/SearchField.map +1 -1
- package/dist/chunks/SelectPopover +1 -2
- package/dist/chunks/SelectPopover.map +1 -1
- package/dist/chunks/SelectTrigger +1 -2
- package/dist/chunks/SelectTrigger.map +1 -1
- package/dist/chunks/SideSheet +1 -2
- package/dist/chunks/SideSheet.map +1 -1
- package/dist/chunks/SideSheetModal +2 -3
- package/dist/chunks/SideSheetModal.map +1 -1
- package/dist/chunks/Slider +0 -1
- package/dist/chunks/Slider.map +1 -1
- package/dist/chunks/SliderOutput +1 -2
- package/dist/chunks/SliderOutput.map +1 -1
- package/dist/chunks/SliderStops +1 -2
- package/dist/chunks/SliderStops.map +1 -1
- package/dist/chunks/SliderThumb +0 -1
- package/dist/chunks/SliderThumb.map +1 -1
- package/dist/chunks/Snackbar +1 -2
- package/dist/chunks/Snackbar.map +1 -1
- package/dist/chunks/SplitButton +1 -2
- package/dist/chunks/SplitButton.map +1 -1
- package/dist/chunks/SplitButtonTrigger +1 -2
- package/dist/chunks/SplitButtonTrigger.map +1 -1
- package/dist/chunks/SubmenuPopover +0 -1
- package/dist/chunks/SubmenuPopover.map +1 -1
- package/dist/chunks/Switch +47 -48
- package/dist/chunks/Switch.map +1 -1
- package/dist/chunks/Tab +1 -2
- package/dist/chunks/Tab.map +1 -1
- package/dist/chunks/TabList +1 -2
- package/dist/chunks/TabList.map +1 -1
- package/dist/chunks/TabPanel +1 -2
- package/dist/chunks/TabPanel.map +1 -1
- package/dist/chunks/TabPanels +1 -2
- package/dist/chunks/TabPanels.map +1 -1
- package/dist/chunks/Tabs +1 -2
- package/dist/chunks/Tabs.map +1 -1
- package/dist/chunks/Tag +1 -2
- package/dist/chunks/Tag.map +1 -1
- package/dist/chunks/ThemeSelector +109 -85
- package/dist/chunks/ThemeSelector.map +1 -1
- package/dist/chunks/Toolbar +0 -1
- package/dist/chunks/Toolbar.map +1 -1
- package/dist/chunks/Tooltip +0 -1
- package/dist/chunks/Tooltip.map +1 -1
- package/dist/chunks/base +1 -2
- package/dist/chunks/compiler-runtime +2 -3
- package/dist/chunks/context +1 -2
- package/dist/chunks/core +3 -6
- package/dist/chunks/core.map +1 -1
- package/dist/chunks/core2 +0 -1
- package/dist/chunks/core2.map +1 -1
- package/dist/chunks/core3 +2 -5
- package/dist/chunks/core3.map +1 -1
- package/dist/chunks/core4 +0 -1
- package/dist/chunks/core4.map +1 -1
- package/dist/chunks/core5 +0 -1
- package/dist/chunks/core5.map +1 -1
- package/dist/chunks/core6 +9 -10
- package/dist/chunks/core6.map +1 -1
- package/dist/chunks/core7 +2 -5
- package/dist/chunks/core7.map +1 -1
- package/dist/chunks/core8 +1 -3
- package/dist/chunks/core8.map +1 -1
- package/dist/chunks/core9 +0 -1
- package/dist/chunks/core9.map +1 -1
- package/dist/chunks/navContext +1 -2
- package/dist/chunks/navContext.map +1 -1
- package/dist/chunks/tapTarget +0 -1
- package/dist/chunks/tapTarget.map +1 -1
- package/dist/chunks/types +1 -2
- package/dist/chunks/useHover +187 -225
- package/dist/chunks/useHover.map +1 -1
- package/dist/chunks/useSplash +1 -2
- package/dist/chunks/useSplash.map +1 -1
- package/dist/components/AppBar/AppBar/index.js +1 -2
- package/dist/components/AppBar/AppBarAction/index.js +1 -2
- package/dist/components/AppBar/AppBarAvatar/index.js +1 -2
- package/dist/components/AppBar/AppBarHeadline/index.js +1 -2
- package/dist/components/AppBar/AppBarState/index.js +2 -4
- package/dist/components/AppBar/AppBarState/index.js.map +1 -1
- package/dist/components/AppBar/core/index.js +2 -4
- package/dist/components/AppBar/core/index.js.map +1 -1
- package/dist/components/Button/Button/index.js +1 -2
- package/dist/components/Button/Button/index.js.map +1 -1
- package/dist/components/Button/ButtonGroups/ButtonGroup/index.js +1 -2
- package/dist/components/Button/ButtonGroups/ButtonGroupContext/index.js +3 -6
- package/dist/components/Button/ButtonGroups/ButtonGroupContext/index.js.map +1 -1
- package/dist/components/Button/ButtonGroups/ConnectedButton/index.js +1 -2
- package/dist/components/Button/ButtonGroups/ConnectedButtonGroup/index.js +1 -2
- package/dist/components/Button/IconButton/index.js +1 -2
- package/dist/components/Button/LinkButton/index.js +1 -2
- package/dist/components/Button/LinkButton/index.js.map +1 -1
- package/dist/components/Button/LinkIconButton/index.js +1 -2
- package/dist/components/Button/SplitButton/SplitButton/index.js +1 -2
- package/dist/components/Button/SplitButton/SplitButtonContext/index.js +2 -4
- package/dist/components/Button/SplitButton/SplitButtonContext/index.js.map +1 -1
- package/dist/components/Button/SplitButton/SplitButtonPrimary/index.js +1 -2
- package/dist/components/Button/SplitButton/SplitButtonTrigger/index.js +1 -2
- package/dist/components/Button/SplitButton/core/index.js +1 -2
- package/dist/components/Button/ToggleButton/index.js +1 -2
- package/dist/components/Button/ToggleButton/index.js.map +1 -1
- package/dist/components/Button/ToggleIconButton/index.js +1 -2
- package/dist/components/Button/core/index.js +1 -2
- package/dist/components/Calendar/BaseCalendar/index.js +1 -2
- package/dist/components/Calendar/Calendar/index.js +1 -2
- package/dist/components/Calendar/Calendar/index.js.map +1 -1
- package/dist/components/Calendar/CalendarCell/index.js +1 -2
- package/dist/components/Calendar/CalendarGrid/index.js +1 -2
- package/dist/components/Calendar/CalendarMenuItem/index.js +1 -2
- package/dist/components/Calendar/CalendarMonthMenu/index.js +1 -2
- package/dist/components/Calendar/CalendarMonthMenu/index.js.map +1 -1
- package/dist/components/Calendar/CalendarYearMenu/index.js +1 -2
- package/dist/components/Calendar/CalendarYearMenu/index.js.map +1 -1
- package/dist/components/Calendar/RangeCalendar/index.js +1 -2
- package/dist/components/Calendar/RangeCalendar/index.js.map +1 -1
- package/dist/components/Calendar/core/index.js +1 -2
- package/dist/components/Card/CardIcon/index.js +1 -2
- package/dist/components/Decorators/GridBackgroundDecorator/index.js +1 -2
- package/dist/components/Decorators/RadialGlowDecorator/index.js +1 -2
- package/dist/components/Dialog/ActionDialog/index.js +1 -2
- package/dist/components/Dialog/Dialog/index.js +1 -2
- package/dist/components/Dialog/Modal/index.js +1 -2
- package/dist/components/Dialog/ModalOverlay/index.js +1 -2
- package/dist/components/Dialog/core/index.js +2 -4
- package/dist/components/Dialog/core/index.js.map +1 -1
- package/dist/components/Disclosure/Disclosure/index.js +1 -2
- package/dist/components/Disclosure/DisclosureGroup/index.js +1 -2
- package/dist/components/Disclosure/DisclosureHeader/index.js +1 -2
- package/dist/components/Disclosure/DisclosurePanel/index.js +1 -2
- package/dist/components/Disclosure/context/index.js +1 -2
- package/dist/components/Disclosure/context/index.js.map +1 -1
- package/dist/components/Divider/index.js +1 -2
- package/dist/components/Icon/index.js +1 -2
- package/dist/components/Input/CharacterCount/index.js +1 -2
- package/dist/components/Input/CharacterCount/index.js.map +1 -1
- package/dist/components/Input/Checkbox/Checkbox.d.ts +14 -3
- package/dist/components/Input/Checkbox/CheckboxGroup.d.ts +3 -3
- package/dist/components/Input/Checkbox/context.d.ts +2 -4
- package/dist/components/Input/Checkbox/types.d.ts +11 -26
- package/dist/components/Input/DateField/index.js +1 -2
- package/dist/components/Input/DatePicker/DatePicker/index.js +1 -2
- package/dist/components/Input/DatePicker/DateRangePicker/index.js +1 -2
- package/dist/components/Input/DatePicker/core/index.js +1 -2
- package/dist/components/Input/Description/index.js +1 -2
- package/dist/components/Input/Description/index.js.map +1 -1
- package/dist/components/Input/FieldError/index.js +1 -2
- package/dist/components/Input/Input/index.js +1 -2
- package/dist/components/Input/Label/index.js +1 -2
- package/dist/components/Input/Label/index.js.map +1 -1
- package/dist/components/Input/Radio/Radio.d.ts +5 -4
- package/dist/components/Input/Radio/RadioGroup.d.ts +2 -2
- package/dist/components/Input/Radio/context.d.ts +2 -4
- package/dist/components/Input/Radio/index.js +1 -2
- package/dist/components/Input/Radio/types.d.ts +11 -25
- package/dist/components/Input/SearchField/index.js +1 -2
- package/dist/components/Input/Select/ComboBox/index.js +1 -2
- package/dist/components/Input/Select/ComboBoxPopover/index.js +1 -2
- package/dist/components/Input/Select/ComboBoxTrigger/index.js +1 -2
- package/dist/components/Input/Select/Select/index.js +1 -2
- package/dist/components/Input/Select/SelectItem/index.js +1 -2
- package/dist/components/Input/Select/SelectList/index.js +1 -2
- package/dist/components/Input/Select/SelectListSection/index.js +1 -2
- package/dist/components/Input/Select/SelectListSection/index.js.map +1 -1
- package/dist/components/Input/Select/SelectListSectionHeader/index.js +1 -2
- package/dist/components/Input/Select/SelectListSectionHeader/index.js.map +1 -1
- package/dist/components/Input/Select/SelectPopover/index.js +1 -2
- package/dist/components/Input/Select/SelectTrigger/index.js +1 -2
- package/dist/components/Input/Slider/CenteredSlider/index.js +1 -2
- package/dist/components/Input/Slider/CenteredSlider/types.d.ts +1 -1
- package/dist/components/Input/Slider/RangeSlider/RangeSlider.d.ts +1 -1
- package/dist/components/Input/Slider/RangeSlider/index.js +1 -2
- package/dist/components/Input/Slider/RangeSlider/index.js.map +1 -1
- package/dist/components/Input/Slider/RangeSlider/types.d.ts +1 -1
- package/dist/components/Input/Slider/Slider/Slider.d.ts +1 -1
- package/dist/components/Input/Slider/Slider/index.js +1 -2
- package/dist/components/Input/Slider/Slider/types.d.ts +1 -1
- package/dist/components/Input/Slider/SliderOutput/SliderOutput.d.ts +2 -2
- package/dist/components/Input/Slider/SliderOutput/index.js +1 -2
- package/dist/components/Input/Slider/SliderStops/index.js +1 -2
- package/dist/components/Input/Slider/SliderStops/types.d.ts +1 -1
- package/dist/components/Input/Slider/SliderThumb/SliderThumb.d.ts +2 -2
- package/dist/components/Input/Slider/SliderThumb/context.d.ts +2 -2
- package/dist/components/Input/Slider/SliderThumb/index.js +1 -2
- package/dist/components/Input/Slider/core/index.js +1 -2
- package/dist/components/Input/Slider/core/slider.d.ts +3 -3
- package/dist/components/Input/Switch/Switch.d.ts +20 -3
- package/dist/components/Input/Switch/index.js +1 -2
- package/dist/components/Input/Switch/types.d.ts +11 -12
- package/dist/components/Input/TextArea/index.js +1 -2
- package/dist/components/Input/TimeField/index.js +1 -2
- package/dist/components/Input/core/index.js +1 -2
- package/dist/components/Input/hooks/index.js +1 -2
- package/dist/components/List/ListAction/ListAction.d.ts +2 -2
- package/dist/components/List/ListAction/index.js +1 -2
- package/dist/components/List/ListAvatar/ListAvatar.d.ts +2 -2
- package/dist/components/List/ListAvatar/index.js +1 -2
- package/dist/components/List/ListBox/ListBox.d.ts +3 -3
- package/dist/components/List/ListBox/index.js +1 -2
- package/dist/components/List/ListBox/types.d.ts +14 -2
- package/dist/components/List/ListIcon/ListIcon.d.ts +2 -2
- package/dist/components/List/ListIcon/index.js +1 -2
- package/dist/components/List/ListItem/ListItem.d.ts +2 -1
- package/dist/components/List/ListItem/index.js +1 -2
- package/dist/components/List/ListItem/types.d.ts +17 -4
- package/dist/components/List/ListLabelText/ListLabelText.d.ts +2 -2
- package/dist/components/List/ListLabelText/index.js +1 -2
- package/dist/components/List/ListMedia/ListMedia.d.ts +1 -1
- package/dist/components/List/ListMedia/index.js +1 -2
- package/dist/components/List/ListMedia/types.d.ts +2 -2
- package/dist/components/List/ListOverlineText/ListOverlineText.d.ts +2 -2
- package/dist/components/List/ListOverlineText/index.js +1 -2
- package/dist/components/List/ListSupportingText/ListSupportingText.d.ts +2 -2
- package/dist/components/List/ListSupportingText/index.js +1 -2
- package/dist/components/List/ListTrailingText/ListTrailingText.d.ts +2 -2
- package/dist/components/List/ListTrailingText/index.js +1 -2
- package/dist/components/List/core/context.d.ts +18 -0
- package/dist/components/List/core/index.d.ts +2 -0
- package/dist/components/List/core/index.js +9 -0
- package/dist/components/List/core/index.js.map +1 -0
- package/dist/components/List/core/selectionIndicator.d.ts +8 -0
- package/dist/components/List/index.d.ts +1 -0
- package/dist/components/List/index.js +12 -11
- package/dist/components/Loader/Loader.d.ts +2 -2
- package/dist/components/Loader/index.js +1 -2
- package/dist/components/Menu/Menu/index.js +1 -2
- package/dist/components/Menu/Menu/index.js.map +1 -1
- package/dist/components/Menu/Menu/types.d.ts +3 -3
- package/dist/components/Menu/MenuItem/MenuItem.d.ts +2 -2
- package/dist/components/Menu/MenuItem/index.js +1 -2
- package/dist/components/Menu/MenuItem/index.js.map +1 -1
- package/dist/components/Menu/MenuItem/types.d.ts +3 -3
- package/dist/components/Menu/MenuPopover/MenuPopover.d.ts +3 -3
- package/dist/components/Menu/MenuPopover/index.js +1 -2
- package/dist/components/Menu/MenuSection/MenuSection.d.ts +4 -4
- package/dist/components/Menu/MenuSection/index.js +1 -2
- package/dist/components/Menu/MenuSection/index.js.map +1 -1
- package/dist/components/Menu/MenuSectionHeader/MenuSectionHeader.d.ts +2 -2
- package/dist/components/Menu/MenuSectionHeader/index.js +1 -2
- package/dist/components/Menu/MenuSectionHeader/index.js.map +1 -1
- package/dist/components/Menu/MenuShortcut/MenuShortcut.d.ts +2 -2
- package/dist/components/Menu/MenuShortcut/index.js +1 -2
- package/dist/components/Menu/MenuShortcut/index.js.map +1 -1
- package/dist/components/Menu/MenuTrailingText/MenuTrailingText.d.ts +2 -2
- package/dist/components/Menu/MenuTrailingText/index.js +1 -2
- package/dist/components/Menu/MenuTrailingText/index.js.map +1 -1
- package/dist/components/Menu/MenuTrigger/MenuTrigger.d.ts +3 -3
- package/dist/components/Menu/MenuTrigger/index.js +1 -2
- package/dist/components/Menu/MenuTrigger/index.js.map +1 -1
- package/dist/components/Menu/SubmenuPopover/SubmenuPopover.d.ts +1 -1
- package/dist/components/Menu/SubmenuPopover/index.js +1 -2
- package/dist/components/Menu/context/context.d.ts +1 -1
- package/dist/components/Menu/context/index.js +2 -4
- package/dist/components/Menu/context/index.js.map +1 -1
- package/dist/components/Menu/context/useMenuConfigContext.d.ts +1 -1
- package/dist/components/Menu/core/color.d.ts +1 -1
- package/dist/components/Menu/core/index.js +1 -2
- package/dist/components/Menu/core/layout.d.ts +1 -1
- package/dist/components/Navigation/Navigation/Navigation.d.ts +1 -1
- package/dist/components/Navigation/Navigation/navContext.d.ts +1 -1
- package/dist/components/Navigation/Navigation/navRenderingContext.d.ts +2 -2
- package/dist/components/Navigation/Navigation/types.d.ts +3 -3
- package/dist/components/Navigation/NavigationItem/NavigationButton/NavigationButton.d.ts +1 -1
- package/dist/components/Navigation/NavigationItem/NavigationButton/index.js +1 -2
- package/dist/components/Navigation/NavigationItem/NavigationButton/index.js.map +1 -1
- package/dist/components/Navigation/NavigationItem/NavigationButton/types.d.ts +2 -2
- package/dist/components/Navigation/NavigationItem/NavigationItemIconRenderer/NavigationItemIconRenderer.d.ts +1 -1
- package/dist/components/Navigation/NavigationItem/NavigationItemIconRenderer/index.js +1 -2
- package/dist/components/Navigation/NavigationItem/NavigationItemIconRenderer/index.js.map +1 -1
- package/dist/components/Navigation/NavigationItem/NavigationLink/index.js +1 -2
- package/dist/components/Navigation/NavigationItem/NavigationLink/index.js.map +1 -1
- package/dist/components/Navigation/NavigationItem/NavigationLink/types.d.ts +2 -2
- package/dist/components/Navigation/NavigationItem/core/index.js +1 -2
- package/dist/components/Navigation/NavigationItem/core/navigationItem.d.ts +2 -2
- package/dist/components/Navigation/NavigationScrollContainer/NavigationScrollContainer.d.ts +2 -2
- package/dist/components/Navigation/NavigationScrollContainer/index.js +1 -2
- package/dist/components/Navigation/NavigationSection/NavigationSection/NavigationSection.d.ts +1 -1
- package/dist/components/Navigation/NavigationSection/NavigationSection/index.js +1 -2
- package/dist/components/Navigation/NavigationSection/NavigationSectionLabel/NavigationSectionLabel.d.ts +2 -2
- package/dist/components/Navigation/NavigationSection/NavigationSectionLabel/index.js +1 -2
- package/dist/components/Navigation/NavigationState/NavigationState.d.ts +2 -2
- package/dist/components/Navigation/NavigationState/context.d.ts +2 -2
- package/dist/components/Navigation/NavigationState/index.js +2 -4
- package/dist/components/Navigation/NavigationState/index.js.map +1 -1
- package/dist/components/Navigation/SubNavigation/SubNavigation/SubNavigation.d.ts +2 -2
- package/dist/components/Navigation/SubNavigation/SubNavigation/index.js +1 -2
- package/dist/components/Navigation/SubNavigation/SubNavigation/index.js.map +1 -1
- package/dist/components/Navigation/SubNavigation/SubNavigationTrigger/SubNavigationTrigger.d.ts +3 -3
- package/dist/components/Navigation/SubNavigation/SubNavigationTrigger/index.js +1 -2
- package/dist/components/Navigation/SubNavigation/SubNavigationTrigger/index.js.map +1 -1
- package/dist/components/Navigation/core/index.js +1 -2
- package/dist/components/Navigation/core/navigation.d.ts +2 -2
- package/dist/components/Navigation/core/navigationInfo.d.ts +2 -2
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/index.js +1 -2
- package/dist/components/Sheets/BottomSheet/BottomSheet/index.d.ts +2 -0
- package/dist/components/Sheets/BottomSheet/BottomSheet/index.js +1 -0
- package/dist/components/Sheets/{BottomSheetModal → BottomSheet/BottomSheetModal}/context.d.ts +1 -1
- package/dist/components/Sheets/BottomSheet/BottomSheetModal/index.js +1 -0
- package/dist/components/Sheets/{BottomSheetModal → BottomSheet/BottomSheetModal}/types.d.ts +1 -1
- package/dist/components/Sheets/BottomSheet/index.d.ts +1 -1
- package/dist/components/Sheets/BottomSheet/index.js +3 -2
- package/dist/components/Sheets/SideSheet/SideSheet/index.d.ts +3 -0
- package/dist/components/Sheets/SideSheet/SideSheet/index.js +1 -0
- package/dist/components/Sheets/{SideSheetModal → SideSheet/SideSheetModal}/context.d.ts +1 -1
- package/dist/components/Sheets/SideSheet/SideSheetModal/index.js +1 -0
- package/dist/components/Sheets/{SideSheetModal → SideSheet/SideSheetModal}/types.d.ts +1 -1
- package/dist/components/Sheets/SideSheet/index.d.ts +1 -2
- package/dist/components/Sheets/SideSheet/index.js +3 -2
- package/dist/components/Sheets/index.d.ts +0 -2
- package/dist/components/Snackbar/index.js +1 -2
- package/dist/components/Splash/index.js +1 -2
- package/dist/components/Tabs/Tab/index.js +1 -2
- package/dist/components/Tabs/TabList/index.js +1 -2
- package/dist/components/Tabs/TabPanel/index.js +1 -2
- package/dist/components/Tabs/TabPanels/index.js +1 -2
- package/dist/components/Tabs/Tabs/index.js +1 -2
- package/dist/components/Tag/index.js +1 -2
- package/dist/components/ThemeSelector/ThemeItem.d.ts +7 -1
- package/dist/components/ThemeSelector/ThemeSelector.d.ts +2 -2
- package/dist/components/ThemeSelector/core.d.ts +21 -11
- package/dist/components/ThemeSelector/index.js +1 -2
- package/dist/components/ThemeSelector/types.d.ts +41 -0
- package/dist/components/Toolbar/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltip/RichTooltip.d.ts +4 -4
- package/dist/components/Tooltip/RichTooltip/RichTooltip/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltipActions/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltipInfo/RichTooltipInfo/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltipInfo/RichTooltipSubhead/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltipInfo/RichTooltipSubhead/index.js.map +1 -1
- package/dist/components/Tooltip/RichTooltip/RichTooltipInfo/RichTooltipText/index.js +1 -2
- package/dist/components/Tooltip/RichTooltip/RichTooltipInfo/RichTooltipText/index.js.map +1 -1
- package/dist/components/Tooltip/RichTooltip/RichTooltipTrigger/RichTooltipTrigger.d.ts +53 -0
- package/dist/components/Tooltip/RichTooltip/RichTooltipTrigger/index.d.ts +1 -0
- package/dist/components/Tooltip/RichTooltip/RichTooltipTrigger/index.js +11 -0
- package/dist/components/Tooltip/RichTooltip/RichTooltipTrigger/index.js.map +1 -0
- package/dist/components/Tooltip/RichTooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/RichTooltip/index.js +2 -1
- package/dist/components/Tooltip/Tooltip/index.js +1 -2
- package/dist/components/Tooltip/TooltipTrigger/index.js +1 -2
- package/dist/components/Tooltip/index.js +4 -3
- package/dist/index.js +111 -111
- package/dist/index.js.map +1 -1
- package/dist/preview/AppBar/AppBar.d.ts +2 -0
- package/dist/preview/AppBar/index.d.ts +1 -0
- package/dist/preview/BottomSheet/BottomSheet.d.ts +6 -0
- package/dist/preview/BottomSheet/index.d.ts +1 -0
- package/dist/preview/Button/Button.d.ts +2 -0
- package/dist/preview/Button/index.d.ts +1 -0
- package/dist/preview/ButtonGroup/ButtonGroup.d.ts +2 -0
- package/dist/preview/ButtonGroup/index.d.ts +1 -0
- package/dist/preview/Calendar/Calendar.d.ts +2 -0
- package/dist/preview/Calendar/index.d.ts +1 -0
- package/dist/preview/Card/Card.d.ts +2 -0
- package/dist/preview/Card/index.d.ts +1 -0
- package/dist/preview/CenteredSlider/CenteredSlider.d.ts +2 -0
- package/dist/preview/CenteredSlider/index.d.ts +1 -0
- package/dist/preview/Checkbox/Checkbox.d.ts +2 -0
- package/dist/preview/Checkbox/index.d.ts +1 -0
- package/dist/preview/Config/Config.d.ts +8 -0
- package/dist/preview/Config/index.d.ts +1 -0
- package/dist/preview/ConnectedButtonGroup/ConnectedButtonGroup.d.ts +2 -0
- package/dist/preview/ConnectedButtonGroup/index.d.ts +1 -0
- package/dist/preview/DateField/DateField.d.ts +6 -0
- package/dist/preview/DateField/index.d.ts +1 -0
- package/dist/preview/DatePicker/DatePicker.d.ts +2 -0
- package/dist/preview/DatePicker/index.d.ts +1 -0
- package/dist/preview/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/dist/preview/DateRangePicker/index.d.ts +1 -0
- package/dist/preview/Decorators/Decorators.d.ts +2 -0
- package/dist/preview/Decorators/index.d.ts +1 -0
- package/dist/preview/Dialog/Dialog.d.ts +2 -0
- package/dist/preview/Dialog/index.d.ts +1 -0
- package/dist/preview/Disclosure/Disclosure.d.ts +2 -0
- package/dist/preview/Disclosure/index.d.ts +1 -0
- package/dist/preview/Gradients/Gradients.d.ts +6 -0
- package/dist/preview/Gradients/index.d.ts +1 -0
- package/dist/preview/Icon/Icon.d.ts +2 -0
- package/dist/preview/Icon/index.d.ts +1 -0
- package/dist/preview/IconButton/IconButton.d.ts +2 -0
- package/dist/preview/IconButton/index.d.ts +1 -0
- package/dist/preview/Input/Input.d.ts +6 -0
- package/dist/preview/Input/index.d.ts +1 -0
- package/dist/preview/Link/Link.d.ts +2 -0
- package/dist/preview/Link/index.d.ts +1 -0
- package/dist/preview/List/List.d.ts +2 -0
- package/dist/preview/List/index.d.ts +1 -0
- package/dist/preview/Menu/Menu.d.ts +3 -0
- package/dist/preview/Menu/index.d.ts +1 -0
- package/dist/preview/Navigation/Navigation.d.ts +3 -0
- package/dist/preview/Navigation/index.d.ts +1 -0
- package/dist/preview/Radio/Radio.d.ts +2 -0
- package/dist/preview/Radio/index.d.ts +1 -0
- package/dist/preview/RangeCalendar/RangeCalendar.d.ts +2 -0
- package/dist/preview/RangeCalendar/index.d.ts +1 -0
- package/dist/preview/RangeSlider/RangeSlider.d.ts +2 -0
- package/dist/preview/RangeSlider/index.d.ts +1 -0
- package/dist/preview/SearchField/SearchField.d.ts +2 -0
- package/dist/preview/SearchField/index.d.ts +1 -0
- package/dist/preview/Select/Select.d.ts +2 -0
- package/dist/preview/Select/index.d.ts +1 -0
- package/dist/preview/SideSheet/SideSheet.d.ts +7 -0
- package/dist/preview/SideSheet/index.d.ts +1 -0
- package/dist/preview/Slider/Slider.d.ts +2 -0
- package/dist/preview/Slider/index.d.ts +1 -0
- package/dist/preview/Snackbar/Snackbar.d.ts +2 -0
- package/dist/preview/Snackbar/index.d.ts +1 -0
- package/dist/preview/SplitButton/SplitButton.d.ts +10 -0
- package/dist/preview/SplitButton/index.d.ts +1 -0
- package/dist/preview/Switch/Switch.d.ts +2 -0
- package/dist/preview/Switch/index.d.ts +1 -0
- package/dist/preview/Tabs/Tabs.d.ts +7 -0
- package/dist/preview/Tabs/index.d.ts +1 -0
- package/dist/preview/Tags/Tags.d.ts +2 -0
- package/dist/preview/Tags/index.d.ts +1 -0
- package/dist/preview/TextArea/TextArea.d.ts +6 -0
- package/dist/preview/TextArea/index.d.ts +1 -0
- package/dist/preview/ThemeSelector/ThemeSelector.d.ts +2 -0
- package/dist/preview/ThemeSelector/index.d.ts +1 -0
- package/dist/preview/TimeField/TimeField.d.ts +6 -0
- package/dist/preview/TimeField/index.d.ts +1 -0
- package/dist/preview/Toolbar/Toolbar.d.ts +10 -0
- package/dist/preview/Toolbar/index.d.ts +1 -0
- package/dist/preview/Tooltip/Tooltip.d.ts +2 -0
- package/dist/preview/Tooltip/index.d.ts +1 -0
- package/package.json +13 -13
- package/dist/components/Sheets/BottomSheetModal/index.js +0 -2
- package/dist/components/Sheets/SideSheetModal/index.js +0 -2
- /package/dist/components/Sheets/BottomSheet/{BottomSheet.d.ts → BottomSheet/BottomSheet.d.ts} +0 -0
- /package/dist/components/Sheets/BottomSheet/{types.d.ts → BottomSheet/types.d.ts} +0 -0
- /package/dist/components/Sheets/{BottomSheetModal → BottomSheet/BottomSheetModal}/BottomSheetModal.d.ts +0 -0
- /package/dist/components/Sheets/{BottomSheetModal → BottomSheet/BottomSheetModal}/index.d.ts +0 -0
- /package/dist/components/Sheets/SideSheet/{SideSheet.d.ts → SideSheet/SideSheet.d.ts} +0 -0
- /package/dist/components/Sheets/SideSheet/{SideSheetDialog.d.ts → SideSheet/SideSheetDialog.d.ts} +0 -0
- /package/dist/components/Sheets/SideSheet/{types.d.ts → SideSheet/types.d.ts} +0 -0
- /package/dist/components/Sheets/{SideSheetModal → SideSheet/SideSheetModal}/SideSheetModal.d.ts +0 -0
- /package/dist/components/Sheets/{SideSheetModal → SideSheet/SideSheetModal}/index.d.ts +0 -0
package/dist/chunks/Tabs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs","names":["Tabs","_c","clsx","styles","AriaTabs","require_compiler_runtime","clsx$1","import_compiler_runtime","tabs_module_default","Tabs$1","$","className","props","t0","t1","renderProps","t2","Tabs"],"sources":["../../src/components/Tabs/Tabs/tabs.module.css","../../src/components/Tabs/Tabs/Tabs.tsx"],"sourcesContent":["@layer adgytec.comps {\n .tabs {\n display: grid;\n gap: var(--md-sys-layout-space-16);\n\n &[data-orientation=\"vertical\"] {\n grid-template-columns: auto 1fr;\n }\n\n &[data-orientation=\"horizontal\"] {\n grid-template-rows: auto 1fr;\n }\n }\n}\n","import clsx from \"clsx\";\nimport { Tabs as AriaTabs } from \"react-aria-components\";\nimport styles from \"./tabs.module.css\";\n\n/**\n * Props for the {@link Tabs} component.\n * Extends React Aria Components `Tabs` props.\n */\nexport interface TabsProps\n extends React.ComponentPropsWithRef<typeof AriaTabs> {}\n\n/**\n * Main container for organizing content into high-level categories based on\n * [Material 3 Tabs](https://m3.material.io/components/tabs/overview).\n *\n * Extends React Aria Components `Tabs` to manage tab selection state, keyboard navigation,\n * and layout orientation (horizontal or vertical).\n *\n * @example\n * ```tsx\n * import {\n * Tab,\n * TabList,\n * TabPanel,\n * TabPanels,\n * Tabs,\n * } from \"@adgytec/web-ui-components\";\n * import { Home, Settings, User } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <Tabs defaultSelectedKey=\"home\">\n * <TabList aria-label=\"Navigation\">\n * <Tab id=\"home\" label=\"Home\" icon={Home} />\n * <Tab id=\"profile\" label=\"Profile\" icon={User} />\n * <Tab id=\"settings\" label=\"Settings\" icon={Settings} />\n * </TabList>\n * <TabPanels>\n * <TabPanel id=\"home\">Home content goes here.</TabPanel>\n * <TabPanel id=\"profile\">Profile content goes here.</TabPanel>\n * <TabPanel id=\"settings\">Settings content goes here.</TabPanel>\n * </TabPanels>\n * </Tabs>\n * );\n * }\n * ```\n */\nexport const Tabs: React.FC<TabsProps> = ({ className, ...props }) => {\n return (\n <AriaTabs\n className={(renderProps) =>\n clsx(\n styles[\"tabs\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n />\n );\n};\n"],"mappings":";;;;;4CC+CaA,KAA4B,MAAA;CAAA,IAAAU,KAAA,GAAAT,EAAAA,EAAAA,CAAA,CAAA,GAAAU,GAAAC;CAAA,AAAAF,EAAA,OAAAG,KAAwB,IAAAH,EAAA,IAAA,IAAAA,EAAA,OAAvB,eAAA,GAAAE,KAAAC,GAAuB,EAAA,KAAAA,GAAA,EAAA,KAAAF,GAAA,EAAA,KAAAC;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAC,IAShD,IAAAD,EAAA,MANM,KAAA,MACPR,EACIC,EAAM,MACN,OAAOQ,KAAc,aACfA,EAAUI,CACF,IAFdJ,CAGJ,GAAC,EAAA,KAAAA,GAAA,EAAA,KAAAG;CAAA,IAAAE;CAGP,OAHON,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAPT,IAAA,kBAACV,GAAD;EACe,WAAAU;EAMN,GAEDF;CAAK,CAAA,GACX,EAAA,KAAAA,GAAA,EAAA,KAAAE,GAAA,EAAA,KAAAE,KAAA,IAAAN,EAAA,IAVFM;AAUE"}
|
|
1
|
+
{"version":3,"file":"Tabs","names":["Tabs","_c","clsx","styles","AriaTabs","require_compiler_runtime","clsx$1","import_compiler_runtime","tabs_module_default","Tabs$1","$","className","props","t0","t1","renderProps","t2","Tabs"],"sources":["../../src/components/Tabs/Tabs/tabs.module.css","../../src/components/Tabs/Tabs/Tabs.tsx"],"sourcesContent":["@layer adgytec.comps {\n .tabs {\n display: grid;\n gap: var(--md-sys-layout-space-16);\n\n &[data-orientation=\"vertical\"] {\n grid-template-columns: auto 1fr;\n }\n\n &[data-orientation=\"horizontal\"] {\n grid-template-rows: auto 1fr;\n }\n }\n}\n","import clsx from \"clsx\";\nimport { Tabs as AriaTabs } from \"react-aria-components\";\nimport styles from \"./tabs.module.css\";\n\n/**\n * Props for the {@link Tabs} component.\n * Extends React Aria Components `Tabs` props.\n */\nexport interface TabsProps\n extends React.ComponentPropsWithRef<typeof AriaTabs> {}\n\n/**\n * Main container for organizing content into high-level categories based on\n * [Material 3 Tabs](https://m3.material.io/components/tabs/overview).\n *\n * Extends React Aria Components `Tabs` to manage tab selection state, keyboard navigation,\n * and layout orientation (horizontal or vertical).\n *\n * @example\n * ```tsx\n * import {\n * Tab,\n * TabList,\n * TabPanel,\n * TabPanels,\n * Tabs,\n * } from \"@adgytec/web-ui-components\";\n * import { Home, Settings, User } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <Tabs defaultSelectedKey=\"home\">\n * <TabList aria-label=\"Navigation\">\n * <Tab id=\"home\" label=\"Home\" icon={Home} />\n * <Tab id=\"profile\" label=\"Profile\" icon={User} />\n * <Tab id=\"settings\" label=\"Settings\" icon={Settings} />\n * </TabList>\n * <TabPanels>\n * <TabPanel id=\"home\">Home content goes here.</TabPanel>\n * <TabPanel id=\"profile\">Profile content goes here.</TabPanel>\n * <TabPanel id=\"settings\">Settings content goes here.</TabPanel>\n * </TabPanels>\n * </Tabs>\n * );\n * }\n * ```\n */\nexport const Tabs: React.FC<TabsProps> = ({ className, ...props }) => {\n return (\n <AriaTabs\n className={(renderProps) =>\n clsx(\n styles[\"tabs\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n />\n );\n};\n"],"mappings":";;;;;A,4CC+CaA,KAA4B,MAAA;CAAA,IAAAU,KAAA,GAAAT,EAAAA,EAAAA,CAAA,CAAA,GAAAU,GAAAC;CAAA,AAAAF,EAAA,OAAAG,KAAwB,IAAAH,EAAA,IAAA,IAAAA,EAAA,OAAvB,eAAA,GAAAE,KAAAC,GAAuB,EAAA,KAAAA,GAAA,EAAA,KAAAF,GAAA,EAAA,KAAAC;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAC,IAShD,IAAAD,EAAA,MANM,KAAA,MACPR,EACIC,EAAM,MACN,OAAOQ,KAAc,aACfA,EAAUI,CACF,IAFdJ,CAGJ,GAAC,EAAA,KAAAA,GAAA,EAAA,KAAAG;CAAA,IAAAE;CAGP,OAHON,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAPT,IAAA,kBAACV,GAAD;EACe,WAAAU;EAMN,GAEDF;CAAK,CAAA,GACX,EAAA,KAAAA,GAAA,EAAA,KAAAE,GAAA,EAAA,KAAAE,KAAA,IAAAN,EAAA,IAVFM;AAUE"}
|
package/dist/chunks/Tag
CHANGED
|
@@ -6,7 +6,7 @@ import a from "clsx";
|
|
|
6
6
|
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
7
|
import { Tag as l } from "react-aria-components";
|
|
8
8
|
import { Check as u, X as d } from "lucide-react";
|
|
9
|
-
import '../assets/Tag.css'
|
|
9
|
+
import '../assets/Tag.css';// src/components/Tag/core.ts
|
|
10
10
|
var f = 18, p = 24, m = {
|
|
11
11
|
tag: "_tag_oartz_15",
|
|
12
12
|
label: "_label_oartz_184",
|
|
@@ -46,7 +46,6 @@ var f = 18, p = 24, m = {
|
|
|
46
46
|
] })
|
|
47
47
|
});
|
|
48
48
|
};
|
|
49
|
-
//#endregion
|
|
50
49
|
export { p as n, f as r, h as t };
|
|
51
50
|
|
|
52
51
|
//# sourceMappingURL=Tag.map
|
package/dist/chunks/Tag.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag","names":["Tag","AriaTag","clsx","styles","_Fragment","typography","useSplash","clsx$1","TagIconSize","AvatarSize","tag_module_default","Tag$1","label","props","onPress","Tag","handlePress","\"tag\"","className","renderProps","avatar","icon","Fragment","splashInfo","Splash","isDisabled","isSelected","Icon","Check","\"label\"","allowsRemoving","IconButton","X"],"sources":["../../src/components/Tag/core.ts","../../src/components/Tag/tag.module.css","../../src/components/Tag/Tag.tsx"],"sourcesContent":["/**\n * Default icon size (in pixels) rendered inside a {@link Tag}.\n */\nexport const TagIconSize = 18;\n\n/**\n * Diameter (in pixels) for avatar elements rendered inside a {@link Tag}.\n */\nexport const AvatarSize = 24;\n","/* configurable tokens\n*\n* --md-chip-background-color\n* --md-chip-selected-background-color\n*\n* --md-chip-icon-color\n* --md-chip-selected-icon-color\n*\n* --md-chip-label-color\n* --md-chip-selected-label-color\n*\n* configurable tokens end */\n\n@layer adgytec.overrides {\n .tag {\n [data-visual-button] {\n --focus-indicator-offset: calc(-4 * var(--dp, 1px));\n }\n }\n}\n\n@layer adgytec.comps {\n .tag {\n --_md-chip-background-color: var(\n --md-chip-background-color,\n var(--md-sys-color-surface-container-low)\n );\n --_md-chip-selected-background-color: var(\n --md-chip-selected-background-color,\n var(--md-sys-color-secondary-container)\n );\n --_md-chip-icon-color: var(\n --md-chip-icon-color,\n var(--md-sys-color-primary)\n );\n --_md-chip-selected-icon-color: var(\n --md-chip-selected-icon-color,\n var(--md-sys-color-on-secondary-container)\n );\n --_md-chip-label-color: var(\n --md-chip-label-color,\n var(--md-sys-color-on-surface-variant)\n );\n --_md-chip-selected-label-color: var(\n --md-chip-selected-label-color,\n var(--md-sys-color-on-secondary-container)\n );\n\n /* derived */\n --_background: var(--_md-chip-background-color);\n --_label-color: var(--_md-chip-label-color);\n --_icon-color: var(--_md-chip-icon-color);\n\n --_state-layer-opacity: 0;\n\n --_state-layer-color: rgb(\n from var(--_label-color) r g b /\n var(--_state-layer-opacity)\n );\n\n /* styles */\n\n display: flex;\n align-items: center;\n gap: var(--md-sys-layout-space-8);\n\n position: relative;\n overflow: clip;\n\n background-color: var(--_background);\n color: var(--_icon-color);\n\n padding-inline: var(--md-sys-layout-space-12);\n padding-block: calc(5 * var(--dp, 1px));\n border-radius: var(--md-sys-shape-corner-radius-small);\n\n border: calc(1 * var(--dp, 1px)) solid\n var(--md-sys-color-outline-variant);\n outline: none;\n\n transition:\n background-color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n border-color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n padding var(--md-sys-motion-expressive-fast-spatial)\n var(--md-sys-motion-expressive-fast-spatial-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n\n &[data-icon] {\n padding-inline-start: var(--md-sys-layout-space-8);\n }\n\n &[data-avatar] {\n padding-block: calc(3 * var(--dp, 1px));\n padding-inline-start: var(--md-sys-layout-space-4);\n }\n\n &[data-allows-removing] {\n padding-block: 0;\n padding-inline-end: calc(2 * var(--dp, 1px));\n }\n\n &[data-selection-mode] {\n cursor: pointer;\n }\n\n &[data-selected] {\n --_background: var(--_md-chip-selected-background-color);\n --_label-color: var(--_md-chip-selected-label-color);\n --_icon-color: var(--_md-chip-selected-icon-color);\n\n border-color: transparent;\n }\n\n &[data-hovered] {\n --_state-layer-opacity: var(--md-sys-state-hover);\n }\n\n &[data-focus-visible] {\n --_state-layer-opacity: var(--md-sys-state-focus);\n }\n\n &[data-pressed] {\n --_state-layer-opacity: var(--md-sys-state-pressed);\n }\n\n &[data-disabled] {\n cursor: default;\n border-color: transparent;\n\n --_background: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-container)\n );\n --_label-color: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n --_icon-color: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n }\n }\n\n /* state layer */\n .tag::before {\n content: \"\";\n\n position: absolute;\n inset: 0;\n border-radius: inherit;\n\n background-color: var(--_state-layer-color);\n\n transition: background-color var(--md-sys-motion-standard-fast-spatial)\n var(--md-sys-motion-standard-fast-spatial-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n }\n\n /* focus indicator */\n .tag[data-focus-visible] {\n --focus-indicator-thickness: calc(3 * var(--dp, 1px));\n --focus-indicator-offset: calc(2 * var(--dp, 1px));\n --focus-indicator-color: var(--md-sys-color-secondary);\n\n outline-width: var(--focus-indicator-thickness);\n outline-style: solid;\n outline-offset: var(--focus-indicator-offset);\n outline-color: var(--focus-indicator-color);\n\n z-index: 1;\n }\n\n .label {\n color: var(--_label-color);\n\n transition: color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n }\n\n .avatar-constraint {\n inline-size: var(--md-sys-layout-space-24);\n max-inline-size: var(--md-sys-layout-space-24);\n\n block-size: var(--md-sys-layout-space-24);\n max-block-size: var(--md-sys-layout-space-24);\n\n aspect-ratio: 1 / 1;\n border-radius: 50%;\n\n overflow: clip;\n\n &[data-disabled] {\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 50%;\n\n background: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n }\n }\n }\n}\n","import clsx from \"clsx\";\nimport { Check, X } from \"lucide-react\";\nimport { Tag as AriaTag } from \"react-aria-components\";\nimport { typography } from \"@/utils\";\nimport { IconButton } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport { Splash } from \"../Splash/Splash\";\nimport { useSplash } from \"../Splash/useSplash\";\nimport { TagIconSize } from \"./core\";\nimport styles from \"./tag.module.css\";\nimport type { TagProps } from \"./types\";\n\n/**\n * Compact interactive element representing an attribute, entity, or action, based on\n * [Material 3 Chips](https://m3.material.io/components/chips/overview).\n *\n * Extends React Aria Components `Tag` with Material 3 styling and interactive behaviors:\n * - Renders a text `label` using `typography.labelLarge`.\n * - Supports an optional leading `icon` or circular `avatar`.\n * - When selected, dynamically displays a checkmark icon unless an avatar is present.\n * - Supports removable tags by rendering a built-in remove icon button (`X`) when `allowsRemoving` is true.\n * - Interactive ripple feedback via {@link Splash}.\n *\n * Configurable CSS tokens:\n * - `--md-chip-background-color`: Background color of the tag (`var(--md-sys-color-surface-container-low)`).\n * - `--md-chip-selected-background-color`: Background color when selected (`var(--md-sys-color-secondary-container)`).\n * - `--md-chip-icon-color`: Color of the leading icon (`var(--md-sys-color-primary)`).\n * - `--md-chip-selected-icon-color`: Color of the icon when selected (`var(--md-sys-color-on-secondary-container)`).\n * - `--md-chip-label-color`: Text color of the label (`var(--md-sys-color-on-surface-variant)`).\n * - `--md-chip-selected-label-color`: Text color when selected (`var(--md-sys-color-on-secondary-container)`).\n *\n * @example\n * ```tsx\n * import { Tag } from \"@adgytec/web-ui-components\";\n * import { TagGroup, TagList } from \"react-aria-components\";\n * import { PlaneTakeoff, ShoppingCart } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <TagGroup aria-label=\"Categories\" selectionMode=\"multiple\">\n * <TagList>\n * <Tag id=\"travel\" label=\"Travel\" icon={PlaneTakeoff} />\n * <Tag id=\"shopping\" label=\"Shopping\" icon={ShoppingCart} />\n * </TagList>\n * </TagGroup>\n * );\n * }\n * ```\n */\nexport const Tag: React.FC<TagProps> = ({\n icon,\n avatar,\n label,\n className,\n onPress,\n textValue = label,\n ...props\n}) => {\n const { splashInfo, handlePress } = useSplash(onPress);\n\n return (\n <AriaTag\n onPress={handlePress}\n className={(renderProps) =>\n clsx(\n styles[\"tag\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n textValue={textValue}\n {...props}\n data-avatar={avatar ? true : undefined}\n data-icon={!avatar && icon ? true : undefined}\n >\n {({ isSelected, allowsRemoving, isDisabled }) => (\n <>\n {splashInfo && <Splash {...splashInfo} />}\n {avatar ? (\n <div\n className={clsx(styles[\"avatar-constraint\"])}\n data-disabled={isDisabled || undefined}\n >\n {avatar}\n </div>\n ) : isSelected ? (\n <Icon icon={Check} size={TagIconSize} />\n ) : (\n icon && <Icon icon={icon} size={TagIconSize} />\n )}\n\n <p className={clsx(typography.labelLarge, styles[\"label\"])}>\n {label}\n </p>\n\n {allowsRemoving && (\n <IconButton\n slot=\"remove\"\n icon={X}\n size=\"extra-small\"\n color=\"standard\"\n />\n )}\n </>\n )}\n </AriaTag>\n );\n};\n"],"mappings":";;;;;;;;;AAGA,IAAaQ,IAAc,IAKdC,IAAa;;;;GEyCbT,KAA2B,EACpC,SACA,WACA,UACA,cACA,YACA,eAAYY,GACZ,GAAGC,QACD;CACF,IAAM,EAAE,eAAY,mBAAgBP,EAAUQ,CAAO;CAErD,OACI,kBAACb,GAAD;EACI,SAASe;EACT,YAAY,MACRd,EACIC,EAAOc,KACP,OAAOC,KAAc,aACfA,EAAUC,CAAW,IACrBD,CACV;EAEO;EACX,GAAIL;EACJ,eAAaO,IAAS,KAAO,KAAA;EAC7B,aAAW,CAACA,KAAUC,IAAO,KAAO,KAAA;EAElC,WAAA,EAAE,eAAY,mBAAgB,oBAC5B,kBAAAjB,GAAA,EAAA,UAAA;GACKmB,KAAc,kBAACC,GAAD,EAAQ,GAAID,EAAW,CAAA;GACrCH,IACG,kBAAC,OAAD;IACI,WAAWlB,EAAKC,EAAO,oBAAoB;IAC3C,iBAAesB,KAAc,KAAA;IAE5B,UAAAL;GACA,CAAA,IACLM,IACA,kBAACC,GAAD;IAAM,MAAMC;IAAO,MAAA;GAAkB,CAAA,IAErCP,KAAQ,kBAACM,GAAD;IAAY;IAAM,MAAA;GAAkB,CAAA;GAGhD,kBAAC,KAAD;IAAG,WAAWzB,EAAKG,EAAW,YAAYF,EAAO0B,KAAQ;IACpD,UAAAjB;GACF,CAAA;GAEFkB,KACG,kBAACC,GAAD;IACI,MAAK;IACL,MAAMC;IACN,MAAK;IACL,OAAM;GAAU,CAAA;EAG5B,EAAA,CAAA;CAEC,CAAA;AAEjB"}
|
|
1
|
+
{"version":3,"file":"Tag","names":["Tag","AriaTag","clsx","styles","_Fragment","typography","useSplash","clsx$1","TagIconSize","AvatarSize","tag_module_default","Tag$1","label","props","onPress","Tag","handlePress","\"tag\"","className","renderProps","avatar","icon","Fragment","splashInfo","Splash","isDisabled","isSelected","Icon","Check","\"label\"","allowsRemoving","IconButton","X"],"sources":["../../src/components/Tag/core.ts","../../src/components/Tag/tag.module.css","../../src/components/Tag/Tag.tsx"],"sourcesContent":["/**\n * Default icon size (in pixels) rendered inside a {@link Tag}.\n */\nexport const TagIconSize = 18;\n\n/**\n * Diameter (in pixels) for avatar elements rendered inside a {@link Tag}.\n */\nexport const AvatarSize = 24;\n","/* configurable tokens\n*\n* --md-chip-background-color\n* --md-chip-selected-background-color\n*\n* --md-chip-icon-color\n* --md-chip-selected-icon-color\n*\n* --md-chip-label-color\n* --md-chip-selected-label-color\n*\n* configurable tokens end */\n\n@layer adgytec.overrides {\n .tag {\n [data-visual-button] {\n --focus-indicator-offset: calc(-4 * var(--dp, 1px));\n }\n }\n}\n\n@layer adgytec.comps {\n .tag {\n --_md-chip-background-color: var(\n --md-chip-background-color,\n var(--md-sys-color-surface-container-low)\n );\n --_md-chip-selected-background-color: var(\n --md-chip-selected-background-color,\n var(--md-sys-color-secondary-container)\n );\n --_md-chip-icon-color: var(\n --md-chip-icon-color,\n var(--md-sys-color-primary)\n );\n --_md-chip-selected-icon-color: var(\n --md-chip-selected-icon-color,\n var(--md-sys-color-on-secondary-container)\n );\n --_md-chip-label-color: var(\n --md-chip-label-color,\n var(--md-sys-color-on-surface-variant)\n );\n --_md-chip-selected-label-color: var(\n --md-chip-selected-label-color,\n var(--md-sys-color-on-secondary-container)\n );\n\n /* derived */\n --_background: var(--_md-chip-background-color);\n --_label-color: var(--_md-chip-label-color);\n --_icon-color: var(--_md-chip-icon-color);\n\n --_state-layer-opacity: 0;\n\n --_state-layer-color: rgb(\n from var(--_label-color) r g b /\n var(--_state-layer-opacity)\n );\n\n /* styles */\n\n display: flex;\n align-items: center;\n gap: var(--md-sys-layout-space-8);\n\n position: relative;\n overflow: clip;\n\n background-color: var(--_background);\n color: var(--_icon-color);\n\n padding-inline: var(--md-sys-layout-space-12);\n padding-block: calc(5 * var(--dp, 1px));\n border-radius: var(--md-sys-shape-corner-radius-small);\n\n border: calc(1 * var(--dp, 1px)) solid\n var(--md-sys-color-outline-variant);\n outline: none;\n\n transition:\n background-color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n border-color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration),\n padding var(--md-sys-motion-expressive-fast-spatial)\n var(--md-sys-motion-expressive-fast-spatial-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n\n &[data-icon] {\n padding-inline-start: var(--md-sys-layout-space-8);\n }\n\n &[data-avatar] {\n padding-block: calc(3 * var(--dp, 1px));\n padding-inline-start: var(--md-sys-layout-space-4);\n }\n\n &[data-allows-removing] {\n padding-block: 0;\n padding-inline-end: calc(2 * var(--dp, 1px));\n }\n\n &[data-selection-mode] {\n cursor: pointer;\n }\n\n &[data-selected] {\n --_background: var(--_md-chip-selected-background-color);\n --_label-color: var(--_md-chip-selected-label-color);\n --_icon-color: var(--_md-chip-selected-icon-color);\n\n border-color: transparent;\n }\n\n &[data-hovered] {\n --_state-layer-opacity: var(--md-sys-state-hover);\n }\n\n &[data-focus-visible] {\n --_state-layer-opacity: var(--md-sys-state-focus);\n }\n\n &[data-pressed] {\n --_state-layer-opacity: var(--md-sys-state-pressed);\n }\n\n &[data-disabled] {\n cursor: default;\n border-color: transparent;\n\n --_background: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-container)\n );\n --_label-color: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n --_icon-color: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n }\n }\n\n /* state layer */\n .tag::before {\n content: \"\";\n\n position: absolute;\n inset: 0;\n border-radius: inherit;\n\n background-color: var(--_state-layer-color);\n\n transition: background-color var(--md-sys-motion-standard-fast-spatial)\n var(--md-sys-motion-standard-fast-spatial-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n }\n\n /* focus indicator */\n .tag[data-focus-visible] {\n --focus-indicator-thickness: calc(3 * var(--dp, 1px));\n --focus-indicator-offset: calc(2 * var(--dp, 1px));\n --focus-indicator-color: var(--md-sys-color-secondary);\n\n outline-width: var(--focus-indicator-thickness);\n outline-style: solid;\n outline-offset: var(--focus-indicator-offset);\n outline-color: var(--focus-indicator-color);\n\n z-index: 1;\n }\n\n .label {\n color: var(--_label-color);\n\n transition: color var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n }\n\n .avatar-constraint {\n inline-size: var(--md-sys-layout-space-24);\n max-inline-size: var(--md-sys-layout-space-24);\n\n block-size: var(--md-sys-layout-space-24);\n max-block-size: var(--md-sys-layout-space-24);\n\n aspect-ratio: 1 / 1;\n border-radius: 50%;\n\n overflow: clip;\n\n &[data-disabled] {\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 50%;\n\n background: rgb(\n from var(--md-sys-color-on-surface) r g b /\n var(--md-sys-state-disabled-content)\n );\n }\n }\n }\n}\n","import clsx from \"clsx\";\nimport { Check, X } from \"lucide-react\";\nimport { Tag as AriaTag } from \"react-aria-components\";\nimport { typography } from \"@/utils\";\nimport { IconButton } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport { Splash } from \"../Splash/Splash\";\nimport { useSplash } from \"../Splash/useSplash\";\nimport { TagIconSize } from \"./core\";\nimport styles from \"./tag.module.css\";\nimport type { TagProps } from \"./types\";\n\n/**\n * Compact interactive element representing an attribute, entity, or action, based on\n * [Material 3 Chips](https://m3.material.io/components/chips/overview).\n *\n * Extends React Aria Components `Tag` with Material 3 styling and interactive behaviors:\n * - Renders a text `label` using `typography.labelLarge`.\n * - Supports an optional leading `icon` or circular `avatar`.\n * - When selected, dynamically displays a checkmark icon unless an avatar is present.\n * - Supports removable tags by rendering a built-in remove icon button (`X`) when `allowsRemoving` is true.\n * - Interactive ripple feedback via {@link Splash}.\n *\n * Configurable CSS tokens:\n * - `--md-chip-background-color`: Background color of the tag (`var(--md-sys-color-surface-container-low)`).\n * - `--md-chip-selected-background-color`: Background color when selected (`var(--md-sys-color-secondary-container)`).\n * - `--md-chip-icon-color`: Color of the leading icon (`var(--md-sys-color-primary)`).\n * - `--md-chip-selected-icon-color`: Color of the icon when selected (`var(--md-sys-color-on-secondary-container)`).\n * - `--md-chip-label-color`: Text color of the label (`var(--md-sys-color-on-surface-variant)`).\n * - `--md-chip-selected-label-color`: Text color when selected (`var(--md-sys-color-on-secondary-container)`).\n *\n * @example\n * ```tsx\n * import { Tag } from \"@adgytec/web-ui-components\";\n * import { TagGroup, TagList } from \"react-aria-components\";\n * import { PlaneTakeoff, ShoppingCart } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <TagGroup aria-label=\"Categories\" selectionMode=\"multiple\">\n * <TagList>\n * <Tag id=\"travel\" label=\"Travel\" icon={PlaneTakeoff} />\n * <Tag id=\"shopping\" label=\"Shopping\" icon={ShoppingCart} />\n * </TagList>\n * </TagGroup>\n * );\n * }\n * ```\n */\nexport const Tag: React.FC<TagProps> = ({\n icon,\n avatar,\n label,\n className,\n onPress,\n textValue = label,\n ...props\n}) => {\n const { splashInfo, handlePress } = useSplash(onPress);\n\n return (\n <AriaTag\n onPress={handlePress}\n className={(renderProps) =>\n clsx(\n styles[\"tag\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n textValue={textValue}\n {...props}\n data-avatar={avatar ? true : undefined}\n data-icon={!avatar && icon ? true : undefined}\n >\n {({ isSelected, allowsRemoving, isDisabled }) => (\n <>\n {splashInfo && <Splash {...splashInfo} />}\n {avatar ? (\n <div\n className={clsx(styles[\"avatar-constraint\"])}\n data-disabled={isDisabled || undefined}\n >\n {avatar}\n </div>\n ) : isSelected ? (\n <Icon icon={Check} size={TagIconSize} />\n ) : (\n icon && <Icon icon={icon} size={TagIconSize} />\n )}\n\n <p className={clsx(typography.labelLarge, styles[\"label\"])}>\n {label}\n </p>\n\n {allowsRemoving && (\n <IconButton\n slot=\"remove\"\n icon={X}\n size=\"extra-small\"\n color=\"standard\"\n />\n )}\n </>\n )}\n </AriaTag>\n );\n};\n"],"mappings":";;;;;;;;;AAGA,IAAaQ,IAAc,IAKdC,IAAa,I;;;;A,GEyCbT,KAA2B,EACpC,SACA,WACA,UACA,cACA,YACA,eAAYY,GACZ,GAAGC,QACD;CACF,IAAM,EAAE,eAAY,mBAAgBP,EAAUQ,CAAO;CAErD,OACI,kBAACb,GAAD;EACI,SAASe;EACT,YAAY,MACRd,EACIC,EAAOc,KACP,OAAOC,KAAc,aACfA,EAAUC,CAAW,IACrBD,CACV;EAEO;EACX,GAAIL;EACJ,eAAaO,IAAS,KAAO,KAAA;EAC7B,aAAW,CAACA,KAAUC,IAAO,KAAO,KAAA;EAElC,WAAA,EAAE,eAAY,mBAAgB,oBAC5B,kBAAAjB,GAAA,EAAA,UAAA;GACKmB,KAAc,kBAACC,GAAD,EAAQ,GAAID,EAAW,CAAA;GACrCH,IACG,kBAAC,OAAD;IACI,WAAWlB,EAAKC,EAAO,oBAAoB;IAC3C,iBAAesB,KAAc,KAAA;IAE5B,UAAAL;GACA,CAAA,IACLM,IACA,kBAACC,GAAD;IAAM,MAAMC;IAAO,MAAA;GAAkB,CAAA,IAErCP,KAAQ,kBAACM,GAAD;IAAY;IAAM,MAAA;GAAkB,CAAA;GAGhD,kBAAC,KAAD;IAAG,WAAWzB,EAAKG,EAAW,YAAYF,EAAO0B,KAAQ;IACpD,UAAAjB;GACF,CAAA;GAEFkB,KACG,kBAACC,GAAD;IACI,MAAK;IACL,MAAMC;IACN,MAAK;IACL,OAAM;GAAU,CAAA;EAG5B,EAAA,CAAA;CAEC,CAAA;AAEjB"}
|
|
@@ -2,18 +2,25 @@ import { t as e } from "./compiler-runtime";
|
|
|
2
2
|
import { t } from "./base";
|
|
3
3
|
import { r as n } from "./core";
|
|
4
4
|
import { t as r } from "./ConnectedButtonGroup";
|
|
5
|
-
import { t as i } from "./
|
|
6
|
-
import a from "
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
|
|
5
|
+
import { t as i } from "./Divider";
|
|
6
|
+
import { t as a } from "./Switch";
|
|
7
|
+
import { t as o } from "./ListBox";
|
|
8
|
+
import { t as s } from "./ListIcon";
|
|
9
|
+
import { t as c } from "./ListItem";
|
|
10
|
+
import { t as l } from "./ListLabelText";
|
|
11
|
+
import { t as u } from "./ListSupportingText";
|
|
12
|
+
import d from "clsx";
|
|
13
|
+
import { useCallback as f, useLayoutEffect as p, useMemo as m } from "react";
|
|
14
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
15
|
+
import { useLocalStorage as _, useMediaQuery as v } from "usehooks-ts";
|
|
16
|
+
import { Moon as y, Palette as b, Sun as x, SunMoon as S } from "lucide-react";
|
|
17
|
+
import '../assets/ThemeSelector.css';// src/utils/theme/build.ts
|
|
18
|
+
var C = ({ isDarkMode: e, isMonochrome: t, contrast: n }) => {
|
|
12
19
|
let r = e ? "dark" : "light";
|
|
13
20
|
return t ? `monochrome-${r}` : `${r}${n === "standard" ? "" : n === "medium" ? "-medium-contrast" : "-high-contrast"}`;
|
|
14
|
-
},
|
|
15
|
-
function
|
|
16
|
-
let a =
|
|
21
|
+
}, w = "(prefers-color-scheme: dark)", T = "application-theme";
|
|
22
|
+
function E({ defaultThemeMode: e = "system", defaultContrast: t = "standard", isMonochrome: n = !1, localStorageKey: r = T, initializeWithValue: i = !0 } = {}) {
|
|
23
|
+
let a = m(() => ({
|
|
17
24
|
mode: e,
|
|
18
25
|
contrast: t,
|
|
19
26
|
isMonochrome: n
|
|
@@ -21,46 +28,48 @@ function g({ defaultThemeMode: e = "system", defaultContrast: t = "standard", is
|
|
|
21
28
|
e,
|
|
22
29
|
t,
|
|
23
30
|
n
|
|
24
|
-
]),
|
|
25
|
-
|
|
31
|
+
]), o = v(w, { initializeWithValue: i }), [s, c] = _(r, a, { initializeWithValue: i }), l = s.mode === "dark" || s.mode === "system" && o, u = f((e) => {
|
|
32
|
+
c((t) => ({
|
|
26
33
|
...t,
|
|
27
34
|
mode: e
|
|
28
35
|
}));
|
|
29
|
-
}, [
|
|
30
|
-
|
|
36
|
+
}, [c]), d = f((e) => {
|
|
37
|
+
c((t) => ({
|
|
31
38
|
...t,
|
|
32
39
|
contrast: e
|
|
33
40
|
}));
|
|
34
|
-
}, [
|
|
35
|
-
|
|
41
|
+
}, [c]), p = f((e) => {
|
|
42
|
+
c((t) => ({
|
|
36
43
|
...t,
|
|
37
44
|
isMonochrome: e
|
|
38
45
|
}));
|
|
39
|
-
}, [
|
|
46
|
+
}, [c]);
|
|
40
47
|
return {
|
|
41
|
-
...
|
|
42
|
-
isDarkMode:
|
|
43
|
-
setMode:
|
|
44
|
-
setContrast:
|
|
45
|
-
setMonochrome:
|
|
48
|
+
...s,
|
|
49
|
+
isDarkMode: l,
|
|
50
|
+
setMode: u,
|
|
51
|
+
setContrast: d,
|
|
52
|
+
setMonochrome: p
|
|
46
53
|
};
|
|
47
54
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var _ = (e) => [
|
|
55
|
+
// src/components/ThemeSelector/core.ts
|
|
56
|
+
var D = (e) => [
|
|
51
57
|
{
|
|
52
58
|
id: "system",
|
|
53
|
-
value: e.system
|
|
59
|
+
value: e.system,
|
|
60
|
+
icon: S
|
|
54
61
|
},
|
|
55
62
|
{
|
|
56
63
|
id: "light",
|
|
57
|
-
value: e.light
|
|
64
|
+
value: e.light,
|
|
65
|
+
icon: x
|
|
58
66
|
},
|
|
59
67
|
{
|
|
60
68
|
id: "dark",
|
|
61
|
-
value: e.dark
|
|
69
|
+
value: e.dark,
|
|
70
|
+
icon: y
|
|
62
71
|
}
|
|
63
|
-
],
|
|
72
|
+
], O = (e) => [
|
|
64
73
|
{
|
|
65
74
|
id: "standard",
|
|
66
75
|
value: e.standard
|
|
@@ -74,124 +83,139 @@ var _ = (e) => [
|
|
|
74
83
|
value: e.high
|
|
75
84
|
}
|
|
76
85
|
];
|
|
77
|
-
function
|
|
86
|
+
function k(e) {
|
|
78
87
|
return e === "system" || e === "dark" || e === "light";
|
|
79
88
|
}
|
|
80
|
-
function
|
|
89
|
+
function A(e) {
|
|
81
90
|
return e === "standard" || e === "medium" || e === "high";
|
|
82
91
|
}
|
|
83
|
-
var
|
|
84
|
-
selector: "
|
|
85
|
-
"theme-item": "_theme-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
var j = {
|
|
93
|
+
selector: "_selector_3hs6r_2",
|
|
94
|
+
"theme-item": "_theme-item_3hs6r_13",
|
|
95
|
+
disabled: "_disabled_3hs6r_26",
|
|
96
|
+
"theme-item-info": "_theme-item-info_3hs6r_30",
|
|
97
|
+
"theme-item-heading": "_theme-item-heading_3hs6r_35",
|
|
98
|
+
"theme-item-description": "_theme-item-description_3hs6r_39"
|
|
99
|
+
}, M = ({ heading: e, description: n, children: r, className: i, useInline: a = !1, isDisabled: o = !1 }) => a ? /* @__PURE__ */ g("span", {
|
|
100
|
+
className: d(j["theme-item"], o && j.disabled, i),
|
|
101
|
+
"data-disabled": o || void 0,
|
|
102
|
+
children: [/* @__PURE__ */ g("span", {
|
|
103
|
+
className: d(j["theme-item-info"]),
|
|
104
|
+
children: [/* @__PURE__ */ h("span", {
|
|
105
|
+
className: d(t.titleMedium, j["theme-item-heading"]),
|
|
93
106
|
slot: "label",
|
|
94
107
|
children: e
|
|
95
|
-
}), n && /* @__PURE__ */
|
|
96
|
-
className:
|
|
108
|
+
}), n && /* @__PURE__ */ h("span", {
|
|
109
|
+
className: d(t.bodyMedium, j["theme-item-description"]),
|
|
97
110
|
slot: "description",
|
|
98
111
|
children: n
|
|
99
112
|
})]
|
|
100
113
|
}), r]
|
|
101
|
-
}) : /* @__PURE__ */
|
|
102
|
-
className:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
114
|
+
}) : /* @__PURE__ */ g("div", {
|
|
115
|
+
className: d(j["theme-item"], o && j.disabled, i),
|
|
116
|
+
"data-disabled": o || void 0,
|
|
117
|
+
children: [/* @__PURE__ */ g("div", {
|
|
118
|
+
className: d(j["theme-item-info"]),
|
|
119
|
+
children: [/* @__PURE__ */ h("h3", {
|
|
120
|
+
className: d(t.titleMedium, j["theme-item-heading"]),
|
|
107
121
|
children: e
|
|
108
|
-
}), n && /* @__PURE__ */
|
|
109
|
-
className:
|
|
122
|
+
}), n && /* @__PURE__ */ h("p", {
|
|
123
|
+
className: d(t.bodyMedium, j["theme-item-description"]),
|
|
110
124
|
children: n
|
|
111
125
|
})]
|
|
112
126
|
}), r]
|
|
113
|
-
}),
|
|
114
|
-
let t = (0,
|
|
127
|
+
}), N = e(), P = (e) => {
|
|
128
|
+
let t = (0, N.c)(5), { children: n } = e, { isDarkMode: r, isMonochrome: i, contrast: a } = E(), o, s;
|
|
115
129
|
return t[0] !== a || t[1] !== r || t[2] !== i ? (o = () => {
|
|
116
|
-
let e =
|
|
130
|
+
let e = C({
|
|
117
131
|
isDarkMode: r,
|
|
118
132
|
isMonochrome: i,
|
|
119
133
|
contrast: a
|
|
120
134
|
});
|
|
121
135
|
document.documentElement.setAttribute("data-theme", e);
|
|
122
|
-
},
|
|
136
|
+
}, s = [
|
|
123
137
|
r,
|
|
124
138
|
i,
|
|
125
139
|
a
|
|
126
|
-
], t[0] = a, t[1] = r, t[2] = i, t[3] = o, t[4] =
|
|
127
|
-
},
|
|
140
|
+
], t[0] = a, t[1] = r, t[2] = i, t[3] = o, t[4] = s) : (o = t[3], s = t[4]), p(o, s), n;
|
|
141
|
+
}, F = {
|
|
128
142
|
heading: "Theme Mode",
|
|
129
143
|
description: "Choose how the interface appearance is displayed across the app. You can follow your system settings or manually use light or dark mode.",
|
|
130
144
|
system: "System",
|
|
131
145
|
dark: "Dark",
|
|
132
146
|
light: "Light"
|
|
133
|
-
},
|
|
147
|
+
}, I = {
|
|
134
148
|
heading: "Theme Contrast",
|
|
135
149
|
description: "Adjust the interface contrast level to improve visibility and readability based on your visual preference and viewing environment.",
|
|
136
150
|
standard: "Standard",
|
|
137
151
|
medium: "Medium",
|
|
138
152
|
high: "High"
|
|
139
|
-
},
|
|
153
|
+
}, L = {
|
|
140
154
|
heading: "Monochrome",
|
|
141
155
|
description: "Use a monochrome appearance with neutral tones instead of the default colorful theme. This can provide a cleaner and more focused visual experience."
|
|
142
|
-
},
|
|
143
|
-
let { mode:
|
|
144
|
-
return /* @__PURE__ */
|
|
145
|
-
className:
|
|
156
|
+
}, R = ({ modeDetails: e = F, contrastDetails: t = I, monochromeDetails: f = L, className: p, buttonColor: _ = "tonal", buttonSize: v = "small", showMode: y = !0, showContrast: x = !0, showMonochrome: S = !0, showDividers: C = !1 }) => {
|
|
157
|
+
let { mode: w, isMonochrome: T, contrast: N, setContrast: P, setMode: R, setMonochrome: z } = E(), B = m(() => D(e), [e]), V = m(() => O(t), [t]);
|
|
158
|
+
return /* @__PURE__ */ g("div", {
|
|
159
|
+
className: d(j.selector, p),
|
|
146
160
|
children: [
|
|
147
|
-
/* @__PURE__ */
|
|
161
|
+
y && /* @__PURE__ */ h(M, {
|
|
148
162
|
heading: e.heading,
|
|
149
163
|
description: e.description,
|
|
150
|
-
children: /* @__PURE__ */
|
|
164
|
+
children: /* @__PURE__ */ h(r, {
|
|
165
|
+
color: _,
|
|
166
|
+
size: v,
|
|
151
167
|
selectionMode: "single",
|
|
152
|
-
selectedKeys: [
|
|
168
|
+
selectedKeys: [w],
|
|
153
169
|
onSelectionChange: (e) => {
|
|
154
170
|
let t = Array.from(e)[0];
|
|
155
|
-
|
|
171
|
+
k(t) && R(t);
|
|
156
172
|
},
|
|
157
|
-
children:
|
|
173
|
+
children: B.map((e) => /* @__PURE__ */ h(n, {
|
|
158
174
|
id: e.id,
|
|
175
|
+
icon: e.icon,
|
|
159
176
|
children: e.value
|
|
160
177
|
}, e.id))
|
|
161
178
|
})
|
|
162
179
|
}),
|
|
163
|
-
/* @__PURE__ */
|
|
180
|
+
C && y && (x || S) && /* @__PURE__ */ h(i, {}),
|
|
181
|
+
x && /* @__PURE__ */ h(M, {
|
|
164
182
|
heading: t.heading,
|
|
165
183
|
description: t.description,
|
|
166
|
-
|
|
167
|
-
|
|
184
|
+
isDisabled: T,
|
|
185
|
+
children: /* @__PURE__ */ h(r, {
|
|
186
|
+
color: _,
|
|
187
|
+
size: v,
|
|
168
188
|
selectionMode: "single",
|
|
169
|
-
selectedKeys: [
|
|
189
|
+
selectedKeys: [N],
|
|
170
190
|
onSelectionChange: (e) => {
|
|
171
191
|
let t = Array.from(e)[0];
|
|
172
|
-
|
|
192
|
+
A(t) && P(t);
|
|
173
193
|
},
|
|
174
|
-
isDisabled:
|
|
175
|
-
children:
|
|
194
|
+
isDisabled: T,
|
|
195
|
+
children: V.map((e) => /* @__PURE__ */ h(n, {
|
|
176
196
|
id: e.id,
|
|
177
197
|
children: e.value
|
|
178
198
|
}, e.id))
|
|
179
199
|
})
|
|
180
200
|
}),
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
201
|
+
C && x && S && /* @__PURE__ */ h(i, {}),
|
|
202
|
+
S && /* @__PURE__ */ h(o, {
|
|
203
|
+
"aria-label": f.heading,
|
|
204
|
+
children: /* @__PURE__ */ h(c, {
|
|
205
|
+
onAction: () => z(!T),
|
|
206
|
+
leading: /* @__PURE__ */ h(s, { icon: b }),
|
|
207
|
+
label: /* @__PURE__ */ h(l, { children: f.heading }),
|
|
208
|
+
supporting: /* @__PURE__ */ h(u, { children: f.description }),
|
|
209
|
+
trailing: [/* @__PURE__ */ h(a, {
|
|
210
|
+
isSelected: T,
|
|
211
|
+
onChange: z,
|
|
212
|
+
"aria-label": f.heading
|
|
213
|
+
}, "selection")]
|
|
189
214
|
})
|
|
190
215
|
})
|
|
191
216
|
]
|
|
192
217
|
});
|
|
193
218
|
};
|
|
194
|
-
|
|
195
|
-
export { b as a, g as c, v as i, p as l, w as n, y as o, S as r, _ as s, O as t };
|
|
219
|
+
export { A as a, E as c, O as i, C as l, P as n, k as o, M as r, D as s, R as t };
|
|
196
220
|
|
|
197
221
|
//# sourceMappingURL=ThemeSelector.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeSelector","names":["prev","isMonochrome","clsx","styles","_c","keys","item","clsx","styles","require_compiler_runtime","ConnectedButton","ConnectedButtonGroup","Switch","clsx$1","buildThemeString","mode","isDarkMode","isMonochrome","contrast","COLOR_SCHEME_QUERY","LOCAL_STORAGE_KEY","useTheme","defaultValue","useMemo","defaultThemeMode","defaultContrast","isDarkOS","useMediaQuery","theme","setTheme","useLocalStorage","localStorageKey","setMode","useCallback","prev","setContrast","prev_0","setMonochrome","prev_1","isMonochrome_0","modeItems","modeDetails","contrastItems","contrastDetails","isThemeMode","value","isThemeContrast","themeSelector_module_default","ThemeItem","useInline","className","typography","heading","description","children","import_compiler_runtime","ThemeProvider","$","t0","t1","t2","themeString","useLayoutEffect","defaultMode","defaultMonochrome","ThemeSelector","themeModeItems","themeContrastItems","\"selector\"","themeMode","keys","item","themeContrast","keys_0","item_0","monochromeDetails"],"sources":["../../src/utils/theme/build.ts","../../src/utils/theme/useTheme.ts","../../src/components/ThemeSelector/core.ts","../../src/components/ThemeSelector/themeSelector.module.css","../../src/components/ThemeSelector/ThemeItem.tsx","../../src/components/ThemeSelector/ThemeProvider.tsx","../../src/components/ThemeSelector/ThemeSelector.tsx"],"sourcesContent":["import type { ThemeBuildOptions } from \"./types\";\n\n/**\n * Generates the theme string suffix or identifier based on current theme settings.\n *\n * This identifier corresponds to the theme definition classes and data attributes\n * (such as `data-theme=\"...\"`) applied to the root element (`document.documentElement` or body).\n *\n * - Monochrome modes produce `\"monochrome-dark\"` or `\"monochrome-light\"`.\n * - Standard contrast modes produce `\"dark\"` or `\"light\"`.\n * - Elevated contrast modes produce `\"dark-medium-contrast\"`, `\"dark-high-contrast\"`,\n * `\"light-medium-contrast\"`, or `\"light-high-contrast\"`.\n *\n * @param options - Theme configuration flags (dark mode, monochrome, contrast).\n * @returns Formatted theme string (e.g. `\"dark\"`, `\"light-high-contrast\"`, `\"monochrome-dark\"`).\n *\n * @example\n * ```ts\n * const themeString = buildThemeString({\n * isDarkMode: true,\n * isMonochrome: false,\n * contrast: \"high\",\n * });\n * // returns \"dark-high-contrast\"\n * ```\n */\nexport const buildThemeString = ({\n isDarkMode,\n isMonochrome,\n contrast,\n}: ThemeBuildOptions): string => {\n const mode = isDarkMode ? \"dark\" : \"light\";\n if (isMonochrome) return `monochrome-${mode}`;\n\n const contrastSuffix =\n contrast === \"standard\"\n ? \"\"\n : contrast === \"medium\"\n ? \"-medium-contrast\"\n : \"-high-contrast\";\n\n return `${mode}${contrastSuffix}`;\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useLocalStorage, useMediaQuery } from \"usehooks-ts\";\nimport type {\n ThemeContrast,\n ThemeMode,\n ThemeOptions,\n ThemeReturn,\n ThemeStorage,\n} from \"./types\";\n\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nconst LOCAL_STORAGE_KEY = \"application-theme\";\n\n/**\n * React hook that manages the application theme state with `localStorage` persistence\n * and automatic synchronization with system preferences.\n *\n * Tracks theme mode (`\"system\"`, `\"dark\"`, `\"light\"`), contrast level (`\"standard\"`,\n * `\"medium\"`, `\"high\"`), and monochrome mode. When `mode` is set to `\"system\"`,\n * `isDarkMode` dynamically listens to the OS `(prefers-color-scheme: dark)` media query.\n *\n * All setter callbacks (`setMode`, `setContrast`, `setMonochrome`) are referentially stable\n * via `useCallback`.\n *\n * @param options - Configuration options for initial defaults and storage key.\n * @returns Current theme state and updater functions.\n *\n * @example\n * ```tsx\n * import { useTheme, buildThemeString } from '@adgytec/web-ui-components';\n * import { useEffect } from 'react';\n *\n * function App() {\n * const theme = useTheme();\n *\n * useEffect(() => {\n * const themeString = buildThemeString({\n * isDarkMode: theme.isDarkMode,\n * isMonochrome: theme.isMonochrome,\n * contrast: theme.contrast,\n * });\n * document.documentElement.setAttribute('data-theme', themeString);\n * }, [theme.isDarkMode, theme.isMonochrome, theme.contrast]);\n *\n * return (\n * <div>\n * <button onClick={() => theme.setMode('dark')}>Dark Mode</button>\n * <button onClick={() => theme.setContrast('high')}>High Contrast</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useTheme({\n defaultThemeMode = \"system\",\n defaultContrast = \"standard\",\n isMonochrome = false,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true,\n}: ThemeOptions = {}): ThemeReturn {\n const defaultValue: ThemeStorage = useMemo(\n () => ({\n mode: defaultThemeMode,\n contrast: defaultContrast,\n isMonochrome,\n }),\n [defaultThemeMode, defaultContrast, isMonochrome]\n );\n\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, { initializeWithValue });\n const [theme, setTheme] = useLocalStorage<ThemeStorage>(\n localStorageKey,\n defaultValue,\n {\n initializeWithValue,\n }\n );\n\n const isDarkMode =\n theme.mode === \"dark\" || (theme.mode === \"system\" && isDarkOS);\n\n const setMode = useCallback(\n (mode: ThemeMode) => {\n setTheme((prev) => ({ ...prev, mode }));\n },\n [setTheme]\n );\n\n const setContrast = useCallback(\n (contrast: ThemeContrast) => {\n setTheme((prev) => ({ ...prev, contrast }));\n },\n [setTheme]\n );\n\n const setMonochrome = useCallback(\n (isMonochrome: boolean) => {\n setTheme((prev) => ({ ...prev, isMonochrome }));\n },\n [setTheme]\n );\n\n return {\n ...theme,\n isDarkMode,\n setMode,\n setContrast,\n setMonochrome,\n };\n}\n","import type { Key } from \"react-aria-components\";\nimport type { ThemeContrast, ThemeMode } from \"@/utils\";\nimport type { ThemeContrastTranslations, ThemeModeTranslations } from \"./types\";\n\n/**\n * Generates an array of theme mode options with translated labels.\n *\n * @param modeDetails - Translations for theme mode labels (`system`, `light`, `dark`).\n * @returns Array of mode items with `id` and localized `value`.\n *\n * @example\n * ```tsx\n * const items = modeItems({\n * heading: \"Theme Mode\",\n * system: \"System\",\n * light: \"Light\",\n * dark: \"Dark\",\n * });\n * ```\n */\nexport const modeItems = (\n modeDetails: ThemeModeTranslations\n): {\n id: ThemeMode;\n value: string;\n}[] => {\n return [\n { id: \"system\", value: modeDetails.system },\n { id: \"light\", value: modeDetails.light },\n { id: \"dark\", value: modeDetails.dark },\n ];\n};\n\n/**\n * Generates an array of theme contrast options with translated labels.\n *\n * @param contrastDetails - Translations for contrast level labels (`standard`, `medium`, `high`).\n * @returns Array of contrast items with `id` and localized `value`.\n *\n * @example\n * ```tsx\n * const items = contrastItems({\n * heading: \"Contrast\",\n * standard: \"Standard\",\n * medium: \"Medium\",\n * high: \"High\",\n * });\n * ```\n */\nexport const contrastItems = (\n contrastDetails: ThemeContrastTranslations\n): {\n id: ThemeContrast;\n value: string;\n}[] => {\n return [\n { id: \"standard\", value: contrastDetails.standard },\n { id: \"medium\", value: contrastDetails.medium },\n { id: \"high\", value: contrastDetails.high },\n ];\n};\n\n/**\n * Type guard function to check if a React Aria `Key` is a valid {@link ThemeMode}.\n *\n * @param value - The key to test.\n * @returns `true` if `value` is `\"system\"`, `\"light\"`, or `\"dark\"`.\n *\n * @example\n * ```tsx\n * if (isThemeMode(selectedKey)) {\n * setMode(selectedKey);\n * }\n * ```\n */\nexport function isThemeMode(value: Key): value is ThemeMode {\n return value === \"system\" || value === \"dark\" || value === \"light\";\n}\n\n/**\n * Type guard function to check if a React Aria `Key` is a valid {@link ThemeContrast}.\n *\n * @param value - The key to test.\n * @returns `true` if `value` is `\"standard\"`, `\"medium\"`, or `\"high\"`.\n *\n * @example\n * ```tsx\n * if (isThemeContrast(selectedKey)) {\n * setContrast(selectedKey);\n * }\n * ```\n */\nexport function isThemeContrast(value: Key): value is ThemeContrast {\n return value === \"standard\" || value === \"medium\" || value === \"high\";\n}\n","@layer adgytec.comps {\n .selector {\n display: grid;\n gap: var(--md-sys-layout-space-24);\n }\n\n .theme-item {\n display: grid;\n gap: var(--md-sys-layout-space-16);\n }\n\n .theme-item-info {\n display: grid;\n }\n}\n","import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\nimport { typography } from \"@/utils\";\nimport styles from \"./themeSelector.module.css\";\n\n/**\n * Props for the {@link ThemeItem} component.\n */\nexport interface ThemeItemProps {\n /**\n * Section title heading text.\n */\n heading: string;\n\n /**\n * Optional explanatory text describing the setting.\n */\n description?: string;\n\n /**\n * Interactive control element(s) (e.g. connected button groups or switches) associated with the item.\n */\n children?: ReactNode;\n\n /**\n * Optional custom CSS class name applied to the container.\n */\n className?: string;\n\n /**\n * Whether to render inline `span` elements instead of block `div` elements.\n * Useful when nesting inside a label or interactive component like `Switch`.\n *\n * @default false\n */\n useInline?: boolean;\n}\n\n/**\n * Layout helper component for a single setting item within {@link ThemeSelector}.\n *\n * Renders a styled heading (`typography.titleMedium`), an optional description (`typography.bodyMedium`),\n * and the child controls. Supports both block rendering and inline `span` rendering.\n *\n * @example\n * ```tsx\n * import { ThemeItem } from \"@adgytec/web-ui-components\";\n *\n * export function SettingRow() {\n * return (\n * <ThemeItem\n * heading=\"Appearance\"\n * description=\"Select your preferred color mode.\"\n * >\n * <Controls />\n * </ThemeItem>\n * );\n * }\n * ```\n */\nexport const ThemeItem: React.FC<ThemeItemProps> = ({\n heading,\n description,\n children,\n className,\n useInline = false,\n}) => {\n if (useInline) {\n return (\n <span className={clsx(styles[\"theme-item\"], className)}>\n <span className={clsx(styles[\"theme-item-info\"])}>\n <span className={clsx(typography.titleMedium)} slot=\"label\">\n {heading}\n </span>\n\n {description && (\n <span\n className={clsx(typography.bodyMedium)}\n slot=\"description\"\n >\n {description}\n </span>\n )}\n </span>\n\n {children}\n </span>\n );\n }\n return (\n <div className={clsx(styles[\"theme-item\"], className)}>\n <div className={clsx(styles[\"theme-item-info\"])}>\n <h3 className={clsx(typography.titleMedium)}>{heading}</h3>\n\n {description && (\n <p className={clsx(typography.bodyMedium)}>{description}</p>\n )}\n </div>\n\n {children}\n </div>\n );\n};\n","import { type ReactNode, useLayoutEffect } from \"react\";\nimport { buildThemeString, useTheme } from \"@/utils\";\n\n/**\n * Props for the {@link ThemeProvider} component.\n */\nexport interface ThemeProviderProps {\n /**\n * Application content to be rendered inside the provider.\n */\n children?: ReactNode;\n}\n\n/**\n * Top-level provider component that synchronizes the application root with the current theme settings.\n *\n * Subscribes to the theme state via {@link useTheme} (mode, dark mode calculation,\n * contrast level, and monochrome setting) and dynamically assigns the computed theme\n * string to the `data-theme` attribute of `document.documentElement`.\n *\n * @example\n * ```tsx\n * import { ThemeProvider } from \"@adgytec/web-ui-components\";\n *\n * export function App() {\n * return (\n * <ThemeProvider>\n * <MainContent />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ children }) => {\n const { isDarkMode, isMonochrome, contrast } = useTheme();\n\n useLayoutEffect(() => {\n const themeString = buildThemeString({\n isDarkMode,\n isMonochrome,\n contrast,\n });\n document.documentElement.setAttribute(\"data-theme\", themeString);\n }, [isDarkMode, isMonochrome, contrast]);\n\n return children;\n};\n","import clsx from \"clsx\";\nimport { useMemo } from \"react\";\nimport { useTheme } from \"@/utils\";\nimport { ConnectedButton, ConnectedButtonGroup } from \"../Button\";\nimport { Switch } from \"../Input\";\nimport { contrastItems, isThemeContrast, isThemeMode, modeItems } from \"./core\";\nimport { ThemeItem } from \"./ThemeItem\";\nimport styles from \"./themeSelector.module.css\";\nimport type {\n ThemeContrastTranslations,\n ThemeModeTranslations,\n ThemeMonochromeTranslations,\n ThemeSelectorProps,\n} from \"./types\";\n\nconst defaultMode: ThemeModeTranslations = {\n heading: \"Theme Mode\",\n description:\n \"Choose how the interface appearance is displayed across the app. You can follow your system settings or manually use light or dark mode.\",\n\n system: \"System\",\n dark: \"Dark\",\n light: \"Light\",\n};\n\nconst defaultContrast: ThemeContrastTranslations = {\n heading: \"Theme Contrast\",\n description:\n \"Adjust the interface contrast level to improve visibility and readability based on your visual preference and viewing environment.\",\n\n standard: \"Standard\",\n medium: \"Medium\",\n high: \"High\",\n};\n\nconst defaultMonochrome: ThemeMonochromeTranslations = {\n heading: \"Monochrome\",\n description:\n \"Use a monochrome appearance with neutral tones instead of the default colorful theme. This can provide a cleaner and more focused visual experience.\",\n};\n\n/**\n * Settings UI component for managing application theme appearance.\n *\n * Provides user controls for:\n * - **Theme Mode**: Connected button group with `\"System\"`, `\"Light\"`, and `\"Dark\"` options.\n * - **Theme Contrast**: Connected button group with `\"Standard\"`, `\"Medium\"`, and `\"High\"` options (disabled when monochrome is active).\n * - **Monochrome Mode**: An interactive {@link Switch} to toggle neutral grayscale styling.\n *\n * Directly connects to {@link useTheme} to read and update theme settings, which are\n * persisted to local storage and applied to `document.documentElement` by {@link ThemeProvider}.\n *\n * @example\n * ```tsx\n * import { ThemeProvider, ThemeSelector } from \"@adgytec/web-ui-components\";\n *\n * export function SettingsMenu() {\n * return (\n * <ThemeProvider>\n * <ThemeSelector />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nexport const ThemeSelector: React.FC<ThemeSelectorProps> = ({\n modeDetails = defaultMode,\n contrastDetails = defaultContrast,\n monochromeDetails = defaultMonochrome,\n}) => {\n const {\n mode,\n isMonochrome,\n contrast,\n setContrast,\n setMode,\n setMonochrome,\n } = useTheme();\n\n const themeModeItems = useMemo(() => modeItems(modeDetails), [modeDetails]);\n const themeContrastItems = useMemo(\n () => contrastItems(contrastDetails),\n [contrastDetails]\n );\n\n return (\n <div className={clsx(styles[\"selector\"])}>\n <ThemeItem\n heading={modeDetails.heading}\n description={modeDetails.description}\n >\n <ConnectedButtonGroup\n selectionMode=\"single\"\n selectedKeys={[mode]}\n onSelectionChange={(keys) => {\n const themeMode = Array.from(keys)[0];\n if (!isThemeMode(themeMode)) return;\n\n setMode(themeMode);\n }}\n >\n {themeModeItems.map((item) => (\n <ConnectedButton key={item.id} id={item.id}>\n {item.value}\n </ConnectedButton>\n ))}\n </ConnectedButtonGroup>\n </ThemeItem>\n\n <ThemeItem\n heading={contrastDetails.heading}\n description={contrastDetails.description}\n >\n <ConnectedButtonGroup\n color=\"tonal\"\n selectionMode=\"single\"\n selectedKeys={[contrast]}\n onSelectionChange={(keys) => {\n const themeContrast = Array.from(keys)[0];\n if (!isThemeContrast(themeContrast)) return;\n\n setContrast(themeContrast);\n }}\n isDisabled={isMonochrome}\n >\n {themeContrastItems.map((item) => (\n <ConnectedButton key={item.id} id={item.id}>\n {item.value}\n </ConnectedButton>\n ))}\n </ConnectedButtonGroup>\n </ThemeItem>\n\n <Switch\n isSelected={isMonochrome}\n onChange={setMonochrome}\n containerStateLayer\n >\n <ThemeItem\n heading={monochromeDetails.heading}\n description={monochromeDetails.description}\n useInline\n ></ThemeItem>\n </Switch>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeSelector","names":["prev","isMonochrome","clsx","styles","_c","keys","item","clsx","styles","require_compiler_runtime","ConnectedButton","ConnectedButtonGroup","Divider","Switch","ListBox","ListIcon","ListItem","ListLabelText","ListSupportingText","clsx$1","buildThemeString","mode","isDarkMode","isMonochrome","contrast","COLOR_SCHEME_QUERY","LOCAL_STORAGE_KEY","useTheme","defaultValue","useMemo","defaultThemeMode","defaultContrast","isDarkOS","useMediaQuery","theme","setTheme","useLocalStorage","localStorageKey","setMode","useCallback","prev","setContrast","prev_0","setMonochrome","prev_1","isMonochrome_0","modeItems","modeDetails","SunMoon","Sun","Moon","contrastItems","contrastDetails","isThemeMode","value","isThemeContrast","themeSelector_module_default","ThemeItem","useInline","isDisabled","\"disabled\"","className","typography","heading","description","children","import_compiler_runtime","ThemeProvider","$","t0","t1","t2","themeString","useLayoutEffect","defaultMode","defaultMonochrome","ThemeSelector","themeModeItems","themeContrastItems","\"selector\"","showMode","buttonColor","buttonSize","themeMode","keys","item","showDividers","showContrast","showMonochrome","themeContrast","keys_0","item_0","monochromeDetails","Palette"],"sources":["../../src/utils/theme/build.ts","../../src/utils/theme/useTheme.ts","../../src/components/ThemeSelector/core.ts","../../src/components/ThemeSelector/themeSelector.module.css","../../src/components/ThemeSelector/ThemeItem.tsx","../../src/components/ThemeSelector/ThemeProvider.tsx","../../src/components/ThemeSelector/ThemeSelector.tsx"],"sourcesContent":["import type { ThemeBuildOptions } from \"./types\";\n\n/**\n * Generates the theme string suffix or identifier based on current theme settings.\n *\n * This identifier corresponds to the theme definition classes and data attributes\n * (such as `data-theme=\"...\"`) applied to the root element (`document.documentElement` or body).\n *\n * - Monochrome modes produce `\"monochrome-dark\"` or `\"monochrome-light\"`.\n * - Standard contrast modes produce `\"dark\"` or `\"light\"`.\n * - Elevated contrast modes produce `\"dark-medium-contrast\"`, `\"dark-high-contrast\"`,\n * `\"light-medium-contrast\"`, or `\"light-high-contrast\"`.\n *\n * @param options - Theme configuration flags (dark mode, monochrome, contrast).\n * @returns Formatted theme string (e.g. `\"dark\"`, `\"light-high-contrast\"`, `\"monochrome-dark\"`).\n *\n * @example\n * ```ts\n * const themeString = buildThemeString({\n * isDarkMode: true,\n * isMonochrome: false,\n * contrast: \"high\",\n * });\n * // returns \"dark-high-contrast\"\n * ```\n */\nexport const buildThemeString = ({\n isDarkMode,\n isMonochrome,\n contrast,\n}: ThemeBuildOptions): string => {\n const mode = isDarkMode ? \"dark\" : \"light\";\n if (isMonochrome) return `monochrome-${mode}`;\n\n const contrastSuffix =\n contrast === \"standard\"\n ? \"\"\n : contrast === \"medium\"\n ? \"-medium-contrast\"\n : \"-high-contrast\";\n\n return `${mode}${contrastSuffix}`;\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useLocalStorage, useMediaQuery } from \"usehooks-ts\";\nimport type {\n ThemeContrast,\n ThemeMode,\n ThemeOptions,\n ThemeReturn,\n ThemeStorage,\n} from \"./types\";\n\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nconst LOCAL_STORAGE_KEY = \"application-theme\";\n\n/**\n * React hook that manages the application theme state with `localStorage` persistence\n * and automatic synchronization with system preferences.\n *\n * Tracks theme mode (`\"system\"`, `\"dark\"`, `\"light\"`), contrast level (`\"standard\"`,\n * `\"medium\"`, `\"high\"`), and monochrome mode. When `mode` is set to `\"system\"`,\n * `isDarkMode` dynamically listens to the OS `(prefers-color-scheme: dark)` media query.\n *\n * All setter callbacks (`setMode`, `setContrast`, `setMonochrome`) are referentially stable\n * via `useCallback`.\n *\n * @param options - Configuration options for initial defaults and storage key.\n * @returns Current theme state and updater functions.\n *\n * @example\n * ```tsx\n * import { useTheme, buildThemeString } from '@adgytec/web-ui-components';\n * import { useEffect } from 'react';\n *\n * function App() {\n * const theme = useTheme();\n *\n * useEffect(() => {\n * const themeString = buildThemeString({\n * isDarkMode: theme.isDarkMode,\n * isMonochrome: theme.isMonochrome,\n * contrast: theme.contrast,\n * });\n * document.documentElement.setAttribute('data-theme', themeString);\n * }, [theme.isDarkMode, theme.isMonochrome, theme.contrast]);\n *\n * return (\n * <div>\n * <button onClick={() => theme.setMode('dark')}>Dark Mode</button>\n * <button onClick={() => theme.setContrast('high')}>High Contrast</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useTheme({\n defaultThemeMode = \"system\",\n defaultContrast = \"standard\",\n isMonochrome = false,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true,\n}: ThemeOptions = {}): ThemeReturn {\n const defaultValue: ThemeStorage = useMemo(\n () => ({\n mode: defaultThemeMode,\n contrast: defaultContrast,\n isMonochrome,\n }),\n [defaultThemeMode, defaultContrast, isMonochrome]\n );\n\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, { initializeWithValue });\n const [theme, setTheme] = useLocalStorage<ThemeStorage>(\n localStorageKey,\n defaultValue,\n {\n initializeWithValue,\n }\n );\n\n const isDarkMode =\n theme.mode === \"dark\" || (theme.mode === \"system\" && isDarkOS);\n\n const setMode = useCallback(\n (mode: ThemeMode) => {\n setTheme((prev) => ({ ...prev, mode }));\n },\n [setTheme]\n );\n\n const setContrast = useCallback(\n (contrast: ThemeContrast) => {\n setTheme((prev) => ({ ...prev, contrast }));\n },\n [setTheme]\n );\n\n const setMonochrome = useCallback(\n (isMonochrome: boolean) => {\n setTheme((prev) => ({ ...prev, isMonochrome }));\n },\n [setTheme]\n );\n\n return {\n ...theme,\n isDarkMode,\n setMode,\n setContrast,\n setMonochrome,\n };\n}\n","import type { LucideIcon } from \"lucide-react\";\nimport { Moon, Sun, SunMoon } from \"lucide-react\";\nimport type { Key } from \"react-aria-components\";\nimport type { ThemeContrast, ThemeMode } from \"@/utils\";\nimport type { ThemeContrastTranslations, ThemeModeTranslations } from \"./types\";\n\n/**\n * Item representation for a theme mode option.\n */\nexport interface ThemeModeItem {\n id: ThemeMode;\n value: string;\n icon: LucideIcon;\n}\n\n/**\n * Item representation for a theme contrast option.\n */\nexport interface ThemeContrastItem {\n id: ThemeContrast;\n value: string;\n}\n\n/**\n * Generates an array of theme mode options with translated labels and icons.\n *\n * @param modeDetails - Translations for theme mode labels (`system`, `light`, `dark`).\n * @returns Array of mode items with `id`, localized `value`, and `icon`.\n *\n * @example\n * ```tsx\n * const items = modeItems({\n * heading: \"Theme Mode\",\n * system: \"System\",\n * light: \"Light\",\n * dark: \"Dark\",\n * });\n * ```\n */\nexport const modeItems = (\n modeDetails: ThemeModeTranslations\n): ThemeModeItem[] => {\n return [\n { id: \"system\", value: modeDetails.system, icon: SunMoon },\n { id: \"light\", value: modeDetails.light, icon: Sun },\n { id: \"dark\", value: modeDetails.dark, icon: Moon },\n ];\n};\n\n/**\n * Generates an array of theme contrast options with translated labels.\n *\n * @param contrastDetails - Translations for contrast level labels (`standard`, `medium`, `high`).\n * @returns Array of contrast items with `id` and localized `value`.\n *\n * @example\n * ```tsx\n * const items = contrastItems({\n * heading: \"Contrast\",\n * standard: \"Standard\",\n * medium: \"Medium\",\n * high: \"High\",\n * });\n * ```\n */\nexport const contrastItems = (\n contrastDetails: ThemeContrastTranslations\n): ThemeContrastItem[] => {\n return [\n { id: \"standard\", value: contrastDetails.standard },\n { id: \"medium\", value: contrastDetails.medium },\n { id: \"high\", value: contrastDetails.high },\n ];\n};\n\n/**\n * Type guard function to check if a React Aria `Key` is a valid {@link ThemeMode}.\n *\n * @param value - The key to test.\n * @returns `true` if `value` is `\"system\"`, `\"dark\"`, or `\"light\"`.\n *\n * @example\n * ```tsx\n * if (isThemeMode(selectedKey)) {\n * setMode(selectedKey);\n * }\n * ```\n */\nexport function isThemeMode(value: Key): value is ThemeMode {\n return value === \"system\" || value === \"dark\" || value === \"light\";\n}\n\n/**\n * Type guard function to check if a React Aria `Key` is a valid {@link ThemeContrast}.\n *\n * @param value - The key to test.\n * @returns `true` if `value` is `\"standard\"`, `\"medium\"`, or `\"high\"`.\n *\n * @example\n * ```tsx\n * if (isThemeContrast(selectedKey)) {\n * setContrast(selectedKey);\n * }\n * ```\n */\nexport function isThemeContrast(value: Key): value is ThemeContrast {\n return value === \"standard\" || value === \"medium\" || value === \"high\";\n}\n","@layer adgytec.overrides {\n .selector {\n --md-list-item-background: var(--md-sys-color-surface-container);\n }\n}\n\n@layer adgytec.comps {\n .selector {\n display: grid;\n gap: var(--md-sys-layout-space-24);\n }\n\n .theme-item {\n display: grid;\n gap: var(--md-sys-layout-space-12);\n\n transition: opacity var(--md-sys-motion-expressive-fast-effects)\n var(--md-sys-motion-expressive-fast-effects-duration);\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n }\n\n .theme-item[data-disabled=\"true\"],\n .theme-item.disabled {\n opacity: var(--md-sys-state-disabled-content);\n }\n\n .theme-item-info {\n display: grid;\n gap: var(--md-sys-layout-space-4);\n }\n\n .theme-item-heading {\n color: var(--md-sys-color-on-surface);\n }\n\n .theme-item-description {\n color: var(--md-sys-color-on-surface-variant);\n }\n}\n","import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\nimport { typography } from \"@/utils\";\nimport styles from \"./themeSelector.module.css\";\n\n/**\n * Props for the {@link ThemeItem} component.\n */\nexport interface ThemeItemProps {\n /**\n * Section title heading text.\n */\n heading: string;\n\n /**\n * Optional explanatory text describing the setting.\n */\n description?: string;\n\n /**\n * Interactive control element(s) (e.g. connected button groups or switches) associated with the item.\n */\n children?: ReactNode;\n\n /**\n * Optional custom CSS class name applied to the container.\n */\n className?: string;\n\n /**\n * Whether to render inline `span` elements instead of block `div` elements.\n * Useful when nesting inside a label or interactive component like `Switch`.\n *\n * @default false\n */\n useInline?: boolean;\n\n /**\n * Whether the setting item is disabled (visually dimmed and non-interactive).\n *\n * @default false\n */\n isDisabled?: boolean;\n}\n\n/**\n * Layout helper component for a single setting item within {@link ThemeSelector}.\n *\n * Renders a styled heading (`typography.titleMedium`), an optional description (`typography.bodyMedium`),\n * and the child controls. Supports both block rendering and inline `span` rendering, as well as disabled styling.\n *\n * @example\n * ```tsx\n * import { ThemeItem } from \"@adgytec/web-ui-components\";\n *\n * export function SettingRow() {\n * return (\n * <ThemeItem\n * heading=\"Appearance\"\n * description=\"Select your preferred color mode.\"\n * >\n * <Controls />\n * </ThemeItem>\n * );\n * }\n * ```\n */\nexport const ThemeItem: React.FC<ThemeItemProps> = ({\n heading,\n description,\n children,\n className,\n useInline = false,\n isDisabled = false,\n}) => {\n if (useInline) {\n return (\n <span\n className={clsx(\n styles[\"theme-item\"],\n isDisabled && styles[\"disabled\"],\n className\n )}\n data-disabled={isDisabled || undefined}\n >\n <span className={clsx(styles[\"theme-item-info\"])}>\n <span\n className={clsx(\n typography.titleMedium,\n styles[\"theme-item-heading\"]\n )}\n slot=\"label\"\n >\n {heading}\n </span>\n\n {description && (\n <span\n className={clsx(\n typography.bodyMedium,\n styles[\"theme-item-description\"]\n )}\n slot=\"description\"\n >\n {description}\n </span>\n )}\n </span>\n\n {children}\n </span>\n );\n }\n\n return (\n <div\n className={clsx(\n styles[\"theme-item\"],\n isDisabled && styles[\"disabled\"],\n className\n )}\n data-disabled={isDisabled || undefined}\n >\n <div className={clsx(styles[\"theme-item-info\"])}>\n <h3\n className={clsx(\n typography.titleMedium,\n styles[\"theme-item-heading\"]\n )}\n >\n {heading}\n </h3>\n\n {description && (\n <p\n className={clsx(\n typography.bodyMedium,\n styles[\"theme-item-description\"]\n )}\n >\n {description}\n </p>\n )}\n </div>\n\n {children}\n </div>\n );\n};\n","import { type ReactNode, useLayoutEffect } from \"react\";\nimport { buildThemeString, useTheme } from \"@/utils\";\n\n/**\n * Props for the {@link ThemeProvider} component.\n */\nexport interface ThemeProviderProps {\n /**\n * Application content to be rendered inside the provider.\n */\n children?: ReactNode;\n}\n\n/**\n * Top-level provider component that synchronizes the application root with the current theme settings.\n *\n * Subscribes to the theme state via {@link useTheme} (mode, dark mode calculation,\n * contrast level, and monochrome setting) and dynamically assigns the computed theme\n * string to the `data-theme` attribute of `document.documentElement`.\n *\n * @example\n * ```tsx\n * import { ThemeProvider } from \"@adgytec/web-ui-components\";\n *\n * export function App() {\n * return (\n * <ThemeProvider>\n * <MainContent />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ children }) => {\n const { isDarkMode, isMonochrome, contrast } = useTheme();\n\n useLayoutEffect(() => {\n const themeString = buildThemeString({\n isDarkMode,\n isMonochrome,\n contrast,\n });\n document.documentElement.setAttribute(\"data-theme\", themeString);\n }, [isDarkMode, isMonochrome, contrast]);\n\n return children;\n};\n","import clsx from \"clsx\";\nimport { Palette } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { useTheme } from \"@/utils\";\nimport { ConnectedButton, ConnectedButtonGroup } from \"../Button\";\nimport { Divider } from \"../Divider\";\nimport { Switch } from \"../Input\";\nimport {\n ListBox,\n ListIcon,\n ListItem,\n ListLabelText,\n ListSupportingText,\n} from \"../List\";\nimport { contrastItems, isThemeContrast, isThemeMode, modeItems } from \"./core\";\nimport { ThemeItem } from \"./ThemeItem\";\nimport styles from \"./themeSelector.module.css\";\nimport type {\n ThemeContrastTranslations,\n ThemeModeTranslations,\n ThemeMonochromeTranslations,\n ThemeSelectorProps,\n} from \"./types\";\n\nconst defaultMode: ThemeModeTranslations = {\n heading: \"Theme Mode\",\n description:\n \"Choose how the interface appearance is displayed across the app. You can follow your system settings or manually use light or dark mode.\",\n\n system: \"System\",\n dark: \"Dark\",\n light: \"Light\",\n};\n\nconst defaultContrast: ThemeContrastTranslations = {\n heading: \"Theme Contrast\",\n description:\n \"Adjust the interface contrast level to improve visibility and readability based on your visual preference and viewing environment.\",\n\n standard: \"Standard\",\n medium: \"Medium\",\n high: \"High\",\n};\n\nconst defaultMonochrome: ThemeMonochromeTranslations = {\n heading: \"Monochrome\",\n description:\n \"Use a monochrome appearance with neutral tones instead of the default colorful theme. This can provide a cleaner and more focused visual experience.\",\n};\n\n/**\n * Settings UI component for managing application theme appearance.\n *\n * Provides user controls for:\n * - **Theme Mode**: Connected button group with `\"System\"`, `\"Light\"`, and `\"Dark\"` options, featuring dedicated icons.\n * - **Theme Contrast**: Connected button group with `\"Standard\"`, `\"Medium\"`, and `\"High\"` options (disabled when monochrome is active).\n * - **Monochrome Mode**: An interactive {@link ListItem} with {@link Switch} and {@link ListIcon} to toggle neutral grayscale styling.\n *\n * Directly connects to {@link useTheme} to read and update theme settings, which are\n * persisted to local storage and applied to `document.documentElement` by {@link ThemeProvider}.\n *\n * @example\n * ```tsx\n * import { ThemeProvider, ThemeSelector } from \"@adgytec/web-ui-components\";\n *\n * export function SettingsMenu() {\n * return (\n * <ThemeProvider>\n * <ThemeSelector />\n * </ThemeProvider>\n * );\n * }\n * ```\n */\nexport const ThemeSelector: React.FC<ThemeSelectorProps> = ({\n modeDetails = defaultMode,\n contrastDetails = defaultContrast,\n monochromeDetails = defaultMonochrome,\n className,\n buttonColor = \"tonal\",\n buttonSize = \"small\",\n showMode = true,\n showContrast = true,\n showMonochrome = true,\n showDividers = false,\n}) => {\n const {\n mode,\n isMonochrome,\n contrast,\n setContrast,\n setMode,\n setMonochrome,\n } = useTheme();\n\n const themeModeItems = useMemo(() => modeItems(modeDetails), [modeDetails]);\n const themeContrastItems = useMemo(\n () => contrastItems(contrastDetails),\n [contrastDetails]\n );\n\n return (\n <div className={clsx(styles[\"selector\"], className)}>\n {showMode && (\n <ThemeItem\n heading={modeDetails.heading}\n description={modeDetails.description}\n >\n <ConnectedButtonGroup\n color={buttonColor}\n size={buttonSize}\n selectionMode=\"single\"\n selectedKeys={[mode]}\n onSelectionChange={(keys) => {\n const themeMode = Array.from(keys)[0];\n if (!isThemeMode(themeMode)) return;\n\n setMode(themeMode);\n }}\n >\n {themeModeItems.map((item) => (\n <ConnectedButton\n key={item.id}\n id={item.id}\n icon={item.icon}\n >\n {item.value}\n </ConnectedButton>\n ))}\n </ConnectedButtonGroup>\n </ThemeItem>\n )}\n\n {showDividers && showMode && (showContrast || showMonochrome) && (\n <Divider />\n )}\n\n {showContrast && (\n <ThemeItem\n heading={contrastDetails.heading}\n description={contrastDetails.description}\n isDisabled={isMonochrome}\n >\n <ConnectedButtonGroup\n color={buttonColor}\n size={buttonSize}\n selectionMode=\"single\"\n selectedKeys={[contrast]}\n onSelectionChange={(keys) => {\n const themeContrast = Array.from(keys)[0];\n if (!isThemeContrast(themeContrast)) return;\n\n setContrast(themeContrast);\n }}\n isDisabled={isMonochrome}\n >\n {themeContrastItems.map((item) => (\n <ConnectedButton key={item.id} id={item.id}>\n {item.value}\n </ConnectedButton>\n ))}\n </ConnectedButtonGroup>\n </ThemeItem>\n )}\n\n {showDividers && showContrast && showMonochrome && <Divider />}\n\n {showMonochrome && (\n <ListBox aria-label={monochromeDetails.heading}>\n <ListItem\n onAction={() => setMonochrome(!isMonochrome)}\n leading={<ListIcon icon={Palette} />}\n label={\n <ListLabelText>\n {monochromeDetails.heading}\n </ListLabelText>\n }\n supporting={\n <ListSupportingText>\n {monochromeDetails.description}\n </ListSupportingText>\n }\n trailing={[\n <Switch\n key=\"selection\"\n isSelected={isMonochrome}\n onChange={setMonochrome}\n aria-label={monochromeDetails.heading}\n />,\n ]}\n />\n </ListBox>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
package/dist/chunks/Toolbar
CHANGED
package/dist/chunks/Toolbar.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar","names":["Toolbar","AriaToolbar","clsx","styles","_c","clsx","styles","require_compiler_runtime","clsx$1","toolbar_module_default","Toolbar$1","props","Toolbar","\"toolbar\"","className","renderProps","variant","color","import_compiler_runtime","ToolbarToggleButtonGroup","$","t0","t1","t2","ToggleButtonGroup"],"sources":["../../src/components/Toolbar/toolbar.module.css","../../src/components/Toolbar/Toolbar.tsx","../../src/components/Toolbar/ToolbarToggleButtonGroup.tsx"],"sourcesContent":["/* configurable tokens\n*\n* --md-toolbar-background\n*\n* --md-toolbar-button-background\n* --md-toolbar-toggle-button-background\n* --md-toolbar-toggle-button-selected-background\n*\n* --md-toolbar-button-color\n* --md-toolbar-toggle-button-color\n* --md-toolbar-toggle-button-selected-color\n*\n* configurable tokens end */\n\n@layer adgytec.comps {\n .toolbar {\n --_md-toolbar-background: var(\n --md-toolbar-background,\n var(--_md-toolbar-background-default)\n );\n --_md-toolbar-button-background: var(\n --md-toolbar-button-background,\n var(--_md-toolbar-button-background-default)\n );\n --_md-toolbar-toggle-button-background: var(\n --md-toolbar-toggle-button-background,\n var(--_md-toolbar-toggle-button-background-default)\n );\n --_md-toolbar-toggle-button-selected-background: var(\n --md-toolbar-toggle-button-selected-background,\n var(--_md-toolbar-toggle-button-selected-background-default)\n );\n --_md-toolbar-button-color: var(\n --md-toolbar-button-color,\n var(--_md-toolbar-button-color-default)\n );\n --_md-toolbar-toggle-button-color: var(\n --md-toolbar-toggle-button-color,\n var(--_md-toolbar-toggle-button-color-default)\n );\n --_md-toolbar-toggle-button-selected-color: var(\n --md-toolbar-toggle-button-selected-color,\n var(--_md-toolbar-toggle-button-selected-color-default)\n );\n\n --md-divider-color: var(--_md-toolbar-button-color);\n\n --_md-toolbar-space-between-actions: var(--md-sys-layout-space-4);\n\n border-radius: var(--md-sys-shape-corner-radius-full);\n padding: var(--md-sys-layout-space-8);\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--_md-toolbar-space-between-actions);\n\n background-color: var(--_md-toolbar-background);\n\n .section {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--_md-toolbar-space-between-actions);\n }\n\n &[data-variant=\"floating\"] {\n box-shadow: var(--md-sys-elevation-shadow-3);\n }\n\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n\n .section {\n flex-direction: column;\n }\n }\n }\n\n .toolbar[data-color=\"standard\"] {\n --_md-toolbar-background-default: var(--md-sys-color-surface-container);\n\n --_md-toolbar-button-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-toggle-button-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-toggle-button-selected-background-default: var(\n --md-sys-color-secondary-container\n );\n\n --_md-toolbar-button-color-default: var(\n --md-sys-color-on-surface-variant\n );\n\n --_md-toolbar-toggle-button-color-default: var(\n --md-sys-color-on-surface-variant\n );\n\n --_md-toolbar-toggle-button-selected-color-default: var(\n --md-sys-color-on-secondary-container\n );\n }\n\n .toolbar[data-color=\"vibrant\"] {\n --_md-toolbar-background-default: var(--md-sys-color-primary-container);\n\n --_md-toolbar-button-background-default: var(\n --md-sys-color-primary-container\n );\n\n --_md-toolbar-toggle-button-background-default: var(\n --md-sys-color-primary-container\n );\n\n --_md-toolbar-toggle-button-selected-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-button-color-default: var(\n --md-sys-color-on-primary-container\n );\n\n --_md-toolbar-toggle-button-color-default: var(\n --md-sys-color-on-primary-container\n );\n\n --_md-toolbar-toggle-button-selected-color-default: var(\n --md-sys-color-on-surface\n );\n }\n}\n\n@layer adgytec.overrides {\n .toolbar[data-orientation=\"horizontal\"] [data-divider] {\n block-size: auto;\n align-self: stretch;\n }\n\n /* button reset */\n .toolbar [data-visual-button] {\n /* outlined button */\n --_md-button-outline-width: 0px;\n border: none;\n\n /* elevated button */\n box-shadow: none;\n\n --_md-toggle-button-selected-shape: var(--_md-button-shape);\n\n &[data-disabled] {\n background-color: transparent;\n }\n }\n\n .toolbar [data-button]:not([data-color=\"filled\"]),\n .toolbar [data-toggle-button] {\n /* colors */\n --md-button-background: var(--_md-toolbar-button-background);\n --md-toggle-button-selected-background: var(\n --_md-toolbar-toggle-button-selected-background\n );\n --md-toggle-button-background: var(\n --_md-toolbar-toggle-button-background\n );\n\n --md-button-color: var(--_md-toolbar-button-color);\n --md-toggle-button-selected-color: var(\n --_md-toolbar-toggle-button-selected-color\n );\n --md-toggle-button-color: var(--_md-toolbar-toggle-button-color);\n }\n}\n","import clsx from \"clsx\";\nimport { Toolbar as AriaToolbar } from \"react-aria-components\";\nimport styles from \"./toolbar.module.css\";\nimport type { ToolbarProps } from \"./types\";\n\n/**\n * Container for a set of related action buttons, toggle buttons, and dividers, following\n * [Material 3 Toolbar](https://m3.material.io/) design patterns.\n *\n * Extends React Aria Components `Toolbar` with Material 3 styling and interactive behaviors:\n * - Manages single-tab-stop keyboard navigation across action items using arrow keys.\n * - Supports horizontal and vertical orientations via the `orientation` prop.\n * - Supports docked and elevated floating display variants via `variant`.\n * - Provides `\"standard\"` (surface container) and `\"vibrant\"` (primary container) color themes via `color`.\n * - Automatically adjusts button borders, shadows, and colors to seamlessly fit the toolbar surface.\n *\n * Configurable CSS tokens:\n * - `--md-toolbar-background`: Background color of the toolbar.\n * - `--md-toolbar-button-background`: Background color for buttons within the toolbar.\n * - `--md-toolbar-toggle-button-background`: Background color for toggle buttons.\n * - `--md-toolbar-toggle-button-selected-background`: Background color for selected toggle buttons.\n * - `--md-toolbar-button-color`: Text and icon color for buttons within the toolbar.\n * - `--md-toolbar-toggle-button-color`: Text and icon color for toggle buttons within the toolbar.\n * - `--md-toolbar-toggle-button-selected-color`: Text and icon color for selected toggle buttons.\n *\n * @example\n * ```tsx\n * import {\n * Divider,\n * IconButton,\n * ToggleIconButton,\n * Toolbar,\n * ToolbarToggleButtonGroup,\n * } from \"@adgytec/web-ui-components\";\n * import { AlignCenter, AlignLeft, AlignRight, Bold, Italic } from \"lucide-react\";\n *\n * export function EditorToolbar() {\n * return (\n * <Toolbar aria-label=\"Editor actions\" variant=\"floating\">\n * <ToolbarToggleButtonGroup selectionMode=\"single\">\n * <ToggleIconButton id=\"left\" icon={AlignLeft} aria-label=\"Align left\" />\n * <ToggleIconButton id=\"center\" icon={AlignCenter} aria-label=\"Align center\" />\n * <ToggleIconButton id=\"right\" icon={AlignRight} aria-label=\"Align right\" />\n * </ToolbarToggleButtonGroup>\n * <Divider orientation=\"vertical\" />\n * <IconButton icon={Bold} aria-label=\"Bold\" />\n * <IconButton icon={Italic} aria-label=\"Italic\" />\n * </Toolbar>\n * );\n * }\n * ```\n */\nexport const Toolbar: React.FC<ToolbarProps> = ({\n className,\n variant = \"docked\",\n color = \"standard\",\n ...props\n}) => {\n return (\n <AriaToolbar\n className={(renderProps) =>\n clsx(\n styles[\"toolbar\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n data-variant={variant}\n data-color={color}\n />\n );\n};\n","import clsx from \"clsx\";\nimport { ToggleButtonGroup } from \"react-aria-components\";\nimport styles from \"./toolbar.module.css\";\n\n/**\n * Props for the {@link ToolbarToggleButtonGroup} component.\n * Extends React Aria Components `ToggleButtonGroup` props.\n */\nexport interface ToolbarToggleButtonGroupProps\n extends React.ComponentPropsWithRef<typeof ToggleButtonGroup> {}\n\n/**\n * Section wrapper for grouping toggle buttons inside a {@link Toolbar}.\n *\n * Extends React Aria Components `ToggleButtonGroup` to arrange grouped toggle buttons\n * (e.g. alignment choices, text format styles) with appropriate toolbar spacing,\n * selection handling, and orientation alignment.\n *\n * @example\n * ```tsx\n * import {\n * ToggleIconButton,\n * Toolbar,\n * ToolbarToggleButtonGroup,\n * } from \"@adgytec/web-ui-components\";\n * import { Bold, Italic } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <Toolbar aria-label=\"Text styles\">\n * <ToolbarToggleButtonGroup selectionMode=\"multiple\" aria-label=\"Format\">\n * <ToggleIconButton id=\"bold\" icon={Bold} aria-label=\"Bold\" />\n * <ToggleIconButton id=\"italic\" icon={Italic} aria-label=\"Italic\" />\n * </ToolbarToggleButtonGroup>\n * </Toolbar>\n * );\n * }\n * ```\n */\nexport const ToolbarToggleButtonGroup: React.FC<\n ToolbarToggleButtonGroupProps\n> = ({ className, ...props }) => {\n return (\n <ToggleButtonGroup\n className={(renderProps) =>\n clsx(\n styles[\"section\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;;GCoDaA,KAAmC,EAC5C,cACA,aAAU,UACV,WAAQ,YACR,GAAGW,QAGC,kBAACV,GAAD;CACI,YAAY,MACRC,EACIC,EAAOU,SACP,OAAOC,KAAc,aACfA,EAAUC,CAAW,IACrBD,CACV;CAEJ,GAAIH;CACJ,gBAAcK;CACd,cAAYC;AAAM,CAAA,YC/BjBE,KAET,MAAA;CAAA,IAAAC,KAAA,GAAAhB,EAAAA,EAAAA,CAAA,CAAA,GAAAU,GAAAH;CAAA,AAAAS,EAAA,OAAAC,KAAwB,IAAAD,EAAA,IAAA,IAAAA,EAAA,OAAvB,eAAA,GAAAT,KAAAU,GAAuB,EAAA,KAAAA,GAAA,EAAA,KAAAP,GAAA,EAAA,KAAAH;CAAA,IAAAW;CAAA,AAAAF,EAAA,OAAAN,IASX,IAAAM,EAAA,MANM,KAAA,MACPf,EACIC,EAAM,SACN,OAAOQ,KAAc,aACfA,EAAUC,CACF,IAFdD,CAGJ,GAAC,EAAA,KAAAA,GAAA,EAAA,KAAAQ;CAAA,IAAAC;CAGP,OAHOH,EAAA,OAAAT,KAAAS,EAAA,OAAAE,KAPT,IAAA,kBAACE,GAAD;EACe,WAAAF;EAMN,GAEDX;CAAK,CAAA,GACX,EAAA,KAAAA,GAAA,EAAA,KAAAW,GAAA,EAAA,KAAAC,KAAA,IAAAH,EAAA,IAVFG;AAUE"}
|
|
1
|
+
{"version":3,"file":"Toolbar","names":["Toolbar","AriaToolbar","clsx","styles","_c","clsx","styles","require_compiler_runtime","clsx$1","toolbar_module_default","Toolbar$1","props","Toolbar","\"toolbar\"","className","renderProps","variant","color","import_compiler_runtime","ToolbarToggleButtonGroup","$","t0","t1","t2","ToggleButtonGroup"],"sources":["../../src/components/Toolbar/toolbar.module.css","../../src/components/Toolbar/Toolbar.tsx","../../src/components/Toolbar/ToolbarToggleButtonGroup.tsx"],"sourcesContent":["/* configurable tokens\n*\n* --md-toolbar-background\n*\n* --md-toolbar-button-background\n* --md-toolbar-toggle-button-background\n* --md-toolbar-toggle-button-selected-background\n*\n* --md-toolbar-button-color\n* --md-toolbar-toggle-button-color\n* --md-toolbar-toggle-button-selected-color\n*\n* configurable tokens end */\n\n@layer adgytec.comps {\n .toolbar {\n --_md-toolbar-background: var(\n --md-toolbar-background,\n var(--_md-toolbar-background-default)\n );\n --_md-toolbar-button-background: var(\n --md-toolbar-button-background,\n var(--_md-toolbar-button-background-default)\n );\n --_md-toolbar-toggle-button-background: var(\n --md-toolbar-toggle-button-background,\n var(--_md-toolbar-toggle-button-background-default)\n );\n --_md-toolbar-toggle-button-selected-background: var(\n --md-toolbar-toggle-button-selected-background,\n var(--_md-toolbar-toggle-button-selected-background-default)\n );\n --_md-toolbar-button-color: var(\n --md-toolbar-button-color,\n var(--_md-toolbar-button-color-default)\n );\n --_md-toolbar-toggle-button-color: var(\n --md-toolbar-toggle-button-color,\n var(--_md-toolbar-toggle-button-color-default)\n );\n --_md-toolbar-toggle-button-selected-color: var(\n --md-toolbar-toggle-button-selected-color,\n var(--_md-toolbar-toggle-button-selected-color-default)\n );\n\n --md-divider-color: var(--_md-toolbar-button-color);\n\n --_md-toolbar-space-between-actions: var(--md-sys-layout-space-4);\n\n border-radius: var(--md-sys-shape-corner-radius-full);\n padding: var(--md-sys-layout-space-8);\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--_md-toolbar-space-between-actions);\n\n background-color: var(--_md-toolbar-background);\n\n .section {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--_md-toolbar-space-between-actions);\n }\n\n &[data-variant=\"floating\"] {\n box-shadow: var(--md-sys-elevation-shadow-3);\n }\n\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n\n .section {\n flex-direction: column;\n }\n }\n }\n\n .toolbar[data-color=\"standard\"] {\n --_md-toolbar-background-default: var(--md-sys-color-surface-container);\n\n --_md-toolbar-button-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-toggle-button-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-toggle-button-selected-background-default: var(\n --md-sys-color-secondary-container\n );\n\n --_md-toolbar-button-color-default: var(\n --md-sys-color-on-surface-variant\n );\n\n --_md-toolbar-toggle-button-color-default: var(\n --md-sys-color-on-surface-variant\n );\n\n --_md-toolbar-toggle-button-selected-color-default: var(\n --md-sys-color-on-secondary-container\n );\n }\n\n .toolbar[data-color=\"vibrant\"] {\n --_md-toolbar-background-default: var(--md-sys-color-primary-container);\n\n --_md-toolbar-button-background-default: var(\n --md-sys-color-primary-container\n );\n\n --_md-toolbar-toggle-button-background-default: var(\n --md-sys-color-primary-container\n );\n\n --_md-toolbar-toggle-button-selected-background-default: var(\n --md-sys-color-surface-container\n );\n\n --_md-toolbar-button-color-default: var(\n --md-sys-color-on-primary-container\n );\n\n --_md-toolbar-toggle-button-color-default: var(\n --md-sys-color-on-primary-container\n );\n\n --_md-toolbar-toggle-button-selected-color-default: var(\n --md-sys-color-on-surface\n );\n }\n}\n\n@layer adgytec.overrides {\n .toolbar[data-orientation=\"horizontal\"] [data-divider] {\n block-size: auto;\n align-self: stretch;\n }\n\n /* button reset */\n .toolbar [data-visual-button] {\n /* outlined button */\n --_md-button-outline-width: 0px;\n border: none;\n\n /* elevated button */\n box-shadow: none;\n\n --_md-toggle-button-selected-shape: var(--_md-button-shape);\n\n &[data-disabled] {\n background-color: transparent;\n }\n }\n\n .toolbar [data-button]:not([data-color=\"filled\"]),\n .toolbar [data-toggle-button] {\n /* colors */\n --md-button-background: var(--_md-toolbar-button-background);\n --md-toggle-button-selected-background: var(\n --_md-toolbar-toggle-button-selected-background\n );\n --md-toggle-button-background: var(\n --_md-toolbar-toggle-button-background\n );\n\n --md-button-color: var(--_md-toolbar-button-color);\n --md-toggle-button-selected-color: var(\n --_md-toolbar-toggle-button-selected-color\n );\n --md-toggle-button-color: var(--_md-toolbar-toggle-button-color);\n }\n}\n","import clsx from \"clsx\";\nimport { Toolbar as AriaToolbar } from \"react-aria-components\";\nimport styles from \"./toolbar.module.css\";\nimport type { ToolbarProps } from \"./types\";\n\n/**\n * Container for a set of related action buttons, toggle buttons, and dividers, following\n * [Material 3 Toolbar](https://m3.material.io/) design patterns.\n *\n * Extends React Aria Components `Toolbar` with Material 3 styling and interactive behaviors:\n * - Manages single-tab-stop keyboard navigation across action items using arrow keys.\n * - Supports horizontal and vertical orientations via the `orientation` prop.\n * - Supports docked and elevated floating display variants via `variant`.\n * - Provides `\"standard\"` (surface container) and `\"vibrant\"` (primary container) color themes via `color`.\n * - Automatically adjusts button borders, shadows, and colors to seamlessly fit the toolbar surface.\n *\n * Configurable CSS tokens:\n * - `--md-toolbar-background`: Background color of the toolbar.\n * - `--md-toolbar-button-background`: Background color for buttons within the toolbar.\n * - `--md-toolbar-toggle-button-background`: Background color for toggle buttons.\n * - `--md-toolbar-toggle-button-selected-background`: Background color for selected toggle buttons.\n * - `--md-toolbar-button-color`: Text and icon color for buttons within the toolbar.\n * - `--md-toolbar-toggle-button-color`: Text and icon color for toggle buttons within the toolbar.\n * - `--md-toolbar-toggle-button-selected-color`: Text and icon color for selected toggle buttons.\n *\n * @example\n * ```tsx\n * import {\n * Divider,\n * IconButton,\n * ToggleIconButton,\n * Toolbar,\n * ToolbarToggleButtonGroup,\n * } from \"@adgytec/web-ui-components\";\n * import { AlignCenter, AlignLeft, AlignRight, Bold, Italic } from \"lucide-react\";\n *\n * export function EditorToolbar() {\n * return (\n * <Toolbar aria-label=\"Editor actions\" variant=\"floating\">\n * <ToolbarToggleButtonGroup selectionMode=\"single\">\n * <ToggleIconButton id=\"left\" icon={AlignLeft} aria-label=\"Align left\" />\n * <ToggleIconButton id=\"center\" icon={AlignCenter} aria-label=\"Align center\" />\n * <ToggleIconButton id=\"right\" icon={AlignRight} aria-label=\"Align right\" />\n * </ToolbarToggleButtonGroup>\n * <Divider orientation=\"vertical\" />\n * <IconButton icon={Bold} aria-label=\"Bold\" />\n * <IconButton icon={Italic} aria-label=\"Italic\" />\n * </Toolbar>\n * );\n * }\n * ```\n */\nexport const Toolbar: React.FC<ToolbarProps> = ({\n className,\n variant = \"docked\",\n color = \"standard\",\n ...props\n}) => {\n return (\n <AriaToolbar\n className={(renderProps) =>\n clsx(\n styles[\"toolbar\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n data-variant={variant}\n data-color={color}\n />\n );\n};\n","import clsx from \"clsx\";\nimport { ToggleButtonGroup } from \"react-aria-components\";\nimport styles from \"./toolbar.module.css\";\n\n/**\n * Props for the {@link ToolbarToggleButtonGroup} component.\n * Extends React Aria Components `ToggleButtonGroup` props.\n */\nexport interface ToolbarToggleButtonGroupProps\n extends React.ComponentPropsWithRef<typeof ToggleButtonGroup> {}\n\n/**\n * Section wrapper for grouping toggle buttons inside a {@link Toolbar}.\n *\n * Extends React Aria Components `ToggleButtonGroup` to arrange grouped toggle buttons\n * (e.g. alignment choices, text format styles) with appropriate toolbar spacing,\n * selection handling, and orientation alignment.\n *\n * @example\n * ```tsx\n * import {\n * ToggleIconButton,\n * Toolbar,\n * ToolbarToggleButtonGroup,\n * } from \"@adgytec/web-ui-components\";\n * import { Bold, Italic } from \"lucide-react\";\n *\n * export function Example() {\n * return (\n * <Toolbar aria-label=\"Text styles\">\n * <ToolbarToggleButtonGroup selectionMode=\"multiple\" aria-label=\"Format\">\n * <ToggleIconButton id=\"bold\" icon={Bold} aria-label=\"Bold\" />\n * <ToggleIconButton id=\"italic\" icon={Italic} aria-label=\"Italic\" />\n * </ToolbarToggleButtonGroup>\n * </Toolbar>\n * );\n * }\n * ```\n */\nexport const ToolbarToggleButtonGroup: React.FC<\n ToolbarToggleButtonGroupProps\n> = ({ className, ...props }) => {\n return (\n <ToggleButtonGroup\n className={(renderProps) =>\n clsx(\n styles[\"section\"],\n typeof className === \"function\"\n ? className(renderProps)\n : className\n )\n }\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;;A,GCoDaA,KAAmC,EAC5C,cACA,aAAU,UACV,WAAQ,YACR,GAAGW,QAGC,kBAACV,GAAD;CACI,YAAY,MACRC,EACIC,EAAOU,SACP,OAAOC,KAAc,aACfA,EAAUC,CAAW,IACrBD,CACV;CAEJ,GAAIH;CACJ,gBAAcK;CACd,cAAYC;AAAM,CAAA,G,SC/BjBE,KAET,MAAA;CAAA,IAAAC,KAAA,GAAAhB,EAAAA,EAAAA,CAAA,CAAA,GAAAU,GAAAH;CAAA,AAAAS,EAAA,OAAAC,KAAwB,IAAAD,EAAA,IAAA,IAAAA,EAAA,OAAvB,eAAA,GAAAT,KAAAU,GAAuB,EAAA,KAAAA,GAAA,EAAA,KAAAP,GAAA,EAAA,KAAAH;CAAA,IAAAW;CAAA,AAAAF,EAAA,OAAAN,IASX,IAAAM,EAAA,MANM,KAAA,MACPf,EACIC,EAAM,SACN,OAAOQ,KAAc,aACfA,EAAUC,CACF,IAFdD,CAGJ,GAAC,EAAA,KAAAA,GAAA,EAAA,KAAAQ;CAAA,IAAAC;CAGP,OAHOH,EAAA,OAAAT,KAAAS,EAAA,OAAAE,KAPT,IAAA,kBAACE,GAAD;EACe,WAAAF;EAMN,GAEDX;CAAK,CAAA,GACX,EAAA,KAAAA,GAAA,EAAA,KAAAW,GAAA,EAAA,KAAAC,KAAA,IAAAH,EAAA,IAVFG;AAUE"}
|