@koobiq/react-components 0.0.1-beta.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alert/Alert.js +36 -21
- package/dist/components/Alert/components/AlertIcon/AlertIcon.js +3 -3
- package/dist/components/Alert/components/AlertIcon/types.d.ts +1 -1
- package/dist/components/Alert/types.d.ts +22 -6
- package/dist/components/AnimatedIcon/types.d.ts +1 -1
- package/dist/components/Backdrop/Backdrop.js +10 -2
- package/dist/components/Backdrop/types.d.ts +12 -2
- package/dist/components/Badge/Badge.js +34 -23
- package/dist/components/Badge/types.d.ts +12 -4
- package/dist/components/Button/Button.js +42 -26
- package/dist/components/Button/Button.module.css.js +5 -2
- package/dist/components/Button/types.d.ts +25 -21
- package/dist/components/ButtonToggleGroup/ButtonToggleGroup.d.ts +2 -0
- package/dist/components/ButtonToggleGroup/ButtonToggleGroup.js +130 -0
- package/dist/components/ButtonToggleGroup/ButtonToggleGroup.module.css.js +17 -0
- package/dist/components/ButtonToggleGroup/ButtonToggleGroupContext.d.ts +7 -0
- package/dist/components/ButtonToggleGroup/ButtonToggleGroupContext.js +12 -0
- package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.d.ts +2 -0
- package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.js +90 -0
- package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.module.css.js +32 -0
- package/dist/components/ButtonToggleGroup/components/ButtonToggle/index.d.ts +2 -0
- package/dist/components/ButtonToggleGroup/components/ButtonToggle/types.d.ts +27 -0
- package/dist/components/ButtonToggleGroup/components/index.d.ts +1 -0
- package/dist/components/ButtonToggleGroup/index.d.ts +3 -0
- package/dist/components/ButtonToggleGroup/reducer.d.ts +23 -0
- package/dist/components/ButtonToggleGroup/reducer.js +25 -0
- package/dist/components/ButtonToggleGroup/types.d.ts +38 -0
- package/dist/components/ButtonToggleGroup/utils.d.ts +3 -0
- package/dist/components/ButtonToggleGroup/utils.js +19 -0
- package/dist/components/Calendar/Calendar.d.ts +2 -0
- package/dist/components/Calendar/Calendar.js +42 -0
- package/dist/components/Calendar/Calendar.module.css.js +14 -0
- package/dist/components/Calendar/components/CalendarCell/CalendarCell.d.ts +7 -0
- package/dist/components/Calendar/components/CalendarCell/CalendarCell.js +51 -0
- package/dist/components/Calendar/components/CalendarCell/CalendarCell.module.css.js +32 -0
- package/dist/components/Calendar/components/CalendarCell/index.d.ts +1 -0
- package/dist/components/Calendar/components/CalendarGrid/CalendarGrid.d.ts +6 -0
- package/dist/components/Calendar/components/CalendarGrid/CalendarGrid.js +28 -0
- package/dist/components/Calendar/components/CalendarGrid/CalendarGrid.module.css.js +14 -0
- package/dist/components/Calendar/components/CalendarGrid/index.d.ts +1 -0
- package/dist/components/Calendar/components/CalendarHeader/CalendarHeader.d.ts +8 -0
- package/dist/components/Calendar/components/CalendarHeader/CalendarHeader.js +54 -0
- package/dist/components/Calendar/components/CalendarHeader/CalendarHeader.module.css.js +11 -0
- package/dist/components/Calendar/components/CalendarHeader/index.d.ts +1 -0
- package/dist/components/Calendar/components/CalendarMonthDropdown/CalendarMonthDropdown.d.ts +6 -0
- package/dist/components/Calendar/components/CalendarMonthDropdown/CalendarMonthDropdown.js +101 -0
- package/dist/components/Calendar/components/CalendarMonthDropdown/index.d.ts +1 -0
- package/dist/components/Calendar/components/CalendarYearDropdown/CalendarYearDropdown.d.ts +6 -0
- package/dist/components/Calendar/components/CalendarYearDropdown/CalendarYearDropdown.js +76 -0
- package/dist/components/Calendar/components/CalendarYearDropdown/index.d.ts +1 -0
- package/dist/components/Calendar/components/index.d.ts +2 -0
- package/dist/components/Calendar/index.d.ts +2 -0
- package/dist/components/Calendar/intl.json.js +7 -0
- package/dist/components/Calendar/types.d.ts +13 -0
- package/dist/components/Checkbox/Checkbox.d.ts +15 -5
- package/dist/components/Checkbox/Checkbox.js +81 -17
- package/dist/components/Checkbox/Checkbox.module.css.js +6 -6
- package/dist/components/Checkbox/types.d.ts +66 -10
- package/dist/components/Checkbox/types.js +1 -0
- package/dist/components/Collections/Cell.d.ts +28 -0
- package/dist/components/Collections/Cell.js +10 -0
- package/dist/components/Collections/Column.d.ts +28 -0
- package/dist/components/Collections/Column.js +10 -0
- package/dist/components/Collections/Divider.d.ts +19 -0
- package/dist/components/Collections/Divider.js +14 -0
- package/dist/components/Collections/Header.d.ts +20 -0
- package/dist/components/Collections/Header.js +16 -0
- package/dist/components/Collections/Item.d.ts +14 -0
- package/dist/components/Collections/Item.js +10 -0
- package/dist/components/Collections/Row.d.ts +14 -0
- package/dist/components/Collections/Row.js +10 -0
- package/dist/components/{List/ListSection.d.ts → Collections/Section.d.ts} +6 -6
- package/dist/components/Collections/Section.js +10 -0
- package/dist/components/Collections/TableBody.d.ts +6 -0
- package/dist/components/Collections/TableBody.js +10 -0
- package/dist/components/Collections/TableHeader.d.ts +6 -0
- package/dist/components/Collections/TableHeader.js +10 -0
- package/dist/components/Collections/index.d.ts +9 -0
- package/dist/components/Container/Container.js +13 -2
- package/dist/components/Container/types.d.ts +16 -6
- package/dist/components/DateInput/DateInput.d.ts +5 -0
- package/dist/components/DateInput/DateInput.js +105 -0
- package/dist/components/DateInput/DateInput.module.css.js +8 -0
- package/dist/components/DateInput/index.d.ts +2 -0
- package/dist/components/DateInput/types.d.ts +47 -0
- package/dist/components/DateInput/types.js +4 -0
- package/dist/components/DatePicker/DatePicker.d.ts +5 -0
- package/dist/components/DatePicker/DatePicker.js +101 -0
- package/dist/components/DatePicker/DatePicker.module.css.js +8 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker/types.d.ts +34 -0
- package/dist/components/DateSegment/DateSegment.d.ts +7 -0
- package/dist/components/DateSegment/DateSegment.js +34 -0
- package/dist/components/DateSegment/DateSegment.module.css.js +17 -0
- package/dist/components/DateSegment/index.d.ts +1 -0
- package/dist/components/DateSegment/intl.json.js +7 -0
- package/dist/components/DateSegment/utils.d.ts +3 -0
- package/dist/components/DateSegment/utils.js +6 -0
- package/dist/components/Dialog/Dialog.d.ts +9 -1
- package/dist/components/Dialog/Dialog.js +31 -17
- package/dist/components/Dialog/components/DialogBody.d.ts +13 -0
- package/dist/components/Dialog/components/{DialogContent.js → DialogBody.js} +9 -8
- package/dist/components/Dialog/components/DialogCloseButton.d.ts +20 -1
- package/dist/components/Dialog/components/DialogCloseButton.js +4 -7
- package/dist/components/Dialog/components/index.d.ts +1 -1
- package/dist/components/Dialog/index.d.ts +0 -1
- package/dist/components/Dialog/types.d.ts +1 -1
- package/dist/components/Divider/Divider.d.ts +4 -0
- package/dist/components/Divider/Divider.js +47 -0
- package/dist/components/Divider/Divider.module.css.js +29 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Divider/types.d.ts +22 -0
- package/dist/components/Divider/types.js +4 -0
- package/dist/components/FieldComponents/FieldAddon/FieldAddon.d.ts +2 -1
- package/dist/components/FieldComponents/FieldAddon/FieldAddon.js +19 -2
- package/dist/components/FieldComponents/FieldAddon/FieldAddon.module.css.js +6 -3
- package/dist/components/FieldComponents/FieldControl/FieldControl.d.ts +6 -8
- package/dist/components/FieldComponents/FieldControl/FieldControl.js +5 -8
- package/dist/components/FieldComponents/FieldError/FieldError.d.ts +1 -1
- package/dist/components/FieldComponents/FieldError/FieldError.js +1 -1
- package/dist/components/FieldComponents/FieldInput/FieldInput.d.ts +3 -3
- package/dist/components/FieldComponents/FieldInput/FieldInput.js +4 -4
- package/dist/components/FieldComponents/FieldInput/FieldInput.module.css.js +3 -3
- package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.d.ts +12 -0
- package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.js +32 -0
- package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.module.css.js +20 -0
- package/dist/components/FieldComponents/FieldInputDate/index.d.ts +1 -0
- package/dist/components/FieldComponents/FieldInputGroup/FieldInputGroup.d.ts +2 -2
- package/dist/components/FieldComponents/FieldInputGroup/FieldInputGroup.js +54 -32
- package/dist/components/FieldComponents/FieldInputGroup/FieldInputGroupContext.d.ts +4 -3
- package/dist/components/FieldComponents/FieldLabel/FieldLabel.d.ts +2 -2
- package/dist/components/FieldComponents/FieldLabel/FieldLabel.js +3 -3
- package/dist/components/FieldComponents/FieldSelect/FieldSelect.d.ts +13 -0
- package/dist/components/FieldComponents/FieldSelect/FieldSelect.js +37 -0
- package/dist/components/FieldComponents/FieldSelect/FieldSelect.module.css.js +20 -0
- package/dist/components/FieldComponents/FieldSelect/index.d.ts +1 -0
- package/dist/components/FieldComponents/index.d.ts +2 -1
- package/dist/components/FormControlLabel/types.d.ts +5 -5
- package/dist/components/Grid/Grid.d.ts +8 -2
- package/dist/components/Grid/Grid.js +5 -2
- package/dist/components/Grid/types.d.ts +2 -2
- package/dist/components/IconButton/IconButton.js +38 -22
- package/dist/components/IconButton/index.d.ts +2 -2
- package/dist/components/IconButton/types.d.ts +30 -19
- package/dist/components/Input/Input.d.ts +24 -13
- package/dist/components/Input/Input.js +60 -13
- package/dist/components/Input/types.d.ts +51 -29
- package/dist/components/InputNumber/InputNumber.d.ts +24 -12
- package/dist/components/InputNumber/InputNumber.js +77 -26
- package/dist/components/InputNumber/components/InputNumberCounterControls.js +12 -12
- package/dist/components/InputNumber/components/InputNumberCounterControls.module.css.js +7 -4
- package/dist/components/InputNumber/types.d.ts +51 -28
- package/dist/components/Link/Link.js +32 -10
- package/dist/components/Link/Link.module.css.js +4 -4
- package/dist/components/Link/types.d.ts +38 -10
- package/dist/components/List/List.d.ts +17 -3
- package/dist/components/List/List.js +20 -8
- package/dist/components/List/List.module.css.js +0 -3
- package/dist/components/List/components/ListItemText/ListItemText.js +26 -0
- package/dist/components/List/components/ListItemText/ListItemText.module.css.js +11 -0
- package/dist/components/List/components/ListOption/ListOption.d.ts +5 -3
- package/dist/components/List/components/ListOption/ListOption.js +10 -15
- package/dist/components/List/components/ListSection/ListSection.d.ts +5 -3
- package/dist/components/List/components/ListSection/ListSection.js +1 -4
- package/dist/components/List/index.d.ts +2 -2
- package/dist/components/List/types.d.ts +5 -39
- package/dist/components/Menu/Menu.d.ts +15 -0
- package/dist/components/Menu/Menu.js +75 -0
- package/dist/components/Menu/Menu.module.css.js +8 -0
- package/dist/components/Menu/components/MenuHeader/MenuHeader.d.ts +5 -0
- package/dist/components/Menu/components/MenuHeader/MenuHeader.js +9 -0
- package/dist/components/Menu/components/MenuHeader/index.d.ts +1 -0
- package/dist/components/Menu/components/MenuInner/MenuInner.d.ts +6 -0
- package/dist/components/Menu/components/MenuInner/MenuInner.js +46 -0
- package/dist/components/Menu/components/MenuInner/MenuInner.module.css.js +11 -0
- package/dist/components/Menu/components/MenuInner/index.d.ts +1 -0
- package/dist/components/Menu/components/MenuItem/MenuItem.d.ts +7 -0
- package/dist/components/Menu/components/MenuItem/MenuItem.js +36 -0
- package/dist/components/Menu/components/MenuItem/index.d.ts +1 -0
- package/dist/components/Menu/components/MenuSection/MenuSection.d.ts +7 -0
- package/dist/components/Menu/components/MenuSection/MenuSection.js +30 -0
- package/dist/components/Menu/components/MenuSection/MenuSection.module.css.js +11 -0
- package/dist/components/Menu/components/MenuSection/index.d.ts +1 -0
- package/dist/components/Menu/components/index.d.ts +1 -0
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/Menu/types.d.ts +49 -0
- package/dist/components/Modal/Modal.d.ts +33 -2
- package/dist/components/Modal/Modal.js +23 -16
- package/dist/components/Modal/index.d.ts +15 -2
- package/dist/components/Modal/index.js +9 -0
- package/dist/components/Modal/types.d.ts +14 -5
- package/dist/components/Popover/Popover.d.ts +42 -2
- package/dist/components/Popover/Popover.js +23 -141
- package/dist/components/Popover/Popover.module.css.js +3 -0
- package/dist/components/Popover/PopoverInner.d.ts +3 -0
- package/dist/components/Popover/PopoverInner.js +143 -0
- package/dist/components/Popover/index.d.ts +15 -2
- package/dist/components/Popover/index.js +9 -0
- package/dist/components/Popover/types.d.ts +35 -10
- package/dist/components/Popover/types.js +9 -1
- package/dist/components/ProgressBar/ProgressBar.js +5 -5
- package/dist/components/ProgressBar/types.d.ts +10 -22
- package/dist/components/ProgressSpinner/ProgressSpinner.js +5 -5
- package/dist/components/ProgressSpinner/types.d.ts +12 -24
- package/dist/components/Provider/Provider.d.ts +1 -1
- package/dist/components/Provider/Provider.js +8 -4
- package/dist/components/Provider/types.d.ts +3 -1
- package/dist/components/RadioGroup/RadioGroup.js +42 -2
- package/dist/components/RadioGroup/components/Radio/Radio.d.ts +7 -4
- package/dist/components/RadioGroup/components/Radio/Radio.js +35 -10
- package/dist/components/RadioGroup/components/Radio/Radio.module.css.js +6 -6
- package/dist/components/RadioGroup/components/Radio/types.d.ts +25 -10
- package/dist/components/RadioGroup/components/Radio/types.js +1 -0
- package/dist/components/RadioGroup/types.d.ts +44 -17
- package/dist/components/Select/Select.d.ts +11 -0
- package/dist/components/Select/Select.js +204 -0
- package/dist/components/Select/Select.module.css.js +20 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/types.d.ts +86 -0
- package/dist/components/SidePanel/SidePanel.d.ts +35 -2
- package/dist/components/SidePanel/SidePanel.js +31 -18
- package/dist/components/SidePanel/SidePanel.module.css.js +7 -1
- package/dist/components/SidePanel/index.d.ts +15 -2
- package/dist/components/SidePanel/index.js +9 -0
- package/dist/components/SidePanel/types.d.ts +26 -8
- package/dist/components/SidePanel/types.js +2 -0
- package/dist/components/SkeletonBlock/SkeletonBlock.d.ts +3 -1
- package/dist/components/SkeletonTypography/SkeletonTypography.d.ts +3 -1
- package/dist/components/SkeletonTypography/types.d.ts +2 -2
- package/dist/components/Table/Table.d.ts +12 -0
- package/dist/components/Table/Table.js +97 -0
- package/dist/components/Table/Table.module.css.js +11 -0
- package/dist/components/Table/components/TableCell/TableCell.d.ts +7 -0
- package/dist/components/Table/components/TableCell/TableCell.js +39 -0
- package/dist/components/Table/components/TableCell/TableCell.module.css.js +27 -0
- package/dist/components/Table/components/TableCell/index.d.ts +1 -0
- package/dist/components/Table/components/TableCheckboxCell/TableCheckboxCell.d.ts +7 -0
- package/dist/components/Table/components/TableCheckboxCell/TableCheckboxCell.js +21 -0
- package/dist/components/Table/components/TableCheckboxCell/index.d.ts +1 -0
- package/dist/components/Table/components/TableColumnHeader/TableColumnHeader.d.ts +7 -0
- package/dist/components/Table/components/TableColumnHeader/TableColumnHeader.js +46 -0
- package/dist/components/Table/components/TableColumnHeader/TableColumnHeader.module.css.js +27 -0
- package/dist/components/Table/components/TableColumnHeader/index.d.ts +1 -0
- package/dist/components/Table/components/TableHeaderRow/TableHeaderRow.d.ts +9 -0
- package/dist/components/Table/components/TableHeaderRow/TableHeaderRow.js +16 -0
- package/dist/components/Table/components/TableHeaderRow/index.d.ts +1 -0
- package/dist/components/Table/components/TableRow/TableRow.d.ts +9 -0
- package/dist/components/Table/components/TableRow/TableRow.js +46 -0
- package/dist/components/Table/components/TableRow/TableRow.module.css.js +23 -0
- package/dist/components/Table/components/TableRow/index.d.ts +1 -0
- package/dist/components/Table/components/TableRowGroup/TableRowGroup.d.ts +6 -0
- package/dist/components/Table/components/TableRowGroup/TableRowGroup.js +15 -0
- package/dist/components/Table/components/TableRowGroup/index.d.ts +1 -0
- package/dist/components/Table/components/TableSelectAllCell/TableSelectAllCell.d.ts +7 -0
- package/dist/components/Table/components/TableSelectAllCell/TableSelectAllCell.js +22 -0
- package/dist/components/Table/components/TableSelectAllCell/index.d.ts +1 -0
- package/dist/components/Table/components/index.d.ts +7 -0
- package/dist/components/Table/index.d.ts +1 -0
- package/dist/components/Table/types.d.ts +49 -0
- package/dist/components/Table/utils.d.ts +2 -0
- package/dist/components/Table/utils.js +8 -0
- package/dist/components/TagGroup/Tag.d.ts +24 -0
- package/dist/components/TagGroup/Tag.js +10 -0
- package/dist/components/TagGroup/TagGroup.d.ts +2 -0
- package/dist/components/TagGroup/TagGroup.js +23 -0
- package/dist/components/TagGroup/TagGroup.module.css.js +8 -0
- package/dist/components/TagGroup/components/TagInner/TagInner.d.ts +11 -0
- package/dist/components/TagGroup/components/TagInner/TagInner.js +86 -0
- package/dist/components/TagGroup/components/TagInner/TagInner.module.css.js +30 -0
- package/dist/components/TagGroup/components/TagInner/index.d.ts +1 -0
- package/dist/components/TagGroup/components/TagInner/utils.d.ts +3 -0
- package/dist/components/TagGroup/components/TagInner/utils.js +9 -0
- package/dist/components/TagGroup/components/index.d.ts +1 -0
- package/dist/components/TagGroup/index.d.ts +3 -0
- package/dist/components/TagGroup/intl.json.js +7 -0
- package/dist/components/TagGroup/types.d.ts +26 -0
- package/dist/components/TagGroup/types.js +9 -0
- package/dist/components/Textarea/Textarea.d.ts +12 -9
- package/dist/components/Textarea/Textarea.js +48 -3
- package/dist/components/Textarea/components/TextareaContextConsumer/TextareaContextConsumer.d.ts +4 -4
- package/dist/components/Textarea/components/TextareaContextConsumer/TextareaContextConsumer.js +15 -12
- package/dist/components/Textarea/types.d.ts +51 -28
- package/dist/components/Textarea/utils/useTextareaAutosize.d.ts +1 -1
- package/dist/components/Textarea/utils/useTextareaAutosize.js +2 -2
- package/dist/components/TimePicker/TimePicker.d.ts +5 -0
- package/dist/components/TimePicker/TimePicker.js +112 -0
- package/dist/components/TimePicker/TimePicker.module.css.js +11 -0
- package/dist/components/TimePicker/index.d.ts +2 -0
- package/dist/components/TimePicker/types.d.ts +46 -0
- package/dist/components/Toggle/Toggle.d.ts +13 -5
- package/dist/components/Toggle/Toggle.js +72 -11
- package/dist/components/Toggle/Toggle.module.css.js +6 -6
- package/dist/components/Toggle/types.d.ts +49 -8
- package/dist/components/Tooltip/Tooltip.d.ts +6 -5
- package/dist/components/Tooltip/Tooltip.js +40 -20
- package/dist/components/Tooltip/types.d.ts +26 -24
- package/dist/components/Typography/types.d.ts +10 -5
- package/dist/components/index.d.ts +12 -0
- package/dist/index.js +65 -26
- package/dist/style.css +1094 -229
- package/dist/styles/utility.d.ts +2 -0
- package/dist/styles/utility.js +3 -1
- package/dist/styles/utility.module.css.js +5 -1
- package/dist/types.d.ts +1 -0
- package/dist/utils/capitalizeFirstLetter/capitalizeFirstLetter.d.ts +2 -0
- package/dist/utils/capitalizeFirstLetter/capitalizeFirstLetter.js +6 -0
- package/dist/utils/capitalizeFirstLetter/index.d.ts +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +13 -7
- package/dist/components/Dialog/DialogContext.d.ts +0 -9
- package/dist/components/Dialog/DialogContext.js +0 -12
- package/dist/components/Dialog/components/DialogContent.d.ts +0 -12
- package/dist/components/FieldComponents/FieldNumberControl/FieldNumberControl.d.ts +0 -10
- package/dist/components/FieldComponents/FieldNumberControl/FieldNumberControl.js +0 -18
- package/dist/components/FieldComponents/FieldNumberControl/FieldNumberControl.module.css.js +0 -11
- package/dist/components/FieldComponents/FieldNumberControl/index.d.ts +0 -1
- package/dist/components/List/ListItem.d.ts +0 -11
- package/dist/components/List/ListItem.js +0 -11
- package/dist/components/List/ListSection.js +0 -11
- package/dist/components/List/components/ListOption/ListOption.module.css.js +0 -23
- package/dist/components/List/types.js +0 -4
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { deprecate } from "@koobiq/logger";
|
|
3
4
|
import { polymorphicForwardRef, clsx } from "@koobiq/react-core";
|
|
4
5
|
import { Link as Link$1 } from "@koobiq/react-primitives";
|
|
5
6
|
import s from "./Link.module.css.js";
|
|
6
7
|
const Link = polymorphicForwardRef((props, ref) => {
|
|
7
8
|
const {
|
|
8
9
|
variant = "text-normal",
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
isPseudo: isPseudoProp,
|
|
11
|
+
isDisabled: isDisabledProp,
|
|
12
|
+
allowVisited: allowVisitedProp,
|
|
13
|
+
visitable,
|
|
14
|
+
pseudo,
|
|
11
15
|
disabled,
|
|
12
16
|
as = "a",
|
|
13
17
|
startIcon,
|
|
@@ -16,24 +20,42 @@ const Link = polymorphicForwardRef((props, ref) => {
|
|
|
16
20
|
className,
|
|
17
21
|
...other
|
|
18
22
|
} = props;
|
|
23
|
+
const allowVisited = allowVisitedProp ?? visitable ?? false;
|
|
24
|
+
const isDisabled = isDisabledProp ?? disabled ?? false;
|
|
25
|
+
const isPseudo = isPseudoProp ?? pseudo ?? false;
|
|
19
26
|
const hasIcon = Boolean(startIcon || endIcon);
|
|
27
|
+
if (process.env.NODE_ENV !== "production" && "visitable" in props) {
|
|
28
|
+
deprecate(
|
|
29
|
+
'Link: the "visitable" prop is deprecated. Use "allowVisited" prop to replace it.'
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
if (process.env.NODE_ENV !== "production" && "pseudo" in props) {
|
|
33
|
+
deprecate(
|
|
34
|
+
'Link: the "pseudo" prop is deprecated. Use "isPseudo" prop to replace it.'
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
if (process.env.NODE_ENV !== "production" && "disabled" in props) {
|
|
38
|
+
deprecate(
|
|
39
|
+
'Link: the "disabled" prop is deprecated. Use "isDisabled" prop to replace it.'
|
|
40
|
+
);
|
|
41
|
+
}
|
|
20
42
|
const elementType = as !== "a" && as !== "button" ? `${as}` : void 0;
|
|
21
43
|
return /* @__PURE__ */ jsxs(
|
|
22
44
|
Link$1,
|
|
23
45
|
{
|
|
24
46
|
as,
|
|
25
|
-
|
|
47
|
+
isDisabled,
|
|
26
48
|
elementType,
|
|
27
|
-
...
|
|
28
|
-
className: ({
|
|
49
|
+
...isDisabled && { tabIndex: -1 },
|
|
50
|
+
className: ({ isHovered, isPressed, isFocusVisible }) => clsx(
|
|
29
51
|
s.base,
|
|
30
52
|
s[variant],
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
isPseudo && s.pseudo,
|
|
54
|
+
isHovered && s.hovered,
|
|
55
|
+
isPressed && s.pressed,
|
|
34
56
|
hasIcon && s.hasIcon,
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
allowVisited && s.allowVisited,
|
|
58
|
+
isFocusVisible && s.focusVisible,
|
|
37
59
|
className
|
|
38
60
|
),
|
|
39
61
|
...other,
|
|
@@ -2,7 +2,7 @@ const base = "kbq-link-093ccd";
|
|
|
2
2
|
const hovered = "kbq-link-hovered-1916bc";
|
|
3
3
|
const pressed = "kbq-link-pressed-0b493d";
|
|
4
4
|
const focusVisible = "kbq-link-focusVisible-a98307";
|
|
5
|
-
const
|
|
5
|
+
const allowVisited = "kbq-link-allowVisited-cb5a56";
|
|
6
6
|
const pseudo = "kbq-link-pseudo-5f21eb";
|
|
7
7
|
const hasIcon = "kbq-link-hasIcon-ea84d7";
|
|
8
8
|
const inherit = "kbq-link-inherit-aa3736";
|
|
@@ -11,7 +11,7 @@ const s = {
|
|
|
11
11
|
hovered,
|
|
12
12
|
pressed,
|
|
13
13
|
focusVisible,
|
|
14
|
-
|
|
14
|
+
allowVisited,
|
|
15
15
|
pseudo,
|
|
16
16
|
hasIcon,
|
|
17
17
|
"text-normal": "kbq-link-text-normal-814a6c",
|
|
@@ -20,6 +20,7 @@ const s = {
|
|
|
20
20
|
inherit
|
|
21
21
|
};
|
|
22
22
|
export {
|
|
23
|
+
allowVisited,
|
|
23
24
|
base,
|
|
24
25
|
s as default,
|
|
25
26
|
focusVisible,
|
|
@@ -27,6 +28,5 @@ export {
|
|
|
27
28
|
hovered,
|
|
28
29
|
inherit,
|
|
29
30
|
pressed,
|
|
30
|
-
pseudo
|
|
31
|
-
visitable
|
|
31
|
+
pseudo
|
|
32
32
|
};
|
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ExtendableProps } from '@koobiq/react-core';
|
|
3
|
+
import type { LinkBaseProps as LinkBasePrimitiveProps } from '@koobiq/react-primitives';
|
|
3
4
|
import type { TypographyPropVariant } from '../Typography';
|
|
4
5
|
export type LinkPropVariant = Extract<TypographyPropVariant, 'text-compact' | 'text-normal' | 'text-big' | 'inherit'>;
|
|
5
|
-
|
|
6
|
+
type LinkDeprecatedProps = {
|
|
7
|
+
/**
|
|
8
|
+
* If `true`, the component is disabled.
|
|
9
|
+
* @default false
|
|
10
|
+
* @deprecated
|
|
11
|
+
* The "disabled" prop is deprecated. Use "isDisabled" prop to replace it.
|
|
12
|
+
*/
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* If `true`, displays :visited CSS-state.
|
|
16
|
+
* @default false
|
|
17
|
+
* @deprecated
|
|
18
|
+
* The "visitable" prop is deprecated. Use "isVisitable" prop to replace it.
|
|
19
|
+
*/
|
|
20
|
+
visitable?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* If `true`, displays the link as a pseudo-link.
|
|
23
|
+
* @default false
|
|
24
|
+
* @deprecated
|
|
25
|
+
* The "pseudo" prop is deprecated. Use "isPseudo" prop to replace it.
|
|
26
|
+
*/
|
|
27
|
+
pseudo?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export type LinkBaseProps = ExtendableProps<{
|
|
6
30
|
/** The content of the component. */
|
|
7
31
|
children?: ReactNode;
|
|
8
32
|
/** The variant of the component. */
|
|
@@ -11,15 +35,19 @@ export type LinkBaseProps = {
|
|
|
11
35
|
startIcon?: ReactNode;
|
|
12
36
|
/** Icon placed after the children. */
|
|
13
37
|
endIcon?: ReactNode;
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
38
|
+
/**
|
|
39
|
+
* If `true`, displays :visited CSS-state.
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
allowVisited?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* If `true`, displays the link as a pseudo-link.
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
isPseudo?: boolean;
|
|
20
48
|
/** Additional CSS-classes. */
|
|
21
49
|
className?: string;
|
|
22
50
|
/** Inline styles */
|
|
23
51
|
style?: CSSProperties;
|
|
24
|
-
|
|
25
|
-
};
|
|
52
|
+
} & LinkDeprecatedProps, Omit<LinkBasePrimitiveProps, 'elementType'>>;
|
|
53
|
+
export {};
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { type ListState } from '@koobiq/react-primitives';
|
|
3
|
+
import { Item, Section } from '../Collections';
|
|
4
|
+
import { ListItemText } from './components';
|
|
5
|
+
import type { ListComponent, ListProps } from './types';
|
|
6
|
+
export type ListInnerProps<T extends object> = {
|
|
7
|
+
state: ListState<T>;
|
|
8
|
+
listRef?: Ref<HTMLUListElement>;
|
|
9
|
+
} & Omit<ListProps<T>, 'ref'>;
|
|
10
|
+
export declare function ListInner<T extends object>(props: ListInnerProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const ListComponent: ListComponent;
|
|
12
|
+
type CompoundedComponent = typeof ListComponent & {
|
|
13
|
+
Item: typeof Item;
|
|
14
|
+
Section: typeof Section;
|
|
15
|
+
ItemText: typeof ListItemText;
|
|
16
|
+
};
|
|
17
|
+
export declare const List: CompoundedComponent;
|
|
18
|
+
export {};
|
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
3
3
|
import { forwardRef } from "react";
|
|
4
4
|
import { useDOMRef, mergeProps, clsx, isNotNil } from "@koobiq/react-core";
|
|
5
|
-
import {
|
|
5
|
+
import { useListBox, useListState } from "@koobiq/react-primitives";
|
|
6
|
+
import { utilClasses } from "../../styles/utility.js";
|
|
6
7
|
import s from "./List.module.css.js";
|
|
7
8
|
import { ListSection } from "./components/ListSection/ListSection.js";
|
|
9
|
+
import { Item } from "../Collections/Item.js";
|
|
10
|
+
import { Section } from "../Collections/Section.js";
|
|
11
|
+
import { ListItemText } from "./components/ListItemText/ListItemText.js";
|
|
8
12
|
import { Typography } from "../Typography/Typography.js";
|
|
9
13
|
import { ListOption } from "./components/ListOption/ListOption.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
+
const { list } = utilClasses;
|
|
15
|
+
function ListInner(props) {
|
|
16
|
+
const { label, className, style, slotProps, state, listRef } = props;
|
|
17
|
+
const domRef = useDOMRef(listRef);
|
|
14
18
|
const { listBoxProps, labelProps } = useListBox(props, state, domRef);
|
|
15
19
|
const titleProps = mergeProps(
|
|
16
20
|
{
|
|
@@ -24,7 +28,7 @@ function ListRender(props, ref) {
|
|
|
24
28
|
{
|
|
25
29
|
style,
|
|
26
30
|
ref: domRef,
|
|
27
|
-
className: clsx(
|
|
31
|
+
className: clsx(list, className)
|
|
28
32
|
},
|
|
29
33
|
slotProps?.list,
|
|
30
34
|
listBoxProps
|
|
@@ -36,8 +40,16 @@ function ListRender(props, ref) {
|
|
|
36
40
|
) })
|
|
37
41
|
] });
|
|
38
42
|
}
|
|
39
|
-
|
|
43
|
+
function ListRender(props, ref) {
|
|
44
|
+
const state = useListState(props);
|
|
45
|
+
return /* @__PURE__ */ jsx(ListInner, { listRef: ref, ...props, state });
|
|
46
|
+
}
|
|
47
|
+
const ListComponent = forwardRef(ListRender);
|
|
48
|
+
const List = ListComponent;
|
|
49
|
+
List.Item = Item;
|
|
50
|
+
List.Section = Section;
|
|
51
|
+
List.ItemText = ListItemText;
|
|
40
52
|
export {
|
|
41
53
|
List,
|
|
42
|
-
|
|
54
|
+
ListInner
|
|
43
55
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { isNotNil, clsx } from "@koobiq/react-core";
|
|
5
|
+
import s from "./ListItemText.module.css.js";
|
|
6
|
+
import { Typography } from "../../../Typography/Typography.js";
|
|
7
|
+
const ListItemText = forwardRef(
|
|
8
|
+
({ className, children, caption, slotProps, ...other }, ref) => /* @__PURE__ */ jsxs("div", { className: clsx(s.base, className), ...other, ref, children: [
|
|
9
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", ...slotProps?.text, children }),
|
|
10
|
+
isNotNil(caption) && /* @__PURE__ */ jsx(
|
|
11
|
+
Typography,
|
|
12
|
+
{
|
|
13
|
+
as: "span",
|
|
14
|
+
color: "contrast-secondary",
|
|
15
|
+
className: s.caption,
|
|
16
|
+
variant: "text-compact",
|
|
17
|
+
...slotProps?.caption,
|
|
18
|
+
children: caption
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
] })
|
|
22
|
+
);
|
|
23
|
+
ListItemText.displayName = "ListItemText";
|
|
24
|
+
export {
|
|
25
|
+
ListItemText
|
|
26
|
+
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { Node } from '@koobiq/react-core';
|
|
2
|
+
import type { ListState } from '@koobiq/react-primitives';
|
|
3
|
+
export type ListOptionProps<T> = {
|
|
3
4
|
item: Node<T>;
|
|
4
5
|
state: ListState<T>;
|
|
5
|
-
}
|
|
6
|
+
};
|
|
7
|
+
export declare function ListOption<T>({ item, state }: ListOptionProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,12 +4,10 @@ import { useRef } from "react";
|
|
|
4
4
|
import { useHover, usePress, clsx, mergeProps } from "@koobiq/react-core";
|
|
5
5
|
import { useOption } from "@koobiq/react-primitives";
|
|
6
6
|
import { utilClasses } from "../../../../styles/utility.js";
|
|
7
|
-
import s from "./ListOption.module.css.js";
|
|
8
7
|
const textVariant = utilClasses.typography;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}) {
|
|
8
|
+
const { listItem } = utilClasses;
|
|
9
|
+
function ListOption({ item, state }) {
|
|
10
|
+
const { href, className, style } = item.props;
|
|
13
11
|
const ref = useRef(null);
|
|
14
12
|
const {
|
|
15
13
|
optionProps,
|
|
@@ -19,21 +17,18 @@ function ListOption({
|
|
|
19
17
|
} = useOption({ key: item.key }, state, ref);
|
|
20
18
|
const { hoverProps, isHovered: hovered } = useHover({ isDisabled: disabled });
|
|
21
19
|
const { isPressed: pressed, pressProps } = usePress({ isDisabled: disabled });
|
|
22
|
-
const Tag =
|
|
20
|
+
const Tag = href ? "a" : "li";
|
|
23
21
|
return /* @__PURE__ */ jsx(
|
|
24
22
|
Tag,
|
|
25
23
|
{
|
|
26
24
|
...mergeProps(optionProps, hoverProps, pressProps),
|
|
27
|
-
className: clsx(
|
|
28
|
-
|
|
29
|
-
hovered && s.hovered,
|
|
30
|
-
pressed && s.pressed,
|
|
31
|
-
selected && s.selected,
|
|
32
|
-
textVariant["text-normal"],
|
|
33
|
-
disabled && s.disabled,
|
|
34
|
-
focusVisible && s.focusVisible
|
|
35
|
-
),
|
|
25
|
+
className: clsx(listItem, textVariant["text-normal"], className),
|
|
26
|
+
style,
|
|
36
27
|
ref,
|
|
28
|
+
"data-hovered": hovered,
|
|
29
|
+
"data-pressed": pressed,
|
|
30
|
+
"data-disabled": disabled,
|
|
31
|
+
"data-selected": selected,
|
|
37
32
|
"data-focus-visible": focusVisible,
|
|
38
33
|
children: item.rendered
|
|
39
34
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { Node } from '@koobiq/react-core';
|
|
2
|
+
import type { ListState } from '@koobiq/react-primitives';
|
|
3
|
+
export type ListSectionProps<T> = {
|
|
3
4
|
section: Node<T>;
|
|
4
5
|
state: ListState<T>;
|
|
5
|
-
}
|
|
6
|
+
};
|
|
7
|
+
export declare function ListSection<T>({ section, state }: ListSectionProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,10 +4,7 @@ import { useListBoxSection } from "@koobiq/react-primitives";
|
|
|
4
4
|
import s from "./ListSection.module.css.js";
|
|
5
5
|
import { ListOption } from "../ListOption/ListOption.js";
|
|
6
6
|
import { Typography } from "../../../Typography/Typography.js";
|
|
7
|
-
function ListSection({
|
|
8
|
-
section,
|
|
9
|
-
state
|
|
10
|
-
}) {
|
|
7
|
+
function ListSection({ section, state }) {
|
|
11
8
|
const { itemProps, headingProps, groupProps } = useListBoxSection({
|
|
12
9
|
heading: section.rendered,
|
|
13
10
|
"aria-label": section["aria-label"]
|
|
@@ -1,53 +1,19 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Ref, ComponentRef, ReactElement, CSSProperties, ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { ExtendableProps } from '@koobiq/react-core';
|
|
2
3
|
import type { AriaListBoxProps } from '@koobiq/react-primitives';
|
|
3
4
|
import type { TypographyProps } from '../Typography';
|
|
4
|
-
export
|
|
5
|
-
export type ListPropSelectionMode = (typeof listPropSelectionMode)[number];
|
|
6
|
-
export type ListPropItems<T extends object> = AriaListBoxProps<T>['items'];
|
|
7
|
-
export type ListPropChildren<T extends object> = AriaListBoxProps<T>['children'];
|
|
8
|
-
export type ListPropSelectedKeys<T extends object> = AriaListBoxProps<T>['selectedKeys'];
|
|
9
|
-
export type ListPropDefaultSelectedKeys<T extends object> = AriaListBoxProps<T>['defaultSelectedKeys'];
|
|
10
|
-
export type ListPropDisabledKeys<T extends object> = AriaListBoxProps<T>['disabledKeys'];
|
|
11
|
-
export type ListPropOnSelectionChange<T extends object> = AriaListBoxProps<T>['onSelectionChange'];
|
|
12
|
-
export type ListPropOnAction<T extends object> = AriaListBoxProps<T>['onAction'];
|
|
13
|
-
export type ListPropSelectionBehavior<T extends object> = AriaListBoxProps<T>['selectionBehavior'];
|
|
14
|
-
export type ListBaseProps<T extends object> = {
|
|
15
|
-
label?: ReactNode;
|
|
5
|
+
export type ListProps<T> = ExtendableProps<{
|
|
16
6
|
/** Additional CSS-classes. */
|
|
17
7
|
className?: string;
|
|
18
8
|
/** Inline styles. */
|
|
19
9
|
style?: CSSProperties;
|
|
20
|
-
/** The type of selection that is allowed in the collection. */
|
|
21
|
-
selectionMode?: ListPropSelectionMode;
|
|
22
10
|
/** Ref to the HTML ul-element. */
|
|
23
11
|
ref?: Ref<HTMLElement>;
|
|
24
|
-
/** The contents of the collection. */
|
|
25
|
-
children?: ListPropChildren<T>;
|
|
26
|
-
/** Item objects in the collection. */
|
|
27
|
-
items?: ListPropItems<T>;
|
|
28
|
-
/** The currently selected keys in the collection (controlled). */
|
|
29
|
-
selectedKeys?: ListPropSelectedKeys<T>;
|
|
30
|
-
/** The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with. */
|
|
31
|
-
disabledKeys?: ListPropDisabledKeys<T>;
|
|
32
|
-
/** The initial selected keys in the collection (uncontrolled). */
|
|
33
|
-
defaultSelectedKeys?: ListPropDefaultSelectedKeys<T>;
|
|
34
|
-
/** Handler that is called when the selection changes. */
|
|
35
|
-
onSelectionChange?: ListPropOnSelectionChange<T>;
|
|
36
|
-
/**
|
|
37
|
-
* Handler that is called when a user performs an action on an item. The exact user event depends on
|
|
38
|
-
* the collection's `selectionBehavior` prop and the interaction modality.
|
|
39
|
-
*/
|
|
40
|
-
onAction?: ListPropOnAction<T>;
|
|
41
|
-
/** How multiple selection should behave in the collection. */
|
|
42
|
-
selectionBehavior?: ListPropSelectionBehavior<T>;
|
|
43
|
-
/** Whether to autofocus the list or an option. */
|
|
44
|
-
autoFocus?: boolean | 'first' | 'last';
|
|
45
12
|
/** The props used for each slot inside. */
|
|
46
13
|
slotProps?: {
|
|
47
14
|
label?: TypographyProps;
|
|
48
15
|
list?: ComponentPropsWithRef<'div'>;
|
|
49
16
|
};
|
|
50
|
-
}
|
|
51
|
-
export type ListProps<T extends object> = ListBaseProps<T>;
|
|
17
|
+
}, AriaListBoxProps<T>>;
|
|
52
18
|
export type ListRef = ComponentRef<'ul'>;
|
|
53
|
-
export type ListComponent = <T
|
|
19
|
+
export type ListComponent = <T>(props: ListProps<T>) => ReactElement | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Pressable } from '@koobiq/react-core';
|
|
2
|
+
import { Divider, Item, Section, Header } from '../Collections';
|
|
3
|
+
import { ListItemText } from '../List';
|
|
4
|
+
import type { MenuComponent } from './index';
|
|
5
|
+
declare const MenuComponent: MenuComponent;
|
|
6
|
+
type CompoundedComponent = typeof MenuComponent & {
|
|
7
|
+
Item: typeof Item;
|
|
8
|
+
Header: typeof Header;
|
|
9
|
+
Section: typeof Section;
|
|
10
|
+
Divider: typeof Divider;
|
|
11
|
+
ItemText: typeof ListItemText;
|
|
12
|
+
Control: typeof Pressable;
|
|
13
|
+
};
|
|
14
|
+
export declare const Menu: CompoundedComponent;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useRef } from "react";
|
|
4
|
+
import { deprecate } from "@koobiq/logger";
|
|
5
|
+
import { useDOMRef, mergeProps, clsx, Pressable } from "@koobiq/react-core";
|
|
6
|
+
import { useMenuTriggerState, useMenuTrigger } from "@koobiq/react-primitives";
|
|
7
|
+
import { PopoverInner } from "../Popover/PopoverInner.js";
|
|
8
|
+
import s from "./Menu.module.css.js";
|
|
9
|
+
import { MenuInner } from "./components/MenuInner/MenuInner.js";
|
|
10
|
+
import { Header } from "../Collections/Header.js";
|
|
11
|
+
import { Divider } from "../Collections/Divider.js";
|
|
12
|
+
import { Item } from "../Collections/Item.js";
|
|
13
|
+
import { Section } from "../Collections/Section.js";
|
|
14
|
+
import { ListItemText } from "../List/components/ListItemText/ListItemText.js";
|
|
15
|
+
function MenuRender(props, ref) {
|
|
16
|
+
const {
|
|
17
|
+
placement = "bottom start",
|
|
18
|
+
"data-testid": testId,
|
|
19
|
+
control,
|
|
20
|
+
style,
|
|
21
|
+
open,
|
|
22
|
+
isOpen: isOpenProp,
|
|
23
|
+
anchorRef,
|
|
24
|
+
className,
|
|
25
|
+
slotProps,
|
|
26
|
+
...other
|
|
27
|
+
} = props;
|
|
28
|
+
const isOpen = isOpenProp ?? open;
|
|
29
|
+
if (process.env.NODE_ENV !== "production" && "open" in props) {
|
|
30
|
+
deprecate(
|
|
31
|
+
'Menu: the "open" prop is deprecated. Use "isOpen" prop to replace it.'
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
const state = useMenuTriggerState({ ...props, isOpen });
|
|
35
|
+
const domRef = useDOMRef(ref);
|
|
36
|
+
const controlRef = useRef(null);
|
|
37
|
+
const { menuTriggerProps, menuProps } = useMenuTrigger(
|
|
38
|
+
{},
|
|
39
|
+
state,
|
|
40
|
+
controlRef
|
|
41
|
+
);
|
|
42
|
+
const popoverProps = mergeProps(
|
|
43
|
+
{
|
|
44
|
+
style,
|
|
45
|
+
state,
|
|
46
|
+
offset: 4,
|
|
47
|
+
size: "auto",
|
|
48
|
+
hideArrow: true,
|
|
49
|
+
popoverRef: domRef,
|
|
50
|
+
"data-testid": testId,
|
|
51
|
+
anchorRef: anchorRef || controlRef,
|
|
52
|
+
className: clsx(s.popover, className)
|
|
53
|
+
},
|
|
54
|
+
slotProps?.popover
|
|
55
|
+
);
|
|
56
|
+
const listProps = mergeProps(menuProps, other, slotProps?.list);
|
|
57
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
58
|
+
control?.({
|
|
59
|
+
ref: controlRef,
|
|
60
|
+
...menuTriggerProps
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ jsx(PopoverInner, { type: "menu", placement, ...popoverProps, children: /* @__PURE__ */ jsx(MenuInner, { ...listProps }) })
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
65
|
+
const MenuComponent = forwardRef(MenuRender);
|
|
66
|
+
const Menu = MenuComponent;
|
|
67
|
+
Menu.Item = Item;
|
|
68
|
+
Menu.Section = Section;
|
|
69
|
+
Menu.Header = Header;
|
|
70
|
+
Menu.Divider = Divider;
|
|
71
|
+
Menu.ItemText = ListItemText;
|
|
72
|
+
Menu.Control = Pressable;
|
|
73
|
+
export {
|
|
74
|
+
Menu
|
|
75
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
function MenuHeader({ item }) {
|
|
4
|
+
const { key, rendered, props } = item;
|
|
5
|
+
return /* @__PURE__ */ jsx("header", { role: "presentation", ...props, children: rendered }, key);
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
MenuHeader
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MenuHeader';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentRef, ReactElement } from 'react';
|
|
2
|
+
import type { AriaMenuOptions } from '@koobiq/react-primitives';
|
|
3
|
+
export type MenuInnerProps<T> = AriaMenuOptions<T>;
|
|
4
|
+
export type MenuInnerComponent = <T>(props: MenuInnerProps<T>) => ReactElement | null;
|
|
5
|
+
export type MenuInnerRef = ComponentRef<'ul'>;
|
|
6
|
+
export declare const MenuInner: MenuInnerComponent;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { useDOMRef, clsx } from "@koobiq/react-core";
|
|
5
|
+
import { useTreeState, useMenu } from "@koobiq/react-primitives";
|
|
6
|
+
import { utilClasses } from "../../../../styles/utility.js";
|
|
7
|
+
import s from "./MenuInner.module.css.js";
|
|
8
|
+
import { MenuSection } from "../MenuSection/MenuSection.js";
|
|
9
|
+
import { Divider } from "../../../Divider/Divider.js";
|
|
10
|
+
import { MenuHeader } from "../MenuHeader/MenuHeader.js";
|
|
11
|
+
import { MenuItem } from "../MenuItem/MenuItem.js";
|
|
12
|
+
const { list } = utilClasses;
|
|
13
|
+
function MenuInnerRender(props, ref) {
|
|
14
|
+
const state = useTreeState(props);
|
|
15
|
+
const domRef = useDOMRef(ref);
|
|
16
|
+
const { menuProps } = useMenu(props, state, domRef);
|
|
17
|
+
const multiple = props.selectionMode === "multiple";
|
|
18
|
+
const renderItems = (treeState) => [...treeState.collection].map((item) => {
|
|
19
|
+
switch (item.type) {
|
|
20
|
+
case "header":
|
|
21
|
+
return /* @__PURE__ */ jsx(MenuHeader, { item }, item.key);
|
|
22
|
+
case "divider":
|
|
23
|
+
return /* @__PURE__ */ jsx(Divider, { className: s.divider }, item.key);
|
|
24
|
+
case "item":
|
|
25
|
+
return /* @__PURE__ */ jsx(MenuItem, { item, state }, item.key);
|
|
26
|
+
case "section":
|
|
27
|
+
return /* @__PURE__ */ jsx(MenuSection, { section: item, state }, item.key);
|
|
28
|
+
default:
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
"ul",
|
|
34
|
+
{
|
|
35
|
+
...menuProps,
|
|
36
|
+
className: clsx(s.base, list),
|
|
37
|
+
...multiple && { "aria-multiselectable": true },
|
|
38
|
+
ref: domRef,
|
|
39
|
+
children: renderItems(state)
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
const MenuInner = forwardRef(MenuInnerRender);
|
|
44
|
+
export {
|
|
45
|
+
MenuInner
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MenuInner';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Node } from '@koobiq/react-core';
|
|
2
|
+
import type { TreeState } from '@koobiq/react-primitives';
|
|
3
|
+
export type MenuItemProps<T> = {
|
|
4
|
+
item: Node<T>;
|
|
5
|
+
state: TreeState<T>;
|
|
6
|
+
};
|
|
7
|
+
export declare function MenuItem<T>({ item, state }: MenuItemProps<T>): import("react/jsx-runtime").JSX.Element;
|