@basic-ui/core 0.0.60 → 0.0.61

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 (214) hide show
  1. package/build/cjs/index.js.map +1 -1
  2. package/build/esm/Accordion/AccordionBody.d.ts.map +1 -1
  3. package/build/esm/Accordion/AccordionBody.js +6 -26
  4. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  5. package/build/esm/Accordion/AccordionHeader.d.ts.map +1 -1
  6. package/build/esm/Accordion/AccordionHeader.js +21 -69
  7. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  8. package/build/esm/Accordion/AccordionItem.d.ts.map +1 -1
  9. package/build/esm/Accordion/AccordionItem.js +31 -18
  10. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  11. package/build/esm/Accordion/context.d.ts +0 -8
  12. package/build/esm/Accordion/context.d.ts.map +1 -1
  13. package/build/esm/Accordion/context.js +0 -11
  14. package/build/esm/Accordion/context.js.map +1 -1
  15. package/build/esm/Accordion/scopeQuery.d.ts +1 -0
  16. package/build/esm/Accordion/scopeQuery.d.ts.map +1 -1
  17. package/build/esm/Accordion/scopeQuery.js +3 -0
  18. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  19. package/build/esm/Collapsible/Collapsible.d.ts +13 -0
  20. package/build/esm/Collapsible/Collapsible.d.ts.map +1 -0
  21. package/build/esm/Collapsible/Collapsible.js +53 -0
  22. package/build/esm/Collapsible/Collapsible.js.map +1 -0
  23. package/build/esm/Collapsible/CollapsiblePanel.d.ts +10 -0
  24. package/build/esm/Collapsible/CollapsiblePanel.d.ts.map +1 -0
  25. package/build/esm/Collapsible/CollapsiblePanel.js +85 -0
  26. package/build/esm/Collapsible/CollapsiblePanel.js.map +1 -0
  27. package/build/esm/Collapsible/CollapsibleTrigger.d.ts +11 -0
  28. package/build/esm/Collapsible/CollapsibleTrigger.d.ts.map +1 -0
  29. package/build/esm/Collapsible/CollapsibleTrigger.js +51 -0
  30. package/build/esm/Collapsible/CollapsibleTrigger.js.map +1 -0
  31. package/build/esm/Collapsible/context.d.ts +16 -0
  32. package/build/esm/Collapsible/context.d.ts.map +1 -0
  33. package/build/esm/Collapsible/context.js +11 -0
  34. package/build/esm/Collapsible/context.js.map +1 -0
  35. package/build/esm/Collapsible/index.d.ts +4 -0
  36. package/build/esm/Collapsible/index.d.ts.map +1 -0
  37. package/build/esm/Collapsible/index.js +4 -0
  38. package/build/esm/Collapsible/index.js.map +1 -0
  39. package/build/esm/Menu/Menu.d.ts +3 -2
  40. package/build/esm/Menu/Menu.d.ts.map +1 -1
  41. package/build/esm/Menu/Menu.js +64 -4
  42. package/build/esm/Menu/Menu.js.map +1 -1
  43. package/build/esm/Menu/MenuButton.d.ts.map +1 -1
  44. package/build/esm/Menu/MenuButton.js +85 -8
  45. package/build/esm/Menu/MenuButton.js.map +1 -1
  46. package/build/esm/Menu/MenuItem.d.ts.map +1 -1
  47. package/build/esm/Menu/MenuItem.js +16 -4
  48. package/build/esm/Menu/MenuItem.js.map +1 -1
  49. package/build/esm/Menu/MenuList.d.ts.map +1 -1
  50. package/build/esm/Menu/MenuList.js +47 -12
  51. package/build/esm/Menu/MenuList.js.map +1 -1
  52. package/build/esm/Menu/MenuPopover.d.ts.map +1 -1
  53. package/build/esm/Menu/MenuPopover.js +12 -1
  54. package/build/esm/Menu/MenuPopover.js.map +1 -1
  55. package/build/esm/Menu/MenuSubmenuTrigger.d.ts +8 -0
  56. package/build/esm/Menu/MenuSubmenuTrigger.d.ts.map +1 -0
  57. package/build/esm/Menu/MenuSubmenuTrigger.js +131 -0
  58. package/build/esm/Menu/MenuSubmenuTrigger.js.map +1 -0
  59. package/build/esm/Menu/context.d.ts +13 -3
  60. package/build/esm/Menu/context.d.ts.map +1 -1
  61. package/build/esm/Menu/context.js +1 -0
  62. package/build/esm/Menu/context.js.map +1 -1
  63. package/build/esm/Menu/index.d.ts +3 -0
  64. package/build/esm/Menu/index.d.ts.map +1 -1
  65. package/build/esm/Menu/index.js +2 -0
  66. package/build/esm/Menu/index.js.map +1 -1
  67. package/build/esm/Menu/scope.d.ts +1 -0
  68. package/build/esm/Menu/scope.d.ts.map +1 -1
  69. package/build/esm/Menu/scope.js +2 -1
  70. package/build/esm/Menu/scope.js.map +1 -1
  71. package/build/esm/MenuBar/MenuBar.d.ts +11 -0
  72. package/build/esm/MenuBar/MenuBar.d.ts.map +1 -0
  73. package/build/esm/MenuBar/MenuBar.js +153 -0
  74. package/build/esm/MenuBar/MenuBar.js.map +1 -0
  75. package/build/esm/MenuBar/context.d.ts +29 -0
  76. package/build/esm/MenuBar/context.d.ts.map +1 -0
  77. package/build/esm/MenuBar/context.js +7 -0
  78. package/build/esm/MenuBar/context.js.map +1 -0
  79. package/build/esm/MenuBar/index.d.ts +2 -0
  80. package/build/esm/MenuBar/index.d.ts.map +1 -0
  81. package/build/esm/MenuBar/index.js +2 -0
  82. package/build/esm/MenuBar/index.js.map +1 -0
  83. package/build/esm/Slider/Slider.d.ts +47 -1
  84. package/build/esm/Slider/Slider.d.ts.map +1 -1
  85. package/build/esm/Slider/Slider.js +91 -5
  86. package/build/esm/Slider/Slider.js.map +1 -1
  87. package/build/esm/ToggleGroup/ToggleGroup.d.ts +40 -0
  88. package/build/esm/ToggleGroup/ToggleGroup.d.ts.map +1 -0
  89. package/build/esm/ToggleGroup/ToggleGroup.js +113 -0
  90. package/build/esm/ToggleGroup/ToggleGroup.js.map +1 -0
  91. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts +10 -0
  92. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts.map +1 -0
  93. package/build/esm/ToggleGroup/ToggleGroupContext.js +6 -0
  94. package/build/esm/ToggleGroup/ToggleGroupContext.js.map +1 -0
  95. package/build/esm/ToggleGroup/index.d.ts +3 -0
  96. package/build/esm/ToggleGroup/index.d.ts.map +1 -0
  97. package/build/esm/ToggleGroup/index.js +3 -0
  98. package/build/esm/ToggleGroup/index.js.map +1 -0
  99. package/build/esm/Tree/Tree.d.ts +3 -0
  100. package/build/esm/Tree/Tree.d.ts.map +1 -0
  101. package/build/esm/Tree/Tree.js +730 -0
  102. package/build/esm/Tree/Tree.js.map +1 -0
  103. package/build/esm/Tree/TreeHeader.d.ts +3 -0
  104. package/build/esm/Tree/TreeHeader.d.ts.map +1 -0
  105. package/build/esm/Tree/TreeHeader.js +5 -0
  106. package/build/esm/Tree/TreeHeader.js.map +1 -0
  107. package/build/esm/Tree/TreeItem.d.ts +3 -0
  108. package/build/esm/Tree/TreeItem.d.ts.map +1 -0
  109. package/build/esm/Tree/TreeItem.js +5 -0
  110. package/build/esm/Tree/TreeItem.js.map +1 -0
  111. package/build/esm/Tree/TreeItemContent.d.ts +3 -0
  112. package/build/esm/Tree/TreeItemContent.d.ts.map +1 -0
  113. package/build/esm/Tree/TreeItemContent.js +69 -0
  114. package/build/esm/Tree/TreeItemContent.js.map +1 -0
  115. package/build/esm/Tree/TreeSection.d.ts +3 -0
  116. package/build/esm/Tree/TreeSection.d.ts.map +1 -0
  117. package/build/esm/Tree/TreeSection.js +5 -0
  118. package/build/esm/Tree/TreeSection.js.map +1 -0
  119. package/build/esm/Tree/collection.d.ts +18 -0
  120. package/build/esm/Tree/collection.d.ts.map +1 -0
  121. package/build/esm/Tree/collection.js +252 -0
  122. package/build/esm/Tree/collection.js.map +1 -0
  123. package/build/esm/Tree/context.d.ts +3 -0
  124. package/build/esm/Tree/context.d.ts.map +1 -0
  125. package/build/esm/Tree/context.js +3 -0
  126. package/build/esm/Tree/context.js.map +1 -0
  127. package/build/esm/Tree/index.d.ts +8 -0
  128. package/build/esm/Tree/index.d.ts.map +1 -0
  129. package/build/esm/Tree/index.js +7 -0
  130. package/build/esm/Tree/index.js.map +1 -0
  131. package/build/esm/Tree/types.d.ts +128 -0
  132. package/build/esm/Tree/types.d.ts.map +1 -0
  133. package/build/esm/Tree/types.js +2 -0
  134. package/build/esm/Tree/types.js.map +1 -0
  135. package/build/esm/hooks/index.d.ts +1 -0
  136. package/build/esm/hooks/index.d.ts.map +1 -1
  137. package/build/esm/hooks/index.js +1 -0
  138. package/build/esm/hooks/index.js.map +1 -1
  139. package/build/esm/hooks/useTransitionStatus.d.ts +7 -0
  140. package/build/esm/hooks/useTransitionStatus.d.ts.map +1 -0
  141. package/build/esm/hooks/useTransitionStatus.js +48 -0
  142. package/build/esm/hooks/useTransitionStatus.js.map +1 -0
  143. package/build/esm/index.d.ts +5 -0
  144. package/build/esm/index.d.ts.map +1 -1
  145. package/build/esm/index.js +5 -0
  146. package/build/esm/index.js.map +1 -1
  147. package/build/esm/toggle/Toggle.d.ts +28 -0
  148. package/build/esm/toggle/Toggle.d.ts.map +1 -0
  149. package/build/esm/toggle/Toggle.js +55 -0
  150. package/build/esm/toggle/Toggle.js.map +1 -0
  151. package/build/esm/toggle/index.d.ts +2 -0
  152. package/build/esm/toggle/index.d.ts.map +1 -0
  153. package/build/esm/toggle/index.js +2 -0
  154. package/build/esm/toggle/index.js.map +1 -0
  155. package/build/esm/utils/assign-ref.d.ts +3 -3
  156. package/build/esm/utils/assign-ref.d.ts.map +1 -1
  157. package/build/esm/utils/assign-ref.js +1 -1
  158. package/build/esm/utils/assign-ref.js.map +1 -1
  159. package/build/tsconfig-build.tsbuildinfo +1 -1
  160. package/build/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +7 -4
  162. package/src/Accordion/AccordionBody.tsx +6 -35
  163. package/src/Accordion/AccordionHeader.tsx +29 -103
  164. package/src/Accordion/AccordionItem.tsx +40 -29
  165. package/src/Accordion/context.ts +0 -18
  166. package/src/Accordion/scopeQuery.ts +4 -0
  167. package/src/Collapsible/Collapsible.story.tsx +153 -0
  168. package/src/Collapsible/Collapsible.tsx +79 -0
  169. package/src/Collapsible/CollapsiblePanel.tsx +103 -0
  170. package/src/Collapsible/CollapsibleTrigger.tsx +60 -0
  171. package/src/Collapsible/context.ts +28 -0
  172. package/src/Collapsible/index.ts +3 -0
  173. package/src/Menu/Menu.story.tsx +70 -1
  174. package/src/Menu/Menu.tsx +141 -65
  175. package/src/Menu/MenuButton.tsx +115 -9
  176. package/src/Menu/MenuItem.tsx +20 -3
  177. package/src/Menu/MenuList.tsx +50 -13
  178. package/src/Menu/MenuPopover.tsx +12 -2
  179. package/src/Menu/MenuSubmenuTrigger.tsx +167 -0
  180. package/src/Menu/context.ts +20 -10
  181. package/src/Menu/index.ts +3 -0
  182. package/src/Menu/scope.ts +4 -1
  183. package/src/Menu/styles.css +57 -22
  184. package/src/MenuBar/MenuBar.story.tsx +92 -0
  185. package/src/MenuBar/MenuBar.tsx +236 -0
  186. package/src/MenuBar/context.ts +46 -0
  187. package/src/MenuBar/index.ts +1 -0
  188. package/src/MenuBar/styles.css +78 -0
  189. package/src/Slider/Slider.story.tsx +1 -1
  190. package/src/Slider/Slider.tsx +145 -8
  191. package/src/Toggle/Toggle.story.tsx +42 -0
  192. package/src/Toggle/Toggle.tsx +95 -0
  193. package/src/Toggle/index.ts +1 -0
  194. package/src/Toggle/styles.css +39 -0
  195. package/src/ToggleGroup/ToggleGroup.story.tsx +86 -0
  196. package/src/ToggleGroup/ToggleGroup.tsx +185 -0
  197. package/src/ToggleGroup/ToggleGroupContext.ts +17 -0
  198. package/src/ToggleGroup/index.ts +2 -0
  199. package/src/ToggleGroup/styles.css +66 -0
  200. package/src/Tree/Tree.story.tsx +221 -0
  201. package/src/Tree/Tree.tsx +1081 -0
  202. package/src/Tree/TreeHeader.tsx +9 -0
  203. package/src/Tree/TreeItem.tsx +9 -0
  204. package/src/Tree/TreeItemContent.tsx +91 -0
  205. package/src/Tree/TreeSection.tsx +9 -0
  206. package/src/Tree/collection.tsx +371 -0
  207. package/src/Tree/context.ts +6 -0
  208. package/src/Tree/index.ts +7 -0
  209. package/src/Tree/styles.css +135 -0
  210. package/src/Tree/types.ts +161 -0
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/useTransitionStatus.ts +65 -0
  213. package/src/index.ts +5 -0
  214. package/src/utils/assign-ref.ts +4 -4
@@ -0,0 +1,161 @@
1
+ import type {
2
+ ElementType,
3
+ HTMLAttributes,
4
+ KeyboardEvent,
5
+ MouseEvent,
6
+ ReactElement,
7
+ ReactNode,
8
+ } from 'react';
9
+
10
+ export type TreeKey = string | number;
11
+ export type TreeSelectionMode = 'none' | 'single' | 'multiple';
12
+ export type TreeSelectionBehavior = 'toggle' | 'replace';
13
+ export type TreeDisabledBehavior = 'all' | 'selection';
14
+ export type TreeSelection = Iterable<TreeKey> | 'all';
15
+ export type TreeExpandedKeys = Iterable<TreeKey> | 'all';
16
+
17
+ export interface TreeProps
18
+ extends Omit<
19
+ HTMLAttributes<HTMLDivElement>,
20
+ 'autoFocus' | 'onChange' | 'onSelect'
21
+ > {
22
+ as?: ElementType<any>;
23
+ innerAs?: ElementType<any>;
24
+ children?: ReactNode;
25
+ selectionMode?: TreeSelectionMode;
26
+ selectionBehavior?: TreeSelectionBehavior;
27
+ selectedKeys?: TreeSelection;
28
+ defaultSelectedKeys?: TreeSelection;
29
+ onSelectionChange?: (keys: Set<TreeKey>) => void;
30
+ disallowEmptySelection?: boolean;
31
+ disabledKeys?: Iterable<TreeKey>;
32
+ disabledBehavior?: TreeDisabledBehavior;
33
+ expandedKeys?: TreeExpandedKeys;
34
+ defaultExpandedKeys?: TreeExpandedKeys;
35
+ onExpandedChange?: (keys: Set<TreeKey>) => void;
36
+ autoFocus?: boolean | 'first' | 'last';
37
+ onAction?: (key: TreeKey) => void;
38
+ keyboardNavigationBehavior?: 'arrow' | 'tab';
39
+ escapeKeyBehavior?: 'clearSelection' | 'none';
40
+ shouldFocusWrap?: boolean;
41
+ disallowTypeAhead?: boolean;
42
+ disallowSelectAll?: boolean;
43
+ direction?: 'ltr' | 'rtl';
44
+ renderEmptyState?: () => ReactNode;
45
+ renderLoadingState?: (item: ParsedTreeItem) => ReactNode;
46
+ renderedRowIndices?: Iterable<number>;
47
+ onVisibleRowsChange?: (rows: TreeVisibleRow[]) => void;
48
+ onFocusedKeyChange?: (key: TreeKey | null, rowIndex: number | null) => void;
49
+ renderRow?: (
50
+ row: TreeVisibleRow,
51
+ defaultRow: ReactElement,
52
+ state: TreeRenderState
53
+ ) => ReactNode;
54
+ }
55
+
56
+ export interface TreeItemProps
57
+ extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'title' | 'onSelect'> {
58
+ id?: TreeKey;
59
+ title?: ReactNode;
60
+ textValue?: string;
61
+ isDisabled?: boolean;
62
+ disabled?: boolean;
63
+ hasChildItems?: boolean;
64
+ isLoading?: boolean;
65
+ onAction?: () => void;
66
+ children?: ReactNode;
67
+ }
68
+
69
+ export interface TreeItemContentProps extends HTMLAttributes<HTMLDivElement> {
70
+ as?: ElementType<any>;
71
+ innerAs?: ElementType<any>;
72
+ children?: ReactNode;
73
+ }
74
+
75
+ export interface TreeSectionProps extends HTMLAttributes<HTMLDivElement> {
76
+ as?: ElementType<any>;
77
+ innerAs?: ElementType<any>;
78
+ children?: ReactNode;
79
+ }
80
+
81
+ export interface TreeHeaderProps extends HTMLAttributes<HTMLDivElement> {
82
+ as?: ElementType<any>;
83
+ innerAs?: ElementType<any>;
84
+ children?: ReactNode;
85
+ }
86
+
87
+ export interface ParsedTreeItem {
88
+ type: 'item';
89
+ key: TreeKey;
90
+ keyString: string;
91
+ level: number;
92
+ index: number;
93
+ posInSet: number;
94
+ setSize: number;
95
+ parentKey: TreeKey | null;
96
+ content: ReactNode;
97
+ textValue: string;
98
+ disabled: boolean;
99
+ hasChildItems: boolean;
100
+ childItems: ParsedTreeItem[];
101
+ props: TreeItemProps;
102
+ }
103
+
104
+ export interface ParsedTreeSection {
105
+ type: 'section';
106
+ key: string;
107
+ header: ReactNode;
108
+ headerProps: TreeHeaderProps;
109
+ sectionProps: TreeSectionProps;
110
+ items: ParsedTreeItem[];
111
+ }
112
+
113
+ export type ParsedTreeNode = ParsedTreeItem | ParsedTreeSection;
114
+
115
+ export interface TreeVisibleItemRow {
116
+ type: 'item';
117
+ key: TreeKey;
118
+ item: ParsedTreeItem;
119
+ }
120
+
121
+ export interface TreeVisibleSectionRow {
122
+ type: 'section';
123
+ key: string;
124
+ section: ParsedTreeSection;
125
+ }
126
+
127
+ export interface TreeVisibleLoadingRow {
128
+ type: 'loading';
129
+ key: string;
130
+ item: ParsedTreeItem;
131
+ level: number;
132
+ }
133
+
134
+ export type TreeVisibleRow =
135
+ | TreeVisibleItemRow
136
+ | TreeVisibleSectionRow
137
+ | TreeVisibleLoadingRow;
138
+
139
+ export interface TreeRenderState {
140
+ allItems: ParsedTreeItem[];
141
+ visibleItems: ParsedTreeItem[];
142
+ visibleRows: TreeVisibleRow[];
143
+ focusedKey: TreeKey | null;
144
+ expandedKeys: Set<TreeKey>;
145
+ selectedKeys: Set<TreeKey>;
146
+ selectionMode: TreeSelectionMode;
147
+ selectionBehavior: TreeSelectionBehavior;
148
+ }
149
+
150
+ export interface TreeItemRenderContextValue {
151
+ item: ParsedTreeItem;
152
+ rowId: string;
153
+ isExpanded: boolean;
154
+ isSelected: boolean;
155
+ isDisabled: boolean;
156
+ canSelect: boolean;
157
+ selectionMode: TreeSelectionMode;
158
+ selectionBehavior: TreeSelectionBehavior;
159
+ toggleExpanded: (event: MouseEvent<any> | KeyboardEvent<any>) => void;
160
+ toggleSelection: (event: MouseEvent<any> | KeyboardEvent<any>) => void;
161
+ }
@@ -11,3 +11,4 @@ export * from './useThrottle';
11
11
  export * from './useMeasure';
12
12
  export * from './useGestureHandlers';
13
13
  export * from './useScope';
14
+ export * from './useTransitionStatus';
@@ -0,0 +1,65 @@
1
+ import { useState, useLayoutEffect } from 'react';
2
+
3
+ export type TransitionStatus = 'starting' | 'ending' | 'idle' | undefined;
4
+
5
+ export function useTransitionStatus(
6
+ open: boolean,
7
+ enableIdleState: boolean = false,
8
+ deferEndingState: boolean = false
9
+ ) {
10
+ const [transitionStatus, setTransitionStatus] = useState<TransitionStatus>(
11
+ open && enableIdleState ? 'idle' : undefined
12
+ );
13
+ const [mounted, setMounted] = useState(open);
14
+
15
+ if (open && !mounted) {
16
+ setMounted(true);
17
+ setTransitionStatus('starting');
18
+ }
19
+
20
+ if (!open && mounted && transitionStatus !== 'ending' && !deferEndingState) {
21
+ setTransitionStatus('ending');
22
+ }
23
+
24
+ if (!open && !mounted && transitionStatus === 'ending') {
25
+ setTransitionStatus(undefined);
26
+ }
27
+
28
+ useLayoutEffect(() => {
29
+ if (!open && mounted && transitionStatus !== 'ending' && deferEndingState) {
30
+ const frame = requestAnimationFrame(() => {
31
+ setTransitionStatus('ending');
32
+ });
33
+ return () => cancelAnimationFrame(frame);
34
+ }
35
+ }, [open, mounted, transitionStatus, deferEndingState]);
36
+
37
+ useLayoutEffect(() => {
38
+ if (!open || enableIdleState) return;
39
+
40
+ const frame = requestAnimationFrame(() => {
41
+ setTransitionStatus(undefined);
42
+ });
43
+ return () => cancelAnimationFrame(frame);
44
+ }, [enableIdleState, open]);
45
+
46
+ useLayoutEffect(() => {
47
+ if (!open || !enableIdleState) return;
48
+
49
+ if (open && mounted && transitionStatus !== 'idle') {
50
+ setTransitionStatus('starting');
51
+ }
52
+
53
+ const frame = requestAnimationFrame(() => {
54
+ setTransitionStatus('idle');
55
+ });
56
+
57
+ return () => cancelAnimationFrame(frame);
58
+ }, [enableIdleState, open, mounted, transitionStatus]);
59
+
60
+ return {
61
+ mounted,
62
+ setMounted,
63
+ transitionStatus,
64
+ };
65
+ }
package/src/index.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  // Components
2
2
  export * from './Accordion';
3
+ export * from './Collapsible';
3
4
  export * from './CheckBox';
4
5
  export * from './ComboBox';
5
6
  export * from './FocusLock';
6
7
  export * from './Menu';
8
+ export * from './MenuBar';
7
9
  export * from './Modal';
8
10
  export * from './Popper';
9
11
  export * from './Portal';
@@ -11,7 +13,10 @@ export * from './RadioButton';
11
13
  export * from './Slider';
12
14
  export * from './Spinner';
13
15
  export * from './Tabs';
16
+ export * from './Toggle';
17
+ export * from './ToggleGroup';
14
18
  export * from './Tooltip';
19
+ export * from './Tree';
15
20
 
16
21
  // General React utilities
17
22
  export * from './utils';
@@ -1,7 +1,7 @@
1
- import type { MutableRefObject, RefCallback } from 'react';
1
+ import type { RefObject, RefCallback } from 'react';
2
2
 
3
3
  export function assignRef<T>(
4
- ref: MutableRefObject<T> | RefCallback<T> | null | undefined,
4
+ ref: RefObject<T> | RefCallback<T> | null | undefined,
5
5
  value: T
6
6
  ) {
7
7
  if (ref == null) return;
@@ -10,14 +10,14 @@ export function assignRef<T>(
10
10
  } else {
11
11
  try {
12
12
  ref.current = value;
13
- } catch (error) {
13
+ } catch {
14
14
  throw new Error(`Cannot assign value "${value}" to ref "${ref}"`);
15
15
  }
16
16
  }
17
17
  }
18
18
 
19
19
  export function assignMultipleRefs<T>(
20
- ...refs: (MutableRefObject<T> | RefCallback<T> | null | undefined)[]
20
+ ...refs: (RefObject<T> | RefCallback<T> | null | undefined)[]
21
21
  ): RefCallback<T> {
22
22
  return (node: T | null) => {
23
23
  refs.forEach((ref) => {