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,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import { FOCUSABLE_SELECTOR } from '../../../hooks/useFocusTrap/useFocusTrap.js';
|
|
4
|
+
import { DRAWER_ANIMATION_MS } from './Drawer.css.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Mount/unmount animation lifecycle plus focus management for Drawer.
|
|
8
|
+
* Mirrors the Dialog hook so behavior stays consistent: mount on open,
|
|
9
|
+
* delay unmount on close to play the slide-out, return focus to the
|
|
10
|
+
* previously focused element. `prefers-reduced-motion: reduce` collapses
|
|
11
|
+
* the animation delay to zero.
|
|
12
|
+
*/
|
|
13
|
+
function useDrawerAnimation({ open, panelRef, initialFocusRef, shouldFocus, }) {
|
|
14
|
+
const [mounted, setMounted] = useState(false);
|
|
15
|
+
const [closing, setClosing] = useState(false);
|
|
16
|
+
const previousFocusRef = useRef(null);
|
|
17
|
+
const wasOpenRef = useRef(false);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (open) {
|
|
20
|
+
previousFocusRef.current = document.activeElement;
|
|
21
|
+
setClosing(false);
|
|
22
|
+
setMounted(true);
|
|
23
|
+
wasOpenRef.current = true;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (wasOpenRef.current) {
|
|
27
|
+
wasOpenRef.current = false;
|
|
28
|
+
setClosing(true);
|
|
29
|
+
const prefersReducedMotion = typeof window !== 'undefined' &&
|
|
30
|
+
typeof window.matchMedia === 'function' &&
|
|
31
|
+
window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
32
|
+
const delay = prefersReducedMotion ? 0 : DRAWER_ANIMATION_MS;
|
|
33
|
+
const timer = setTimeout(() => {
|
|
34
|
+
setMounted(false);
|
|
35
|
+
setClosing(false);
|
|
36
|
+
if (previousFocusRef.current) {
|
|
37
|
+
previousFocusRef.current.focus();
|
|
38
|
+
previousFocusRef.current = null;
|
|
39
|
+
}
|
|
40
|
+
}, delay);
|
|
41
|
+
return () => {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}, [open]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!open || !mounted || !shouldFocus)
|
|
49
|
+
return undefined;
|
|
50
|
+
const timer = setTimeout(() => {
|
|
51
|
+
if (initialFocusRef?.current) {
|
|
52
|
+
initialFocusRef.current.focus();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const panel = panelRef.current;
|
|
56
|
+
if (!panel)
|
|
57
|
+
return;
|
|
58
|
+
const firstFocusable = panel.querySelector(FOCUSABLE_SELECTOR);
|
|
59
|
+
if (firstFocusable) {
|
|
60
|
+
firstFocusable.focus();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
panel.focus();
|
|
64
|
+
}
|
|
65
|
+
}, 0);
|
|
66
|
+
return () => {
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
};
|
|
69
|
+
}, [open, mounted, initialFocusRef, panelRef, shouldFocus]);
|
|
70
|
+
return { mounted, closing };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { useDrawerAnimation };
|
|
74
|
+
//# sourceMappingURL=useDrawerAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrawerAnimation.js","sources":["../../../../../../src/components/feedback/Drawer/useDrawerAnimation.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAkBA;;;;;;AAMG;AACG;;;AAQJ;AACA;;;AAII;;;AAGA;AACA;;AAEF;AACE;;AAEA;AAEE;AACA;;AAEF;;;AAGE;AACE;AACA;;;AAGJ;;AAEA;;AAEF;AACF;;AAGE;AAAuC;AACvC;AACE;AACE;;;AAGF;AACA;;;;;;;;;;AASF;;AAEA;AACF;AAEA;AACF;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './../../../assets/src/components/feedback/Skeleton/SkeletonLayout.css.ts.vanilla-Db7bpqiI.css';
|
|
2
|
+
|
|
3
|
+
var cardBodyStyle = 'SkeletonLayout_cardBodyStyle__1kvkgdl2';
|
|
4
|
+
var cardLayoutStyle = 'SkeletonLayout_cardLayoutStyle__1kvkgdl1';
|
|
5
|
+
var chatBubbleStyle = 'SkeletonLayout_chatBubbleStyle__1kvkgdlc';
|
|
6
|
+
var chatLayoutStyle = 'SkeletonLayout_chatLayoutStyle__1kvkgdl9';
|
|
7
|
+
var chatRowEndStyle = 'SkeletonLayout_chatRowEndStyle__1kvkgdlb';
|
|
8
|
+
var chatRowStyle = 'SkeletonLayout_chatRowStyle__1kvkgdla';
|
|
9
|
+
var gridLayoutStyle = 'SkeletonLayout_gridLayoutStyle__1kvkgdl8';
|
|
10
|
+
var layoutColumnsVar = 'var(--layoutColumnsVar__1kvkgdl0)';
|
|
11
|
+
var listLayoutStyle = 'SkeletonLayout_listLayoutStyle__1kvkgdl3';
|
|
12
|
+
var listRowBodyStyle = 'SkeletonLayout_listRowBodyStyle__1kvkgdl5';
|
|
13
|
+
var listRowStyle = 'SkeletonLayout_listRowStyle__1kvkgdl4';
|
|
14
|
+
var tableHeaderCellStyle = 'SkeletonLayout_tableHeaderCellStyle__1kvkgdl7';
|
|
15
|
+
var tableLayoutStyle = 'SkeletonLayout_tableLayoutStyle__1kvkgdl6';
|
|
16
|
+
|
|
17
|
+
export { cardBodyStyle, cardLayoutStyle, chatBubbleStyle, chatLayoutStyle, chatRowEndStyle, chatRowStyle, gridLayoutStyle, layoutColumnsVar, listLayoutStyle, listRowBodyStyle, listRowStyle, tableHeaderCellStyle, tableLayoutStyle };
|
|
18
|
+
//# sourceMappingURL=SkeletonLayout.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkeletonLayout.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
5
|
+
import { cx } from '../../../utils/cx.js';
|
|
6
|
+
import { Skeleton } from './Skeleton.js';
|
|
7
|
+
import { chatLayoutStyle, chatBubbleStyle, chatRowEndStyle, chatRowStyle, gridLayoutStyle, layoutColumnsVar, tableLayoutStyle, tableHeaderCellStyle, listLayoutStyle, listRowStyle, listRowBodyStyle, cardLayoutStyle, cardBodyStyle } from './SkeletonLayout.css.js';
|
|
8
|
+
|
|
9
|
+
const DEFAULT_COUNT = {
|
|
10
|
+
card: 1,
|
|
11
|
+
list: 5,
|
|
12
|
+
table: 5,
|
|
13
|
+
grid: 12,
|
|
14
|
+
chat: 4,
|
|
15
|
+
};
|
|
16
|
+
const DEFAULT_ANIMATION = {
|
|
17
|
+
card: 'pulse',
|
|
18
|
+
list: 'pulse',
|
|
19
|
+
table: 'pulse',
|
|
20
|
+
grid: 'none',
|
|
21
|
+
chat: 'pulse',
|
|
22
|
+
};
|
|
23
|
+
const DEFAULT_COLUMNS = 4;
|
|
24
|
+
function renderCard(animation) {
|
|
25
|
+
return (jsxs("div", { className: cardLayoutStyle, children: [jsx(Skeleton, { shape: "circle", width: 40, animation: animation }), jsxs("div", { className: cardBodyStyle, children: [jsx(Skeleton, { shape: "line", width: "70%", animation: animation }), jsx(Skeleton, { shape: "line", width: "100%", animation: animation }), jsx(Skeleton, { shape: "line", width: "50%", animation: animation }), jsx(Skeleton, { width: "100%", height: 80, animation: animation })] })] }));
|
|
26
|
+
}
|
|
27
|
+
function renderList(count, animation) {
|
|
28
|
+
return (jsx("div", { className: listLayoutStyle, children: Array.from({ length: count }, (_, i) => (jsxs("div", { className: listRowStyle, children: [jsx(Skeleton, { shape: "circle", width: 32, animation: animation }), jsxs("div", { className: listRowBodyStyle, children: [jsx(Skeleton, { shape: "line", width: "60%", animation: animation }), jsx(Skeleton, { shape: "line", width: "90%", animation: animation })] })] }, i))) }));
|
|
29
|
+
}
|
|
30
|
+
function renderTable(rows, columns, animation) {
|
|
31
|
+
const totalCells = (rows + 1) * columns;
|
|
32
|
+
return (jsx("div", { className: tableLayoutStyle, style: assignInlineVars({ [layoutColumnsVar]: String(columns) }), children: Array.from({ length: totalCells }, (_, i) => {
|
|
33
|
+
const isHeader = i < columns;
|
|
34
|
+
return (jsx("div", { className: isHeader ? tableHeaderCellStyle : undefined, children: jsx(Skeleton, { shape: "line", width: isHeader ? '50%' : '80%', animation: animation }) }, i));
|
|
35
|
+
}) }));
|
|
36
|
+
}
|
|
37
|
+
function renderGrid(count, columns, animation) {
|
|
38
|
+
return (jsx("div", { className: gridLayoutStyle, style: assignInlineVars({ [layoutColumnsVar]: String(columns) }), children: Array.from({ length: count }, (_, i) => (jsx(Skeleton, { width: "100%", height: 80, animation: animation }, i))) }));
|
|
39
|
+
}
|
|
40
|
+
const CHAT_BUBBLE_WIDTHS = ['85%', '60%', '95%', '70%', '50%', '80%'];
|
|
41
|
+
function renderChat(count, animation) {
|
|
42
|
+
return (jsx("div", { className: chatLayoutStyle, children: Array.from({ length: count }, (_, i) => {
|
|
43
|
+
const isOutgoing = i % 2 === 1;
|
|
44
|
+
const bubbleWidth = CHAT_BUBBLE_WIDTHS[i % CHAT_BUBBLE_WIDTHS.length];
|
|
45
|
+
return (jsxs("div", { className: cx(chatRowStyle, isOutgoing && chatRowEndStyle), children: [jsx(Skeleton, { shape: "circle", width: 28, animation: animation }), jsxs("div", { className: chatBubbleStyle, children: [jsx(Skeleton, { shape: "line", width: bubbleWidth, animation: animation }), i % 3 === 0 ? (jsx(Skeleton, { shape: "line", width: "40%", animation: animation })) : null] })] }, i));
|
|
46
|
+
}) }));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Pre-built skeleton layouts for common loading patterns — card, list, table,
|
|
50
|
+
* grid, and chat. Drop one in when the surrounding UI shape is known and you
|
|
51
|
+
* want the placeholder structure to mirror it without composing every block
|
|
52
|
+
* by hand.
|
|
53
|
+
*
|
|
54
|
+
* Each variant uses the base `Skeleton` primitive underneath, so animation
|
|
55
|
+
* and reduced-motion behavior match the rest of the library. Use `count` to
|
|
56
|
+
* scale the number of rows/cells, `columns` for `grid` and `table`, and
|
|
57
|
+
* `animation` to opt out of motion for dense surfaces.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```tsx
|
|
61
|
+
* <SkeletonLayout variant="card" />
|
|
62
|
+
* <SkeletonLayout variant="list" count={8} />
|
|
63
|
+
* <SkeletonLayout variant="table" columns={5} count={6} />
|
|
64
|
+
* <SkeletonLayout variant="grid" columns={3} count={9} />
|
|
65
|
+
* <SkeletonLayout variant="chat" count={6} />
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
const SkeletonLayout = /*#__PURE__*/ React.memo(({ variant, count, columns = DEFAULT_COLUMNS, animation, width = '100%', className, style, testId, ref, ...rest }) => {
|
|
69
|
+
const resolvedCount = count ?? DEFAULT_COUNT[variant];
|
|
70
|
+
const resolvedAnimation = animation ?? DEFAULT_ANIMATION[variant];
|
|
71
|
+
const resolvedWidth = typeof width === 'number' ? `${width}px` : width;
|
|
72
|
+
let content;
|
|
73
|
+
switch (variant) {
|
|
74
|
+
case 'card':
|
|
75
|
+
content = renderCard(resolvedAnimation);
|
|
76
|
+
break;
|
|
77
|
+
case 'list':
|
|
78
|
+
content = renderList(resolvedCount, resolvedAnimation);
|
|
79
|
+
break;
|
|
80
|
+
case 'table':
|
|
81
|
+
content = renderTable(resolvedCount, columns, resolvedAnimation);
|
|
82
|
+
break;
|
|
83
|
+
case 'grid':
|
|
84
|
+
content = renderGrid(resolvedCount, columns, resolvedAnimation);
|
|
85
|
+
break;
|
|
86
|
+
case 'chat':
|
|
87
|
+
content = renderChat(resolvedCount, resolvedAnimation);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return (jsx("div", { ref: ref, "aria-hidden": "true", "aria-busy": "true", className: cx(className), style: { width: resolvedWidth, ...style }, "data-testid": testId, "data-variant": variant, ...rest, children: content }));
|
|
91
|
+
});
|
|
92
|
+
SkeletonLayout.displayName = 'SkeletonLayout';
|
|
93
|
+
|
|
94
|
+
export { SkeletonLayout };
|
|
95
|
+
//# sourceMappingURL=SkeletonLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkeletonLayout.js","sources":["../../../../../../src/components/feedback/Skeleton/SkeletonLayout.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AA2BA;AACE;AACA;AACA;AACA;AACA;;AAGF;AACE;AACA;AACA;AACA;AACA;;AAGF;AAEA;;AAYA;AAEA;AAIE;AAaF;AAEA;;AAME;AAMM;AACA;;AAYR;AAEA;AAKE;AAUF;AAEA;AAEA;;AAOQ;;AAEA;;AAqBR;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;AACI;;;AAeH;AAEA;;AAEE;AACE;;AAEF;AACE;;AAEF;;;AAGA;;;AAGA;AACE;;;AAIJ;AAcF;AAGF;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import './../../../assets/src/components/feedback/Stat/Stat.css.ts.vanilla-GBk3JAMB.css';
|
|
2
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
3
|
+
|
|
4
|
+
var statContentStyle = 'Stat_statContentStyle__cv0db96';
|
|
5
|
+
var statDeltaColorVar = 'var(--statDeltaColorVar__cv0db90)';
|
|
6
|
+
var statDeltaIconStyle = 'Stat_statDeltaIconStyle__cv0db9d';
|
|
7
|
+
var statDeltaStyle = 'Stat_statDeltaStyle__cv0db9c';
|
|
8
|
+
var statHelperStyle = 'Stat_statHelperStyle__cv0db9e';
|
|
9
|
+
var statIconStyle = 'Stat_statIconStyle__cv0db95';
|
|
10
|
+
var statLabelStyle = 'Stat_statLabelStyle__cv0db97';
|
|
11
|
+
var statRoot = createRuntimeFn({defaultClassName:'Stat_statRoot__cv0db91',variantClassNames:{size:{sm:'Stat_statRoot_size_sm__cv0db92',md:'Stat_statRoot_size_md__cv0db93',lg:'Stat_statRoot_size_lg__cv0db94'}},defaultVariants:{size:'md'},compoundVariants:[]});
|
|
12
|
+
var statValueRecipe = createRuntimeFn({defaultClassName:'Stat_statValueRecipe__cv0db98',variantClassNames:{size:{sm:'Stat_statValueRecipe_size_sm__cv0db99',md:'Stat_statValueRecipe_size_md__cv0db9a',lg:'Stat_statValueRecipe_size_lg__cv0db9b'}},defaultVariants:{size:'md'},compoundVariants:[]});
|
|
13
|
+
|
|
14
|
+
export { statContentStyle, statDeltaColorVar, statDeltaIconStyle, statDeltaStyle, statHelperStyle, statIconStyle, statLabelStyle, statRoot, statValueRecipe };
|
|
15
|
+
//# sourceMappingURL=Stat.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stat.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
4
|
+
import { vars } from '../../../theme/contract.css.js';
|
|
5
|
+
import { cx } from '../../../utils/cx.js';
|
|
6
|
+
import { statIconStyle, statContentStyle, statLabelStyle, statValueRecipe, statHelperStyle, statRoot, statDeltaStyle, statDeltaColorVar, statDeltaIconStyle } from './Stat.css.js';
|
|
7
|
+
|
|
8
|
+
const ARROW_PATHS = {
|
|
9
|
+
up: 'M6 2 L10 7 L7 7 L7 10 L5 10 L5 7 L2 7 Z',
|
|
10
|
+
down: 'M6 10 L2 5 L5 5 L5 2 L7 2 L7 5 L10 5 Z',
|
|
11
|
+
neutral: 'M2 6 L10 6 L10 7 L2 7 Z',
|
|
12
|
+
};
|
|
13
|
+
function deltaColor(direction, semantics) {
|
|
14
|
+
if (semantics === 'neutral' || direction === 'neutral') {
|
|
15
|
+
return vars.colors.text.muted;
|
|
16
|
+
}
|
|
17
|
+
const isUpGood = semantics === 'positive';
|
|
18
|
+
const upColor = isUpGood
|
|
19
|
+
? vars.colors.accent.success
|
|
20
|
+
: vars.colors.accent.error;
|
|
21
|
+
const downColor = isUpGood
|
|
22
|
+
? vars.colors.accent.error
|
|
23
|
+
: vars.colors.accent.success;
|
|
24
|
+
return direction === 'up' ? upColor : downColor;
|
|
25
|
+
}
|
|
26
|
+
function DeltaIcon({ direction }) {
|
|
27
|
+
return (jsx("svg", { className: statDeltaIconStyle, viewBox: "0 0 12 12", "aria-hidden": "true", focusable: "false", children: jsx("path", { d: ARROW_PATHS[direction], fill: "currentColor" }) }));
|
|
28
|
+
}
|
|
29
|
+
function DeltaDisplay({ delta }) {
|
|
30
|
+
const semantics = delta.semantics ?? 'positive';
|
|
31
|
+
const color = deltaColor(delta.direction, semantics);
|
|
32
|
+
return (jsxs("span", { className: statDeltaStyle, style: assignInlineVars({ [statDeltaColorVar]: color }), children: [jsx(DeltaIcon, { direction: delta.direction }), delta.value] }));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* KPI / metric display: label + value + optional trend delta.
|
|
36
|
+
*
|
|
37
|
+
* Use `delta.semantics` to indicate whether "up" is good. Errors and
|
|
38
|
+
* latency, for example, want `semantics: "negative"` so an upward
|
|
39
|
+
* direction shows red.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <Stat
|
|
44
|
+
* label="MRR"
|
|
45
|
+
* value="$12,400"
|
|
46
|
+
* delta={{ value: '+8.2%', direction: 'up' }}
|
|
47
|
+
* helper="vs. last month"
|
|
48
|
+
* />
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
const Stat = ({ label, value, delta, helper, icon, size = 'md', className, style, testId, ref, ...rest }) => (jsxs("div", { ref: ref, className: cx(statRoot({ size }), className), style: style, "data-testid": testId, ...rest, children: [icon && jsx("div", { className: statIconStyle, children: icon }), jsxs("div", { className: statContentStyle, children: [jsx("p", { className: statLabelStyle, children: label }), jsx("p", { className: statValueRecipe({ size }), children: value }), delta && jsx(DeltaDisplay, { delta: delta }), helper && jsx("p", { className: statHelperStyle, children: helper })] })] }));
|
|
52
|
+
Stat.displayName = 'Stat';
|
|
53
|
+
|
|
54
|
+
export { Stat };
|
|
55
|
+
//# sourceMappingURL=Stat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stat.js","sources":["../../../../../../src/components/feedback/Stat/Stat.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAwBA;AACE;AACA;AACA;;AAGF;;AAKI;;AAEF;;AAEE;;;AAGA;;;AAGJ;AAEA;AACE;AAUF;AAEA;AACE;;AAEA;AASF;AAEA;;;;;;;;;;;;;;;;AAgBG;AACI;AA8BP;;"}
|
|
@@ -2,27 +2,24 @@
|
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
4
4
|
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
5
|
+
import { CloseIcon } from '../../Icons/CloseIcon.js';
|
|
6
|
+
import { ErrorIcon } from '../../Icons/ErrorIcon.js';
|
|
7
|
+
import { InfoIcon } from '../../Icons/InfoIcon.js';
|
|
8
|
+
import { SuccessIcon } from '../../Icons/SuccessIcon.js';
|
|
9
|
+
import { WarningIcon } from '../../Icons/WarningIcon.js';
|
|
5
10
|
import { content, iconWrapper, textContent, titleStyle, message, actionButton, closeButton, progressDurationVar, progressBar, toast } from './ToastItem.css.js';
|
|
6
11
|
|
|
7
|
-
// --- Severity icons
|
|
8
|
-
const SeverityIcon = ({ severity
|
|
9
|
-
const size = 16;
|
|
10
|
-
const commonProps = {
|
|
11
|
-
width: size,
|
|
12
|
-
height: size,
|
|
13
|
-
viewBox: '0 0 16 16',
|
|
14
|
-
fill: 'none',
|
|
15
|
-
'aria-hidden': true,
|
|
16
|
-
};
|
|
12
|
+
// --- Severity icons ---
|
|
13
|
+
const SeverityIcon = ({ severity }) => {
|
|
17
14
|
switch (severity) {
|
|
18
15
|
case 'info':
|
|
19
|
-
return
|
|
16
|
+
return jsx(InfoIcon, { size: "md", color: "currentColor", decorative: true });
|
|
20
17
|
case 'success':
|
|
21
|
-
return
|
|
18
|
+
return jsx(SuccessIcon, { size: "md", color: "currentColor", decorative: true });
|
|
22
19
|
case 'warning':
|
|
23
|
-
return
|
|
20
|
+
return jsx(WarningIcon, { size: "md", color: "currentColor", decorative: true });
|
|
24
21
|
case 'error':
|
|
25
|
-
return
|
|
22
|
+
return jsx(ErrorIcon, { size: "md", color: "currentColor", decorative: true });
|
|
26
23
|
}
|
|
27
24
|
};
|
|
28
25
|
/**
|
|
@@ -74,7 +71,7 @@ const ToastItem = ({ toast: toastData, onDismiss, }) => {
|
|
|
74
71
|
startTimer();
|
|
75
72
|
return clearTimer;
|
|
76
73
|
}, [startTimer, clearTimer]);
|
|
77
|
-
return (jsxs("div", { className: toast({ severity }), role: role, "aria-live": ariaLive, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, "data-testid": `toast-${id}`, children: [jsxs("div", { className: content, children: [jsx("div", { className: iconWrapper, children: icon ?? jsx(SeverityIcon, { severity: severity
|
|
74
|
+
return (jsxs("div", { className: toast({ severity }), role: role, "aria-live": ariaLive, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, "data-testid": `toast-${id}`, children: [jsxs("div", { className: content, children: [jsx("div", { className: iconWrapper, children: icon ?? jsx(SeverityIcon, { severity: severity }) }), jsxs("div", { className: textContent, children: [title && jsx("div", { className: titleStyle, children: title }), jsx("div", { className: message, children: msg }), action && (jsx("button", { className: actionButton({ severity }), onClick: action.onClick, type: "button", children: action.label }))] }), closable && (jsx("button", { className: closeButton, onClick: () => onDismiss(id), "aria-label": "Dismiss notification", type: "button", children: jsx(CloseIcon, { size: "sm", decorative: true }) }))] }), showProgress && duration > 0 && (jsx("div", { className: progressBar({ severity, paused }), style: assignInlineVars({
|
|
78
75
|
[progressDurationVar]: `${duration}ms`,
|
|
79
76
|
}), "data-testid": `toast-progress-${id}` }))] }));
|
|
80
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastItem.js","sources":["../../../../../../src/components/feedback/Toast/ToastItem.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToastItem.js","sources":["../../../../../../src/components/feedback/Toast/ToastItem.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;AAuBA;AAEA;;AAEI;AACE;AACF;AACE;AACF;AACE;AACF;AACE;;AAEN;AASA;;;;;;;AAOG;AACI;;;AAiBL;AACA;;;;;AAOA;AACE;AACE;AACA;;;AAIJ;;;AAEE;AACA;AACA;;AAEA;;AAGF;;;;AAGE;;AAEF;AAEA;;;;AAGE;AACF;;AAGE;AACA;AACF;AAEA;AAyCU;;AAOZ;AAEA;;"}
|
|
@@ -50,7 +50,7 @@ function normalizeValue(value) {
|
|
|
50
50
|
* </Accordion>
|
|
51
51
|
* ```
|
|
52
52
|
*/
|
|
53
|
-
const Accordion = ({ value: valueProp, defaultValue, multiple = false, collapsible = false, variant = 'default', size = 'md', gap = 0, children, onChange, className, style, testId, ref, ...rest }) => {
|
|
53
|
+
const Accordion = ({ value: valueProp, defaultValue, multiple = false, collapsible = false, variant = 'default', size = 'md', gap = 0, width = '100%', children, onChange, className, style, testId, ref, ...rest }) => {
|
|
54
54
|
const autoId = useId();
|
|
55
55
|
const [internalValue, setInternalValue] = useState(normalizeValue(defaultValue));
|
|
56
56
|
const isControlled = valueProp !== undefined;
|
|
@@ -94,6 +94,7 @@ const Accordion = ({ value: valueProp, defaultValue, multiple = false, collapsib
|
|
|
94
94
|
...assignInlineVars({
|
|
95
95
|
[accordionGapVar]: `${gap}px`,
|
|
96
96
|
}),
|
|
97
|
+
width: typeof width === 'number' ? `${width}px` : width,
|
|
97
98
|
...style,
|
|
98
99
|
};
|
|
99
100
|
return (jsx(AccordionContext.Provider, { value: contextValue, children: jsx("div", { ref: ref, className: cx(accordionRoot, className), style: mergedStyle, "data-testid": testId, ...rest, children: children }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","sources":["../../../../../../src/components/layout/Accordion/Accordion.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAkBA;AAEA;AACE;AACF;AACE;;AAGA;;AAEE;;AAIF;AACF;;AAGE;;AAEE;;AAIF;AACF;AAIA;AAEA;;AAC2B;AACzB;AAA0B;;AAE5B;AAEA;AAEA;;;;;;;;;;;;;;;;AAgBG
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../../../../src/components/layout/Accordion/Accordion.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAkBA;AAEA;AACE;AACF;AACE;;AAGA;;AAEE;;AAIF;AACF;;AAGE;;AAEE;;AAIF;AACF;AAIA;AAEA;;AAC2B;AACzB;AAA0B;;AAE5B;AAEA;AAEA;;;;;;;;;;;;;;;;AAgBG;AACI;AAiBL;AAEA;AAGA;;AAEE;;AAGF;;AAII;;AAGE;AACE;AACA;;;;;;;AAKA;;;;;;;AASF;;;;;AAIJ;AAIF;;;;;AAKE;;AAGF;AACE;AACE;;AAEF;AACA;;AAGF;AAaF;AAEA;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
|
+
import { ChevronRightIcon } from '../../Icons/ChevronRightIcon.js';
|
|
4
5
|
import { useAccordionContext, useAccordionItemContext } from './Accordion.js';
|
|
5
6
|
import { cx } from '../../../utils/cx.js';
|
|
6
7
|
import { chevronExpanded, chevronCollapsed, chevronStyle, iconArea, actionsArea, triggerButton } from './Accordion.css.js';
|
|
@@ -10,8 +11,6 @@ const CHEVRON_SIZE_MAP = {
|
|
|
10
11
|
md: { chevronSize: 12 },
|
|
11
12
|
lg: { chevronSize: 14 },
|
|
12
13
|
};
|
|
13
|
-
// --- Chevron icon ---
|
|
14
|
-
const ChevronRightIcon = ({ size }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M4.5 3L7.5 6L4.5 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
15
14
|
// --- Component ---
|
|
16
15
|
const AccordionTrigger = ({ children, icon, actions, indicator, className, style, testId, ref, ...rest }) => {
|
|
17
16
|
const { toggleItem, variant, size, accordionId } = useAccordionContext();
|
|
@@ -31,7 +30,7 @@ const AccordionTrigger = ({ children, icon, actions, indicator, className, style
|
|
|
31
30
|
return (jsxs("button", { ref: ref, type: "button", id: triggerId, "aria-expanded": isExpanded, "aria-controls": contentId, "aria-disabled": isDisabled || undefined, disabled: isDisabled, onClick: handleClick, className: cx(triggerButton({ variant, size, disabled: isDisabled }), className), style: style, "data-testid": testId, ...rest, children: [showIndicator && (jsx("span", { className: cx(chevronStyle, isExpanded ? chevronExpanded : chevronCollapsed), style: {
|
|
32
31
|
width: `${sizeConfig.chevronSize}px`,
|
|
33
32
|
height: `${sizeConfig.chevronSize}px`,
|
|
34
|
-
}, children: indicator ?? jsx(ChevronRightIcon, { size: sizeConfig.chevronSize }) })), icon && jsx("span", { className: iconArea, children: icon }), jsx("span", { children: children }), actions && (jsx("span", { className: actionsArea, onClick: handleActionsClick, children: actions }))] }));
|
|
33
|
+
}, children: indicator ?? (jsx(ChevronRightIcon, { size: sizeConfig.chevronSize, decorative: true })) })), icon && jsx("span", { className: iconArea, children: icon }), jsx("span", { children: children }), actions && (jsx("span", { className: actionsArea, onClick: handleActionsClick, children: actions }))] }));
|
|
35
34
|
};
|
|
36
35
|
AccordionTrigger.displayName = 'AccordionTrigger';
|
|
37
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionTrigger.js","sources":["../../../../../../src/components/layout/Accordion/AccordionTrigger.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccordionTrigger.js","sources":["../../../../../../src/components/layout/Accordion/AccordionTrigger.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAsBA;AACE;AACA;AACA;;AAGF;AAEO;AAWL;;AAEA;AAEA;AACA;AAEA;;;;;AAMA;;;AAIA;AAEA;AAyBU;AACA;;AAiBZ;AAEA;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './../../../assets/src/components/layout/Card/Card.css.ts.vanilla-Ducn1gUX.css';
|
|
2
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
3
|
+
|
|
4
|
+
var cardBodyStyle = 'Card_cardBodyStyle__50gmukh';
|
|
5
|
+
var cardFooterStyle = createRuntimeFn({defaultClassName:'Card_cardFooterStyle__50gmuki',variantClassNames:{align:{left:'Card_cardFooterStyle_align_left__50gmukj',center:'Card_cardFooterStyle_align_center__50gmukk',right:'Card_cardFooterStyle_align_right__50gmukl','space-between':'Card_cardFooterStyle_align_space-between__50gmukm'}},defaultVariants:{align:'right'},compoundVariants:[]});
|
|
6
|
+
var cardHeaderLeadingStyle = 'Card_cardHeaderLeadingStyle__50gmuka';
|
|
7
|
+
var cardHeaderStyle = 'Card_cardHeaderStyle__50gmuk9';
|
|
8
|
+
var cardHeaderSubtitleStyle = 'Card_cardHeaderSubtitleStyle__50gmukd';
|
|
9
|
+
var cardHeaderTextStyle = 'Card_cardHeaderTextStyle__50gmukb';
|
|
10
|
+
var cardHeaderTitleStyle = 'Card_cardHeaderTitleStyle__50gmukc';
|
|
11
|
+
var cardHeaderTrailingStyle = 'Card_cardHeaderTrailingStyle__50gmuke';
|
|
12
|
+
var cardMediaAspectVar = 'var(--cardMediaAspectVar__50gmuk0)';
|
|
13
|
+
var cardMediaImageStyle = 'Card_cardMediaImageStyle__50gmukg';
|
|
14
|
+
var cardMediaStyle = 'Card_cardMediaStyle__50gmukf';
|
|
15
|
+
var cardRecipe = createRuntimeFn({defaultClassName:'Card_cardRecipe__50gmuk1',variantClassNames:{variant:{outlined:'Card_cardRecipe_variant_outlined__50gmuk2',filled:'Card_cardRecipe_variant_filled__50gmuk3',elevated:'Card_cardRecipe_variant_elevated__50gmuk4'},interactive:{true:'Card_cardRecipe_interactive_true__50gmuk5'},selected:{true:'Card_cardRecipe_selected_true__50gmuk6'},disabled:{true:'Card_cardRecipe_disabled_true__50gmuk7'}},defaultVariants:{variant:'outlined'},compoundVariants:[[{variant:'elevated',interactive:true},'Card_cardRecipe_compound_0__50gmuk8']]});
|
|
16
|
+
|
|
17
|
+
export { cardBodyStyle, cardFooterStyle, cardHeaderLeadingStyle, cardHeaderStyle, cardHeaderSubtitleStyle, cardHeaderTextStyle, cardHeaderTitleStyle, cardHeaderTrailingStyle, cardMediaAspectVar, cardMediaImageStyle, cardMediaStyle, cardRecipe };
|
|
18
|
+
//# sourceMappingURL=Card.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
5
|
+
import { cx } from '../../../utils/cx.js';
|
|
6
|
+
import { cardRecipe, cardHeaderLeadingStyle, cardHeaderTextStyle, cardHeaderTitleStyle, cardHeaderSubtitleStyle, cardHeaderTrailingStyle, cardHeaderStyle, cardMediaImageStyle, cardMediaAspectVar, cardMediaStyle, cardBodyStyle, cardFooterStyle } from './Card.css.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A bounded surface representing a single semantic unit (item, summary,
|
|
10
|
+
* preview). Distinct from `Paper` (a generic surface): a Card has a
|
|
11
|
+
* header / media / body / footer convention and can be made interactive.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* <Card variant="elevated" onClick={open}>
|
|
16
|
+
* <Card.Header
|
|
17
|
+
* title="Asset"
|
|
18
|
+
* subtitle="Updated 2h ago"
|
|
19
|
+
* trailing={<IconButton icon={<MoreIcon />} />}
|
|
20
|
+
* />
|
|
21
|
+
* <Card.Media src="/preview.png" alt="Preview" />
|
|
22
|
+
* <Card.Body>Description...</Card.Body>
|
|
23
|
+
* <Card.Footer>
|
|
24
|
+
* <Button>Open</Button>
|
|
25
|
+
* </Card.Footer>
|
|
26
|
+
* </Card>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
const CardRoot = ({ variant = 'outlined', onClick, selected = false, disabled = false, className, style, testId, children, ref, ...rest }) => {
|
|
30
|
+
const interactive = onClick !== undefined && !disabled;
|
|
31
|
+
const handleKeyDown = useCallback((event) => {
|
|
32
|
+
if (!interactive || !onClick)
|
|
33
|
+
return;
|
|
34
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
onClick(event);
|
|
37
|
+
}
|
|
38
|
+
}, [interactive, onClick]);
|
|
39
|
+
return (jsx("div", { ref: ref, className: cx(cardRecipe({
|
|
40
|
+
variant,
|
|
41
|
+
interactive: interactive || undefined,
|
|
42
|
+
selected: selected || undefined,
|
|
43
|
+
disabled: disabled || undefined,
|
|
44
|
+
}), className), style: style, "data-testid": testId, onClick: interactive ? onClick : undefined, onKeyDown: interactive ? handleKeyDown : undefined, role: interactive ? 'button' : undefined, tabIndex: interactive ? 0 : undefined, "aria-disabled": disabled || undefined, "aria-pressed": interactive && selected ? true : undefined, ...rest, children: children }));
|
|
45
|
+
};
|
|
46
|
+
CardRoot.displayName = 'Card';
|
|
47
|
+
const CardHeader = ({ title, subtitle, leading, trailing, children, className, style, testId, ref, ...rest }) => (jsxs("div", { ref: ref, className: cx(cardHeaderStyle, className), style: style, "data-testid": testId, ...rest, children: [leading && jsx("div", { className: cardHeaderLeadingStyle, children: leading }), jsx("div", { className: cardHeaderTextStyle, children: children ?? (jsxs(Fragment, { children: [title && jsx("h3", { className: cardHeaderTitleStyle, children: title }), subtitle && jsx("p", { className: cardHeaderSubtitleStyle, children: subtitle })] })) }), trailing && jsx("div", { className: cardHeaderTrailingStyle, children: trailing })] }));
|
|
48
|
+
CardHeader.displayName = 'Card.Header';
|
|
49
|
+
const CardMedia = ({ src, alt, aspectRatio = 16 / 9, className, style, testId, children, ref, ...rest }) => (jsx("div", { ref: ref, className: cx(cardMediaStyle, className), style: {
|
|
50
|
+
...assignInlineVars({ [cardMediaAspectVar]: String(aspectRatio) }),
|
|
51
|
+
...style,
|
|
52
|
+
}, "data-testid": testId, ...rest, children: src ? (jsx("img", { className: cardMediaImageStyle, src: src, alt: alt ?? '' })) : (children) }));
|
|
53
|
+
CardMedia.displayName = 'Card.Media';
|
|
54
|
+
const CardBody = ({ className, style, testId, children, ref, ...rest }) => (jsx("div", { ref: ref, className: cx(cardBodyStyle, className), style: style, "data-testid": testId, ...rest, children: children }));
|
|
55
|
+
CardBody.displayName = 'Card.Body';
|
|
56
|
+
const CardFooter = ({ align = 'right', className, style, testId, children, ref, ...rest }) => (jsx("div", { ref: ref, className: cx(cardFooterStyle({ align }), className), style: style, "data-testid": testId, ...rest, children: children }));
|
|
57
|
+
CardFooter.displayName = 'Card.Footer';
|
|
58
|
+
const Card = Object.assign(CardRoot, {
|
|
59
|
+
Header: CardHeader,
|
|
60
|
+
Media: CardMedia,
|
|
61
|
+
Body: CardBody,
|
|
62
|
+
Footer: CardFooter,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export { Card };
|
|
66
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../../../../src/components/layout/Card/Card.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAkCA;;;;;;;;;;;;;;;;;;;;AAoBG;AACH;;AAcE;AAEI;;AACA;;;;AAIF;;;;;;AAaK;AAgBT;AAEA;AAEA;AAgCA;AAEA;AAeM;AACA;AACD;AAYL;AAEA;AAmBA;AAEA;AAoBA;;AAGE;AACA;AACA;AACA;AACD;;"}
|
|
@@ -9,6 +9,7 @@ import '../../primitives/Checkbox/Checkbox.js';
|
|
|
9
9
|
import '../../primitives/Checkbox/CheckboxGroup.js';
|
|
10
10
|
import '../../primitives/Code/Code.js';
|
|
11
11
|
import '../../primitives/Collapsible/Collapsible.js';
|
|
12
|
+
import '../../primitives/HoverCard/HoverCard.js';
|
|
12
13
|
import '../../primitives/Icon/Icon.js';
|
|
13
14
|
import '../../primitives/IconButton/IconButton.js';
|
|
14
15
|
import '../../primitives/Input/Input.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbEllipsis.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/BreadcrumbEllipsis.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BreadcrumbEllipsis.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/BreadcrumbEllipsis.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA;;;;;;;AAOG;;AAED;AAEI;;AA8BF;AAGJ;;"}
|
|
@@ -9,6 +9,7 @@ import '../../primitives/Checkbox/Checkbox.js';
|
|
|
9
9
|
import '../../primitives/Checkbox/CheckboxGroup.js';
|
|
10
10
|
import '../../primitives/Code/Code.js';
|
|
11
11
|
import '../../primitives/Collapsible/Collapsible.js';
|
|
12
|
+
import '../../primitives/HoverCard/HoverCard.js';
|
|
12
13
|
import '../../primitives/Icon/Icon.js';
|
|
13
14
|
import '../../primitives/IconButton/IconButton.js';
|
|
14
15
|
import '../../primitives/Input/Input.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbItem.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/BreadcrumbItem.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BreadcrumbItem.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/BreadcrumbItem.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA;;AAGI;AACA;;;AAKF;;;AAGE;;AAEJ;AAEA;;;;;;;;;;;AAWG;AACI;AAcH;AACA;AAEA;AAEA;AAEI;;;AAIA;;AAEE;;AAEJ;;AAWF;;AAGE;;;AASA;;;AAMA;;;AAYA;;;AAsBJ;AAGF;;"}
|
|
@@ -14,15 +14,18 @@ import '../../Icons/ChevronDownIcon.js';
|
|
|
14
14
|
import '../../Icons/ChevronUpIcon.js';
|
|
15
15
|
import '../../Icons/ClockIcon.js';
|
|
16
16
|
import '../../Icons/CloseIcon.js';
|
|
17
|
+
import '../../Icons/CloudUploadIcon.js';
|
|
17
18
|
import '../../Icons/CodeIcon.js';
|
|
18
19
|
import '../../Icons/CopyIcon.js';
|
|
19
20
|
import '../../Icons/CutIcon.js';
|
|
20
21
|
import '../../Icons/DownloadIcon.js';
|
|
21
22
|
import '../../Icons/EditIcon.js';
|
|
22
23
|
import '../../Icons/ErrorIcon.js';
|
|
24
|
+
import '../../Icons/ExternalLinkIcon.js';
|
|
23
25
|
import '../../Icons/EyeDropperIcon.js';
|
|
24
26
|
import '../../Icons/EyeIcon.js';
|
|
25
27
|
import '../../Icons/FilterIcon.js';
|
|
28
|
+
import '../../Icons/FirstIcon.js';
|
|
26
29
|
import '../../Icons/FolderIcon.js';
|
|
27
30
|
import '../../Icons/FullscreenIcon.js';
|
|
28
31
|
import '../../Icons/GridIcon.js';
|
|
@@ -30,6 +33,7 @@ import '../../Icons/HeartIcon.js';
|
|
|
30
33
|
import '../../Icons/HelpIcon.js';
|
|
31
34
|
import '../../Icons/HomeIcon.js';
|
|
32
35
|
import '../../Icons/InfoIcon.js';
|
|
36
|
+
import '../../Icons/LastIcon.js';
|
|
33
37
|
import '../../Icons/LinkIcon.js';
|
|
34
38
|
import '../../Icons/ListIcon.js';
|
|
35
39
|
import '../../Icons/LockIcon.js';
|
|
@@ -50,6 +54,7 @@ import '../../Icons/SuccessIcon.js';
|
|
|
50
54
|
import '../../Icons/TagIcon.js';
|
|
51
55
|
import '../../Icons/TrashIcon.js';
|
|
52
56
|
import '../../Icons/UndoIcon.js';
|
|
57
|
+
import '../../Icons/UnlinkIcon.js';
|
|
53
58
|
import '../../Icons/UnlockIcon.js';
|
|
54
59
|
import '../../Icons/UploadIcon.js';
|
|
55
60
|
import '../../Icons/UserIcon.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sources":["../../../../../../src/components/navigation/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA;AAIE;AACF;AAEA;AACE;;AAIE;;AAGF;AACF;AAEA;AAIE;;AAGI;AACI;;AAID;AAET;AAEA;;;;;;;;;;;;;;;AAeG;AACI;;AAiBH;;AAEE;;AAQE;AACE;AACA;;AAGJ;AAOA;AACE;AACE;AACA;;;;;AAMJ;AAEA;;;;;AAUA;AACE;;AAMA;;AAGF;AACF;;;;;;;;AAQC;;AAcH;AAGF;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './../../../assets/src/components/navigation/Pagination/Pagination.css.ts.vanilla-CmlFyyjh.css';
|
|
2
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
3
|
+
|
|
4
|
+
var paginationButtonRecipe = createRuntimeFn({defaultClassName:'Pagination_paginationButtonRecipe__17bx4kb6',variantClassNames:{size:{sm:'Pagination_paginationButtonRecipe_size_sm__17bx4kb7',md:'Pagination_paginationButtonRecipe_size_md__17bx4kb8',lg:'Pagination_paginationButtonRecipe_size_lg__17bx4kb9'},selected:{true:'Pagination_paginationButtonRecipe_selected_true__17bx4kba'}},defaultVariants:{size:'md'},compoundVariants:[]});
|
|
5
|
+
var paginationEllipsisRecipe = createRuntimeFn({defaultClassName:'Pagination_paginationEllipsisRecipe__17bx4kbb',variantClassNames:{size:{sm:'Pagination_paginationEllipsisRecipe_size_sm__17bx4kbc',md:'Pagination_paginationEllipsisRecipe_size_md__17bx4kbd',lg:'Pagination_paginationEllipsisRecipe_size_lg__17bx4kbe'}},defaultVariants:{size:'md'},compoundVariants:[]});
|
|
6
|
+
var paginationIconStyle = 'Pagination_paginationIconStyle__17bx4kbf';
|
|
7
|
+
var paginationItemStyle = 'Pagination_paginationItemStyle__17bx4kb5';
|
|
8
|
+
var paginationListRecipe = createRuntimeFn({defaultClassName:'Pagination_paginationListRecipe__17bx4kb1',variantClassNames:{size:{sm:'Pagination_paginationListRecipe_size_sm__17bx4kb2',md:'Pagination_paginationListRecipe_size_md__17bx4kb3',lg:'Pagination_paginationListRecipe_size_lg__17bx4kb4'}},defaultVariants:{size:'md'},compoundVariants:[]});
|
|
9
|
+
var paginationRootStyle = 'Pagination_paginationRootStyle__17bx4kb0';
|
|
10
|
+
|
|
11
|
+
export { paginationButtonRecipe, paginationEllipsisRecipe, paginationIconStyle, paginationItemStyle, paginationListRecipe, paginationRootStyle };
|
|
12
|
+
//# sourceMappingURL=Pagination.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|