@koobiq/react-components 0.0.1-beta.2 → 0.0.1-beta.21

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 (203) hide show
  1. package/dist/components/Alert/Alert.js +2 -2
  2. package/dist/components/Alert/components/AlertIcon/utils.js +1 -1
  3. package/dist/components/Alert/intl.json.js +2 -6
  4. package/dist/components/Alert/types.d.ts +2 -1
  5. package/dist/components/AnimatedIcon/AnimatedIcon.d.ts +4 -0
  6. package/dist/components/AnimatedIcon/AnimatedIcon.js +50 -0
  7. package/dist/components/AnimatedIcon/AnimatedIcon.module.css.js +11 -0
  8. package/dist/components/AnimatedIcon/index.d.ts +2 -0
  9. package/dist/components/AnimatedIcon/types.d.ts +19 -0
  10. package/dist/components/Button/Button.js +1 -1
  11. package/dist/components/Button/Button.module.css.js +2 -2
  12. package/dist/components/Button/types.d.ts +4 -5
  13. package/dist/components/ButtonToggleGroup/ButtonToggleGroup.d.ts +2 -0
  14. package/dist/components/ButtonToggleGroup/ButtonToggleGroup.js +130 -0
  15. package/dist/components/ButtonToggleGroup/ButtonToggleGroup.module.css.js +17 -0
  16. package/dist/components/ButtonToggleGroup/ButtonToggleGroupContext.d.ts +7 -0
  17. package/dist/components/ButtonToggleGroup/ButtonToggleGroupContext.js +12 -0
  18. package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.d.ts +2 -0
  19. package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.js +90 -0
  20. package/dist/components/ButtonToggleGroup/components/ButtonToggle/ButtonToggle.module.css.js +32 -0
  21. package/dist/components/ButtonToggleGroup/components/ButtonToggle/index.d.ts +2 -0
  22. package/dist/components/ButtonToggleGroup/components/ButtonToggle/types.d.ts +27 -0
  23. package/dist/components/ButtonToggleGroup/components/index.d.ts +1 -0
  24. package/dist/components/ButtonToggleGroup/index.d.ts +3 -0
  25. package/dist/components/ButtonToggleGroup/reducer.d.ts +23 -0
  26. package/dist/components/ButtonToggleGroup/reducer.js +25 -0
  27. package/dist/components/ButtonToggleGroup/types.d.ts +38 -0
  28. package/dist/components/ButtonToggleGroup/utils.d.ts +3 -0
  29. package/dist/components/ButtonToggleGroup/utils.js +19 -0
  30. package/dist/components/Checkbox/Checkbox.js +18 -8
  31. package/dist/components/Collections/Divider.d.ts +19 -0
  32. package/dist/components/Collections/Divider.js +14 -0
  33. package/dist/components/Collections/Header.d.ts +20 -0
  34. package/dist/components/Collections/Header.js +16 -0
  35. package/dist/components/Collections/Item.d.ts +14 -0
  36. package/dist/components/Collections/Item.js +10 -0
  37. package/dist/components/{List/ListSection.d.ts → Collections/Section.d.ts} +6 -6
  38. package/dist/components/Collections/Section.js +10 -0
  39. package/dist/components/Collections/index.d.ts +4 -0
  40. package/dist/components/Container/Container.js +2 -1
  41. package/dist/components/Container/utils.d.ts +1 -1
  42. package/dist/components/Dialog/Dialog.d.ts +9 -1
  43. package/dist/components/Dialog/Dialog.js +31 -17
  44. package/dist/components/Dialog/components/DialogBody.d.ts +13 -0
  45. package/dist/components/Dialog/components/{DialogContent.js → DialogBody.js} +9 -8
  46. package/dist/components/Dialog/components/DialogCloseButton.d.ts +14 -1
  47. package/dist/components/Dialog/components/DialogCloseButton.js +3 -6
  48. package/dist/components/Dialog/components/index.d.ts +1 -1
  49. package/dist/components/Dialog/index.d.ts +0 -1
  50. package/dist/components/Dialog/intl.json.js +2 -6
  51. package/dist/components/Divider/Divider.d.ts +4 -0
  52. package/dist/components/Divider/Divider.js +44 -0
  53. package/dist/components/Divider/Divider.module.css.js +29 -0
  54. package/dist/components/Divider/index.d.ts +2 -0
  55. package/dist/components/Divider/types.d.ts +26 -0
  56. package/dist/components/Divider/types.js +6 -0
  57. package/dist/components/FieldComponents/FieldControl/FieldControl.d.ts +1 -1
  58. package/dist/components/FieldComponents/FieldInputGroup/FieldInputGroup.d.ts +8 -2
  59. package/dist/components/FieldComponents/FieldInputGroup/FieldInputGroup.js +32 -30
  60. package/dist/components/FieldComponents/FieldNumberControl/FieldNumberControl.d.ts +1 -1
  61. package/dist/components/FieldComponents/FieldSelect/FieldSelect.d.ts +12 -0
  62. package/dist/components/FieldComponents/FieldSelect/FieldSelect.js +37 -0
  63. package/dist/components/FieldComponents/FieldSelect/FieldSelect.module.css.js +20 -0
  64. package/dist/components/FieldComponents/FieldSelect/index.d.ts +1 -0
  65. package/dist/components/FieldComponents/index.d.ts +1 -0
  66. package/dist/components/FlexBox/FlexBox.d.ts +4 -0
  67. package/dist/components/FlexBox/FlexBox.js +47 -0
  68. package/dist/components/FlexBox/index.d.ts +2 -0
  69. package/dist/components/FlexBox/types.d.ts +27 -0
  70. package/dist/components/Grid/Grid.d.ts +8 -2
  71. package/dist/components/Grid/Grid.js +5 -2
  72. package/dist/components/IconButton/types.d.ts +5 -4
  73. package/dist/components/Input/Input.d.ts +1 -0
  74. package/dist/components/Input/Input.js +11 -11
  75. package/dist/components/Input/types.d.ts +2 -1
  76. package/dist/components/Link/Link.js +13 -15
  77. package/dist/components/Link/types.d.ts +4 -4
  78. package/dist/components/List/List.d.ts +17 -3
  79. package/dist/components/List/List.js +32 -18
  80. package/dist/components/List/List.module.css.js +0 -3
  81. package/dist/components/List/components/ListItemText/ListItemText.js +26 -0
  82. package/dist/components/List/components/ListItemText/ListItemText.module.css.js +11 -0
  83. package/dist/components/List/components/ListOption/ListOption.d.ts +3 -2
  84. package/dist/components/List/components/ListOption/ListOption.js +11 -16
  85. package/dist/components/List/components/ListSection/ListSection.d.ts +3 -2
  86. package/dist/components/List/components/ListSection/ListSection.js +1 -4
  87. package/dist/components/List/index.d.ts +2 -2
  88. package/dist/components/List/types.d.ts +13 -2
  89. package/dist/components/Menu/Menu.d.ts +15 -0
  90. package/dist/components/Menu/Menu.js +68 -0
  91. package/dist/components/Menu/Menu.module.css.js +8 -0
  92. package/dist/components/Menu/components/MenuHeader/MenuHeader.d.ts +5 -0
  93. package/dist/components/Menu/components/MenuHeader/MenuHeader.js +9 -0
  94. package/dist/components/Menu/components/MenuHeader/index.d.ts +1 -0
  95. package/dist/components/Menu/components/MenuInner/MenuInner.d.ts +3 -0
  96. package/dist/components/Menu/components/MenuInner/MenuInner.js +45 -0
  97. package/dist/components/Menu/components/MenuInner/MenuInner.module.css.js +11 -0
  98. package/dist/components/Menu/components/MenuInner/index.d.ts +1 -0
  99. package/dist/components/Menu/components/MenuItem/MenuItem.d.ts +6 -0
  100. package/dist/components/Menu/components/MenuItem/MenuItem.js +36 -0
  101. package/dist/components/Menu/components/MenuItem/index.d.ts +1 -0
  102. package/dist/components/Menu/components/MenuSection/MenuSection.d.ts +6 -0
  103. package/dist/components/Menu/components/MenuSection/MenuSection.js +30 -0
  104. package/dist/components/Menu/components/MenuSection/MenuSection.module.css.js +11 -0
  105. package/dist/components/Menu/components/MenuSection/index.d.ts +1 -0
  106. package/dist/components/Menu/components/index.d.ts +1 -0
  107. package/dist/components/Menu/index.d.ts +2 -0
  108. package/dist/components/Menu/types.d.ts +62 -0
  109. package/dist/components/Menu/types.js +4 -0
  110. package/dist/components/Modal/Modal.d.ts +9 -1
  111. package/dist/components/Modal/Modal.js +21 -16
  112. package/dist/components/Modal/index.d.ts +15 -2
  113. package/dist/components/Modal/index.js +9 -0
  114. package/dist/components/Modal/types.d.ts +7 -0
  115. package/dist/components/Popover/Popover.d.ts +12 -2
  116. package/dist/components/Popover/Popover.js +143 -128
  117. package/dist/components/Popover/Popover.module.css.js +3 -0
  118. package/dist/components/Popover/index.d.ts +15 -2
  119. package/dist/components/Popover/index.js +9 -0
  120. package/dist/components/Popover/types.d.ts +28 -4
  121. package/dist/components/Popover/types.js +9 -1
  122. package/dist/components/ProgressBar/ProgressBar.module.css.js +1 -2
  123. package/dist/components/ProgressSpinner/ProgressSpinner.module.css.js +1 -2
  124. package/dist/components/Provider/BreakpointsProvider.d.ts +2 -1
  125. package/dist/components/Provider/BreakpointsProvider.js +8 -1
  126. package/dist/components/Provider/Provider.d.ts +1 -1
  127. package/dist/components/Provider/Provider.js +9 -1
  128. package/dist/components/Provider/types.d.ts +5 -0
  129. package/dist/components/Provider/utils/useBreakpoints.d.ts +2 -1
  130. package/dist/components/Provider/utils/useBreakpoints.js +2 -2
  131. package/dist/components/RadioGroup/RadioContext.js +1 -0
  132. package/dist/components/RadioGroup/RadioGroup.js +2 -1
  133. package/dist/components/RadioGroup/components/Radio/Radio.js +3 -2
  134. package/dist/components/RadioGroup/components/Radio/Radio.module.css.js +3 -0
  135. package/dist/components/Select/Select.d.ts +11 -0
  136. package/dist/components/Select/Select.js +179 -0
  137. package/dist/components/Select/Select.module.css.js +20 -0
  138. package/dist/components/Select/index.d.ts +2 -0
  139. package/dist/components/Select/types.d.ts +87 -0
  140. package/dist/components/SidePanel/SidePanel.d.ts +9 -1
  141. package/dist/components/SidePanel/SidePanel.js +24 -19
  142. package/dist/components/SidePanel/index.d.ts +15 -2
  143. package/dist/components/SidePanel/index.js +9 -0
  144. package/dist/components/SidePanel/types.d.ts +7 -0
  145. package/dist/components/SkeletonBlock/SkeletonBlock.module.css.js +0 -1
  146. package/dist/components/SkeletonTypography/utils.js +3 -0
  147. package/dist/components/TagGroup/Tag.d.ts +24 -0
  148. package/dist/components/TagGroup/Tag.js +10 -0
  149. package/dist/components/TagGroup/TagGroup.d.ts +2 -0
  150. package/dist/components/TagGroup/TagGroup.js +22 -0
  151. package/dist/components/TagGroup/TagGroup.module.css.js +8 -0
  152. package/dist/components/TagGroup/components/TagInner/TagInner.d.ts +11 -0
  153. package/dist/components/TagGroup/components/TagInner/TagInner.js +86 -0
  154. package/dist/components/TagGroup/components/TagInner/TagInner.module.css.js +30 -0
  155. package/dist/components/TagGroup/components/TagInner/index.d.ts +1 -0
  156. package/dist/components/TagGroup/components/TagInner/utils.d.ts +3 -0
  157. package/dist/components/TagGroup/components/TagInner/utils.js +9 -0
  158. package/dist/components/TagGroup/components/index.d.ts +1 -0
  159. package/dist/components/TagGroup/index.d.ts +3 -0
  160. package/dist/components/TagGroup/intl.json.js +7 -0
  161. package/dist/components/TagGroup/types.d.ts +37 -0
  162. package/dist/components/TagGroup/types.js +9 -0
  163. package/dist/components/Toggle/Toggle.js +1 -1
  164. package/dist/components/Tooltip/Tooltip.d.ts +2 -1
  165. package/dist/components/Tooltip/Tooltip.js +9 -8
  166. package/dist/components/Tooltip/types.d.ts +9 -4
  167. package/dist/components/Typography/Typography.js +2 -2
  168. package/dist/components/Typography/Typography.module.css.js +2 -1
  169. package/dist/components/Typography/types.d.ts +7 -2
  170. package/dist/components/Typography/types.js +2 -1
  171. package/dist/components/index.d.ts +8 -0
  172. package/dist/components/layout/flex/flex.d.ts +15 -4
  173. package/dist/components/layout/flex/flex.js +6 -1
  174. package/dist/components/layout/flex/flex.module.css.js +78 -39
  175. package/dist/index.js +51 -23
  176. package/dist/style.css +862 -350
  177. package/dist/styles/utility.d.ts +2 -0
  178. package/dist/styles/utility.js +3 -2
  179. package/dist/styles/utility.module.css.js +5 -2
  180. package/dist/types.d.ts +1 -0
  181. package/package.json +11 -6
  182. package/dist/components/Dialog/DialogContext.d.ts +0 -9
  183. package/dist/components/Dialog/DialogContext.js +0 -12
  184. package/dist/components/Dialog/components/DialogContent.d.ts +0 -12
  185. package/dist/components/Input/components/FieldAddon/FieldAddon.d.ts +0 -10
  186. package/dist/components/Input/components/FieldAddon/index.d.ts +0 -1
  187. package/dist/components/Input/components/FieldCaption/FieldCaption.d.ts +0 -6
  188. package/dist/components/Input/components/FieldCaption/index.d.ts +0 -1
  189. package/dist/components/Input/components/FieldControl/FieldControl.d.ts +0 -9
  190. package/dist/components/Input/components/FieldControl/index.d.ts +0 -1
  191. package/dist/components/Input/components/FieldError/FieldError.d.ts +0 -7
  192. package/dist/components/Input/components/FieldError/index.d.ts +0 -1
  193. package/dist/components/Input/components/FieldInput/FieldInput.d.ts +0 -9
  194. package/dist/components/Input/components/FieldInput/index.d.ts +0 -1
  195. package/dist/components/Input/components/FieldInputGroup/FieldInputGroup.d.ts +0 -7
  196. package/dist/components/Input/components/FieldInputGroup/index.d.ts +0 -1
  197. package/dist/components/Input/components/FieldLabel/FieldLabel.d.ts +0 -9
  198. package/dist/components/Input/components/FieldLabel/index.d.ts +0 -1
  199. package/dist/components/Input/components/index.d.ts +0 -7
  200. package/dist/components/List/ListItem.d.ts +0 -11
  201. package/dist/components/List/ListItem.js +0 -11
  202. package/dist/components/List/ListSection.js +0 -11
  203. package/dist/components/List/components/ListOption/ListOption.module.css.js +0 -23
@@ -2,146 +2,161 @@
2
2
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
3
3
  import { forwardRef, useRef, cloneElement, isValidElement } from "react";
4
4
  import { useDOMRef, useBoolean, mergeProps, clsx } from "@koobiq/react-core";
5
- import { useOverlayTriggerState, useOverlayTrigger, usePopover, Overlay } from "@koobiq/react-primitives";
5
+ import { useOverlayTrigger, usePopover, Overlay, useOverlayTriggerState } from "@koobiq/react-primitives";
6
6
  import { Transition } from "react-transition-group";
7
7
  import s from "./Popover.module.css.js";
8
8
  import { normalizeInlineSize } from "./utils.js";
9
9
  import { Dialog } from "../Dialog/Dialog.js";
10
- const Popover = forwardRef(
11
- (props, ref) => {
12
- const {
13
- placement: placementProp = "top",
14
- arrowBoundaryOffset = 20,
15
- hideArrow = false,
16
- size = "medium",
17
- crossOffset = 0,
18
- offset = 0,
19
- slotProps,
20
- disableExitOnEscapeKeyDown,
21
- disableFocusManagement,
22
- portalContainer,
23
- hideCloseButton,
24
- open: openProp,
25
- className,
26
- defaultOpen,
27
- onOpenChange,
10
+ const PopoverInner = (props) => {
11
+ const {
12
+ offset = 0,
13
+ size = "medium",
14
+ crossOffset = 0,
15
+ hideArrow = false,
16
+ containerPadding = 12,
17
+ arrowBoundaryOffset = 20,
18
+ placement: placementProp = "top",
19
+ type = "dialog",
20
+ state,
21
+ control,
22
+ children,
23
+ anchorRef,
24
+ slotProps,
25
+ className,
26
+ isNonModal,
27
+ popoverRef,
28
+ portalContainer,
29
+ hideCloseButton,
30
+ disableFocusManagement,
31
+ disableExitOnEscapeKeyDown,
32
+ shouldCloseOnInteractOutside,
33
+ ...other
34
+ } = props;
35
+ const showArrow = !hideArrow;
36
+ const domRef = useDOMRef(popoverRef);
37
+ const controlRef = useRef(null);
38
+ const openState = state.isOpen;
39
+ const [opened, { on, off }] = useBoolean(openState);
40
+ const { triggerProps, overlayProps } = useOverlayTrigger(
41
+ { type },
42
+ { ...state, isOpen: openState }
43
+ );
44
+ const {
45
+ popoverProps,
46
+ underlayProps,
47
+ arrowProps: arrowPropsCommon,
48
+ placement
49
+ } = usePopover(
50
+ {
51
+ ...props,
52
+ offset,
28
53
  isNonModal,
29
- anchorRef,
30
- children,
31
- control,
32
- ...other
33
- } = props;
34
- const showArrow = !hideArrow;
35
- const domRef = useDOMRef(ref);
36
- const controlRef = useRef(null);
37
- const state = useOverlayTriggerState({
38
- isOpen: openProp,
39
- onOpenChange,
40
- defaultOpen,
41
- ...other
42
- });
43
- const openState = state.isOpen;
44
- const [opened, { on, off }] = useBoolean(openState);
45
- const { triggerProps, overlayProps } = useOverlayTrigger(
46
- { type: "dialog" },
47
- { ...state, isOpen: openState }
48
- );
49
- const {
50
- popoverProps,
51
- underlayProps,
52
- arrowProps: arrowPropsCommon,
53
- placement
54
- } = usePopover(
55
- {
56
- ...props,
57
- offset,
58
- isNonModal,
59
- crossOffset,
60
- maxHeight: 480,
61
- popoverRef: domRef,
62
- arrowBoundaryOffset,
63
- containerPadding: 24,
64
- placement: placementProp,
65
- isKeyboardDismissDisabled: disableExitOnEscapeKeyDown,
66
- triggerRef: anchorRef || controlRef
67
- },
68
- { ...state, isOpen: opened }
69
- );
70
- const resolvedChildren = () => {
71
- if (typeof children === "function")
72
- return cloneElement(children({ close: state.close }), overlayProps);
73
- if (isValidElement(children)) return cloneElement(children, overlayProps);
74
- return children;
75
- };
76
- const { isDisabled, onPress, ...otherTriggerProps } = triggerProps;
77
- const arrowProps = mergeProps(
78
- { className: s.arrow },
79
- arrowPropsCommon,
80
- slotProps?.arrow
81
- );
82
- const dialogProps = mergeProps(
54
+ crossOffset,
55
+ maxHeight: 480,
56
+ containerPadding,
57
+ popoverRef: domRef,
58
+ arrowBoundaryOffset,
59
+ placement: placementProp,
60
+ shouldCloseOnInteractOutside,
61
+ triggerRef: anchorRef || controlRef,
62
+ isKeyboardDismissDisabled: disableExitOnEscapeKeyDown
63
+ },
64
+ { ...state, isOpen: openState || opened }
65
+ );
66
+ const resolvedChildren = () => {
67
+ if (typeof children === "function")
68
+ return cloneElement(children({ close: state.close }), overlayProps);
69
+ if (isValidElement(children)) return cloneElement(children, overlayProps);
70
+ return children;
71
+ };
72
+ const { isDisabled, ...otherTriggerProps } = triggerProps;
73
+ const arrowProps = mergeProps(
74
+ { className: s.arrow },
75
+ arrowPropsCommon,
76
+ slotProps?.arrow
77
+ );
78
+ const dialogProps = mergeProps(
79
+ {
80
+ role: "dialog",
81
+ hideCloseButton,
82
+ className: s.dialog,
83
+ onClose: state.close
84
+ },
85
+ slotProps?.dialog
86
+ );
87
+ const backdropProps = mergeProps(
88
+ { className: s.underlay },
89
+ slotProps?.backdrop,
90
+ underlayProps
91
+ );
92
+ const transitionProps = mergeProps(
93
+ {
94
+ timeout: 120,
95
+ onEnter: on,
96
+ onExited: off,
97
+ appear: true,
98
+ in: openState,
99
+ nodeRef: domRef,
100
+ unmountOnExit: true
101
+ },
102
+ slotProps?.transition
103
+ );
104
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
105
+ control?.({
106
+ ref: controlRef,
107
+ disabled: isDisabled,
108
+ ...otherTriggerProps
109
+ }),
110
+ /* @__PURE__ */ jsx(Transition, { ...transitionProps, children: (transition) => /* @__PURE__ */ jsxs(
111
+ Overlay,
83
112
  {
84
- role: "dialog",
85
- className: s.dialog,
86
- onClose: state.close,
87
- hideCloseButton
88
- },
89
- slotProps?.dialog
90
- );
91
- return /* @__PURE__ */ jsxs(Fragment, { children: [
92
- control?.({
93
- onClick: onPress,
94
- ref: controlRef,
95
- disabled: isDisabled,
96
- ...otherTriggerProps
97
- }),
98
- /* @__PURE__ */ jsx(
99
- Transition,
100
- {
101
- onEnter: on,
102
- timeout: 300,
103
- onExited: off,
104
- in: openState,
105
- nodeRef: domRef,
106
- unmountOnExit: true,
107
- appear: true,
108
- children: (transition) => /* @__PURE__ */ jsxs(
109
- Overlay,
113
+ portalContainer,
114
+ disableFocusManagement,
115
+ children: [
116
+ /* @__PURE__ */ jsx("div", { ...backdropProps }),
117
+ /* @__PURE__ */ jsxs(
118
+ "div",
110
119
  {
111
- portalContainer,
112
- disableFocusManagement,
120
+ ref: domRef,
121
+ "data-size": size,
122
+ "data-arrow": showArrow,
123
+ "data-placement": placement,
124
+ "data-transition": transition,
125
+ className: clsx(s.base, s[size], className),
126
+ ...mergeProps(popoverProps, other),
127
+ style: {
128
+ ...popoverProps.style,
129
+ "--popover-inline-size": normalizeInlineSize(size)
130
+ },
113
131
  children: [
114
- /* @__PURE__ */ jsx("div", { ...underlayProps, className: s.underlay }),
115
- /* @__PURE__ */ jsxs(
116
- "div",
117
- {
118
- ref: domRef,
119
- "data-size": size,
120
- "data-arrow": showArrow,
121
- "data-placement": placement,
122
- "data-transition": transition,
123
- className: clsx(s.base, s[size], className),
124
- ...mergeProps(popoverProps, other),
125
- style: {
126
- ...popoverProps.style,
127
- "--popover-inline-size": normalizeInlineSize(size)
128
- },
129
- children: [
130
- showArrow && /* @__PURE__ */ jsx("div", { ...arrowProps, "data-placement": placement }),
131
- /* @__PURE__ */ jsx(Dialog, { ...dialogProps, children: resolvedChildren() })
132
- ]
133
- }
134
- )
132
+ showArrow && /* @__PURE__ */ jsx("div", { ...arrowProps, "data-placement": placement }),
133
+ /* @__PURE__ */ jsx("div", { className: s.container, children: type === "dialog" ? /* @__PURE__ */ jsx(Dialog, { ...dialogProps, children: resolvedChildren() }) : resolvedChildren() })
135
134
  ]
136
135
  }
137
136
  )
138
- },
139
- placement
140
- )
141
- ] });
137
+ ]
138
+ }
139
+ ) })
140
+ ] });
141
+ };
142
+ const PopoverComponent = forwardRef(
143
+ (props, ref) => {
144
+ const { open, onOpenChange, defaultOpen, ...other } = props;
145
+ const state = useOverlayTriggerState({
146
+ isOpen: open,
147
+ onOpenChange,
148
+ defaultOpen,
149
+ ...other
150
+ });
151
+ return /* @__PURE__ */ jsx(PopoverInner, { popoverRef: ref, ...other, state });
142
152
  }
143
153
  );
144
- Popover.displayName = "Popover";
154
+ PopoverComponent.displayName = "Popover";
155
+ const Popover = PopoverComponent;
156
+ Popover.Header = Dialog.Header;
157
+ Popover.Body = Dialog.Body;
158
+ Popover.Footer = Dialog.Footer;
145
159
  export {
146
- Popover
160
+ Popover,
161
+ PopoverInner
147
162
  };
@@ -1,9 +1,11 @@
1
1
  const base = "kbq-popover-f14dc5";
2
+ const container = "kbq-popover-container-332b0b";
2
3
  const arrow = "kbq-popover-arrow-3bdadb";
3
4
  const underlay = "kbq-popover-underlay-9c5b07";
4
5
  const dialog = "kbq-popover-dialog-e39a6d";
5
6
  const s = {
6
7
  base,
8
+ container,
7
9
  arrow,
8
10
  underlay,
9
11
  dialog
@@ -11,6 +13,7 @@ const s = {
11
13
  export {
12
14
  arrow,
13
15
  base,
16
+ container,
14
17
  s as default,
15
18
  dialog,
16
19
  underlay
@@ -1,4 +1,17 @@
1
1
  export * from './Popover';
2
2
  export * from './types';
3
- export { DialogHeader, DialogFooter, DialogContent } from '../Dialog';
4
- export { DialogHeader as PopoverHeader, DialogContent as PopoverContent, DialogFooter as PopoverFooter, } from '../Dialog';
3
+ /**
4
+ * @deprecated
5
+ * This component has been deprecated, please use `Popover.Header` instead.
6
+ */
7
+ export declare const PopoverHeader: import("react").ForwardRefExoticComponent<Omit<import("../Dialog").DialogHeaderProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
8
+ /**
9
+ * @deprecated
10
+ * This component has been deprecated, please use `Popover.Body` instead.
11
+ */
12
+ export declare const PopoverContent: import("react").ForwardRefExoticComponent<Omit<import("../Dialog").DialogBodyProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
13
+ /**
14
+ * @deprecated
15
+ * This component has been deprecated, please use `Popover.Footer` instead.
16
+ */
17
+ export declare const PopoverFooter: import("react").ForwardRefExoticComponent<Omit<import("../Dialog").DialogFooterProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,9 @@
1
+ import { Dialog } from "../Dialog/Dialog.js";
2
+ const PopoverHeader = Dialog.Header;
3
+ const PopoverContent = Dialog.Body;
4
+ const PopoverFooter = Dialog.Footer;
5
+ export {
6
+ PopoverContent,
7
+ PopoverFooter,
8
+ PopoverHeader
9
+ };
@@ -1,5 +1,6 @@
1
1
  import type { ComponentPropsWithRef, CSSProperties, ReactElement, ReactNode, Ref, RefObject } from 'react';
2
- import type { ButtonOptions } from '@koobiq/react-primitives';
2
+ import type { ButtonOptions, OverlayTriggerState } from '@koobiq/react-primitives';
3
+ import type { TransitionProps } from 'react-transition-group/Transition';
3
4
  import type { DialogProps } from '../Dialog';
4
5
  export type PopoverPropContent = ReactNode | ((props: {
5
6
  close(): void;
@@ -11,14 +12,16 @@ export declare const popoverPropPlacement: readonly ["bottom", "bottom start", "
11
12
  export type PopoverPropPlacement = (typeof popoverPropPlacement)[number];
12
13
  export declare const popoverPropSize: readonly ["small", "medium", "large"];
13
14
  export type PopoverPropSize = (typeof popoverPropSize)[number] | CSSProperties['inlineSize'];
14
- export type PopoverProps = {
15
+ export declare const popoverPropType: readonly ["dialog", "menu", "listbox", "tree", "grid"];
16
+ export type PopoverPropType = (typeof popoverPropType)[number];
17
+ export type PopoverBaseProps = {
15
18
  /** If `true`, the component is shown. */
16
19
  open?: boolean;
17
20
  /** The default open state. Use when the component is not controlled. */
18
21
  defaultOpen?: boolean;
19
22
  /** The content of the component. */
20
23
  children?: PopoverPropContent;
21
- /** The render function of the control for displaying the modal window. */
24
+ /** The render function of the control for displaying the popover. */
22
25
  control?: PopoverPropControl;
23
26
  /**
24
27
  * Component width size.
@@ -57,7 +60,7 @@ export type PopoverProps = {
57
60
  * */
58
61
  placement?: PopoverPropPlacement;
59
62
  /** The ref for the element which the popover positions itself with respect to. */
60
- anchorRef?: RefObject<HTMLElement>;
63
+ anchorRef?: RefObject<HTMLElement | null>;
61
64
  /**
62
65
  * If `true`, the arrow isn't shown.
63
66
  * @default false
@@ -77,6 +80,12 @@ export type PopoverProps = {
77
80
  * @default 0
78
81
  */
79
82
  arrowBoundaryOffset?: number;
83
+ /**
84
+ * The placement padding that should be applied between the element and its
85
+ * surrounding container.
86
+ * @default 12
87
+ */
88
+ containerPadding?: number;
80
89
  /**
81
90
  * The additional offset applied along the main axis between the element and its
82
91
  * anchor element.
@@ -89,9 +98,24 @@ export type PopoverProps = {
89
98
  * @default 0
90
99
  */
91
100
  crossOffset?: number;
101
+ /**
102
+ * When user interacts with the argument element outside of the popover ref,
103
+ * return true if onClose should be called. This gives you a chance to filter
104
+ * out interaction with elements that should not dismiss the popover.
105
+ * By default, onClose will always be called on interaction outside the popover ref.
106
+ */
107
+ shouldCloseOnInteractOutside?: (element: Element) => boolean;
108
+ type?: PopoverPropType;
92
109
  /** The props used for each slot inside. */
93
110
  slotProps?: {
94
111
  dialog?: DialogProps;
95
112
  arrow?: ComponentPropsWithRef<'div'>;
113
+ backdrop?: ComponentPropsWithRef<'div'>;
114
+ transition?: TransitionProps<HTMLElement>;
96
115
  };
97
116
  };
117
+ export type PopoverInnerProps = {
118
+ state: OverlayTriggerState;
119
+ popoverRef?: Ref<HTMLDivElement>;
120
+ } & Omit<PopoverBaseProps, 'ref'>;
121
+ export type PopoverProps = PopoverBaseProps;
@@ -13,7 +13,15 @@ const popoverPropPlacement = [
13
13
  "end bottom"
14
14
  ];
15
15
  const popoverPropSize = ["small", "medium", "large"];
16
+ const popoverPropType = [
17
+ "dialog",
18
+ "menu",
19
+ "listbox",
20
+ "tree",
21
+ "grid"
22
+ ];
16
23
  export {
17
24
  popoverPropPlacement,
18
- popoverPropSize
25
+ popoverPropSize,
26
+ popoverPropType
19
27
  };
@@ -4,8 +4,7 @@ const indeterminate = "kbq-progressbar-indeterminate-80b42e";
4
4
  const s = {
5
5
  base,
6
6
  fill,
7
- indeterminate,
8
- "progress-bar-animation": "kbq-progressbar-progress-bar-animation-6e2ae1"
7
+ indeterminate
9
8
  };
10
9
  export {
11
10
  base,
@@ -6,8 +6,7 @@ const s = {
6
6
  base,
7
7
  spin,
8
8
  circle,
9
- indeterminate,
10
- "progress-spin-animation": "kbq-progressspinner-progress-spin-animation-82d376"
9
+ indeterminate
11
10
  };
12
11
  export {
13
12
  base,
@@ -3,8 +3,9 @@ import type { Breakpoints } from './types';
3
3
  export type BreakpointsProviderProps = {
4
4
  children: ReactNode;
5
5
  breakpoints: Breakpoints;
6
+ defaultMatches?: boolean[];
6
7
  };
7
8
  export declare const BreakpointsProvider: {
8
- ({ children, breakpoints: _breakpoints, }: BreakpointsProviderProps): import("react/jsx-runtime").JSX.Element;
9
+ ({ children, defaultMatches, breakpoints: _breakpoints, }: BreakpointsProviderProps): import("react/jsx-runtime").JSX.Element;
9
10
  displayName: string;
10
11
  };
@@ -4,9 +4,16 @@ import { BreakpointsContext } from "./BreakpointsContext.js";
4
4
  import { useBreakpoints } from "./utils/useBreakpoints.js";
5
5
  const BreakpointsProvider = ({
6
6
  children,
7
+ defaultMatches,
7
8
  breakpoints: _breakpoints
8
9
  }) => {
9
- const breakpoints = useBreakpoints(_breakpoints);
10
+ const breakpoints = useBreakpoints(
11
+ _breakpoints,
12
+ defaultMatches && {
13
+ ssr: true,
14
+ defaultMatches
15
+ }
16
+ );
10
17
  return /* @__PURE__ */ jsx(BreakpointsContext.Provider, { value: breakpoints, children });
11
18
  };
12
19
  BreakpointsProvider.displayName = "BreakpointsProvider";
@@ -1,6 +1,6 @@
1
1
  import type { Breakpoints, ProviderProps } from './types';
2
2
  export declare const defaultBreakpoints: Breakpoints;
3
3
  export declare const Provider: {
4
- ({ breakpoints, children, locale, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
4
+ ({ breakpoints, breakpointsFallback, children, locale, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
5
5
  displayName: string;
6
6
  };
@@ -19,9 +19,17 @@ const defaultBreakpoints = {
19
19
  };
20
20
  const Provider = ({
21
21
  breakpoints = defaultBreakpoints,
22
+ breakpointsFallback,
22
23
  children,
23
24
  locale
24
- }) => /* @__PURE__ */ jsx(ProviderContext.Provider, { value: { breakpoints, locale }, children: /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(BreakpointsProvider, { breakpoints, children }) }) });
25
+ }) => /* @__PURE__ */ jsx(ProviderContext.Provider, { value: { breakpoints, locale }, children: /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(
26
+ BreakpointsProvider,
27
+ {
28
+ breakpoints,
29
+ defaultMatches: breakpointsFallback,
30
+ children
31
+ }
32
+ ) }) });
25
33
  Provider.displayName = "Provider";
26
34
  export {
27
35
  Provider,
@@ -10,7 +10,12 @@ export type Breakpoints = {
10
10
  [custom: string]: number | undefined;
11
11
  };
12
12
  export type ProviderProps = {
13
+ /** The content of the component. */
13
14
  children?: ReactNode;
15
+ /** Responsive breakpoints for your application. */
14
16
  breakpoints?: Breakpoints;
17
+ /** SSR-fallback for responsive breakpoints for your application. */
18
+ breakpointsFallback?: boolean[];
19
+ /** The locale for your application as a [BCP 47](https://www.ietf.org/rfc/bcp/bcp47.txt) language code. Defaults to the browser/OS language setting. */
15
20
  locale?: I18nProviderProps['locale'];
16
21
  };
@@ -1,2 +1,3 @@
1
+ import type { UseMediaQueryOptions } from '@koobiq/react-core';
1
2
  import type { Breakpoints } from '../types';
2
- export declare function useBreakpoints(breakpoints: Breakpoints): {};
3
+ export declare function useBreakpoints(breakpoints: Breakpoints, options?: UseMediaQueryOptions): {};
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { useMediaQuery } from "@koobiq/react-core";
3
- function useBreakpoints(breakpoints) {
3
+ function useBreakpoints(breakpoints, options) {
4
4
  const queries = Object.values(breakpoints).map(
5
5
  (width) => `(min-width: ${width}px)`
6
6
  );
7
- const matches = useMediaQuery(queries);
7
+ const matches = useMediaQuery(queries, options);
8
8
  return Object.keys(breakpoints).reduce(
9
9
  (acc, item, index) => ({ ...acc, [item]: matches[index] }),
10
10
  {}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext, useContext } from "react";
2
3
  const RadioGroupContext = createContext(
3
4
  {}
@@ -1,11 +1,12 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import { forwardRef } from "react";
3
4
  import { mergeProps, clsx } from "@koobiq/react-core";
4
5
  import { RadioGroup as RadioGroup$1 } from "@koobiq/react-primitives";
5
- import { flex } from "../layout/flex/flex.js";
6
6
  import { RadioGroupLabel } from "./components/RadioGroupLabel/RadioGroupLabel.js";
7
7
  import { RadioGroupContext } from "./RadioContext.js";
8
8
  import { RadioGroupDescription } from "./components/RadioGroupDescription/RadioGroupDescription.js";
9
+ import { flex } from "../layout/flex/flex.js";
9
10
  const RadioGroup = forwardRef(
10
11
  (props, ref) => {
11
12
  const { size, label, children, slotProps, description, orientation } = props;
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { clsx, mergeProps, isNotNil } from "@koobiq/react-core";
3
+ import { mergeProps, isNotNil, clsx } from "@koobiq/react-core";
4
+ import { IconCircleXs16 } from "@koobiq/react-icons";
4
5
  import { Radio as Radio$1 } from "@koobiq/react-primitives";
5
6
  import s from "./Radio.module.css.js";
6
7
  import { useRadioGroupState } from "../../RadioContext.js";
@@ -33,7 +34,7 @@ const Radio = forwardRef(
33
34
  const circleProps = mergeProps({ className: s.circle }, slotProps?.circle);
34
35
  const labelProps = slotProps?.label;
35
36
  return /* @__PURE__ */ jsxs(Radio$1, { ...commonProps, ref, children: [
36
- /* @__PURE__ */ jsx("span", { ...circleProps }),
37
+ /* @__PURE__ */ jsx("span", { ...circleProps, children: /* @__PURE__ */ jsx(IconCircleXs16, { className: s.icon }) }),
37
38
  isNotNil(children) && /* @__PURE__ */ jsx("span", { ...labelProps, children })
38
39
  ] });
39
40
  }
@@ -1,5 +1,6 @@
1
1
  const base = "kbq-radio-c3ed31";
2
2
  const circle = "kbq-radio-circle-a0903b";
3
+ const icon = "kbq-radio-icon-148a68";
3
4
  const normal = "kbq-radio-normal-81ed3e";
4
5
  const big = "kbq-radio-big-06db10";
5
6
  const hovered = "kbq-radio-hovered-3999f1";
@@ -12,6 +13,7 @@ const end = "kbq-radio-end-8689f9";
12
13
  const s = {
13
14
  base,
14
15
  circle,
16
+ icon,
15
17
  normal,
16
18
  big,
17
19
  hovered,
@@ -33,6 +35,7 @@ export {
33
35
  error,
34
36
  focusVisible,
35
37
  hovered,
38
+ icon,
36
39
  normal,
37
40
  start
38
41
  };
@@ -0,0 +1,11 @@
1
+ import { Item, Section } from '../Collections';
2
+ import { ListItemText } from '../List';
3
+ import type { SelectComponentProp } from './index';
4
+ declare const SelectComponent: SelectComponentProp;
5
+ type CompoundedComponent = typeof SelectComponent & {
6
+ Item: typeof Item;
7
+ Section: typeof Section;
8
+ ItemText: typeof ListItemText;
9
+ };
10
+ export declare const Select: CompoundedComponent;
11
+ export {};