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.
@@ -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 heightVal = size === 'xs' ? 24 : size === 'sm' ? 28 : 32;
162
- const paddingVal = size === 'xs' ? '0 6px' : size === 'sm' ? '0 8px' : '0 10px';
163
- const fontSizeVal = size === 'xs' ? '11px' : size === 'sm' ? '11.5px' : '13px';
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
- : (size === 'xs' ? '4px' : size === 'sm' ? '6px' : 'var(--rmd,var(--rads, 8px))');
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: size === 'xs' ? '2px 5px' : size === 'sm' ? '3px 6px' : '7px 10px',
314
- height: size === 'xs' ? 22 : size === 'sm' ? 26 : 32,
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: size === 'xs' ? '3px' : size === 'sm' ? '4px' : 'var(--rmd,var(--rads, 8px))',
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: size === 'xs' ? '10.5px' : size === 'sm' ? '11.5px' : '12.5px',
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: size === 'xs' ? 18 : size === 'sm' ? 22 : 28,
343
- padding: size === 'xs' ? '3px 5px' : size === 'sm' ? '4.5px 7px' : '8px 10px',
344
- borderRadius: size === 'xs' ? '3px' : size === 'sm' ? '4px' : 'var(--rmd,var(--rads, 8px))',
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: size === 'xs' ? '10.5px' : size === 'sm' ? '11.5px' : '12.5px',
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 cynxTimePickerPopIn {
7
- 0% {
8
- opacity: 0;
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
- @keyframes cynxTimePickerPopOut {
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 = 'sm', // 'xs' | 'sm' | 'md'
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
- setRendered(true);
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 (!rendered) return;
275
- calcPos();
276
- }, [rendered, calcPos]);
261
+ if (open) {
262
+ calcPos();
263
+ requestAnimationFrame(calcPos);
264
+ }
265
+ }, [open, calcPos]);
277
266
 
278
267
  useEffect(() => {
279
- if (!rendered || closing) return;
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
- const timer = setTimeout(() => {
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
- }, [rendered, closing, calcPos, closePicker]);
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
- : (size === 'xs' ? '24px' : (size === 'sm' ? '32px' : '38px'));
524
- const fontSize = (size === 'xs' || (style?.height && parseInt(style.height) <= 26)) ? '.72rem' : (size === 'sm' ? '.78rem' : '.85rem');
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={size === 'sm' ? 14 : 16} />
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 ? (size === 'xs' ? 22 : 28) : (size === 'xs' ? 6 : 10),
585
- paddingRight: size === 'xs' ? 18 : 26,
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
- <button
609
- type="button"
610
- onClick={clearTime}
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
- transition: 'color .14s ease',
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={13} />
627
- </button>
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
- {rendered && createPortal(
634
+ {open && createPortal(
644
635
  <div
645
636
  ref={dropRef}
646
- className={`cynx-timepicker-drop ${closing ? 'closing' : ''}`}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cynx-ui",
3
- "version": "1.3.21",
3
+ "version": "1.3.22",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js"