@gnome-ui/react 1.36.1 → 1.36.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -2
- package/dist/components/AboutDialog/AboutDialog.cjs +2 -0
- package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -0
- package/dist/components/AboutDialog/AboutDialog.js +185 -0
- package/dist/components/AboutDialog/AboutDialog.js.map +1 -0
- package/dist/components/AboutDialog/AboutDialog.module.css.cjs +2 -0
- package/dist/components/AboutDialog/AboutDialog.module.css.cjs.map +1 -0
- package/dist/components/AboutDialog/AboutDialog.module.css.js +35 -0
- package/dist/components/AboutDialog/AboutDialog.module.css.js.map +1 -0
- package/dist/components/AboutDialog.cjs +1 -0
- package/dist/components/AboutDialog.d.ts +2 -0
- package/dist/components/AboutDialog.js +2 -0
- package/dist/components/ActionRow/ActionRow.cjs +2 -0
- package/dist/components/ActionRow/ActionRow.cjs.map +1 -0
- package/dist/components/ActionRow/ActionRow.js +39 -0
- package/dist/components/ActionRow/ActionRow.js.map +1 -0
- package/dist/components/ActionRow/ActionRow.module.css.cjs +2 -0
- package/dist/components/ActionRow/ActionRow.module.css.cjs.map +1 -0
- package/dist/components/ActionRow/ActionRow.module.css.js +15 -0
- package/dist/components/ActionRow/ActionRow.module.css.js.map +1 -0
- package/dist/components/ActionRow.cjs +1 -0
- package/dist/components/ActionRow.d.ts +2 -0
- package/dist/components/ActionRow.js +2 -0
- package/dist/components/Avatar/Avatar.cjs +2 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.js +50 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +2 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +22 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar.cjs +1 -0
- package/dist/components/Avatar.d.ts +2 -0
- package/dist/components/Avatar.js +2 -0
- package/dist/components/Badge/Badge.cjs +2 -0
- package/dist/components/Badge/Badge.cjs.map +1 -0
- package/dist/components/Badge/Badge.js +24 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/Badge.module.css.cjs +2 -0
- package/dist/components/Badge/Badge.module.css.cjs.map +1 -0
- package/dist/components/Badge/Badge.module.css.js +15 -0
- package/dist/components/Badge/Badge.module.css.js.map +1 -0
- package/dist/components/Badge.cjs +1 -0
- package/dist/components/Badge.d.ts +2 -0
- package/dist/components/Badge.js +2 -0
- package/dist/components/Banner/Banner.cjs +2 -0
- package/dist/components/Banner/Banner.cjs.map +1 -0
- package/dist/components/Banner/Banner.js +44 -0
- package/dist/components/Banner/Banner.js.map +1 -0
- package/dist/components/Banner/Banner.module.css.cjs +2 -0
- package/dist/components/Banner/Banner.module.css.cjs.map +1 -0
- package/dist/components/Banner/Banner.module.css.js +20 -0
- package/dist/components/Banner/Banner.module.css.js.map +1 -0
- package/dist/components/Banner.cjs +1 -0
- package/dist/components/Banner.d.ts +2 -0
- package/dist/components/Banner.js +2 -0
- package/dist/components/Bin/Bin.cjs +2 -0
- package/dist/components/Bin/Bin.cjs.map +1 -0
- package/dist/components/Bin/Bin.js +12 -0
- package/dist/components/Bin/Bin.js.map +1 -0
- package/dist/components/Bin.cjs +1 -0
- package/dist/components/Bin.d.ts +2 -0
- package/dist/components/Bin.js +2 -0
- package/dist/components/Blockquote/Blockquote.cjs +2 -0
- package/dist/components/Blockquote/Blockquote.cjs.map +1 -0
- package/dist/components/Blockquote/Blockquote.js +34 -0
- package/dist/components/Blockquote/Blockquote.js.map +1 -0
- package/dist/components/Blockquote/Blockquote.module.css.cjs +2 -0
- package/dist/components/Blockquote/Blockquote.module.css.cjs.map +1 -0
- package/dist/components/Blockquote/Blockquote.module.css.js +17 -0
- package/dist/components/Blockquote/Blockquote.module.css.js.map +1 -0
- package/dist/components/Blockquote.cjs +1 -0
- package/dist/components/Blockquote.d.ts +2 -0
- package/dist/components/Blockquote.js +2 -0
- package/dist/components/BottomSheet/BottomSheet.cjs +2 -0
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -0
- package/dist/components/BottomSheet/BottomSheet.js +60 -0
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -0
- package/dist/components/BottomSheet/BottomSheet.module.css.cjs +2 -0
- package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -0
- package/dist/components/BottomSheet/BottomSheet.module.css.js +15 -0
- package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -0
- package/dist/components/BottomSheet.cjs +1 -0
- package/dist/components/BottomSheet.d.ts +2 -0
- package/dist/components/BottomSheet.js +2 -0
- package/dist/components/Box/Box.cjs +2 -0
- package/dist/components/Box/Box.cjs.map +1 -0
- package/dist/components/Box/Box.js +22 -0
- package/dist/components/Box/Box.js.map +1 -0
- package/dist/components/Box.cjs +1 -0
- package/dist/components/Box.d.ts +2 -0
- package/dist/components/Box.js +2 -0
- package/dist/components/BoxedList/BoxedList.cjs +2 -0
- package/dist/components/BoxedList/BoxedList.cjs.map +1 -0
- package/dist/components/BoxedList/BoxedList.js +25 -0
- package/dist/components/BoxedList/BoxedList.js.map +1 -0
- package/dist/components/BoxedList/BoxedList.module.css.cjs +2 -0
- package/dist/components/BoxedList/BoxedList.module.css.cjs.map +1 -0
- package/dist/components/BoxedList/BoxedList.module.css.js +11 -0
- package/dist/components/BoxedList/BoxedList.module.css.js.map +1 -0
- package/dist/components/BoxedList.cjs +1 -0
- package/dist/components/BoxedList.d.ts +2 -0
- package/dist/components/BoxedList.js +2 -0
- package/dist/components/BreakpointBin/BreakpointBin.cjs +2 -0
- package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -0
- package/dist/components/BreakpointBin/BreakpointBin.js +37 -0
- package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -0
- package/dist/components/BreakpointBin.cjs +1 -0
- package/dist/components/BreakpointBin.d.ts +2 -0
- package/dist/components/BreakpointBin.js +2 -0
- package/dist/components/Button/Button.cjs +2 -0
- package/dist/components/Button/Button.cjs.map +1 -0
- package/dist/components/Button/Button.js +25 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/Button.module.css.cjs +2 -0
- package/dist/components/Button/Button.module.css.cjs.map +1 -0
- package/dist/components/Button/Button.module.css.js +17 -0
- package/dist/components/Button/Button.module.css.js.map +1 -0
- package/dist/components/Button.cjs +1 -0
- package/dist/components/Button.d.ts +2 -0
- package/dist/components/Button.js +2 -0
- package/dist/components/ButtonContent/ButtonContent.cjs +2 -0
- package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -0
- package/dist/components/ButtonContent/ButtonContent.js +33 -0
- package/dist/components/ButtonContent/ButtonContent.js.map +1 -0
- package/dist/components/ButtonContent/ButtonContent.module.css.cjs +2 -0
- package/dist/components/ButtonContent/ButtonContent.module.css.cjs.map +1 -0
- package/dist/components/ButtonContent/ButtonContent.module.css.js +9 -0
- package/dist/components/ButtonContent/ButtonContent.module.css.js.map +1 -0
- package/dist/components/ButtonContent.cjs +1 -0
- package/dist/components/ButtonContent.d.ts +2 -0
- package/dist/components/ButtonContent.js +2 -0
- package/dist/components/ButtonRow/ButtonRow.cjs +2 -0
- package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -0
- package/dist/components/ButtonRow/ButtonRow.js +31 -0
- package/dist/components/ButtonRow/ButtonRow.js.map +1 -0
- package/dist/components/ButtonRow/ButtonRow.module.css.cjs +2 -0
- package/dist/components/ButtonRow/ButtonRow.module.css.cjs.map +1 -0
- package/dist/components/ButtonRow/ButtonRow.module.css.js +13 -0
- package/dist/components/ButtonRow/ButtonRow.module.css.js.map +1 -0
- package/dist/components/ButtonRow.cjs +1 -0
- package/dist/components/ButtonRow.d.ts +2 -0
- package/dist/components/ButtonRow.js +2 -0
- package/dist/components/Card/Card.cjs +2 -0
- package/dist/components/Card/Card.cjs.map +1 -0
- package/dist/components/Card/Card.js +19 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.module.css.cjs +2 -0
- package/dist/components/Card/Card.module.css.cjs.map +1 -0
- package/dist/components/Card/Card.module.css.js +13 -0
- package/dist/components/Card/Card.module.css.js.map +1 -0
- package/dist/components/Card.cjs +1 -0
- package/dist/components/Card.d.ts +2 -0
- package/dist/components/Card.js +2 -0
- package/dist/components/Carousel/Carousel.cjs +2 -0
- package/dist/components/Carousel/Carousel.cjs.map +1 -0
- package/dist/components/Carousel/Carousel.js +112 -0
- package/dist/components/Carousel/Carousel.js.map +1 -0
- package/dist/components/Carousel/Carousel.module.css.cjs +2 -0
- package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -0
- package/dist/components/Carousel/Carousel.module.css.js +16 -0
- package/dist/components/Carousel/Carousel.module.css.js.map +1 -0
- package/dist/components/Carousel.cjs +1 -0
- package/dist/components/Carousel.d.ts +2 -0
- package/dist/components/Carousel.js +2 -0
- package/dist/components/CheckRow/CheckRow.cjs +2 -0
- package/dist/components/CheckRow/CheckRow.cjs.map +1 -0
- package/dist/components/CheckRow/CheckRow.js +66 -0
- package/dist/components/CheckRow/CheckRow.js.map +1 -0
- package/dist/components/CheckRow/CheckRow.module.css.cjs +2 -0
- package/dist/components/CheckRow/CheckRow.module.css.cjs.map +1 -0
- package/dist/components/CheckRow/CheckRow.module.css.js +16 -0
- package/dist/components/CheckRow/CheckRow.module.css.js.map +1 -0
- package/dist/components/CheckRow.cjs +1 -0
- package/dist/components/CheckRow.d.ts +2 -0
- package/dist/components/CheckRow.js +2 -0
- package/dist/components/Checkbox/Checkbox.cjs +2 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +19 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +2 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +5 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox.cjs +1 -0
- package/dist/components/Checkbox.d.ts +2 -0
- package/dist/components/Checkbox.js +2 -0
- package/dist/components/Chip/Chip.cjs +2 -0
- package/dist/components/Chip/Chip.cjs.map +1 -0
- package/dist/components/Chip/Chip.js +61 -0
- package/dist/components/Chip/Chip.js.map +1 -0
- package/dist/components/Chip/Chip.module.css.cjs +2 -0
- package/dist/components/Chip/Chip.module.css.cjs.map +1 -0
- package/dist/components/Chip/Chip.module.css.js +13 -0
- package/dist/components/Chip/Chip.module.css.js.map +1 -0
- package/dist/components/Chip.cjs +1 -0
- package/dist/components/Chip.d.ts +2 -0
- package/dist/components/Chip.js +2 -0
- package/dist/components/Clamp/Clamp.cjs +2 -0
- package/dist/components/Clamp/Clamp.cjs.map +1 -0
- package/dist/components/Clamp/Clamp.js +18 -0
- package/dist/components/Clamp/Clamp.js.map +1 -0
- package/dist/components/Clamp/Clamp.module.css.cjs +2 -0
- package/dist/components/Clamp/Clamp.module.css.cjs.map +1 -0
- package/dist/components/Clamp/Clamp.module.css.js +5 -0
- package/dist/components/Clamp/Clamp.module.css.js.map +1 -0
- package/dist/components/Clamp.cjs +1 -0
- package/dist/components/Clamp.d.ts +2 -0
- package/dist/components/Clamp.js +2 -0
- package/dist/components/ColorPicker/ColorPicker.cjs +2 -0
- package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.js +152 -0
- package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.module.css.cjs +2 -0
- package/dist/components/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.module.css.js +17 -0
- package/dist/components/ColorPicker/ColorPicker.module.css.js.map +1 -0
- package/dist/components/ColorPicker.cjs +1 -0
- package/dist/components/ColorPicker.d.ts +2 -0
- package/dist/components/ColorPicker.js +2 -0
- package/dist/components/ColumnView/ColumnView.cjs +2 -0
- package/dist/components/ColumnView/ColumnView.cjs.map +1 -0
- package/dist/components/ColumnView/ColumnView.js +153 -0
- package/dist/components/ColumnView/ColumnView.js.map +1 -0
- package/dist/components/ColumnView/ColumnView.module.css.cjs +2 -0
- package/dist/components/ColumnView/ColumnView.module.css.cjs.map +1 -0
- package/dist/components/ColumnView/ColumnView.module.css.js +28 -0
- package/dist/components/ColumnView/ColumnView.module.css.js.map +1 -0
- package/dist/components/ColumnView.cjs +1 -0
- package/dist/components/ColumnView.d.ts +2 -0
- package/dist/components/ColumnView.js +2 -0
- package/dist/components/ComboRow/ComboRow.cjs +2 -0
- package/dist/components/ComboRow/ComboRow.cjs.map +1 -0
- package/dist/components/ComboRow/ComboRow.js +197 -0
- package/dist/components/ComboRow/ComboRow.js.map +1 -0
- package/dist/components/ComboRow/ComboRow.module.css.cjs +2 -0
- package/dist/components/ComboRow/ComboRow.module.css.cjs.map +1 -0
- package/dist/components/ComboRow/ComboRow.module.css.js +31 -0
- package/dist/components/ComboRow/ComboRow.module.css.js.map +1 -0
- package/dist/components/ComboRow.cjs +1 -0
- package/dist/components/ComboRow.d.ts +2 -0
- package/dist/components/ComboRow.js +2 -0
- package/dist/components/ContributionGraph/ContributionGraph.cjs +2 -0
- package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -0
- package/dist/components/ContributionGraph/ContributionGraph.js +248 -0
- package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -0
- package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs +2 -0
- package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs.map +1 -0
- package/dist/components/ContributionGraph/ContributionGraph.module.css.js +14 -0
- package/dist/components/ContributionGraph/ContributionGraph.module.css.js.map +1 -0
- package/dist/components/ContributionGraph.cjs +1 -0
- package/dist/components/ContributionGraph.d.ts +2 -0
- package/dist/components/ContributionGraph.js +2 -0
- package/dist/components/CountDownTimer/CountDownTimer.cjs +2 -0
- package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -0
- package/dist/components/CountDownTimer/CountDownTimer.js +57 -0
- package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -0
- package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs +2 -0
- package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs.map +1 -0
- package/dist/components/CountDownTimer/CountDownTimer.module.css.js +13 -0
- package/dist/components/CountDownTimer/CountDownTimer.module.css.js.map +1 -0
- package/dist/components/CountDownTimer.cjs +1 -0
- package/dist/components/CountDownTimer.d.ts +2 -0
- package/dist/components/CountDownTimer.js +2 -0
- package/dist/components/Dialog/Dialog.cjs +2 -0
- package/dist/components/Dialog/Dialog.cjs.map +1 -0
- package/dist/components/Dialog/Dialog.js +78 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/Dialog/Dialog.module.css.cjs +2 -0
- package/dist/components/Dialog/Dialog.module.css.cjs.map +1 -0
- package/dist/components/Dialog/Dialog.module.css.js +18 -0
- package/dist/components/Dialog/Dialog.module.css.js.map +1 -0
- package/dist/components/Dialog/dialogUtils.cjs +2 -0
- package/dist/components/Dialog/dialogUtils.cjs.map +1 -0
- package/dist/components/Dialog/dialogUtils.js +33 -0
- package/dist/components/Dialog/dialogUtils.js.map +1 -0
- package/dist/components/Dialog.cjs +1 -0
- package/dist/components/Dialog.d.ts +2 -0
- package/dist/components/Dialog.js +2 -0
- package/dist/components/Dropdown/Dropdown.cjs +2 -0
- package/dist/components/Dropdown/Dropdown.cjs.map +1 -0
- package/dist/components/Dropdown/Dropdown.js +159 -0
- package/dist/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/components/Dropdown/Dropdown.module.css.cjs +2 -0
- package/dist/components/Dropdown/Dropdown.module.css.cjs.map +1 -0
- package/dist/components/Dropdown/Dropdown.module.css.js +27 -0
- package/dist/components/Dropdown/Dropdown.module.css.js.map +1 -0
- package/dist/components/Dropdown.cjs +1 -0
- package/dist/components/Dropdown.d.ts +2 -0
- package/dist/components/Dropdown.js +2 -0
- package/dist/components/EntryRow/EntryRow.cjs +2 -0
- package/dist/components/EntryRow/EntryRow.cjs.map +1 -0
- package/dist/components/EntryRow/EntryRow.js +50 -0
- package/dist/components/EntryRow/EntryRow.js.map +1 -0
- package/dist/components/EntryRow/EntryRow.module.css.cjs +2 -0
- package/dist/components/EntryRow/EntryRow.module.css.cjs.map +1 -0
- package/dist/components/EntryRow/EntryRow.module.css.js +16 -0
- package/dist/components/EntryRow/EntryRow.module.css.js.map +1 -0
- package/dist/components/EntryRow.cjs +1 -0
- package/dist/components/EntryRow.d.ts +2 -0
- package/dist/components/EntryRow.js +2 -0
- package/dist/components/ExpanderRow/ExpanderRow.cjs +2 -0
- package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -0
- package/dist/components/ExpanderRow/ExpanderRow.js +81 -0
- package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -0
- package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs +2 -0
- package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs.map +1 -0
- package/dist/components/ExpanderRow/ExpanderRow.module.css.js +20 -0
- package/dist/components/ExpanderRow/ExpanderRow.module.css.js.map +1 -0
- package/dist/components/ExpanderRow.cjs +1 -0
- package/dist/components/ExpanderRow.d.ts +2 -0
- package/dist/components/ExpanderRow.js +2 -0
- package/dist/components/Footer/Footer.cjs +2 -0
- package/dist/components/Footer/Footer.cjs.map +1 -0
- package/dist/components/Footer/Footer.js +31 -0
- package/dist/components/Footer/Footer.js.map +1 -0
- package/dist/components/Footer/Footer.module.css.cjs +2 -0
- package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
- package/dist/components/Footer/Footer.module.css.js +11 -0
- package/dist/components/Footer/Footer.module.css.js.map +1 -0
- package/dist/components/Footer.cjs +1 -0
- package/dist/components/Footer.d.ts +2 -0
- package/dist/components/Footer.js +2 -0
- package/dist/components/Frame/Frame.cjs +2 -0
- package/dist/components/Frame/Frame.cjs.map +1 -0
- package/dist/components/Frame/Frame.js +14 -0
- package/dist/components/Frame/Frame.js.map +1 -0
- package/dist/components/Frame/Frame.module.css.cjs +2 -0
- package/dist/components/Frame/Frame.module.css.cjs.map +1 -0
- package/dist/components/Frame/Frame.module.css.js +5 -0
- package/dist/components/Frame/Frame.module.css.js.map +1 -0
- package/dist/components/Frame.cjs +1 -0
- package/dist/components/Frame.d.ts +2 -0
- package/dist/components/Frame.js +2 -0
- package/dist/components/HeaderBar/HeaderBar.cjs +2 -0
- package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -0
- package/dist/components/HeaderBar/HeaderBar.js +35 -0
- package/dist/components/HeaderBar/HeaderBar.js.map +1 -0
- package/dist/components/HeaderBar/HeaderBar.module.css.cjs +2 -0
- package/dist/components/HeaderBar/HeaderBar.module.css.cjs.map +1 -0
- package/dist/components/HeaderBar/HeaderBar.module.css.js +12 -0
- package/dist/components/HeaderBar/HeaderBar.module.css.js.map +1 -0
- package/dist/components/HeaderBar.cjs +1 -0
- package/dist/components/HeaderBar.d.ts +2 -0
- package/dist/components/HeaderBar.js +2 -0
- package/dist/components/Icon/Icon.cjs +2 -0
- package/dist/components/Icon/Icon.cjs.map +1 -0
- package/dist/components/Icon/Icon.js +31 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon.cjs +1 -0
- package/dist/components/Icon.d.ts +2 -0
- package/dist/components/Icon.js +2 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +2 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +47 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs +2 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs.map +1 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js +16 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js.map +1 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs +2 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js +38 -0
- package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -0
- package/dist/components/InlineViewSwitcher.cjs +1 -0
- package/dist/components/InlineViewSwitcher.d.ts +2 -0
- package/dist/components/InlineViewSwitcher.js +3 -0
- package/dist/components/Link/Link.cjs +2 -0
- package/dist/components/Link/Link.cjs.map +1 -0
- package/dist/components/Link/Link.js +21 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/Link.module.css.cjs +2 -0
- package/dist/components/Link/Link.module.css.cjs.map +1 -0
- package/dist/components/Link/Link.module.css.js +8 -0
- package/dist/components/Link/Link.module.css.js.map +1 -0
- package/dist/components/Link.cjs +1 -0
- package/dist/components/Link.d.ts +2 -0
- package/dist/components/Link.js +2 -0
- package/dist/components/LinkedGroup/LinkedGroup.cjs +2 -0
- package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -0
- package/dist/components/LinkedGroup/LinkedGroup.js +18 -0
- package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -0
- package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs +2 -0
- package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs.map +1 -0
- package/dist/components/LinkedGroup/LinkedGroup.module.css.js +8 -0
- package/dist/components/LinkedGroup/LinkedGroup.module.css.js.map +1 -0
- package/dist/components/LinkedGroup.cjs +1 -0
- package/dist/components/LinkedGroup.d.ts +2 -0
- package/dist/components/LinkedGroup.js +2 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.cjs +2 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.js +39 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs +2 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs.map +1 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js +14 -0
- package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js.map +1 -0
- package/dist/components/NavigationSplitView.cjs +1 -0
- package/dist/components/NavigationSplitView.d.ts +2 -0
- package/dist/components/NavigationSplitView.js +2 -0
- package/dist/components/NavigationView/NavigationView.cjs +2 -0
- package/dist/components/NavigationView/NavigationView.cjs.map +1 -0
- package/dist/components/NavigationView/NavigationView.js +60 -0
- package/dist/components/NavigationView/NavigationView.js.map +1 -0
- package/dist/components/NavigationView/NavigationView.module.css.cjs +2 -0
- package/dist/components/NavigationView/NavigationView.module.css.cjs.map +1 -0
- package/dist/components/NavigationView/NavigationView.module.css.js +16 -0
- package/dist/components/NavigationView/NavigationView.module.css.js.map +1 -0
- package/dist/components/NavigationView.cjs +1 -0
- package/dist/components/NavigationView.d.ts +2 -0
- package/dist/components/NavigationView.js +2 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.cjs +2 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.js +75 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs +2 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs.map +1 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js +18 -0
- package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js.map +1 -0
- package/dist/components/OverlaySplitView.cjs +1 -0
- package/dist/components/OverlaySplitView.d.ts +2 -0
- package/dist/components/OverlaySplitView.js +2 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs +2 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.js +35 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs +2 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs.map +1 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js +5 -0
- package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js.map +1 -0
- package/dist/components/PasswordEntryRow.cjs +1 -0
- package/dist/components/PasswordEntryRow.d.ts +2 -0
- package/dist/components/PasswordEntryRow.js +2 -0
- package/dist/components/PathBar/PathBar.cjs +2 -0
- package/dist/components/PathBar/PathBar.cjs.map +1 -0
- package/dist/components/PathBar/PathBar.js +59 -0
- package/dist/components/PathBar/PathBar.js.map +1 -0
- package/dist/components/PathBar/PathBar.module.css.cjs +2 -0
- package/dist/components/PathBar/PathBar.module.css.cjs.map +1 -0
- package/dist/components/PathBar/PathBar.module.css.js +13 -0
- package/dist/components/PathBar/PathBar.module.css.js.map +1 -0
- package/dist/components/PathBar.cjs +1 -0
- package/dist/components/PathBar.d.ts +2 -0
- package/dist/components/PathBar.js +2 -0
- package/dist/components/Popover/Popover.cjs +2 -0
- package/dist/components/Popover/Popover.cjs.map +1 -0
- package/dist/components/Popover/Popover.js +157 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/Popover.module.css.cjs +2 -0
- package/dist/components/Popover/Popover.module.css.cjs.map +1 -0
- package/dist/components/Popover/Popover.module.css.js +13 -0
- package/dist/components/Popover/Popover.module.css.js.map +1 -0
- package/dist/components/Popover.cjs +1 -0
- package/dist/components/Popover.d.ts +2 -0
- package/dist/components/Popover.js +2 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.cjs +2 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.js +119 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +2 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs.map +1 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +25 -0
- package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js.map +1 -0
- package/dist/components/PreferencesDialog.cjs +1 -0
- package/dist/components/PreferencesDialog.d.ts +2 -0
- package/dist/components/PreferencesDialog.js +2 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.cjs +2 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.js +33 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs +2 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs.map +1 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js +13 -0
- package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js.map +1 -0
- package/dist/components/PreferencesGroup.cjs +1 -0
- package/dist/components/PreferencesGroup.d.ts +2 -0
- package/dist/components/PreferencesGroup.js +2 -0
- package/dist/components/PreferencesPage/PreferencesPage.cjs +2 -0
- package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -0
- package/dist/components/PreferencesPage/PreferencesPage.js +18 -0
- package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -0
- package/dist/components/PreferencesPage/PreferencesPage.module.css.cjs +2 -0
- package/dist/components/PreferencesPage/PreferencesPage.module.css.cjs.map +1 -0
- package/dist/components/PreferencesPage/PreferencesPage.module.css.js +8 -0
- package/dist/components/PreferencesPage/PreferencesPage.module.css.js.map +1 -0
- package/dist/components/PreferencesPage.cjs +1 -0
- package/dist/components/PreferencesPage.d.ts +2 -0
- package/dist/components/PreferencesPage.js +2 -0
- package/dist/components/ProgressBar/ProgressBar.cjs +2 -0
- package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.js +28 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.module.css.cjs +2 -0
- package/dist/components/ProgressBar/ProgressBar.module.css.cjs.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.module.css.js +14 -0
- package/dist/components/ProgressBar/ProgressBar.module.css.js.map +1 -0
- package/dist/components/ProgressBar.cjs +1 -0
- package/dist/components/ProgressBar.d.ts +2 -0
- package/dist/components/ProgressBar.js +2 -0
- package/dist/components/RadioButton/RadioButton.cjs +2 -0
- package/dist/components/RadioButton/RadioButton.cjs.map +1 -0
- package/dist/components/RadioButton/RadioButton.js +14 -0
- package/dist/components/RadioButton/RadioButton.js.map +1 -0
- package/dist/components/RadioButton/RadioButton.module.css.cjs +2 -0
- package/dist/components/RadioButton/RadioButton.module.css.cjs.map +1 -0
- package/dist/components/RadioButton/RadioButton.module.css.js +5 -0
- package/dist/components/RadioButton/RadioButton.module.css.js.map +1 -0
- package/dist/components/RadioButton.cjs +1 -0
- package/dist/components/RadioButton.d.ts +2 -0
- package/dist/components/RadioButton.js +2 -0
- package/dist/components/SearchBar/SearchBar.cjs +2 -0
- package/dist/components/SearchBar/SearchBar.cjs.map +1 -0
- package/dist/components/SearchBar/SearchBar.js +160 -0
- package/dist/components/SearchBar/SearchBar.js.map +1 -0
- package/dist/components/SearchBar/SearchBar.module.css.cjs +2 -0
- package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -0
- package/dist/components/SearchBar/SearchBar.module.css.js +19 -0
- package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -0
- package/dist/components/SearchBar.cjs +1 -0
- package/dist/components/SearchBar.d.ts +2 -0
- package/dist/components/SearchBar.js +2 -0
- package/dist/components/Separator/Separator.cjs +2 -0
- package/dist/components/Separator/Separator.cjs.map +1 -0
- package/dist/components/Separator/Separator.js +23 -0
- package/dist/components/Separator/Separator.js.map +1 -0
- package/dist/components/Separator/Separator.module.css.cjs +2 -0
- package/dist/components/Separator/Separator.module.css.cjs.map +1 -0
- package/dist/components/Separator/Separator.module.css.js +9 -0
- package/dist/components/Separator/Separator.module.css.js.map +1 -0
- package/dist/components/Separator.cjs +1 -0
- package/dist/components/Separator.d.ts +2 -0
- package/dist/components/Separator.js +2 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.cjs +2 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.js +50 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs +2 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs.map +1 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js +8 -0
- package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js.map +1 -0
- package/dist/components/ShortcutLabel.cjs +1 -0
- package/dist/components/ShortcutLabel.d.ts +2 -0
- package/dist/components/ShortcutLabel.js +2 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +2 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.js +129 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +2 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs.map +1 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +28 -0
- package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js.map +1 -0
- package/dist/components/ShortcutsDialog.cjs +1 -0
- package/dist/components/ShortcutsDialog.d.ts +2 -0
- package/dist/components/ShortcutsDialog.js +2 -0
- package/dist/components/Sidebar/Sidebar.cjs +2 -0
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -0
- package/dist/components/Sidebar/Sidebar.js +69 -0
- package/dist/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.module.css.cjs +2 -0
- package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -0
- package/dist/components/Sidebar/Sidebar.module.css.js +39 -0
- package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -0
- package/dist/components/Sidebar/SidebarItem.cjs +2 -0
- package/dist/components/Sidebar/SidebarItem.cjs.map +1 -0
- package/dist/components/Sidebar/SidebarItem.js +105 -0
- package/dist/components/Sidebar/SidebarItem.js.map +1 -0
- package/dist/components/Sidebar/SidebarSection.cjs +2 -0
- package/dist/components/Sidebar/SidebarSection.cjs.map +1 -0
- package/dist/components/Sidebar/SidebarSection.js +89 -0
- package/dist/components/Sidebar/SidebarSection.js.map +1 -0
- package/dist/components/Sidebar.cjs +1 -0
- package/dist/components/Sidebar.d.ts +2 -0
- package/dist/components/Sidebar.js +4 -0
- package/dist/components/Slider/Slider.cjs +2 -0
- package/dist/components/Slider/Slider.cjs.map +1 -0
- package/dist/components/Slider/Slider.js +122 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/Slider.module.css.cjs +2 -0
- package/dist/components/Slider/Slider.module.css.cjs.map +1 -0
- package/dist/components/Slider/Slider.module.css.js +15 -0
- package/dist/components/Slider/Slider.module.css.js.map +1 -0
- package/dist/components/Slider.cjs +1 -0
- package/dist/components/Slider.d.ts +2 -0
- package/dist/components/Slider.js +2 -0
- package/dist/components/SpinButton/SpinButton.cjs +2 -0
- package/dist/components/SpinButton/SpinButton.cjs.map +1 -0
- package/dist/components/SpinButton/SpinButton.js +92 -0
- package/dist/components/SpinButton/SpinButton.js.map +1 -0
- package/dist/components/SpinButton/SpinButton.module.css.cjs +2 -0
- package/dist/components/SpinButton/SpinButton.module.css.cjs.map +1 -0
- package/dist/components/SpinButton/SpinButton.module.css.js +10 -0
- package/dist/components/SpinButton/SpinButton.module.css.js.map +1 -0
- package/dist/components/SpinButton.cjs +1 -0
- package/dist/components/SpinButton.d.ts +2 -0
- package/dist/components/SpinButton.js +2 -0
- package/dist/components/SpinRow/SpinRow.cjs +2 -0
- package/dist/components/SpinRow/SpinRow.cjs.map +1 -0
- package/dist/components/SpinRow/SpinRow.js +119 -0
- package/dist/components/SpinRow/SpinRow.js.map +1 -0
- package/dist/components/SpinRow/SpinRow.module.css.cjs +2 -0
- package/dist/components/SpinRow/SpinRow.module.css.cjs.map +1 -0
- package/dist/components/SpinRow/SpinRow.module.css.js +15 -0
- package/dist/components/SpinRow/SpinRow.module.css.js.map +1 -0
- package/dist/components/SpinRow.cjs +1 -0
- package/dist/components/SpinRow.d.ts +2 -0
- package/dist/components/SpinRow.js +2 -0
- package/dist/components/Spinner/Spinner.cjs +2 -0
- package/dist/components/Spinner/Spinner.cjs.map +1 -0
- package/dist/components/Spinner/Spinner.js +21 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/Spinner.module.css.cjs +2 -0
- package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -0
- package/dist/components/Spinner/Spinner.module.css.js +11 -0
- package/dist/components/Spinner/Spinner.module.css.js.map +1 -0
- package/dist/components/Spinner.cjs +1 -0
- package/dist/components/Spinner.d.ts +2 -0
- package/dist/components/Spinner.js +2 -0
- package/dist/components/SplitButton/SplitButton.cjs +2 -0
- package/dist/components/SplitButton/SplitButton.cjs.map +1 -0
- package/dist/components/SplitButton/SplitButton.js +104 -0
- package/dist/components/SplitButton/SplitButton.js.map +1 -0
- package/dist/components/SplitButton/SplitButton.module.css.cjs +2 -0
- package/dist/components/SplitButton/SplitButton.module.css.cjs.map +1 -0
- package/dist/components/SplitButton/SplitButton.module.css.js +16 -0
- package/dist/components/SplitButton/SplitButton.module.css.js.map +1 -0
- package/dist/components/SplitButton.cjs +1 -0
- package/dist/components/SplitButton.d.ts +2 -0
- package/dist/components/SplitButton.js +2 -0
- package/dist/components/StatusBadge/StatusBadge.cjs +2 -0
- package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -0
- package/dist/components/StatusBadge/StatusBadge.js +18 -0
- package/dist/components/StatusBadge/StatusBadge.js.map +1 -0
- package/dist/components/StatusBadge/StatusBadge.module.css.cjs +2 -0
- package/dist/components/StatusBadge/StatusBadge.module.css.cjs.map +1 -0
- package/dist/components/StatusBadge/StatusBadge.module.css.js +13 -0
- package/dist/components/StatusBadge/StatusBadge.module.css.js.map +1 -0
- package/dist/components/StatusBadge.cjs +1 -0
- package/dist/components/StatusBadge.d.ts +2 -0
- package/dist/components/StatusBadge.js +2 -0
- package/dist/components/StatusPage/StatusPage.cjs +2 -0
- package/dist/components/StatusPage/StatusPage.cjs.map +1 -0
- package/dist/components/StatusPage/StatusPage.js +43 -0
- package/dist/components/StatusPage/StatusPage.js.map +1 -0
- package/dist/components/StatusPage/StatusPage.module.css.cjs +2 -0
- package/dist/components/StatusPage/StatusPage.module.css.cjs.map +1 -0
- package/dist/components/StatusPage/StatusPage.module.css.js +12 -0
- package/dist/components/StatusPage/StatusPage.module.css.js.map +1 -0
- package/dist/components/StatusPage.cjs +1 -0
- package/dist/components/StatusPage.d.ts +2 -0
- package/dist/components/StatusPage.js +2 -0
- package/dist/components/Switch/Switch.cjs +2 -0
- package/dist/components/Switch/Switch.cjs.map +1 -0
- package/dist/components/Switch/Switch.js +15 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.module.css.cjs +2 -0
- package/dist/components/Switch/Switch.module.css.cjs.map +1 -0
- package/dist/components/Switch/Switch.module.css.js +6 -0
- package/dist/components/Switch/Switch.module.css.js.map +1 -0
- package/dist/components/Switch.cjs +1 -0
- package/dist/components/Switch.d.ts +2 -0
- package/dist/components/Switch.js +2 -0
- package/dist/components/SwitchRow/SwitchRow.cjs +2 -0
- package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -0
- package/dist/components/SwitchRow/SwitchRow.js +49 -0
- package/dist/components/SwitchRow/SwitchRow.js.map +1 -0
- package/dist/components/SwitchRow/SwitchRow.module.css.cjs +2 -0
- package/dist/components/SwitchRow/SwitchRow.module.css.cjs.map +1 -0
- package/dist/components/SwitchRow/SwitchRow.module.css.js +15 -0
- package/dist/components/SwitchRow/SwitchRow.module.css.js.map +1 -0
- package/dist/components/SwitchRow.cjs +1 -0
- package/dist/components/SwitchRow.d.ts +2 -0
- package/dist/components/SwitchRow.js +2 -0
- package/dist/components/Tabs/TabBar.cjs +2 -0
- package/dist/components/Tabs/TabBar.cjs.map +1 -0
- package/dist/components/Tabs/TabBar.js +38 -0
- package/dist/components/Tabs/TabBar.js.map +1 -0
- package/dist/components/Tabs/TabItem.cjs +2 -0
- package/dist/components/Tabs/TabItem.cjs.map +1 -0
- package/dist/components/Tabs/TabItem.js +52 -0
- package/dist/components/Tabs/TabItem.js.map +1 -0
- package/dist/components/Tabs/TabPanel.cjs +2 -0
- package/dist/components/Tabs/TabPanel.cjs.map +1 -0
- package/dist/components/Tabs/TabPanel.js +18 -0
- package/dist/components/Tabs/TabPanel.js.map +1 -0
- package/dist/components/Tabs/Tabs.module.css.cjs +2 -0
- package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -0
- package/dist/components/Tabs/Tabs.module.css.js +15 -0
- package/dist/components/Tabs/Tabs.module.css.js.map +1 -0
- package/dist/components/Tabs.cjs +1 -0
- package/dist/components/Tabs.d.ts +2 -0
- package/dist/components/Tabs.js +4 -0
- package/dist/components/TerminalView/TerminalView.cjs +2 -0
- package/dist/components/TerminalView/TerminalView.cjs.map +1 -0
- package/dist/components/TerminalView/TerminalView.js +28 -0
- package/dist/components/TerminalView/TerminalView.js.map +1 -0
- package/dist/components/TerminalView/TerminalView.module.css.cjs +2 -0
- package/dist/components/TerminalView/TerminalView.module.css.cjs.map +1 -0
- package/dist/components/TerminalView/TerminalView.module.css.js +12 -0
- package/dist/components/TerminalView/TerminalView.module.css.js.map +1 -0
- package/dist/components/TerminalView.cjs +1 -0
- package/dist/components/TerminalView.d.ts +2 -0
- package/dist/components/TerminalView.js +2 -0
- package/dist/components/Text/Text.cjs +2 -0
- package/dist/components/Text/Text.cjs.map +1 -0
- package/dist/components/Text/Text.js +33 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/Text.module.css.cjs +2 -0
- package/dist/components/Text/Text.module.css.cjs.map +1 -0
- package/dist/components/Text/Text.module.css.js +27 -0
- package/dist/components/Text/Text.module.css.js.map +1 -0
- package/dist/components/Text.cjs +1 -0
- package/dist/components/Text.d.ts +2 -0
- package/dist/components/Text.js +2 -0
- package/dist/components/TextField/TextField.cjs +2 -0
- package/dist/components/TextField/TextField.cjs.map +1 -0
- package/dist/components/TextField/TextField.js +38 -0
- package/dist/components/TextField/TextField.js.map +1 -0
- package/dist/components/TextField/TextField.module.css.cjs +2 -0
- package/dist/components/TextField/TextField.module.css.cjs.map +1 -0
- package/dist/components/TextField/TextField.module.css.js +13 -0
- package/dist/components/TextField/TextField.module.css.js.map +1 -0
- package/dist/components/TextField.cjs +1 -0
- package/dist/components/TextField.d.ts +2 -0
- package/dist/components/TextField.js +2 -0
- package/dist/components/Timeline/Timeline.cjs +2 -0
- package/dist/components/Timeline/Timeline.cjs.map +1 -0
- package/dist/components/Timeline/Timeline.js +71 -0
- package/dist/components/Timeline/Timeline.js.map +1 -0
- package/dist/components/Timeline/Timeline.module.css.cjs +2 -0
- package/dist/components/Timeline/Timeline.module.css.cjs.map +1 -0
- package/dist/components/Timeline/Timeline.module.css.js +19 -0
- package/dist/components/Timeline/Timeline.module.css.js.map +1 -0
- package/dist/components/Timeline.cjs +1 -0
- package/dist/components/Timeline.d.ts +2 -0
- package/dist/components/Timeline.js +2 -0
- package/dist/components/Toast/Toast.cjs +2 -0
- package/dist/components/Toast/Toast.cjs.map +1 -0
- package/dist/components/Toast/Toast.js +63 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/Toast.module.css.cjs +2 -0
- package/dist/components/Toast/Toast.module.css.cjs.map +1 -0
- package/dist/components/Toast/Toast.module.css.js +16 -0
- package/dist/components/Toast/Toast.module.css.js.map +1 -0
- package/dist/components/Toast/Toaster.cjs +2 -0
- package/dist/components/Toast/Toaster.cjs.map +1 -0
- package/dist/components/Toast/Toaster.js +21 -0
- package/dist/components/Toast/Toaster.js.map +1 -0
- package/dist/components/Toast.cjs +1 -0
- package/dist/components/Toast.d.ts +2 -0
- package/dist/components/Toast.js +3 -0
- package/dist/components/ToggleGroup/ToggleGroup.cjs +2 -0
- package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.js +43 -0
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +2 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.css.js +12 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroupItem.cjs +2 -0
- package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroupItem.js +38 -0
- package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -0
- package/dist/components/ToggleGroup.cjs +1 -0
- package/dist/components/ToggleGroup.d.ts +2 -0
- package/dist/components/ToggleGroup.js +3 -0
- package/dist/components/Toolbar/Spacer.cjs +2 -0
- package/dist/components/Toolbar/Spacer.cjs.map +1 -0
- package/dist/components/Toolbar/Spacer.js +14 -0
- package/dist/components/Toolbar/Spacer.js.map +1 -0
- package/dist/components/Toolbar/Toolbar.cjs +2 -0
- package/dist/components/Toolbar/Toolbar.cjs.map +1 -0
- package/dist/components/Toolbar/Toolbar.js +14 -0
- package/dist/components/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/Toolbar/Toolbar.module.css.cjs +2 -0
- package/dist/components/Toolbar/Toolbar.module.css.cjs.map +1 -0
- package/dist/components/Toolbar/Toolbar.module.css.js +8 -0
- package/dist/components/Toolbar/Toolbar.module.css.js.map +1 -0
- package/dist/components/Toolbar.cjs +1 -0
- package/dist/components/Toolbar.d.ts +2 -0
- package/dist/components/Toolbar.js +3 -0
- package/dist/components/ToolbarView/ToolbarView.cjs +2 -0
- package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -0
- package/dist/components/ToolbarView/ToolbarView.js +27 -0
- package/dist/components/ToolbarView/ToolbarView.js.map +1 -0
- package/dist/components/ToolbarView/ToolbarView.module.css.cjs +2 -0
- package/dist/components/ToolbarView/ToolbarView.module.css.cjs.map +1 -0
- package/dist/components/ToolbarView/ToolbarView.module.css.js +10 -0
- package/dist/components/ToolbarView/ToolbarView.module.css.js.map +1 -0
- package/dist/components/ToolbarView.cjs +1 -0
- package/dist/components/ToolbarView.d.ts +2 -0
- package/dist/components/ToolbarView.js +2 -0
- package/dist/components/Tooltip/Tooltip.cjs +2 -0
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +100 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.module.css.cjs +2 -0
- package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -0
- package/dist/components/Tooltip/Tooltip.module.css.js +12 -0
- package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -0
- package/dist/components/Tooltip.cjs +1 -0
- package/dist/components/Tooltip.d.ts +2 -0
- package/dist/components/Tooltip.js +2 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.cjs +2 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.js +31 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs +2 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs.map +1 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js +11 -0
- package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js.map +1 -0
- package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs +2 -0
- package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -0
- package/dist/components/ViewSwitcher/ViewSwitcherItem.js +34 -0
- package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -0
- package/dist/components/ViewSwitcher.cjs +1 -0
- package/dist/components/ViewSwitcher.d.ts +2 -0
- package/dist/components/ViewSwitcher.js +3 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs +2 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js +16 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs +2 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs.map +1 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js +5 -0
- package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js.map +1 -0
- package/dist/components/ViewSwitcherBar.cjs +1 -0
- package/dist/components/ViewSwitcherBar.d.ts +2 -0
- package/dist/components/ViewSwitcherBar.js +2 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +2 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +61 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs +2 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs.map +1 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js +18 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js.map +1 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs +2 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js +50 -0
- package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -0
- package/dist/components/ViewSwitcherSidebar.cjs +1 -0
- package/dist/components/ViewSwitcherSidebar.d.ts +2 -0
- package/dist/components/ViewSwitcherSidebar.js +3 -0
- package/dist/components/WindowTitle/WindowTitle.cjs +2 -0
- package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -0
- package/dist/components/WindowTitle/WindowTitle.js +20 -0
- package/dist/components/WindowTitle/WindowTitle.js.map +1 -0
- package/dist/components/WindowTitle/WindowTitle.module.css.cjs +2 -0
- package/dist/components/WindowTitle/WindowTitle.module.css.cjs.map +1 -0
- package/dist/components/WindowTitle/WindowTitle.module.css.js +9 -0
- package/dist/components/WindowTitle/WindowTitle.module.css.js.map +1 -0
- package/dist/components/WindowTitle.cjs +1 -0
- package/dist/components/WindowTitle.d.ts +2 -0
- package/dist/components/WindowTitle.js +2 -0
- package/dist/components/WrapBox/WrapBox.cjs +2 -0
- package/dist/components/WrapBox/WrapBox.cjs.map +1 -0
- package/dist/components/WrapBox/WrapBox.js +26 -0
- package/dist/components/WrapBox/WrapBox.js.map +1 -0
- package/dist/components/WrapBox/WrapBox.module.css.cjs +2 -0
- package/dist/components/WrapBox/WrapBox.module.css.cjs.map +1 -0
- package/dist/components/WrapBox/WrapBox.module.css.js +8 -0
- package/dist/components/WrapBox/WrapBox.module.css.js.map +1 -0
- package/dist/components/WrapBox.cjs +1 -0
- package/dist/components/WrapBox.d.ts +2 -0
- package/dist/components/WrapBox.js +2 -0
- package/dist/hooks/useBreakpoint.cjs +2 -0
- package/dist/hooks/useBreakpoint.cjs.map +1 -0
- package/dist/hooks/useBreakpoint.js +26 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks.cjs +1 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +2 -0
- package/dist/icons/dist/icons/Check.cjs +2 -0
- package/dist/icons/dist/icons/Check.cjs.map +1 -0
- package/dist/icons/dist/icons/Check.js +12 -0
- package/dist/icons/dist/icons/Check.js.map +1 -0
- package/dist/icons/dist/icons/Close.cjs +2 -0
- package/dist/icons/dist/icons/Close.cjs.map +1 -0
- package/dist/icons/dist/icons/Close.js +12 -0
- package/dist/icons/dist/icons/Close.js.map +1 -0
- package/dist/icons/dist/icons/PanDown.cjs +2 -0
- package/dist/icons/dist/icons/PanDown.cjs.map +1 -0
- package/dist/icons/dist/icons/PanDown.js +12 -0
- package/dist/icons/dist/icons/PanDown.js.map +1 -0
- package/dist/icons/dist/icons/PanUp.cjs +2 -0
- package/dist/icons/dist/icons/PanUp.cjs.map +1 -0
- package/dist/icons/dist/icons/PanUp.js +12 -0
- package/dist/icons/dist/icons/PanUp.js.map +1 -0
- package/dist/icons/dist/icons/Search.cjs +2 -0
- package/dist/icons/dist/icons/Search.cjs.map +1 -0
- package/dist/icons/dist/icons/Search.js +12 -0
- package/dist/icons/dist/icons/Search.js.map +1 -0
- package/dist/icons/dist/icons/ViewConceal.cjs +2 -0
- package/dist/icons/dist/icons/ViewConceal.cjs.map +1 -0
- package/dist/icons/dist/icons/ViewConceal.js +12 -0
- package/dist/icons/dist/icons/ViewConceal.js.map +1 -0
- package/dist/icons/dist/icons/ViewReveal.cjs +2 -0
- package/dist/icons/dist/icons/ViewReveal.cjs.map +1 -0
- package/dist/icons/dist/icons/ViewReveal.js +12 -0
- package/dist/icons/dist/icons/ViewReveal.js.map +1 -0
- package/dist/index.cjs +1 -2
- package/dist/index.js +87 -5166
- package/dist/style.css +1 -1
- package/package.json +391 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/test/setup.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","names":[],"sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useState,\n isValidElement,\n Children,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { SearchBar } from \"../SearchBar\";\nimport { StatusPage } from \"../StatusPage\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport styles from \"./Sidebar.module.css\";\n\n// ─── Contexts ─────────────────────────────────────────────────────────────────\n\n/** Provides the collapsed state to all descendant `SidebarItem` components. */\nexport const SidebarCollapsedContext = createContext(false);\n\n/** Returns `true` when the nearest `Sidebar` is in collapsed (icon-only) mode. */\nexport function useSidebarCollapsed() {\n return useContext(SidebarCollapsedContext);\n}\n\n/** Provides the active filter string to all descendant `SidebarItem` components. */\nexport const SidebarFilterContext = createContext(\"\");\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Recursively count items whose `label` matches `filter` (case-insensitive). */\nfunction countMatchingItems(children: ReactNode, filter: string): number {\n let count = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n const props = child.props as Record<string, unknown>;\n if (typeof props.label === \"string\") {\n if (props.label.toLowerCase().includes(filter.toLowerCase())) count++;\n } else if (props.children) {\n count += countMatchingItems(props.children as ReactNode, filter);\n }\n });\n return count;\n}\n\n// ─── Variant map ──────────────────────────────────────────────────────────────\n\nconst variantClass: Record<string, string> = {\n blue: \"variantBlue\",\n green: \"variantGreen\",\n red: \"variantRed\",\n yellow: \"variantYellow\",\n black: \"variantBlack\",\n transparent: \"variantTransparent\",\n blurred: \"variantBlurred\",\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n /**\n * When `true`, collapses the sidebar to icon-only mode (rail/mini).\n * Labels, suffixes, and section titles are hidden; tooltips appear on hover.\n */\n collapsed?: boolean;\n /**\n * Renders a built-in `SearchBar` inside the sidebar and manages the filter\n * state internally (uncontrolled). Combine with `filter` + `onFilterChange`\n * for controlled mode.\n */\n searchable?: boolean;\n /**\n * Controlled filter string. Items whose `label` does not match\n * (case-insensitive substring) are hidden. Does not render a `SearchBar`\n * on its own — use `searchable` for the built-in search input.\n */\n filter?: string;\n /** Called when the built-in search value changes. */\n onFilterChange?: (value: string) => void;\n /**\n * Layout mode:\n * - `\"sidebar\"` — fixed-width panel with a border (default).\n * - `\"page\"` — full-width boxed-list layout for narrow viewports.\n *\n * When omitted the sidebar auto-switches to `\"page\"` at ≤ 400 sp,\n * mirroring `AdwSidebar` mobile behaviour.\n */\n mode?: \"sidebar\" | \"page\";\n /**\n * Visual style variant for the sidebar background.\n * - `\"classic\"` — default GNOME gray\n * - `\"blue\"` | `\"green\"` | `\"red\"` | `\"yellow\"` — tinted accent backgrounds\n * - `\"black\"` — dark/OLED background\n * - `\"transparent\"` — no background, inherits parent\n * - `\"blurred\"` — frosted glass (backdrop-filter blur), like macOS\n */\n variant?: \"classic\" | \"blue\" | \"green\" | \"red\" | \"yellow\" | \"black\" | \"transparent\" | \"blurred\";\n}\n\n/**\n * Lateral navigation panel following the Adwaita `.navigation-sidebar` style.\n *\n * **Tier 11 — libadwaita 1.9 completeness:**\n * - `searchable` — built-in `SearchBar` with automatic item filtering.\n * - `filter` / `onFilterChange` — controlled external filtering.\n * - `mode` — `\"sidebar\"` (default) or `\"page\"` (boxed-list layout).\n * Auto-switches to `\"page\"` at ≤ 400 sp when `mode` is unset.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Sidebar.html\n */\nexport function Sidebar({\n children,\n collapsed = false,\n searchable,\n filter: controlledFilter,\n onFilterChange,\n mode,\n variant = \"classic\",\n className,\n ...props\n}: SidebarProps) {\n const [internalFilter, setInternalFilter] = useState(\"\");\n const { isNarrow } = useBreakpoint();\n\n const isControlled = controlledFilter !== undefined;\n const filterValue = isControlled ? controlledFilter : internalFilter;\n\n const handleFilterChange = (v: string) => {\n if (!isControlled) setInternalFilter(v);\n onFilterChange?.(v);\n };\n\n const isFilterActive = filterValue.length > 0;\n const effectiveMode = mode ?? (isNarrow ? \"page\" : \"sidebar\");\n const hasMatches = !isFilterActive || countMatchingItems(children, filterValue) > 0;\n\n return (\n <SidebarCollapsedContext.Provider value={collapsed}>\n <SidebarFilterContext.Provider value={filterValue}>\n <nav\n className={[\n styles.sidebar,\n collapsed ? styles.collapsed : null,\n effectiveMode === \"page\" ? styles.pageMode : null,\n variant !== \"classic\" ? styles[variantClass[variant]] : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {searchable && (\n <div className={styles.searchWrap}>\n <SearchBar\n open\n value={filterValue}\n onChange={(e) => handleFilterChange(e.target.value)}\n onClose={() => handleFilterChange(\"\")}\n onClear={() => handleFilterChange(\"\")}\n inline\n />\n </div>\n )}\n\n {isFilterActive && !hasMatches ? (\n <StatusPage\n title=\"No Results\"\n description=\"No items match your search.\"\n compact\n />\n ) : (\n children\n )}\n </nav>\n </SidebarFilterContext.Provider>\n </SidebarCollapsedContext.Provider>\n );\n}\n"],"mappings":";;;;;;;AAiBA,IAAa,IAA0B,EAAc,GAAM;AAG3D,SAAgB,IAAsB;AACpC,QAAO,EAAW,EAAwB;;AAI5C,IAAa,IAAuB,EAAc,GAAG;AAKrD,SAAS,EAAmB,GAAqB,GAAwB;CACvE,IAAI,IAAQ;AAUZ,QATA,EAAS,QAAQ,IAAW,MAAU;AACpC,MAAI,CAAC,EAAe,EAAM,CAAE;EAC5B,IAAM,IAAQ,EAAM;AACpB,EAAI,OAAO,EAAM,SAAU,WACrB,EAAM,MAAM,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,IAAE,MACrD,EAAM,aACf,KAAS,EAAmB,EAAM,UAAuB,EAAO;GAElE,EACK;;AAKT,IAAM,IAAuC;CAC3C,MAAM;CACN,OAAO;CACP,KAAK;CACL,QAAQ;CACR,OAAO;CACP,aAAa;CACb,SAAS;CACV;AAwDD,SAAgB,EAAQ,EACtB,aACA,eAAY,IACZ,eACA,QAAQ,GACR,mBACA,SACA,aAAU,WACV,cACA,GAAG,KACY;CACf,IAAM,CAAC,GAAgB,KAAqB,EAAS,GAAG,EAClD,EAAE,gBAAa,GAAe,EAE9B,IAAe,MAAqB,KAAA,GACpC,IAAc,IAAe,IAAmB,GAEhD,KAAsB,MAAc;AAExC,EADK,KAAc,EAAkB,EAAE,EACvC,IAAiB,EAAE;IAGf,IAAiB,EAAY,SAAS,GACtC,IAAgB,MAAS,IAAW,SAAS,YAC7C,IAAa,CAAC,KAAkB,EAAmB,GAAU,EAAY,GAAG;AAElF,QACE,kBAAC,EAAwB,UAAzB;EAAkC,OAAO;YACvC,kBAAC,EAAqB,UAAtB;GAA+B,OAAO;aACpC,kBAAC,OAAD;IACE,WAAW;KACT,EAAO;KACP,IAAY,EAAO,YAAY;KAC/B,MAAkB,SAAS,EAAO,WAAW;KAC7C,MAAY,YAA4C,OAAhC,EAAO,EAAa;KAC5C;KACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;IACZ,GAAI;cAVN,CAYG,KACC,kBAAC,OAAD;KAAK,WAAW,EAAO;eACrB,kBAAC,GAAD;MACE,MAAA;MACA,OAAO;MACP,WAAW,MAAM,EAAmB,EAAE,OAAO,MAAM;MACnD,eAAe,EAAmB,GAAG;MACrC,eAAe,EAAmB,GAAG;MACrC,QAAA;MACA,CAAA;KACE,CAAA,EAGP,KAAkB,CAAC,IAClB,kBAAC,GAAD;KACE,OAAM;KACN,aAAY;KACZ,SAAA;KACA,CAAA,GAEF,EAEE;;GACwB,CAAA;EACC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`_sidebar_537se_3`,t=`_section_537se_21`,n=`_sectionHeader_537se_35`,r=`_sectionHeaderIcon_537se_71`,i=`_sectionTitle_537se_78`,a=`_sectionChevron_537se_94`,o=`_sectionBody_537se_104`,s=`_sectionBodyCollapsed_537se_110`,c=`_sectionBodyInner_537se_114`,l=`_list_537se_120`,u=`_item_537se_131`,d=`_itemBtn_537se_137`,f=`_active_537se_184`,p=`_itemIcon_537se_200`,m=`_itemLabel_537se_213`,h=`_itemSuffix_537se_223`,g=`_contextMenu_537se_232`,_=`_contextMenuItem_537se_256`,v=`_contextMenuDestructive_537se_292`,y=`_searchWrap_537se_298`,b=`_variantBlue_537se_309`,x=`_variantGreen_537se_318`,S=`_variantRed_537se_327`,C=`_variantYellow_537se_336`,w=`_variantBlack_537se_345`,T=`_variantTransparent_537se_354`,E=`_variantBlurred_537se_359`,D=`_pageMode_537se_375`,O=`_dragOver_537se_382`,k=`_collapsed_537se_390`,A=`_itemCollapsed_537se_401`,j={sidebar:e,section:t,sectionHeader:n,sectionHeaderIcon:r,sectionTitle:i,sectionChevron:a,sectionBody:o,sectionBodyCollapsed:s,sectionBodyInner:c,list:l,item:u,itemBtn:d,active:f,itemIcon:p,itemLabel:m,itemSuffix:h,contextMenu:g,"menu-in":`_menu-in_537se_1`,contextMenuItem:_,contextMenuDestructive:v,searchWrap:y,variantBlue:b,variantGreen:x,variantRed:S,variantYellow:C,variantBlack:w,variantTransparent:T,variantBlurred:E,pageMode:D,dragOver:O,collapsed:k,itemCollapsed:A};exports.default=j;
|
|
2
|
+
//# sourceMappingURL=Sidebar.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.module.css.cjs","names":[],"sources":["../../../src/components/Sidebar/Sidebar.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.sidebar {\n display: flex;\n flex-direction: column;\n width: 240px;\n height: 100%;\n background-color: var(--gnome-sidebar-bg-color, #ebebeb);\n color: var(--gnome-sidebar-fg-color, rgba(0, 0, 0, 0.8));\n border-right: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-1, 6px);\n gap: 0;\n transition: width 200ms var(--gnome-easing-default, ease);\n flex-shrink: 0;\n}\n\n/* ─── Section ───────────────────────────────────────────────────────────────── */\n\n.section {\n display: flex;\n flex-direction: column;\n}\n\n/* Divider between consecutive sections */\n.section + .section {\n margin-top: var(--gnome-space-1, 6px);\n padding-top: var(--gnome-space-1, 6px);\n border-top: 1px solid var(--gnome-divider-color);\n}\n\n/* ─── Section header (title row, optionally a button when collapsible) ──────── */\n\n.sectionHeader {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n width: 100%;\n margin: 4px 0 2px;\n padding: 2px var(--gnome-space-1, 6px);\n border-radius: var(--gnome-radius-sm, 4px);\n background: transparent;\n border: none;\n font: inherit;\n text-align: start;\n cursor: default;\n}\n\nbutton.sectionHeader {\n cursor: pointer;\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\nbutton.sectionHeader:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\nbutton.sectionHeader:active {\n background-color: var(--gnome-active-overlay);\n}\n\nbutton.sectionHeader:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-sidebar-bg-color, #ebebeb),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.sectionHeaderIcon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n.sectionTitle {\n flex: 1;\n min-width: 0;\n padding: 0;\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.875rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n opacity: 0.5;\n user-select: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sectionChevron {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: auto;\n opacity: 0.5;\n}\n\n/* ─── Collapsible section body ──────────────────────────────────────────────── */\n\n.sectionBody {\n display: grid;\n grid-template-rows: 1fr;\n transition: grid-template-rows 200ms var(--gnome-easing-default, ease);\n}\n\n.sectionBodyCollapsed {\n grid-template-rows: 0fr;\n}\n\n.sectionBodyInner {\n overflow: hidden;\n}\n\n/* ─── List ─────────────────────────────────────────────────────────────────── */\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n/* ─── Item wrapper ─────────────────────────────────────────────────────────── */\n\n.item {\n display: block;\n}\n\n/* ─── Item button ──────────────────────────────────────────────────────────── */\n\n.itemBtn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n text-align: start;\n cursor: pointer;\n outline: none;\n\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n width: 100%;\n padding: 8px var(--gnome-space-2, 12px);\n border-radius: var(--gnome-radius-md, 8px);\n\n color: var(--gnome-sidebar-fg-color, rgba(0, 0, 0, 0.8));\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.itemBtn:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\n.itemBtn:active {\n background-color: var(--gnome-active-overlay);\n}\n\n.itemBtn:focus-visible {\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-sidebar-bg-color, #ebebeb),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.itemBtn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* ─── Active state ─────────────────────────────────────────────────────────── */\n\n.active {\n background-color: var(--gnome-accent-bg-color, #3584e4);\n color: var(--gnome-accent-fg-color, #ffffff);\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.active:hover {\n filter: brightness(1.08);\n}\n\n.active:active {\n filter: brightness(0.92);\n}\n\n/* ─── Icon ─────────────────────────────────────────────────────────────────── */\n\n.itemIcon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.85;\n}\n\n.active .itemIcon {\n opacity: 1;\n}\n\n/* ─── Label ────────────────────────────────────────────────────────────────── */\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Suffix (trailing widget) ──────────────────────────────────────────────── */\n\n.itemSuffix {\n flex-shrink: 0;\n margin-left: auto;\n display: flex;\n align-items: center;\n}\n\n/* ─── Context menu ──────────────────────────────────────────────────────────── */\n\n.contextMenu {\n position: fixed;\n z-index: 10500;\n min-width: 160px;\n\n background-color: var(--gnome-card-bg-color, #ffffff);\n border: 1px solid var(--gnome-border-subtle);\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: var(--gnome-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.15));\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n flex-direction: column;\n gap: 1px;\n\n animation: menu-in var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes menu-in {\n from { opacity: 0; transform: scale(0.96); }\n to { opacity: 1; transform: scale(1); }\n}\n\n.contextMenuItem {\n appearance: none;\n border: none;\n background: transparent;\n width: 100%;\n text-align: start;\n cursor: pointer;\n outline: none;\n\n padding: 6px var(--gnome-space-2, 12px);\n border-radius: calc(var(--gnome-radius-md, 8px) - 4px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.contextMenuItem:hover:not(:disabled) {\n background-color: var(--gnome-hover-overlay);\n}\n\n.contextMenuItem:active:not(:disabled) {\n background-color: var(--gnome-active-overlay);\n}\n\n.contextMenuItem:focus-visible {\n box-shadow: inset 0 0 0 2px var(--gnome-focus-ring-color, #3584e4);\n}\n\n.contextMenuItem:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.contextMenuDestructive {\n color: var(--gnome-destructive-color, #e01b24);\n}\n\n/* ─── Search wrap ───────────────────────────────────────────────────────────── */\n\n.searchWrap {\n padding-bottom: var(--gnome-space-1, 6px);\n}\n\n/* Override SearchBar min-height to keep it compact inside the sidebar */\n.searchWrap > * {\n min-height: unset;\n}\n\n/* ─── Variants ──────────────────────────────────────────────────────────────── */\n\n.variantBlue {\n --gnome-sidebar-bg-color: #1a4a7a;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantGreen {\n --gnome-sidebar-bg-color: #1a4a2e;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantRed {\n --gnome-sidebar-bg-color: #6e1414;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantYellow {\n --gnome-sidebar-bg-color: #5a4500;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantBlack {\n --gnome-sidebar-bg-color: #0a0a0a;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.9);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.08);\n --gnome-active-overlay: rgba(255, 255, 255, 0.14);\n --gnome-divider-color: rgba(255, 255, 255, 0.1);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.1);\n}\n\n.variantTransparent {\n --gnome-sidebar-bg-color: transparent;\n border-right-color: var(--gnome-divider-color);\n}\n\n.variantBlurred {\n --gnome-sidebar-bg-color: rgba(255, 255, 255, 0.55);\n border-right-color: rgba(255, 255, 255, 0.25);\n backdrop-filter: blur(20px) saturate(1.8);\n -webkit-backdrop-filter: blur(20px) saturate(1.8);\n}\n\n@media (prefers-color-scheme: dark) {\n .variantBlurred {\n --gnome-sidebar-bg-color: rgba(30, 30, 30, 0.6);\n border-right-color: rgba(255, 255, 255, 0.1);\n }\n}\n\n/* ─── Page mode (full-width boxed-list layout) ──────────────────────────────── */\n\n.pageMode {\n width: 100%;\n border-right: none;\n}\n\n/* ─── Drag-over highlight ───────────────────────────────────────────────────── */\n\n.dragOver {\n background-color: var(--gnome-accent-bg-color, #3584e4);\n color: var(--gnome-accent-fg-color, #ffffff);\n opacity: 0.7;\n}\n\n/* ─── Collapsed (icon-only / rail) mode ────────────────────────────────────── */\n\n.collapsed {\n width: 56px;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n/* Hide section headings when collapsed */\n.collapsed .sectionTitle {\n display: none;\n}\n\n/* Center icon when collapsed */\n.itemCollapsed {\n justify-content: center;\n padding-left: 0;\n padding-right: 0;\n}\n\n/* ─── High contrast ────────────────────────────────────────────────────────── */\n\n@media (prefers-contrast: more) {\n .sidebar {\n border-right-width: 2px;\n }\n\n .section + .section {\n border-top-width: 2px;\n }\n\n .contextMenu {\n border-width: 2px;\n }\n\n .active {\n outline: 2px solid var(--gnome-accent-fg-color, #ffffff);\n outline-offset: -3px;\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .itemBtn,\n button.sectionHeader,\n .sectionBody {\n transition: none;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/components/Sidebar/Sidebar.module.css
|
|
2
|
+
var e = "_sidebar_537se_3", t = "_section_537se_21", n = "_sectionHeader_537se_35", r = "_sectionHeaderIcon_537se_71", i = "_sectionTitle_537se_78", a = "_sectionChevron_537se_94", o = "_sectionBody_537se_104", s = "_sectionBodyCollapsed_537se_110", c = "_sectionBodyInner_537se_114", l = "_list_537se_120", u = "_item_537se_131", d = "_itemBtn_537se_137", f = "_active_537se_184", p = "_itemIcon_537se_200", m = "_itemLabel_537se_213", h = "_itemSuffix_537se_223", g = "_contextMenu_537se_232", _ = "_contextMenuItem_537se_256", v = "_contextMenuDestructive_537se_292", y = "_searchWrap_537se_298", b = "_variantBlue_537se_309", x = "_variantGreen_537se_318", S = "_variantRed_537se_327", C = "_variantYellow_537se_336", w = "_variantBlack_537se_345", T = "_variantTransparent_537se_354", E = "_variantBlurred_537se_359", D = "_pageMode_537se_375", O = "_dragOver_537se_382", k = "_collapsed_537se_390", A = "_itemCollapsed_537se_401", j = {
|
|
3
|
+
sidebar: e,
|
|
4
|
+
section: t,
|
|
5
|
+
sectionHeader: n,
|
|
6
|
+
sectionHeaderIcon: r,
|
|
7
|
+
sectionTitle: i,
|
|
8
|
+
sectionChevron: a,
|
|
9
|
+
sectionBody: o,
|
|
10
|
+
sectionBodyCollapsed: s,
|
|
11
|
+
sectionBodyInner: c,
|
|
12
|
+
list: l,
|
|
13
|
+
item: u,
|
|
14
|
+
itemBtn: d,
|
|
15
|
+
active: f,
|
|
16
|
+
itemIcon: p,
|
|
17
|
+
itemLabel: m,
|
|
18
|
+
itemSuffix: h,
|
|
19
|
+
contextMenu: g,
|
|
20
|
+
"menu-in": "_menu-in_537se_1",
|
|
21
|
+
contextMenuItem: _,
|
|
22
|
+
contextMenuDestructive: v,
|
|
23
|
+
searchWrap: y,
|
|
24
|
+
variantBlue: b,
|
|
25
|
+
variantGreen: x,
|
|
26
|
+
variantRed: S,
|
|
27
|
+
variantYellow: C,
|
|
28
|
+
variantBlack: w,
|
|
29
|
+
variantTransparent: T,
|
|
30
|
+
variantBlurred: E,
|
|
31
|
+
pageMode: D,
|
|
32
|
+
dragOver: O,
|
|
33
|
+
collapsed: k,
|
|
34
|
+
itemCollapsed: A
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { j as default };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=Sidebar.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.module.css.js","names":[],"sources":["../../../src/components/Sidebar/Sidebar.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.sidebar {\n display: flex;\n flex-direction: column;\n width: 240px;\n height: 100%;\n background-color: var(--gnome-sidebar-bg-color, #ebebeb);\n color: var(--gnome-sidebar-fg-color, rgba(0, 0, 0, 0.8));\n border-right: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-1, 6px);\n gap: 0;\n transition: width 200ms var(--gnome-easing-default, ease);\n flex-shrink: 0;\n}\n\n/* ─── Section ───────────────────────────────────────────────────────────────── */\n\n.section {\n display: flex;\n flex-direction: column;\n}\n\n/* Divider between consecutive sections */\n.section + .section {\n margin-top: var(--gnome-space-1, 6px);\n padding-top: var(--gnome-space-1, 6px);\n border-top: 1px solid var(--gnome-divider-color);\n}\n\n/* ─── Section header (title row, optionally a button when collapsible) ──────── */\n\n.sectionHeader {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n width: 100%;\n margin: 4px 0 2px;\n padding: 2px var(--gnome-space-1, 6px);\n border-radius: var(--gnome-radius-sm, 4px);\n background: transparent;\n border: none;\n font: inherit;\n text-align: start;\n cursor: default;\n}\n\nbutton.sectionHeader {\n cursor: pointer;\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\nbutton.sectionHeader:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\nbutton.sectionHeader:active {\n background-color: var(--gnome-active-overlay);\n}\n\nbutton.sectionHeader:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-sidebar-bg-color, #ebebeb),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.sectionHeaderIcon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n.sectionTitle {\n flex: 1;\n min-width: 0;\n padding: 0;\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.875rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n opacity: 0.5;\n user-select: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sectionChevron {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: auto;\n opacity: 0.5;\n}\n\n/* ─── Collapsible section body ──────────────────────────────────────────────── */\n\n.sectionBody {\n display: grid;\n grid-template-rows: 1fr;\n transition: grid-template-rows 200ms var(--gnome-easing-default, ease);\n}\n\n.sectionBodyCollapsed {\n grid-template-rows: 0fr;\n}\n\n.sectionBodyInner {\n overflow: hidden;\n}\n\n/* ─── List ─────────────────────────────────────────────────────────────────── */\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n/* ─── Item wrapper ─────────────────────────────────────────────────────────── */\n\n.item {\n display: block;\n}\n\n/* ─── Item button ──────────────────────────────────────────────────────────── */\n\n.itemBtn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n text-align: start;\n cursor: pointer;\n outline: none;\n\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n width: 100%;\n padding: 8px var(--gnome-space-2, 12px);\n border-radius: var(--gnome-radius-md, 8px);\n\n color: var(--gnome-sidebar-fg-color, rgba(0, 0, 0, 0.8));\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.itemBtn:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\n.itemBtn:active {\n background-color: var(--gnome-active-overlay);\n}\n\n.itemBtn:focus-visible {\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-sidebar-bg-color, #ebebeb),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.itemBtn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* ─── Active state ─────────────────────────────────────────────────────────── */\n\n.active {\n background-color: var(--gnome-accent-bg-color, #3584e4);\n color: var(--gnome-accent-fg-color, #ffffff);\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.active:hover {\n filter: brightness(1.08);\n}\n\n.active:active {\n filter: brightness(0.92);\n}\n\n/* ─── Icon ─────────────────────────────────────────────────────────────────── */\n\n.itemIcon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.85;\n}\n\n.active .itemIcon {\n opacity: 1;\n}\n\n/* ─── Label ────────────────────────────────────────────────────────────────── */\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Suffix (trailing widget) ──────────────────────────────────────────────── */\n\n.itemSuffix {\n flex-shrink: 0;\n margin-left: auto;\n display: flex;\n align-items: center;\n}\n\n/* ─── Context menu ──────────────────────────────────────────────────────────── */\n\n.contextMenu {\n position: fixed;\n z-index: 10500;\n min-width: 160px;\n\n background-color: var(--gnome-card-bg-color, #ffffff);\n border: 1px solid var(--gnome-border-subtle);\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: var(--gnome-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.15));\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n flex-direction: column;\n gap: 1px;\n\n animation: menu-in var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes menu-in {\n from { opacity: 0; transform: scale(0.96); }\n to { opacity: 1; transform: scale(1); }\n}\n\n.contextMenuItem {\n appearance: none;\n border: none;\n background: transparent;\n width: 100%;\n text-align: start;\n cursor: pointer;\n outline: none;\n\n padding: 6px var(--gnome-space-2, 12px);\n border-radius: calc(var(--gnome-radius-md, 8px) - 4px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.contextMenuItem:hover:not(:disabled) {\n background-color: var(--gnome-hover-overlay);\n}\n\n.contextMenuItem:active:not(:disabled) {\n background-color: var(--gnome-active-overlay);\n}\n\n.contextMenuItem:focus-visible {\n box-shadow: inset 0 0 0 2px var(--gnome-focus-ring-color, #3584e4);\n}\n\n.contextMenuItem:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.contextMenuDestructive {\n color: var(--gnome-destructive-color, #e01b24);\n}\n\n/* ─── Search wrap ───────────────────────────────────────────────────────────── */\n\n.searchWrap {\n padding-bottom: var(--gnome-space-1, 6px);\n}\n\n/* Override SearchBar min-height to keep it compact inside the sidebar */\n.searchWrap > * {\n min-height: unset;\n}\n\n/* ─── Variants ──────────────────────────────────────────────────────────────── */\n\n.variantBlue {\n --gnome-sidebar-bg-color: #1a4a7a;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantGreen {\n --gnome-sidebar-bg-color: #1a4a2e;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantRed {\n --gnome-sidebar-bg-color: #6e1414;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantYellow {\n --gnome-sidebar-bg-color: #5a4500;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.95);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.1);\n --gnome-active-overlay: rgba(255, 255, 255, 0.18);\n --gnome-divider-color: rgba(255, 255, 255, 0.15);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.15);\n}\n\n.variantBlack {\n --gnome-sidebar-bg-color: #0a0a0a;\n --gnome-sidebar-fg-color: rgba(255, 255, 255, 0.9);\n --gnome-hover-overlay: rgba(255, 255, 255, 0.08);\n --gnome-active-overlay: rgba(255, 255, 255, 0.14);\n --gnome-divider-color: rgba(255, 255, 255, 0.1);\n --gnome-headerbar-border-color: rgba(255, 255, 255, 0.1);\n}\n\n.variantTransparent {\n --gnome-sidebar-bg-color: transparent;\n border-right-color: var(--gnome-divider-color);\n}\n\n.variantBlurred {\n --gnome-sidebar-bg-color: rgba(255, 255, 255, 0.55);\n border-right-color: rgba(255, 255, 255, 0.25);\n backdrop-filter: blur(20px) saturate(1.8);\n -webkit-backdrop-filter: blur(20px) saturate(1.8);\n}\n\n@media (prefers-color-scheme: dark) {\n .variantBlurred {\n --gnome-sidebar-bg-color: rgba(30, 30, 30, 0.6);\n border-right-color: rgba(255, 255, 255, 0.1);\n }\n}\n\n/* ─── Page mode (full-width boxed-list layout) ──────────────────────────────── */\n\n.pageMode {\n width: 100%;\n border-right: none;\n}\n\n/* ─── Drag-over highlight ───────────────────────────────────────────────────── */\n\n.dragOver {\n background-color: var(--gnome-accent-bg-color, #3584e4);\n color: var(--gnome-accent-fg-color, #ffffff);\n opacity: 0.7;\n}\n\n/* ─── Collapsed (icon-only / rail) mode ────────────────────────────────────── */\n\n.collapsed {\n width: 56px;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n/* Hide section headings when collapsed */\n.collapsed .sectionTitle {\n display: none;\n}\n\n/* Center icon when collapsed */\n.itemCollapsed {\n justify-content: center;\n padding-left: 0;\n padding-right: 0;\n}\n\n/* ─── High contrast ────────────────────────────────────────────────────────── */\n\n@media (prefers-contrast: more) {\n .sidebar {\n border-right-width: 2px;\n }\n\n .section + .section {\n border-top-width: 2px;\n }\n\n .contextMenu {\n border-width: 2px;\n }\n\n .active {\n outline: 2px solid var(--gnome-accent-fg-color, #ffffff);\n outline-offset: -3px;\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .itemBtn,\n button.sectionHeader,\n .sectionBody {\n transition: none;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../Icon/Icon.cjs`),t=require(`./Sidebar.module.css.cjs`),n=require(`./Sidebar.cjs`),r=require(`../Tooltip/Tooltip.cjs`);let i=require(`react`),a=require(`react-dom`),o=require(`react/jsx-runtime`);function s({label:s,icon:c,active:l=!1,suffix:u,badge:d,tooltip:f,menuItems:p,onDrop:m,acceptTypes:h,className:g,..._}){let v=n.useSidebarCollapsed(),y=(0,i.useContext)(n.SidebarFilterContext),b=u??d,x=v?f??s:f,S=y.length>0&&!s.toLowerCase().includes(y.toLowerCase()),[C,w]=(0,i.useState)(!1),T=e=>{m&&(h?.length&&!h.some(t=>e.dataTransfer.types.includes(t))||(e.preventDefault(),w(!0)))},E=()=>w(!1),D=e=>{m&&(e.preventDefault(),w(!1),m(e))},[O,k]=(0,i.useState)(null),A=(0,i.useRef)(null),j=(0,i.useCallback)((e,t)=>k({x:e,y:t}),[]),M=(0,i.useCallback)(()=>k(null),[]);(0,i.useEffect)(()=>{if(!O)return;let e=e=>{A.current&&!A.current.contains(e.target)&&M()},t=e=>{e.key===`Escape`&&M()};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[O,M]);let N=e=>{p?.length&&(e.preventDefault(),j(e.clientX,e.clientY))},P=e=>{if(e.key===`ContextMenu`||e.key===`F10`&&e.shiftKey){if(!p?.length)return;e.preventDefault();let t=e.currentTarget.getBoundingClientRect();j(t.right,t.top)}},F=(0,o.jsxs)(`button`,{type:`button`,"aria-current":l?`page`:void 0,"aria-label":v?s:void 0,className:[t.default.itemBtn,l?t.default.active:null,v?t.default.itemCollapsed:null,C?t.default.dragOver:null,g].filter(Boolean).join(` `),onContextMenu:N,onKeyDown:P,onDragOver:T,onDragLeave:E,onDrop:D,..._,children:[c&&(0,o.jsx)(`span`,{className:t.default.itemIcon,children:(0,o.jsx)(e.Icon,{icon:c,size:`md`,"aria-hidden":!0})}),!v&&(0,o.jsx)(`span`,{className:t.default.itemLabel,children:s}),!v&&b&&(0,o.jsx)(`span`,{className:t.default.itemSuffix,children:b})]});return(0,o.jsxs)(`li`,{className:t.default.item,hidden:S||void 0,children:[x?(0,o.jsx)(r.Tooltip,{label:x,placement:`right`,children:F}):F,O&&p?.length&&typeof document<`u`&&(0,a.createPortal)((0,o.jsx)(`div`,{ref:A,className:t.default.contextMenu,style:{top:O.y,left:O.x},role:`menu`,children:p.map(e=>(0,o.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:e.disabled,className:[t.default.contextMenuItem,e.destructive?t.default.contextMenuDestructive:null].filter(Boolean).join(` `),onClick:()=>{e.onClick(),M()},children:e.label},e.label))}),document.body)]})}exports.SidebarItem=s;
|
|
2
|
+
//# sourceMappingURL=SidebarItem.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.cjs","names":[],"sources":["../../../src/components/Sidebar/SidebarItem.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useEffect,\n useCallback,\n useContext,\n type ButtonHTMLAttributes,\n type DragEvent,\n type ReactNode,\n type MouseEvent,\n type KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { IconDefinition } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport { Tooltip } from \"../Tooltip\";\nimport { useSidebarCollapsed, SidebarFilterContext } from \"./Sidebar\";\nimport styles from \"./Sidebar.module.css\";\n\nexport interface SidebarMenuEntry {\n /** Label shown in the context menu. */\n label: string;\n /** Called when the entry is clicked. */\n onClick: () => void;\n /** Renders the entry in red. Use for destructive actions. */\n destructive?: boolean;\n /** Disables the entry. */\n disabled?: boolean;\n}\n\nexport interface SidebarItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Primary label. */\n label: string;\n /** Icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /** Marks this item as the currently active view. */\n active?: boolean;\n /**\n * Trailing widget — any ReactNode (badge, button, icon…).\n * Supersedes `badge` when both are provided.\n */\n suffix?: ReactNode;\n /**\n * @deprecated Use `suffix` instead.\n */\n badge?: ReactNode;\n /**\n * Short tooltip shown when hovering the item.\n * Automatically shown when the sidebar is `collapsed`.\n */\n tooltip?: string;\n /**\n * Context-menu entries shown on right-click or the Menu key.\n */\n menuItems?: SidebarMenuEntry[];\n /**\n * Called when a dragged item is dropped onto this row.\n * Mirrors `AdwSidebar` per-row drop target support (libadwaita 1.9).\n */\n onDrop?: (e: DragEvent<HTMLButtonElement>) => void;\n /**\n * MIME types this row accepts as drop targets (e.g. `[\"text/plain\"]`).\n * When provided, drops of other types are rejected via `e.preventDefault()`.\n * When omitted, all types are accepted.\n */\n acceptTypes?: string[];\n}\n\n/**\n * Individual navigation item inside a `Sidebar` or `SidebarSection`.\n *\n * **Tier 11 additions:**\n * - Automatically hidden when `Sidebar`'s `filter` / `searchable` is active\n * and the `label` does not match (case-insensitive substring).\n * - `onDrop` / `acceptTypes` — HTML5 drag-and-drop target support.\n */\nexport function SidebarItem({\n label,\n icon,\n active = false,\n suffix,\n badge,\n tooltip,\n menuItems,\n onDrop,\n acceptTypes,\n className,\n ...props\n}: SidebarItemProps) {\n const collapsed = useSidebarCollapsed();\n const filterValue = useContext(SidebarFilterContext);\n const trailing = suffix ?? badge;\n const effectiveTooltip = collapsed ? (tooltip ?? label) : tooltip;\n\n // ── Filter visibility ────────────────────────────────────────────────────\n const isFiltered =\n filterValue.length > 0 &&\n !label.toLowerCase().includes(filterValue.toLowerCase());\n\n // ── Drag-and-drop ────────────────────────────────────────────────────────\n const [isDragOver, setIsDragOver] = useState(false);\n\n const handleDragOver = (e: DragEvent<HTMLButtonElement>) => {\n if (!onDrop) return;\n if (acceptTypes?.length) {\n const accepted = acceptTypes.some((t) => e.dataTransfer.types.includes(t));\n if (!accepted) return;\n }\n e.preventDefault();\n setIsDragOver(true);\n };\n\n const handleDragLeave = () => setIsDragOver(false);\n\n const handleDrop = (e: DragEvent<HTMLButtonElement>) => {\n if (!onDrop) return;\n e.preventDefault();\n setIsDragOver(false);\n onDrop(e);\n };\n\n // ── Context menu ─────────────────────────────────────────────────────────\n const [menu, setMenu] = useState<{ x: number; y: number } | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const openMenu = useCallback((x: number, y: number) => setMenu({ x, y }), []);\n const closeMenu = useCallback(() => setMenu(null), []);\n\n useEffect(() => {\n if (!menu) return;\n const handleClick = (e: globalThis.MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) closeMenu();\n };\n const handleKey = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\") closeMenu();\n };\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [menu, closeMenu]);\n\n const handleContextMenu = (e: MouseEvent<HTMLButtonElement>) => {\n if (!menuItems?.length) return;\n e.preventDefault();\n openMenu(e.clientX, e.clientY);\n };\n\n const handleMenuKey = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ContextMenu\" || (e.key === \"F10\" && e.shiftKey)) {\n if (!menuItems?.length) return;\n e.preventDefault();\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n openMenu(rect.right, rect.top);\n }\n };\n\n // ── Render ───────────────────────────────────────────────────────────────\n const button = (\n <button\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n aria-label={collapsed ? label : undefined}\n className={[\n styles.itemBtn,\n active ? styles.active : null,\n collapsed ? styles.itemCollapsed : null,\n isDragOver ? styles.dragOver : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n onContextMenu={handleContextMenu}\n onKeyDown={handleMenuKey}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n {...props}\n >\n {icon && (\n <span className={styles.itemIcon}>\n <Icon icon={icon} size=\"md\" aria-hidden />\n </span>\n )}\n {!collapsed && <span className={styles.itemLabel}>{label}</span>}\n {!collapsed && trailing && <span className={styles.itemSuffix}>{trailing}</span>}\n </button>\n );\n\n return (\n <li className={styles.item} hidden={isFiltered || undefined}>\n {effectiveTooltip\n ? <Tooltip label={effectiveTooltip} placement=\"right\">{button}</Tooltip>\n : button}\n\n {menu && menuItems?.length && typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={menuRef}\n className={styles.contextMenu}\n style={{ top: menu.y, left: menu.x }}\n role=\"menu\"\n >\n {menuItems.map((entry) => (\n <button\n key={entry.label}\n type=\"button\"\n role=\"menuitem\"\n disabled={entry.disabled}\n className={[\n styles.contextMenuItem,\n entry.destructive ? styles.contextMenuDestructive : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => {\n entry.onClick();\n closeMenu();\n }}\n >\n {entry.label}\n </button>\n ))}\n </div>,\n document.body,\n )}\n </li>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Icon as e } from "../Icon/Icon.js";
|
|
2
|
+
import t from "./Sidebar.module.css.js";
|
|
3
|
+
import { SidebarFilterContext as n, useSidebarCollapsed as r } from "./Sidebar.js";
|
|
4
|
+
import { Tooltip as i } from "../Tooltip/Tooltip.js";
|
|
5
|
+
import { useCallback as a, useContext as o, useEffect as s, useRef as c, useState as l } from "react";
|
|
6
|
+
import { createPortal as u } from "react-dom";
|
|
7
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/Sidebar/SidebarItem.tsx
|
|
9
|
+
function p({ label: p, icon: m, active: h = !1, suffix: g, badge: _, tooltip: v, menuItems: y, onDrop: b, acceptTypes: x, className: S, ...C }) {
|
|
10
|
+
let w = r(), T = o(n), E = g ?? _, D = w ? v ?? p : v, O = T.length > 0 && !p.toLowerCase().includes(T.toLowerCase()), [k, A] = l(!1), j = (e) => {
|
|
11
|
+
b && (x?.length && !x.some((t) => e.dataTransfer.types.includes(t)) || (e.preventDefault(), A(!0)));
|
|
12
|
+
}, M = () => A(!1), N = (e) => {
|
|
13
|
+
b && (e.preventDefault(), A(!1), b(e));
|
|
14
|
+
}, [P, F] = l(null), I = c(null), L = a((e, t) => F({
|
|
15
|
+
x: e,
|
|
16
|
+
y: t
|
|
17
|
+
}), []), R = a(() => F(null), []);
|
|
18
|
+
s(() => {
|
|
19
|
+
if (!P) return;
|
|
20
|
+
let e = (e) => {
|
|
21
|
+
I.current && !I.current.contains(e.target) && R();
|
|
22
|
+
}, t = (e) => {
|
|
23
|
+
e.key === "Escape" && R();
|
|
24
|
+
};
|
|
25
|
+
return document.addEventListener("mousedown", e), document.addEventListener("keydown", t), () => {
|
|
26
|
+
document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
|
|
27
|
+
};
|
|
28
|
+
}, [P, R]);
|
|
29
|
+
let z = (e) => {
|
|
30
|
+
y?.length && (e.preventDefault(), L(e.clientX, e.clientY));
|
|
31
|
+
}, B = (e) => {
|
|
32
|
+
if (e.key === "ContextMenu" || e.key === "F10" && e.shiftKey) {
|
|
33
|
+
if (!y?.length) return;
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
let t = e.currentTarget.getBoundingClientRect();
|
|
36
|
+
L(t.right, t.top);
|
|
37
|
+
}
|
|
38
|
+
}, V = /* @__PURE__ */ f("button", {
|
|
39
|
+
type: "button",
|
|
40
|
+
"aria-current": h ? "page" : void 0,
|
|
41
|
+
"aria-label": w ? p : void 0,
|
|
42
|
+
className: [
|
|
43
|
+
t.itemBtn,
|
|
44
|
+
h ? t.active : null,
|
|
45
|
+
w ? t.itemCollapsed : null,
|
|
46
|
+
k ? t.dragOver : null,
|
|
47
|
+
S
|
|
48
|
+
].filter(Boolean).join(" "),
|
|
49
|
+
onContextMenu: z,
|
|
50
|
+
onKeyDown: B,
|
|
51
|
+
onDragOver: j,
|
|
52
|
+
onDragLeave: M,
|
|
53
|
+
onDrop: N,
|
|
54
|
+
...C,
|
|
55
|
+
children: [
|
|
56
|
+
m && /* @__PURE__ */ d("span", {
|
|
57
|
+
className: t.itemIcon,
|
|
58
|
+
children: /* @__PURE__ */ d(e, {
|
|
59
|
+
icon: m,
|
|
60
|
+
size: "md",
|
|
61
|
+
"aria-hidden": !0
|
|
62
|
+
})
|
|
63
|
+
}),
|
|
64
|
+
!w && /* @__PURE__ */ d("span", {
|
|
65
|
+
className: t.itemLabel,
|
|
66
|
+
children: p
|
|
67
|
+
}),
|
|
68
|
+
!w && E && /* @__PURE__ */ d("span", {
|
|
69
|
+
className: t.itemSuffix,
|
|
70
|
+
children: E
|
|
71
|
+
})
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
return /* @__PURE__ */ f("li", {
|
|
75
|
+
className: t.item,
|
|
76
|
+
hidden: O || void 0,
|
|
77
|
+
children: [D ? /* @__PURE__ */ d(i, {
|
|
78
|
+
label: D,
|
|
79
|
+
placement: "right",
|
|
80
|
+
children: V
|
|
81
|
+
}) : V, P && y?.length && typeof document < "u" && u(/* @__PURE__ */ d("div", {
|
|
82
|
+
ref: I,
|
|
83
|
+
className: t.contextMenu,
|
|
84
|
+
style: {
|
|
85
|
+
top: P.y,
|
|
86
|
+
left: P.x
|
|
87
|
+
},
|
|
88
|
+
role: "menu",
|
|
89
|
+
children: y.map((e) => /* @__PURE__ */ d("button", {
|
|
90
|
+
type: "button",
|
|
91
|
+
role: "menuitem",
|
|
92
|
+
disabled: e.disabled,
|
|
93
|
+
className: [t.contextMenuItem, e.destructive ? t.contextMenuDestructive : null].filter(Boolean).join(" "),
|
|
94
|
+
onClick: () => {
|
|
95
|
+
e.onClick(), R();
|
|
96
|
+
},
|
|
97
|
+
children: e.label
|
|
98
|
+
}, e.label))
|
|
99
|
+
}), document.body)]
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { p as SidebarItem };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=SidebarItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.js","names":[],"sources":["../../../src/components/Sidebar/SidebarItem.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useEffect,\n useCallback,\n useContext,\n type ButtonHTMLAttributes,\n type DragEvent,\n type ReactNode,\n type MouseEvent,\n type KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { IconDefinition } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport { Tooltip } from \"../Tooltip\";\nimport { useSidebarCollapsed, SidebarFilterContext } from \"./Sidebar\";\nimport styles from \"./Sidebar.module.css\";\n\nexport interface SidebarMenuEntry {\n /** Label shown in the context menu. */\n label: string;\n /** Called when the entry is clicked. */\n onClick: () => void;\n /** Renders the entry in red. Use for destructive actions. */\n destructive?: boolean;\n /** Disables the entry. */\n disabled?: boolean;\n}\n\nexport interface SidebarItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Primary label. */\n label: string;\n /** Icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /** Marks this item as the currently active view. */\n active?: boolean;\n /**\n * Trailing widget — any ReactNode (badge, button, icon…).\n * Supersedes `badge` when both are provided.\n */\n suffix?: ReactNode;\n /**\n * @deprecated Use `suffix` instead.\n */\n badge?: ReactNode;\n /**\n * Short tooltip shown when hovering the item.\n * Automatically shown when the sidebar is `collapsed`.\n */\n tooltip?: string;\n /**\n * Context-menu entries shown on right-click or the Menu key.\n */\n menuItems?: SidebarMenuEntry[];\n /**\n * Called when a dragged item is dropped onto this row.\n * Mirrors `AdwSidebar` per-row drop target support (libadwaita 1.9).\n */\n onDrop?: (e: DragEvent<HTMLButtonElement>) => void;\n /**\n * MIME types this row accepts as drop targets (e.g. `[\"text/plain\"]`).\n * When provided, drops of other types are rejected via `e.preventDefault()`.\n * When omitted, all types are accepted.\n */\n acceptTypes?: string[];\n}\n\n/**\n * Individual navigation item inside a `Sidebar` or `SidebarSection`.\n *\n * **Tier 11 additions:**\n * - Automatically hidden when `Sidebar`'s `filter` / `searchable` is active\n * and the `label` does not match (case-insensitive substring).\n * - `onDrop` / `acceptTypes` — HTML5 drag-and-drop target support.\n */\nexport function SidebarItem({\n label,\n icon,\n active = false,\n suffix,\n badge,\n tooltip,\n menuItems,\n onDrop,\n acceptTypes,\n className,\n ...props\n}: SidebarItemProps) {\n const collapsed = useSidebarCollapsed();\n const filterValue = useContext(SidebarFilterContext);\n const trailing = suffix ?? badge;\n const effectiveTooltip = collapsed ? (tooltip ?? label) : tooltip;\n\n // ── Filter visibility ────────────────────────────────────────────────────\n const isFiltered =\n filterValue.length > 0 &&\n !label.toLowerCase().includes(filterValue.toLowerCase());\n\n // ── Drag-and-drop ────────────────────────────────────────────────────────\n const [isDragOver, setIsDragOver] = useState(false);\n\n const handleDragOver = (e: DragEvent<HTMLButtonElement>) => {\n if (!onDrop) return;\n if (acceptTypes?.length) {\n const accepted = acceptTypes.some((t) => e.dataTransfer.types.includes(t));\n if (!accepted) return;\n }\n e.preventDefault();\n setIsDragOver(true);\n };\n\n const handleDragLeave = () => setIsDragOver(false);\n\n const handleDrop = (e: DragEvent<HTMLButtonElement>) => {\n if (!onDrop) return;\n e.preventDefault();\n setIsDragOver(false);\n onDrop(e);\n };\n\n // ── Context menu ─────────────────────────────────────────────────────────\n const [menu, setMenu] = useState<{ x: number; y: number } | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const openMenu = useCallback((x: number, y: number) => setMenu({ x, y }), []);\n const closeMenu = useCallback(() => setMenu(null), []);\n\n useEffect(() => {\n if (!menu) return;\n const handleClick = (e: globalThis.MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) closeMenu();\n };\n const handleKey = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\") closeMenu();\n };\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [menu, closeMenu]);\n\n const handleContextMenu = (e: MouseEvent<HTMLButtonElement>) => {\n if (!menuItems?.length) return;\n e.preventDefault();\n openMenu(e.clientX, e.clientY);\n };\n\n const handleMenuKey = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ContextMenu\" || (e.key === \"F10\" && e.shiftKey)) {\n if (!menuItems?.length) return;\n e.preventDefault();\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n openMenu(rect.right, rect.top);\n }\n };\n\n // ── Render ───────────────────────────────────────────────────────────────\n const button = (\n <button\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n aria-label={collapsed ? label : undefined}\n className={[\n styles.itemBtn,\n active ? styles.active : null,\n collapsed ? styles.itemCollapsed : null,\n isDragOver ? styles.dragOver : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n onContextMenu={handleContextMenu}\n onKeyDown={handleMenuKey}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n {...props}\n >\n {icon && (\n <span className={styles.itemIcon}>\n <Icon icon={icon} size=\"md\" aria-hidden />\n </span>\n )}\n {!collapsed && <span className={styles.itemLabel}>{label}</span>}\n {!collapsed && trailing && <span className={styles.itemSuffix}>{trailing}</span>}\n </button>\n );\n\n return (\n <li className={styles.item} hidden={isFiltered || undefined}>\n {effectiveTooltip\n ? <Tooltip label={effectiveTooltip} placement=\"right\">{button}</Tooltip>\n : button}\n\n {menu && menuItems?.length && typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={menuRef}\n className={styles.contextMenu}\n style={{ top: menu.y, left: menu.x }}\n role=\"menu\"\n >\n {menuItems.map((entry) => (\n <button\n key={entry.label}\n type=\"button\"\n role=\"menuitem\"\n disabled={entry.disabled}\n className={[\n styles.contextMenuItem,\n entry.destructive ? styles.contextMenuDestructive : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => {\n entry.onClick();\n closeMenu();\n }}\n >\n {entry.label}\n </button>\n ))}\n </div>,\n document.body,\n )}\n </li>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../Icon/Icon.cjs`),t=require(`../../icons/dist/icons/PanDown.cjs`),n=require(`../../icons/dist/icons/PanUp.cjs`),r=require(`./Sidebar.module.css.cjs`),i=require(`./Sidebar.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);function s(e,t){let n=0;return a.Children.forEach(e,e=>{if(!(0,a.isValidElement)(e))return;let r=e.props;typeof r.label==`string`?r.label.toLowerCase().includes(t.toLowerCase())&&n++:r.children&&(n+=s(r.children,t))}),n}var c=(0,a.forwardRef)(function({title:c,icon:l,collapsible:u=!1,defaultOpen:d=!0,open:f,onOpenChange:p,children:m,className:h,...g},_){let[v,y]=(0,a.useState)(d),b=f!==void 0,x=b?f:v,S=i.useSidebarCollapsed(),C=(0,a.useContext)(i.SidebarFilterContext),w=(0,a.useId)(),T=e=>{b||y(e),p?.(e)};if((0,a.useImperativeHandle)(_,()=>({expand:()=>T(!0),collapse:()=>T(!1),toggle:()=>T(!x)})),!(C.length===0||s(m,C)>0))return null;let E=S?!0:x,D=!!(c||l||u&&!S);return(0,o.jsxs)(`section`,{className:[r.default.section,h].filter(Boolean).join(` `),...g,children:[D&&(u&&!S?(0,o.jsxs)(`button`,{type:`button`,className:r.default.sectionHeader,onClick:()=>T(!x),"aria-expanded":x,"aria-controls":w,children:[l&&(0,o.jsx)(`span`,{className:r.default.sectionHeaderIcon,children:(0,o.jsx)(e.Icon,{icon:l,size:`sm`,"aria-hidden":!0})}),c&&(0,o.jsx)(`span`,{className:r.default.sectionTitle,children:c}),(0,o.jsx)(`span`,{className:r.default.sectionChevron,children:(0,o.jsx)(e.Icon,{icon:x?n.e:t.e,size:`sm`,"aria-hidden":!0})})]}):(0,o.jsxs)(`div`,{className:r.default.sectionHeader,children:[l&&(0,o.jsx)(`span`,{className:r.default.sectionHeaderIcon,children:(0,o.jsx)(e.Icon,{icon:l,size:`sm`,"aria-hidden":!0})}),c&&(0,o.jsx)(`span`,{className:r.default.sectionTitle,children:c})]})),(0,o.jsx)(`div`,{id:w,className:[r.default.sectionBody,E?null:r.default.sectionBodyCollapsed].filter(Boolean).join(` `),"aria-hidden":!E||void 0,children:(0,o.jsx)(`div`,{className:r.default.sectionBodyInner,children:(0,o.jsx)(`ul`,{role:`list`,className:r.default.list,children:m})})})]})});exports.SidebarSection=c;
|
|
2
|
+
//# sourceMappingURL=SidebarSection.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarSection.cjs","names":[],"sources":["../../../src/components/Sidebar/SidebarSection.tsx"],"sourcesContent":["import {\n forwardRef,\n useImperativeHandle,\n useState,\n useContext,\n useId,\n isValidElement,\n Children,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport type { IconDefinition } from \"@gnome-ui/icons\";\nimport { PanDown, PanUp } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport { useSidebarCollapsed, SidebarFilterContext } from \"./Sidebar\";\nimport styles from \"./Sidebar.module.css\";\n\n// ─── Filter helper ────────────────────────────────────────────────────────────\n\nfunction countMatchingItems(children: ReactNode, filter: string): number {\n let count = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n const props = child.props as Record<string, unknown>;\n if (typeof props.label === \"string\") {\n if (props.label.toLowerCase().includes(filter.toLowerCase())) count++;\n } else if (props.children) {\n count += countMatchingItems(props.children as ReactNode, filter);\n }\n });\n return count;\n}\n\n// ─── Handle ───────────────────────────────────────────────────────────────────\n\nexport interface SidebarSectionHandle {\n expand: () => void;\n collapse: () => void;\n toggle: () => void;\n}\n\n// ─── Props ────────────────────────────────────────────────────────────────────\n\nexport interface SidebarSectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * Section heading. Rendered in small caps above the items.\n * Omit for an untitled section (e.g. the first group in a sidebar).\n */\n title?: string;\n /** Icon rendered left of the title. Same type as `SidebarItem.icon`. */\n icon?: IconDefinition;\n /** Whether the section body can be toggled open/closed. Defaults to `false`. */\n collapsible?: boolean;\n /** Initial open state when `collapsible` is true. Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. */\n open?: boolean;\n /** Called when open state changes. */\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Named group of `SidebarItem` entries inside a `Sidebar`.\n *\n * Sections are separated by a thin divider. The title and icon are optional.\n * When `collapsible` is true the body can be toggled via the header button or\n * imperatively via a `ref` (`expand`, `collapse`, `toggle`).\n *\n * In rail (icon-only) mode the body is always visible regardless of open state.\n * When a sidebar filter is active and no children match, the section is hidden.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Sidebar.html\n */\nexport const SidebarSection = forwardRef<SidebarSectionHandle, SidebarSectionProps>(\n function SidebarSection(\n {\n title,\n icon,\n collapsible = false,\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n children,\n className,\n ...props\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const sidebarCollapsed = useSidebarCollapsed();\n const filterValue = useContext(SidebarFilterContext);\n const bodyId = useId();\n\n const setAndNotify = (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n useImperativeHandle(ref, () => ({\n expand: () => setAndNotify(true),\n collapse: () => setAndNotify(false),\n toggle: () => setAndNotify(!open),\n }));\n\n // Hide section entirely when filter is active and no children match\n const hasVisibleChildren =\n filterValue.length === 0 || countMatchingItems(children, filterValue) > 0;\n\n if (!hasVisibleChildren) return null;\n\n // In rail mode the body is always visible\n const isOpen = sidebarCollapsed ? true : open;\n\n const showHeader = !!(title || icon || (collapsible && !sidebarCollapsed));\n\n return (\n <section\n className={[styles.section, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {showHeader && (\n collapsible && !sidebarCollapsed ? (\n <button\n type=\"button\"\n className={styles.sectionHeader}\n onClick={() => setAndNotify(!open)}\n aria-expanded={open}\n aria-controls={bodyId}\n >\n {icon && (\n <span className={styles.sectionHeaderIcon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n {title && <span className={styles.sectionTitle}>{title}</span>}\n <span className={styles.sectionChevron}>\n <Icon icon={open ? PanUp : PanDown} size=\"sm\" aria-hidden />\n </span>\n </button>\n ) : (\n <div className={styles.sectionHeader}>\n {icon && (\n <span className={styles.sectionHeaderIcon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n {title && <span className={styles.sectionTitle}>{title}</span>}\n </div>\n )\n )}\n\n <div\n id={bodyId}\n className={[\n styles.sectionBody,\n !isOpen ? styles.sectionBodyCollapsed : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden={!isOpen || undefined}\n >\n <div className={styles.sectionBodyInner}>\n <ul role=\"list\" className={styles.list}>\n {children}\n </ul>\n </div>\n </div>\n </section>\n );\n },\n);\n"],"mappings":"yPAmBA,SAAS,EAAmB,EAAqB,EAAwB,CACvE,IAAI,EAAQ,EAUZ,OATA,EAAA,SAAS,QAAQ,EAAW,GAAU,CACpC,GAAI,EAAA,EAAA,EAAA,gBAAgB,EAAM,CAAE,OAC5B,IAAM,EAAQ,EAAM,MAChB,OAAO,EAAM,OAAU,SACrB,EAAM,MAAM,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,EAAE,IACrD,EAAM,WACf,GAAS,EAAmB,EAAM,SAAuB,EAAO,GAElE,CACK,EA8CT,IAAa,GAAA,EAAA,EAAA,YACX,SACE,CACE,QACA,OACA,cAAc,GACd,cAAc,GACd,KAAM,EACN,eACA,WACA,YACA,GAAG,GAEL,EACA,CACA,GAAM,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAY,CACvD,EAAe,IAAmB,IAAA,GAClC,EAAO,EAAe,EAAiB,EAEvC,EAAmB,EAAA,qBAAqB,CACxC,GAAA,EAAA,EAAA,YAAyB,EAAA,qBAAqB,CAC9C,GAAA,EAAA,EAAA,QAAgB,CAEhB,EAAgB,GAAkB,CACjC,GAAc,EAAgB,EAAK,CACxC,IAAe,EAAK,EAatB,IAVA,EAAA,EAAA,qBAAoB,OAAY,CAC9B,WAAc,EAAa,GAAK,CAChC,aAAgB,EAAa,GAAM,CACnC,WAAc,EAAa,CAAC,EAAK,CAClC,EAAE,CAMC,EAFF,EAAY,SAAW,GAAK,EAAmB,EAAU,EAAY,CAAG,GAEjD,OAAO,KAGhC,IAAM,EAAS,EAAmB,GAAO,EAEnC,EAAa,CAAC,EAAE,GAAS,GAAS,GAAe,CAAC,GAExD,OACE,EAAA,EAAA,MAAC,UAAD,CACE,UAAW,CAAC,EAAA,QAAO,QAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAChE,GAAI,WAFN,CAIG,IACC,GAAe,CAAC,GACd,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,cAClB,YAAe,EAAa,CAAC,EAAK,CAClC,gBAAe,EACf,gBAAe,WALjB,CAOG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,4BACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAY,OAAM,KAAK,KAAK,cAAA,GAAc,CAAA,CACrC,CAAA,CAER,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,sBAAe,EAAa,CAAA,EAC9D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,yBACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAO,EAAA,EAAQ,EAAA,EAAS,KAAK,KAAK,cAAA,GAAc,CAAA,CACvD,CAAA,CACA,IAET,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,QAAO,uBAAvB,CACG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,4BACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAY,OAAM,KAAK,KAAK,cAAA,GAAc,CAAA,CACrC,CAAA,CAER,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,sBAAe,EAAa,CAAA,CAC1D,KAIV,EAAA,EAAA,KAAC,MAAD,CACE,GAAI,EACJ,UAAW,CACT,EAAA,QAAO,YACN,EAAuC,KAA9B,EAAA,QAAO,qBAClB,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAa,CAAC,GAAU,IAAA,aAExB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,2BACrB,EAAA,EAAA,KAAC,KAAD,CAAI,KAAK,OAAO,UAAW,EAAA,QAAO,KAC/B,WACE,CAAA,CACD,CAAA,CACF,CAAA,CACE,IAGf"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Icon as e } from "../Icon/Icon.js";
|
|
2
|
+
import { e as t } from "../../icons/dist/icons/PanDown.js";
|
|
3
|
+
import { e as n } from "../../icons/dist/icons/PanUp.js";
|
|
4
|
+
import r from "./Sidebar.module.css.js";
|
|
5
|
+
import { SidebarFilterContext as i, useSidebarCollapsed as a } from "./Sidebar.js";
|
|
6
|
+
import { Children as o, forwardRef as s, isValidElement as c, useContext as l, useId as u, useImperativeHandle as d, useState as f } from "react";
|
|
7
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/Sidebar/SidebarSection.tsx
|
|
9
|
+
function h(e, t) {
|
|
10
|
+
let n = 0;
|
|
11
|
+
return o.forEach(e, (e) => {
|
|
12
|
+
if (!c(e)) return;
|
|
13
|
+
let r = e.props;
|
|
14
|
+
typeof r.label == "string" ? r.label.toLowerCase().includes(t.toLowerCase()) && n++ : r.children && (n += h(r.children, t));
|
|
15
|
+
}), n;
|
|
16
|
+
}
|
|
17
|
+
var g = s(function({ title: o, icon: s, collapsible: c = !1, defaultOpen: g = !0, open: _, onOpenChange: v, children: y, className: b, ...x }, S) {
|
|
18
|
+
let [C, w] = f(g), T = _ !== void 0, E = T ? _ : C, D = a(), O = l(i), k = u(), A = (e) => {
|
|
19
|
+
T || w(e), v?.(e);
|
|
20
|
+
};
|
|
21
|
+
if (d(S, () => ({
|
|
22
|
+
expand: () => A(!0),
|
|
23
|
+
collapse: () => A(!1),
|
|
24
|
+
toggle: () => A(!E)
|
|
25
|
+
})), !(O.length === 0 || h(y, O) > 0)) return null;
|
|
26
|
+
let j = D ? !0 : E, M = !!(o || s || c && !D);
|
|
27
|
+
return /* @__PURE__ */ m("section", {
|
|
28
|
+
className: [r.section, b].filter(Boolean).join(" "),
|
|
29
|
+
...x,
|
|
30
|
+
children: [M && (c && !D ? /* @__PURE__ */ m("button", {
|
|
31
|
+
type: "button",
|
|
32
|
+
className: r.sectionHeader,
|
|
33
|
+
onClick: () => A(!E),
|
|
34
|
+
"aria-expanded": E,
|
|
35
|
+
"aria-controls": k,
|
|
36
|
+
children: [
|
|
37
|
+
s && /* @__PURE__ */ p("span", {
|
|
38
|
+
className: r.sectionHeaderIcon,
|
|
39
|
+
children: /* @__PURE__ */ p(e, {
|
|
40
|
+
icon: s,
|
|
41
|
+
size: "sm",
|
|
42
|
+
"aria-hidden": !0
|
|
43
|
+
})
|
|
44
|
+
}),
|
|
45
|
+
o && /* @__PURE__ */ p("span", {
|
|
46
|
+
className: r.sectionTitle,
|
|
47
|
+
children: o
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ p("span", {
|
|
50
|
+
className: r.sectionChevron,
|
|
51
|
+
children: /* @__PURE__ */ p(e, {
|
|
52
|
+
icon: E ? n : t,
|
|
53
|
+
size: "sm",
|
|
54
|
+
"aria-hidden": !0
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
}) : /* @__PURE__ */ m("div", {
|
|
59
|
+
className: r.sectionHeader,
|
|
60
|
+
children: [s && /* @__PURE__ */ p("span", {
|
|
61
|
+
className: r.sectionHeaderIcon,
|
|
62
|
+
children: /* @__PURE__ */ p(e, {
|
|
63
|
+
icon: s,
|
|
64
|
+
size: "sm",
|
|
65
|
+
"aria-hidden": !0
|
|
66
|
+
})
|
|
67
|
+
}), o && /* @__PURE__ */ p("span", {
|
|
68
|
+
className: r.sectionTitle,
|
|
69
|
+
children: o
|
|
70
|
+
})]
|
|
71
|
+
})), /* @__PURE__ */ p("div", {
|
|
72
|
+
id: k,
|
|
73
|
+
className: [r.sectionBody, j ? null : r.sectionBodyCollapsed].filter(Boolean).join(" "),
|
|
74
|
+
"aria-hidden": !j || void 0,
|
|
75
|
+
children: /* @__PURE__ */ p("div", {
|
|
76
|
+
className: r.sectionBodyInner,
|
|
77
|
+
children: /* @__PURE__ */ p("ul", {
|
|
78
|
+
role: "list",
|
|
79
|
+
className: r.list,
|
|
80
|
+
children: y
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
})]
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//#endregion
|
|
87
|
+
export { g as SidebarSection };
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=SidebarSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarSection.js","names":[],"sources":["../../../src/components/Sidebar/SidebarSection.tsx"],"sourcesContent":["import {\n forwardRef,\n useImperativeHandle,\n useState,\n useContext,\n useId,\n isValidElement,\n Children,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport type { IconDefinition } from \"@gnome-ui/icons\";\nimport { PanDown, PanUp } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport { useSidebarCollapsed, SidebarFilterContext } from \"./Sidebar\";\nimport styles from \"./Sidebar.module.css\";\n\n// ─── Filter helper ────────────────────────────────────────────────────────────\n\nfunction countMatchingItems(children: ReactNode, filter: string): number {\n let count = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n const props = child.props as Record<string, unknown>;\n if (typeof props.label === \"string\") {\n if (props.label.toLowerCase().includes(filter.toLowerCase())) count++;\n } else if (props.children) {\n count += countMatchingItems(props.children as ReactNode, filter);\n }\n });\n return count;\n}\n\n// ─── Handle ───────────────────────────────────────────────────────────────────\n\nexport interface SidebarSectionHandle {\n expand: () => void;\n collapse: () => void;\n toggle: () => void;\n}\n\n// ─── Props ────────────────────────────────────────────────────────────────────\n\nexport interface SidebarSectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * Section heading. Rendered in small caps above the items.\n * Omit for an untitled section (e.g. the first group in a sidebar).\n */\n title?: string;\n /** Icon rendered left of the title. Same type as `SidebarItem.icon`. */\n icon?: IconDefinition;\n /** Whether the section body can be toggled open/closed. Defaults to `false`. */\n collapsible?: boolean;\n /** Initial open state when `collapsible` is true. Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. */\n open?: boolean;\n /** Called when open state changes. */\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Named group of `SidebarItem` entries inside a `Sidebar`.\n *\n * Sections are separated by a thin divider. The title and icon are optional.\n * When `collapsible` is true the body can be toggled via the header button or\n * imperatively via a `ref` (`expand`, `collapse`, `toggle`).\n *\n * In rail (icon-only) mode the body is always visible regardless of open state.\n * When a sidebar filter is active and no children match, the section is hidden.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Sidebar.html\n */\nexport const SidebarSection = forwardRef<SidebarSectionHandle, SidebarSectionProps>(\n function SidebarSection(\n {\n title,\n icon,\n collapsible = false,\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n children,\n className,\n ...props\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const sidebarCollapsed = useSidebarCollapsed();\n const filterValue = useContext(SidebarFilterContext);\n const bodyId = useId();\n\n const setAndNotify = (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n useImperativeHandle(ref, () => ({\n expand: () => setAndNotify(true),\n collapse: () => setAndNotify(false),\n toggle: () => setAndNotify(!open),\n }));\n\n // Hide section entirely when filter is active and no children match\n const hasVisibleChildren =\n filterValue.length === 0 || countMatchingItems(children, filterValue) > 0;\n\n if (!hasVisibleChildren) return null;\n\n // In rail mode the body is always visible\n const isOpen = sidebarCollapsed ? true : open;\n\n const showHeader = !!(title || icon || (collapsible && !sidebarCollapsed));\n\n return (\n <section\n className={[styles.section, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {showHeader && (\n collapsible && !sidebarCollapsed ? (\n <button\n type=\"button\"\n className={styles.sectionHeader}\n onClick={() => setAndNotify(!open)}\n aria-expanded={open}\n aria-controls={bodyId}\n >\n {icon && (\n <span className={styles.sectionHeaderIcon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n {title && <span className={styles.sectionTitle}>{title}</span>}\n <span className={styles.sectionChevron}>\n <Icon icon={open ? PanUp : PanDown} size=\"sm\" aria-hidden />\n </span>\n </button>\n ) : (\n <div className={styles.sectionHeader}>\n {icon && (\n <span className={styles.sectionHeaderIcon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n {title && <span className={styles.sectionTitle}>{title}</span>}\n </div>\n )\n )}\n\n <div\n id={bodyId}\n className={[\n styles.sectionBody,\n !isOpen ? styles.sectionBodyCollapsed : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden={!isOpen || undefined}\n >\n <div className={styles.sectionBodyInner}>\n <ul role=\"list\" className={styles.list}>\n {children}\n </ul>\n </div>\n </div>\n </section>\n );\n },\n);\n"],"mappings":";;;;;;;;AAmBA,SAAS,EAAmB,GAAqB,GAAwB;CACvE,IAAI,IAAQ;AAUZ,QATA,EAAS,QAAQ,IAAW,MAAU;AACpC,MAAI,CAAC,EAAe,EAAM,CAAE;EAC5B,IAAM,IAAQ,EAAM;AACpB,EAAI,OAAO,EAAM,SAAU,WACrB,EAAM,MAAM,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,IAAE,MACrD,EAAM,aACf,KAAS,EAAmB,EAAM,UAAuB,EAAO;GAElE,EACK;;AA8CT,IAAa,IAAiB,EAC5B,SACE,EACE,UACA,SACA,iBAAc,IACd,iBAAc,IACd,MAAM,GACN,iBACA,aACA,cACA,GAAG,KAEL,GACA;CACA,IAAM,CAAC,GAAc,KAAmB,EAAS,EAAY,EACvD,IAAe,MAAmB,KAAA,GAClC,IAAO,IAAe,IAAiB,GAEvC,IAAmB,GAAqB,EACxC,IAAc,EAAW,EAAqB,EAC9C,IAAS,GAAO,EAEhB,KAAgB,MAAkB;AAEtC,EADK,KAAc,EAAgB,EAAK,EACxC,IAAe,EAAK;;AAatB,KAVA,EAAoB,UAAY;EAC9B,cAAc,EAAa,GAAK;EAChC,gBAAgB,EAAa,GAAM;EACnC,cAAc,EAAa,CAAC,EAAK;EAClC,EAAE,EAMC,EAFF,EAAY,WAAW,KAAK,EAAmB,GAAU,EAAY,GAAG,GAEjD,QAAO;CAGhC,IAAM,IAAS,IAAmB,KAAO,GAEnC,IAAa,CAAC,EAAE,KAAS,KAAS,KAAe,CAAC;AAExD,QACE,kBAAC,WAAD;EACE,WAAW,CAAC,EAAO,SAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAChE,GAAI;YAFN,CAIG,MACC,KAAe,CAAC,IACd,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EAAO;GAClB,eAAe,EAAa,CAAC,EAAK;GAClC,iBAAe;GACf,iBAAe;aALjB;IAOG,KACC,kBAAC,QAAD;KAAM,WAAW,EAAO;eACtB,kBAAC,GAAD;MAAY;MAAM,MAAK;MAAK,eAAA;MAAc,CAAA;KACrC,CAAA;IAER,KAAS,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAe;KAAa,CAAA;IAC9D,kBAAC,QAAD;KAAM,WAAW,EAAO;eACtB,kBAAC,GAAD;MAAM,MAAM,IAAO,IAAQ;MAAS,MAAK;MAAK,eAAA;MAAc,CAAA;KACvD,CAAA;IACA;OAET,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACG,KACC,kBAAC,QAAD;IAAM,WAAW,EAAO;cACtB,kBAAC,GAAD;KAAY;KAAM,MAAK;KAAK,eAAA;KAAc,CAAA;IACrC,CAAA,EAER,KAAS,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAe;IAAa,CAAA,CAC1D;OAIV,kBAAC,OAAD;GACE,IAAI;GACJ,WAAW,CACT,EAAO,aACN,IAAuC,OAA9B,EAAO,qBAClB,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;GACZ,eAAa,CAAC,KAAU,KAAA;aAExB,kBAAC,OAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,MAAD;KAAI,MAAK;KAAO,WAAW,EAAO;KAC/B;KACE,CAAA;IACD,CAAA;GACF,CAAA,CACE;;EAGf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Sidebar/Sidebar.cjs`),t=require(`./Sidebar/SidebarSection.cjs`),n=require(`./Sidebar/SidebarItem.cjs`);exports.Sidebar=e.Sidebar,exports.SidebarCollapsedContext=e.SidebarCollapsedContext,exports.SidebarItem=n.SidebarItem,exports.SidebarSection=t.SidebarSection,exports.useSidebarCollapsed=e.useSidebarCollapsed;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Sidebar as e, SidebarCollapsedContext as t, useSidebarCollapsed as n } from "./Sidebar/Sidebar.js";
|
|
2
|
+
import { SidebarSection as r } from "./Sidebar/SidebarSection.js";
|
|
3
|
+
import { SidebarItem as i } from "./Sidebar/SidebarItem.js";
|
|
4
|
+
export { e as Sidebar, t as SidebarCollapsedContext, i as SidebarItem, r as SidebarSection, n as useSidebarCollapsed };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./Slider.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r(e,t,n){return Math.min(n,Math.max(t,e))}function i(e,t,n,r){return parseFloat((Math.round((e-t)/n)*n+t).toFixed(r))}function a(e){let t=e.toString(),n=t.indexOf(`.`);return n===-1?0:t.length-n-1}function o({value:o,onChange:s,min:c=0,max:l=100,step:u=1,disabled:d=!1,marks:f,className:p,"aria-label":m,"aria-labelledby":h,"aria-describedby":g,..._}){let v=(0,t.useRef)(null),y=a(u),b=(r(o,c,l)-c)/(l-c)*100,x=(0,t.useCallback)(e=>{if(!v.current)return;let{left:t,width:n}=v.current.getBoundingClientRect();s(r(i((e-t)/n*(l-c)+c,c,u,y),c,l))},[c,l,u,y,s]),S=(0,t.useCallback)(e=>{d||(e.currentTarget.setPointerCapture(e.pointerId),x(e.clientX))},[d,x]),C=(0,t.useCallback)(e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&x(e.clientX)},[x]),w=(0,t.useCallback)(e=>{let t=t=>{e.preventDefault(),s(r(i(t,c,u,y),c,l))};switch(e.key){case`ArrowRight`:case`ArrowUp`:t(o+u);break;case`ArrowLeft`:case`ArrowDown`:t(o-u);break;case`PageUp`:t(o+u*10);break;case`PageDown`:t(o-u*10);break;case`Home`:t(c);break;case`End`:t(l);break}},[o,u,c,l,y,s]),T=f&&f.length>0,E=T&&f.some(e=>e.label);return(0,n.jsxs)(`div`,{className:[e.default.wrapper,E?e.default.hasLabels:null,p].filter(Boolean).join(` `),..._,children:[(0,n.jsxs)(`div`,{ref:v,role:`slider`,tabIndex:d?-1:0,"aria-valuemin":c,"aria-valuemax":l,"aria-valuenow":o,"aria-label":m,"aria-labelledby":h,"aria-describedby":g,"aria-disabled":d||void 0,className:[e.default.track,d?e.default.disabled:null].filter(Boolean).join(` `),onPointerDown:S,onPointerMove:C,onKeyDown:d?void 0:w,children:[(0,n.jsx)(`div`,{className:e.default.fill,style:{width:`${b}%`}}),(0,n.jsx)(`div`,{className:e.default.thumb,style:{left:`${b}%`},"aria-hidden":`true`}),T&&f.map(t=>{let i=(r(t.value,c,l)-c)/(l-c)*100;return(0,n.jsx)(`div`,{className:e.default.tick,style:{left:`${i}%`},"aria-hidden":`true`},t.value)})]}),E&&(0,n.jsx)(`div`,{className:e.default.labels,"aria-hidden":`true`,children:f.map(t=>{let i=(r(t.value,c,l)-c)/(l-c)*100;return(0,n.jsx)(`span`,{className:e.default.markLabel,style:{left:`${i}%`},children:t.label},t.value)})})]})}exports.Slider=o;
|
|
2
|
+
//# sourceMappingURL=Slider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.cjs","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n type PointerEvent,\n type KeyboardEvent,\n type HTMLAttributes,\n} from \"react\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current value. Must be between `min` and `max`. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum value. Defaults to `0`. */\n min?: number;\n /** Maximum value. Defaults to `100`. */\n max?: number;\n /**\n * Granularity of each step.\n * - Arrow keys move by one step.\n * - Page Up/Down move by 10 steps.\n * Defaults to `1`.\n */\n step?: number;\n /** Disables the control. */\n disabled?: boolean;\n /**\n * Marks to display along the track.\n * Each mark can have an optional label rendered below the track.\n */\n marks?: Array<{ value: number; label?: string }>;\n /** Accessible label. Required when no visible `<label>` is present. */\n \"aria-label\"?: string;\n /** Associates the control with a visible label element. */\n \"aria-labelledby\"?: string;\n /** `id` of an element that describes the current value (e.g. a live region). */\n \"aria-describedby\"?: string;\n}\n\nfunction clamp(v: number, min: number, max: number) {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction snapToStep(v: number, min: number, step: number, decimals: number) {\n return parseFloat((Math.round((v - min) / step) * step + min).toFixed(decimals));\n}\n\nfunction countDecimals(n: number) {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\n/**\n * Draggable range slider following the Adwaita `GtkScale` pattern.\n *\n * - Pointer (mouse / touch / pen) drag to set value continuously.\n * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.\n * - Optional tick marks with labels.\n * - Fills the track from the left up to the thumb (accent colour).\n *\n * @see https://developer.gnome.org/hig/patterns/controls/sliders.html\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n marks,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const dp = countDecimals(step);\n\n const pct = ((clamp(value, min, max) - min) / (max - min)) * 100;\n\n const setFromX = useCallback(\n (clientX: number) => {\n if (!trackRef.current) return;\n const { left, width } = trackRef.current.getBoundingClientRect();\n const raw = ((clientX - left) / width) * (max - min) + min;\n onChange(clamp(snapToStep(raw, min, step, dp), min, max));\n },\n [min, max, step, dp, onChange]\n );\n\n // Pointer drag — capture on the thumb, move anywhere\n const handlePointerDown = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromX(e.clientX);\n },\n [disabled, setFromX]\n );\n\n const handlePointerMove = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (!e.currentTarget.hasPointerCapture(e.pointerId)) return;\n setFromX(e.clientX);\n },\n [setFromX]\n );\n\n // Keyboard\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n const set = (next: number) => {\n e.preventDefault();\n onChange(clamp(snapToStep(next, min, step, dp), min, max));\n };\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n set(value + step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n set(value - step);\n break;\n case \"PageUp\":\n set(value + step * 10);\n break;\n case \"PageDown\":\n set(value - step * 10);\n break;\n case \"Home\":\n set(min);\n break;\n case \"End\":\n set(max);\n break;\n }\n },\n [value, step, min, max, dp, onChange]\n );\n\n const hasMarks = marks && marks.length > 0;\n const hasLabels = hasMarks && marks.some((m) => m.label);\n\n return (\n <div\n className={[\n styles.wrapper,\n hasLabels ? styles.hasLabels : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {/* Accessible slider */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={disabled || undefined}\n className={[styles.track, disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(\" \")}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={disabled ? undefined : handleKeyDown}\n >\n {/* Filled portion */}\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n\n {/* Thumb */}\n <div\n className={styles.thumb}\n style={{ left: `${pct}%` }}\n aria-hidden=\"true\"\n />\n\n {/* Tick marks */}\n {hasMarks &&\n marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <div\n key={m.value}\n className={styles.tick}\n style={{ left: `${mPct}%` }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n\n {/* Mark labels */}\n {hasLabels && (\n <div className={styles.labels} aria-hidden=\"true\">\n {marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <span\n key={m.value}\n className={styles.markLabel}\n style={{ left: `${mPct}%` }}\n >\n {m.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"iGAyCA,SAAS,EAAM,EAAW,EAAa,EAAa,CAClD,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,EAAE,CAAC,CAGxC,SAAS,EAAW,EAAW,EAAa,EAAc,EAAkB,CAC1E,OAAO,YAAY,KAAK,OAAO,EAAI,GAAO,EAAK,CAAG,EAAO,GAAK,QAAQ,EAAS,CAAC,CAGlF,SAAS,EAAc,EAAW,CAChC,IAAM,EAAI,EAAE,UAAU,CAChB,EAAM,EAAE,QAAQ,IAAI,CAC1B,OAAO,IAAQ,GAAK,EAAI,EAAE,OAAS,EAAM,EAa3C,SAAgB,EAAO,CACrB,QACA,WACA,MAAM,EACN,MAAM,IACN,OAAO,EACP,WAAW,GACX,QACA,YACA,aAAc,EACd,kBAAmB,EACnB,mBAAoB,EACpB,GAAG,GACW,CACd,IAAM,GAAA,EAAA,EAAA,QAAkC,KAAK,CACvC,EAAK,EAAc,EAAK,CAExB,GAAQ,EAAM,EAAO,EAAK,EAAI,CAAG,IAAQ,EAAM,GAAQ,IAEvD,GAAA,EAAA,EAAA,aACH,GAAoB,CACnB,GAAI,CAAC,EAAS,QAAS,OACvB,GAAM,CAAE,OAAM,SAAU,EAAS,QAAQ,uBAAuB,CAEhE,EAAS,EAAM,GADD,EAAU,GAAQ,GAAU,EAAM,GAAO,EACxB,EAAK,EAAM,EAAG,CAAE,EAAK,EAAI,CAAC,EAE3D,CAAC,EAAK,EAAK,EAAM,EAAI,EAAS,CAC/B,CAGK,GAAA,EAAA,EAAA,aACH,GAAoC,CAC/B,IACJ,EAAE,cAAc,kBAAkB,EAAE,UAAU,CAC9C,EAAS,EAAE,QAAQ,GAErB,CAAC,EAAU,EAAS,CACrB,CAEK,GAAA,EAAA,EAAA,aACH,GAAoC,CAC9B,EAAE,cAAc,kBAAkB,EAAE,UAAU,EACnD,EAAS,EAAE,QAAQ,EAErB,CAAC,EAAS,CACX,CAGK,GAAA,EAAA,EAAA,aACH,GAAqC,CACpC,IAAM,EAAO,GAAiB,CAC5B,EAAE,gBAAgB,CAClB,EAAS,EAAM,EAAW,EAAM,EAAK,EAAM,EAAG,CAAE,EAAK,EAAI,CAAC,EAE5D,OAAQ,EAAE,IAAV,CACE,IAAK,aACL,IAAK,UACH,EAAI,EAAQ,EAAK,CACjB,MACF,IAAK,YACL,IAAK,YACH,EAAI,EAAQ,EAAK,CACjB,MACF,IAAK,SACH,EAAI,EAAQ,EAAO,GAAG,CACtB,MACF,IAAK,WACH,EAAI,EAAQ,EAAO,GAAG,CACtB,MACF,IAAK,OACH,EAAI,EAAI,CACR,MACF,IAAK,MACH,EAAI,EAAI,CACR,QAGN,CAAC,EAAO,EAAM,EAAK,EAAK,EAAI,EAAS,CACtC,CAEK,EAAa,GAAS,EAAM,OAAS,EACrC,EAAa,GAAY,EAAM,KAAM,GAAM,EAAE,MAAM,CAEzD,OACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,EAAA,QAAO,QACP,EAAY,EAAA,QAAO,UAAY,KAC/B,EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,GAAI,WARN,EAWE,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACL,KAAK,SACL,SAAU,EAAW,GAAK,EAC1B,gBAAe,EACf,gBAAe,EACf,gBAAe,EACf,aAAY,EACZ,kBAAiB,EACjB,mBAAkB,EAClB,gBAAe,GAAY,IAAA,GAC3B,UAAW,CAAC,EAAA,QAAO,MAAO,EAAW,EAAA,QAAO,SAAW,KAAK,CACzD,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAe,EACf,cAAe,EACf,UAAW,EAAW,IAAA,GAAY,WAhBpC,EAmBE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAM,MAAO,CAAE,MAAO,GAAG,EAAI,GAAI,CAAI,CAAA,EAG5D,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAA,QAAO,MAClB,MAAO,CAAE,KAAM,GAAG,EAAI,GAAI,CAC1B,cAAY,OACZ,CAAA,CAGD,GACC,EAAM,IAAK,GAAM,CACf,IAAM,GAAS,EAAM,EAAE,MAAO,EAAK,EAAI,CAAG,IAAQ,EAAM,GAAQ,IAChE,OACE,EAAA,EAAA,KAAC,MAAD,CAEE,UAAW,EAAA,QAAO,KAClB,MAAO,CAAE,KAAM,GAAG,EAAK,GAAI,CAC3B,cAAY,OACZ,CAJK,EAAE,MAIP,EAEJ,CACA,GAGL,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAQ,cAAY,gBACxC,EAAM,IAAK,GAAM,CAChB,IAAM,GAAS,EAAM,EAAE,MAAO,EAAK,EAAI,CAAG,IAAQ,EAAM,GAAQ,IAChE,OACE,EAAA,EAAA,KAAC,OAAD,CAEE,UAAW,EAAA,QAAO,UAClB,MAAO,CAAE,KAAM,GAAG,EAAK,GAAI,UAE1B,EAAE,MACE,CALA,EAAE,MAKF,EAET,CACE,CAAA,CAEJ"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import e from "./Slider.module.css.js";
|
|
2
|
+
import { useCallback as t, useRef as n } from "react";
|
|
3
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/Slider/Slider.tsx
|
|
5
|
+
function a(e, t, n) {
|
|
6
|
+
return Math.min(n, Math.max(t, e));
|
|
7
|
+
}
|
|
8
|
+
function o(e, t, n, r) {
|
|
9
|
+
return parseFloat((Math.round((e - t) / n) * n + t).toFixed(r));
|
|
10
|
+
}
|
|
11
|
+
function s(e) {
|
|
12
|
+
let t = e.toString(), n = t.indexOf(".");
|
|
13
|
+
return n === -1 ? 0 : t.length - n - 1;
|
|
14
|
+
}
|
|
15
|
+
function c({ value: c, onChange: l, min: u = 0, max: d = 100, step: f = 1, disabled: p = !1, marks: m, className: h, "aria-label": g, "aria-labelledby": _, "aria-describedby": v, ...y }) {
|
|
16
|
+
let b = n(null), x = s(f), S = (a(c, u, d) - u) / (d - u) * 100, C = t((e) => {
|
|
17
|
+
if (!b.current) return;
|
|
18
|
+
let { left: t, width: n } = b.current.getBoundingClientRect();
|
|
19
|
+
l(a(o((e - t) / n * (d - u) + u, u, f, x), u, d));
|
|
20
|
+
}, [
|
|
21
|
+
u,
|
|
22
|
+
d,
|
|
23
|
+
f,
|
|
24
|
+
x,
|
|
25
|
+
l
|
|
26
|
+
]), w = t((e) => {
|
|
27
|
+
p || (e.currentTarget.setPointerCapture(e.pointerId), C(e.clientX));
|
|
28
|
+
}, [p, C]), T = t((e) => {
|
|
29
|
+
e.currentTarget.hasPointerCapture(e.pointerId) && C(e.clientX);
|
|
30
|
+
}, [C]), E = t((e) => {
|
|
31
|
+
let t = (t) => {
|
|
32
|
+
e.preventDefault(), l(a(o(t, u, f, x), u, d));
|
|
33
|
+
};
|
|
34
|
+
switch (e.key) {
|
|
35
|
+
case "ArrowRight":
|
|
36
|
+
case "ArrowUp":
|
|
37
|
+
t(c + f);
|
|
38
|
+
break;
|
|
39
|
+
case "ArrowLeft":
|
|
40
|
+
case "ArrowDown":
|
|
41
|
+
t(c - f);
|
|
42
|
+
break;
|
|
43
|
+
case "PageUp":
|
|
44
|
+
t(c + f * 10);
|
|
45
|
+
break;
|
|
46
|
+
case "PageDown":
|
|
47
|
+
t(c - f * 10);
|
|
48
|
+
break;
|
|
49
|
+
case "Home":
|
|
50
|
+
t(u);
|
|
51
|
+
break;
|
|
52
|
+
case "End":
|
|
53
|
+
t(d);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}, [
|
|
57
|
+
c,
|
|
58
|
+
f,
|
|
59
|
+
u,
|
|
60
|
+
d,
|
|
61
|
+
x,
|
|
62
|
+
l
|
|
63
|
+
]), D = m && m.length > 0, O = D && m.some((e) => e.label);
|
|
64
|
+
return /* @__PURE__ */ i("div", {
|
|
65
|
+
className: [
|
|
66
|
+
e.wrapper,
|
|
67
|
+
O ? e.hasLabels : null,
|
|
68
|
+
h
|
|
69
|
+
].filter(Boolean).join(" "),
|
|
70
|
+
...y,
|
|
71
|
+
children: [/* @__PURE__ */ i("div", {
|
|
72
|
+
ref: b,
|
|
73
|
+
role: "slider",
|
|
74
|
+
tabIndex: p ? -1 : 0,
|
|
75
|
+
"aria-valuemin": u,
|
|
76
|
+
"aria-valuemax": d,
|
|
77
|
+
"aria-valuenow": c,
|
|
78
|
+
"aria-label": g,
|
|
79
|
+
"aria-labelledby": _,
|
|
80
|
+
"aria-describedby": v,
|
|
81
|
+
"aria-disabled": p || void 0,
|
|
82
|
+
className: [e.track, p ? e.disabled : null].filter(Boolean).join(" "),
|
|
83
|
+
onPointerDown: w,
|
|
84
|
+
onPointerMove: T,
|
|
85
|
+
onKeyDown: p ? void 0 : E,
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ r("div", {
|
|
88
|
+
className: e.fill,
|
|
89
|
+
style: { width: `${S}%` }
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ r("div", {
|
|
92
|
+
className: e.thumb,
|
|
93
|
+
style: { left: `${S}%` },
|
|
94
|
+
"aria-hidden": "true"
|
|
95
|
+
}),
|
|
96
|
+
D && m.map((t) => {
|
|
97
|
+
let n = (a(t.value, u, d) - u) / (d - u) * 100;
|
|
98
|
+
return /* @__PURE__ */ r("div", {
|
|
99
|
+
className: e.tick,
|
|
100
|
+
style: { left: `${n}%` },
|
|
101
|
+
"aria-hidden": "true"
|
|
102
|
+
}, t.value);
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
}), O && /* @__PURE__ */ r("div", {
|
|
106
|
+
className: e.labels,
|
|
107
|
+
"aria-hidden": "true",
|
|
108
|
+
children: m.map((t) => {
|
|
109
|
+
let n = (a(t.value, u, d) - u) / (d - u) * 100;
|
|
110
|
+
return /* @__PURE__ */ r("span", {
|
|
111
|
+
className: e.markLabel,
|
|
112
|
+
style: { left: `${n}%` },
|
|
113
|
+
children: t.label
|
|
114
|
+
}, t.value);
|
|
115
|
+
})
|
|
116
|
+
})]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { c as Slider };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=Slider.js.map
|