@donotdev/components 0.0.16 → 0.0.18
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/dist/advanced/Bento/Bento.d.ts +1 -1
- package/dist/advanced/Bento/Bento.js +1 -1
- package/dist/advanced/Code/CodeContent.d.ts.map +1 -1
- package/dist/advanced/Code/CodeContent.js +23 -6
- package/dist/advanced/Code/CodeSkeleton.js +4 -4
- package/dist/advanced/ImageGallery/ImageGallery.d.ts.map +1 -1
- package/dist/advanced/ImageGallery/ImageGallery.js +11 -5
- package/dist/advanced/JsonViewer/JsonViewer.d.ts +1 -1
- package/dist/advanced/JsonViewer/JsonViewer.d.ts.map +1 -1
- package/dist/advanced/JsonViewer/JsonViewer.js +9 -3
- package/dist/atomic/ActionButton/index.js +2 -2
- package/dist/atomic/ActionButton/useAction.d.ts.map +1 -1
- package/dist/atomic/ActionButton/useAction.js +18 -5
- package/dist/atomic/Alert/index.d.ts +1 -1
- package/dist/atomic/Alert/index.d.ts.map +1 -1
- package/dist/atomic/Alert/index.js +1 -1
- package/dist/atomic/Badge/index.d.ts +1 -1
- package/dist/atomic/Button/index.d.ts +2 -2
- package/dist/atomic/Button/index.d.ts.map +1 -1
- package/dist/atomic/CallToAction/index.d.ts +2 -1
- package/dist/atomic/CallToAction/index.d.ts.map +1 -1
- package/dist/atomic/CallToAction/index.js +2 -1
- package/dist/atomic/Combobox/index.d.ts.map +1 -1
- package/dist/atomic/Combobox/index.js +3 -3
- package/dist/atomic/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/atomic/CopyToClipboard/index.js +20 -4
- package/dist/atomic/Dialog/index.js +1 -1
- package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.d.ts.map +1 -1
- package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.js +5 -21
- package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
- package/dist/atomic/DropdownMenu/index.js +7 -17
- package/dist/atomic/Grid/GridArea.d.ts +2 -2
- package/dist/atomic/Grid/GridArea.js +2 -2
- package/dist/atomic/Grid/index.d.ts +39 -22
- package/dist/atomic/Grid/index.d.ts.map +1 -1
- package/dist/atomic/Grid/index.js +56 -27
- package/dist/atomic/HeroSection/index.d.ts +3 -0
- package/dist/atomic/HeroSection/index.d.ts.map +1 -1
- package/dist/atomic/HeroSection/index.js +5 -2
- package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts.map +1 -1
- package/dist/atomic/HoverCard/HoverCardPrimitive.js +1 -1
- package/dist/atomic/HoverCard/index.d.ts +19 -4
- package/dist/atomic/HoverCard/index.d.ts.map +1 -1
- package/dist/atomic/HoverCard/index.js +24 -5
- package/dist/atomic/Icons/Icon.d.ts.map +1 -1
- package/dist/atomic/Icons/Icon.js +11 -10
- package/dist/atomic/InfiniteScroll/index.d.ts +4 -2
- package/dist/atomic/InfiniteScroll/index.d.ts.map +1 -1
- package/dist/atomic/InfiniteScroll/index.js +2 -2
- package/dist/atomic/Pagination/index.js +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.d.ts +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.d.ts.map +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.js +2 -2
- package/dist/atomic/Popover/index.d.ts +2 -2
- package/dist/atomic/Popover/index.d.ts.map +1 -1
- package/dist/atomic/Rating/index.d.ts +1 -1
- package/dist/atomic/Rating/index.d.ts.map +1 -1
- package/dist/atomic/Section/index.d.ts +9 -6
- package/dist/atomic/Section/index.d.ts.map +1 -1
- package/dist/atomic/Section/index.js +3 -2
- package/dist/atomic/Select/index.d.ts.map +1 -1
- package/dist/atomic/Select/index.js +2 -3
- package/dist/atomic/Stack/index.d.ts +2 -2
- package/dist/atomic/Stack/index.js +2 -2
- package/dist/atomic/Stepper/index.d.ts +5 -1
- package/dist/atomic/Stepper/index.d.ts.map +1 -1
- package/dist/atomic/Stepper/index.js +9 -6
- package/dist/atomic/Table/index.d.ts +27 -5
- package/dist/atomic/Table/index.d.ts.map +1 -1
- package/dist/atomic/Table/index.js +55 -6
- package/dist/atomic/Tabs/index.d.ts +1 -1
- package/dist/atomic/Tag/index.d.ts +1 -1
- package/dist/atomic/Text/index.d.ts +2 -0
- package/dist/atomic/Text/index.d.ts.map +1 -1
- package/dist/atomic/Text/index.js +2 -1
- package/dist/atomic/Toaster/ToastPrimitive.d.ts +1 -1
- package/dist/atomic/Toaster/ToastPrimitive.d.ts.map +1 -1
- package/dist/atomic/Toaster/ToastPrimitive.js +1 -13
- package/dist/atomic/Toggle/index.d.ts +1 -1
- package/dist/atomic/index.d.ts +1 -1
- package/dist/atomic/index.d.ts.map +1 -1
- package/dist/hooks/useToast.d.ts.map +1 -1
- package/dist/hooks/useToast.js +18 -3
- package/dist/hooks/useViewportVisibility.d.ts.map +1 -1
- package/dist/hooks/useViewportVisibility.js +10 -12
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/styles/index.css +259 -96
- package/dist/types.d.ts +1 -1
- package/dist/utils/constants.d.ts +13 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +12 -0
- package/dist/utils/intersectionObserver.d.ts.map +1 -1
- package/dist/utils/intersectionObserver.js +1 -11
- package/dist/utils/variants.d.ts +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeContent.d.ts","sourceRoot":"","sources":["../../../src/advanced/Code/CodeContent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodeContent.d.ts","sourceRoot":"","sources":["../../../src/advanced/Code/CodeContent.tsx"],"names":[],"mappings":"AA6BA,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,IAAI,CAAC,EACZ,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,eAAsB,EACtB,SAAiB,EACjB,cAAqB,EACrB,MAAM,EACN,OAAe,GAChB,EAAE,SAAS,2CAwPX;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -90,9 +90,11 @@ function Code({ children, language = 'tsx', className, showLineNumbers = true, w
|
|
|
90
90
|
if (error instanceof Error &&
|
|
91
91
|
(error.message.includes("Cannot find module 'shiki'") ||
|
|
92
92
|
error.message.includes('Failed to fetch dynamically imported module'))) {
|
|
93
|
-
|
|
93
|
+
if (process.env.NODE_ENV === 'development') {
|
|
94
|
+
console.info('[Code] Shiki not available. Using Text code variant fallback. To enable syntax highlighting: npm install shiki');
|
|
95
|
+
}
|
|
94
96
|
}
|
|
95
|
-
else {
|
|
97
|
+
else if (process.env.NODE_ENV === 'development') {
|
|
96
98
|
console.warn('[Code] Failed to initialize Shiki:', error);
|
|
97
99
|
}
|
|
98
100
|
if (mounted) {
|
|
@@ -117,17 +119,32 @@ function Code({ children, language = 'tsx', className, showLineNumbers = true, w
|
|
|
117
119
|
const lang = language || 'text';
|
|
118
120
|
// Check if language is supported
|
|
119
121
|
if (!highlighter.getLoadedLanguages().includes(lang)) {
|
|
120
|
-
|
|
122
|
+
if (process.env.NODE_ENV === 'development') {
|
|
123
|
+
console.warn(`[Code] Language '${language}' not supported by Shiki`);
|
|
124
|
+
}
|
|
121
125
|
return null; // Use Text code variant fallback
|
|
122
126
|
}
|
|
123
127
|
const html = highlighter.codeToHtml(children, {
|
|
124
128
|
lang,
|
|
125
129
|
theme,
|
|
126
130
|
});
|
|
127
|
-
|
|
131
|
+
// Strip Shiki's outer <pre><code>...</code></pre> wrapper.
|
|
132
|
+
// We already render our own <pre> and <code> — nesting them
|
|
133
|
+
// creates conflicting line-height/font-size and breaks sync
|
|
134
|
+
// between line numbers and content.
|
|
135
|
+
// Also strip \n between </span> and <span — the .line spans
|
|
136
|
+
// are display:block, so newlines would create double line breaks
|
|
137
|
+
// under white-space:pre.
|
|
138
|
+
const inner = html
|
|
139
|
+
.replace(/^<pre[^>]*><code[^>]*>/, '')
|
|
140
|
+
.replace(/<\/code><\/pre>$/, '')
|
|
141
|
+
.replace(/\n/g, '');
|
|
142
|
+
return inner;
|
|
128
143
|
}
|
|
129
144
|
catch (error) {
|
|
130
|
-
|
|
145
|
+
if (process.env.NODE_ENV === 'development') {
|
|
146
|
+
console.warn(`[Code] Failed to highlight code for language: ${language}`, error);
|
|
147
|
+
}
|
|
131
148
|
return null; // Use Text code variant fallback
|
|
132
149
|
}
|
|
133
150
|
}, [
|
|
@@ -142,7 +159,7 @@ function Code({ children, language = 'tsx', className, showLineNumbers = true, w
|
|
|
142
159
|
useEffect(() => {
|
|
143
160
|
setIsClient(true);
|
|
144
161
|
}, []);
|
|
145
|
-
return (_jsxs(Stack, { gap: "none", className: "dndev-code dndev-surface", "data-glow": "blank", "data-compact": compact, children: [!compact && (_jsx("div", { className: "dndev-code-header", children: _jsxs(Stack, { direction: "row", align: "center", justify: "between",
|
|
162
|
+
return (_jsxs(Stack, { gap: "none", className: "dndev-code dndev-surface", "data-glow": "blank", "data-compact": compact, children: [!compact && (_jsx("div", { className: "dndev-code-header", children: _jsxs(Stack, { direction: "row", align: "center", justify: "between", children: [_jsxs(Stack, { direction: "row", align: "center", gap: "tight", children: [_jsxs("div", { className: "dndev-code-traffic-lights", children: [_jsx("div", { className: "dndev-code-traffic-light", "data-color": "red" }), _jsx("div", { className: "dndev-code-traffic-light", "data-color": "yellow" }), _jsx("div", { className: "dndev-code-traffic-light", "data-color": "green" })] }), _jsx(Text, { as: "span", className: "dndev-code-language", children: language }), _jsxs(Text, { as: "span", className: "dndev-code-line-count", children: [lines.length, " line", lines.length !== 1 ? 's' : ''] })] }), showCopyButton && isClient && (_jsx(CopyToClipboard, { text: children, onCopy: onCopy }))] }) })), _jsx(ScrollArea, { className: "dndev-code-content", showHorizontal: !wrapLines, showVertical: true, children: _jsx("pre", { className: "dndev-code-pre", "data-wrap": wrapLines, "data-compact": compact, children: showLineNumbers ? (_jsxs(Stack, { direction: "row", gap: "none", children: [_jsx("div", { className: "dndev-code-line-numbers", children: lines.map((_, index) => (_jsx("div", { className: "dndev-code-line-number", children: String(index + 1).padStart(2, ' ') }, index))) }), highlightedCode ? (_jsx("code", { className: "dndev-code-code", dangerouslySetInnerHTML: { __html: highlightedCode } })) : (_jsx("code", { className: "dndev-code-code", children: lines.map((line, index) => (_jsx(Text, { as: "code", variant: "code", style: {
|
|
146
163
|
display: 'block',
|
|
147
164
|
background: 'transparent',
|
|
148
165
|
padding: 0,
|
|
@@ -17,10 +17,10 @@ function CodeSkeleton({ className, showLineNumbers = true, showCopyButton = true
|
|
|
17
17
|
border: '1px solid var(--border)',
|
|
18
18
|
backgroundColor: 'var(--muted)',
|
|
19
19
|
}, role: "status", "aria-label": "Loading code", children: _jsxs(Stack, { direction: "row", children: [showLineNumbers && (_jsx("div", { className: "dndev-flex-shrink-0", style: {
|
|
20
|
-
|
|
20
|
+
borderInlineEnd: '1px solid var(--border)',
|
|
21
21
|
backgroundColor: 'var(--muted)',
|
|
22
22
|
padding: '1rem',
|
|
23
|
-
textAlign: '
|
|
23
|
+
textAlign: 'end',
|
|
24
24
|
fontSize: 'var(--font-size-sm)',
|
|
25
25
|
color: 'var(--muted-foreground)',
|
|
26
26
|
opacity: 'var(--opacity-subtle)',
|
|
@@ -28,7 +28,7 @@ function CodeSkeleton({ className, showLineNumbers = true, showCopyButton = true
|
|
|
28
28
|
userSelect: 'none',
|
|
29
29
|
}, children: Array.from({ length: lineCount }).map((_, i) => (_jsx("div", { style: { height: '1.25rem', lineHeight: '1.25rem' }, children: i + 1 }, i))) })), _jsx("div", { className: "dndev-flex-1 dndev-min-w-0", children: _jsxs("div", { className: "dndev-relative", children: [showCopyButton && (_jsx("div", { className: "dndev-absolute dndev-z-breadcrumbs dndev-animate-pulse", style: {
|
|
30
30
|
top: '0.5rem',
|
|
31
|
-
|
|
31
|
+
insetInlineEnd: '0.5rem',
|
|
32
32
|
width: '2rem',
|
|
33
33
|
height: '2rem',
|
|
34
34
|
backgroundColor: 'var(--muted)',
|
|
@@ -42,7 +42,7 @@ function CodeSkeleton({ className, showLineNumbers = true, showCopyButton = true
|
|
|
42
42
|
marginBottom: '0.25rem',
|
|
43
43
|
}, children: _jsx("span", { className: "dndev-inline dndev-animate-pulse", style: {
|
|
44
44
|
display: 'inline-block',
|
|
45
|
-
width: `${
|
|
45
|
+
width: `${((i * 37 + 13) % 40) + 20}%`,
|
|
46
46
|
height: '1em',
|
|
47
47
|
backgroundColor: 'var(--muted)',
|
|
48
48
|
borderRadius: 'var(--radius)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageGallery.d.ts","sourceRoot":"","sources":["../../../src/advanced/ImageGallery/ImageGallery.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;IAClC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAkBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAoB,EACpB,SAAmB,EACnB,aAAa,GACd,EAAE,iBAAiB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"ImageGallery.d.ts","sourceRoot":"","sources":["../../../src/advanced/ImageGallery/ImageGallery.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;IAClC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAkBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAoB,EACpB,SAAmB,EACnB,aAAa,GACd,EAAE,iBAAiB,GAAG,YAAY,CA2OlC;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -48,10 +48,15 @@ export function ImageGallery({ images, aspectRatio = '16/9', altPrefix = 'Image'
|
|
|
48
48
|
const [loadedFullUrls, setLoadedFullUrls] = useState(new Set());
|
|
49
49
|
const containerRef = useRef(null);
|
|
50
50
|
const thumbnailRefs = useRef([]);
|
|
51
|
+
// Track whether the index changed via user navigation (not initial mount)
|
|
52
|
+
const isUserNavigationRef = useRef(false);
|
|
51
53
|
const normalizedImages = images.map(normalizeImage);
|
|
52
54
|
const hasMultiple = normalizedImages.length > 1;
|
|
55
|
+
// Trim stale refs when the image list shrinks
|
|
56
|
+
thumbnailRefs.current = thumbnailRefs.current.slice(0, normalizedImages.length);
|
|
53
57
|
const goToImage = useCallback((index) => {
|
|
54
58
|
const newIndex = (index + normalizedImages.length) % normalizedImages.length;
|
|
59
|
+
isUserNavigationRef.current = true;
|
|
55
60
|
setSelectedIndex(newIndex);
|
|
56
61
|
onImageChange?.(newIndex);
|
|
57
62
|
// Preload full image if not already loaded
|
|
@@ -91,8 +96,11 @@ export function ImageGallery({ images, aspectRatio = '16/9', altPrefix = 'Image'
|
|
|
91
96
|
break;
|
|
92
97
|
}
|
|
93
98
|
}, [hasMultiple, goPrev, goNext, goToImage, normalizedImages.length]);
|
|
94
|
-
// Focus thumbnail
|
|
99
|
+
// Focus thumbnail only on user-driven navigation, not on initial mount (WCAG)
|
|
95
100
|
useEffect(() => {
|
|
101
|
+
if (!isUserNavigationRef.current)
|
|
102
|
+
return;
|
|
103
|
+
isUserNavigationRef.current = false;
|
|
96
104
|
thumbnailRefs.current[selectedIndex]?.focus();
|
|
97
105
|
}, [selectedIndex]);
|
|
98
106
|
if (normalizedImages.length === 0) {
|
|
@@ -102,8 +110,7 @@ export function ImageGallery({ images, aspectRatio = '16/9', altPrefix = 'Image'
|
|
|
102
110
|
const currentImage = normalizedImages[selectedIndex];
|
|
103
111
|
return (_jsxs("div", { ref: containerRef, className: "image-gallery", onKeyDown: handleKeyDown, tabIndex: 0, role: "region", "aria-label": "Image gallery", "aria-roledescription": "carousel", children: [_jsxs("div", { className: "image-gallery__main", style: { aspectRatio }, children: [currentImage.full !== currentImage.thumb && (_jsx("img", { src: currentImage.thumb, alt: "", className: "image-gallery__main-image", style: {
|
|
104
112
|
position: 'absolute',
|
|
105
|
-
|
|
106
|
-
left: 0,
|
|
113
|
+
inset: 0,
|
|
107
114
|
width: '100%',
|
|
108
115
|
height: '100%',
|
|
109
116
|
objectFit: 'cover',
|
|
@@ -114,8 +121,7 @@ export function ImageGallery({ images, aspectRatio = '16/9', altPrefix = 'Image'
|
|
|
114
121
|
position: currentImage.full !== currentImage.thumb
|
|
115
122
|
? 'absolute'
|
|
116
123
|
: 'relative',
|
|
117
|
-
|
|
118
|
-
left: 0,
|
|
124
|
+
inset: 0,
|
|
119
125
|
width: '100%',
|
|
120
126
|
height: '100%',
|
|
121
127
|
objectFit: 'cover',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonViewer.d.ts","sourceRoot":"","sources":["../../../src/advanced/JsonViewer/JsonViewer.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"JsonViewer.d.ts","sourceRoot":"","sources":["../../../src/advanced/JsonViewer/JsonViewer.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IAEd,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uBAAuB;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAwID;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,QAAA,MAAM,UAAU;oEAMb,eAAe;;CA4FjB,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -56,13 +56,17 @@ const JsonNode = ({ data, keyName, depth, defaultDepth, path, collapsed, onToggl
|
|
|
56
56
|
if (isEmpty) {
|
|
57
57
|
return (_jsxs("div", { className: "dndev-json-node", children: [keyName && _jsxs("span", { className: "dndev-json-key", children: [keyName, ":"] }), _jsx("span", { className: "dndev-json-value dndev-json-value-null", children: isArray ? '[]' : '{}' })] }));
|
|
58
58
|
}
|
|
59
|
-
const items = isArray
|
|
59
|
+
const items = isArray
|
|
60
|
+
? data
|
|
61
|
+
: Object.entries(data);
|
|
60
62
|
const bracketOpen = isArray ? '[' : '{';
|
|
61
63
|
const bracketClose = isArray ? ']' : '}';
|
|
62
64
|
return (_jsxs("div", { children: [_jsxs("div", { className: "dndev-json-toggle", onClick: handleToggle, children: [keyName && _jsxs("span", { className: "dndev-json-key", children: [keyName, ":"] }), _jsx("span", { className: "dndev-json-bracket", children: bracketOpen }), isExpanded ? (_jsx(ChevronDown, { className: "dndev-json-icon" })) : (_jsx(ChevronRight, { className: "dndev-json-icon" })), !isExpanded && (_jsx("span", { className: "dndev-json-count", children: isArray
|
|
63
65
|
? `${data.length} item${data.length !== 1 ? 's' : ''}`
|
|
64
66
|
: `${Object.keys(data).length} key${Object.keys(data).length !== 1 ? 's' : ''}` })), !isExpanded && (_jsx("span", { className: "dndev-json-bracket", children: bracketClose }))] }), isExpanded && (_jsxs("div", { className: "dndev-json-children", children: [items.map((item, index) => {
|
|
65
|
-
const [itemKey, itemValue] = isArray
|
|
67
|
+
const [itemKey, itemValue] = isArray
|
|
68
|
+
? [index, item]
|
|
69
|
+
: item;
|
|
66
70
|
const itemPath = `${path}.${itemKey}`;
|
|
67
71
|
return (_jsx(JsonNode, { data: itemValue, keyName: isArray ? undefined : String(itemKey), depth: depth + 1, defaultDepth: defaultDepth, path: itemPath, collapsed: collapsed, onToggle: onToggle, expandedPaths: expandedPaths }, itemPath));
|
|
68
72
|
}), _jsx("span", { className: "dndev-json-bracket", children: bracketClose })] }))] }));
|
|
@@ -125,7 +129,9 @@ const JsonViewer = ({ data, defaultDepth = 2, showCopyButton = true, className,
|
|
|
125
129
|
await navigator.clipboard.writeText(jsonString);
|
|
126
130
|
}
|
|
127
131
|
catch (error) {
|
|
128
|
-
|
|
132
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
133
|
+
console.error('Failed to copy JSON:', error);
|
|
134
|
+
}
|
|
129
135
|
}
|
|
130
136
|
}, [data]);
|
|
131
137
|
const jsonString = useMemo(() => {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
3
|
// packages/components/src/atomic/ActionButton/index.tsx
|
|
2
4
|
/**
|
|
3
5
|
* @fileoverview ActionButton Component
|
|
@@ -7,8 +9,6 @@
|
|
|
7
9
|
* @since 0.0.1
|
|
8
10
|
* @author AMBROISE PARK Consulting
|
|
9
11
|
*/
|
|
10
|
-
'use client';
|
|
11
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
import { useState } from 'react';
|
|
13
13
|
import AlertDialog from '../AlertDialog';
|
|
14
14
|
import Button from '../Button';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAction.d.ts","sourceRoot":"","sources":["../../../src/atomic/ActionButton/useAction.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,kCAAkC;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,yBAAyB;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACtC,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useAction.d.ts","sourceRoot":"","sources":["../../../src/atomic/ActionButton/useAction.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,kCAAkC;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,yBAAyB;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACtC,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAuC1C"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @since 0.0.1
|
|
8
8
|
* @author AMBROISE PARK Consulting
|
|
9
9
|
*/
|
|
10
|
-
import { useState, useCallback } from 'react';
|
|
10
|
+
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
11
11
|
/**
|
|
12
12
|
* Hook for wrapping async actions with loading/error state management.
|
|
13
13
|
*
|
|
@@ -27,9 +27,17 @@ import { useState, useCallback } from 'react';
|
|
|
27
27
|
export function useAction({ action, onSuccess, onError, }) {
|
|
28
28
|
const [loading, setLoading] = useState(false);
|
|
29
29
|
const [error, setError] = useState(null);
|
|
30
|
+
const loadingRef = useRef(false);
|
|
31
|
+
const mountedRef = useRef(true);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
return () => {
|
|
34
|
+
mountedRef.current = false;
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
30
37
|
const execute = useCallback(async () => {
|
|
31
|
-
if (
|
|
38
|
+
if (loadingRef.current)
|
|
32
39
|
return undefined;
|
|
40
|
+
loadingRef.current = true;
|
|
33
41
|
setLoading(true);
|
|
34
42
|
setError(null);
|
|
35
43
|
try {
|
|
@@ -39,13 +47,18 @@ export function useAction({ action, onSuccess, onError, }) {
|
|
|
39
47
|
}
|
|
40
48
|
catch (err) {
|
|
41
49
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
42
|
-
|
|
50
|
+
if (mountedRef.current) {
|
|
51
|
+
setError(error);
|
|
52
|
+
}
|
|
43
53
|
onError?.(error);
|
|
44
54
|
return undefined;
|
|
45
55
|
}
|
|
46
56
|
finally {
|
|
47
|
-
|
|
57
|
+
loadingRef.current = false;
|
|
58
|
+
if (mountedRef.current) {
|
|
59
|
+
setLoading(false);
|
|
60
|
+
}
|
|
48
61
|
}
|
|
49
|
-
}, [action, onSuccess, onError
|
|
62
|
+
}, [action, onSuccess, onError]);
|
|
50
63
|
return { execute, loading, error };
|
|
51
64
|
}
|
|
@@ -20,7 +20,7 @@ export declare const ALERT_VARIANT: {
|
|
|
20
20
|
readonly INFO: "info";
|
|
21
21
|
};
|
|
22
22
|
declare const alertVariants: (props?: ({
|
|
23
|
-
variant?: "
|
|
23
|
+
variant?: "error" | "warning" | "info" | "success" | "muted" | null | undefined;
|
|
24
24
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
25
25
|
export type AlertVariant = (typeof ALERT_VARIANT)[keyof typeof ALERT_VARIANT];
|
|
26
26
|
export interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>, VariantProps<typeof alertVariants> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Alert/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE9E,MAAM,WAAW,UACf,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAC7C,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,KAAK,GAAI,mFASZ,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Alert/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE9E,MAAM,WAAW,UACf,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAC7C,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,KAAK,GAAI,mFASZ,UAAU,4CAqDZ,CAAC;AAEF,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -72,7 +72,7 @@ const Alert = ({ className, variant = ALERT_VARIANT.DEFAULT, hideIcon = false, t
|
|
|
72
72
|
const variantAttrs = getVariantDataAttrs({
|
|
73
73
|
variant: getThemeVariant(variant),
|
|
74
74
|
});
|
|
75
|
-
return (_jsxs(Stack, { direction: "row",
|
|
75
|
+
return (_jsxs(Stack, { direction: "row", role: "alert", className: cn(alertVariants({ variant }), className), ...variantAttrs, title: tooltip, ...props, children: [!hideIcon && (_jsx(Icon, { icon: IconComponent, className: "dndev-size-md dndev-flex-shrink-0", "aria-hidden": "true" })), _jsxs(Stack, { gap: "tight", flex: "1", className: "dndev-min-w-0", children: [title && (_jsx("div", { className: "dndev-alert-title dndev-text-h5", children: title })), description && (_jsx("div", { className: "dndev-text-base dndev-alert-description", children: description })), children] })] }));
|
|
76
76
|
};
|
|
77
77
|
export default Alert;
|
|
78
78
|
export { alertVariants };
|
|
@@ -24,7 +24,7 @@ export declare const BADGE_VARIANT: {
|
|
|
24
24
|
readonly DESTRUCTIVE: "destructive";
|
|
25
25
|
};
|
|
26
26
|
declare const badgeVariants: (props?: ({
|
|
27
|
-
variant?: "default" | "
|
|
27
|
+
variant?: "default" | "outline" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
28
28
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
29
29
|
export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
|
|
30
30
|
/**
|
|
@@ -21,7 +21,7 @@ export declare const BUTTON_VARIANT: {
|
|
|
21
21
|
readonly DESTRUCTIVE: "destructive";
|
|
22
22
|
};
|
|
23
23
|
declare const buttonVariants: (props?: ({
|
|
24
|
-
variant?: "default" | "
|
|
24
|
+
variant?: "default" | "outline" | "ghost" | "link" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
25
25
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
26
26
|
/**
|
|
27
27
|
* Button variant type - derived from buttonVariants to ensure type safety
|
|
@@ -50,7 +50,7 @@ export interface ButtonRenderProps {
|
|
|
50
50
|
'data-full-width'?: string;
|
|
51
51
|
role?: string;
|
|
52
52
|
tabIndex?: number;
|
|
53
|
-
[key: string]:
|
|
53
|
+
[key: string]: unknown;
|
|
54
54
|
}
|
|
55
55
|
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
56
56
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Button/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAM1D,OAAO,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAKjB,CAAC;AAEX,QAAA,MAAM,cAAc;;8EAmBlB,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Button/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAM1D,OAAO,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAKjB,CAAC;AAEX,QAAA,MAAM,cAAc;;8EAmBlB,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WACf,SACE,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;IACjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;IACjD,yDAAyD;IACzD,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IACvD;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,QAAA,MAAM,MAAM,2GAiKX,CAAC;AAIF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
* @author AMBROISE PARK Consulting
|
|
34
34
|
*/
|
|
35
35
|
import { type ElementType, type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
36
|
+
import { type Tone } from '../../utils/constants';
|
|
36
37
|
import './CallToAction.css';
|
|
37
38
|
/**
|
|
38
39
|
* CallToAction-specific props (content directives)
|
|
@@ -63,7 +64,7 @@ interface CallToActionOwnProps {
|
|
|
63
64
|
* Tone system for background colors (matches Section component)
|
|
64
65
|
* @default 'ghost'
|
|
65
66
|
*/
|
|
66
|
-
tone?:
|
|
67
|
+
tone?: Tone;
|
|
67
68
|
/** Additional children (for custom content) */
|
|
68
69
|
children?: ReactNode;
|
|
69
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/CallToAction/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/CallToAction/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,UAAU,oBAAoB;IAC5B;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;IAEjC,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,uEAAuE;IACvE,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC7D,oBAAoB,GAClB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,CAAC;AAE/D,QAAA,MAAM,YAAY,mIAuDjB,CAAC;AAIF,eAAe,YAAY,CAAC"}
|
|
@@ -35,10 +35,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
35
35
|
* @author AMBROISE PARK Consulting
|
|
36
36
|
*/
|
|
37
37
|
import { createElement, forwardRef, } from 'react';
|
|
38
|
+
import { TONE } from '../../utils/constants';
|
|
38
39
|
import { cn } from '../../utils/helpers';
|
|
39
40
|
import Text, { TEXT_VARIANT } from '../Text';
|
|
40
41
|
import './CallToAction.css';
|
|
41
|
-
const CallToAction = forwardRef(function CallToAction({ as = 'section', title, subtitle, primaryAction, secondaryAction, align = 'center', tone =
|
|
42
|
+
const CallToAction = forwardRef(function CallToAction({ as = 'section', title, subtitle, primaryAction, secondaryAction, align = 'center', tone = TONE.GHOST, children, className, ...props }, ref) {
|
|
42
43
|
const Component = as;
|
|
43
44
|
return createElement(Component, {
|
|
44
45
|
ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Combobox/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM7E,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,GAAI,yLAiBf,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Combobox/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM7E,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,GAAI,yLAiBf,aAAa,4CAqVf,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC;AAC/C,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -170,7 +170,7 @@ const Combobox = ({ value, onValueChange, placeholder = 'Select...', emptyMessag
|
|
|
170
170
|
setOpen(isOpen);
|
|
171
171
|
onOpenChange?.(isOpen);
|
|
172
172
|
};
|
|
173
|
-
return (_jsxs("div", { ref: containerRef, className: cn('dndev-relative', open && 'dndev-combobox-open'), style: { width: '100%' }, children: [_jsxs("div", { className: "dndev-relative", children: [_jsx(Input, { ref: inputRef, id: id, label: label, value: displayValue, onChange: handleInputChange, onFocus: handleInputFocus, onClick: handleInputClick, onKeyDown: handleKeyDown, placeholder: placeholder, disabled: disabled || isLoading, icon: isLoading ? _jsx(Spinner, {}) : ChevronDown, iconEnd: true, required: required, "data-variant": variant, style: {
|
|
173
|
+
return (_jsxs("div", { ref: containerRef, className: cn('dndev-relative', open && 'dndev-combobox-open'), style: { width: '100%' }, children: [_jsxs("div", { className: "dndev-relative", children: [_jsx(Input, { ref: inputRef, id: id, label: label, value: displayValue, onChange: handleInputChange, onFocus: handleInputFocus, onClick: handleInputClick, onKeyDown: handleKeyDown, placeholder: placeholder, disabled: disabled || isLoading, icon: isLoading ? _jsx(Spinner, {}) : ChevronDown, iconEnd: true, required: required, role: "combobox", "aria-expanded": open, "aria-controls": `${id}-listbox`, "aria-autocomplete": "list", "data-variant": variant, style: {
|
|
174
174
|
'--chevron-rotation': open ? '180deg' : '0deg',
|
|
175
175
|
} }), clearable && hasSelection && !disabled && (_jsx("button", { type: "button", onClick: handleClear, className: "dndev-absolute", style: {
|
|
176
176
|
insetInlineEnd: 'calc(var(--gap-md) + var(--icon-md) + var(--gap-sm))',
|
|
@@ -196,7 +196,7 @@ const Combobox = ({ value, onValueChange, placeholder = 'Select...', emptyMessag
|
|
|
196
196
|
marginTop: 'var(--gap-tight)',
|
|
197
197
|
padding: 'var(--gap-tight)',
|
|
198
198
|
textAlign: 'start',
|
|
199
|
-
}, "data-glow": "blank", children: _jsx(ScrollArea, { className: "dndev-menu-scroll-area", end: true, children: _jsx("div", { ref: listRef, style: {
|
|
199
|
+
}, "data-glow": "blank", children: _jsx(ScrollArea, { className: "dndev-menu-scroll-area", end: true, children: _jsx("div", { ref: listRef, id: `${id}-listbox`, role: "listbox", "aria-label": label || placeholder, style: {
|
|
200
200
|
display: 'flex',
|
|
201
201
|
flexDirection: 'column',
|
|
202
202
|
gap: 'var(--gap-none)',
|
|
@@ -204,7 +204,7 @@ const Combobox = ({ value, onValueChange, placeholder = 'Select...', emptyMessag
|
|
|
204
204
|
const isSelected = selectedValues.includes(option.value);
|
|
205
205
|
const isHighlighted = index === highlightedIndex;
|
|
206
206
|
const isCreateOption = option.isCreateOption;
|
|
207
|
-
return (_jsx("button", { type: "button", onClick: () => !option.disabled && handleSelect(option.value), disabled: option.disabled, className: cn('dndev-interactive dndev-combobox-option', isHighlighted && 'dndev-combobox-option-highlighted', isSelected && 'dndev-combobox-option-selected', isCreateOption && 'dndev-combobox-option-create'), onMouseEnter: () => setHighlightedIndex(index), children: option.content ? (option.content) : (_jsxs(_Fragment, { children: [isCreateOption && (_jsx(Plus, { className: "dndev-combobox-option-create-icon" })), _jsxs("div", { className: "dndev-combobox-option-content", children: [_jsx("span", { className: "dndev-combobox-option-label", children: option.label }), option.description && (_jsx("span", { className: "dndev-combobox-option-description", children: option.description }))] }), isSelected && !isCreateOption && (_jsx(Check, { className: "dndev-combobox-option-check" }))] })) }, isCreateOption ? `create-${option.value}` : option.value));
|
|
207
|
+
return (_jsx("button", { type: "button", role: "option", "aria-selected": isSelected, onClick: () => !option.disabled && handleSelect(option.value), disabled: option.disabled, className: cn('dndev-interactive dndev-combobox-option', isHighlighted && 'dndev-combobox-option-highlighted', isSelected && 'dndev-combobox-option-selected', isCreateOption && 'dndev-combobox-option-create'), onMouseEnter: () => setHighlightedIndex(index), children: option.content ? (option.content) : (_jsxs(_Fragment, { children: [isCreateOption && (_jsx(Plus, { className: "dndev-combobox-option-create-icon" })), _jsxs("div", { className: "dndev-combobox-option-content", children: [_jsx("span", { className: "dndev-combobox-option-label", children: option.label }), option.description && (_jsx("span", { className: "dndev-combobox-option-description", children: option.description }))] }), isSelected && !isCreateOption && (_jsx(Check, { className: "dndev-combobox-option-check" }))] })) }, isCreateOption ? `create-${option.value}` : option.value));
|
|
208
208
|
})) }) }) }))] }));
|
|
209
209
|
};
|
|
210
210
|
export default Combobox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/CopyToClipboard/index.tsx"],"names":[],"mappings":"AAgBA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,WAAW,EACX,UAAU,GAAG,MAAM,GAAG,QAAQ,CAC/B;IACC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/CopyToClipboard/index.tsx"],"names":[],"mappings":"AAgBA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,WAAW,EACX,UAAU,GAAG,MAAM,GAAG,QAAQ,CAC/B;IACC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,oBAAoB,CA4ErE,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -9,7 +9,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
9
9
|
* @author AMBROISE PARK Consulting
|
|
10
10
|
*/
|
|
11
11
|
import { Copy, Check } from 'lucide-react';
|
|
12
|
-
import { useState, useCallback } from 'react';
|
|
12
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
13
13
|
import { DISPLAY } from '../../styles/componentConstants';
|
|
14
14
|
import { cn } from '../../utils/helpers';
|
|
15
15
|
import Button, {} from '../Button';
|
|
@@ -21,21 +21,37 @@ import './CopyToClipboard.css';
|
|
|
21
21
|
*/
|
|
22
22
|
export const CopyToClipboard = ({ text, children, variant = 'ghost', className, onCopy, onClick, tooltipText = 'Copy to clipboard', copiedTooltipText = 'Copied!', showTooltip = true, ariaLabel, ...buttonProps }) => {
|
|
23
23
|
const [copied, setCopied] = useState(false);
|
|
24
|
+
const resetTimerRef = useRef(null);
|
|
25
|
+
// Clear the reset timer on unmount to avoid setState on unmounted component
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
return () => {
|
|
28
|
+
if (resetTimerRef.current !== null) {
|
|
29
|
+
clearTimeout(resetTimerRef.current);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
24
33
|
const handleCopy = useCallback(async (e) => {
|
|
25
34
|
try {
|
|
26
35
|
if (typeof window === 'undefined' || !navigator?.clipboard) {
|
|
27
|
-
|
|
36
|
+
if (process.env.NODE_ENV === 'development') {
|
|
37
|
+
console.warn('Clipboard API not available');
|
|
38
|
+
}
|
|
28
39
|
return;
|
|
29
40
|
}
|
|
30
41
|
await navigator.clipboard.writeText(text);
|
|
31
42
|
setCopied(true);
|
|
32
43
|
onCopy?.(text);
|
|
33
|
-
|
|
44
|
+
if (resetTimerRef.current !== null) {
|
|
45
|
+
clearTimeout(resetTimerRef.current);
|
|
46
|
+
}
|
|
47
|
+
resetTimerRef.current = setTimeout(() => setCopied(false), 2000);
|
|
34
48
|
// Call onClick handler if provided (e.g., for stopPropagation)
|
|
35
49
|
onClick?.(e);
|
|
36
50
|
}
|
|
37
51
|
catch (error) {
|
|
38
|
-
|
|
52
|
+
if (process.env.NODE_ENV === 'development') {
|
|
53
|
+
console.error('Failed to copy to clipboard:', error);
|
|
54
|
+
}
|
|
39
55
|
// No fallback - modern browsers should support clipboard API
|
|
40
56
|
}
|
|
41
57
|
}, [text, onCopy, onClick]);
|
|
@@ -57,7 +57,7 @@ const Dialog = ({ trigger, title, description, children, footer, open, onOpenCha
|
|
|
57
57
|
const variantAttrs = getVariantDataAttrs({
|
|
58
58
|
variant: variant !== SURFACE_VARIANT.DEFAULT ? variant : undefined,
|
|
59
59
|
});
|
|
60
|
-
return (_jsxs(Root, { open: open, onOpenChange: onOpenChange, children: [trigger && _jsx(Trigger, { asChild: true, children: trigger }), _jsxs(DialogContent, { className:
|
|
60
|
+
return (_jsxs(Root, { open: open, onOpenChange: onOpenChange, children: [trigger && _jsx(Trigger, { asChild: true, children: trigger }), _jsxs(DialogContent, { className: className, noSwipe: noSwipe, closeButtonRef: closeButtonRef, onOpenChange: onOpenChange, ...variantAttrs, ...contentProps, children: [title ? (_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: title }), _jsx(DialogDescription, { className: "dndev-sr-only", children: description || 'Dialog content' })] })) : (_jsxs(_Fragment, { children: [_jsx(DialogTitle, { className: "dndev-sr-only", children: "Dialog" }), _jsx(DialogDescription, { className: "dndev-sr-only", children: description || 'Dialog content' })] })), _jsx("div", { className: "dndev-modal-body", children: children }), (footer || actions) && (_jsxs(DialogFooter, { children: [footer, actions && (_jsxs(_Fragment, { children: [actions.cancel && (_jsx(Close, { asChild: true, children: _jsx(Button, { variant: BUTTON_VARIANT.OUTLINE, onClick: actions.cancel.onClick, children: actions.cancel.label }) })), actions.confirm && (_jsx(Button, { variant: actions.confirm.variant || BUTTON_VARIANT.PRIMARY, onClick: actions.confirm.onClick, children: actions.confirm.label }))] }))] })), showClose && (_jsx(Close, { ref: closeButtonRef, asChild: true, children: _jsx(Button, { variant: BUTTON_VARIANT.GHOST, icon: X, className: "dndev-modal-close", "aria-label": "Close" }) }))] })] }));
|
|
61
61
|
};
|
|
62
62
|
export default Dialog;
|
|
63
63
|
export { SURFACE_VARIANT as DIALOG_VARIANT } from '../../utils/constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/DropdownMenu/DropdownMenuPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownMenuPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/DropdownMenu/DropdownMenuPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AAKnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,QAAA,MAAM,qBAAqB,yDAAyB,CAAC;AACrD,QAAA,MAAM,4BAA4B,0IAA4B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,qIAA0B,CAAC;AAC3D,QAAA,MAAM,2BAA2B,+DAA2B,CAAC;AAC7D,QAAA,MAAM,wBAAwB,4DAAwB,CAAC;AACvD,QAAA,MAAM,+BAA+B,0IAA+B,CAAC;AAErE,QAAA,MAAM,+BAA+B,GAAI,0CAKtC,cAAc,CAAC,OAAO,iBAAiB,CAAC,UAAU,CAAC,GAAG;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,4CASA,CAAC;AAEF,QAAA,MAAM,+BAA+B,GAAI,yBAGtC,cAAc,CAAC,OAAO,iBAAiB,CAAC,UAAU,CAAC,4CAErD,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,8DAMnC,cAAc,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3C,4CAYA,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAAI,yCAKhC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,4CAQA,CAAC;AAEF,QAAA,MAAM,iCAAiC,GAAI,qDAMxC,cAAc,CAAC,OAAO,iBAAiB,CAAC,YAAY,CAAC,GAAG;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,4CAcA,CAAC;AAEF,QAAA,MAAM,8BAA8B,GAAI,4CAKrC,cAAc,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,GAAG;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,4CAaA,CAAC;AAEF,QAAA,MAAM,0BAA0B,GAAI,yCAKjC,cAAc,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAAG;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,4CAOA,CAAC;AAEF,QAAA,MAAM,8BAA8B,GAAI,kCAIrC,cAAc,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,GAAG;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,4CAMA,CAAC;AAEF,QAAA,MAAM,6BAA6B,GAAI,yBAGpC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,4CAEvC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,iCAAiC,EACjC,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,GAChC,CAAC"}
|
|
@@ -9,7 +9,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
* @author AMBROISE PARK Consulting
|
|
10
10
|
*/
|
|
11
11
|
import * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu';
|
|
12
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
13
12
|
import { Check, ChevronRight, Circle } from 'lucide-react';
|
|
14
13
|
import { cn } from '../../utils/helpers';
|
|
15
14
|
const DropdownMenuPrimitive = RadixDropdownMenu.Root;
|
|
@@ -23,26 +22,11 @@ const DropdownMenuSubContentPrimitive = ({ className, ...props }) => (_jsx(Radix
|
|
|
23
22
|
const DropdownMenuContentPrimitive = ({ className, sideOffset = 4, align = 'start', onCloseAutoFocus = (e) => e.preventDefault(), ...props }) => {
|
|
24
23
|
return (_jsx(RadixDropdownMenu.Portal, { children: _jsx(RadixDropdownMenu.Content, { sideOffset: sideOffset, align: align, onCloseAutoFocus: onCloseAutoFocus, className: cn(className), ...props }) }));
|
|
25
24
|
};
|
|
26
|
-
const DropdownMenuItemPrimitive = ({ className, inset, asChild = false, ...props }) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
const
|
|
31
|
-
const Comp = asChild ? Slot : RadixDropdownMenu.CheckboxItem;
|
|
32
|
-
return (_jsxs(Comp, { className: cn(className), "data-role": "menu-item", "data-inset": "true", checked: checked, ...props, children: [_jsx(RadixDropdownMenu.ItemIndicator, { children: _jsx(Check, {}) }), children] }));
|
|
33
|
-
};
|
|
34
|
-
const DropdownMenuRadioItemPrimitive = ({ className, children, asChild = false, ...props }) => {
|
|
35
|
-
const Comp = asChild ? Slot : RadixDropdownMenu.RadioItem;
|
|
36
|
-
return (_jsxs(Comp, { className: cn(className), "data-role": "menu-item", "data-inset": "true", ...props, children: [_jsx(RadixDropdownMenu.ItemIndicator, { children: _jsx(Circle, {}) }), children] }));
|
|
37
|
-
};
|
|
38
|
-
const DropdownMenuLabelPrimitive = ({ className, inset, asChild = false, ...props }) => {
|
|
39
|
-
const Comp = asChild ? Slot : RadixDropdownMenu.Label;
|
|
40
|
-
return (_jsx(Comp, { className: cn(className), "data-inset": inset ? 'true' : undefined, ...props }));
|
|
41
|
-
};
|
|
42
|
-
const DropdownMenuSeparatorPrimitive = ({ className, asChild = false, ...props }) => {
|
|
43
|
-
const Comp = asChild ? Slot : RadixDropdownMenu.Separator;
|
|
44
|
-
return _jsx(Comp, { className: cn(className), ...props });
|
|
45
|
-
};
|
|
25
|
+
const DropdownMenuItemPrimitive = ({ className, inset, asChild = false, ...props }) => (_jsx(RadixDropdownMenu.Item, { className: cn(className), "data-role": "menu-item", "data-inset": inset ? 'true' : undefined, asChild: asChild, ...props }));
|
|
26
|
+
const DropdownMenuCheckboxItemPrimitive = ({ className, children, checked, asChild = false, ...props }) => (_jsxs(RadixDropdownMenu.CheckboxItem, { className: cn(className), "data-role": "menu-item", "data-inset": "true", checked: checked, asChild: asChild, ...props, children: [_jsx(RadixDropdownMenu.ItemIndicator, { children: _jsx(Check, {}) }), children] }));
|
|
27
|
+
const DropdownMenuRadioItemPrimitive = ({ className, children, asChild = false, ...props }) => (_jsxs(RadixDropdownMenu.RadioItem, { className: cn(className), "data-role": "menu-item", "data-inset": "true", asChild: asChild, ...props, children: [_jsx(RadixDropdownMenu.ItemIndicator, { children: _jsx(Circle, {}) }), children] }));
|
|
28
|
+
const DropdownMenuLabelPrimitive = ({ className, inset, asChild = false, ...props }) => (_jsx(RadixDropdownMenu.Label, { className: cn(className), "data-inset": inset ? 'true' : undefined, asChild: asChild, ...props }));
|
|
29
|
+
const DropdownMenuSeparatorPrimitive = ({ className, asChild = false, ...props }) => (_jsx(RadixDropdownMenu.Separator, { className: cn(className), asChild: asChild, ...props }));
|
|
46
30
|
const DropdownMenuShortcutPrimitive = ({ className, ...props }) => {
|
|
47
31
|
return _jsx("span", { className: cn(className), ...props });
|
|
48
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/DropdownMenu/index.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,oBAAoB,CAAC;AAc5B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,sBAAsB,GAAG,oBAAoB,GAAG;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,uBAAuB,GAAG,oBAAoB,GAAG;IACpD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GACtB,qBAAqB,GACrB,yBAAyB,GACzB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,YAAY,GAAI,+EAQnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/DropdownMenu/index.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,oBAAoB,CAAC;AAc5B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,sBAAsB,GAAG,oBAAoB,GAAG;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,uBAAuB,GAAG,oBAAoB,GAAG;IACpD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GACtB,qBAAqB,GACrB,yBAAyB,GACzB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,YAAY,GAAI,+EAQnB,iBAAiB,mDAsPnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|