@gnome-ui/react 1.45.1 → 1.45.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AboutDialog/AboutDialog.cjs +1 -1
- package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -1
- package/dist/components/AboutDialog/AboutDialog.d.ts +1 -1
- package/dist/components/AboutDialog/AboutDialog.js +2 -3
- package/dist/components/AboutDialog/AboutDialog.js.map +1 -1
- package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
- package/dist/components/AboutDialog/AboutDialog.module.css.js +28 -29
- package/dist/components/AboutDialog.cjs +1 -1
- package/dist/components/ActionRow/ActionRow.cjs +1 -1
- package/dist/components/ActionRow/ActionRow.cjs.map +1 -1
- package/dist/components/ActionRow/ActionRow.d.ts +1 -1
- package/dist/components/ActionRow/ActionRow.js +2 -2
- package/dist/components/ActionRow/ActionRow.js.map +1 -1
- package/dist/components/ActionRow.cjs +1 -1
- package/dist/components/Avatar/Avatar.cjs +1 -1
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +1 -1
- package/dist/components/Avatar/Avatar.js +2 -2
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar.cjs +1 -1
- package/dist/components/AvatarRotator/AvatarRotator.cjs +1 -1
- package/dist/components/AvatarRotator/AvatarRotator.cjs.map +1 -1
- package/dist/components/AvatarRotator/AvatarRotator.d.ts +1 -1
- package/dist/components/AvatarRotator/AvatarRotator.js +2 -2
- package/dist/components/AvatarRotator/AvatarRotator.js.map +1 -1
- package/dist/components/AvatarRotator.cjs +1 -1
- package/dist/components/Badge/Badge.cjs +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.d.ts +1 -1
- package/dist/components/Badge/Badge.js +2 -2
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge.cjs +1 -1
- package/dist/components/Banner/Banner.cjs +1 -1
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.d.ts +1 -1
- package/dist/components/Banner/Banner.js +34 -36
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.module.css.cjs +1 -1
- package/dist/components/Banner/Banner.module.css.js +11 -12
- package/dist/components/Banner.cjs +1 -1
- package/dist/components/Bin/Bin.cjs +1 -1
- package/dist/components/Bin/Bin.cjs.map +1 -1
- package/dist/components/Bin/Bin.d.ts +1 -1
- package/dist/components/Bin/Bin.js +4 -6
- package/dist/components/Bin/Bin.js.map +1 -1
- package/dist/components/Bin.cjs +1 -1
- package/dist/components/Blockquote/Blockquote.cjs +1 -1
- package/dist/components/Blockquote/Blockquote.cjs.map +1 -1
- package/dist/components/Blockquote/Blockquote.d.ts +1 -1
- package/dist/components/Blockquote/Blockquote.js +24 -26
- package/dist/components/Blockquote/Blockquote.js.map +1 -1
- package/dist/components/Blockquote.cjs +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.d.ts +1 -1
- package/dist/components/BottomSheet/BottomSheet.js +2 -3
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.css.js +8 -9
- package/dist/components/BottomSheet.cjs +1 -1
- package/dist/components/Box/Box.cjs +1 -1
- package/dist/components/Box/Box.cjs.map +1 -1
- package/dist/components/Box/Box.d.ts +1 -1
- package/dist/components/Box/Box.js +2 -2
- package/dist/components/Box/Box.js.map +1 -1
- package/dist/components/Box.cjs +1 -1
- package/dist/components/BoxedList/BoxedList.cjs +1 -1
- package/dist/components/BoxedList/BoxedList.cjs.map +1 -1
- package/dist/components/BoxedList/BoxedList.d.ts +1 -1
- package/dist/components/BoxedList/BoxedList.js +2 -2
- package/dist/components/BoxedList/BoxedList.js.map +1 -1
- package/dist/components/BoxedList.cjs +1 -1
- package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
- package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
- package/dist/components/BreakpointBin/BreakpointBin.d.ts +1 -1
- package/dist/components/BreakpointBin/BreakpointBin.js +2 -2
- package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
- package/dist/components/BreakpointBin.cjs +1 -1
- package/dist/components/Button/Button.cjs +1 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button.cjs +1 -1
- package/dist/components/ButtonContent/ButtonContent.cjs +1 -1
- package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -1
- package/dist/components/ButtonContent/ButtonContent.d.ts +1 -1
- package/dist/components/ButtonContent/ButtonContent.js +24 -26
- package/dist/components/ButtonContent/ButtonContent.js.map +1 -1
- package/dist/components/ButtonContent.cjs +1 -1
- package/dist/components/ButtonRow/ButtonRow.cjs +1 -1
- package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -1
- package/dist/components/ButtonRow/ButtonRow.d.ts +1 -1
- package/dist/components/ButtonRow/ButtonRow.js +22 -24
- package/dist/components/ButtonRow/ButtonRow.js.map +1 -1
- package/dist/components/ButtonRow.cjs +1 -1
- package/dist/components/Card/Card.cjs +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/Card.js +10 -12
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.module.css.cjs +1 -1
- package/dist/components/Card/Card.module.css.js +4 -5
- package/dist/components/Card.cjs +1 -1
- package/dist/components/Carousel/Carousel.cjs +1 -1
- package/dist/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +3 -3
- package/dist/components/Carousel/Carousel.js +28 -34
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel.cjs +1 -1
- package/dist/components/CheckRow/CheckRow.cjs +1 -1
- package/dist/components/CheckRow/CheckRow.cjs.map +1 -1
- package/dist/components/CheckRow/CheckRow.d.ts +1 -1
- package/dist/components/CheckRow/CheckRow.js +7 -7
- package/dist/components/CheckRow/CheckRow.js.map +1 -1
- package/dist/components/CheckRow.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.js +2 -2
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox.cjs +1 -1
- package/dist/components/Chip/Chip.cjs +1 -1
- package/dist/components/Chip/Chip.cjs.map +1 -1
- package/dist/components/Chip/Chip.d.ts +1 -1
- package/dist/components/Chip/Chip.js +2 -2
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/Chip.cjs +1 -1
- package/dist/components/Clamp/Clamp.cjs +1 -1
- package/dist/components/Clamp/Clamp.cjs.map +1 -1
- package/dist/components/Clamp/Clamp.d.ts +1 -1
- package/dist/components/Clamp/Clamp.js +9 -11
- package/dist/components/Clamp/Clamp.js.map +1 -1
- package/dist/components/Clamp.cjs +1 -1
- package/dist/components/ColorPicker/ColorPicker.cjs +1 -1
- package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
- package/dist/components/ColorPicker/ColorPicker.d.ts +2 -2
- package/dist/components/ColorPicker/ColorPicker.js +33 -37
- package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
- package/dist/components/ColorPicker/ColorPicker.module.css.js +9 -10
- package/dist/components/ColorPicker.cjs +1 -1
- package/dist/components/ColumnView/ColumnView.cjs +1 -1
- package/dist/components/ColumnView/ColumnView.cjs.map +1 -1
- package/dist/components/ColumnView/ColumnView.d.ts +1 -1
- package/dist/components/ColumnView/ColumnView.js +24 -28
- package/dist/components/ColumnView/ColumnView.js.map +1 -1
- package/dist/components/ColumnView.cjs +1 -1
- package/dist/components/ComboRow/ComboRow.cjs +1 -1
- package/dist/components/ComboRow/ComboRow.cjs.map +1 -1
- package/dist/components/ComboRow/ComboRow.d.ts +1 -1
- package/dist/components/ComboRow/ComboRow.js +2 -2
- package/dist/components/ComboRow/ComboRow.js.map +1 -1
- package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
- package/dist/components/ComboRow/ComboRow.module.css.js +24 -25
- package/dist/components/ComboRow.cjs +1 -1
- package/dist/components/ContributionGraph/ContributionGraph.cjs +1 -1
- package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -1
- package/dist/components/ContributionGraph/ContributionGraph.d.ts +1 -1
- package/dist/components/ContributionGraph/ContributionGraph.js +2 -2
- package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -1
- package/dist/components/ContributionGraph.cjs +1 -1
- package/dist/components/CountDownTimer/CountDownTimer.cjs +1 -1
- package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -1
- package/dist/components/CountDownTimer/CountDownTimer.d.ts +1 -1
- package/dist/components/CountDownTimer/CountDownTimer.js +2 -2
- package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -1
- package/dist/components/CountDownTimer.cjs +1 -1
- package/dist/components/Dialog/Dialog.cjs +1 -1
- package/dist/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/Dialog/Dialog.d.ts +1 -1
- package/dist/components/Dialog/Dialog.js +2 -2
- package/dist/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
- package/dist/components/Dialog/Dialog.module.css.js +8 -9
- package/dist/components/Dialog/dialogUtils.cjs +1 -1
- package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
- package/dist/components/Dialog/dialogUtils.js.map +1 -1
- package/dist/components/Dialog.cjs +1 -1
- package/dist/components/Drawer/Drawer.cjs +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +1 -1
- package/dist/components/Drawer/Drawer.js +2 -2
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
- package/dist/components/Drawer/Drawer.module.css.js +11 -12
- package/dist/components/Drawer.cjs +1 -1
- package/dist/components/Dropdown/Dropdown.cjs +1 -1
- package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/components/Dropdown/Dropdown.d.ts +1 -1
- package/dist/components/Dropdown/Dropdown.js +2 -2
- package/dist/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
- package/dist/components/Dropdown/Dropdown.module.css.js +20 -21
- package/dist/components/Dropdown.cjs +1 -1
- package/dist/components/EntryRow/EntryRow.cjs +1 -1
- package/dist/components/EntryRow/EntryRow.cjs.map +1 -1
- package/dist/components/EntryRow/EntryRow.d.ts +1 -1
- package/dist/components/EntryRow/EntryRow.js +2 -2
- package/dist/components/EntryRow/EntryRow.js.map +1 -1
- package/dist/components/EntryRow.cjs +1 -1
- package/dist/components/ExpanderRow/ExpanderRow.cjs +1 -1
- package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -1
- package/dist/components/ExpanderRow/ExpanderRow.d.ts +1 -1
- package/dist/components/ExpanderRow/ExpanderRow.js +2 -2
- package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -1
- package/dist/components/ExpanderRow.cjs +1 -1
- package/dist/components/Footer/Footer.cjs +1 -1
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.d.ts +1 -1
- package/dist/components/Footer/Footer.js +22 -24
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer.cjs +1 -1
- package/dist/components/Frame/Frame.cjs +1 -1
- package/dist/components/Frame/Frame.cjs.map +1 -1
- package/dist/components/Frame/Frame.d.ts +1 -1
- package/dist/components/Frame/Frame.js +5 -7
- package/dist/components/Frame/Frame.js.map +1 -1
- package/dist/components/Frame.cjs +1 -1
- package/dist/components/GnomeProvider/GnomeContext.cjs +1 -1
- package/dist/components/GnomeProvider/GnomeContext.cjs.map +1 -1
- package/dist/components/GnomeProvider/GnomeContext.js.map +1 -1
- package/dist/components/GnomeProvider/GnomeProvider.cjs +1 -1
- package/dist/components/GnomeProvider/GnomeProvider.cjs.map +1 -1
- package/dist/components/GnomeProvider/GnomeProvider.d.ts +1 -1
- package/dist/components/GnomeProvider/GnomeProvider.js +2 -2
- package/dist/components/GnomeProvider/GnomeProvider.js.map +1 -1
- package/dist/components/HeaderBar/HeaderBar.cjs +1 -1
- package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -1
- package/dist/components/HeaderBar/HeaderBar.d.ts +1 -1
- package/dist/components/HeaderBar/HeaderBar.js +26 -28
- package/dist/components/HeaderBar/HeaderBar.js.map +1 -1
- package/dist/components/HeaderBar.cjs +1 -1
- package/dist/components/Icon/Icon.cjs +1 -1
- package/dist/components/Icon/Icon.cjs.map +1 -1
- package/dist/components/Icon/Icon.d.ts +1 -1
- package/dist/components/Icon/Icon.js +2 -2
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/Icon.cjs +1 -1
- package/dist/components/IconButton/IconButton.cjs +1 -1
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.js +4 -4
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/IconButton.cjs +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +2 -2
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +1 -1
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js +2 -2
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -1
- package/dist/components/InlineViewSwitcher.cjs +1 -1
- package/dist/components/Link/Link.cjs +1 -1
- package/dist/components/Link/Link.cjs.map +1 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Link/Link.js +2 -2
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/Link.cjs +1 -1
- package/dist/components/LinkedGroup/LinkedGroup.cjs +1 -1
- package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -1
- package/dist/components/LinkedGroup/LinkedGroup.d.ts +1 -1
- package/dist/components/LinkedGroup/LinkedGroup.js +9 -11
- package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -1
- package/dist/components/LinkedGroup.cjs +1 -1
- package/dist/components/NavigationSplitView/NavigationSplitView.cjs +1 -1
- package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -1
- package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +1 -1
- package/dist/components/NavigationSplitView/NavigationSplitView.js +2 -2
- package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -1
- package/dist/components/NavigationSplitView.cjs +1 -1
- package/dist/components/NavigationView/NavigationView.cjs +1 -1
- package/dist/components/NavigationView/NavigationView.cjs.map +1 -1
- package/dist/components/NavigationView/NavigationView.d.ts +2 -2
- package/dist/components/NavigationView/NavigationView.js +3 -4
- package/dist/components/NavigationView/NavigationView.js.map +1 -1
- package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
- package/dist/components/NavigationView/NavigationView.module.css.js +9 -10
- package/dist/components/NavigationView.cjs +1 -1
- package/dist/components/OverlaySplitView/OverlaySplitView.cjs +1 -1
- package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -1
- package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +1 -1
- package/dist/components/OverlaySplitView/OverlaySplitView.js +2 -2
- package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -1
- package/dist/components/OverlaySplitView.cjs +1 -1
- package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs +1 -1
- package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -1
- package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +1 -1
- package/dist/components/PasswordEntryRow/PasswordEntryRow.js +2 -2
- package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -1
- package/dist/components/PasswordEntryRow.cjs +1 -1
- package/dist/components/PathBar/PathBar.cjs +1 -1
- package/dist/components/PathBar/PathBar.cjs.map +1 -1
- package/dist/components/PathBar/PathBar.d.ts +1 -1
- package/dist/components/PathBar/PathBar.js +48 -50
- package/dist/components/PathBar/PathBar.js.map +1 -1
- package/dist/components/PathBar.cjs +1 -1
- package/dist/components/Popover/Popover.cjs +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js +5 -5
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover.cjs +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.js +2 -2
- package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +18 -19
- package/dist/components/PreferencesDialog.cjs +1 -1
- package/dist/components/PreferencesGroup/PreferencesGroup.cjs +1 -1
- package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -1
- package/dist/components/PreferencesGroup/PreferencesGroup.d.ts +1 -1
- package/dist/components/PreferencesGroup/PreferencesGroup.js +2 -2
- package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -1
- package/dist/components/PreferencesGroup.cjs +1 -1
- package/dist/components/PreferencesPage/PreferencesPage.cjs +1 -1
- package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -1
- package/dist/components/PreferencesPage/PreferencesPage.d.ts +1 -1
- package/dist/components/PreferencesPage/PreferencesPage.js +9 -11
- package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -1
- package/dist/components/PreferencesPage.cjs +1 -1
- package/dist/components/ProgressBar/ProgressBar.cjs +1 -1
- package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/components/ProgressBar/ProgressBar.js +2 -2
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/components/ProgressBar.cjs +1 -1
- package/dist/components/RadioButton/RadioButton.cjs +1 -1
- package/dist/components/RadioButton/RadioButton.cjs.map +1 -1
- package/dist/components/RadioButton/RadioButton.d.ts +1 -1
- package/dist/components/RadioButton/RadioButton.js +5 -7
- package/dist/components/RadioButton/RadioButton.js.map +1 -1
- package/dist/components/RadioButton.cjs +1 -1
- package/dist/components/SearchBar/SearchBar.cjs +1 -1
- package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +1 -1
- package/dist/components/SearchBar/SearchBar.js +2 -2
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/SearchBar.cjs +1 -1
- package/dist/components/SegmentedBar/SegmentedBar.cjs +1 -1
- package/dist/components/SegmentedBar/SegmentedBar.cjs.map +1 -1
- package/dist/components/SegmentedBar/SegmentedBar.js.map +1 -1
- package/dist/components/SegmentedBar.cjs +1 -1
- package/dist/components/Separator/Separator.cjs +1 -1
- package/dist/components/Separator/Separator.cjs.map +1 -1
- package/dist/components/Separator/Separator.d.ts +1 -1
- package/dist/components/Separator/Separator.js +2 -2
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/Separator.cjs +1 -1
- package/dist/components/ShortcutLabel/ShortcutLabel.cjs +1 -1
- package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -1
- package/dist/components/ShortcutLabel/ShortcutLabel.d.ts +1 -1
- package/dist/components/ShortcutLabel/ShortcutLabel.js +2 -3
- package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -1
- package/dist/components/ShortcutLabel.cjs +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.d.ts +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.js +2 -3
- package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +21 -22
- package/dist/components/ShortcutsDialog.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.d.ts +1 -1
- package/dist/components/Sidebar/Sidebar.js +2 -3
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.module.css.js +33 -34
- package/dist/components/Sidebar/SidebarItem.cjs +1 -1
- package/dist/components/Sidebar/SidebarItem.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarItem.d.ts +1 -1
- package/dist/components/Sidebar/SidebarItem.js +16 -16
- package/dist/components/Sidebar/SidebarItem.js.map +1 -1
- package/dist/components/Sidebar/SidebarSection.cjs +1 -1
- package/dist/components/Sidebar/SidebarSection.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarSection.js.map +1 -1
- package/dist/components/Sidebar.cjs +1 -1
- package/dist/components/Skeleton/Skeleton.cjs +1 -1
- package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +1 -1
- package/dist/components/Skeleton/Skeleton.js +9 -10
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton.cjs +1 -1
- package/dist/components/Slider/Slider.cjs +1 -1
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.d.ts +1 -1
- package/dist/components/Slider/Slider.js +2 -2
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider.cjs +1 -1
- package/dist/components/SpinButton/SpinButton.cjs +1 -1
- package/dist/components/SpinButton/SpinButton.cjs.map +1 -1
- package/dist/components/SpinButton/SpinButton.d.ts +1 -1
- package/dist/components/SpinButton/SpinButton.js +2 -2
- package/dist/components/SpinButton/SpinButton.js.map +1 -1
- package/dist/components/SpinButton.cjs +1 -1
- package/dist/components/SpinRow/SpinRow.cjs +1 -1
- package/dist/components/SpinRow/SpinRow.cjs.map +1 -1
- package/dist/components/SpinRow/SpinRow.d.ts +1 -1
- package/dist/components/SpinRow/SpinRow.js +2 -2
- package/dist/components/SpinRow/SpinRow.js.map +1 -1
- package/dist/components/SpinRow.cjs +1 -1
- package/dist/components/Spinner/Spinner.cjs +1 -1
- package/dist/components/Spinner/Spinner.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +1 -1
- package/dist/components/Spinner/Spinner.js +2 -2
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner.cjs +1 -1
- package/dist/components/SplitButton/SplitButton.cjs +1 -1
- package/dist/components/SplitButton/SplitButton.cjs.map +1 -1
- package/dist/components/SplitButton/SplitButton.d.ts +1 -1
- package/dist/components/SplitButton/SplitButton.js +2 -2
- package/dist/components/SplitButton/SplitButton.js.map +1 -1
- package/dist/components/SplitButton.cjs +1 -1
- package/dist/components/StatusBadge/StatusBadge.cjs +1 -1
- package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -1
- package/dist/components/StatusBadge/StatusBadge.d.ts +1 -1
- package/dist/components/StatusBadge/StatusBadge.js +9 -11
- package/dist/components/StatusBadge/StatusBadge.js.map +1 -1
- package/dist/components/StatusBadge.cjs +1 -1
- package/dist/components/StatusPage/StatusPage.cjs +1 -1
- package/dist/components/StatusPage/StatusPage.cjs.map +1 -1
- package/dist/components/StatusPage/StatusPage.d.ts +1 -1
- package/dist/components/StatusPage/StatusPage.js +2 -2
- package/dist/components/StatusPage/StatusPage.js.map +1 -1
- package/dist/components/StatusPage.cjs +1 -1
- package/dist/components/Switch/Switch.cjs +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.d.ts +1 -1
- package/dist/components/Switch/Switch.js +6 -8
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Switch.cjs +1 -1
- package/dist/components/SwitchRow/SwitchRow.cjs +1 -1
- package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -1
- package/dist/components/SwitchRow/SwitchRow.d.ts +1 -1
- package/dist/components/SwitchRow/SwitchRow.js +7 -7
- package/dist/components/SwitchRow/SwitchRow.js.map +1 -1
- package/dist/components/SwitchRow.cjs +1 -1
- package/dist/components/Tabs/TabBar.cjs +1 -1
- package/dist/components/Tabs/TabBar.cjs.map +1 -1
- package/dist/components/Tabs/TabBar.d.ts +1 -1
- package/dist/components/Tabs/TabBar.js +2 -2
- package/dist/components/Tabs/TabBar.js.map +1 -1
- package/dist/components/Tabs/TabItem.cjs +1 -1
- package/dist/components/Tabs/TabItem.cjs.map +1 -1
- package/dist/components/Tabs/TabItem.js.map +1 -1
- package/dist/components/Tabs/TabPanel.cjs +1 -1
- package/dist/components/Tabs/TabPanel.cjs.map +1 -1
- package/dist/components/Tabs/TabPanel.d.ts +1 -1
- package/dist/components/Tabs/TabPanel.js +8 -10
- package/dist/components/Tabs/TabPanel.js.map +1 -1
- package/dist/components/Tabs.cjs +1 -1
- package/dist/components/TerminalView/TerminalView.cjs +1 -1
- package/dist/components/TerminalView/TerminalView.cjs.map +1 -1
- package/dist/components/TerminalView/TerminalView.d.ts +1 -1
- package/dist/components/TerminalView/TerminalView.js +2 -2
- package/dist/components/TerminalView/TerminalView.js.map +1 -1
- package/dist/components/TerminalView.cjs +1 -1
- package/dist/components/Text/Text.cjs +1 -1
- package/dist/components/Text/Text.cjs.map +1 -1
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/Text/Text.js +10 -13
- package/dist/components/Text/Text.js.map +1 -1
- package/dist/components/Text/Text.module.css.cjs +1 -1
- package/dist/components/Text/Text.module.css.js +9 -10
- package/dist/components/Text.cjs +1 -1
- package/dist/components/TextField/TextField.cjs +1 -1
- package/dist/components/TextField/TextField.cjs.map +1 -1
- package/dist/components/TextField/TextField.d.ts +1 -1
- package/dist/components/TextField/TextField.js +2 -2
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField.cjs +1 -1
- package/dist/components/Timeline/Timeline.cjs +1 -1
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.d.ts +1 -1
- package/dist/components/Timeline/Timeline.js +2 -2
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline.cjs +1 -1
- package/dist/components/Toast/Toast.cjs +1 -1
- package/dist/components/Toast/Toast.cjs.map +1 -1
- package/dist/components/Toast/Toast.d.ts +1 -1
- package/dist/components/Toast/Toast.js +2 -2
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Toast/Toast.module.css.cjs +1 -1
- package/dist/components/Toast/Toast.module.css.js +10 -11
- package/dist/components/Toast/Toaster.cjs +1 -1
- package/dist/components/Toast/Toaster.cjs.map +1 -1
- package/dist/components/Toast/Toaster.d.ts +1 -1
- package/dist/components/Toast/Toaster.js +2 -2
- package/dist/components/Toast/Toaster.js.map +1 -1
- package/dist/components/Toast.cjs +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.cjs +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/components/ToggleGroup.cjs +1 -1
- package/dist/components/Toolbar/Spacer.cjs +1 -1
- package/dist/components/Toolbar/Spacer.cjs.map +1 -1
- package/dist/components/Toolbar/Spacer.d.ts +1 -1
- package/dist/components/Toolbar/Spacer.js +5 -7
- package/dist/components/Toolbar/Spacer.js.map +1 -1
- package/dist/components/Toolbar/Toolbar.cjs +1 -1
- package/dist/components/Toolbar/Toolbar.cjs.map +1 -1
- package/dist/components/Toolbar/Toolbar.d.ts +1 -1
- package/dist/components/Toolbar/Toolbar.js +5 -7
- package/dist/components/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/Toolbar.cjs +1 -1
- package/dist/components/ToolbarView/ToolbarView.cjs +1 -1
- package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -1
- package/dist/components/ToolbarView/ToolbarView.d.ts +1 -1
- package/dist/components/ToolbarView/ToolbarView.js +18 -20
- package/dist/components/ToolbarView/ToolbarView.js.map +1 -1
- package/dist/components/ToolbarView.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.js +2 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip.cjs +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcher.js +2 -2
- package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +1 -1
- package/dist/components/ViewSwitcher/ViewSwitcherItem.js +24 -26
- package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -1
- package/dist/components/ViewSwitcher.cjs +1 -1
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs +1 -1
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -1
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.d.ts +1 -1
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js +7 -9
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -1
- package/dist/components/ViewSwitcherBar.cjs +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +2 -2
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +1 -1
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js +2 -2
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -1
- package/dist/components/ViewSwitcherSidebar.cjs +1 -1
- package/dist/components/WindowTitle/WindowTitle.cjs +1 -1
- package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -1
- package/dist/components/WindowTitle/WindowTitle.d.ts +1 -1
- package/dist/components/WindowTitle/WindowTitle.js +11 -13
- package/dist/components/WindowTitle/WindowTitle.js.map +1 -1
- package/dist/components/WindowTitle.cjs +1 -1
- package/dist/components/WrapBox/WrapBox.cjs +1 -1
- package/dist/components/WrapBox/WrapBox.cjs.map +1 -1
- package/dist/components/WrapBox/WrapBox.d.ts +1 -1
- package/dist/components/WrapBox/WrapBox.js +5 -5
- package/dist/components/WrapBox/WrapBox.js.map +1 -1
- package/dist/components/WrapBox.cjs +1 -1
- package/dist/hooks/useBreakpoint.cjs +1 -1
- package/dist/hooks/useBreakpoint.cjs.map +1 -1
- package/dist/hooks/useBreakpoint.js.map +1 -1
- package/dist/hooks.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/package.json +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require("../Dialog/dialogUtils.cjs"),t=require("./AboutDialog.module.css.cjs");let n=require("react"),r=require("react-dom"),i=require("react/jsx-runtime");var a={details:`Details`,credits:`Credits`,legal:`Legal`},o=({open:o,onClose:s,applicationName:c,applicationIcon:l,version:u,comments:d,developerName:f,website:p,websiteLabel:m,developers:h,designers:g,artists:_,copyright:v,licenseType:y,licenseText:b,links:x})=>{let S=(0,n.useRef)(null),C=(0,n.useId)(),w=(0,n.useRef)(null),T=e.useVisualViewport(),[E,D]=(0,n.useState)(`details`);(0,n.useEffect)(()=>{o?(w.current=document.activeElement,(S.current?.querySelector(e.FOCUSABLE))?.focus()):(w.current?.focus(),D(`details`))},[o]);let O=(0,n.useCallback)(t=>{if(t.key===`Escape`){t.preventDefault(),s?.();return}e.trapFocus(t,S)},[s]);if(!o)return null;let k=[`details`,!!(h?.length||g?.length||_?.length)&&`credits`,!!(v||y||b)&&`legal`].filter(Boolean),A=(0,i.jsx)(`div`,{className:t.default.backdrop,style:T,onClick:s,"aria-hidden":`true`,children:(0,i.jsxs)(`div`,{ref:S,role:`dialog`,"aria-modal":`true`,"aria-labelledby":C,className:t.default.dialog,onKeyDown:O,onClick:e=>e.stopPropagation(),children:[(0,i.jsxs)(`div`,{className:t.default.header,children:[l&&(0,i.jsx)(`div`,{className:t.default.icon,children:l}),(0,i.jsx)(`div`,{id:C,className:t.default.appName,children:c}),u&&(0,i.jsx)(`div`,{className:t.default.version,children:u})]}),k.length>1&&(0,i.jsx)(`div`,{className:t.default.tabBar,role:`tablist`,children:k.map(e=>(0,i.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":E===e,className:[t.default.tabBtn,E===e?t.default.tabBtnActive:null].filter(Boolean).join(` `),onClick:()=>D(e),children:a[e]},e))}),(0,i.jsxs)(`div`,{className:t.default.tabContent,children:[E===`details`&&(0,i.jsxs)(`div`,{className:t.default.section,children:[d&&(0,i.jsx)(`p`,{className:t.default.comments,children:d}),(f||p||x?.length)&&(0,i.jsxs)(`dl`,{className:t.default.infoList,children:[f&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`dt`,{className:t.default.infoLabel,children:`Developer`}),(0,i.jsx)(`dd`,{className:t.default.infoValue,children:f})]}),p&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`dt`,{className:t.default.infoLabel,children:`Website`}),(0,i.jsx)(`dd`,{className:t.default.infoValue,children:(0,i.jsx)(`a`,{href:p,target:`_blank`,rel:`noopener noreferrer`,className:t.default.link,children:m??p})})]}),x?.map(e=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`dt`,{className:t.default.infoLabel,children:e.label},`${e.label}-dt`),(0,i.jsx)(`dd`,{className:t.default.infoValue,children:(0,i.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:t.default.link,children:e.url})},`${e.label}-dd`)]}))]})]}),E===`credits`&&(0,i.jsx)(`div`,{className:t.default.section,children:[{heading:`Developers`,list:h},{heading:`Designers`,list:g},{heading:`Artists`,list:_}].filter(e=>e.list?.length).map(({heading:e,list:n})=>(0,i.jsxs)(`div`,{className:t.default.creditGroup,children:[(0,i.jsx)(`h4`,{className:t.default.creditTitle,children:e}),(0,i.jsx)(`ul`,{className:t.default.creditList,children:n?.map(e=>(0,i.jsx)(`li`,{className:t.default.creditItem,children:e},e))})]},e))}),E===`legal`&&(0,i.jsxs)(`div`,{className:t.default.section,children:[v&&(0,i.jsx)(`p`,{className:t.default.copyright,children:v}),y&&(0,i.jsx)(`p`,{className:t.default.licenseType,children:y}),b&&(0,i.jsx)(`pre`,{className:t.default.licenseText,children:b})]})]}),(0,i.jsx)(`div`,{className:t.default.footer,children:(0,i.jsx)(`button`,{type:`button`,className:[t.default.btn,t.default.btnDefault].join(` `),onClick:s,children:`Close`})})]})});return typeof document>`u`?A:(0,r.createPortal)(A,document.body)};exports.AboutDialog=o;
|
|
2
2
|
//# sourceMappingURL=AboutDialog.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutDialog.cjs","names":[],"sources":["../../../src/components/AboutDialog/AboutDialog.tsx"],"sourcesContent":["import {\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport { FOCUSABLE, trapFocus, useVisualViewport } from '../Dialog/dialogUtils';\n\nimport styles from './AboutDialog.module.css';\n\nexport interface AboutDialogLink {\n label: string;\n url: string;\n}\n\nexport interface AboutDialogProps {\n /** Whether the dialog is visible. */\n open: boolean;\n /** Called on Escape or close button click. */\n onClose?: () => void;\n /** Application name. */\n applicationName: string;\n /** Icon rendered above the app name. */\n applicationIcon?: ReactNode;\n /** Version string (e.g. `\"1.0.0\"`). */\n version?: string;\n /** One-sentence description. */\n comments?: string;\n /** Developer or organisation name. */\n developerName?: string;\n /** Application website URL. */\n website?: string;\n /** Label for the website link. Defaults to the URL. */\n websiteLabel?: string;\n /** Developer names shown in the Credits tab. */\n developers?: string[];\n /** Designer names shown in the Credits tab. */\n designers?: string[];\n /** Artist names shown in the Credits tab. */\n artists?: string[];\n /** Copyright notice (e.g. `\"© 2024 Jane Smith\"`). */\n copyright?: string;\n /** SPDX identifier or short name (e.g. `\"GPL-3.0\"`). */\n licenseType?: string;\n /** Full license text shown in the Legal tab. */\n licenseText?: string;\n /** Extra links shown in the Details section. */\n links?: AboutDialogLink[];\n}\n\ntype AboutTab = 'details' | 'credits' | 'legal';\nconst ABOUT_TAB_LABEL: Record<AboutTab, string> = {\n details: 'Details',\n credits: 'Credits',\n legal: 'Legal',\n};\n\n/**\n * Standard app info dialog with details, credits, and legal tabs.\n * Mirrors `AdwAboutDialog`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html\n */\nexport function AboutDialog({\n open,\n onClose,\n applicationName,\n applicationIcon,\n version,\n comments,\n developerName,\n website,\n websiteLabel,\n developers,\n designers,\n artists,\n copyright,\n licenseType,\n licenseText,\n links,\n}: AboutDialogProps) {\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const previouslyFocused = useRef<Element | null>(null);\n const viewportStyle = useVisualViewport();\n const [activeTab, setActiveTab] = useState<AboutTab>('details');\n\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n const el = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n el?.focus();\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setActiveTab('details');\n }\n }, [open]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n if (!open) {\n return null;\n }\n\n const hasCredits = !!(developers?.length || designers?.length || artists?.length);\n const hasLegal = !!(copyright || licenseType || licenseText);\n const tabs = (\n ['details', hasCredits && 'credits', hasLegal && 'legal'] as (AboutTab | false)[]\n ).filter(Boolean) as AboutTab[];\n\n const node = (\n <div className={styles.backdrop} style={viewportStyle} onClick={onClose} aria-hidden=\"true\">\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={styles.dialog}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.header}>\n {applicationIcon && <div className={styles.icon}>{applicationIcon}</div>}\n <div id={titleId} className={styles.appName}>\n {applicationName}\n </div>\n {version && <div className={styles.version}>{version}</div>}\n </div>\n\n {tabs.length > 1 && (\n <div className={styles.tabBar} role=\"tablist\">\n {tabs.map((t) => (\n <button\n key={t}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === t}\n className={[styles.tabBtn, activeTab === t ? styles.tabBtnActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveTab(t)}\n >\n {ABOUT_TAB_LABEL[t]}\n </button>\n ))}\n </div>\n )}\n\n <div className={styles.tabContent}>\n {activeTab === 'details' && (\n <div className={styles.section}>\n {comments && <p className={styles.comments}>{comments}</p>}\n {(developerName || website || links?.length) && (\n <dl className={styles.infoList}>\n {developerName && (\n <>\n <dt className={styles.infoLabel}>Developer</dt>\n <dd className={styles.infoValue}>{developerName}</dd>\n </>\n )}\n {website && (\n <>\n <dt className={styles.infoLabel}>Website</dt>\n <dd className={styles.infoValue}>\n <a\n href={website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {websiteLabel ?? website}\n </a>\n </dd>\n </>\n )}\n {links?.map((l) => (\n <>\n <dt key={`${l.label}-dt`} className={styles.infoLabel}>\n {l.label}\n </dt>\n <dd key={`${l.label}-dd`} className={styles.infoValue}>\n <a\n href={l.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {l.url}\n </a>\n </dd>\n </>\n ))}\n </dl>\n )}\n </div>\n )}\n\n {activeTab === 'credits' && (\n <div className={styles.section}>\n {[\n { heading: 'Developers', list: developers },\n { heading: 'Designers', list: designers },\n { heading: 'Artists', list: artists },\n ]\n .filter((g) => g.list?.length)\n .map(({ heading, list }) => (\n <div key={heading} className={styles.creditGroup}>\n <h4 className={styles.creditTitle}>{heading}</h4>\n <ul className={styles.creditList}>\n {list?.map((name) => (\n <li key={name} className={styles.creditItem}>\n {name}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'legal' && (\n <div className={styles.section}>\n {copyright && <p className={styles.copyright}>{copyright}</p>}\n {licenseType && <p className={styles.licenseType}>{licenseType}</p>}\n {licenseText && <pre className={styles.licenseText}>{licenseText}</pre>}\n </div>\n )}\n </div>\n\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={[styles.btn, styles.btnDefault].join(' ')}\n onClick={onClose}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n );\n\n if (typeof document === 'undefined') {\n return node;\n }\n\n return createPortal(node, document.body);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AboutDialog.cjs","names":[],"sources":["../../../src/components/AboutDialog/AboutDialog.tsx"],"sourcesContent":["import {\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport { FOCUSABLE, trapFocus, useVisualViewport } from '../Dialog/dialogUtils';\n\nimport styles from './AboutDialog.module.css';\n\nexport interface AboutDialogLink {\n label: string;\n url: string;\n}\n\nexport interface AboutDialogProps {\n /** Whether the dialog is visible. */\n open: boolean;\n /** Called on Escape or close button click. */\n onClose?: () => void;\n /** Application name. */\n applicationName: string;\n /** Icon rendered above the app name. */\n applicationIcon?: ReactNode;\n /** Version string (e.g. `\"1.0.0\"`). */\n version?: string;\n /** One-sentence description. */\n comments?: string;\n /** Developer or organisation name. */\n developerName?: string;\n /** Application website URL. */\n website?: string;\n /** Label for the website link. Defaults to the URL. */\n websiteLabel?: string;\n /** Developer names shown in the Credits tab. */\n developers?: string[];\n /** Designer names shown in the Credits tab. */\n designers?: string[];\n /** Artist names shown in the Credits tab. */\n artists?: string[];\n /** Copyright notice (e.g. `\"© 2024 Jane Smith\"`). */\n copyright?: string;\n /** SPDX identifier or short name (e.g. `\"GPL-3.0\"`). */\n licenseType?: string;\n /** Full license text shown in the Legal tab. */\n licenseText?: string;\n /** Extra links shown in the Details section. */\n links?: AboutDialogLink[];\n}\n\ntype AboutTab = 'details' | 'credits' | 'legal';\nconst ABOUT_TAB_LABEL: Record<AboutTab, string> = {\n details: 'Details',\n credits: 'Credits',\n legal: 'Legal',\n};\n\n/**\n * Standard app info dialog with details, credits, and legal tabs.\n * Mirrors `AdwAboutDialog`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html\n */\nexport const AboutDialog = ({\n open,\n onClose,\n applicationName,\n applicationIcon,\n version,\n comments,\n developerName,\n website,\n websiteLabel,\n developers,\n designers,\n artists,\n copyright,\n licenseType,\n licenseText,\n links,\n}: AboutDialogProps) => {\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const previouslyFocused = useRef<Element | null>(null);\n const viewportStyle = useVisualViewport();\n const [activeTab, setActiveTab] = useState<AboutTab>('details');\n\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n const el = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n el?.focus();\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setActiveTab('details');\n }\n }, [open]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n if (!open) {\n return null;\n }\n\n const hasCredits = !!(developers?.length || designers?.length || artists?.length);\n const hasLegal = !!(copyright || licenseType || licenseText);\n const tabs = (\n ['details', hasCredits && 'credits', hasLegal && 'legal'] as (AboutTab | false)[]\n ).filter(Boolean) as AboutTab[];\n\n const node = (\n <div className={styles.backdrop} style={viewportStyle} onClick={onClose} aria-hidden=\"true\">\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={styles.dialog}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.header}>\n {applicationIcon && <div className={styles.icon}>{applicationIcon}</div>}\n <div id={titleId} className={styles.appName}>\n {applicationName}\n </div>\n {version && <div className={styles.version}>{version}</div>}\n </div>\n\n {tabs.length > 1 && (\n <div className={styles.tabBar} role=\"tablist\">\n {tabs.map((t) => (\n <button\n key={t}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === t}\n className={[styles.tabBtn, activeTab === t ? styles.tabBtnActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveTab(t)}\n >\n {ABOUT_TAB_LABEL[t]}\n </button>\n ))}\n </div>\n )}\n\n <div className={styles.tabContent}>\n {activeTab === 'details' && (\n <div className={styles.section}>\n {comments && <p className={styles.comments}>{comments}</p>}\n {(developerName || website || links?.length) && (\n <dl className={styles.infoList}>\n {developerName && (\n <>\n <dt className={styles.infoLabel}>Developer</dt>\n <dd className={styles.infoValue}>{developerName}</dd>\n </>\n )}\n {website && (\n <>\n <dt className={styles.infoLabel}>Website</dt>\n <dd className={styles.infoValue}>\n <a\n href={website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {websiteLabel ?? website}\n </a>\n </dd>\n </>\n )}\n {links?.map((l) => (\n <>\n <dt key={`${l.label}-dt`} className={styles.infoLabel}>\n {l.label}\n </dt>\n <dd key={`${l.label}-dd`} className={styles.infoValue}>\n <a\n href={l.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {l.url}\n </a>\n </dd>\n </>\n ))}\n </dl>\n )}\n </div>\n )}\n\n {activeTab === 'credits' && (\n <div className={styles.section}>\n {[\n { heading: 'Developers', list: developers },\n { heading: 'Designers', list: designers },\n { heading: 'Artists', list: artists },\n ]\n .filter((g) => g.list?.length)\n .map(({ heading, list }) => (\n <div key={heading} className={styles.creditGroup}>\n <h4 className={styles.creditTitle}>{heading}</h4>\n <ul className={styles.creditList}>\n {list?.map((name) => (\n <li key={name} className={styles.creditItem}>\n {name}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'legal' && (\n <div className={styles.section}>\n {copyright && <p className={styles.copyright}>{copyright}</p>}\n {licenseType && <p className={styles.licenseType}>{licenseType}</p>}\n {licenseText && <pre className={styles.licenseText}>{licenseText}</pre>}\n </div>\n )}\n </div>\n\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={[styles.btn, styles.btnDefault].join(' ')}\n onClick={onClose}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n );\n\n if (typeof document === 'undefined') {\n return node;\n }\n\n return createPortal(node, document.body);\n};\n"],"mappings":"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"}
|
|
@@ -43,4 +43,4 @@ export interface AboutDialogProps {
|
|
|
43
43
|
*
|
|
44
44
|
* @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html
|
|
45
45
|
*/
|
|
46
|
-
export declare
|
|
46
|
+
export declare const AboutDialog: ({ open, onClose, applicationName, applicationIcon, version, comments, developerName, website, websiteLabel, developers, designers, artists, copyright, licenseType, licenseText, links, }: AboutDialogProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -8,8 +8,7 @@ var p = {
|
|
|
8
8
|
details: "Details",
|
|
9
9
|
credits: "Credits",
|
|
10
10
|
legal: "Legal"
|
|
11
|
-
}
|
|
12
|
-
function m({ open: m, onClose: h, applicationName: g, applicationIcon: _, version: v, comments: y, developerName: b, website: x, websiteLabel: S, developers: C, designers: w, artists: T, copyright: E, licenseType: D, licenseText: O, links: k }) {
|
|
11
|
+
}, m = ({ open: m, onClose: h, applicationName: g, applicationIcon: _, version: v, comments: y, developerName: b, website: x, websiteLabel: S, developers: C, designers: w, artists: T, copyright: E, licenseType: D, licenseText: O, links: k }) => {
|
|
13
12
|
let A = s(null), j = o(), M = s(null), N = n(), [P, F] = c("details");
|
|
14
13
|
a(() => {
|
|
15
14
|
m ? (M.current = document.activeElement, (A.current?.querySelector(e))?.focus()) : (M.current?.focus(), F("details"));
|
|
@@ -178,7 +177,7 @@ function m({ open: m, onClose: h, applicationName: g, applicationIcon: _, versio
|
|
|
178
177
|
})
|
|
179
178
|
});
|
|
180
179
|
return typeof document > "u" ? R : l(R, document.body);
|
|
181
|
-
}
|
|
180
|
+
};
|
|
182
181
|
//#endregion
|
|
183
182
|
export { m as AboutDialog };
|
|
184
183
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutDialog.js","names":[],"sources":["../../../src/components/AboutDialog/AboutDialog.tsx"],"sourcesContent":["import {\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport { FOCUSABLE, trapFocus, useVisualViewport } from '../Dialog/dialogUtils';\n\nimport styles from './AboutDialog.module.css';\n\nexport interface AboutDialogLink {\n label: string;\n url: string;\n}\n\nexport interface AboutDialogProps {\n /** Whether the dialog is visible. */\n open: boolean;\n /** Called on Escape or close button click. */\n onClose?: () => void;\n /** Application name. */\n applicationName: string;\n /** Icon rendered above the app name. */\n applicationIcon?: ReactNode;\n /** Version string (e.g. `\"1.0.0\"`). */\n version?: string;\n /** One-sentence description. */\n comments?: string;\n /** Developer or organisation name. */\n developerName?: string;\n /** Application website URL. */\n website?: string;\n /** Label for the website link. Defaults to the URL. */\n websiteLabel?: string;\n /** Developer names shown in the Credits tab. */\n developers?: string[];\n /** Designer names shown in the Credits tab. */\n designers?: string[];\n /** Artist names shown in the Credits tab. */\n artists?: string[];\n /** Copyright notice (e.g. `\"© 2024 Jane Smith\"`). */\n copyright?: string;\n /** SPDX identifier or short name (e.g. `\"GPL-3.0\"`). */\n licenseType?: string;\n /** Full license text shown in the Legal tab. */\n licenseText?: string;\n /** Extra links shown in the Details section. */\n links?: AboutDialogLink[];\n}\n\ntype AboutTab = 'details' | 'credits' | 'legal';\nconst ABOUT_TAB_LABEL: Record<AboutTab, string> = {\n details: 'Details',\n credits: 'Credits',\n legal: 'Legal',\n};\n\n/**\n * Standard app info dialog with details, credits, and legal tabs.\n * Mirrors `AdwAboutDialog`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html\n */\nexport function AboutDialog({\n open,\n onClose,\n applicationName,\n applicationIcon,\n version,\n comments,\n developerName,\n website,\n websiteLabel,\n developers,\n designers,\n artists,\n copyright,\n licenseType,\n licenseText,\n links,\n}: AboutDialogProps) {\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const previouslyFocused = useRef<Element | null>(null);\n const viewportStyle = useVisualViewport();\n const [activeTab, setActiveTab] = useState<AboutTab>('details');\n\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n const el = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n el?.focus();\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setActiveTab('details');\n }\n }, [open]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n if (!open) {\n return null;\n }\n\n const hasCredits = !!(developers?.length || designers?.length || artists?.length);\n const hasLegal = !!(copyright || licenseType || licenseText);\n const tabs = (\n ['details', hasCredits && 'credits', hasLegal && 'legal'] as (AboutTab | false)[]\n ).filter(Boolean) as AboutTab[];\n\n const node = (\n <div className={styles.backdrop} style={viewportStyle} onClick={onClose} aria-hidden=\"true\">\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={styles.dialog}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.header}>\n {applicationIcon && <div className={styles.icon}>{applicationIcon}</div>}\n <div id={titleId} className={styles.appName}>\n {applicationName}\n </div>\n {version && <div className={styles.version}>{version}</div>}\n </div>\n\n {tabs.length > 1 && (\n <div className={styles.tabBar} role=\"tablist\">\n {tabs.map((t) => (\n <button\n key={t}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === t}\n className={[styles.tabBtn, activeTab === t ? styles.tabBtnActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveTab(t)}\n >\n {ABOUT_TAB_LABEL[t]}\n </button>\n ))}\n </div>\n )}\n\n <div className={styles.tabContent}>\n {activeTab === 'details' && (\n <div className={styles.section}>\n {comments && <p className={styles.comments}>{comments}</p>}\n {(developerName || website || links?.length) && (\n <dl className={styles.infoList}>\n {developerName && (\n <>\n <dt className={styles.infoLabel}>Developer</dt>\n <dd className={styles.infoValue}>{developerName}</dd>\n </>\n )}\n {website && (\n <>\n <dt className={styles.infoLabel}>Website</dt>\n <dd className={styles.infoValue}>\n <a\n href={website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {websiteLabel ?? website}\n </a>\n </dd>\n </>\n )}\n {links?.map((l) => (\n <>\n <dt key={`${l.label}-dt`} className={styles.infoLabel}>\n {l.label}\n </dt>\n <dd key={`${l.label}-dd`} className={styles.infoValue}>\n <a\n href={l.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {l.url}\n </a>\n </dd>\n </>\n ))}\n </dl>\n )}\n </div>\n )}\n\n {activeTab === 'credits' && (\n <div className={styles.section}>\n {[\n { heading: 'Developers', list: developers },\n { heading: 'Designers', list: designers },\n { heading: 'Artists', list: artists },\n ]\n .filter((g) => g.list?.length)\n .map(({ heading, list }) => (\n <div key={heading} className={styles.creditGroup}>\n <h4 className={styles.creditTitle}>{heading}</h4>\n <ul className={styles.creditList}>\n {list?.map((name) => (\n <li key={name} className={styles.creditItem}>\n {name}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'legal' && (\n <div className={styles.section}>\n {copyright && <p className={styles.copyright}>{copyright}</p>}\n {licenseType && <p className={styles.licenseType}>{licenseType}</p>}\n {licenseText && <pre className={styles.licenseText}>{licenseText}</pre>}\n </div>\n )}\n </div>\n\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={[styles.btn, styles.btnDefault].join(' ')}\n onClick={onClose}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n );\n\n if (typeof document === 'undefined') {\n return node;\n }\n\n return createPortal(node, document.body);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AboutDialog.js","names":[],"sources":["../../../src/components/AboutDialog/AboutDialog.tsx"],"sourcesContent":["import {\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport { FOCUSABLE, trapFocus, useVisualViewport } from '../Dialog/dialogUtils';\n\nimport styles from './AboutDialog.module.css';\n\nexport interface AboutDialogLink {\n label: string;\n url: string;\n}\n\nexport interface AboutDialogProps {\n /** Whether the dialog is visible. */\n open: boolean;\n /** Called on Escape or close button click. */\n onClose?: () => void;\n /** Application name. */\n applicationName: string;\n /** Icon rendered above the app name. */\n applicationIcon?: ReactNode;\n /** Version string (e.g. `\"1.0.0\"`). */\n version?: string;\n /** One-sentence description. */\n comments?: string;\n /** Developer or organisation name. */\n developerName?: string;\n /** Application website URL. */\n website?: string;\n /** Label for the website link. Defaults to the URL. */\n websiteLabel?: string;\n /** Developer names shown in the Credits tab. */\n developers?: string[];\n /** Designer names shown in the Credits tab. */\n designers?: string[];\n /** Artist names shown in the Credits tab. */\n artists?: string[];\n /** Copyright notice (e.g. `\"© 2024 Jane Smith\"`). */\n copyright?: string;\n /** SPDX identifier or short name (e.g. `\"GPL-3.0\"`). */\n licenseType?: string;\n /** Full license text shown in the Legal tab. */\n licenseText?: string;\n /** Extra links shown in the Details section. */\n links?: AboutDialogLink[];\n}\n\ntype AboutTab = 'details' | 'credits' | 'legal';\nconst ABOUT_TAB_LABEL: Record<AboutTab, string> = {\n details: 'Details',\n credits: 'Credits',\n legal: 'Legal',\n};\n\n/**\n * Standard app info dialog with details, credits, and legal tabs.\n * Mirrors `AdwAboutDialog`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html\n */\nexport const AboutDialog = ({\n open,\n onClose,\n applicationName,\n applicationIcon,\n version,\n comments,\n developerName,\n website,\n websiteLabel,\n developers,\n designers,\n artists,\n copyright,\n licenseType,\n licenseText,\n links,\n}: AboutDialogProps) => {\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const previouslyFocused = useRef<Element | null>(null);\n const viewportStyle = useVisualViewport();\n const [activeTab, setActiveTab] = useState<AboutTab>('details');\n\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n const el = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n el?.focus();\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setActiveTab('details');\n }\n }, [open]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n if (!open) {\n return null;\n }\n\n const hasCredits = !!(developers?.length || designers?.length || artists?.length);\n const hasLegal = !!(copyright || licenseType || licenseText);\n const tabs = (\n ['details', hasCredits && 'credits', hasLegal && 'legal'] as (AboutTab | false)[]\n ).filter(Boolean) as AboutTab[];\n\n const node = (\n <div className={styles.backdrop} style={viewportStyle} onClick={onClose} aria-hidden=\"true\">\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={styles.dialog}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.header}>\n {applicationIcon && <div className={styles.icon}>{applicationIcon}</div>}\n <div id={titleId} className={styles.appName}>\n {applicationName}\n </div>\n {version && <div className={styles.version}>{version}</div>}\n </div>\n\n {tabs.length > 1 && (\n <div className={styles.tabBar} role=\"tablist\">\n {tabs.map((t) => (\n <button\n key={t}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === t}\n className={[styles.tabBtn, activeTab === t ? styles.tabBtnActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveTab(t)}\n >\n {ABOUT_TAB_LABEL[t]}\n </button>\n ))}\n </div>\n )}\n\n <div className={styles.tabContent}>\n {activeTab === 'details' && (\n <div className={styles.section}>\n {comments && <p className={styles.comments}>{comments}</p>}\n {(developerName || website || links?.length) && (\n <dl className={styles.infoList}>\n {developerName && (\n <>\n <dt className={styles.infoLabel}>Developer</dt>\n <dd className={styles.infoValue}>{developerName}</dd>\n </>\n )}\n {website && (\n <>\n <dt className={styles.infoLabel}>Website</dt>\n <dd className={styles.infoValue}>\n <a\n href={website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {websiteLabel ?? website}\n </a>\n </dd>\n </>\n )}\n {links?.map((l) => (\n <>\n <dt key={`${l.label}-dt`} className={styles.infoLabel}>\n {l.label}\n </dt>\n <dd key={`${l.label}-dd`} className={styles.infoValue}>\n <a\n href={l.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.link}\n >\n {l.url}\n </a>\n </dd>\n </>\n ))}\n </dl>\n )}\n </div>\n )}\n\n {activeTab === 'credits' && (\n <div className={styles.section}>\n {[\n { heading: 'Developers', list: developers },\n { heading: 'Designers', list: designers },\n { heading: 'Artists', list: artists },\n ]\n .filter((g) => g.list?.length)\n .map(({ heading, list }) => (\n <div key={heading} className={styles.creditGroup}>\n <h4 className={styles.creditTitle}>{heading}</h4>\n <ul className={styles.creditList}>\n {list?.map((name) => (\n <li key={name} className={styles.creditItem}>\n {name}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'legal' && (\n <div className={styles.section}>\n {copyright && <p className={styles.copyright}>{copyright}</p>}\n {licenseType && <p className={styles.licenseType}>{licenseType}</p>}\n {licenseText && <pre className={styles.licenseText}>{licenseText}</pre>}\n </div>\n )}\n </div>\n\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={[styles.btn, styles.btnDefault].join(' ')}\n onClick={onClose}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n );\n\n if (typeof document === 'undefined') {\n return node;\n }\n\n return createPortal(node, document.body);\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e
|
|
1
|
+
var e={backdrop:`_backdrop_34vn5_3`,"backdrop-in":`_backdrop-in_34vn5_1`,dialog:`_dialog_34vn5_30`,"dialog-in":`_dialog-in_34vn5_1`,header:`_header_34vn5_63`,icon:`_icon_34vn5_72`,appName:`_appName_34vn5_81`,version:`_version_34vn5_88`,tabBar:`_tabBar_34vn5_96`,tabBtn:`_tabBtn_34vn5_103`,tabBtnActive:`_tabBtnActive_34vn5_125`,tabContent:`_tabContent_34vn5_139`,section:`_section_34vn5_144`,comments:`_comments_34vn5_149`,infoList:`_infoList_34vn5_158`,infoLabel:`_infoLabel_34vn5_165`,infoValue:`_infoValue_34vn5_173`,link:`_link_34vn5_181`,creditGroup:`_creditGroup_34vn5_191`,creditTitle:`_creditTitle_34vn5_195`,creditList:`_creditList_34vn5_205`,creditItem:`_creditItem_34vn5_214`,copyright:`_copyright_34vn5_220`,licenseType:`_licenseType_34vn5_227`,licenseText:`_licenseText_34vn5_234`,footer:`_footer_34vn5_248`,btn:`_btn_34vn5_254`,btnDefault:`_btnDefault_34vn5_294`};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=AboutDialog.module.css.cjs.map
|
|
@@ -1,35 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
backdrop: e,
|
|
1
|
+
var e = {
|
|
2
|
+
backdrop: "_backdrop_34vn5_3",
|
|
4
3
|
"backdrop-in": "_backdrop-in_34vn5_1",
|
|
5
|
-
dialog:
|
|
4
|
+
dialog: "_dialog_34vn5_30",
|
|
6
5
|
"dialog-in": "_dialog-in_34vn5_1",
|
|
7
|
-
header:
|
|
8
|
-
icon:
|
|
9
|
-
appName:
|
|
10
|
-
version:
|
|
11
|
-
tabBar:
|
|
12
|
-
tabBtn:
|
|
13
|
-
tabBtnActive:
|
|
14
|
-
tabContent:
|
|
15
|
-
section:
|
|
16
|
-
comments:
|
|
17
|
-
infoList:
|
|
18
|
-
infoLabel:
|
|
19
|
-
infoValue:
|
|
20
|
-
link:
|
|
21
|
-
creditGroup:
|
|
22
|
-
creditTitle:
|
|
23
|
-
creditList:
|
|
24
|
-
creditItem:
|
|
25
|
-
copyright:
|
|
26
|
-
licenseType:
|
|
27
|
-
licenseText:
|
|
28
|
-
footer:
|
|
29
|
-
btn:
|
|
30
|
-
btnDefault:
|
|
6
|
+
header: "_header_34vn5_63",
|
|
7
|
+
icon: "_icon_34vn5_72",
|
|
8
|
+
appName: "_appName_34vn5_81",
|
|
9
|
+
version: "_version_34vn5_88",
|
|
10
|
+
tabBar: "_tabBar_34vn5_96",
|
|
11
|
+
tabBtn: "_tabBtn_34vn5_103",
|
|
12
|
+
tabBtnActive: "_tabBtnActive_34vn5_125",
|
|
13
|
+
tabContent: "_tabContent_34vn5_139",
|
|
14
|
+
section: "_section_34vn5_144",
|
|
15
|
+
comments: "_comments_34vn5_149",
|
|
16
|
+
infoList: "_infoList_34vn5_158",
|
|
17
|
+
infoLabel: "_infoLabel_34vn5_165",
|
|
18
|
+
infoValue: "_infoValue_34vn5_173",
|
|
19
|
+
link: "_link_34vn5_181",
|
|
20
|
+
creditGroup: "_creditGroup_34vn5_191",
|
|
21
|
+
creditTitle: "_creditTitle_34vn5_195",
|
|
22
|
+
creditList: "_creditList_34vn5_205",
|
|
23
|
+
creditItem: "_creditItem_34vn5_214",
|
|
24
|
+
copyright: "_copyright_34vn5_220",
|
|
25
|
+
licenseType: "_licenseType_34vn5_227",
|
|
26
|
+
licenseText: "_licenseText_34vn5_234",
|
|
27
|
+
footer: "_footer_34vn5_248",
|
|
28
|
+
btn: "_btn_34vn5_254",
|
|
29
|
+
btnDefault: "_btnDefault_34vn5_294"
|
|
31
30
|
};
|
|
32
31
|
//#endregion
|
|
33
|
-
export {
|
|
32
|
+
export { e as default };
|
|
34
33
|
|
|
35
34
|
//# sourceMappingURL=AboutDialog.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./AboutDialog/AboutDialog.cjs");exports.AboutDialog=e.AboutDialog;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require("./ActionRow.module.css.cjs");let t=require("react/jsx-runtime");var n=({title:n,subtitle:r,leading:i,trailing:a,interactive:o=!1,variant:s=`default`,className:c,...l})=>{let u=o?`button`:`div`,d=s===`property`;return(0,t.jsxs)(u,{className:[e.default.row,o?e.default.interactive:null,d?e.default.property:null,c].filter(Boolean).join(` `),...l,children:[i&&(0,t.jsx)(`span`,{className:e.default.leading,children:i}),(0,t.jsxs)(`span`,{className:e.default.content,children:[(0,t.jsx)(`span`,{className:d?e.default.propertyLabel:e.default.title,children:n}),r&&(0,t.jsx)(`span`,{className:d?e.default.propertyValue:e.default.subtitle,children:r})]}),a&&(0,t.jsx)(`span`,{className:e.default.trailing,children:a})]})};exports.ActionRow=n;
|
|
2
2
|
//# sourceMappingURL=ActionRow.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionRow.cjs","names":[],"sources":["../../../src/components/ActionRow/ActionRow.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ActionRow.module.css';\n\nexport interface ActionRowProps extends HTMLAttributes<HTMLDivElement> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /**\n * Widget placed at the trailing edge (Switch, Button, Text…).\n * For interactive end widgets prefer a controlled component and stop\n * event propagation inside it so the row's own onClick isn't triggered.\n */\n trailing?: ReactNode;\n /**\n * When true the entire row becomes clickable (renders as `<button>`).\n * Use for rows that navigate or trigger an action.\n */\n interactive?: boolean;\n /**\n * `\"property\"` flips the visual hierarchy: the subtitle becomes the\n * prominent value and the title shrinks to a dim label above it.\n * Use for read-only property display (e.g. \"OS Version / Ubuntu 24.04\").\n * Mirrors the `.property` style class.\n */\n variant?: 'default' | 'property';\n}\n\n/**\n * Standard settings row with title, optional subtitle, and end widget.\n *\n * Mirrors the Adwaita `AdwActionRow` pattern — the fundamental building block\n * inside a `BoxedList`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html\n * @see https://developer.gnome.org/hig/patterns/containers.html\n */\nexport
|
|
1
|
+
{"version":3,"file":"ActionRow.cjs","names":[],"sources":["../../../src/components/ActionRow/ActionRow.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ActionRow.module.css';\n\nexport interface ActionRowProps extends HTMLAttributes<HTMLDivElement> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /**\n * Widget placed at the trailing edge (Switch, Button, Text…).\n * For interactive end widgets prefer a controlled component and stop\n * event propagation inside it so the row's own onClick isn't triggered.\n */\n trailing?: ReactNode;\n /**\n * When true the entire row becomes clickable (renders as `<button>`).\n * Use for rows that navigate or trigger an action.\n */\n interactive?: boolean;\n /**\n * `\"property\"` flips the visual hierarchy: the subtitle becomes the\n * prominent value and the title shrinks to a dim label above it.\n * Use for read-only property display (e.g. \"OS Version / Ubuntu 24.04\").\n * Mirrors the `.property` style class.\n */\n variant?: 'default' | 'property';\n}\n\n/**\n * Standard settings row with title, optional subtitle, and end widget.\n *\n * Mirrors the Adwaita `AdwActionRow` pattern — the fundamental building block\n * inside a `BoxedList`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html\n * @see https://developer.gnome.org/hig/patterns/containers.html\n */\nexport const ActionRow = ({\n title,\n subtitle,\n leading,\n trailing,\n interactive = false,\n variant = 'default',\n className,\n ...props\n}: ActionRowProps) => {\n const Tag = interactive ? 'button' : 'div';\n const property = variant === 'property';\n\n const classes = [\n styles.row,\n interactive ? styles.interactive : null,\n property ? styles.property : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Tag className={classes} {...(props as HTMLAttributes<HTMLElement>)}>\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={property ? styles.propertyLabel : styles.title}>{title}</span>\n {subtitle && (\n <span className={property ? styles.propertyValue : styles.subtitle}>{subtitle}</span>\n )}\n </span>\n\n {trailing && <span className={styles.trailing}>{trailing}</span>}\n </Tag>\n );\n};\n"],"mappings":"iFAwCA,IAAa,GAAa,CACxB,QACA,WACA,UACA,WACA,cAAc,GACd,UAAU,UACV,YACA,GAAG,KACiB,CACpB,IAAM,EAAM,EAAc,SAAW,MAC/B,EAAW,IAAY,WAW7B,OACE,EAAA,EAAA,MAAC,EAAD,CAAK,UAVS,CACd,EAAA,QAAO,IACP,EAAc,EAAA,QAAO,YAAc,KACnC,EAAW,EAAA,QAAO,SAAW,KAC7B,CACF,EACG,OAAO,OAAO,EACd,KAAK,GAGU,EAAS,GAAK,WAA9B,CACG,IAAW,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,iBAAU,CAAc,CAAA,GAE5D,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,QAAO,iBAAxB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAW,EAAA,QAAO,cAAgB,EAAA,QAAO,eAAQ,CAAY,CAAA,EAC7E,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAW,EAAA,QAAO,cAAgB,EAAA,QAAO,kBAAW,CAAe,CAAA,CAElF,IAEL,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAW,CAAe,CAAA,CAC5D,GAET"}
|
|
@@ -34,4 +34,4 @@ export interface ActionRowProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
34
34
|
* @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html
|
|
35
35
|
* @see https://developer.gnome.org/hig/patterns/containers.html
|
|
36
36
|
*/
|
|
37
|
-
export declare
|
|
37
|
+
export declare const ActionRow: ({ title, subtitle, leading, trailing, interactive, variant, className, ...props }: ActionRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import e from "./ActionRow.module.css.js";
|
|
2
2
|
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
3
|
//#region src/components/ActionRow/ActionRow.tsx
|
|
4
|
-
|
|
4
|
+
var r = ({ title: r, subtitle: i, leading: a, trailing: o, interactive: s = !1, variant: c = "default", className: l, ...u }) => {
|
|
5
5
|
let d = s ? "button" : "div", f = c === "property";
|
|
6
6
|
return /* @__PURE__ */ n(d, {
|
|
7
7
|
className: [
|
|
@@ -32,7 +32,7 @@ function r({ title: r, subtitle: i, leading: a, trailing: o, interactive: s = !1
|
|
|
32
32
|
})
|
|
33
33
|
]
|
|
34
34
|
});
|
|
35
|
-
}
|
|
35
|
+
};
|
|
36
36
|
//#endregion
|
|
37
37
|
export { r as ActionRow };
|
|
38
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionRow.js","names":[],"sources":["../../../src/components/ActionRow/ActionRow.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ActionRow.module.css';\n\nexport interface ActionRowProps extends HTMLAttributes<HTMLDivElement> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /**\n * Widget placed at the trailing edge (Switch, Button, Text…).\n * For interactive end widgets prefer a controlled component and stop\n * event propagation inside it so the row's own onClick isn't triggered.\n */\n trailing?: ReactNode;\n /**\n * When true the entire row becomes clickable (renders as `<button>`).\n * Use for rows that navigate or trigger an action.\n */\n interactive?: boolean;\n /**\n * `\"property\"` flips the visual hierarchy: the subtitle becomes the\n * prominent value and the title shrinks to a dim label above it.\n * Use for read-only property display (e.g. \"OS Version / Ubuntu 24.04\").\n * Mirrors the `.property` style class.\n */\n variant?: 'default' | 'property';\n}\n\n/**\n * Standard settings row with title, optional subtitle, and end widget.\n *\n * Mirrors the Adwaita `AdwActionRow` pattern — the fundamental building block\n * inside a `BoxedList`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html\n * @see https://developer.gnome.org/hig/patterns/containers.html\n */\nexport
|
|
1
|
+
{"version":3,"file":"ActionRow.js","names":[],"sources":["../../../src/components/ActionRow/ActionRow.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ActionRow.module.css';\n\nexport interface ActionRowProps extends HTMLAttributes<HTMLDivElement> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /**\n * Widget placed at the trailing edge (Switch, Button, Text…).\n * For interactive end widgets prefer a controlled component and stop\n * event propagation inside it so the row's own onClick isn't triggered.\n */\n trailing?: ReactNode;\n /**\n * When true the entire row becomes clickable (renders as `<button>`).\n * Use for rows that navigate or trigger an action.\n */\n interactive?: boolean;\n /**\n * `\"property\"` flips the visual hierarchy: the subtitle becomes the\n * prominent value and the title shrinks to a dim label above it.\n * Use for read-only property display (e.g. \"OS Version / Ubuntu 24.04\").\n * Mirrors the `.property` style class.\n */\n variant?: 'default' | 'property';\n}\n\n/**\n * Standard settings row with title, optional subtitle, and end widget.\n *\n * Mirrors the Adwaita `AdwActionRow` pattern — the fundamental building block\n * inside a `BoxedList`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html\n * @see https://developer.gnome.org/hig/patterns/containers.html\n */\nexport const ActionRow = ({\n title,\n subtitle,\n leading,\n trailing,\n interactive = false,\n variant = 'default',\n className,\n ...props\n}: ActionRowProps) => {\n const Tag = interactive ? 'button' : 'div';\n const property = variant === 'property';\n\n const classes = [\n styles.row,\n interactive ? styles.interactive : null,\n property ? styles.property : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Tag className={classes} {...(props as HTMLAttributes<HTMLElement>)}>\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={property ? styles.propertyLabel : styles.title}>{title}</span>\n {subtitle && (\n <span className={property ? styles.propertyValue : styles.subtitle}>{subtitle}</span>\n )}\n </span>\n\n {trailing && <span className={styles.trailing}>{trailing}</span>}\n </Tag>\n );\n};\n"],"mappings":";;;AAwCA,IAAa,KAAa,EACxB,UACA,aACA,YACA,aACA,iBAAc,IACd,aAAU,WACV,cACA,GAAG,QACiB;CACpB,IAAM,IAAM,IAAc,WAAW,OAC/B,IAAW,MAAY;CAW7B,OACE,kBAAC,GAAD;EAAK,WAVS;GACd,EAAO;GACP,IAAc,EAAO,cAAc;GACnC,IAAW,EAAO,WAAW;GAC7B;EACF,EACG,OAAO,OAAO,EACd,KAAK,GAGU;EAAS,GAAK;YAA9B;GACG,KAAW,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAU;GAAc,CAAA;GAE5D,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACE,kBAAC,QAAD;KAAM,WAAW,IAAW,EAAO,gBAAgB,EAAO;eAAQ;IAAY,CAAA,GAC7E,KACC,kBAAC,QAAD;KAAM,WAAW,IAAW,EAAO,gBAAgB,EAAO;eAAW;IAAe,CAAA,CAElF;;GAEL,KAAY,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAW;GAAe,CAAA;EAC5D;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ActionRow/ActionRow.cjs");exports.ActionRow=e.ActionRow;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require("./Avatar.module.css.cjs");let t=require("react/jsx-runtime");var n=[`blue`,`green`,`yellow`,`orange`,`red`,`purple`,`brown`,`teal`,`slate`];function r(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return n[t%n.length]}function i(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?``:t.length===1?t[0].charAt(0).toUpperCase():t[0].charAt(0).toUpperCase()+t[t.length-1].charAt(0).toUpperCase()}var a=({name:n=``,src:a,alt:o,size:s=`md`,color:c,className:l,...u})=>{let d=c??(n?r(n):`blue`),f=i(n),p=[e.default.avatar,e.default[s],a?null:e.default[`color-${d}`],l].filter(Boolean).join(` `);return(0,t.jsx)(`span`,{role:`img`,"aria-label":o??n??`Avatar`,className:p,...u,children:a?(0,t.jsx)(`img`,{src:a,alt:o??n,className:e.default.image}):(0,t.jsx)(`span`,{"aria-hidden":`true`,className:e.default.initials,children:f})})};exports.Avatar=a;
|
|
2
2
|
//# sourceMappingURL=Avatar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.cjs","names":[],"sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './Avatar.module.css';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Named color palette for the initials fallback.\n * Mirrors libadwaita's avatar color set.\n */\nexport type AvatarColor =\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown'\n | 'teal'\n | 'slate';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Full name used to generate initials and — when `color` is omitted —\n * to deterministically pick a background color.\n */\n name?: string;\n /** Image URL. When provided the initials fallback is hidden. */\n src?: string;\n /** Alt text for the image. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /**\n * Override the auto-derived background color for the initials fallback.\n * When omitted a color is derived from `name` via a stable hash.\n */\n color?: AvatarColor;\n}\n\nconst COLOR_LIST: AvatarColor[] = [\n 'blue',\n 'green',\n 'yellow',\n 'orange',\n 'red',\n 'purple',\n 'brown',\n 'teal',\n 'slate',\n];\n\n/** Stable, non-cryptographic hash → index into COLOR_LIST. */\nfunction nameToColor(name: string): AvatarColor {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (hash * 31 + name.charCodeAt(i)) >>> 0;\n }\n\n return COLOR_LIST[hash % COLOR_LIST.length];\n}\n\n/** Extract up to 2 initials from a name string. */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) {\n return '';\n }\n\n if (parts.length === 1) {\n return parts[0].charAt(0).toUpperCase();\n }\n\n return parts[0].charAt(0).toUpperCase() + parts[parts.length - 1].charAt(0).toUpperCase();\n}\n\n/**\n * Circular avatar with image or initials fallback.\n *\n * Follows the Adwaita `AdwAvatar` pattern — deterministic color from name,\n * up to two initials when no image is supplied.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Avatar.html\n */\nexport
|
|
1
|
+
{"version":3,"file":"Avatar.cjs","names":[],"sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './Avatar.module.css';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Named color palette for the initials fallback.\n * Mirrors libadwaita's avatar color set.\n */\nexport type AvatarColor =\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown'\n | 'teal'\n | 'slate';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Full name used to generate initials and — when `color` is omitted —\n * to deterministically pick a background color.\n */\n name?: string;\n /** Image URL. When provided the initials fallback is hidden. */\n src?: string;\n /** Alt text for the image. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /**\n * Override the auto-derived background color for the initials fallback.\n * When omitted a color is derived from `name` via a stable hash.\n */\n color?: AvatarColor;\n}\n\nconst COLOR_LIST: AvatarColor[] = [\n 'blue',\n 'green',\n 'yellow',\n 'orange',\n 'red',\n 'purple',\n 'brown',\n 'teal',\n 'slate',\n];\n\n/** Stable, non-cryptographic hash → index into COLOR_LIST. */\nfunction nameToColor(name: string): AvatarColor {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (hash * 31 + name.charCodeAt(i)) >>> 0;\n }\n\n return COLOR_LIST[hash % COLOR_LIST.length];\n}\n\n/** Extract up to 2 initials from a name string. */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) {\n return '';\n }\n\n if (parts.length === 1) {\n return parts[0].charAt(0).toUpperCase();\n }\n\n return parts[0].charAt(0).toUpperCase() + parts[parts.length - 1].charAt(0).toUpperCase();\n}\n\n/**\n * Circular avatar with image or initials fallback.\n *\n * Follows the Adwaita `AdwAvatar` pattern — deterministic color from name,\n * up to two initials when no image is supplied.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Avatar.html\n */\nexport const Avatar = ({\n name = '',\n src,\n alt,\n size = 'md',\n color,\n className,\n ...props\n}: AvatarProps) => {\n const resolvedColor = color ?? (name ? nameToColor(name) : 'blue');\n const initials = getInitials(name);\n\n const classes = [\n styles.avatar,\n styles[size],\n !src ? styles[`color-${resolvedColor}`] : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <span role=\"img\" aria-label={alt ?? name ?? 'Avatar'} className={classes} {...props}>\n {src ? (\n <img src={src} alt={alt ?? name} className={styles.image} />\n ) : (\n <span aria-hidden=\"true\" className={styles.initials}>\n {initials}\n </span>\n )}\n </span>\n );\n};\n"],"mappings":"8EAwCA,IAAM,EAA4B,CAChC,OACA,QACA,SACA,SACA,MACA,SACA,QACA,OACA,OACF,EAGA,SAAS,EAAY,EAA2B,CAC9C,IAAI,EAAO,EACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAQ,EAAO,GAAK,EAAK,WAAW,CAAC,IAAO,EAG9C,OAAO,EAAW,EAAO,EAAW,OACtC,CAGA,SAAS,EAAY,EAAsB,CACzC,IAAM,EAAQ,EAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,EAUrD,OARI,EAAM,SAAW,EACZ,GAGL,EAAM,SAAW,EACZ,EAAM,GAAG,OAAO,CAAC,EAAE,YAAY,EAGjC,EAAM,GAAG,OAAO,CAAC,EAAE,YAAY,EAAI,EAAM,EAAM,OAAS,GAAG,OAAO,CAAC,EAAE,YAAY,CAC1F,CAUA,IAAa,GAAU,CACrB,OAAO,GACP,MACA,MACA,OAAO,KACP,QACA,YACA,GAAG,KACc,CACjB,IAAM,EAAgB,IAAU,EAAO,EAAY,CAAI,EAAI,QACrD,EAAW,EAAY,CAAI,EAE3B,EAAU,CACd,EAAA,QAAO,OACP,EAAA,QAAO,GACN,EAAyC,KAAnC,EAAA,QAAO,SAAS,KACvB,CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACE,EAAA,EAAA,KAAC,OAAD,CAAM,KAAK,MAAM,aAAY,GAAO,GAAQ,SAAU,UAAW,EAAS,GAAI,WAC3E,GACC,EAAA,EAAA,KAAC,MAAD,CAAU,MAAK,IAAK,GAAO,EAAM,UAAW,EAAA,QAAO,KAAQ,CAAA,GAE3D,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,OAAO,UAAW,EAAA,QAAO,kBACxC,CACG,CAAA,CAEJ,CAAA,CAEV"}
|
|
@@ -31,4 +31,4 @@ export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
|
|
|
31
31
|
*
|
|
32
32
|
* @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Avatar.html
|
|
33
33
|
*/
|
|
34
|
-
export declare
|
|
34
|
+
export declare const Avatar: ({ name, src, alt, size, color, className, ...props }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -21,7 +21,7 @@ function i(e) {
|
|
|
21
21
|
let t = e.trim().split(/\s+/).filter(Boolean);
|
|
22
22
|
return t.length === 0 ? "" : t.length === 1 ? t[0].charAt(0).toUpperCase() : t[0].charAt(0).toUpperCase() + t[t.length - 1].charAt(0).toUpperCase();
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
var a = ({ name: n = "", src: a, alt: o, size: s = "md", color: c, className: l, ...u }) => {
|
|
25
25
|
let d = c ?? (n ? r(n) : "blue"), f = i(n), p = [
|
|
26
26
|
e.avatar,
|
|
27
27
|
e[s],
|
|
@@ -43,7 +43,7 @@ function a({ name: n = "", src: a, alt: o, size: s = "md", color: c, className:
|
|
|
43
43
|
children: f
|
|
44
44
|
})
|
|
45
45
|
});
|
|
46
|
-
}
|
|
46
|
+
};
|
|
47
47
|
//#endregion
|
|
48
48
|
export { a as Avatar };
|
|
49
49
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './Avatar.module.css';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Named color palette for the initials fallback.\n * Mirrors libadwaita's avatar color set.\n */\nexport type AvatarColor =\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown'\n | 'teal'\n | 'slate';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Full name used to generate initials and — when `color` is omitted —\n * to deterministically pick a background color.\n */\n name?: string;\n /** Image URL. When provided the initials fallback is hidden. */\n src?: string;\n /** Alt text for the image. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /**\n * Override the auto-derived background color for the initials fallback.\n * When omitted a color is derived from `name` via a stable hash.\n */\n color?: AvatarColor;\n}\n\nconst COLOR_LIST: AvatarColor[] = [\n 'blue',\n 'green',\n 'yellow',\n 'orange',\n 'red',\n 'purple',\n 'brown',\n 'teal',\n 'slate',\n];\n\n/** Stable, non-cryptographic hash → index into COLOR_LIST. */\nfunction nameToColor(name: string): AvatarColor {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (hash * 31 + name.charCodeAt(i)) >>> 0;\n }\n\n return COLOR_LIST[hash % COLOR_LIST.length];\n}\n\n/** Extract up to 2 initials from a name string. */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) {\n return '';\n }\n\n if (parts.length === 1) {\n return parts[0].charAt(0).toUpperCase();\n }\n\n return parts[0].charAt(0).toUpperCase() + parts[parts.length - 1].charAt(0).toUpperCase();\n}\n\n/**\n * Circular avatar with image or initials fallback.\n *\n * Follows the Adwaita `AdwAvatar` pattern — deterministic color from name,\n * up to two initials when no image is supplied.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Avatar.html\n */\nexport
|
|
1
|
+
{"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './Avatar.module.css';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Named color palette for the initials fallback.\n * Mirrors libadwaita's avatar color set.\n */\nexport type AvatarColor =\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown'\n | 'teal'\n | 'slate';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Full name used to generate initials and — when `color` is omitted —\n * to deterministically pick a background color.\n */\n name?: string;\n /** Image URL. When provided the initials fallback is hidden. */\n src?: string;\n /** Alt text for the image. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /**\n * Override the auto-derived background color for the initials fallback.\n * When omitted a color is derived from `name` via a stable hash.\n */\n color?: AvatarColor;\n}\n\nconst COLOR_LIST: AvatarColor[] = [\n 'blue',\n 'green',\n 'yellow',\n 'orange',\n 'red',\n 'purple',\n 'brown',\n 'teal',\n 'slate',\n];\n\n/** Stable, non-cryptographic hash → index into COLOR_LIST. */\nfunction nameToColor(name: string): AvatarColor {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (hash * 31 + name.charCodeAt(i)) >>> 0;\n }\n\n return COLOR_LIST[hash % COLOR_LIST.length];\n}\n\n/** Extract up to 2 initials from a name string. */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) {\n return '';\n }\n\n if (parts.length === 1) {\n return parts[0].charAt(0).toUpperCase();\n }\n\n return parts[0].charAt(0).toUpperCase() + parts[parts.length - 1].charAt(0).toUpperCase();\n}\n\n/**\n * Circular avatar with image or initials fallback.\n *\n * Follows the Adwaita `AdwAvatar` pattern — deterministic color from name,\n * up to two initials when no image is supplied.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Avatar.html\n */\nexport const Avatar = ({\n name = '',\n src,\n alt,\n size = 'md',\n color,\n className,\n ...props\n}: AvatarProps) => {\n const resolvedColor = color ?? (name ? nameToColor(name) : 'blue');\n const initials = getInitials(name);\n\n const classes = [\n styles.avatar,\n styles[size],\n !src ? styles[`color-${resolvedColor}`] : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <span role=\"img\" aria-label={alt ?? name ?? 'Avatar'} className={classes} {...props}>\n {src ? (\n <img src={src} alt={alt ?? name} className={styles.image} />\n ) : (\n <span aria-hidden=\"true\" className={styles.initials}>\n {initials}\n </span>\n )}\n </span>\n );\n};\n"],"mappings":";;;AAwCA,IAAM,IAA4B;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAGA,SAAS,EAAY,GAA2B;CAC9C,IAAI,IAAO;CACX,KAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,KAC/B,IAAQ,IAAO,KAAK,EAAK,WAAW,CAAC,MAAO;CAG9C,OAAO,EAAW,IAAO,EAAW;AACtC;AAGA,SAAS,EAAY,GAAsB;CACzC,IAAM,IAAQ,EAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;CAUrD,OARI,EAAM,WAAW,IACZ,KAGL,EAAM,WAAW,IACZ,EAAM,GAAG,OAAO,CAAC,EAAE,YAAY,IAGjC,EAAM,GAAG,OAAO,CAAC,EAAE,YAAY,IAAI,EAAM,EAAM,SAAS,GAAG,OAAO,CAAC,EAAE,YAAY;AAC1F;AAUA,IAAa,KAAU,EACrB,UAAO,IACP,QACA,QACA,UAAO,MACP,UACA,cACA,GAAG,QACc;CACjB,IAAM,IAAgB,MAAU,IAAO,EAAY,CAAI,IAAI,SACrD,IAAW,EAAY,CAAI,GAE3B,IAAU;EACd,EAAO;EACP,EAAO;EACN,IAAyC,OAAnC,EAAO,SAAS;EACvB;CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;CAEX,OACE,kBAAC,QAAD;EAAM,MAAK;EAAM,cAAY,KAAO,KAAQ;EAAU,WAAW;EAAS,GAAI;YAC3E,IACC,kBAAC,OAAD;GAAU;GAAK,KAAK,KAAO;GAAM,WAAW,EAAO;EAAQ,CAAA,IAE3D,kBAAC,QAAD;GAAM,eAAY;GAAO,WAAW,EAAO;aACxC;EACG,CAAA;CAEJ,CAAA;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Avatar/Avatar.cjs");exports.Avatar=e.Avatar;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require("../Avatar/Avatar.cjs"),t=require("./AvatarRotator.module.css.cjs");let n=require("react"),r=require("react/jsx-runtime");function i(e,t){return t<=0?0:(e%t+t)%t}function a(){let[e,t]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`);t(e.matches);let n=()=>t(e.matches);return e.addEventListener?.(`change`,n),()=>e.removeEventListener?.(`change`,n)},[]),e}var o=({name:o=``,avatars:s=[],alt:c,size:l=`md`,color:u,interval:d=3e3,transitionDuration:f=240,pauseOnHover:p=!0,activeIndex:m,defaultActiveIndex:h=0,onIndexChange:g,className:_,style:v,onMouseEnter:y,onMouseLeave:b,onFocus:x,onBlur:S,...C})=>{let w=(0,n.useMemo)(()=>s.map(e=>e.trim()).filter(Boolean),[s]),T=m!==void 0,[E,D]=(0,n.useState)(h),[O,k]=(0,n.useState)(!1),A=a(),j=i(T?m:E,w.length);if((0,n.useEffect)(()=>{if(w.length<=1||d<=0||O||A)return;let e=window.setInterval(()=>{let e=i(j+1,w.length);T||D(e),g?.(e)},d);return()=>window.clearInterval(e)},[j,d,T,O,g,A,w.length]),w.length===0)return(0,r.jsx)(e.Avatar,{name:o,alt:c,size:l,color:u,className:_,style:v,...C});let M=c??o??`Avatar`,N={...v,"--avatar-rotator-duration":`${Math.max(0,f)}ms`};return(0,r.jsx)(`span`,{role:`img`,"aria-label":M,className:[t.default.rotator,t.default[l],_].filter(Boolean).join(` `),style:N,onMouseEnter:e=>{p&&k(!0),y?.(e)},onMouseLeave:e=>{p&&k(!1),b?.(e)},onFocus:e=>{p&&k(!0),x?.(e)},onBlur:e=>{p&&k(!1),S?.(e)},...C,children:w.map((n,i)=>(0,r.jsx)(e.Avatar,{name:o,src:n,alt:``,size:l,"aria-hidden":`true`,className:[t.default.layer,i===j?t.default.active:null].filter(Boolean).join(` `)},`${n}-${i}`))})};exports.AvatarRotator=o;
|
|
2
2
|
//# sourceMappingURL=AvatarRotator.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarRotator.cjs","names":[],"sources":["../../../src/components/AvatarRotator/AvatarRotator.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, useEffect, useMemo, useState } from 'react';\n\nimport { Avatar, type AvatarColor, type AvatarSize } from '../Avatar';\n\nimport styles from './AvatarRotator.module.css';\n\nexport interface AvatarRotatorProps extends HTMLAttributes<HTMLSpanElement> {\n /** Full name used for the accessible label and initials fallback. */\n name?: string;\n /** Image URLs to rotate through. */\n avatars?: string[];\n /** Accessible label. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /** Fallback initials color when no avatar image is available. */\n color?: AvatarColor;\n /** Time between avatar changes in milliseconds. Defaults to `3000`. */\n interval?: number;\n /** Crossfade duration in milliseconds. Defaults to `240`. */\n transitionDuration?: number;\n /** Pause automatic rotation while hovered or focused. Defaults to `true`. */\n pauseOnHover?: boolean;\n /**\n * Controlled active avatar index.\n * When omitted the rotator manages index state internally.\n */\n activeIndex?: number;\n /** Initial active avatar index for uncontrolled usage. Defaults to `0`. */\n defaultActiveIndex?: number;\n /** Called when the active avatar changes. */\n onIndexChange?: (index: number) => void;\n}\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction usePrefersReducedMotion() {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n\n const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n setPrefersReducedMotion(query.matches);\n\n const handleChange = () => setPrefersReducedMotion(query.matches);\n\n query.addEventListener?.('change', handleChange);\n\n return () => query.removeEventListener?.('change', handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\n/**\n * Single avatar surface that rotates through multiple image sources.\n *\n * Keeps `Avatar` focused on rendering one identity, while this component owns\n * timing, crossfade animation, and pause behavior.\n */\nexport
|
|
1
|
+
{"version":3,"file":"AvatarRotator.cjs","names":[],"sources":["../../../src/components/AvatarRotator/AvatarRotator.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, useEffect, useMemo, useState } from 'react';\n\nimport { Avatar, type AvatarColor, type AvatarSize } from '../Avatar';\n\nimport styles from './AvatarRotator.module.css';\n\nexport interface AvatarRotatorProps extends HTMLAttributes<HTMLSpanElement> {\n /** Full name used for the accessible label and initials fallback. */\n name?: string;\n /** Image URLs to rotate through. */\n avatars?: string[];\n /** Accessible label. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /** Fallback initials color when no avatar image is available. */\n color?: AvatarColor;\n /** Time between avatar changes in milliseconds. Defaults to `3000`. */\n interval?: number;\n /** Crossfade duration in milliseconds. Defaults to `240`. */\n transitionDuration?: number;\n /** Pause automatic rotation while hovered or focused. Defaults to `true`. */\n pauseOnHover?: boolean;\n /**\n * Controlled active avatar index.\n * When omitted the rotator manages index state internally.\n */\n activeIndex?: number;\n /** Initial active avatar index for uncontrolled usage. Defaults to `0`. */\n defaultActiveIndex?: number;\n /** Called when the active avatar changes. */\n onIndexChange?: (index: number) => void;\n}\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction usePrefersReducedMotion() {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n\n const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n setPrefersReducedMotion(query.matches);\n\n const handleChange = () => setPrefersReducedMotion(query.matches);\n\n query.addEventListener?.('change', handleChange);\n\n return () => query.removeEventListener?.('change', handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\n/**\n * Single avatar surface that rotates through multiple image sources.\n *\n * Keeps `Avatar` focused on rendering one identity, while this component owns\n * timing, crossfade animation, and pause behavior.\n */\nexport const AvatarRotator = ({\n name = '',\n avatars = [],\n alt,\n size = 'md',\n color,\n interval = 3000,\n transitionDuration = 240,\n pauseOnHover = true,\n activeIndex,\n defaultActiveIndex = 0,\n onIndexChange,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n ...props\n}: AvatarRotatorProps) => {\n const sources = useMemo(() => avatars.map((src) => src.trim()).filter(Boolean), [avatars]);\n const isControlled = activeIndex !== undefined;\n const [internalIndex, setInternalIndex] = useState(defaultActiveIndex);\n const [isPaused, setIsPaused] = useState(false);\n const prefersReducedMotion = usePrefersReducedMotion();\n const currentIndex = clampIndex(isControlled ? activeIndex : internalIndex, sources.length);\n\n useEffect(() => {\n if (sources.length <= 1) {\n return;\n }\n\n if (interval <= 0) {\n return;\n }\n\n if (isPaused || prefersReducedMotion) {\n return;\n }\n\n const timer = window.setInterval(() => {\n const nextIndex = clampIndex(currentIndex + 1, sources.length);\n\n if (!isControlled) {\n setInternalIndex(nextIndex);\n }\n\n onIndexChange?.(nextIndex);\n }, interval);\n\n return () => window.clearInterval(timer);\n }, [\n currentIndex,\n interval,\n isControlled,\n isPaused,\n onIndexChange,\n prefersReducedMotion,\n sources.length,\n ]);\n\n if (sources.length === 0) {\n return (\n <Avatar\n name={name}\n alt={alt}\n size={size}\n color={color}\n className={className}\n style={style}\n {...props}\n />\n );\n }\n\n const label = alt ?? name ?? 'Avatar';\n const transitionStyle = {\n ...style,\n '--avatar-rotator-duration': `${Math.max(0, transitionDuration)}ms`,\n } as CSSProperties;\n\n return (\n <span\n role=\"img\"\n aria-label={label}\n className={[styles.rotator, styles[size], className].filter(Boolean).join(' ')}\n style={transitionStyle}\n onMouseEnter={(event) => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n\n onMouseLeave?.(event);\n }}\n onFocus={(event) => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n\n onBlur?.(event);\n }}\n {...props}\n >\n {sources.map((src, index) => (\n <Avatar\n key={`${src}-${index}`}\n name={name}\n src={src}\n alt=\"\"\n size={size}\n aria-hidden=\"true\"\n className={[styles.layer, index === currentIndex ? styles.active : null]\n .filter(Boolean)\n .join(' ')}\n />\n ))}\n </span>\n );\n};\n"],"mappings":"0IAkCA,SAAS,EAAW,EAAe,EAAgB,CAKjD,OAJI,GAAU,EACL,GAGA,EAAQ,EAAU,GAAU,CACvC,CAEA,SAAS,GAA0B,CACjC,GAAM,CAAC,EAAsB,IAAA,EAAA,EAAA,UAAoC,EAAK,EAkBtE,OAhBA,EAAA,EAAA,eAAgB,CACd,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,WAC3C,OAGF,IAAM,EAAQ,OAAO,WAAW,kCAAkC,EAElE,EAAwB,EAAM,OAAO,EAErC,IAAM,MAAqB,EAAwB,EAAM,OAAO,EAIhE,OAFA,EAAM,mBAAmB,SAAU,CAAY,MAElC,EAAM,sBAAsB,SAAU,CAAY,CACjE,EAAG,CAAC,CAAC,EAEE,CACT,CAQA,IAAa,GAAiB,CAC5B,OAAO,GACP,UAAU,CAAC,EACX,MACA,OAAO,KACP,QACA,WAAW,IACX,qBAAqB,IACrB,eAAe,GACf,cACA,qBAAqB,EACrB,gBACA,YACA,QACA,eACA,eACA,UACA,SACA,GAAG,KACqB,CACxB,IAAM,GAAA,EAAA,EAAA,aAAwB,EAAQ,IAAK,GAAQ,EAAI,KAAK,CAAC,EAAE,OAAO,OAAO,EAAG,CAAC,CAAO,CAAC,EACnF,EAAe,IAAgB,IAAA,GAC/B,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,CAAkB,EAC/D,CAAC,EAAU,IAAA,EAAA,EAAA,UAAwB,EAAK,EACxC,EAAuB,EAAwB,EAC/C,EAAe,EAAW,EAAe,EAAc,EAAe,EAAQ,MAAM,EAoC1F,IAlCA,EAAA,EAAA,eAAgB,CASd,GARI,EAAQ,QAAU,GAIlB,GAAY,GAIZ,GAAY,EACd,OAGF,IAAM,EAAQ,OAAO,gBAAkB,CACrC,IAAM,EAAY,EAAW,EAAe,EAAG,EAAQ,MAAM,EAExD,GACH,EAAiB,CAAS,EAG5B,IAAgB,CAAS,CAC3B,EAAG,CAAQ,EAEX,UAAa,OAAO,cAAc,CAAK,CACzC,EAAG,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EAAQ,MACV,CAAC,EAEG,EAAQ,SAAW,EACrB,OACE,EAAA,EAAA,KAAC,EAAA,OAAD,CACQ,OACD,MACC,OACC,QACI,YACJ,QACP,GAAI,CACL,CAAA,EAIL,IAAM,EAAQ,GAAO,GAAQ,SACvB,EAAkB,CACtB,GAAG,EACH,4BAA6B,GAAG,KAAK,IAAI,EAAG,CAAkB,EAAE,GAClE,EAEA,OACE,EAAA,EAAA,KAAC,OAAD,CACE,KAAK,MACL,aAAY,EACZ,UAAW,CAAC,EAAA,QAAO,QAAS,EAAA,QAAO,GAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7E,MAAO,EACP,aAAe,GAAU,CACnB,GACF,EAAY,EAAI,EAGlB,IAAe,CAAK,CACtB,EACA,aAAe,GAAU,CACnB,GACF,EAAY,EAAK,EAGnB,IAAe,CAAK,CACtB,EACA,QAAU,GAAU,CACd,GACF,EAAY,EAAI,EAGlB,IAAU,CAAK,CACjB,EACA,OAAS,GAAU,CACb,GACF,EAAY,EAAK,EAGnB,IAAS,CAAK,CAChB,EACA,GAAI,WAEH,EAAQ,KAAK,EAAK,KACjB,EAAA,EAAA,KAAC,EAAA,OAAD,CAEQ,OACD,MACL,IAAI,GACE,OACN,cAAY,OACZ,UAAW,CAAC,EAAA,QAAO,MAAO,IAAU,EAAe,EAAA,QAAO,OAAS,IAAI,EACpE,OAAO,OAAO,EACd,KAAK,GAAG,CACZ,EATM,GAAG,EAAI,GAAG,GAShB,CACF,CACG,CAAA,CAEV"}
|
|
@@ -33,4 +33,4 @@ export interface AvatarRotatorProps extends HTMLAttributes<HTMLSpanElement> {
|
|
|
33
33
|
* Keeps `Avatar` focused on rendering one identity, while this component owns
|
|
34
34
|
* timing, crossfade animation, and pause behavior.
|
|
35
35
|
*/
|
|
36
|
-
export declare
|
|
36
|
+
export declare const AvatarRotator: ({ name, avatars, alt, size, color, interval, transitionDuration, pauseOnHover, activeIndex, defaultActiveIndex, onIndexChange, className, style, onMouseEnter, onMouseLeave, onFocus, onBlur, ...props }: AvatarRotatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,7 +16,7 @@ function s() {
|
|
|
16
16
|
return e.addEventListener?.("change", n), () => e.removeEventListener?.("change", n);
|
|
17
17
|
}, []), e;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
var c = ({ name: c = "", avatars: l = [], alt: u, size: d = "md", color: f, interval: p = 3e3, transitionDuration: m = 240, pauseOnHover: h = !0, activeIndex: g, defaultActiveIndex: _ = 0, onIndexChange: v, className: y, style: b, onMouseEnter: x, onMouseLeave: S, onFocus: C, onBlur: w, ...T }) => {
|
|
20
20
|
let E = r(() => l.map((e) => e.trim()).filter(Boolean), [l]), D = g !== void 0, [O, k] = i(_), [A, j] = i(!1), M = s(), N = o(D ? g : O, E.length);
|
|
21
21
|
if (n(() => {
|
|
22
22
|
if (E.length <= 1 || p <= 0 || A || M) return;
|
|
@@ -77,7 +77,7 @@ function c({ name: c = "", avatars: l = [], alt: u, size: d = "md", color: f, in
|
|
|
77
77
|
className: [t.layer, r === N ? t.active : null].filter(Boolean).join(" ")
|
|
78
78
|
}, `${n}-${r}`))
|
|
79
79
|
});
|
|
80
|
-
}
|
|
80
|
+
};
|
|
81
81
|
//#endregion
|
|
82
82
|
export { c as AvatarRotator };
|
|
83
83
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarRotator.js","names":[],"sources":["../../../src/components/AvatarRotator/AvatarRotator.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, useEffect, useMemo, useState } from 'react';\n\nimport { Avatar, type AvatarColor, type AvatarSize } from '../Avatar';\n\nimport styles from './AvatarRotator.module.css';\n\nexport interface AvatarRotatorProps extends HTMLAttributes<HTMLSpanElement> {\n /** Full name used for the accessible label and initials fallback. */\n name?: string;\n /** Image URLs to rotate through. */\n avatars?: string[];\n /** Accessible label. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /** Fallback initials color when no avatar image is available. */\n color?: AvatarColor;\n /** Time between avatar changes in milliseconds. Defaults to `3000`. */\n interval?: number;\n /** Crossfade duration in milliseconds. Defaults to `240`. */\n transitionDuration?: number;\n /** Pause automatic rotation while hovered or focused. Defaults to `true`. */\n pauseOnHover?: boolean;\n /**\n * Controlled active avatar index.\n * When omitted the rotator manages index state internally.\n */\n activeIndex?: number;\n /** Initial active avatar index for uncontrolled usage. Defaults to `0`. */\n defaultActiveIndex?: number;\n /** Called when the active avatar changes. */\n onIndexChange?: (index: number) => void;\n}\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction usePrefersReducedMotion() {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n\n const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n setPrefersReducedMotion(query.matches);\n\n const handleChange = () => setPrefersReducedMotion(query.matches);\n\n query.addEventListener?.('change', handleChange);\n\n return () => query.removeEventListener?.('change', handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\n/**\n * Single avatar surface that rotates through multiple image sources.\n *\n * Keeps `Avatar` focused on rendering one identity, while this component owns\n * timing, crossfade animation, and pause behavior.\n */\nexport
|
|
1
|
+
{"version":3,"file":"AvatarRotator.js","names":[],"sources":["../../../src/components/AvatarRotator/AvatarRotator.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, useEffect, useMemo, useState } from 'react';\n\nimport { Avatar, type AvatarColor, type AvatarSize } from '../Avatar';\n\nimport styles from './AvatarRotator.module.css';\n\nexport interface AvatarRotatorProps extends HTMLAttributes<HTMLSpanElement> {\n /** Full name used for the accessible label and initials fallback. */\n name?: string;\n /** Image URLs to rotate through. */\n avatars?: string[];\n /** Accessible label. Defaults to `name`. */\n alt?: string;\n /** Size of the avatar. Defaults to `\"md\"`. */\n size?: AvatarSize;\n /** Fallback initials color when no avatar image is available. */\n color?: AvatarColor;\n /** Time between avatar changes in milliseconds. Defaults to `3000`. */\n interval?: number;\n /** Crossfade duration in milliseconds. Defaults to `240`. */\n transitionDuration?: number;\n /** Pause automatic rotation while hovered or focused. Defaults to `true`. */\n pauseOnHover?: boolean;\n /**\n * Controlled active avatar index.\n * When omitted the rotator manages index state internally.\n */\n activeIndex?: number;\n /** Initial active avatar index for uncontrolled usage. Defaults to `0`. */\n defaultActiveIndex?: number;\n /** Called when the active avatar changes. */\n onIndexChange?: (index: number) => void;\n}\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction usePrefersReducedMotion() {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n\n const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n setPrefersReducedMotion(query.matches);\n\n const handleChange = () => setPrefersReducedMotion(query.matches);\n\n query.addEventListener?.('change', handleChange);\n\n return () => query.removeEventListener?.('change', handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\n/**\n * Single avatar surface that rotates through multiple image sources.\n *\n * Keeps `Avatar` focused on rendering one identity, while this component owns\n * timing, crossfade animation, and pause behavior.\n */\nexport const AvatarRotator = ({\n name = '',\n avatars = [],\n alt,\n size = 'md',\n color,\n interval = 3000,\n transitionDuration = 240,\n pauseOnHover = true,\n activeIndex,\n defaultActiveIndex = 0,\n onIndexChange,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n ...props\n}: AvatarRotatorProps) => {\n const sources = useMemo(() => avatars.map((src) => src.trim()).filter(Boolean), [avatars]);\n const isControlled = activeIndex !== undefined;\n const [internalIndex, setInternalIndex] = useState(defaultActiveIndex);\n const [isPaused, setIsPaused] = useState(false);\n const prefersReducedMotion = usePrefersReducedMotion();\n const currentIndex = clampIndex(isControlled ? activeIndex : internalIndex, sources.length);\n\n useEffect(() => {\n if (sources.length <= 1) {\n return;\n }\n\n if (interval <= 0) {\n return;\n }\n\n if (isPaused || prefersReducedMotion) {\n return;\n }\n\n const timer = window.setInterval(() => {\n const nextIndex = clampIndex(currentIndex + 1, sources.length);\n\n if (!isControlled) {\n setInternalIndex(nextIndex);\n }\n\n onIndexChange?.(nextIndex);\n }, interval);\n\n return () => window.clearInterval(timer);\n }, [\n currentIndex,\n interval,\n isControlled,\n isPaused,\n onIndexChange,\n prefersReducedMotion,\n sources.length,\n ]);\n\n if (sources.length === 0) {\n return (\n <Avatar\n name={name}\n alt={alt}\n size={size}\n color={color}\n className={className}\n style={style}\n {...props}\n />\n );\n }\n\n const label = alt ?? name ?? 'Avatar';\n const transitionStyle = {\n ...style,\n '--avatar-rotator-duration': `${Math.max(0, transitionDuration)}ms`,\n } as CSSProperties;\n\n return (\n <span\n role=\"img\"\n aria-label={label}\n className={[styles.rotator, styles[size], className].filter(Boolean).join(' ')}\n style={transitionStyle}\n onMouseEnter={(event) => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n\n onMouseLeave?.(event);\n }}\n onFocus={(event) => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n\n onBlur?.(event);\n }}\n {...props}\n >\n {sources.map((src, index) => (\n <Avatar\n key={`${src}-${index}`}\n name={name}\n src={src}\n alt=\"\"\n size={size}\n aria-hidden=\"true\"\n className={[styles.layer, index === currentIndex ? styles.active : null]\n .filter(Boolean)\n .join(' ')}\n />\n ))}\n </span>\n );\n};\n"],"mappings":";;;;;AAkCA,SAAS,EAAW,GAAe,GAAgB;CAKjD,OAJI,KAAU,IACL,KAGA,IAAQ,IAAU,KAAU;AACvC;AAEA,SAAS,IAA0B;CACjC,IAAM,CAAC,GAAsB,KAA2B,EAAS,EAAK;CAkBtE,OAhBA,QAAgB;EACd,IAAI,OAAO,SAAW,OAAe,CAAC,OAAO,YAC3C;EAGF,IAAM,IAAQ,OAAO,WAAW,kCAAkC;EAElE,EAAwB,EAAM,OAAO;EAErC,IAAM,UAAqB,EAAwB,EAAM,OAAO;EAIhE,OAFA,EAAM,mBAAmB,UAAU,CAAY,SAElC,EAAM,sBAAsB,UAAU,CAAY;CACjE,GAAG,CAAC,CAAC,GAEE;AACT;AAQA,IAAa,KAAiB,EAC5B,UAAO,IACP,aAAU,CAAC,GACX,QACA,UAAO,MACP,UACA,cAAW,KACX,wBAAqB,KACrB,kBAAe,IACf,gBACA,wBAAqB,GACrB,kBACA,cACA,UACA,iBACA,iBACA,YACA,WACA,GAAG,QACqB;CACxB,IAAM,IAAU,QAAc,EAAQ,KAAK,MAAQ,EAAI,KAAK,CAAC,EAAE,OAAO,OAAO,GAAG,CAAC,CAAO,CAAC,GACnF,IAAe,MAAgB,KAAA,GAC/B,CAAC,GAAe,KAAoB,EAAS,CAAkB,GAC/D,CAAC,GAAU,KAAe,EAAS,EAAK,GACxC,IAAuB,EAAwB,GAC/C,IAAe,EAAW,IAAe,IAAc,GAAe,EAAQ,MAAM;CAoC1F,IAlCA,QAAgB;EASd,IARI,EAAQ,UAAU,KAIlB,KAAY,KAIZ,KAAY,GACd;EAGF,IAAM,IAAQ,OAAO,kBAAkB;GACrC,IAAM,IAAY,EAAW,IAAe,GAAG,EAAQ,MAAM;GAM7D,AAJK,KACH,EAAiB,CAAS,GAG5B,IAAgB,CAAS;EAC3B,GAAG,CAAQ;EAEX,aAAa,OAAO,cAAc,CAAK;CACzC,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA,EAAQ;CACV,CAAC,GAEG,EAAQ,WAAW,GACrB,OACE,kBAAC,GAAD;EACQ;EACD;EACC;EACC;EACI;EACJ;EACP,GAAI;CACL,CAAA;CAIL,IAAM,IAAQ,KAAO,KAAQ,UACvB,IAAkB;EACtB,GAAG;EACH,6BAA6B,GAAG,KAAK,IAAI,GAAG,CAAkB,EAAE;CAClE;CAEA,OACE,kBAAC,QAAD;EACE,MAAK;EACL,cAAY;EACZ,WAAW;GAAC,EAAO;GAAS,EAAO;GAAO;EAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;EAC7E,OAAO;EACP,eAAe,MAAU;GAKvB,AAJI,KACF,EAAY,EAAI,GAGlB,IAAe,CAAK;EACtB;EACA,eAAe,MAAU;GAKvB,AAJI,KACF,EAAY,EAAK,GAGnB,IAAe,CAAK;EACtB;EACA,UAAU,MAAU;GAKlB,AAJI,KACF,EAAY,EAAI,GAGlB,IAAU,CAAK;EACjB;EACA,SAAS,MAAU;GAKjB,AAJI,KACF,EAAY,EAAK,GAGnB,IAAS,CAAK;EAChB;EACA,GAAI;YAEH,EAAQ,KAAK,GAAK,MACjB,kBAAC,GAAD;GAEQ;GACD;GACL,KAAI;GACE;GACN,eAAY;GACZ,WAAW,CAAC,EAAO,OAAO,MAAU,IAAe,EAAO,SAAS,IAAI,EACpE,OAAO,OAAO,EACd,KAAK,GAAG;EACZ,GATM,GAAG,EAAI,GAAG,GAShB,CACF;CACG,CAAA;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./AvatarRotator/AvatarRotator.cjs");exports.AvatarRotator=e.AvatarRotator;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require("./Badge.module.css.cjs");let t=require("react/jsx-runtime");var n=({variant:n=`accent`,dot:r=!1,children:i,anchor:a,className:o,...s})=>{let c=(0,t.jsx)(`span`,{className:[e.default.badge,e.default[n],r?e.default.dot:null,a?e.default.anchored:null,o].filter(Boolean).join(` `),...s,children:!r&&i});return a?(0,t.jsxs)(`span`,{className:e.default.wrapper,children:[a,c]}):c};exports.Badge=n;
|
|
2
2
|
//# sourceMappingURL=Badge.cjs.map
|