entangle-ui 0.8.2 → 0.9.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 (203) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/esm/assets/src/components/controls/Combobox/Combobox.css.ts.vanilla-B7B5ttkq.css +210 -0
  3. package/dist/esm/assets/src/components/controls/FileUploader/FileUploader.css.ts.vanilla-T4nRiI7s.css +194 -0
  4. package/dist/esm/assets/src/components/controls/MultiSelect/MultiSelect.css.ts.vanilla-CdYayqaF.css +311 -0
  5. package/dist/esm/assets/src/components/controls/TagInput/TagInput.css.ts.vanilla-hnkMOPp1.css +141 -0
  6. package/dist/esm/assets/src/components/data/DataTable/DataTable.css.ts.vanilla-CmRgtjIW.css +231 -0
  7. package/dist/esm/assets/src/components/feedback/Alert/{Alert.css.ts.vanilla-CRAI-xHx.css → Alert.css.ts.vanilla-CfCDsIEg.css} +2 -0
  8. package/dist/esm/assets/src/components/feedback/CommandPalette/CommandPalette.css.ts.vanilla-DGdrLKYZ.css +160 -0
  9. package/dist/esm/assets/src/components/feedback/Drawer/Drawer.css.ts.vanilla-CLPTOUrA.css +247 -0
  10. package/dist/esm/assets/src/components/feedback/Skeleton/SkeletonLayout.css.ts.vanilla-Db7bpqiI.css +75 -0
  11. package/dist/esm/assets/src/components/feedback/Stat/Stat.css.ts.vanilla-GBk3JAMB.css +69 -0
  12. package/dist/esm/assets/src/components/layout/Card/Card.css.ts.vanilla-Ducn1gUX.css +124 -0
  13. package/dist/esm/assets/src/components/navigation/Pagination/Pagination.css.ts.vanilla-CmlFyyjh.css +103 -0
  14. package/dist/esm/assets/src/components/primitives/HoverCard/HoverCard.css.ts.vanilla-BYT0qbLp.css +41 -0
  15. package/dist/esm/components/Icons/CloudUploadIcon.js +24 -0
  16. package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -0
  17. package/dist/esm/components/Icons/ExternalLinkIcon.js +26 -0
  18. package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -0
  19. package/dist/esm/components/Icons/FirstIcon.js +23 -0
  20. package/dist/esm/components/Icons/FirstIcon.js.map +1 -0
  21. package/dist/esm/components/Icons/LastIcon.js +23 -0
  22. package/dist/esm/components/Icons/LastIcon.js.map +1 -0
  23. package/dist/esm/components/Icons/UnlinkIcon.js +26 -0
  24. package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -0
  25. package/dist/esm/components/controls/Combobox/Combobox.css.js +20 -0
  26. package/dist/esm/components/controls/Combobox/Combobox.css.js.map +1 -0
  27. package/dist/esm/components/controls/Combobox/Combobox.js +354 -0
  28. package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -0
  29. package/dist/esm/components/controls/FileUploader/FileUploader.css.js +20 -0
  30. package/dist/esm/components/controls/FileUploader/FileUploader.css.js.map +1 -0
  31. package/dist/esm/components/controls/FileUploader/FileUploader.js +264 -0
  32. package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -0
  33. package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js +23 -0
  34. package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js.map +1 -0
  35. package/dist/esm/components/controls/MultiSelect/MultiSelect.js +269 -0
  36. package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -0
  37. package/dist/esm/components/controls/Select/Select.js +5 -4
  38. package/dist/esm/components/controls/Select/Select.js.map +1 -1
  39. package/dist/esm/components/controls/TagInput/TagInput.css.js +12 -0
  40. package/dist/esm/components/controls/TagInput/TagInput.css.js.map +1 -0
  41. package/dist/esm/components/controls/TagInput/TagInput.js +189 -0
  42. package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -0
  43. package/dist/esm/components/controls/TreeView/TreeNode.js +87 -1
  44. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
  45. package/dist/esm/components/controls/VectorInput/VectorInput.js +87 -4
  46. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  47. package/dist/esm/components/data/DataTable/DataTable.css.js +25 -0
  48. package/dist/esm/components/data/DataTable/DataTable.css.js.map +1 -0
  49. package/dist/esm/components/data/DataTable/DataTable.js +502 -0
  50. package/dist/esm/components/data/DataTable/DataTable.js.map +1 -0
  51. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +87 -5
  52. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
  53. package/dist/esm/components/editor/ChatPanel/ChatInput.js +87 -5
  54. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  55. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +87 -2
  56. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  57. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +87 -3
  58. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
  59. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +87 -3
  60. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
  61. package/dist/esm/components/feedback/Alert/Alert.css.js +1 -1
  62. package/dist/esm/components/feedback/Alert/Alert.js +3 -2
  63. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
  64. package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js +20 -0
  65. package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js.map +1 -0
  66. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +261 -0
  67. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -0
  68. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js +86 -0
  69. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -0
  70. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +63 -0
  71. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -0
  72. package/dist/esm/components/feedback/Dialog/DialogHeader.js +2 -1
  73. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
  74. package/dist/esm/components/feedback/Drawer/Drawer.css.js +17 -0
  75. package/dist/esm/components/feedback/Drawer/Drawer.css.js.map +1 -0
  76. package/dist/esm/components/feedback/Drawer/Drawer.js +120 -0
  77. package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -0
  78. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +74 -0
  79. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -0
  80. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js +18 -0
  81. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js.map +1 -0
  82. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +95 -0
  83. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -0
  84. package/dist/esm/components/feedback/Stat/Stat.css.js +15 -0
  85. package/dist/esm/components/feedback/Stat/Stat.css.js.map +1 -0
  86. package/dist/esm/components/feedback/Stat/Stat.js +55 -0
  87. package/dist/esm/components/feedback/Stat/Stat.js.map +1 -0
  88. package/dist/esm/components/feedback/Toast/ToastItem.js +12 -15
  89. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
  90. package/dist/esm/components/layout/Accordion/Accordion.js +2 -1
  91. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
  92. package/dist/esm/components/layout/Accordion/AccordionTrigger.js +2 -3
  93. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
  94. package/dist/esm/components/layout/Card/Card.css.js +18 -0
  95. package/dist/esm/components/layout/Card/Card.css.js.map +1 -0
  96. package/dist/esm/components/layout/Card/Card.js +66 -0
  97. package/dist/esm/components/layout/Card/Card.js.map +1 -0
  98. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +1 -0
  99. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
  100. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +1 -0
  101. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
  102. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +5 -0
  103. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
  104. package/dist/esm/components/navigation/Pagination/Pagination.css.js +12 -0
  105. package/dist/esm/components/navigation/Pagination/Pagination.css.js.map +1 -0
  106. package/dist/esm/components/navigation/Pagination/Pagination.js +107 -0
  107. package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -0
  108. package/dist/esm/components/navigation/Pagination/usePagination.js +143 -0
  109. package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -0
  110. package/dist/esm/components/primitives/Avatar/Avatar.js +87 -1
  111. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
  112. package/dist/esm/components/primitives/Badge/Badge.js +87 -1
  113. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
  114. package/dist/esm/components/primitives/Checkbox/Checkbox.js +5 -2
  115. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  116. package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -3
  117. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
  118. package/dist/esm/components/primitives/HoverCard/HoverCard.css.js +7 -0
  119. package/dist/esm/components/primitives/HoverCard/HoverCard.css.js.map +1 -0
  120. package/dist/esm/components/primitives/HoverCard/HoverCard.js +169 -0
  121. package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -0
  122. package/dist/esm/components/primitives/Icon/Icon.js +16 -2
  123. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
  124. package/dist/esm/components/primitives/Link/Link.js +3 -3
  125. package/dist/esm/components/primitives/Link/Link.js.map +1 -1
  126. package/dist/esm/components/primitives/Popover/PopoverClose.js +2 -3
  127. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
  128. package/dist/esm/components/primitives/Radio/Radio.js +1 -1
  129. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +44 -0
  130. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -0
  131. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +97 -0
  132. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -0
  133. package/dist/esm/hooks/useDebounced/useDebouncedValue.js +35 -0
  134. package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -0
  135. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +73 -0
  136. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -0
  137. package/dist/esm/hooks/useListboxNav/useListboxNav.js +181 -0
  138. package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -0
  139. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +54 -0
  140. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -0
  141. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +78 -0
  142. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -0
  143. package/dist/esm/index.js +25 -0
  144. package/dist/esm/index.js.map +1 -1
  145. package/dist/esm/theme/breakpoints.js +27 -0
  146. package/dist/esm/theme/breakpoints.js.map +1 -0
  147. package/dist/esm/theme/index.js +1 -0
  148. package/dist/esm/theme/index.js.map +1 -1
  149. package/dist/tokens/tokens.dark.css +1 -1
  150. package/dist/tokens/tokens.json +1 -1
  151. package/dist/tokens/tokens.light.css +1 -1
  152. package/dist/types/components/Icons/CloudUploadIcon.d.ts +27 -0
  153. package/dist/types/components/Icons/ExternalLinkIcon.d.ts +29 -0
  154. package/dist/types/components/Icons/FirstIcon.d.ts +26 -0
  155. package/dist/types/components/Icons/LastIcon.d.ts +26 -0
  156. package/dist/types/components/Icons/UnlinkIcon.d.ts +29 -0
  157. package/dist/types/components/controls/Combobox/Combobox.d.ts +29 -0
  158. package/dist/types/components/controls/Combobox/Combobox.types.d.ts +109 -0
  159. package/dist/types/components/controls/FileUploader/FileUploader.d.ts +34 -0
  160. package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +94 -0
  161. package/dist/types/components/controls/MultiSelect/MultiSelect.d.ts +31 -0
  162. package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +85 -0
  163. package/dist/types/components/controls/TagInput/TagInput.d.ts +24 -0
  164. package/dist/types/components/controls/TagInput/TagInput.types.d.ts +100 -0
  165. package/dist/types/components/data/DataTable/DataTable.d.ts +8 -0
  166. package/dist/types/components/data/DataTable/DataTable.types.d.ts +159 -0
  167. package/dist/types/components/feedback/Alert/Alert.d.ts +1 -0
  168. package/dist/types/components/feedback/Alert/Alert.types.d.ts +7 -0
  169. package/dist/types/components/feedback/CommandPalette/CommandPalette.d.ts +29 -0
  170. package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +61 -0
  171. package/dist/types/components/feedback/CommandPalette/fuzzySearch.d.ts +6 -0
  172. package/dist/types/components/feedback/Drawer/Drawer.d.ts +12 -0
  173. package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +70 -0
  174. package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +44 -1
  175. package/dist/types/components/feedback/Skeleton/SkeletonLayout.d.ts +314 -0
  176. package/dist/types/components/feedback/Stat/Stat.d.ts +23 -0
  177. package/dist/types/components/feedback/Stat/Stat.types.d.ts +38 -0
  178. package/dist/types/components/layout/Accordion/Accordion.types.d.ts +7 -0
  179. package/dist/types/components/layout/Card/Card.d.ts +12 -0
  180. package/dist/types/components/layout/Card/Card.types.d.ts +54 -0
  181. package/dist/types/components/navigation/Pagination/Pagination.d.ts +22 -0
  182. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +49 -0
  183. package/dist/types/components/primitives/Button/Button.d.ts +1 -1
  184. package/dist/types/components/primitives/HoverCard/HoverCard.d.ts +10 -0
  185. package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +64 -0
  186. package/dist/types/components/primitives/Icon/Icon.d.ts +14 -1
  187. package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
  188. package/dist/types/hooks/useBreakpoint/useBreakpoint.d.ts +19 -0
  189. package/dist/types/hooks/useBreakpoint/useBreakpoint.types.d.ts +20 -0
  190. package/dist/types/hooks/useDebounced/useDebounced.types.d.ts +15 -0
  191. package/dist/types/hooks/useDebounced/useDebouncedCallback.d.ts +22 -0
  192. package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +16 -0
  193. package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +22 -0
  194. package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.types.d.ts +22 -0
  195. package/dist/types/hooks/useListboxNav/useListboxNav.d.ts +75 -0
  196. package/dist/types/hooks/useMediaQuery/useMediaQuery.d.ts +19 -0
  197. package/dist/types/hooks/useMediaQuery/useMediaQuery.types.d.ts +6 -0
  198. package/dist/types/hooks/useThrottledCallback/useThrottledCallback.d.ts +23 -0
  199. package/dist/types/hooks/useThrottledCallback/useThrottledCallback.types.d.ts +13 -0
  200. package/dist/types/index.d.ts +43 -1
  201. package/dist/types/theme/breakpoints.d.ts +22 -0
  202. package/dist/types/theme/index.d.ts +1 -0
  203. package/package.json +3 -1
@@ -347,6 +347,7 @@ declare const IconButton: React.NamedExoticComponent<{
347
347
  onTransitionStart?: React.TransitionEventHandler<HTMLButtonElement> | undefined;
348
348
  onTransitionStartCapture?: React.TransitionEventHandler<HTMLButtonElement> | undefined;
349
349
  form?: string | undefined | undefined;
350
+ value?: string | number | readonly string[] | undefined;
350
351
  name?: string | undefined | undefined;
351
352
  formAction?: string | ((formData: FormData) => void | Promise<void>) | undefined;
352
353
  formEncType?: string | undefined | undefined;
@@ -354,7 +355,6 @@ declare const IconButton: React.NamedExoticComponent<{
354
355
  formNoValidate?: boolean | undefined | undefined;
355
356
  formTarget?: string | undefined | undefined;
356
357
  type?: "submit" | "reset" | "button" | undefined | undefined;
357
- value?: string | number | readonly string[] | undefined;
358
358
  }>;
359
359
 
360
360
  export { IconButton };
@@ -0,0 +1,19 @@
1
+ import { UseBreakpointReturn } from './useBreakpoint.types.js';
2
+
3
+ /**
4
+ * Reactive named-breakpoint matcher.
5
+ *
6
+ * Returns booleans for each named breakpoint plus the largest matching
7
+ * `current`. Built on top of `useMediaQuery`. Breakpoint values come from
8
+ * `@/theme/breakpoints` and match the values used by `Stack` and other
9
+ * responsive layout components.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const { md, current } = useBreakpoint();
14
+ * return md ? <Sidebar /> : <BottomSheet />;
15
+ * ```
16
+ */
17
+ declare function useBreakpoint(): UseBreakpointReturn;
18
+
19
+ export { useBreakpoint };
@@ -0,0 +1,20 @@
1
+ import { Breakpoint } from '../../theme/breakpoints.js';
2
+
3
+ interface BreakpointMap {
4
+ /** Always `true` — base mobile breakpoint. */
5
+ xs: boolean;
6
+ /** `min-width: 576px`. */
7
+ sm: boolean;
8
+ /** `min-width: 768px`. */
9
+ md: boolean;
10
+ /** `min-width: 992px`. */
11
+ lg: boolean;
12
+ /** `min-width: 1200px`. */
13
+ xl: boolean;
14
+ }
15
+ interface UseBreakpointReturn extends BreakpointMap {
16
+ /** Name of the largest matching breakpoint. */
17
+ current: Breakpoint;
18
+ }
19
+
20
+ export type { BreakpointMap, UseBreakpointReturn };
@@ -0,0 +1,15 @@
1
+ interface UseDebouncedCallbackOptions {
2
+ /** Fire on the leading edge in addition to trailing. @default false */
3
+ leading?: boolean;
4
+ /** Maximum time the callback may be deferred before being forced. */
5
+ maxWait?: number;
6
+ }
7
+ interface DebouncedCallback<Args extends unknown[]> {
8
+ (...args: Args): void;
9
+ /** Cancel a pending call. */
10
+ cancel: () => void;
11
+ /** Fire a pending call immediately (no-op when nothing is pending). */
12
+ flush: () => void;
13
+ }
14
+
15
+ export type { DebouncedCallback, UseDebouncedCallbackOptions };
@@ -0,0 +1,22 @@
1
+ import { UseDebouncedCallbackOptions, DebouncedCallback } from './useDebounced.types.js';
2
+
3
+ /**
4
+ * Wrap a function so rapid calls collapse into one. By default the call
5
+ * fires on the trailing edge — pass `leading: true` to also fire
6
+ * immediately. `maxWait` forces a call even when calls keep coming.
7
+ *
8
+ * The wrapper identity is stable; passing fresh inline functions across
9
+ * renders is safe and does not reset pending timers.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const onResize = useDebouncedCallback(measure, 150);
14
+ * useEffect(() => {
15
+ * window.addEventListener('resize', onResize);
16
+ * return () => window.removeEventListener('resize', onResize);
17
+ * }, [onResize]);
18
+ * ```
19
+ */
20
+ declare function useDebouncedCallback<Args extends unknown[]>(fn: (...args: Args) => void, delay: number, options?: UseDebouncedCallbackOptions): DebouncedCallback<Args>;
21
+
22
+ export { useDebouncedCallback };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Returns a copy of `value` that updates only after `delay` ms have elapsed
3
+ * without further changes (trailing-edge debounce).
4
+ *
5
+ * Typical use: feeding a search input value into an expensive query.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * const [text, setText] = useState('');
10
+ * const debounced = useDebouncedValue(text, 200);
11
+ * useEffect(() => { search(debounced); }, [debounced]);
12
+ * ```
13
+ */
14
+ declare function useDebouncedValue<T>(value: T, delay: number): T;
15
+
16
+ export { useDebouncedValue };
@@ -0,0 +1,22 @@
1
+ import { UseIntersectionObserverOptions, UseIntersectionObserverReturn } from './useIntersectionObserver.types.js';
2
+
3
+ /**
4
+ * Observe whether an element intersects a root (defaults to the viewport).
5
+ * Returns a ref callback to attach to the observed element plus the latest
6
+ * `IntersectionObserverEntry`. SSR-safe: returns a no-op ref and `null`
7
+ * entry when `IntersectionObserver` is unavailable.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const { ref, isIntersecting } = useIntersectionObserver<HTMLDivElement>({
12
+ * rootMargin: '200px',
13
+ * });
14
+ * useEffect(() => {
15
+ * if (isIntersecting) loadMore();
16
+ * }, [isIntersecting]);
17
+ * return <div ref={ref} />;
18
+ * ```
19
+ */
20
+ declare function useIntersectionObserver<T extends Element = Element>(options?: UseIntersectionObserverOptions): UseIntersectionObserverReturn<T>;
21
+
22
+ export { useIntersectionObserver };
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+
3
+ interface UseIntersectionObserverOptions {
4
+ /** Root element. `null` (default) targets the viewport. */
5
+ root?: Element | null;
6
+ /** Margin around the root, e.g. `"0px 0px 200px 0px"`. */
7
+ rootMargin?: string;
8
+ /** Single threshold or an array of thresholds. */
9
+ threshold?: number | number[];
10
+ /** Disable the observer without unmounting the component. @default true */
11
+ enabled?: boolean;
12
+ }
13
+ interface UseIntersectionObserverReturn<T extends Element> {
14
+ /** Ref callback to attach to the observed element. */
15
+ ref: React.RefCallback<T>;
16
+ /** Latest IntersectionObserverEntry or null before the first callback. */
17
+ entry: IntersectionObserverEntry | null;
18
+ /** Convenience boolean — `entry?.isIntersecting ?? false`. */
19
+ isIntersecting: boolean;
20
+ }
21
+
22
+ export type { UseIntersectionObserverOptions, UseIntersectionObserverReturn };
@@ -0,0 +1,75 @@
1
+ import React from 'react';
2
+
3
+ interface UseListboxNavOptions<T> {
4
+ /** Items rendered in the listbox. The hook tracks navigation by index. */
5
+ items: T[];
6
+ /**
7
+ * Whether a given item should be skipped during navigation and rejected by
8
+ * `selectActive()`.
9
+ */
10
+ isItemDisabled?: (item: T, index: number) => boolean;
11
+ /** Initial active index. Defaults to `-1` (no active item). */
12
+ defaultActiveIndex?: number;
13
+ /**
14
+ * Wrap from last → first (and vice versa) on `next`/`prev`.
15
+ * @default true
16
+ */
17
+ loop?: boolean;
18
+ /**
19
+ * Reset the active index when the items array changes by reference.
20
+ * Useful for filtered listboxes where the previous index would be stale.
21
+ * @default true
22
+ */
23
+ resetOnItemsChange?: boolean;
24
+ /** Called when the active item is committed via `selectActive()`. */
25
+ onSelect?: (item: T, index: number) => void;
26
+ /** Called on `Escape`. */
27
+ onEscape?: () => void;
28
+ }
29
+ interface UseListboxNavReturn {
30
+ /** Currently active index, or `-1` when none. */
31
+ activeIndex: number;
32
+ /** Direct setter; the value is not validated. */
33
+ setActiveIndex: (index: number) => void;
34
+ /** Move to the next non-disabled item. */
35
+ next: () => void;
36
+ /** Move to the previous non-disabled item. */
37
+ prev: () => void;
38
+ /** Activate the first non-disabled item. */
39
+ first: () => void;
40
+ /** Activate the last non-disabled item. */
41
+ last: () => void;
42
+ /** Commit the active item via `onSelect`. */
43
+ selectActive: () => void;
44
+ /**
45
+ * Single keyboard handler for ArrowUp/Down/Home/End/Enter/Escape. Returns
46
+ * `true` when the event was handled (and `preventDefault` was called).
47
+ */
48
+ handleKeyDown: (event: KeyboardEvent | React.KeyboardEvent) => boolean;
49
+ /** Snapshot of the navigable indices (non-disabled, in order). */
50
+ navigableIndices: number[];
51
+ }
52
+ /**
53
+ * Shared keyboard navigation for listbox-like surfaces (Select, MultiSelect,
54
+ * Combobox, CommandPalette). Tracks an `activeIndex`, skips disabled items,
55
+ * and exposes a single `handleKeyDown` covering Arrow / Home / End / Enter /
56
+ * Escape semantics.
57
+ *
58
+ * The hook is purely logical — consumers render the list and bind the handler
59
+ * to an input or the listbox container. Scroll-into-view is the consumer's
60
+ * concern.
61
+ *
62
+ * @example
63
+ * ```tsx
64
+ * const { activeIndex, handleKeyDown } = useListboxNav({
65
+ * items: filtered,
66
+ * isItemDisabled: o => o.disabled ?? false,
67
+ * onSelect: (item) => commit(item),
68
+ * onEscape: () => close(),
69
+ * });
70
+ * ```
71
+ */
72
+ declare function useListboxNav<T>(options: UseListboxNavOptions<T>): UseListboxNavReturn;
73
+
74
+ export { useListboxNav };
75
+ export type { UseListboxNavOptions, UseListboxNavReturn };
@@ -0,0 +1,19 @@
1
+ import { UseMediaQueryOptions } from './useMediaQuery.types.js';
2
+
3
+ /**
4
+ * Reactive media query matching.
5
+ *
6
+ * Returns `true` when the current viewport matches the query and updates as
7
+ * the viewport changes. SSR-safe — returns `defaultMatches` when `matchMedia`
8
+ * is unavailable. Uses the modern `addEventListener('change')` API with a
9
+ * fallback to the legacy `addListener` for older browsers.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const isWide = useMediaQuery('(min-width: 768px)');
14
+ * return isWide ? <DesktopLayout /> : <MobileLayout />;
15
+ * ```
16
+ */
17
+ declare function useMediaQuery(query: string, options?: UseMediaQueryOptions): boolean;
18
+
19
+ export { useMediaQuery };
@@ -0,0 +1,6 @@
1
+ interface UseMediaQueryOptions {
2
+ /** SSR fallback used when `window.matchMedia` is unavailable. @default false */
3
+ defaultMatches?: boolean;
4
+ }
5
+
6
+ export type { UseMediaQueryOptions };
@@ -0,0 +1,23 @@
1
+ import { UseThrottledCallbackOptions, ThrottledCallback } from './useThrottledCallback.types.js';
2
+
3
+ /**
4
+ * Wrap a function so it fires at most once per `delay` ms. With both
5
+ * `leading` and `trailing` enabled (the default), the first call fires
6
+ * immediately and the most recent call inside the window fires at its
7
+ * end. Set `leading: false` to defer the first call; set
8
+ * `trailing: false` to drop calls inside the window.
9
+ *
10
+ * Typical use: drag handlers, scroll listeners, resize observers — places
11
+ * where the input rate exceeds the work rate and you want to bound the
12
+ * latter.
13
+ *
14
+ * The wrapper identity is stable across renders.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * const onPointerMove = useThrottledCallback(updateGuide, 16);
19
+ * ```
20
+ */
21
+ declare function useThrottledCallback<Args extends unknown[]>(fn: (...args: Args) => void, delay: number, options?: UseThrottledCallbackOptions): ThrottledCallback<Args>;
22
+
23
+ export { useThrottledCallback };
@@ -0,0 +1,13 @@
1
+ interface UseThrottledCallbackOptions {
2
+ /** Fire on the leading edge (first call). @default true */
3
+ leading?: boolean;
4
+ /** Fire on the trailing edge (after the last call in the window). @default true */
5
+ trailing?: boolean;
6
+ }
7
+ interface ThrottledCallback<Args extends unknown[]> {
8
+ (...args: Args): void;
9
+ /** Cancel any pending trailing call and reset the throttle window. */
10
+ cancel: () => void;
11
+ }
12
+
13
+ export type { ThrottledCallback, UseThrottledCallbackOptions };
@@ -6,11 +6,14 @@ export { ThemeValues, createCustomTheme } from './theme/createCustomTheme.js';
6
6
  export { createLightTheme } from './theme/createLightTheme.js';
7
7
  export { VanillaThemeProvider, VanillaThemeProviderProps } from './theme/VanillaThemeProvider.js';
8
8
  export { ThemeProvider, ThemeProviderProps } from './theme/ThemeProvider.js';
9
+ export { BREAKPOINT_ORDER, Breakpoint, breakpoints } from './theme/breakpoints.js';
9
10
  export { Accordion } from './components/layout/Accordion/Accordion.js';
10
11
  export { AccordionItem } from './components/layout/Accordion/AccordionItem.js';
11
12
  export { AccordionTrigger } from './components/layout/Accordion/AccordionTrigger.js';
12
13
  export { AccordionContent } from './components/layout/Accordion/AccordionContent.js';
13
14
  export { AccordionContentProps, AccordionItemProps, AccordionProps, AccordionSize, AccordionTriggerProps, AccordionVariant } from './components/layout/Accordion/Accordion.types.js';
15
+ export { Card } from './components/layout/Card/Card.js';
16
+ export { CardBaseProps, CardBodyBaseProps, CardBodyProps, CardFooterAlign, CardFooterBaseProps, CardFooterProps, CardHeaderBaseProps, CardHeaderProps, CardMediaBaseProps, CardMediaProps, CardProps, CardVariant } from './components/layout/Card/Card.types.js';
14
17
  export { Divider } from './components/layout/Divider/Divider.js';
15
18
  export { DividerOrientation, DividerProps, DividerSpacing, DividerVariant } from './components/layout/Divider/Divider.types.js';
16
19
  export { Flex, FlexAlign, FlexAlignContent, FlexDirection, FlexJustify, FlexProps, FlexSpacing, FlexWrap } from './components/layout/Flex/Flex.js';
@@ -41,6 +44,8 @@ export { Code } from './components/primitives/Code/Code.js';
41
44
  export { CodeProps, CodeSize } from './components/primitives/Code/Code.types.js';
42
45
  export { Collapsible } from './components/primitives/Collapsible/Collapsible.js';
43
46
  export { CollapsibleProps, CollapsibleSize } from './components/primitives/Collapsible/Collapsible.types.js';
47
+ export { HoverCard } from './components/primitives/HoverCard/HoverCard.js';
48
+ export { HoverCardBaseProps, HoverCardContentBaseProps, HoverCardContentProps, HoverCardContextValue, HoverCardProps, HoverCardTriggerBaseProps, HoverCardTriggerProps } from './components/primitives/HoverCard/HoverCard.types.js';
44
49
  export { Icon, IconProps, IconSize } from './components/primitives/Icon/Icon.js';
45
50
  export { IconButton } from './components/primitives/IconButton/IconButton.js';
46
51
  export { Input, InputProps, InputSize } from './components/primitives/Input/Input.js';
@@ -75,10 +80,18 @@ export { MATERIAL_PALETTE, Palette, PaletteColor, PaletteShade } from './compone
75
80
  export { TAILWIND_PALETTE } from './components/controls/ColorPicker/palettes/tailwind.js';
76
81
  export { EARTH_PALETTE, MONOCHROME_PALETTE, NEON_PALETTE, PASTEL_PALETTE, PROFESSIONAL_PALETTES, SKIN_TONES_PALETTE, VINTAGE_PALETTE } from './components/controls/ColorPicker/palettes/professional.js';
77
82
  export { ColorFormat, ColorInputMode, ColorPickerProps, ColorPickerSize, ColorPreset, ColorSwatchPublicProps as ColorSwatchProps } from './components/controls/ColorPicker/ColorPicker.types.js';
83
+ export { Combobox } from './components/controls/Combobox/Combobox.js';
84
+ export { ComboboxBaseProps, ComboboxOption, ComboboxProps, ComboboxSize, ComboboxVariant } from './components/controls/Combobox/Combobox.types.js';
85
+ export { FileUploader } from './components/controls/FileUploader/FileUploader.js';
86
+ export { FileUploaderBaseProps, FileUploaderItem, FileUploaderItemStatus, FileUploaderProps, FileUploaderRejectReason, FileUploaderRenderItemState, FileUploaderSize } from './components/controls/FileUploader/FileUploader.types.js';
87
+ export { MultiSelect } from './components/controls/MultiSelect/MultiSelect.js';
88
+ export { MultiSelectBaseProps, MultiSelectOption, MultiSelectOptionGroup, MultiSelectProps, MultiSelectSize, MultiSelectVariant } from './components/controls/MultiSelect/MultiSelect.types.js';
78
89
  export { NumberInput, NumberInputProps } from './components/controls/NumberInput/NumberInput.js';
79
90
  export { Select } from './components/controls/Select/Select.js';
80
91
  export { SelectOptionGroup, SelectOptionItem, SelectProps, SelectSize, SelectVariant } from './components/controls/Select/Select.types.js';
81
92
  export { Slider, SliderProps } from './components/controls/Slider/Slider.js';
93
+ export { TagInput } from './components/controls/TagInput/TagInput.js';
94
+ export { TagInputBaseProps, TagInputProps, TagInputRenderTagState, TagInputSeparator, TagInputSize, TagInputVariant } from './components/controls/TagInput/TagInput.types.js';
82
95
  export { VectorInput } from './components/controls/VectorInput/VectorInput.js';
83
96
  export { VectorColorPreset, VectorDimension, VectorInputProps, VectorInputSize, VectorLabelPreset } from './components/controls/VectorInput/VectorInput.types.js';
84
97
  export { TreeView } from './components/controls/TreeView/TreeView.js';
@@ -100,6 +113,8 @@ export { ContextMenuBaseProps, ContextMenuConfig, ContextMenuProps, ContextMenuT
100
113
  export { Menu } from './components/navigation/Menu/Menu.js';
101
114
  export { useMenu } from './components/navigation/Menu/useMenu.js';
102
115
  export { ItemSelectionType, MenuBaseProps, MenuConfig, MenuGroup, MenuItem, MenuProps, MenuSelection, SubmenuTrigger } from './components/navigation/Menu/Menu.types.js';
116
+ export { Pagination } from './components/navigation/Pagination/Pagination.js';
117
+ export { PaginationBaseProps, PaginationItem, PaginationItemAriaLabelGetter, PaginationItemType, PaginationProps, PaginationSize } from './components/navigation/Pagination/Pagination.types.js';
103
118
  export { SegmentedControl } from './components/navigation/SegmentedControl/SegmentedControl.js';
104
119
  export { SegmentedControlItem } from './components/navigation/SegmentedControl/SegmentedControlItem.js';
105
120
  export { SegmentedControlItemProps, SegmentedControlOrientation, SegmentedControlProps, SegmentedControlSize, SegmentedControlVariant } from './components/navigation/SegmentedControl/SegmentedControl.types.js';
@@ -108,6 +123,8 @@ export { TabList } from './components/navigation/Tabs/TabList.js';
108
123
  export { Tab } from './components/navigation/Tabs/Tab.js';
109
124
  export { TabPanel } from './components/navigation/Tabs/TabPanel.js';
110
125
  export { TabListProps, TabPanelProps, TabProps, TabsProps, TabsSize, TabsVariant } from './components/navigation/Tabs/Tabs.types.js';
126
+ export { DataTable } from './components/data/DataTable/DataTable.js';
127
+ export { DataTableAlign, DataTableBaseProps, DataTableColumn, DataTableDensity, DataTableProps, DataTableRowRenderInfo, DataTableSelectionMode, DataTableSelectionState, DataTableSortDirection, DataTableSortState, DataTableVirtualizationMode } from './components/data/DataTable/DataTable.types.js';
111
128
  export { FormLabel, FormLabelProps } from './components/form/FormLabel.js';
112
129
  export { FormHelperText, FormHelperTextProps } from './components/form/FormHelperText.js';
113
130
  export { InputWrapper, InputWrapperProps } from './components/form/InputWrapper.js';
@@ -122,6 +139,11 @@ export { DialogBody } from './components/feedback/Dialog/DialogBody.js';
122
139
  export { DialogFooter } from './components/feedback/Dialog/DialogFooter.js';
123
140
  export { DialogClose } from './components/feedback/Dialog/DialogClose.js';
124
141
  export { DialogBodyProps, DialogFooterProps, DialogHeaderProps, DialogProps, DialogSize } from './components/feedback/Dialog/Dialog.types.js';
142
+ export { CommandPalette } from './components/feedback/CommandPalette/CommandPalette.js';
143
+ export { FuzzyMatch } from './components/feedback/CommandPalette/fuzzySearch.js';
144
+ export { CommandItem, CommandPaletteBaseProps, CommandPaletteProps, CommandPaletteRenderItemState } from './components/feedback/CommandPalette/CommandPalette.types.js';
145
+ export { Drawer } from './components/feedback/Drawer/Drawer.js';
146
+ export { DrawerAnchor, DrawerBaseProps, DrawerBodyBaseProps, DrawerBodyProps, DrawerCloseButtonBaseProps, DrawerCloseButtonProps, DrawerContextValue, DrawerFooterAlign, DrawerFooterBaseProps, DrawerFooterProps, DrawerHeaderBaseProps, DrawerHeaderProps, DrawerProps, DrawerSize } from './components/feedback/Drawer/Drawer.types.js';
125
147
  export { EmptyState } from './components/feedback/EmptyState/EmptyState.js';
126
148
  export { EmptyStateProps, EmptyStateVariant } from './components/feedback/EmptyState/EmptyState.types.js';
127
149
  export { ProgressBar } from './components/feedback/ProgressBar/ProgressBar.js';
@@ -129,9 +151,12 @@ export { CircularProgress } from './components/feedback/ProgressBar/CircularProg
129
151
  export { CircularProgressProps, CircularProgressSize, ProgressBarColor, ProgressBarLabelPosition, ProgressBarProps, ProgressBarSize } from './components/feedback/ProgressBar/ProgressBar.types.js';
130
152
  export { Skeleton } from './components/feedback/Skeleton/Skeleton.js';
131
153
  export { SkeletonGroup } from './components/feedback/Skeleton/SkeletonGroup.js';
132
- export { SkeletonAnimation, SkeletonGroupProps, SkeletonProps, SkeletonShape } from './components/feedback/Skeleton/Skeleton.types.js';
154
+ export { SkeletonLayout } from './components/feedback/Skeleton/SkeletonLayout.js';
155
+ export { SkeletonAnimation, SkeletonGroupProps, SkeletonLayoutProps, SkeletonLayoutVariant, SkeletonProps, SkeletonShape } from './components/feedback/Skeleton/Skeleton.types.js';
133
156
  export { Spinner } from './components/feedback/Spinner/Spinner.js';
134
157
  export { SpinnerColor, SpinnerProps, SpinnerSize, SpinnerVariant } from './components/feedback/Spinner/Spinner.types.js';
158
+ export { Stat } from './components/feedback/Stat/Stat.js';
159
+ export { StatBaseProps, StatDelta, StatDeltaDirection, StatDeltaSemantics, StatProps, StatSize } from './components/feedback/Stat/Stat.types.js';
135
160
  export { ToastProvider } from './components/feedback/Toast/ToastProvider.js';
136
161
  export { useToast } from './components/feedback/Toast/useToast.js';
137
162
  export { ToastData, ToastPosition, ToastProviderProps, ToastSeverity, UseToastReturn } from './components/feedback/Toast/Toast.types.js';
@@ -189,15 +214,18 @@ export { ChevronDownIcon } from './components/Icons/ChevronDownIcon.js';
189
214
  export { ChevronUpIcon } from './components/Icons/ChevronUpIcon.js';
190
215
  export { ClockIcon } from './components/Icons/ClockIcon.js';
191
216
  export { CloseIcon } from './components/Icons/CloseIcon.js';
217
+ export { CloudUploadIcon } from './components/Icons/CloudUploadIcon.js';
192
218
  export { CodeIcon } from './components/Icons/CodeIcon.js';
193
219
  export { CopyIcon } from './components/Icons/CopyIcon.js';
194
220
  export { CutIcon } from './components/Icons/CutIcon.js';
195
221
  export { DownloadIcon } from './components/Icons/DownloadIcon.js';
196
222
  export { EditIcon } from './components/Icons/EditIcon.js';
197
223
  export { ErrorIcon } from './components/Icons/ErrorIcon.js';
224
+ export { ExternalLinkIcon } from './components/Icons/ExternalLinkIcon.js';
198
225
  export { EyeDropperIcon } from './components/Icons/EyeDropperIcon.js';
199
226
  export { EyeIcon } from './components/Icons/EyeIcon.js';
200
227
  export { FilterIcon } from './components/Icons/FilterIcon.js';
228
+ export { FirstIcon } from './components/Icons/FirstIcon.js';
201
229
  export { FolderIcon } from './components/Icons/FolderIcon.js';
202
230
  export { FullscreenIcon } from './components/Icons/FullscreenIcon.js';
203
231
  export { GridIcon } from './components/Icons/GridIcon.js';
@@ -205,6 +233,7 @@ export { HeartIcon } from './components/Icons/HeartIcon.js';
205
233
  export { HelpIcon } from './components/Icons/HelpIcon.js';
206
234
  export { HomeIcon } from './components/Icons/HomeIcon.js';
207
235
  export { InfoIcon } from './components/Icons/InfoIcon.js';
236
+ export { LastIcon } from './components/Icons/LastIcon.js';
208
237
  export { LinkIcon } from './components/Icons/LinkIcon.js';
209
238
  export { ListIcon } from './components/Icons/ListIcon.js';
210
239
  export { LockIcon } from './components/Icons/LockIcon.js';
@@ -225,6 +254,7 @@ export { SuccessIcon } from './components/Icons/SuccessIcon.js';
225
254
  export { TagIcon } from './components/Icons/TagIcon.js';
226
255
  export { TrashIcon } from './components/Icons/TrashIcon.js';
227
256
  export { UndoIcon } from './components/Icons/UndoIcon.js';
257
+ export { UnlinkIcon } from './components/Icons/UnlinkIcon.js';
228
258
  export { UnlockIcon } from './components/Icons/UnlockIcon.js';
229
259
  export { UploadIcon } from './components/Icons/UploadIcon.js';
230
260
  export { UserIcon } from './components/Icons/UserIcon.js';
@@ -270,6 +300,18 @@ export { ClipboardStatus, UseClipboardOptions, UseClipboardReturn } from './hook
270
300
  export { UseClickOutsideOptions, useClickOutside } from './hooks/useClickOutside/useClickOutside.js';
271
301
  export { useHotkey } from './hooks/useHotkey/useHotkey.js';
272
302
  export { UseHotkeyOptions } from './hooks/useHotkey/useHotkey.types.js';
303
+ export { useMediaQuery } from './hooks/useMediaQuery/useMediaQuery.js';
304
+ export { UseMediaQueryOptions } from './hooks/useMediaQuery/useMediaQuery.types.js';
305
+ export { useBreakpoint } from './hooks/useBreakpoint/useBreakpoint.js';
306
+ export { BreakpointMap, UseBreakpointReturn } from './hooks/useBreakpoint/useBreakpoint.types.js';
307
+ export { useDebouncedValue } from './hooks/useDebounced/useDebouncedValue.js';
308
+ export { useDebouncedCallback } from './hooks/useDebounced/useDebouncedCallback.js';
309
+ export { DebouncedCallback, UseDebouncedCallbackOptions } from './hooks/useDebounced/useDebounced.types.js';
310
+ export { useThrottledCallback } from './hooks/useThrottledCallback/useThrottledCallback.js';
311
+ export { ThrottledCallback, UseThrottledCallbackOptions } from './hooks/useThrottledCallback/useThrottledCallback.types.js';
312
+ export { useIntersectionObserver } from './hooks/useIntersectionObserver/useIntersectionObserver.js';
313
+ export { UseIntersectionObserverOptions, UseIntersectionObserverReturn } from './hooks/useIntersectionObserver/useIntersectionObserver.types.js';
314
+ export { UseListboxNavOptions, UseListboxNavReturn, useListboxNav } from './hooks/useListboxNav/useListboxNav.js';
273
315
  export { useTheme } from './hooks/useTheme/useTheme.js';
274
316
  export { ResolvedThemeValues, ThemeVariant, UseThemeReturn } from './hooks/useTheme/useTheme.types.js';
275
317
  export { cx as cn, cx } from './utils/cx.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Library breakpoint values (px) — used by responsive components like
3
+ * `Stack` and exposed via `useBreakpoint`.
4
+ *
5
+ * Values follow the same scale Stack already uses (576/768/992/1200) and
6
+ * are part of the public API.
7
+ *
8
+ * `xs` is always `0` and effectively means "no minimum"; every viewport
9
+ * matches `xs`.
10
+ */
11
+ declare const breakpoints: {
12
+ readonly xs: 0;
13
+ readonly sm: 576;
14
+ readonly md: 768;
15
+ readonly lg: 992;
16
+ readonly xl: 1200;
17
+ };
18
+ type Breakpoint = keyof typeof breakpoints;
19
+ declare const BREAKPOINT_ORDER: ReadonlyArray<Breakpoint>;
20
+
21
+ export { BREAKPOINT_ORDER, breakpoints };
22
+ export type { Breakpoint };
@@ -7,3 +7,4 @@ export { createLightTheme } from './createLightTheme.js';
7
7
  export { VanillaThemeProvider, VanillaThemeProviderProps } from './VanillaThemeProvider.js';
8
8
  export { ThemeProvider, ThemeProviderProps } from './ThemeProvider.js';
9
9
  export { GLOBAL_SCROLLBARS_CLASS } from './globalScrollbars.css.js';
10
+ export { BREAKPOINT_ORDER, Breakpoint, breakpoints } from './breakpoints.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "entangle-ui",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "*.css",
@@ -90,6 +90,7 @@
90
90
  "peerDependencies": {
91
91
  "@base-ui/react": "^1.1.0",
92
92
  "@floating-ui/react": "^0.27.17",
93
+ "@tanstack/react-virtual": "^3.13.0",
93
94
  "@vanilla-extract/dynamic": "^2.1.5",
94
95
  "@vanilla-extract/recipes": "^0.5.7",
95
96
  "react": ">=19.1.0",
@@ -108,6 +109,7 @@
108
109
  "@storybook/addon-onboarding": "^10.2.8",
109
110
  "@storybook/addon-themes": "^10.2.8",
110
111
  "@storybook/react-vite": "^10.2.8",
112
+ "@tanstack/react-virtual": "^3.13.24",
111
113
  "@testing-library/dom": "^10.4.1",
112
114
  "@testing-library/jest-dom": "^6.9.1",
113
115
  "@testing-library/react": "^16.3.2",