@koobiq/react-components 0.8.0 → 0.10.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.
Files changed (100) hide show
  1. package/dist/components/Alert/Alert.js +5 -3
  2. package/dist/components/Alert/types.d.ts +0 -3
  3. package/dist/components/Backdrop/Backdrop.js +1 -1
  4. package/dist/components/Backdrop/types.d.ts +4 -1
  5. package/dist/components/Button/Button.js +7 -7
  6. package/dist/components/Button/types.d.ts +0 -4
  7. package/dist/components/ButtonToggleGroup/ButtonToggleGroup.js +6 -6
  8. package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.js +6 -6
  9. package/dist/components/ButtonToggleGroup/components/ButtonToggle/types.d.ts +0 -1
  10. package/dist/components/ButtonToggleGroup/types.d.ts +0 -3
  11. package/dist/components/Checkbox/Checkbox.js +6 -6
  12. package/dist/components/Checkbox/types.d.ts +0 -5
  13. package/dist/components/Container/Container.js +2 -2
  14. package/dist/components/Container/types.d.ts +0 -2
  15. package/dist/components/DateInput/DateInput.js +15 -11
  16. package/dist/components/DateInput/types.d.ts +1 -3
  17. package/dist/components/DatePicker/types.d.ts +1 -2
  18. package/dist/components/Dialog/Dialog.js +1 -1
  19. package/dist/components/Dialog/types.d.ts +0 -1
  20. package/dist/components/Divider/Divider.js +5 -4
  21. package/dist/components/Divider/types.d.ts +0 -2
  22. package/dist/components/FieldComponents/FieldAddon/FieldAddon.js +4 -4
  23. package/dist/components/FieldComponents/FieldContentGroup/FieldContentGroup.js +2 -2
  24. package/dist/components/FieldComponents/FieldError/FieldError.d.ts +4 -2
  25. package/dist/components/FieldComponents/FieldError/FieldError.js +6 -8
  26. package/dist/components/FieldComponents/FieldInput/FieldInput.js +3 -3
  27. package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.js +2 -2
  28. package/dist/components/FieldComponents/FieldSelect/FieldSelect.js +4 -4
  29. package/dist/components/FormControl/FormControl.js +2 -2
  30. package/dist/components/FormControlLabel/FormControlLabel.js +1 -8
  31. package/dist/components/IconButton/IconButton.js +4 -4
  32. package/dist/components/IconButton/types.d.ts +0 -3
  33. package/dist/components/Input/Input.d.ts +2 -3
  34. package/dist/components/Input/Input.js +11 -7
  35. package/dist/components/Input/Input.module.css.js +4 -0
  36. package/dist/components/Input/types.d.ts +1 -10
  37. package/dist/components/InputNumber/InputNumber.d.ts +2 -3
  38. package/dist/components/InputNumber/InputNumber.js +7 -7
  39. package/dist/components/InputNumber/types.d.ts +0 -9
  40. package/dist/components/Link/Link.js +3 -3
  41. package/dist/components/Link/types.d.ts +0 -5
  42. package/dist/components/List/List.js +4 -3
  43. package/dist/components/List/List.module.css.js +1 -4
  44. package/dist/components/List/components/ListOption/ListOption.js +5 -5
  45. package/dist/components/List/components/ListSection/ListSection.js +4 -3
  46. package/dist/components/List/types.d.ts +2 -0
  47. package/dist/components/Menu/Menu.js +2 -2
  48. package/dist/components/Menu/components/MenuList/MenuList.d.ts +6 -0
  49. package/dist/components/Menu/components/{MenuInner/MenuInner.js → MenuList/MenuList.js} +6 -5
  50. package/dist/components/Menu/components/MenuList/MenuList.module.css.js +8 -0
  51. package/dist/components/Menu/components/MenuList/index.d.ts +1 -0
  52. package/dist/components/Menu/components/MenuSection/MenuSection.js +4 -3
  53. package/dist/components/Menu/components/index.d.ts +1 -1
  54. package/dist/components/Modal/Modal.js +1 -1
  55. package/dist/components/Modal/types.d.ts +1 -5
  56. package/dist/components/Popover/PopoverInner.js +2 -2
  57. package/dist/components/Popover/types.d.ts +0 -4
  58. package/dist/components/RadioGroup/RadioGroup.js +8 -11
  59. package/dist/components/RadioGroup/components/Radio/types.d.ts +0 -1
  60. package/dist/components/RadioGroup/types.d.ts +1 -8
  61. package/dist/components/SearchInput/SearchInput.d.ts +2 -3
  62. package/dist/components/SearchInput/SearchInput.js +13 -12
  63. package/dist/components/SearchInput/types.d.ts +1 -5
  64. package/dist/components/Select/Select.js +18 -20
  65. package/dist/components/Select/components/SelectList/SelectList.d.ts +4 -2
  66. package/dist/components/Select/components/SelectList/SelectList.js +35 -7
  67. package/dist/components/Select/components/SelectList/SelectList.module.css.js +3 -3
  68. package/dist/components/Select/components/SelectOption/SelectOption.js +5 -5
  69. package/dist/components/Select/intl.js +2 -0
  70. package/dist/components/Select/types.d.ts +8 -8
  71. package/dist/components/SidePanel/SidePanel.js +1 -1
  72. package/dist/components/SidePanel/types.d.ts +0 -5
  73. package/dist/components/Table/Table.js +4 -4
  74. package/dist/components/Table/components/TableRow/TableRow.js +5 -5
  75. package/dist/components/Table/types.d.ts +0 -2
  76. package/dist/components/TagGroup/components/Tag/Tag.js +6 -6
  77. package/dist/components/Textarea/Textarea.d.ts +1 -2
  78. package/dist/components/Textarea/Textarea.js +6 -6
  79. package/dist/components/Textarea/components/TextareaContextConsumer/TextareaContextConsumer.js +1 -1
  80. package/dist/components/Textarea/types.d.ts +1 -10
  81. package/dist/components/TimePicker/TimePicker.d.ts +1 -1
  82. package/dist/components/TimePicker/TimePicker.js +15 -11
  83. package/dist/components/TimePicker/types.d.ts +0 -2
  84. package/dist/components/Toggle/Toggle.js +3 -3
  85. package/dist/components/Toggle/types.d.ts +0 -3
  86. package/dist/components/Tooltip/Tooltip.js +9 -9
  87. package/dist/components/Tooltip/types.d.ts +0 -3
  88. package/dist/style.css +52 -50
  89. package/dist/styles/utility.d.ts +1 -0
  90. package/dist/styles/utility.js +2 -1
  91. package/dist/styles/utility.module.css.js +2 -1
  92. package/dist/utils/index.d.ts +1 -0
  93. package/package.json +5 -5
  94. package/dist/components/List/components/ListSection/ListSection.module.css.js +0 -11
  95. package/dist/components/Menu/components/MenuInner/MenuInner.d.ts +0 -6
  96. package/dist/components/Menu/components/MenuInner/MenuInner.module.css.js +0 -11
  97. package/dist/components/Menu/components/MenuInner/index.d.ts +0 -1
  98. package/dist/components/Menu/components/MenuSection/MenuSection.module.css.js +0 -11
  99. /package/dist/{components/FieldComponents/FieldSelect/utils.d.ts → utils/isPrimitiveNode.d.ts} +0 -0
  100. /package/dist/{components/FieldComponents/FieldSelect/utils.js → utils/isPrimitiveNode.js} +0 -0
@@ -4,11 +4,10 @@ export declare const Textarea: import("react").ForwardRefExoticComponent<Omit<{
4
4
  required?: boolean;
5
5
  hiddenLabel?: boolean;
6
6
  readonly?: boolean;
7
- } & Omit<import("@koobiq/react-primitives").TextFieldProps<HTMLTextAreaElement>, "children" | "style" | "className" | "validationState" | "validationBehavior" | "validate" | "description" | "inputElementType">, "caption" | "style" | "className" | "cols" | "rows" | "labelPlacement" | "labelAlign" | "fullWidth" | "variant" | "slotProps" | "data-testid" | "errorMessage" | "isLabelHidden" | "expand"> & {
7
+ } & Omit<import("@koobiq/react-primitives").TextFieldProps<HTMLTextAreaElement>, "children" | "style" | "className" | "validationState" | "description" | "inputElementType">, "caption" | "style" | "className" | "cols" | "rows" | "labelPlacement" | "labelAlign" | "fullWidth" | "variant" | "slotProps" | "data-testid" | "isLabelHidden" | "expand"> & {
8
8
  className?: string;
9
9
  style?: import("react").CSSProperties;
10
10
  variant?: import("./types").TextareaPropVariant;
11
- errorMessage?: import("react").ReactNode;
12
11
  fullWidth?: boolean;
13
12
  isLabelHidden?: boolean;
14
13
  labelPlacement?: import("./types").TextareaPropLabelPlacement;
@@ -9,7 +9,7 @@ import { FormControl } from "../FormControl/FormControl.js";
9
9
  const Textarea = forwardRef((props, ref) => {
10
10
  const {
11
11
  variant = "filled",
12
- fullWidth = false,
12
+ fullWidth,
13
13
  hiddenLabel,
14
14
  isLabelHidden: isLabelHiddenProp,
15
15
  disabled,
@@ -31,11 +31,11 @@ const Textarea = forwardRef((props, ref) => {
31
31
  label,
32
32
  ...other
33
33
  } = props;
34
- const isDisabled = isDisabledProp ?? disabled ?? false;
35
- const isRequired = isRequiredProp ?? required ?? false;
36
- const isReadOnly = isReadOnlyProp ?? readonly ?? false;
37
- const isInvalid = isInvalidProp ?? error ?? false;
38
- const isLabelHidden = isLabelHiddenProp ?? hiddenLabel ?? false;
34
+ const isDisabled = isDisabledProp ?? disabled;
35
+ const isRequired = isRequiredProp ?? required;
36
+ const isReadOnly = isReadOnlyProp ?? readonly;
37
+ const isInvalid = isInvalidProp ?? error;
38
+ const isLabelHidden = isLabelHiddenProp ?? hiddenLabel;
39
39
  if (process.env.NODE_ENV !== "production" && "disabled" in props) {
40
40
  deprecate(
41
41
  'Textarea: the "disabled" prop is deprecated. Use "isDisabled" prop to replace it.'
@@ -43,7 +43,7 @@ const TextareaContextConsumer = forwardRef((props, ref) => {
43
43
  );
44
44
  const captionProps = mergeProps({ children: caption }, slotProps?.caption);
45
45
  const errorProps = mergeProps(
46
- { isInvalid, children: errorMessage },
46
+ { children: errorMessage, className: s.error },
47
47
  slotProps?.errorMessage
48
48
  );
49
49
  const groupProps = {
@@ -15,35 +15,30 @@ export type TextareaPropLabelAlign = FormControlPropLabelAlign;
15
15
  type TextareaDeprecatedProps = {
16
16
  /**
17
17
  * If `true`, the component is disabled.
18
- * @default false
19
18
  * @deprecated
20
19
  * The "disabled" prop is deprecated. Use "isDisabled" prop to replace it.
21
20
  */
22
21
  disabled?: boolean;
23
22
  /**
24
23
  * If `true`, the input will indicate an error.
25
- * @default false
26
24
  * @deprecated
27
25
  * The "error" prop is deprecated. Use "isInvalid" prop to replace it.
28
26
  */
29
27
  error?: boolean;
30
28
  /**
31
29
  * If `true`, the label is displayed as required and the input element is required.
32
- * @default false
33
30
  * @deprecated
34
31
  * The "required" prop is deprecated. Use "isRequired" prop to replace it.
35
32
  */
36
33
  required?: boolean;
37
34
  /**
38
35
  * If `true`, the label is hidden. Be sure to add aria-label to the input element.
39
- * @default false
40
36
  * @deprecated
41
37
  * The "hiddenLabel" prop is deprecated. Use "isLabelHidden" prop to replace it.
42
38
  */
43
39
  hiddenLabel?: boolean;
44
40
  /**
45
41
  * If `true`, the input can be selected but not changed by the user.
46
- * @default false
47
42
  * @deprecated
48
43
  * The "readonly" prop is deprecated. Use "isReadOnly" prop to replace it.
49
44
  */
@@ -59,16 +54,12 @@ export type TextareaProps = ExtendableProps<{
59
54
  * @default 'filled'
60
55
  */
61
56
  variant?: TextareaPropVariant;
62
- /** An error message for the field. */
63
- errorMessage?: ReactNode;
64
57
  /**
65
58
  * If true, the input will take up the full width of its container.
66
- * @default false
67
59
  */
68
60
  fullWidth?: boolean;
69
61
  /**
70
62
  * If `true`, the label is hidden. Be sure to add aria-label to the input element.
71
- * @default false
72
63
  */
73
64
  isLabelHidden?: boolean;
74
65
  /**
@@ -103,6 +94,6 @@ export type TextareaProps = ExtendableProps<{
103
94
  textarea?: FieldInputProps<'textarea'>;
104
95
  errorMessage?: FieldErrorProps;
105
96
  };
106
- }, TextareaDeprecatedProps & Omit<TextFieldProps<HTMLTextAreaElement>, 'description' | 'validationBehavior' | 'validationState' | 'validate' | 'children' | 'style' | 'className' | 'inputElementType'>>;
97
+ }, TextareaDeprecatedProps & Omit<TextFieldProps<HTMLTextAreaElement>, 'description' | 'validationState' | 'children' | 'style' | 'className' | 'inputElementType'>>;
107
98
  export type TextareaRef = ComponentRef<'textarea'>;
108
99
  export {};
@@ -1,5 +1,5 @@
1
1
  import { type Ref } from 'react';
2
- import type { TimeValue } from '@koobiq/react-primitives';
2
+ import { type TimeValue } from '@koobiq/react-primitives';
3
3
  import type { TimePickerComponent, TimePickerProps, TimePickerRef } from './types';
4
4
  export declare function TimePickerRender<T extends TimeValue>(props: Omit<TimePickerProps<T>, 'ref'>, ref: Ref<TimePickerRef>): import("react/jsx-runtime").JSX.Element;
5
5
  export declare const TimePicker: TimePickerComponent;
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { useLocale, useDOMRef, mergeProps, clsx } from "@koobiq/react-core";
4
4
  import { IconClock16 } from "@koobiq/react-icons";
5
- import { useTimeFieldState, removeDataAttributes, useTimeField } from "@koobiq/react-primitives";
5
+ import { useTimeFieldState, removeDataAttributes, useTimeField, FieldErrorContext } from "@koobiq/react-primitives";
6
6
  import s from "./TimePicker.module.css.js";
7
7
  import { FormControl } from "../FormControl/FormControl.js";
8
8
  import { FormControlLabel } from "../FormControlLabel/FormControlLabel.js";
@@ -18,6 +18,7 @@ function TimePickerRender(props, ref) {
18
18
  const {
19
19
  isLabelHidden,
20
20
  labelPlacement,
21
+ errorMessage,
21
22
  labelAlign,
22
23
  caption,
23
24
  label,
@@ -28,7 +29,6 @@ function TimePickerRender(props, ref) {
28
29
  className,
29
30
  endAddon,
30
31
  startAddon,
31
- errorMessage,
32
32
  "data-testid": testId
33
33
  } = props;
34
34
  const state = useTimeFieldState({
@@ -40,9 +40,11 @@ function TimePickerRender(props, ref) {
40
40
  fieldProps,
41
41
  descriptionProps,
42
42
  errorMessageProps,
43
+ inputProps,
43
44
  ...validation
44
45
  } = useTimeField(removeDataAttributes(props), state, domRef);
45
- const { isInvalid, isDisabled, isRequired, isReadOnly } = state;
46
+ const { isDisabled, isRequired, isReadOnly } = state;
47
+ const { isInvalid } = validation;
46
48
  const rootProps = mergeProps(
47
49
  {
48
50
  style,
@@ -51,10 +53,10 @@ function TimePickerRender(props, ref) {
51
53
  labelAlign,
52
54
  "data-testid": testId,
53
55
  "data-variant": variant,
54
- "data-invalid": isInvalid,
55
- "data-disabled": isDisabled,
56
- "data-required": isRequired,
57
- "data-readonly": isReadOnly,
56
+ "data-invalid": isInvalid || void 0,
57
+ "data-disabled": isDisabled || void 0,
58
+ "data-required": isRequired || void 0,
59
+ "data-readonly": isReadOnly || void 0,
58
60
  className: clsx(s.base, className)
59
61
  },
60
62
  slotProps?.root
@@ -90,8 +92,7 @@ function TimePickerRender(props, ref) {
90
92
  const captionProps = mergeProps({ children: caption }, slotProps?.caption, descriptionProps);
91
93
  const errorProps = mergeProps(
92
94
  {
93
- isInvalid,
94
- children: typeof errorMessage === "function" ? errorMessage({ ...validation }) : errorMessage
95
+ children: errorMessage
95
96
  },
96
97
  slotProps?.errorMessage,
97
98
  errorMessageProps
@@ -104,11 +105,14 @@ function TimePickerRender(props, ref) {
104
105
  {
105
106
  ...groupProps,
106
107
  slotProps: { startAddon: { className: s.startAddon } },
107
- children: /* @__PURE__ */ jsx(FieldInputDate, { ...controlProps, children: state.segments.map((segment, i) => /* @__PURE__ */ jsx(DateSegment, { segment, state }, i)) })
108
+ children: /* @__PURE__ */ jsxs(FieldInputDate, { ...controlProps, children: [
109
+ state.segments.map((segment, i) => /* @__PURE__ */ jsx(DateSegment, { segment, state }, i)),
110
+ /* @__PURE__ */ jsx("input", { ...inputProps })
111
+ ] })
108
112
  }
109
113
  ),
110
114
  /* @__PURE__ */ jsx(FieldCaption, { ...captionProps }),
111
- /* @__PURE__ */ jsx(FieldError, { ...errorProps })
115
+ /* @__PURE__ */ jsx(FieldErrorContext.Provider, { value: validation, children: /* @__PURE__ */ jsx(FieldError, { ...errorProps }) })
112
116
  ] })
113
117
  ] });
114
118
  }
@@ -24,7 +24,6 @@ export type TimePickerProps<T extends TimeValue> = {
24
24
  variant?: DateInputPropVariant;
25
25
  /**
26
26
  * If true, the input will take up the full width of its container.
27
- * @default false
28
27
  */
29
28
  fullWidth?: boolean;
30
29
  /** The props used for each slot inside. */
@@ -40,7 +39,6 @@ export type TimePickerProps<T extends TimeValue> = {
40
39
  ref?: Ref<HTMLDivElement>;
41
40
  /**
42
41
  * If `true`, the label is hidden. Be sure to add aria-label to the input element.
43
- * @default false
44
42
  */
45
43
  isLabelHidden?: boolean;
46
44
  /**
@@ -25,11 +25,11 @@ const Toggle = forwardRef(
25
25
  className,
26
26
  ...other
27
27
  } = props;
28
- const isDisabled = isDisabledProp ?? disabled ?? false;
28
+ const isDisabled = isDisabledProp ?? disabled;
29
29
  const isSelected = isSelectedProp ?? checked;
30
- const isInvalid = isInvalidProp ?? error ?? false;
30
+ const isInvalid = isInvalidProp ?? error;
31
31
  const defaultSelected = defaultSelectedProp ?? defaultChecked;
32
- const isReadOnly = isReadOnlyProp ?? readonly ?? false;
32
+ const isReadOnly = isReadOnlyProp ?? readonly;
33
33
  if (process.env.NODE_ENV !== "production" && "disabled" in props) {
34
34
  deprecate(
35
35
  'Toggle: the "disabled" prop is deprecated. Use "isDisabled" prop to replace it.'
@@ -8,14 +8,12 @@ export type TogglePropLabelPlacement = (typeof togglePropLabelPlacement)[number]
8
8
  type ToggleDeprecatedProps = {
9
9
  /**
10
10
  * If `true`, the component is disabled.
11
- * @default false
12
11
  * @deprecated
13
12
  * The "disabled" prop is deprecated. Use "isDisabled" prop to replace it.
14
13
  */
15
14
  disabled?: boolean;
16
15
  /**
17
16
  * If `true`, the component will indicate an error.
18
- * @default false
19
17
  * @deprecated
20
18
  * The "error" prop is deprecated. Use "isInvalid" prop to replace it.
21
19
  */
@@ -28,7 +26,6 @@ type ToggleDeprecatedProps = {
28
26
  checked?: boolean;
29
27
  /**
30
28
  * It prevents the user from changing the value of the checkbox.
31
- * @default false
32
29
  * @deprecated
33
30
  * The "readonly" prop is deprecated. Use "isReadonly" prop to replace it.
34
31
  */
@@ -9,15 +9,15 @@ import { utilClasses } from "../../styles/utility.js";
9
9
  import s from "./Tooltip.module.css.js";
10
10
  const Tooltip = forwardRef((props, ref) => {
11
11
  const {
12
+ variant = "contrast",
13
+ placement: placementProp = "top",
14
+ closeDelay = 120,
12
15
  delay = 120,
13
- disabled,
14
- open,
15
16
  isDisabled: isDisabledProp,
16
17
  isOpen: isOpenProp,
17
- closeDelay = 120,
18
- hideArrow = false,
19
- variant = "contrast",
20
- placement: placementProp = "top",
18
+ disabled,
19
+ open,
20
+ hideArrow,
21
21
  control,
22
22
  children,
23
23
  anchorRef,
@@ -30,7 +30,7 @@ const Tooltip = forwardRef((props, ref) => {
30
30
  ...other
31
31
  } = props;
32
32
  const isOpen = isOpenProp ?? open;
33
- const isDisabled = isDisabledProp ?? disabled ?? false;
33
+ const isDisabled = isDisabledProp ?? disabled;
34
34
  if (process.env.NODE_ENV !== "production" && "open" in props) {
35
35
  deprecate(
36
36
  'Tooltip: the "open" prop is deprecated. Use "isOpen" prop to replace it.'
@@ -114,9 +114,9 @@ const Tooltip = forwardRef((props, ref) => {
114
114
  "div",
115
115
  {
116
116
  ...tooltipProps,
117
- "data-arrow": showArrow,
117
+ "data-arrow": showArrow || void 0,
118
118
  "data-variant": variant,
119
- "data-placement": placement,
119
+ "data-placement": placement || void 0,
120
120
  "data-transition": transition,
121
121
  children: [
122
122
  showArrow && /* @__PURE__ */ jsx(
@@ -11,14 +11,12 @@ export type TooltipPropPlacement = (typeof tooltipPropPlacement)[number];
11
11
  type TooltipDeprecatedProps = {
12
12
  /**
13
13
  * If `true`, the component is shown.
14
- * @default false
15
14
  * @deprecated
16
15
  * The "open" prop is deprecated. Use "isOpen" prop to replace it.
17
16
  */
18
17
  open?: boolean;
19
18
  /**
20
19
  * If `true`, the component is disabled.
21
- * @deprecated
22
20
  * The "disabled" prop is deprecated. Use "isDisabled" prop to replace it.
23
21
  */
24
22
  disabled?: boolean;
@@ -59,7 +57,6 @@ export type TooltipProps = ExtendableProps<{
59
57
  crossOffset?: number;
60
58
  /**
61
59
  * If `true`, the arrow isn't shown.
62
- * @default false
63
60
  */
64
61
  hideArrow?: boolean;
65
62
  /**
package/dist/style.css CHANGED
@@ -1352,7 +1352,7 @@
1352
1352
  font-family: inherit;
1353
1353
  }
1354
1354
 
1355
- .kbq-utility-list-792630 {
1355
+ .kbq-utility-list-792630, .kbq-utility-list-792630 ul {
1356
1356
  outline: none;
1357
1357
  margin: 0;
1358
1358
  padding: 0;
@@ -1360,6 +1360,22 @@
1360
1360
  overflow: auto;
1361
1361
  }
1362
1362
 
1363
+ .kbq-utility-list-792630[data-padded] {
1364
+ padding-block: var(--kbq-size-xxs);
1365
+ }
1366
+
1367
+ .kbq-utility-list-792630[data-padded] .kbq-utility-list-item-862731, .kbq-utility-list-792630[data-padded] .kbq-utility-list-heading-3c364a {
1368
+ border-inline: var(--kbq-size-xxs) solid transparent;
1369
+ background-clip: padding-box;
1370
+ }
1371
+
1372
+ .kbq-utility-list-heading-3c364a {
1373
+ -webkit-user-select: none;
1374
+ user-select: none;
1375
+ box-sizing: border-box;
1376
+ padding: var(--kbq-size-s) var(--kbq-size-m);
1377
+ }
1378
+
1363
1379
  .kbq-utility-list-item-862731 {
1364
1380
  --list-item-bg-color: ;
1365
1381
  --list-item-outline-color: transparent;
@@ -1367,17 +1383,33 @@
1367
1383
  cursor: pointer;
1368
1384
  box-sizing: border-box;
1369
1385
  gap: var(--kbq-size-s);
1370
- border-radius: var(--kbq-size-s);
1371
1386
  color: var(--kbq-foreground-contrast);
1372
- background-color: var(--list-item-bg-color);
1373
1387
  padding: var(--kbq-size-xs) var(--kbq-size-m);
1374
- outline-offset: calc(-1 * var(--list-item-outline-width));
1375
- outline: var(--list-item-outline-width) solid var(--list-item-outline-color);
1376
- transition: border-color var(--kbq-transition-default), border-radius var(--kbq-transition-default), background-color var(--kbq-transition-default), color var(--kbq-transition-default);
1388
+ z-index: var(--kbq-layer-absolute);
1389
+ transition: border-color var(--kbq-transition-default), border-radius var(--kbq-transition-default), color var(--kbq-transition-default);
1390
+ outline: none;
1377
1391
  flex-shrink: 0;
1378
1392
  align-items: center;
1379
1393
  text-decoration: none;
1380
1394
  display: flex;
1395
+ position: relative;
1396
+ }
1397
+
1398
+ .kbq-utility-list-item-862731 > * {
1399
+ z-index: var(--kbq-layer-absolute);
1400
+ }
1401
+
1402
+ .kbq-utility-list-item-862731:before {
1403
+ content: "";
1404
+ outline-offset: calc(-1 * var(--list-item-outline-width));
1405
+ outline: var(--list-item-outline-width) solid var(--list-item-outline-color);
1406
+ transition: background-color var(--kbq-transition-default);
1407
+ background-color: var(--list-item-bg-color);
1408
+ border-radius: var(--kbq-size-s);
1409
+ pointer-events: none;
1410
+ z-index: -1;
1411
+ position: absolute;
1412
+ inset: 0;
1381
1413
  }
1382
1414
 
1383
1415
  .kbq-utility-list-item-862731:where([data-hovered="true"]) {
@@ -1426,12 +1458,12 @@
1426
1458
  --list-item-bg-color: var(--kbq-states-background-contrast-less-active);
1427
1459
  }
1428
1460
 
1429
- .kbq-utility-list-792630[aria-multiselectable="true"] .kbq-utility-list-item-862731:is([data-selected="true"], [data-focus-visible="true"]):has( + :is([data-selected="true"], [data-focus-visible="true"])) {
1461
+ .kbq-utility-list-792630[aria-multiselectable="true"] .kbq-utility-list-item-862731:is([data-selected="true"], [data-focus-visible="true"]):has( + :is([data-selected="true"], [data-focus-visible="true"])):before {
1430
1462
  border-end-end-radius: 0;
1431
1463
  border-end-start-radius: 0;
1432
1464
  }
1433
1465
 
1434
- .kbq-utility-list-792630[aria-multiselectable="true"] .kbq-utility-list-item-862731:is([data-selected="true"], [data-focus-visible="true"]) + :is([data-selected="true"], [data-focus-visible="true"]) {
1466
+ .kbq-utility-list-792630[aria-multiselectable="true"] .kbq-utility-list-item-862731:is([data-selected="true"], [data-focus-visible="true"]) + :is([data-selected="true"], [data-focus-visible="true"]):before {
1435
1467
  border-start-start-radius: 0;
1436
1468
  border-start-end-radius: 0;
1437
1469
  }
@@ -1996,6 +2028,13 @@
1996
2028
  --badge-bg-color: ;
1997
2029
  --badge-color: var(--kbq-foreground-contrast);
1998
2030
  }
2031
+ .kbq-input-hasStartAddon-fac70d {
2032
+ --field-padding-inline-start: 36px;
2033
+ }
2034
+
2035
+ .kbq-input-hasEndAddon-12fbf6 {
2036
+ --field-padding-inline-end: 36px;
2037
+ }
1999
2038
  .kbq-field-25e8f8 {
2000
2039
  --field-size-height: 32px;
2001
2040
  --field-input-padding-inline-start: var(--kbq-size-m);
@@ -3110,24 +3149,6 @@
3110
3149
  .kbq-list-label-e4431c {
3111
3150
  padding: var(--kbq-size-xs) var(--kbq-size-m);
3112
3151
  }
3113
-
3114
- .kbq-list-divider-fd5123 {
3115
- margin-inline: calc(var(--kbq-size-xxs) * -1);
3116
- inline-size: initial;
3117
- }
3118
- .kbq-listsection-d94a57 {
3119
- margin: 0;
3120
- padding: 0;
3121
- list-style: none;
3122
- overflow: auto;
3123
- }
3124
-
3125
- .kbq-listsection-heading-5bd9e3 {
3126
- -webkit-user-select: none;
3127
- user-select: none;
3128
- box-sizing: border-box;
3129
- padding: var(--kbq-size-s) var(--kbq-size-m);
3130
- }
3131
3152
  .kbq-divider-16da20 {
3132
3153
  border-style: solid;
3133
3154
  border-color: var(--kbq-line-contrast-less);
@@ -3202,7 +3223,6 @@
3202
3223
 
3203
3224
  .kbq-select-list-8ffac0 {
3204
3225
  inline-size: 100%;
3205
- padding: var(--kbq-size-xxs);
3206
3226
  }
3207
3227
 
3208
3228
  .kbq-select-popover-79fc05 {
@@ -3298,9 +3318,10 @@
3298
3318
  padding: var(--kbq-size-xs) var(--kbq-size-m);
3299
3319
  }
3300
3320
 
3301
- .kbq-selectlist-divider-7c167f {
3302
- margin-inline: calc(var(--kbq-size-xxs) * -1);
3303
- inline-size: initial;
3321
+ .kbq-selectlist-empty-e6a9b0 {
3322
+ color: var(--kbq-foreground-contrast-secondary);
3323
+ padding-block: var(--kbq-size-xs);
3324
+ padding-inline: var(--kbq-size-l);
3304
3325
  }
3305
3326
  .kbq-taggroup-container-c4d544 {
3306
3327
  inline-size: calc(100% + var(--kbq-size-s));
@@ -3450,28 +3471,9 @@
3450
3471
  min-inline-size: 200px;
3451
3472
  max-inline-size: 640px;
3452
3473
  }
3453
- .kbq-menuinner-0117f8 {
3454
- padding: var(--kbq-size-xxs);
3474
+ .kbq-menulist-0e5f46 {
3455
3475
  inline-size: 100%;
3456
3476
  }
3457
-
3458
- .kbq-menuinner-divider-acbe04 {
3459
- margin-inline: calc(var(--kbq-size-xxs) * -1);
3460
- inline-size: initial;
3461
- }
3462
- .kbq-menusection-6a5530 {
3463
- margin: 0;
3464
- padding: 0;
3465
- list-style: none;
3466
- overflow: auto;
3467
- }
3468
-
3469
- .kbq-menusection-heading-2be1f1 {
3470
- -webkit-user-select: none;
3471
- user-select: none;
3472
- box-sizing: border-box;
3473
- padding: var(--kbq-size-s) var(--kbq-size-m);
3474
- }
3475
3477
  .kbq-buttontogglegroup-79a88d {
3476
3478
  --thumb-inline-size-start: ;
3477
3479
  --thumb-transform-start: ;
@@ -70,5 +70,6 @@ export declare const utilClasses: {
70
70
  };
71
71
  list: string;
72
72
  listItem: string;
73
+ listHeading: string;
73
74
  scrollable: string;
74
75
  };
@@ -71,7 +71,8 @@ const utilClasses = {
71
71
  color,
72
72
  typography,
73
73
  list: s.list,
74
- listItem: s["list-item"]
74
+ listItem: s["list-item"],
75
+ listHeading: s["list-heading"]
75
76
  };
76
77
  export {
77
78
  utilClasses
@@ -67,7 +67,8 @@ const s = {
67
67
  "italic-compact-strong": "kbq-utility-italic-compact-strong-d8e16e",
68
68
  inherit,
69
69
  list,
70
- "list-item": "kbq-utility-list-item-862731"
70
+ "list-item": "kbq-utility-list-item-862731",
71
+ "list-heading": "kbq-utility-list-heading-3c364a"
71
72
  };
72
73
  export {
73
74
  s as default,
@@ -1,2 +1,3 @@
1
1
  export * from './getResponsiveValue';
2
2
  export * from './capitalizeFirstLetter';
3
+ export * from './isPrimitiveNode';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/react-components",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -28,10 +28,10 @@
28
28
  "@koobiq/design-tokens": "^3.14.0",
29
29
  "@types/react-transition-group": "^4.4.12",
30
30
  "react-transition-group": "^4.4.5",
31
- "@koobiq/logger": "0.8.0",
32
- "@koobiq/react-core": "0.8.0",
33
- "@koobiq/react-icons": "0.8.0",
34
- "@koobiq/react-primitives": "0.8.0"
31
+ "@koobiq/react-core": "0.10.0",
32
+ "@koobiq/logger": "0.10.0",
33
+ "@koobiq/react-icons": "0.10.0",
34
+ "@koobiq/react-primitives": "0.10.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@koobiq/design-tokens": "^3.14.0",
@@ -1,11 +0,0 @@
1
- const base = "kbq-listsection-d94a57";
2
- const heading = "kbq-listsection-heading-5bd9e3";
3
- const s = {
4
- base,
5
- heading
6
- };
7
- export {
8
- base,
9
- s as default,
10
- heading
11
- };
@@ -1,6 +0,0 @@
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;
@@ -1,11 +0,0 @@
1
- const base = "kbq-menuinner-0117f8";
2
- const divider = "kbq-menuinner-divider-acbe04";
3
- const s = {
4
- base,
5
- divider
6
- };
7
- export {
8
- base,
9
- s as default,
10
- divider
11
- };
@@ -1 +0,0 @@
1
- export * from './MenuInner';
@@ -1,11 +0,0 @@
1
- const base = "kbq-menusection-6a5530";
2
- const heading = "kbq-menusection-heading-2be1f1";
3
- const s = {
4
- base,
5
- heading
6
- };
7
- export {
8
- base,
9
- s as default,
10
- heading
11
- };