cynx-ui 1.3.21 → 1.3.22
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/components/Select.jsx +20 -12
- package/components/TimePicker.jsx +87 -95
- package/index.js +97 -97
- package/package.json +1 -1
package/components/Select.jsx
CHANGED
|
@@ -2,6 +2,13 @@ import { useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } fr
|
|
|
2
2
|
import { createPortal } from 'react-dom';
|
|
3
3
|
import { ChevronDown, Check, X } from 'lucide-react';
|
|
4
4
|
|
|
5
|
+
const SIZES = {
|
|
6
|
+
xs: { height: 24, fontSize: 11, paddingH: 6, searchHeight: 22, searchFont: 10.5, itemMinHeight: 18, itemPadding: '3px 5px' },
|
|
7
|
+
sm: { height: 28, fontSize: 11.5, paddingH: 8, searchHeight: 26, searchFont: 11.5, itemMinHeight: 22, itemPadding: '4.5px 7px' },
|
|
8
|
+
md: { height: 32, fontSize: 13, paddingH: 10, searchHeight: 32, searchFont: 12.5, itemMinHeight: 28, itemPadding: '8px 10px' },
|
|
9
|
+
lg: { height: 36, fontSize: 14, paddingH: 14, searchHeight: 34, searchFont: 13, itemMinHeight: 32, itemPadding: '9px 12px' },
|
|
10
|
+
};
|
|
11
|
+
|
|
5
12
|
const KEYFRAMES = `
|
|
6
13
|
@keyframes selFadeInDown{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
|
|
7
14
|
@keyframes selFadeInUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
|
|
@@ -158,9 +165,10 @@ export default function Select({
|
|
|
158
165
|
|
|
159
166
|
const selectedValues = multi ? (Array.isArray(value) ? value : []) : (value !== undefined && value !== null ? [value] : []);
|
|
160
167
|
|
|
161
|
-
const
|
|
162
|
-
const
|
|
163
|
-
const
|
|
168
|
+
const s = SIZES[size] || SIZES.md;
|
|
169
|
+
const heightVal = s.height;
|
|
170
|
+
const paddingVal = `0 ${s.paddingH}px`;
|
|
171
|
+
const fontSizeVal = `${s.fontSize}px`;
|
|
164
172
|
|
|
165
173
|
let radiusVal = rounded
|
|
166
174
|
? (typeof rounded === 'string'
|
|
@@ -168,7 +176,7 @@ export default function Select({
|
|
|
168
176
|
: typeof rounded === 'number'
|
|
169
177
|
? `${rounded}px`
|
|
170
178
|
: '6px')
|
|
171
|
-
: (
|
|
179
|
+
: (s.height <= 26 ? '4px' : s.height <= 28 ? '6px' : 'var(--rmd,var(--rads, 8px))');
|
|
172
180
|
|
|
173
181
|
return (
|
|
174
182
|
<div
|
|
@@ -310,13 +318,13 @@ export default function Select({
|
|
|
310
318
|
style={{
|
|
311
319
|
width: '100%',
|
|
312
320
|
boxSizing: 'border-box',
|
|
313
|
-
padding:
|
|
314
|
-
height:
|
|
321
|
+
padding: s.height <= 26 ? '2px 5px' : s.height <= 28 ? '3px 6px' : '7px 10px',
|
|
322
|
+
height: s.searchHeight,
|
|
315
323
|
background: 'var(--sf2,var(--grey-1, #f5f5f8))',
|
|
316
324
|
border: '1.5px solid var(--bd2,var(--border, #e2e8f0))',
|
|
317
|
-
borderRadius:
|
|
325
|
+
borderRadius: s.height <= 26 ? '3px' : s.height <= 28 ? '4px' : 'var(--rmd,var(--rads, 8px))',
|
|
318
326
|
fontFamily: 'var(--f,var(--sans, inherit))',
|
|
319
|
-
fontSize:
|
|
327
|
+
fontSize: `${s.searchFont}px`,
|
|
320
328
|
lineHeight: 1,
|
|
321
329
|
color: 'var(--t,var(--primary-text, #0f172a))',
|
|
322
330
|
outline: 'none',
|
|
@@ -339,13 +347,13 @@ export default function Select({
|
|
|
339
347
|
display: 'flex',
|
|
340
348
|
alignItems: 'center',
|
|
341
349
|
gap: 6,
|
|
342
|
-
minHeight:
|
|
343
|
-
padding:
|
|
344
|
-
borderRadius:
|
|
350
|
+
minHeight: s.itemMinHeight,
|
|
351
|
+
padding: s.itemPadding,
|
|
352
|
+
borderRadius: s.height <= 26 ? '3px' : s.height <= 28 ? '4px' : 'var(--rmd,var(--rads, 8px))',
|
|
345
353
|
cursor: opt.disabled ? 'not-allowed' : 'pointer',
|
|
346
354
|
color: isSelected(opt.value) ? 'var(--accent, #f99e2c)' : 'var(--t,var(--primary-text, #0f172a))',
|
|
347
355
|
background: isSelected(opt.value) ? 'var(--pd,var(--accent-bg, rgba(249,158,44,.1)))' : undefined,
|
|
348
|
-
fontSize:
|
|
356
|
+
fontSize: `${s.searchFont}px`,
|
|
349
357
|
fontWeight: 400,
|
|
350
358
|
transition: 'background .1s',
|
|
351
359
|
userSelect: 'none',
|
|
@@ -2,38 +2,27 @@ import { useState, useRef, useEffect, useCallback, useLayoutEffect } from 'react
|
|
|
2
2
|
import { createPortal } from 'react-dom';
|
|
3
3
|
import { Clock, ChevronDown, ChevronUp, Check, X, Globe, List, Sliders } from 'lucide-react';
|
|
4
4
|
|
|
5
|
+
const SIZES = {
|
|
6
|
+
xs: { height: 24, fontSize: 11, paddingH: 6, iconPadLeft: 22, noIconPadLeft: 6, clockSize: 12 },
|
|
7
|
+
sm: { height: 28, fontSize: 11.5, paddingH: 8, iconPadLeft: 26, noIconPadLeft: 8, clockSize: 13 },
|
|
8
|
+
md: { height: 32, fontSize: 13, paddingH: 10, iconPadLeft: 28, noIconPadLeft: 10, clockSize: 14 },
|
|
9
|
+
lg: { height: 36, fontSize: 14, paddingH: 14, iconPadLeft: 32, noIconPadLeft: 12, clockSize: 16 },
|
|
10
|
+
};
|
|
11
|
+
|
|
5
12
|
const STYLES = `
|
|
6
|
-
@keyframes
|
|
7
|
-
0
|
|
8
|
-
|
|
9
|
-
transform: translateY(-8px) scale(0.96);
|
|
10
|
-
}
|
|
11
|
-
100% {
|
|
12
|
-
opacity: 1;
|
|
13
|
-
transform: translateY(0) scale(1);
|
|
14
|
-
}
|
|
13
|
+
@keyframes cynxTimePickerFadeInDown {
|
|
14
|
+
from { opacity: 0; transform: translateY(-4px); }
|
|
15
|
+
to { opacity: 1; transform: translateY(0); }
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
0
|
|
19
|
-
opacity: 1;
|
|
20
|
-
transform: translateY(0) scale(1);
|
|
21
|
-
}
|
|
22
|
-
100% {
|
|
23
|
-
opacity: 0;
|
|
24
|
-
transform: translateY(-8px) scale(0.96);
|
|
25
|
-
}
|
|
17
|
+
@keyframes cynxTimePickerFadeInUp {
|
|
18
|
+
from { opacity: 0; transform: translateY(4px); }
|
|
19
|
+
to { opacity: 1; transform: translateY(0); }
|
|
26
20
|
}
|
|
27
21
|
|
|
28
22
|
.cynx-timepicker-drop {
|
|
29
|
-
animation: cynxTimePickerPopIn 0.18s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
30
23
|
will-change: opacity, transform;
|
|
31
24
|
}
|
|
32
25
|
|
|
33
|
-
.cynx-timepicker-drop.closing {
|
|
34
|
-
animation: cynxTimePickerPopOut 0.14s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
26
|
.cynx-timepicker-cell {
|
|
38
27
|
transition: background-color 0.12s ease, color 0.12s ease;
|
|
39
28
|
}
|
|
@@ -176,7 +165,7 @@ export function TimePicker({
|
|
|
176
165
|
timezone = 'Asia/Tashkent',
|
|
177
166
|
label,
|
|
178
167
|
placeholder,
|
|
179
|
-
size = '
|
|
168
|
+
size = 'md', // 'xs' | 'sm' | 'md' | 'lg'
|
|
180
169
|
disabled = false,
|
|
181
170
|
readOnly = false,
|
|
182
171
|
style = {},
|
|
@@ -184,8 +173,6 @@ export function TimePicker({
|
|
|
184
173
|
}) {
|
|
185
174
|
const displayClockIcon = showIcon && !hideIcon;
|
|
186
175
|
const [open, setOpen] = useState(false);
|
|
187
|
-
const [rendered, setRendered] = useState(false);
|
|
188
|
-
const [closing, setClosing] = useState(false);
|
|
189
176
|
|
|
190
177
|
const [activeVariant, setActiveVariant] = useState(variant);
|
|
191
178
|
const [mode, setMode] = useState(format);
|
|
@@ -196,7 +183,7 @@ export function TimePicker({
|
|
|
196
183
|
const dropRef = useRef(null);
|
|
197
184
|
const isTypingRef = useRef(false);
|
|
198
185
|
|
|
199
|
-
const [pos, setPos] = useState({ top: 0, left: 0, width: 230 });
|
|
186
|
+
const [pos, setPos] = useState({ top: 0, left: 0, width: 230, openUp: false });
|
|
200
187
|
|
|
201
188
|
ensureStyles();
|
|
202
189
|
|
|
@@ -204,22 +191,42 @@ export function TimePicker({
|
|
|
204
191
|
useEffect(() => { setMode(format); }, [format]);
|
|
205
192
|
useEffect(() => { setTz(timezone); }, [timezone]);
|
|
206
193
|
|
|
194
|
+
const calcPos = useCallback(() => {
|
|
195
|
+
if (!btnRef.current) return;
|
|
196
|
+
const r = btnRef.current.getBoundingClientRect();
|
|
197
|
+
const dropW = mode === '12h' ? 290 : 230;
|
|
198
|
+
const dropEl = dropRef.current;
|
|
199
|
+
const dropH = dropEl ? dropEl.offsetHeight : 230;
|
|
200
|
+
const spaceBelow = window.innerHeight - r.bottom;
|
|
201
|
+
const spaceAbove = r.top;
|
|
202
|
+
const openUp = spaceBelow < Math.min(dropH, 230) + 12 && spaceAbove > spaceBelow;
|
|
203
|
+
|
|
204
|
+
let top;
|
|
205
|
+
if (openUp) {
|
|
206
|
+
top = Math.max(8, r.top - (dropEl ? dropEl.offsetHeight : dropH) - 4);
|
|
207
|
+
} else {
|
|
208
|
+
top = Math.min(window.innerHeight - 40, r.bottom + 4);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
let left = r.left;
|
|
212
|
+
if (left + dropW > window.innerWidth - 8) {
|
|
213
|
+
left = Math.max(8, window.innerWidth - dropW - 8);
|
|
214
|
+
}
|
|
215
|
+
if (left < 8) left = 8;
|
|
216
|
+
|
|
217
|
+
setPos({ top, left, width: Math.max(r.width, dropW), openUp });
|
|
218
|
+
}, [mode]);
|
|
219
|
+
|
|
207
220
|
const openPicker = useCallback(() => {
|
|
208
221
|
if (disabled || readOnly) return;
|
|
209
|
-
|
|
210
|
-
setClosing(false);
|
|
222
|
+
calcPos();
|
|
211
223
|
setOpen(true);
|
|
212
|
-
}, [disabled, readOnly]);
|
|
224
|
+
}, [disabled, readOnly, calcPos]);
|
|
213
225
|
|
|
214
226
|
const closePicker = useCallback(() => {
|
|
215
227
|
if (!open) return;
|
|
216
|
-
setClosing(true);
|
|
217
228
|
setOpen(false);
|
|
218
229
|
setShowTzPicker(false);
|
|
219
|
-
setTimeout(() => {
|
|
220
|
-
setRendered(false);
|
|
221
|
-
setClosing(false);
|
|
222
|
-
}, 140);
|
|
223
230
|
}, [open]);
|
|
224
231
|
|
|
225
232
|
const togglePicker = useCallback(() => {
|
|
@@ -250,33 +257,15 @@ export function TimePicker({
|
|
|
250
257
|
}
|
|
251
258
|
}, [value, mode, showSeconds, formatOutput]);
|
|
252
259
|
|
|
253
|
-
const calcPos = useCallback(() => {
|
|
254
|
-
if (!btnRef.current) return;
|
|
255
|
-
const r = btnRef.current.getBoundingClientRect();
|
|
256
|
-
const dropW = mode === '12h' ? 290 : 230;
|
|
257
|
-
const dropH = dropRef.current ? dropRef.current.offsetHeight : 230;
|
|
258
|
-
|
|
259
|
-
let left = r.left;
|
|
260
|
-
if (left + dropW > window.innerWidth - 12) {
|
|
261
|
-
left = Math.max(12, r.right - dropW);
|
|
262
|
-
}
|
|
263
|
-
if (left < 12) left = 12;
|
|
264
|
-
|
|
265
|
-
let top = r.bottom + 4;
|
|
266
|
-
if (top + dropH > window.innerHeight - 12 && r.top - 4 - dropH > 12) {
|
|
267
|
-
top = r.top - 4 - dropH;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
setPos({ top, left, width: Math.max(r.width, dropW) });
|
|
271
|
-
}, [mode]);
|
|
272
|
-
|
|
273
260
|
useLayoutEffect(() => {
|
|
274
|
-
if (
|
|
275
|
-
|
|
276
|
-
|
|
261
|
+
if (open) {
|
|
262
|
+
calcPos();
|
|
263
|
+
requestAnimationFrame(calcPos);
|
|
264
|
+
}
|
|
265
|
+
}, [open, calcPos]);
|
|
277
266
|
|
|
278
267
|
useEffect(() => {
|
|
279
|
-
if (!
|
|
268
|
+
if (!open) return;
|
|
280
269
|
function onDown(e) {
|
|
281
270
|
const inBtn = btnRef.current && btnRef.current.contains(e.target);
|
|
282
271
|
const inDrop = dropRef.current && dropRef.current.contains(e.target);
|
|
@@ -284,18 +273,15 @@ export function TimePicker({
|
|
|
284
273
|
closePicker();
|
|
285
274
|
}
|
|
286
275
|
}
|
|
287
|
-
|
|
288
|
-
document.addEventListener('mousedown', onDown, true);
|
|
289
|
-
}, 0);
|
|
276
|
+
document.addEventListener('mousedown', onDown, true);
|
|
290
277
|
window.addEventListener('scroll', calcPos, true);
|
|
291
278
|
window.addEventListener('resize', calcPos);
|
|
292
279
|
return () => {
|
|
293
|
-
clearTimeout(timer);
|
|
294
280
|
document.removeEventListener('mousedown', onDown, true);
|
|
295
281
|
window.removeEventListener('scroll', calcPos, true);
|
|
296
282
|
window.removeEventListener('resize', calcPos);
|
|
297
283
|
};
|
|
298
|
-
}, [
|
|
284
|
+
}, [open, closePicker, calcPos]);
|
|
299
285
|
|
|
300
286
|
const emitChange = (parsedObj, useMode = mode) => {
|
|
301
287
|
const formatted = formatOutput(parsedObj, useMode);
|
|
@@ -518,10 +504,11 @@ export function TimePicker({
|
|
|
518
504
|
const fullMinutesList = Array.from({ length: 60 }, (_, i) => i);
|
|
519
505
|
|
|
520
506
|
|
|
507
|
+
const s = SIZES[size] || SIZES.md;
|
|
521
508
|
const inputHeight = style?.height
|
|
522
509
|
? (typeof style.height === 'number' ? `${style.height}px` : style.height)
|
|
523
|
-
:
|
|
524
|
-
const fontSize =
|
|
510
|
+
: `${s.height}px`;
|
|
511
|
+
const fontSize = `${s.fontSize}px`;
|
|
525
512
|
|
|
526
513
|
return (
|
|
527
514
|
<div
|
|
@@ -559,7 +546,7 @@ export function TimePicker({
|
|
|
559
546
|
transition: 'color .15s ease',
|
|
560
547
|
}}
|
|
561
548
|
>
|
|
562
|
-
<Clock size={
|
|
549
|
+
<Clock size={s.clockSize} />
|
|
563
550
|
</button>
|
|
564
551
|
)}
|
|
565
552
|
|
|
@@ -581,8 +568,8 @@ export function TimePicker({
|
|
|
581
568
|
maxWidth: '100%',
|
|
582
569
|
boxSizing: 'border-box',
|
|
583
570
|
height: inputHeight,
|
|
584
|
-
paddingLeft: displayClockIcon ?
|
|
585
|
-
paddingRight:
|
|
571
|
+
paddingLeft: displayClockIcon ? s.iconPadLeft : s.noIconPadLeft,
|
|
572
|
+
paddingRight: s.height <= 26 ? 18 : 26,
|
|
586
573
|
border: `1px solid ${open ? 'var(--accent, #f99e2c)' : 'var(--bd, var(--border, #d7d8e0))'}`,
|
|
587
574
|
borderRadius: 'var(--rads, 8px)',
|
|
588
575
|
fontSize: fontSize,
|
|
@@ -603,47 +590,51 @@ export function TimePicker({
|
|
|
603
590
|
}}
|
|
604
591
|
/>
|
|
605
592
|
|
|
606
|
-
<div style={{ position: 'absolute', right: 8, display: 'flex', alignItems: 'center' }}>
|
|
607
|
-
{inputValue && !disabled && !readOnly
|
|
608
|
-
<
|
|
609
|
-
|
|
610
|
-
|
|
593
|
+
<div style={{ position: 'absolute', right: 8, display: 'flex', alignItems: 'center', gap: 4 }}>
|
|
594
|
+
{inputValue && !disabled && !readOnly && (
|
|
595
|
+
<span
|
|
596
|
+
onClick={(e) => {
|
|
597
|
+
e.stopPropagation();
|
|
598
|
+
clearTime();
|
|
599
|
+
}}
|
|
611
600
|
title="Очистить"
|
|
612
601
|
style={{
|
|
613
|
-
background: 'none',
|
|
614
|
-
border: 'none',
|
|
615
|
-
cursor: 'pointer',
|
|
616
|
-
color: 'var(--t2, var(--muted, #9b9daa))',
|
|
617
|
-
padding: 2,
|
|
618
602
|
display: 'flex',
|
|
619
603
|
alignItems: 'center',
|
|
620
604
|
justifyContent: 'center',
|
|
621
|
-
|
|
605
|
+
cursor: 'pointer',
|
|
606
|
+
color: 'var(--t2, var(--muted, #9b9daa))',
|
|
607
|
+
padding: '0 2px',
|
|
608
|
+
flexShrink: 0,
|
|
622
609
|
}}
|
|
623
610
|
onMouseEnter={e => e.currentTarget.style.color = 'var(--danger, #f64747)'}
|
|
624
611
|
onMouseLeave={e => e.currentTarget.style.color = 'var(--t2, var(--muted, #9b9daa))'}
|
|
625
612
|
>
|
|
626
|
-
<X size={
|
|
627
|
-
</
|
|
628
|
-
) : (
|
|
629
|
-
<ChevronDown
|
|
630
|
-
size={13}
|
|
631
|
-
style={{
|
|
632
|
-
color: open ? 'var(--accent, #f99e2c)' : 'var(--t2, var(--muted, #9b9daa))',
|
|
633
|
-
transform: open ? 'rotate(180deg)' : 'none',
|
|
634
|
-
transition: 'transform .2s ease, color .15s ease',
|
|
635
|
-
pointerEvents: 'none',
|
|
636
|
-
}}
|
|
637
|
-
/>
|
|
613
|
+
<X size={12} />
|
|
614
|
+
</span>
|
|
638
615
|
)}
|
|
616
|
+
<ChevronDown
|
|
617
|
+
size={12}
|
|
618
|
+
style={{
|
|
619
|
+
flexShrink: 0,
|
|
620
|
+
color: open ? 'var(--accent, #f99e2c)' : 'var(--t2, var(--muted, #9b9daa))',
|
|
621
|
+
transition: 'transform .2s ease',
|
|
622
|
+
transform: open ? 'rotate(180deg)' : undefined,
|
|
623
|
+
cursor: 'pointer',
|
|
624
|
+
}}
|
|
625
|
+
onClick={(e) => {
|
|
626
|
+
e.stopPropagation();
|
|
627
|
+
togglePicker();
|
|
628
|
+
}}
|
|
629
|
+
/>
|
|
639
630
|
</div>
|
|
640
631
|
</div>
|
|
641
632
|
|
|
642
633
|
{/* PORTAL DROPDOWN POPUP */}
|
|
643
|
-
{
|
|
634
|
+
{open && createPortal(
|
|
644
635
|
<div
|
|
645
636
|
ref={dropRef}
|
|
646
|
-
className=
|
|
637
|
+
className="cynx-timepicker-drop"
|
|
647
638
|
style={{
|
|
648
639
|
position: 'fixed',
|
|
649
640
|
top: pos.top,
|
|
@@ -660,6 +651,7 @@ export function TimePicker({
|
|
|
660
651
|
fontSize: '.78rem',
|
|
661
652
|
userSelect: 'none',
|
|
662
653
|
fontFamily: 'var(--sans, inherit)',
|
|
654
|
+
animation: `${pos.openUp ? 'cynxTimePickerFadeInUp' : 'cynxTimePickerFadeInDown'} .15s ease`,
|
|
663
655
|
}}
|
|
664
656
|
>
|
|
665
657
|
{/* Header Bar: Variant Switcher */}
|
package/index.js
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
// cynx-ui — shared component library
|
|
2
|
-
import { default as _Button } from './components/Button.jsx';
|
|
3
|
-
import { default as _Input } from './components/Input.jsx';
|
|
4
|
-
import { default as _Toggle } from './components/Toggle.jsx';
|
|
5
|
-
import { default as _Spinner, Spinner as _SpinnerNamed } from './components/Spinner.jsx';
|
|
6
|
-
import { default as _TabBar } from './components/TabBar.jsx';
|
|
7
|
-
import { default as _ImageUpload } from './components/ImageUpload.jsx';
|
|
8
|
-
import { default as _ChipSelect } from './components/ChipSelect.jsx';
|
|
9
|
-
import { default as _Checkbox } from './components/Checkbox.jsx';
|
|
10
|
-
import { default as _AuthOverlay } from './components/AuthOverlay.jsx';
|
|
11
|
-
import { default as _UptimeBar } from './components/UptimeBar.jsx';
|
|
12
|
-
import { default as _LinearProgress } from './components/LinearProgress.jsx';
|
|
13
|
-
import { default as _StatBarCard } from './components/StatBarCard.jsx';
|
|
14
|
-
import { default as _StatsCard } from './components/StatsCard.jsx';
|
|
15
|
-
import { default as _ActivityCard } from './components/ActivityCard.jsx';
|
|
16
|
-
import { default as _HoverCard } from './components/HoverCard.jsx';
|
|
17
|
-
import { default as _StatsBar } from './components/StatsBar.jsx';
|
|
18
|
-
import { default as _Select } from './components/Select.jsx';
|
|
19
|
-
import { default as _Badge } from './components/Badge.jsx';
|
|
20
|
-
import { default as _PulseDot } from './components/PulseDot.jsx';
|
|
21
|
-
import { default as _CircularProgress } from './components/CircularProgress.jsx';
|
|
22
|
-
import { default as _Skeleton } from './components/Skeleton.jsx';
|
|
23
|
-
import { Modal as _Modal, Confirm as _Confirm } from './components/Modal.jsx';
|
|
24
|
-
import { toast as _toast, useToast as _useToast, Toast as _Toast } from './components/Toast.jsx';
|
|
25
|
-
import { ConfirmRoot as _ConfirmRoot, confirm as _confirm } from './components/Confirm.jsx';
|
|
26
|
-
import { Pagination as _Pagination } from './components/Pagination.jsx';
|
|
27
|
-
import { DatePicker as _DatePicker } from './components/DatePicker.jsx';
|
|
28
|
-
import { TimePicker as _TimePicker } from './components/TimePicker.jsx';
|
|
29
|
-
import { ActionsMenu as _ActionsMenu } from './components/ActionsMenu.jsx';
|
|
30
|
-
import { BrandingCard as _BrandingCard } from './components/BrandingCard.jsx';
|
|
31
|
-
import { Dropzone as _Dropzone } from './components/Dropzone.jsx';
|
|
32
|
-
import { Tabs as _Tabs } from './components/Tabs.jsx';
|
|
33
|
-
import { SkeletonText as _SkeletonText, SkeletonCard as _SkeletonCard, SkeletonRows as _SkeletonRows, SkeletonStats as _SkeletonStats } from './components/Skeleton.jsx';
|
|
34
|
-
import { XTable as _XTable, XThead as _XThead, XTbody as _XTbody, XTr as _XTr, XTh as _XTh, XTd as _XTd, SkeletonTable as _SkeletonTable } from './components/XTable.jsx';
|
|
35
|
-
import { PageShell as _PageShell, TableCard as _TableCard, TableCardFilters as _TableCardFilters, TableCardBody as _TableCardBody, TableCardFooter as _TableCardFooter, CardHdr as _CardHdr, StatCard as _StatCard, StatCardSkeleton as _StatCardSkeleton } from './components/Card.jsx';
|
|
36
|
-
|
|
37
|
-
import { default as _FilePicker } from './components/FilePicker.jsx';
|
|
38
|
-
import { default as _Divider } from './components/Divider.jsx';
|
|
39
|
-
import { default as _InfoBadge } from './components/InfoBadge.jsx';
|
|
40
|
-
|
|
41
|
-
export const Button = _Button;
|
|
42
|
-
export const FilePicker = _FilePicker;
|
|
43
|
-
export const Divider = _Divider;
|
|
44
|
-
export const InfoBadge = _InfoBadge;
|
|
45
|
-
export const Input = _Input;
|
|
46
|
-
export const Toggle = _Toggle;
|
|
47
|
-
export const Spinner = _Spinner || _SpinnerNamed;
|
|
48
|
-
export const TabBar = _TabBar;
|
|
49
|
-
export const ImageUpload = _ImageUpload;
|
|
50
|
-
export const ChipSelect = _ChipSelect;
|
|
51
|
-
export const Checkbox = _Checkbox;
|
|
52
|
-
export const AuthOverlay = _AuthOverlay;
|
|
53
|
-
export const UptimeBar = _UptimeBar;
|
|
54
|
-
export const LinearProgress = _LinearProgress;
|
|
55
|
-
export const StatBarCard = _StatBarCard;
|
|
56
|
-
export const StatsCard = _StatsCard;
|
|
57
|
-
export const ActivityCard = _ActivityCard;
|
|
58
|
-
export const HoverCard = _HoverCard;
|
|
59
|
-
export const StatsBar = _StatsBar;
|
|
60
|
-
export const Select = _Select;
|
|
61
|
-
export const Badge = _Badge;
|
|
62
|
-
export const PulseDot = _PulseDot;
|
|
63
|
-
export const CircularProgress = _CircularProgress;
|
|
64
|
-
export const Skeleton = _Skeleton;
|
|
65
|
-
export const Modal = _Modal;
|
|
66
|
-
export const Confirm = _Confirm;
|
|
67
|
-
export const toast = _toast;
|
|
68
|
-
export const useToast = _useToast;
|
|
69
|
-
export const Toast = _Toast;
|
|
70
|
-
export const ConfirmRoot = _ConfirmRoot;
|
|
71
|
-
export const confirm = _confirm;
|
|
72
|
-
export const Pagination = _Pagination;
|
|
73
|
-
export const DatePicker = _DatePicker;
|
|
74
|
-
export const TimePicker = _TimePicker;
|
|
75
|
-
export const ActionsMenu = _ActionsMenu;
|
|
76
|
-
export const BrandingCard = _BrandingCard;
|
|
77
|
-
export const Dropzone = _Dropzone;
|
|
78
|
-
export const Tabs = _Tabs;
|
|
79
|
-
export const SkeletonText = _SkeletonText;
|
|
80
|
-
export const SkeletonCard = _SkeletonCard;
|
|
81
|
-
export const SkeletonRows = _SkeletonRows;
|
|
82
|
-
export const SkeletonStats = _SkeletonStats;
|
|
83
|
-
export const XTable = _XTable;
|
|
84
|
-
export const XThead = _XThead;
|
|
85
|
-
export const XTbody = _XTbody;
|
|
86
|
-
export const XTr = _XTr;
|
|
87
|
-
export const XTh = _XTh;
|
|
88
|
-
export const XTd = _XTd;
|
|
89
|
-
export const SkeletonTable = _SkeletonTable;
|
|
90
|
-
export const PageShell = _PageShell;
|
|
91
|
-
export const TableCard = _TableCard;
|
|
92
|
-
export const TableCardFilters = _TableCardFilters;
|
|
93
|
-
export const TableCardBody = _TableCardBody;
|
|
94
|
-
export const TableCardFooter = _TableCardFooter;
|
|
95
|
-
export const CardHdr = _CardHdr;
|
|
96
|
-
export const StatCard = _StatCard;
|
|
97
|
-
export const StatCardSkeleton = _StatCardSkeleton;
|
|
1
|
+
// cynx-ui — shared component library
|
|
2
|
+
import { default as _Button } from './components/Button.jsx';
|
|
3
|
+
import { default as _Input } from './components/Input.jsx';
|
|
4
|
+
import { default as _Toggle } from './components/Toggle.jsx';
|
|
5
|
+
import { default as _Spinner, Spinner as _SpinnerNamed } from './components/Spinner.jsx';
|
|
6
|
+
import { default as _TabBar } from './components/TabBar.jsx';
|
|
7
|
+
import { default as _ImageUpload } from './components/ImageUpload.jsx';
|
|
8
|
+
import { default as _ChipSelect } from './components/ChipSelect.jsx';
|
|
9
|
+
import { default as _Checkbox } from './components/Checkbox.jsx';
|
|
10
|
+
import { default as _AuthOverlay } from './components/AuthOverlay.jsx';
|
|
11
|
+
import { default as _UptimeBar } from './components/UptimeBar.jsx';
|
|
12
|
+
import { default as _LinearProgress } from './components/LinearProgress.jsx';
|
|
13
|
+
import { default as _StatBarCard } from './components/StatBarCard.jsx';
|
|
14
|
+
import { default as _StatsCard } from './components/StatsCard.jsx';
|
|
15
|
+
import { default as _ActivityCard } from './components/ActivityCard.jsx';
|
|
16
|
+
import { default as _HoverCard } from './components/HoverCard.jsx';
|
|
17
|
+
import { default as _StatsBar } from './components/StatsBar.jsx';
|
|
18
|
+
import { default as _Select } from './components/Select.jsx';
|
|
19
|
+
import { default as _Badge } from './components/Badge.jsx';
|
|
20
|
+
import { default as _PulseDot } from './components/PulseDot.jsx';
|
|
21
|
+
import { default as _CircularProgress } from './components/CircularProgress.jsx';
|
|
22
|
+
import { default as _Skeleton } from './components/Skeleton.jsx';
|
|
23
|
+
import { Modal as _Modal, Confirm as _Confirm } from './components/Modal.jsx';
|
|
24
|
+
import { toast as _toast, useToast as _useToast, Toast as _Toast } from './components/Toast.jsx';
|
|
25
|
+
import { ConfirmRoot as _ConfirmRoot, confirm as _confirm } from './components/Confirm.jsx';
|
|
26
|
+
import { Pagination as _Pagination } from './components/Pagination.jsx';
|
|
27
|
+
import { DatePicker as _DatePicker } from './components/DatePicker.jsx';
|
|
28
|
+
import { TimePicker as _TimePicker } from './components/TimePicker.jsx';
|
|
29
|
+
import { ActionsMenu as _ActionsMenu } from './components/ActionsMenu.jsx';
|
|
30
|
+
import { BrandingCard as _BrandingCard } from './components/BrandingCard.jsx';
|
|
31
|
+
import { Dropzone as _Dropzone } from './components/Dropzone.jsx';
|
|
32
|
+
import { Tabs as _Tabs } from './components/Tabs.jsx';
|
|
33
|
+
import { SkeletonText as _SkeletonText, SkeletonCard as _SkeletonCard, SkeletonRows as _SkeletonRows, SkeletonStats as _SkeletonStats } from './components/Skeleton.jsx';
|
|
34
|
+
import { XTable as _XTable, XThead as _XThead, XTbody as _XTbody, XTr as _XTr, XTh as _XTh, XTd as _XTd, SkeletonTable as _SkeletonTable } from './components/XTable.jsx';
|
|
35
|
+
import { PageShell as _PageShell, TableCard as _TableCard, TableCardFilters as _TableCardFilters, TableCardBody as _TableCardBody, TableCardFooter as _TableCardFooter, CardHdr as _CardHdr, StatCard as _StatCard, StatCardSkeleton as _StatCardSkeleton } from './components/Card.jsx';
|
|
36
|
+
|
|
37
|
+
import { default as _FilePicker } from './components/FilePicker.jsx';
|
|
38
|
+
import { default as _Divider } from './components/Divider.jsx';
|
|
39
|
+
import { default as _InfoBadge } from './components/InfoBadge.jsx';
|
|
40
|
+
|
|
41
|
+
export const Button = _Button;
|
|
42
|
+
export const FilePicker = _FilePicker;
|
|
43
|
+
export const Divider = _Divider;
|
|
44
|
+
export const InfoBadge = _InfoBadge;
|
|
45
|
+
export const Input = _Input;
|
|
46
|
+
export const Toggle = _Toggle;
|
|
47
|
+
export const Spinner = _Spinner || _SpinnerNamed;
|
|
48
|
+
export const TabBar = _TabBar;
|
|
49
|
+
export const ImageUpload = _ImageUpload;
|
|
50
|
+
export const ChipSelect = _ChipSelect;
|
|
51
|
+
export const Checkbox = _Checkbox;
|
|
52
|
+
export const AuthOverlay = _AuthOverlay;
|
|
53
|
+
export const UptimeBar = _UptimeBar;
|
|
54
|
+
export const LinearProgress = _LinearProgress;
|
|
55
|
+
export const StatBarCard = _StatBarCard;
|
|
56
|
+
export const StatsCard = _StatsCard;
|
|
57
|
+
export const ActivityCard = _ActivityCard;
|
|
58
|
+
export const HoverCard = _HoverCard;
|
|
59
|
+
export const StatsBar = _StatsBar;
|
|
60
|
+
export const Select = _Select;
|
|
61
|
+
export const Badge = _Badge;
|
|
62
|
+
export const PulseDot = _PulseDot;
|
|
63
|
+
export const CircularProgress = _CircularProgress;
|
|
64
|
+
export const Skeleton = _Skeleton;
|
|
65
|
+
export const Modal = _Modal;
|
|
66
|
+
export const Confirm = _Confirm;
|
|
67
|
+
export const toast = _toast;
|
|
68
|
+
export const useToast = _useToast;
|
|
69
|
+
export const Toast = _Toast;
|
|
70
|
+
export const ConfirmRoot = _ConfirmRoot;
|
|
71
|
+
export const confirm = _confirm;
|
|
72
|
+
export const Pagination = _Pagination;
|
|
73
|
+
export const DatePicker = _DatePicker;
|
|
74
|
+
export const TimePicker = _TimePicker;
|
|
75
|
+
export const ActionsMenu = _ActionsMenu;
|
|
76
|
+
export const BrandingCard = _BrandingCard;
|
|
77
|
+
export const Dropzone = _Dropzone;
|
|
78
|
+
export const Tabs = _Tabs;
|
|
79
|
+
export const SkeletonText = _SkeletonText;
|
|
80
|
+
export const SkeletonCard = _SkeletonCard;
|
|
81
|
+
export const SkeletonRows = _SkeletonRows;
|
|
82
|
+
export const SkeletonStats = _SkeletonStats;
|
|
83
|
+
export const XTable = _XTable;
|
|
84
|
+
export const XThead = _XThead;
|
|
85
|
+
export const XTbody = _XTbody;
|
|
86
|
+
export const XTr = _XTr;
|
|
87
|
+
export const XTh = _XTh;
|
|
88
|
+
export const XTd = _XTd;
|
|
89
|
+
export const SkeletonTable = _SkeletonTable;
|
|
90
|
+
export const PageShell = _PageShell;
|
|
91
|
+
export const TableCard = _TableCard;
|
|
92
|
+
export const TableCardFilters = _TableCardFilters;
|
|
93
|
+
export const TableCardBody = _TableCardBody;
|
|
94
|
+
export const TableCardFooter = _TableCardFooter;
|
|
95
|
+
export const CardHdr = _CardHdr;
|
|
96
|
+
export const StatCard = _StatCard;
|
|
97
|
+
export const StatCardSkeleton = _StatCardSkeleton;
|