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.
- package/CHANGELOG.md +77 -0
- package/dist/esm/assets/src/components/controls/Combobox/Combobox.css.ts.vanilla-B7B5ttkq.css +210 -0
- package/dist/esm/assets/src/components/controls/FileUploader/FileUploader.css.ts.vanilla-T4nRiI7s.css +194 -0
- package/dist/esm/assets/src/components/controls/MultiSelect/MultiSelect.css.ts.vanilla-CdYayqaF.css +311 -0
- package/dist/esm/assets/src/components/controls/TagInput/TagInput.css.ts.vanilla-hnkMOPp1.css +141 -0
- package/dist/esm/assets/src/components/data/DataTable/DataTable.css.ts.vanilla-CmRgtjIW.css +231 -0
- package/dist/esm/assets/src/components/feedback/Alert/{Alert.css.ts.vanilla-CRAI-xHx.css → Alert.css.ts.vanilla-CfCDsIEg.css} +2 -0
- package/dist/esm/assets/src/components/feedback/CommandPalette/CommandPalette.css.ts.vanilla-DGdrLKYZ.css +160 -0
- package/dist/esm/assets/src/components/feedback/Drawer/Drawer.css.ts.vanilla-CLPTOUrA.css +247 -0
- package/dist/esm/assets/src/components/feedback/Skeleton/SkeletonLayout.css.ts.vanilla-Db7bpqiI.css +75 -0
- package/dist/esm/assets/src/components/feedback/Stat/Stat.css.ts.vanilla-GBk3JAMB.css +69 -0
- package/dist/esm/assets/src/components/layout/Card/Card.css.ts.vanilla-Ducn1gUX.css +124 -0
- package/dist/esm/assets/src/components/navigation/Pagination/Pagination.css.ts.vanilla-CmlFyyjh.css +103 -0
- package/dist/esm/assets/src/components/primitives/HoverCard/HoverCard.css.ts.vanilla-BYT0qbLp.css +41 -0
- package/dist/esm/components/Icons/CloudUploadIcon.js +24 -0
- package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -0
- package/dist/esm/components/Icons/ExternalLinkIcon.js +26 -0
- package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -0
- package/dist/esm/components/Icons/FirstIcon.js +23 -0
- package/dist/esm/components/Icons/FirstIcon.js.map +1 -0
- package/dist/esm/components/Icons/LastIcon.js +23 -0
- package/dist/esm/components/Icons/LastIcon.js.map +1 -0
- package/dist/esm/components/Icons/UnlinkIcon.js +26 -0
- package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -0
- package/dist/esm/components/controls/Combobox/Combobox.css.js +20 -0
- package/dist/esm/components/controls/Combobox/Combobox.css.js.map +1 -0
- package/dist/esm/components/controls/Combobox/Combobox.js +354 -0
- package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.css.js +20 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.css.js.map +1 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.js +264 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -0
- package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js +23 -0
- package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js.map +1 -0
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js +269 -0
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/esm/components/controls/Select/Select.js +5 -4
- package/dist/esm/components/controls/Select/Select.js.map +1 -1
- package/dist/esm/components/controls/TagInput/TagInput.css.js +12 -0
- package/dist/esm/components/controls/TagInput/TagInput.css.js.map +1 -0
- package/dist/esm/components/controls/TagInput/TagInput.js +189 -0
- package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -0
- package/dist/esm/components/controls/TreeView/TreeNode.js +87 -1
- package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
- package/dist/esm/components/controls/VectorInput/VectorInput.js +87 -4
- package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
- package/dist/esm/components/data/DataTable/DataTable.css.js +25 -0
- package/dist/esm/components/data/DataTable/DataTable.css.js.map +1 -0
- package/dist/esm/components/data/DataTable/DataTable.js +502 -0
- package/dist/esm/components/data/DataTable/DataTable.js.map +1 -0
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +87 -5
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInput.js +87 -5
- package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js +87 -2
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +87 -3
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js +87 -3
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
- package/dist/esm/components/feedback/Alert/Alert.css.js +1 -1
- package/dist/esm/components/feedback/Alert/Alert.js +3 -2
- package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js +20 -0
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js.map +1 -0
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +261 -0
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -0
- package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js +86 -0
- package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -0
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +63 -0
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/DialogHeader.js +2 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/Drawer.css.js +17 -0
- package/dist/esm/components/feedback/Drawer/Drawer.css.js.map +1 -0
- package/dist/esm/components/feedback/Drawer/Drawer.js +120 -0
- package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -0
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +74 -0
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -0
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js +18 -0
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js.map +1 -0
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +95 -0
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -0
- package/dist/esm/components/feedback/Stat/Stat.css.js +15 -0
- package/dist/esm/components/feedback/Stat/Stat.css.js.map +1 -0
- package/dist/esm/components/feedback/Stat/Stat.js +55 -0
- package/dist/esm/components/feedback/Stat/Stat.js.map +1 -0
- package/dist/esm/components/feedback/Toast/ToastItem.js +12 -15
- package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js +2 -1
- package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js +2 -3
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/esm/components/layout/Card/Card.css.js +18 -0
- package/dist/esm/components/layout/Card/Card.css.js.map +1 -0
- package/dist/esm/components/layout/Card/Card.js +66 -0
- package/dist/esm/components/layout/Card/Card.js.map +1 -0
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +1 -0
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +1 -0
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +5 -0
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/esm/components/navigation/Pagination/Pagination.css.js +12 -0
- package/dist/esm/components/navigation/Pagination/Pagination.css.js.map +1 -0
- package/dist/esm/components/navigation/Pagination/Pagination.js +107 -0
- package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -0
- package/dist/esm/components/navigation/Pagination/usePagination.js +143 -0
- package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -0
- package/dist/esm/components/primitives/Avatar/Avatar.js +87 -1
- package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/primitives/Badge/Badge.js +87 -1
- package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/Checkbox.js +5 -2
- package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -3
- package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/primitives/HoverCard/HoverCard.css.js +7 -0
- package/dist/esm/components/primitives/HoverCard/HoverCard.css.js.map +1 -0
- package/dist/esm/components/primitives/HoverCard/HoverCard.js +169 -0
- package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -0
- package/dist/esm/components/primitives/Icon/Icon.js +16 -2
- package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
- package/dist/esm/components/primitives/Link/Link.js +3 -3
- package/dist/esm/components/primitives/Link/Link.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js +2 -3
- package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
- package/dist/esm/components/primitives/Radio/Radio.js +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +44 -0
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -0
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +97 -0
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -0
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js +35 -0
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -0
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +73 -0
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -0
- package/dist/esm/hooks/useListboxNav/useListboxNav.js +181 -0
- package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -0
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +54 -0
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -0
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +78 -0
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -0
- package/dist/esm/index.js +25 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/theme/breakpoints.js +27 -0
- package/dist/esm/theme/breakpoints.js.map +1 -0
- package/dist/esm/theme/index.js +1 -0
- package/dist/esm/theme/index.js.map +1 -1
- package/dist/tokens/tokens.dark.css +1 -1
- package/dist/tokens/tokens.json +1 -1
- package/dist/tokens/tokens.light.css +1 -1
- package/dist/types/components/Icons/CloudUploadIcon.d.ts +27 -0
- package/dist/types/components/Icons/ExternalLinkIcon.d.ts +29 -0
- package/dist/types/components/Icons/FirstIcon.d.ts +26 -0
- package/dist/types/components/Icons/LastIcon.d.ts +26 -0
- package/dist/types/components/Icons/UnlinkIcon.d.ts +29 -0
- package/dist/types/components/controls/Combobox/Combobox.d.ts +29 -0
- package/dist/types/components/controls/Combobox/Combobox.types.d.ts +109 -0
- package/dist/types/components/controls/FileUploader/FileUploader.d.ts +34 -0
- package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +94 -0
- package/dist/types/components/controls/MultiSelect/MultiSelect.d.ts +31 -0
- package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +85 -0
- package/dist/types/components/controls/TagInput/TagInput.d.ts +24 -0
- package/dist/types/components/controls/TagInput/TagInput.types.d.ts +100 -0
- package/dist/types/components/data/DataTable/DataTable.d.ts +8 -0
- package/dist/types/components/data/DataTable/DataTable.types.d.ts +159 -0
- package/dist/types/components/feedback/Alert/Alert.d.ts +1 -0
- package/dist/types/components/feedback/Alert/Alert.types.d.ts +7 -0
- package/dist/types/components/feedback/CommandPalette/CommandPalette.d.ts +29 -0
- package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +61 -0
- package/dist/types/components/feedback/CommandPalette/fuzzySearch.d.ts +6 -0
- package/dist/types/components/feedback/Drawer/Drawer.d.ts +12 -0
- package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +70 -0
- package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +44 -1
- package/dist/types/components/feedback/Skeleton/SkeletonLayout.d.ts +314 -0
- package/dist/types/components/feedback/Stat/Stat.d.ts +23 -0
- package/dist/types/components/feedback/Stat/Stat.types.d.ts +38 -0
- package/dist/types/components/layout/Accordion/Accordion.types.d.ts +7 -0
- package/dist/types/components/layout/Card/Card.d.ts +12 -0
- package/dist/types/components/layout/Card/Card.types.d.ts +54 -0
- package/dist/types/components/navigation/Pagination/Pagination.d.ts +22 -0
- package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +49 -0
- package/dist/types/components/primitives/Button/Button.d.ts +1 -1
- package/dist/types/components/primitives/HoverCard/HoverCard.d.ts +10 -0
- package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +64 -0
- package/dist/types/components/primitives/Icon/Icon.d.ts +14 -1
- package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
- package/dist/types/hooks/useBreakpoint/useBreakpoint.d.ts +19 -0
- package/dist/types/hooks/useBreakpoint/useBreakpoint.types.d.ts +20 -0
- package/dist/types/hooks/useDebounced/useDebounced.types.d.ts +15 -0
- package/dist/types/hooks/useDebounced/useDebouncedCallback.d.ts +22 -0
- package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +16 -0
- package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +22 -0
- package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.types.d.ts +22 -0
- package/dist/types/hooks/useListboxNav/useListboxNav.d.ts +75 -0
- package/dist/types/hooks/useMediaQuery/useMediaQuery.d.ts +19 -0
- package/dist/types/hooks/useMediaQuery/useMediaQuery.types.d.ts +6 -0
- package/dist/types/hooks/useThrottledCallback/useThrottledCallback.d.ts +23 -0
- package/dist/types/hooks/useThrottledCallback/useThrottledCallback.types.d.ts +13 -0
- package/dist/types/index.d.ts +43 -1
- package/dist/types/theme/breakpoints.d.ts +22 -0
- package/dist/types/theme/index.d.ts +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shared keyboard navigation for listbox-like surfaces (Select, MultiSelect,
|
|
6
|
+
* Combobox, CommandPalette). Tracks an `activeIndex`, skips disabled items,
|
|
7
|
+
* and exposes a single `handleKeyDown` covering Arrow / Home / End / Enter /
|
|
8
|
+
* Escape semantics.
|
|
9
|
+
*
|
|
10
|
+
* The hook is purely logical — consumers render the list and bind the handler
|
|
11
|
+
* to an input or the listbox container. Scroll-into-view is the consumer's
|
|
12
|
+
* concern.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const { activeIndex, handleKeyDown } = useListboxNav({
|
|
17
|
+
* items: filtered,
|
|
18
|
+
* isItemDisabled: o => o.disabled ?? false,
|
|
19
|
+
* onSelect: (item) => commit(item),
|
|
20
|
+
* onEscape: () => close(),
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function useListboxNav(options) {
|
|
25
|
+
const { items, isItemDisabled, defaultActiveIndex = -1, loop = true, resetOnItemsChange = true, onSelect, onEscape, } = options;
|
|
26
|
+
const [activeIndex, setActiveIndex] = useState(defaultActiveIndex);
|
|
27
|
+
// Stable refs so handlers don't churn when callers pass inline closures.
|
|
28
|
+
const itemsRef = useRef(items);
|
|
29
|
+
const isItemDisabledRef = useRef(isItemDisabled);
|
|
30
|
+
const onSelectRef = useRef(onSelect);
|
|
31
|
+
const onEscapeRef = useRef(onEscape);
|
|
32
|
+
const loopRef = useRef(loop);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
itemsRef.current = items;
|
|
35
|
+
}, [items]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
isItemDisabledRef.current = isItemDisabled;
|
|
38
|
+
}, [isItemDisabled]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
onSelectRef.current = onSelect;
|
|
41
|
+
}, [onSelect]);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
onEscapeRef.current = onEscape;
|
|
44
|
+
}, [onEscape]);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
loopRef.current = loop;
|
|
47
|
+
}, [loop]);
|
|
48
|
+
// Reset active index when items reference changes (e.g. filter).
|
|
49
|
+
const prevItemsRef = useRef(items);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!resetOnItemsChange)
|
|
52
|
+
return;
|
|
53
|
+
if (prevItemsRef.current !== items) {
|
|
54
|
+
setActiveIndex(defaultActiveIndex);
|
|
55
|
+
prevItemsRef.current = items;
|
|
56
|
+
}
|
|
57
|
+
}, [items, resetOnItemsChange, defaultActiveIndex]);
|
|
58
|
+
const getNavigableIndices = useCallback(() => {
|
|
59
|
+
const list = itemsRef.current;
|
|
60
|
+
const disabled = isItemDisabledRef.current;
|
|
61
|
+
if (!disabled)
|
|
62
|
+
return list.map((_, i) => i);
|
|
63
|
+
const out = [];
|
|
64
|
+
for (let i = 0; i < list.length; i += 1) {
|
|
65
|
+
const item = list[i];
|
|
66
|
+
if (!disabled(item, i))
|
|
67
|
+
out.push(i);
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}, []);
|
|
71
|
+
const move = useCallback((direction) => {
|
|
72
|
+
const navigable = getNavigableIndices();
|
|
73
|
+
if (navigable.length === 0) {
|
|
74
|
+
setActiveIndex(-1);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
setActiveIndex(current => {
|
|
78
|
+
const currentNavIdx = navigable.indexOf(current);
|
|
79
|
+
switch (direction) {
|
|
80
|
+
case 'first':
|
|
81
|
+
return navigable[0] ?? -1;
|
|
82
|
+
case 'last':
|
|
83
|
+
return navigable[navigable.length - 1] ?? -1;
|
|
84
|
+
case 'next': {
|
|
85
|
+
if (currentNavIdx === -1)
|
|
86
|
+
return navigable[0] ?? -1;
|
|
87
|
+
const nextIdx = currentNavIdx + 1;
|
|
88
|
+
if (nextIdx >= navigable.length) {
|
|
89
|
+
return loopRef.current
|
|
90
|
+
? (navigable[0] ?? -1)
|
|
91
|
+
: (navigable[navigable.length - 1] ?? -1);
|
|
92
|
+
}
|
|
93
|
+
return navigable[nextIdx] ?? -1;
|
|
94
|
+
}
|
|
95
|
+
case 'prev': {
|
|
96
|
+
if (currentNavIdx === -1)
|
|
97
|
+
return navigable[navigable.length - 1] ?? -1;
|
|
98
|
+
const prevIdx = currentNavIdx - 1;
|
|
99
|
+
if (prevIdx < 0) {
|
|
100
|
+
return loopRef.current
|
|
101
|
+
? (navigable[navigable.length - 1] ?? -1)
|
|
102
|
+
: (navigable[0] ?? -1);
|
|
103
|
+
}
|
|
104
|
+
return navigable[prevIdx] ?? -1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}, [getNavigableIndices]);
|
|
109
|
+
const next = useCallback(() => {
|
|
110
|
+
move('next');
|
|
111
|
+
}, [move]);
|
|
112
|
+
const prev = useCallback(() => {
|
|
113
|
+
move('prev');
|
|
114
|
+
}, [move]);
|
|
115
|
+
const first = useCallback(() => {
|
|
116
|
+
move('first');
|
|
117
|
+
}, [move]);
|
|
118
|
+
const last = useCallback(() => {
|
|
119
|
+
move('last');
|
|
120
|
+
}, [move]);
|
|
121
|
+
const selectActive = useCallback(() => {
|
|
122
|
+
const list = itemsRef.current;
|
|
123
|
+
const disabled = isItemDisabledRef.current;
|
|
124
|
+
setActiveIndex(current => {
|
|
125
|
+
if (current < 0 || current >= list.length)
|
|
126
|
+
return current;
|
|
127
|
+
const item = list[current];
|
|
128
|
+
if (disabled?.(item, current))
|
|
129
|
+
return current;
|
|
130
|
+
onSelectRef.current?.(item, current);
|
|
131
|
+
return current;
|
|
132
|
+
});
|
|
133
|
+
}, []);
|
|
134
|
+
const handleKeyDown = useCallback((event) => {
|
|
135
|
+
switch (event.key) {
|
|
136
|
+
case 'ArrowDown':
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
next();
|
|
139
|
+
return true;
|
|
140
|
+
case 'ArrowUp':
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
prev();
|
|
143
|
+
return true;
|
|
144
|
+
case 'Home':
|
|
145
|
+
event.preventDefault();
|
|
146
|
+
first();
|
|
147
|
+
return true;
|
|
148
|
+
case 'End':
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
last();
|
|
151
|
+
return true;
|
|
152
|
+
case 'Enter':
|
|
153
|
+
event.preventDefault();
|
|
154
|
+
selectActive();
|
|
155
|
+
return true;
|
|
156
|
+
case 'Escape':
|
|
157
|
+
if (onEscapeRef.current) {
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
onEscapeRef.current();
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
default:
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}, [next, prev, first, last, selectActive]);
|
|
167
|
+
return {
|
|
168
|
+
activeIndex,
|
|
169
|
+
setActiveIndex,
|
|
170
|
+
next,
|
|
171
|
+
prev,
|
|
172
|
+
first,
|
|
173
|
+
last,
|
|
174
|
+
selectActive,
|
|
175
|
+
handleKeyDown,
|
|
176
|
+
navigableIndices: getNavigableIndices(),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export { useListboxNav };
|
|
181
|
+
//# sourceMappingURL=useListboxNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListboxNav.js","sources":["../../../../../src/hooks/useListboxNav/useListboxNav.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AA8DA;;;;;;;;;;;;;;;;;;;AAmBG;AACG;;;;AAgBJ;AACA;AACA;AACA;AACA;;AAGE;AACF;;AAEE;AACF;;AAEE;AACF;;AAEE;AACF;;AAEE;AACF;;AAGA;;AAEE;;AACA;;AAEE;;;AAIJ;AACE;AACA;AACA;AAAe;;AAEf;AACE;AACA;AAAwB;;AAE1B;;AAGF;AAEI;AACA;AACE;;;;;;AAOE;AACE;AACF;;;;AAG4B;AAC1B;AACA;;;AAGI;;AAEJ;;;;;AAKA;AACA;;AAEI;;;AAGJ;;;AAGN;AACF;AAIF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AAEA;AACE;AACA;;;AAE6C;AAC3C;AACA;AAA+B;;AAE/B;AACF;;AAGF;AAEI;AACE;;AAEE;AACA;AACF;;AAEE;AACA;AACF;;AAEE;AACA;AACF;;AAEE;AACA;AACF;;AAEE;AACA;AACF;AACE;;;AAGE;;AAEF;AACF;AACE;;AAEN;;;;;;;;;;;;AAeJ;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function getInitialMatch(query, fallback) {
|
|
5
|
+
if (typeof window === 'undefined' ||
|
|
6
|
+
typeof window.matchMedia !== 'function') {
|
|
7
|
+
return fallback;
|
|
8
|
+
}
|
|
9
|
+
return window.matchMedia(query).matches;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Reactive media query matching.
|
|
13
|
+
*
|
|
14
|
+
* Returns `true` when the current viewport matches the query and updates as
|
|
15
|
+
* the viewport changes. SSR-safe — returns `defaultMatches` when `matchMedia`
|
|
16
|
+
* is unavailable. Uses the modern `addEventListener('change')` API with a
|
|
17
|
+
* fallback to the legacy `addListener` for older browsers.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* const isWide = useMediaQuery('(min-width: 768px)');
|
|
22
|
+
* return isWide ? <DesktopLayout /> : <MobileLayout />;
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function useMediaQuery(query, options = {}) {
|
|
26
|
+
const { defaultMatches = false } = options;
|
|
27
|
+
const [matches, setMatches] = useState(() => getInitialMatch(query, defaultMatches));
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (typeof window === 'undefined' ||
|
|
30
|
+
typeof window.matchMedia !== 'function') {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const mql = window.matchMedia(query);
|
|
34
|
+
setMatches(mql.matches);
|
|
35
|
+
const handler = (event) => {
|
|
36
|
+
setMatches(event.matches);
|
|
37
|
+
};
|
|
38
|
+
if (typeof mql.addEventListener === 'function') {
|
|
39
|
+
mql.addEventListener('change', handler);
|
|
40
|
+
return () => {
|
|
41
|
+
mql.removeEventListener('change', handler);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Legacy Safari fallback.
|
|
45
|
+
mql.addListener(handler);
|
|
46
|
+
return () => {
|
|
47
|
+
mql.removeListener(handler);
|
|
48
|
+
};
|
|
49
|
+
}, [query]);
|
|
50
|
+
return matches;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { useMediaQuery };
|
|
54
|
+
//# sourceMappingURL=useMediaQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMediaQuery.js","sources":["../../../../../src/hooks/useMediaQuery/useMediaQuery.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAKA;;AAGI;AAEA;;;AAGJ;AAEA;;;;;;;;;;;;;AAaG;;AAKD;AAEA;;;AAOI;;;;AAMF;AAEA;AACE;AACF;AAEA;AACE;AACA;AACE;AACF;;;AAIF;AACA;AACE;AACF;AACF;AAEA;AACF;;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef, useMemo, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Wrap a function so it fires at most once per `delay` ms. With both
|
|
6
|
+
* `leading` and `trailing` enabled (the default), the first call fires
|
|
7
|
+
* immediately and the most recent call inside the window fires at its
|
|
8
|
+
* end. Set `leading: false` to defer the first call; set
|
|
9
|
+
* `trailing: false` to drop calls inside the window.
|
|
10
|
+
*
|
|
11
|
+
* Typical use: drag handlers, scroll listeners, resize observers — places
|
|
12
|
+
* where the input rate exceeds the work rate and you want to bound the
|
|
13
|
+
* latter.
|
|
14
|
+
*
|
|
15
|
+
* The wrapper identity is stable across renders.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* const onPointerMove = useThrottledCallback(updateGuide, 16);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
function useThrottledCallback(fn, delay, options = {}) {
|
|
23
|
+
const { leading = true, trailing = true } = options;
|
|
24
|
+
const fnRef = useRef(fn);
|
|
25
|
+
fnRef.current = fn;
|
|
26
|
+
const lastCallRef = useRef(0);
|
|
27
|
+
const timerRef = useRef(null);
|
|
28
|
+
const lastArgsRef = useRef(null);
|
|
29
|
+
const throttled = useMemo(() => {
|
|
30
|
+
const invoke = (now) => {
|
|
31
|
+
lastCallRef.current = now;
|
|
32
|
+
const args = lastArgsRef.current;
|
|
33
|
+
lastArgsRef.current = null;
|
|
34
|
+
if (args)
|
|
35
|
+
fnRef.current(...args);
|
|
36
|
+
};
|
|
37
|
+
const wrapper = (...args) => {
|
|
38
|
+
const now = Date.now();
|
|
39
|
+
if (lastCallRef.current === 0 && !leading) {
|
|
40
|
+
// Skip the leading fire by anchoring the window to "now".
|
|
41
|
+
lastCallRef.current = now;
|
|
42
|
+
}
|
|
43
|
+
const elapsed = now - lastCallRef.current;
|
|
44
|
+
lastArgsRef.current = args;
|
|
45
|
+
if (elapsed >= delay) {
|
|
46
|
+
if (timerRef.current !== null) {
|
|
47
|
+
clearTimeout(timerRef.current);
|
|
48
|
+
timerRef.current = null;
|
|
49
|
+
}
|
|
50
|
+
invoke(now);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (trailing && timerRef.current === null) {
|
|
54
|
+
timerRef.current = setTimeout(() => {
|
|
55
|
+
timerRef.current = null;
|
|
56
|
+
invoke(Date.now());
|
|
57
|
+
}, delay - elapsed);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
wrapper.cancel = () => {
|
|
61
|
+
if (timerRef.current !== null) {
|
|
62
|
+
clearTimeout(timerRef.current);
|
|
63
|
+
timerRef.current = null;
|
|
64
|
+
}
|
|
65
|
+
lastArgsRef.current = null;
|
|
66
|
+
lastCallRef.current = 0;
|
|
67
|
+
};
|
|
68
|
+
return wrapper;
|
|
69
|
+
}, [delay, leading, trailing]);
|
|
70
|
+
useEffect(() => () => {
|
|
71
|
+
if (timerRef.current !== null)
|
|
72
|
+
clearTimeout(timerRef.current);
|
|
73
|
+
}, []);
|
|
74
|
+
return throttled;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { useThrottledCallback };
|
|
78
|
+
//# sourceMappingURL=useThrottledCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThrottledCallback.js","sources":["../../../../../src/hooks/useThrottledCallback/useThrottledCallback.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAQA;;;;;;;;;;;;;;;;;AAiBG;AACG;;AAOJ;AACA;AAEA;AACA;AACA;AAEA;AACE;AACE;AACA;AACA;AACA;AAAU;AACZ;AAEA;AACE;;;AAGE;;AAGF;AACA;AAEA;AACE;AACE;AACA;;;;;;AAOF;AACE;AACA;AACF;;AAEJ;AAEA;AACE;AACE;AACA;;AAEF;AACA;AACF;AAEA;;AAGF;AAEI;AAA+B;;AAKnC;AACF;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -7,10 +7,12 @@ export { createLightTheme } from './theme/createLightTheme.js';
|
|
|
7
7
|
export { VanillaThemeProvider } from './theme/VanillaThemeProvider.js';
|
|
8
8
|
export { ThemeProvider } from './theme/ThemeProvider.js';
|
|
9
9
|
import './assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css';
|
|
10
|
+
export { BREAKPOINT_ORDER, breakpoints } from './theme/breakpoints.js';
|
|
10
11
|
export { Accordion } from './components/layout/Accordion/Accordion.js';
|
|
11
12
|
export { AccordionItem } from './components/layout/Accordion/AccordionItem.js';
|
|
12
13
|
export { AccordionTrigger } from './components/layout/Accordion/AccordionTrigger.js';
|
|
13
14
|
export { AccordionContent } from './components/layout/Accordion/AccordionContent.js';
|
|
15
|
+
export { Card } from './components/layout/Card/Card.js';
|
|
14
16
|
export { Divider } from './components/layout/Divider/Divider.js';
|
|
15
17
|
export { Flex } from './components/layout/Flex/Flex.js';
|
|
16
18
|
export { Grid } from './components/layout/Grid/Grid.js';
|
|
@@ -30,6 +32,7 @@ export { Checkbox } from './components/primitives/Checkbox/Checkbox.js';
|
|
|
30
32
|
export { CheckboxGroup } from './components/primitives/Checkbox/CheckboxGroup.js';
|
|
31
33
|
export { Code } from './components/primitives/Code/Code.js';
|
|
32
34
|
export { Collapsible } from './components/primitives/Collapsible/Collapsible.js';
|
|
35
|
+
export { HoverCard } from './components/primitives/HoverCard/HoverCard.js';
|
|
33
36
|
export { Icon } from './components/primitives/Icon/Icon.js';
|
|
34
37
|
export { IconButton } from './components/primitives/IconButton/IconButton.js';
|
|
35
38
|
export { Input } from './components/primitives/Input/Input.js';
|
|
@@ -56,12 +59,16 @@ export { ColorPalette } from './components/controls/ColorPicker/ColorPalette.js'
|
|
|
56
59
|
export { MATERIAL_PALETTE } from './components/controls/ColorPicker/palettes/material.js';
|
|
57
60
|
export { TAILWIND_PALETTE } from './components/controls/ColorPicker/palettes/tailwind.js';
|
|
58
61
|
export { EARTH_PALETTE, MONOCHROME_PALETTE, NEON_PALETTE, PASTEL_PALETTE, PROFESSIONAL_PALETTES, SKIN_TONES_PALETTE, VINTAGE_PALETTE } from './components/controls/ColorPicker/palettes/professional.js';
|
|
62
|
+
export { Combobox } from './components/controls/Combobox/Combobox.js';
|
|
63
|
+
export { FileUploader } from './components/controls/FileUploader/FileUploader.js';
|
|
64
|
+
export { MultiSelect } from './components/controls/MultiSelect/MultiSelect.js';
|
|
59
65
|
export { NumberInput } from './components/controls/NumberInput/NumberInput.js';
|
|
60
66
|
export { KeyboardContextProvider, useEffectsOnKeyboard, useKeyboardContext } from './context/KeyboardContext.js';
|
|
61
67
|
import './utils/mathExpression.js';
|
|
62
68
|
import './utils/devWarn.js';
|
|
63
69
|
export { Select } from './components/controls/Select/Select.js';
|
|
64
70
|
export { Slider } from './components/controls/Slider/Slider.js';
|
|
71
|
+
export { TagInput } from './components/controls/TagInput/TagInput.js';
|
|
65
72
|
export { VectorInput } from './components/controls/VectorInput/VectorInput.js';
|
|
66
73
|
export { TreeView } from './components/controls/TreeView/TreeView.js';
|
|
67
74
|
export { CurveEditor } from './components/controls/CurveEditor/CurveEditor.js';
|
|
@@ -76,12 +83,14 @@ export { ContextMenu } from './components/navigation/ContextMenu/ContextMenu.js'
|
|
|
76
83
|
export { useContextMenuTarget } from './components/navigation/ContextMenu/useContextMenuTarget.js';
|
|
77
84
|
export { Menu } from './components/navigation/Menu/Menu.js';
|
|
78
85
|
export { useMenu } from './components/navigation/Menu/useMenu.js';
|
|
86
|
+
export { Pagination } from './components/navigation/Pagination/Pagination.js';
|
|
79
87
|
export { SegmentedControl } from './components/navigation/SegmentedControl/SegmentedControl.js';
|
|
80
88
|
export { SegmentedControlItem } from './components/navigation/SegmentedControl/SegmentedControlItem.js';
|
|
81
89
|
export { Tabs } from './components/navigation/Tabs/Tabs.js';
|
|
82
90
|
export { TabList } from './components/navigation/Tabs/TabList.js';
|
|
83
91
|
export { Tab } from './components/navigation/Tabs/Tab.js';
|
|
84
92
|
export { TabPanel } from './components/navigation/Tabs/TabPanel.js';
|
|
93
|
+
export { DataTable } from './components/data/DataTable/DataTable.js';
|
|
85
94
|
export { FormLabel } from './components/form/FormLabel.js';
|
|
86
95
|
export { FormHelperText } from './components/form/FormHelperText.js';
|
|
87
96
|
export { InputWrapper } from './components/form/InputWrapper.js';
|
|
@@ -94,12 +103,16 @@ export { DialogHeader } from './components/feedback/Dialog/DialogHeader.js';
|
|
|
94
103
|
export { DialogBody } from './components/feedback/Dialog/DialogBody.js';
|
|
95
104
|
export { DialogFooter } from './components/feedback/Dialog/DialogFooter.js';
|
|
96
105
|
export { DialogClose } from './components/feedback/Dialog/DialogClose.js';
|
|
106
|
+
export { CommandPalette } from './components/feedback/CommandPalette/CommandPalette.js';
|
|
107
|
+
export { Drawer } from './components/feedback/Drawer/Drawer.js';
|
|
97
108
|
export { EmptyState } from './components/feedback/EmptyState/EmptyState.js';
|
|
98
109
|
export { ProgressBar } from './components/feedback/ProgressBar/ProgressBar.js';
|
|
99
110
|
export { CircularProgress } from './components/feedback/ProgressBar/CircularProgress.js';
|
|
100
111
|
export { Skeleton } from './components/feedback/Skeleton/Skeleton.js';
|
|
101
112
|
export { SkeletonGroup } from './components/feedback/Skeleton/SkeletonGroup.js';
|
|
113
|
+
export { SkeletonLayout } from './components/feedback/Skeleton/SkeletonLayout.js';
|
|
102
114
|
export { Spinner } from './components/feedback/Spinner/Spinner.js';
|
|
115
|
+
export { Stat } from './components/feedback/Stat/Stat.js';
|
|
103
116
|
export { ToastProvider } from './components/feedback/Toast/ToastProvider.js';
|
|
104
117
|
export { useToast } from './components/feedback/Toast/useToast.js';
|
|
105
118
|
export { PropertyPanel } from './components/editor/PropertyInspector/PropertyPanel.js';
|
|
@@ -145,15 +158,18 @@ export { ChevronDownIcon } from './components/Icons/ChevronDownIcon.js';
|
|
|
145
158
|
export { ChevronUpIcon } from './components/Icons/ChevronUpIcon.js';
|
|
146
159
|
export { ClockIcon } from './components/Icons/ClockIcon.js';
|
|
147
160
|
export { CloseIcon } from './components/Icons/CloseIcon.js';
|
|
161
|
+
export { CloudUploadIcon } from './components/Icons/CloudUploadIcon.js';
|
|
148
162
|
export { CodeIcon } from './components/Icons/CodeIcon.js';
|
|
149
163
|
export { CopyIcon } from './components/Icons/CopyIcon.js';
|
|
150
164
|
export { CutIcon } from './components/Icons/CutIcon.js';
|
|
151
165
|
export { DownloadIcon } from './components/Icons/DownloadIcon.js';
|
|
152
166
|
export { EditIcon } from './components/Icons/EditIcon.js';
|
|
153
167
|
export { ErrorIcon } from './components/Icons/ErrorIcon.js';
|
|
168
|
+
export { ExternalLinkIcon } from './components/Icons/ExternalLinkIcon.js';
|
|
154
169
|
export { EyeDropperIcon } from './components/Icons/EyeDropperIcon.js';
|
|
155
170
|
export { EyeIcon } from './components/Icons/EyeIcon.js';
|
|
156
171
|
export { FilterIcon } from './components/Icons/FilterIcon.js';
|
|
172
|
+
export { FirstIcon } from './components/Icons/FirstIcon.js';
|
|
157
173
|
export { FolderIcon } from './components/Icons/FolderIcon.js';
|
|
158
174
|
export { FullscreenIcon } from './components/Icons/FullscreenIcon.js';
|
|
159
175
|
export { GridIcon } from './components/Icons/GridIcon.js';
|
|
@@ -161,6 +177,7 @@ export { HeartIcon } from './components/Icons/HeartIcon.js';
|
|
|
161
177
|
export { HelpIcon } from './components/Icons/HelpIcon.js';
|
|
162
178
|
export { HomeIcon } from './components/Icons/HomeIcon.js';
|
|
163
179
|
export { InfoIcon } from './components/Icons/InfoIcon.js';
|
|
180
|
+
export { LastIcon } from './components/Icons/LastIcon.js';
|
|
164
181
|
export { LinkIcon } from './components/Icons/LinkIcon.js';
|
|
165
182
|
export { ListIcon } from './components/Icons/ListIcon.js';
|
|
166
183
|
export { LockIcon } from './components/Icons/LockIcon.js';
|
|
@@ -181,6 +198,7 @@ export { SuccessIcon } from './components/Icons/SuccessIcon.js';
|
|
|
181
198
|
export { TagIcon } from './components/Icons/TagIcon.js';
|
|
182
199
|
export { TrashIcon } from './components/Icons/TrashIcon.js';
|
|
183
200
|
export { UndoIcon } from './components/Icons/UndoIcon.js';
|
|
201
|
+
export { UnlinkIcon } from './components/Icons/UnlinkIcon.js';
|
|
184
202
|
export { UnlockIcon } from './components/Icons/UnlockIcon.js';
|
|
185
203
|
export { UploadIcon } from './components/Icons/UploadIcon.js';
|
|
186
204
|
export { UserIcon } from './components/Icons/UserIcon.js';
|
|
@@ -222,6 +240,13 @@ export { useDisclosure } from './hooks/useDisclosure/useDisclosure.js';
|
|
|
222
240
|
export { useClipboard } from './hooks/useClipboard/useClipboard.js';
|
|
223
241
|
export { useClickOutside } from './hooks/useClickOutside/useClickOutside.js';
|
|
224
242
|
export { useHotkey } from './hooks/useHotkey/useHotkey.js';
|
|
243
|
+
export { useMediaQuery } from './hooks/useMediaQuery/useMediaQuery.js';
|
|
244
|
+
export { useBreakpoint } from './hooks/useBreakpoint/useBreakpoint.js';
|
|
245
|
+
export { useDebouncedValue } from './hooks/useDebounced/useDebouncedValue.js';
|
|
246
|
+
export { useDebouncedCallback } from './hooks/useDebounced/useDebouncedCallback.js';
|
|
247
|
+
export { useThrottledCallback } from './hooks/useThrottledCallback/useThrottledCallback.js';
|
|
248
|
+
export { useIntersectionObserver } from './hooks/useIntersectionObserver/useIntersectionObserver.js';
|
|
249
|
+
export { useListboxNav } from './hooks/useListboxNav/useListboxNav.js';
|
|
225
250
|
export { useTheme } from './hooks/useTheme/useTheme.js';
|
|
226
251
|
export { cx as cn, cx } from './utils/cx.js';
|
|
227
252
|
export { getKeyGlyph, getPlatform, parseShortcut } from './utils/platform.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
const breakpoints = {
|
|
12
|
+
xs: 0,
|
|
13
|
+
sm: 576,
|
|
14
|
+
md: 768,
|
|
15
|
+
lg: 992,
|
|
16
|
+
xl: 1200,
|
|
17
|
+
};
|
|
18
|
+
const BREAKPOINT_ORDER = [
|
|
19
|
+
'xs',
|
|
20
|
+
'sm',
|
|
21
|
+
'md',
|
|
22
|
+
'lg',
|
|
23
|
+
'xl',
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
export { BREAKPOINT_ORDER, breakpoints };
|
|
27
|
+
//# sourceMappingURL=breakpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sources":["../../../../src/theme/breakpoints.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;AASG;AACI,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,IAAI;;AAKH,MAAM,gBAAgB,GAA8B;IACzD,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;;;;;"}
|
package/dist/esm/theme/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export { createLightTheme } from './createLightTheme.js';
|
|
|
7
7
|
export { VanillaThemeProvider } from './VanillaThemeProvider.js';
|
|
8
8
|
export { ThemeProvider } from './ThemeProvider.js';
|
|
9
9
|
export { GLOBAL_SCROLLBARS_CLASS } from './globalScrollbars.css.js';
|
|
10
|
+
export { BREAKPOINT_ORDER, breakpoints } from './breakpoints.js';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
package/dist/tokens/tokens.json
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IconSize, IconColor } from '../primitives/Icon/Icon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Cloud upload icon — a cloud silhouette with an upward arrow inside.
|
|
6
|
+
*
|
|
7
|
+
* Use for file-upload drop zones, "send to cloud" actions, and any other
|
|
8
|
+
* upload-to-remote affordance. For a generic up-arrow without the cloud,
|
|
9
|
+
* use `UploadIcon` instead.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <CloudUploadIcon size="lg" color="muted" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const CloudUploadIcon: React.NamedExoticComponent<Omit<{
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
size?: IconSize | undefined;
|
|
19
|
+
color?: IconColor | undefined;
|
|
20
|
+
className?: string | undefined;
|
|
21
|
+
title?: string | undefined;
|
|
22
|
+
decorative?: boolean | undefined;
|
|
23
|
+
testId?: string | undefined;
|
|
24
|
+
ref?: React.Ref<SVGSVGElement> | undefined;
|
|
25
|
+
}, "children">>;
|
|
26
|
+
|
|
27
|
+
export { CloudUploadIcon };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IconSize, IconColor } from '../primitives/Icon/Icon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* External link icon — a box with an arrow exiting the top-right corner.
|
|
6
|
+
*
|
|
7
|
+
* Use for links that open in a new tab/window or otherwise navigate
|
|
8
|
+
* outside the current surface. For an in-app link (chain shape) use
|
|
9
|
+
* `LinkIcon` instead.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <Link href="https://example.com" target="_blank">
|
|
14
|
+
* Docs <ExternalLinkIcon size="sm" decorative />
|
|
15
|
+
* </Link>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare const ExternalLinkIcon: React.NamedExoticComponent<Omit<{
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
size?: IconSize | undefined;
|
|
21
|
+
color?: IconColor | undefined;
|
|
22
|
+
className?: string | undefined;
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
decorative?: boolean | undefined;
|
|
25
|
+
testId?: string | undefined;
|
|
26
|
+
ref?: React.Ref<SVGSVGElement> | undefined;
|
|
27
|
+
}, "children">>;
|
|
28
|
+
|
|
29
|
+
export { ExternalLinkIcon };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IconSize, IconColor } from '../primitives/Icon/Icon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Skip to first icon — vertical bar plus a leftward chevron.
|
|
6
|
+
*
|
|
7
|
+
* Used by Pagination's "first page" button and similar
|
|
8
|
+
* jump-to-start controls.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <IconButton aria-label="First page"><FirstIcon /></IconButton>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const FirstIcon: React.NamedExoticComponent<Omit<{
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
size?: IconSize | undefined;
|
|
18
|
+
color?: IconColor | undefined;
|
|
19
|
+
className?: string | undefined;
|
|
20
|
+
title?: string | undefined;
|
|
21
|
+
decorative?: boolean | undefined;
|
|
22
|
+
testId?: string | undefined;
|
|
23
|
+
ref?: React.Ref<SVGSVGElement> | undefined;
|
|
24
|
+
}, "children">>;
|
|
25
|
+
|
|
26
|
+
export { FirstIcon };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IconSize, IconColor } from '../primitives/Icon/Icon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Skip to last icon — rightward chevron plus a vertical bar.
|
|
6
|
+
*
|
|
7
|
+
* Used by Pagination's "last page" button and similar
|
|
8
|
+
* jump-to-end controls.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <IconButton aria-label="Last page"><LastIcon /></IconButton>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const LastIcon: React.NamedExoticComponent<Omit<{
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
size?: IconSize | undefined;
|
|
18
|
+
color?: IconColor | undefined;
|
|
19
|
+
className?: string | undefined;
|
|
20
|
+
title?: string | undefined;
|
|
21
|
+
decorative?: boolean | undefined;
|
|
22
|
+
testId?: string | undefined;
|
|
23
|
+
ref?: React.Ref<SVGSVGElement> | undefined;
|
|
24
|
+
}, "children">>;
|
|
25
|
+
|
|
26
|
+
export { LastIcon };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IconSize, IconColor } from '../primitives/Icon/Icon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unlink icon — a broken chain.
|
|
6
|
+
*
|
|
7
|
+
* Indicates that two values are decoupled (no longer linked). Pair with
|
|
8
|
+
* `LinkIcon` to render a toggle: link → unlink. Common in coordinate
|
|
9
|
+
* inputs, transform locks, color-channel groups.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <IconButton aria-label="Unlink axes">
|
|
14
|
+
* <UnlinkIcon />
|
|
15
|
+
* </IconButton>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare const UnlinkIcon: React.NamedExoticComponent<Omit<{
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
size?: IconSize | undefined;
|
|
21
|
+
color?: IconColor | undefined;
|
|
22
|
+
className?: string | undefined;
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
decorative?: boolean | undefined;
|
|
25
|
+
testId?: string | undefined;
|
|
26
|
+
ref?: React.Ref<SVGSVGElement> | undefined;
|
|
27
|
+
}, "children">>;
|
|
28
|
+
|
|
29
|
+
export { UnlinkIcon };
|