@marcoschwartz/lite-ui 0.4.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +183 -1
- package/dist/index.d.ts +183 -1
- package/dist/index.js +1119 -301
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1060 -264
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
package/dist/index.mjs
CHANGED
|
@@ -390,10 +390,11 @@ var Sidebar = ({
|
|
|
390
390
|
}) => {
|
|
391
391
|
const { theme } = useTheme();
|
|
392
392
|
const widthClass = widthClasses[width];
|
|
393
|
+
const borderClass = position === "left" ? "border-r" : "border-l";
|
|
393
394
|
return /* @__PURE__ */ jsx6(
|
|
394
395
|
"aside",
|
|
395
396
|
{
|
|
396
|
-
className: `${widthClass} bg-white dark:bg-gray-800
|
|
397
|
+
className: `${widthClass} bg-white dark:bg-gray-800 ${borderClass} border-gray-200 dark:border-gray-700 h-full overflow-y-auto ${className}`,
|
|
397
398
|
children
|
|
398
399
|
}
|
|
399
400
|
);
|
|
@@ -430,10 +431,357 @@ var useSidebar = () => {
|
|
|
430
431
|
return context;
|
|
431
432
|
};
|
|
432
433
|
|
|
434
|
+
// src/components/AppShell.tsx
|
|
435
|
+
import { useState as useState4 } from "react";
|
|
436
|
+
|
|
437
|
+
// src/icons/icon-utils.tsx
|
|
438
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
439
|
+
var sizeClasses2 = {
|
|
440
|
+
xs: "w-3 h-3",
|
|
441
|
+
sm: "w-4 h-4",
|
|
442
|
+
md: "w-5 h-5",
|
|
443
|
+
lg: "w-6 h-6",
|
|
444
|
+
xl: "w-8 h-8"
|
|
445
|
+
};
|
|
446
|
+
var createIcon = (displayName, path, filled = false) => {
|
|
447
|
+
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
448
|
+
const sizeClass = sizeClasses2[size];
|
|
449
|
+
return /* @__PURE__ */ jsx8(
|
|
450
|
+
"svg",
|
|
451
|
+
{
|
|
452
|
+
className: `${sizeClass} ${className}`,
|
|
453
|
+
fill: filled ? color : "none",
|
|
454
|
+
viewBox: "0 0 24 24",
|
|
455
|
+
stroke: filled ? "none" : color,
|
|
456
|
+
"aria-hidden": "true",
|
|
457
|
+
children: path
|
|
458
|
+
}
|
|
459
|
+
);
|
|
460
|
+
};
|
|
461
|
+
Icon.displayName = displayName;
|
|
462
|
+
return Icon;
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
// src/icons/HomeIcon.tsx
|
|
466
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
467
|
+
var HomeIcon = createIcon(
|
|
468
|
+
"HomeIcon",
|
|
469
|
+
/* @__PURE__ */ jsx9("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" })
|
|
470
|
+
);
|
|
471
|
+
|
|
472
|
+
// src/icons/UserIcon.tsx
|
|
473
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
474
|
+
var UserIcon = createIcon(
|
|
475
|
+
"UserIcon",
|
|
476
|
+
/* @__PURE__ */ jsx10("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" })
|
|
477
|
+
);
|
|
478
|
+
|
|
479
|
+
// src/icons/SearchIcon.tsx
|
|
480
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
481
|
+
var SearchIcon = createIcon(
|
|
482
|
+
"SearchIcon",
|
|
483
|
+
/* @__PURE__ */ jsx11("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
484
|
+
);
|
|
485
|
+
|
|
486
|
+
// src/icons/BellIcon.tsx
|
|
487
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
488
|
+
var BellIcon = createIcon(
|
|
489
|
+
"BellIcon",
|
|
490
|
+
/* @__PURE__ */ jsx12("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" })
|
|
491
|
+
);
|
|
492
|
+
|
|
493
|
+
// src/icons/SettingsIcon.tsx
|
|
494
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
495
|
+
var SettingsIcon = createIcon(
|
|
496
|
+
"SettingsIcon",
|
|
497
|
+
/* @__PURE__ */ jsxs5(Fragment2, { children: [
|
|
498
|
+
/* @__PURE__ */ jsx13("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
|
|
499
|
+
/* @__PURE__ */ jsx13("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
500
|
+
] })
|
|
501
|
+
);
|
|
502
|
+
|
|
503
|
+
// src/icons/MenuIcon.tsx
|
|
504
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
505
|
+
var MenuIcon = createIcon(
|
|
506
|
+
"MenuIcon",
|
|
507
|
+
/* @__PURE__ */ jsx14("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
508
|
+
);
|
|
509
|
+
|
|
510
|
+
// src/icons/CloseIcon.tsx
|
|
511
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
512
|
+
var CloseIcon = createIcon(
|
|
513
|
+
"CloseIcon",
|
|
514
|
+
/* @__PURE__ */ jsx15("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
515
|
+
);
|
|
516
|
+
|
|
517
|
+
// src/icons/ChevronDownIcon.tsx
|
|
518
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
519
|
+
var ChevronDownIcon = createIcon(
|
|
520
|
+
"ChevronDownIcon",
|
|
521
|
+
/* @__PURE__ */ jsx16("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
522
|
+
);
|
|
523
|
+
|
|
524
|
+
// src/icons/ChevronRightIcon.tsx
|
|
525
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
526
|
+
var ChevronRightIcon = createIcon(
|
|
527
|
+
"ChevronRightIcon",
|
|
528
|
+
/* @__PURE__ */ jsx17("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
529
|
+
);
|
|
530
|
+
|
|
531
|
+
// src/icons/CheckIcon.tsx
|
|
532
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
533
|
+
var CheckIcon = createIcon(
|
|
534
|
+
"CheckIcon",
|
|
535
|
+
/* @__PURE__ */ jsx18("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
536
|
+
);
|
|
537
|
+
|
|
538
|
+
// src/icons/PlusIcon.tsx
|
|
539
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
540
|
+
var PlusIcon = createIcon(
|
|
541
|
+
"PlusIcon",
|
|
542
|
+
/* @__PURE__ */ jsx19("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
543
|
+
);
|
|
544
|
+
|
|
545
|
+
// src/icons/TrashIcon.tsx
|
|
546
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
547
|
+
var TrashIcon = createIcon(
|
|
548
|
+
"TrashIcon",
|
|
549
|
+
/* @__PURE__ */ jsx20("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })
|
|
550
|
+
);
|
|
551
|
+
|
|
552
|
+
// src/icons/EditIcon.tsx
|
|
553
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
554
|
+
var EditIcon = createIcon(
|
|
555
|
+
"EditIcon",
|
|
556
|
+
/* @__PURE__ */ jsx21("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })
|
|
557
|
+
);
|
|
558
|
+
|
|
559
|
+
// src/icons/MailIcon.tsx
|
|
560
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
561
|
+
var MailIcon = createIcon(
|
|
562
|
+
"MailIcon",
|
|
563
|
+
/* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
564
|
+
);
|
|
565
|
+
|
|
566
|
+
// src/icons/StarIcon.tsx
|
|
567
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
568
|
+
var StarIcon = createIcon(
|
|
569
|
+
"StarIcon",
|
|
570
|
+
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" })
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
// src/icons/HeartIcon.tsx
|
|
574
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
575
|
+
var HeartIcon = createIcon(
|
|
576
|
+
"HeartIcon",
|
|
577
|
+
/* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" })
|
|
578
|
+
);
|
|
579
|
+
|
|
580
|
+
// src/icons/DownloadIcon.tsx
|
|
581
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
582
|
+
var DownloadIcon = createIcon(
|
|
583
|
+
"DownloadIcon",
|
|
584
|
+
/* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" })
|
|
585
|
+
);
|
|
586
|
+
|
|
587
|
+
// src/icons/UploadIcon.tsx
|
|
588
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
589
|
+
var UploadIcon = createIcon(
|
|
590
|
+
"UploadIcon",
|
|
591
|
+
/* @__PURE__ */ jsx26("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })
|
|
592
|
+
);
|
|
593
|
+
|
|
594
|
+
// src/icons/CameraIcon.tsx
|
|
595
|
+
import { Fragment as Fragment3, jsx as jsx27, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
596
|
+
var CameraIcon = createIcon(
|
|
597
|
+
"CameraIcon",
|
|
598
|
+
/* @__PURE__ */ jsxs6(Fragment3, { children: [
|
|
599
|
+
/* @__PURE__ */ jsx27("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
600
|
+
/* @__PURE__ */ jsx27("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
601
|
+
] })
|
|
602
|
+
);
|
|
603
|
+
|
|
604
|
+
// src/icons/LockIcon.tsx
|
|
605
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
606
|
+
var LockIcon = createIcon(
|
|
607
|
+
"LockIcon",
|
|
608
|
+
/* @__PURE__ */ jsx28("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" })
|
|
609
|
+
);
|
|
610
|
+
|
|
611
|
+
// src/icons/CalendarIcon.tsx
|
|
612
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
613
|
+
var CalendarIcon = createIcon(
|
|
614
|
+
"CalendarIcon",
|
|
615
|
+
/* @__PURE__ */ jsx29("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })
|
|
616
|
+
);
|
|
617
|
+
|
|
618
|
+
// src/icons/GoogleIcon.tsx
|
|
619
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
620
|
+
var GoogleIcon = createIcon(
|
|
621
|
+
"GoogleIcon",
|
|
622
|
+
/* @__PURE__ */ jsx30("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" }),
|
|
623
|
+
true
|
|
624
|
+
);
|
|
625
|
+
|
|
626
|
+
// src/icons/GitHubIcon.tsx
|
|
627
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
628
|
+
var GitHubIcon = createIcon(
|
|
629
|
+
"GitHubIcon",
|
|
630
|
+
/* @__PURE__ */ jsx31("path", { d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }),
|
|
631
|
+
true
|
|
632
|
+
);
|
|
633
|
+
|
|
634
|
+
// src/icons/TwitterIcon.tsx
|
|
635
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
636
|
+
var TwitterIcon = createIcon(
|
|
637
|
+
"TwitterIcon",
|
|
638
|
+
/* @__PURE__ */ jsx32("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
|
|
639
|
+
true
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
// src/icons/FacebookIcon.tsx
|
|
643
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
644
|
+
var FacebookIcon = createIcon(
|
|
645
|
+
"FacebookIcon",
|
|
646
|
+
/* @__PURE__ */ jsx33("path", { d: "M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" }),
|
|
647
|
+
true
|
|
648
|
+
);
|
|
649
|
+
|
|
650
|
+
// src/icons/AppleIcon.tsx
|
|
651
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
652
|
+
var AppleIcon = createIcon(
|
|
653
|
+
"AppleIcon",
|
|
654
|
+
/* @__PURE__ */ jsx34("path", { d: "M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }),
|
|
655
|
+
true
|
|
656
|
+
);
|
|
657
|
+
|
|
658
|
+
// src/icons/LinkedInIcon.tsx
|
|
659
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
660
|
+
var LinkedInIcon = createIcon(
|
|
661
|
+
"LinkedInIcon",
|
|
662
|
+
/* @__PURE__ */ jsx35("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }),
|
|
663
|
+
true
|
|
664
|
+
);
|
|
665
|
+
|
|
666
|
+
// src/icons/YouTubeIcon.tsx
|
|
667
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
668
|
+
var YouTubeIcon = createIcon(
|
|
669
|
+
"YouTubeIcon",
|
|
670
|
+
/* @__PURE__ */ jsx36("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }),
|
|
671
|
+
true
|
|
672
|
+
);
|
|
673
|
+
|
|
674
|
+
// src/icons/SlackIcon.tsx
|
|
675
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
676
|
+
var SlackIcon = createIcon(
|
|
677
|
+
"SlackIcon",
|
|
678
|
+
/* @__PURE__ */ jsx37("path", { d: "M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" }),
|
|
679
|
+
true
|
|
680
|
+
);
|
|
681
|
+
|
|
682
|
+
// src/components/AppShell.tsx
|
|
683
|
+
import { Fragment as Fragment4, jsx as jsx38, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
684
|
+
var widthClasses2 = {
|
|
685
|
+
sm: "w-48",
|
|
686
|
+
md: "w-64",
|
|
687
|
+
lg: "w-80"
|
|
688
|
+
};
|
|
689
|
+
var breakpointClasses = {
|
|
690
|
+
sm: "sm",
|
|
691
|
+
md: "md",
|
|
692
|
+
lg: "lg",
|
|
693
|
+
xl: "xl"
|
|
694
|
+
};
|
|
695
|
+
var AppShell = ({
|
|
696
|
+
children,
|
|
697
|
+
navbar,
|
|
698
|
+
header,
|
|
699
|
+
navbarTitle,
|
|
700
|
+
navbarLogo,
|
|
701
|
+
defaultNavbarOpen = false,
|
|
702
|
+
responsive = true,
|
|
703
|
+
className = ""
|
|
704
|
+
}) => {
|
|
705
|
+
const { theme } = useTheme();
|
|
706
|
+
const [isMobileNavbarOpen, setIsMobileNavbarOpen] = useState4(defaultNavbarOpen);
|
|
707
|
+
const navbarWidth = navbar?.width || "md";
|
|
708
|
+
const navbarBreakpoint = navbar?.breakpoint || "md";
|
|
709
|
+
const widthClass = widthClasses2[navbarWidth];
|
|
710
|
+
const breakpoint = breakpointClasses[navbarBreakpoint];
|
|
711
|
+
if (!responsive && navbar) {
|
|
712
|
+
return /* @__PURE__ */ jsxs7("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
713
|
+
header && /* @__PURE__ */ jsx38("div", { className: "w-full", children: header }),
|
|
714
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex flex-1", children: [
|
|
715
|
+
/* @__PURE__ */ jsx38("aside", { className: `${widthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 h-full overflow-y-auto`, children: navbar.content }),
|
|
716
|
+
/* @__PURE__ */ jsx38("main", { className: "flex-1 overflow-y-auto", children })
|
|
717
|
+
] })
|
|
718
|
+
] });
|
|
719
|
+
}
|
|
720
|
+
if (!responsive) {
|
|
721
|
+
return /* @__PURE__ */ jsxs7("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
722
|
+
header && /* @__PURE__ */ jsx38("div", { className: "w-full", children: header }),
|
|
723
|
+
/* @__PURE__ */ jsx38("main", { className: "flex-1 overflow-y-auto", children })
|
|
724
|
+
] });
|
|
725
|
+
}
|
|
726
|
+
if (navbar) {
|
|
727
|
+
const mobileHeaderClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
728
|
+
const desktopNavbarClass = navbarBreakpoint === "sm" ? "sm:block" : navbarBreakpoint === "md" ? "md:block" : navbarBreakpoint === "lg" ? "lg:block" : "xl:block";
|
|
729
|
+
const mobileDrawerClass = navbarBreakpoint === "sm" ? "sm:hidden" : navbarBreakpoint === "md" ? "md:hidden" : navbarBreakpoint === "lg" ? "lg:hidden" : "xl:hidden";
|
|
730
|
+
const sidebarWidthClass = navbarWidth === "sm" ? "w-48" : navbarWidth === "lg" ? "w-80" : "w-64";
|
|
731
|
+
return /* @__PURE__ */ jsxs7("div", { className: `min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 ${className}`, children: [
|
|
732
|
+
/* @__PURE__ */ jsxs7("div", { className: `${mobileHeaderClass} sticky top-0 z-30 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 px-4 py-3 flex items-center justify-between`, children: [
|
|
733
|
+
navbarLogo ? /* @__PURE__ */ jsx38("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx38("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
734
|
+
/* @__PURE__ */ jsx38(
|
|
735
|
+
"button",
|
|
736
|
+
{
|
|
737
|
+
className: "p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
738
|
+
onClick: () => setIsMobileNavbarOpen(!isMobileNavbarOpen),
|
|
739
|
+
"aria-label": "Toggle menu",
|
|
740
|
+
children: /* @__PURE__ */ jsx38(MenuIcon, { size: "md" })
|
|
741
|
+
}
|
|
742
|
+
)
|
|
743
|
+
] }),
|
|
744
|
+
header && /* @__PURE__ */ jsx38("div", { className: "w-full", children: header }),
|
|
745
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex flex-1 min-h-0", children: [
|
|
746
|
+
/* @__PURE__ */ jsx38("aside", { className: `hidden ${desktopNavbarClass} ${sidebarWidthClass} bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 overflow-y-auto shrink-0`, children: navbar.content }),
|
|
747
|
+
isMobileNavbarOpen && /* @__PURE__ */ jsxs7(Fragment4, { children: [
|
|
748
|
+
/* @__PURE__ */ jsx38(
|
|
749
|
+
"div",
|
|
750
|
+
{
|
|
751
|
+
className: `${mobileDrawerClass} fixed inset-0 z-40 bg-black/60 backdrop-blur-sm animate-in fade-in duration-200`,
|
|
752
|
+
onClick: () => setIsMobileNavbarOpen(false)
|
|
753
|
+
}
|
|
754
|
+
),
|
|
755
|
+
/* @__PURE__ */ jsxs7("div", { className: `${mobileDrawerClass} fixed left-0 top-0 bottom-0 z-50 w-64 bg-white dark:bg-gray-800 shadow-2xl animate-in slide-in-from-left duration-300`, children: [
|
|
756
|
+
/* @__PURE__ */ jsxs7("div", { className: "p-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between", children: [
|
|
757
|
+
navbarLogo ? /* @__PURE__ */ jsx38("div", { children: navbarLogo }) : navbarTitle ? /* @__PURE__ */ jsx38("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: navbarTitle }) : null,
|
|
758
|
+
/* @__PURE__ */ jsx38(
|
|
759
|
+
"button",
|
|
760
|
+
{
|
|
761
|
+
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
762
|
+
onClick: () => setIsMobileNavbarOpen(false),
|
|
763
|
+
"aria-label": "Close menu",
|
|
764
|
+
children: /* @__PURE__ */ jsx38("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx38("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
765
|
+
}
|
|
766
|
+
)
|
|
767
|
+
] }),
|
|
768
|
+
/* @__PURE__ */ jsx38("div", { className: "overflow-y-auto h-[calc(100vh-73px)]", children: navbar.content })
|
|
769
|
+
] })
|
|
770
|
+
] }),
|
|
771
|
+
/* @__PURE__ */ jsx38("main", { className: "flex-1 overflow-y-auto min-h-screen", children })
|
|
772
|
+
] })
|
|
773
|
+
] });
|
|
774
|
+
}
|
|
775
|
+
return /* @__PURE__ */ jsxs7("div", { className: `min-h-screen flex flex-col ${className}`, children: [
|
|
776
|
+
header && /* @__PURE__ */ jsx38("div", { className: "w-full", children: header }),
|
|
777
|
+
/* @__PURE__ */ jsx38("main", { className: "flex-1 overflow-y-auto", children })
|
|
778
|
+
] });
|
|
779
|
+
};
|
|
780
|
+
|
|
433
781
|
// src/components/Drawer.tsx
|
|
434
782
|
import { useEffect as useEffect4 } from "react";
|
|
435
|
-
import { Fragment as
|
|
436
|
-
var
|
|
783
|
+
import { Fragment as Fragment5, jsx as jsx39, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
784
|
+
var sizeClasses3 = {
|
|
437
785
|
left: {
|
|
438
786
|
sm: "w-64",
|
|
439
787
|
md: "w-80",
|
|
@@ -493,34 +841,34 @@ var Drawer = ({
|
|
|
493
841
|
};
|
|
494
842
|
}, [isOpen, onClose]);
|
|
495
843
|
if (!isOpen) return null;
|
|
496
|
-
const sizeClass =
|
|
844
|
+
const sizeClass = sizeClasses3[position][size];
|
|
497
845
|
const positionClass = positionClasses[position];
|
|
498
|
-
return /* @__PURE__ */
|
|
499
|
-
/* @__PURE__ */
|
|
846
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
847
|
+
/* @__PURE__ */ jsx39(
|
|
500
848
|
"div",
|
|
501
849
|
{
|
|
502
850
|
className: "fixed inset-0 z-40 bg-black/60 backdrop-blur-sm transition-all duration-200",
|
|
503
851
|
onClick: onClose
|
|
504
852
|
}
|
|
505
853
|
),
|
|
506
|
-
/* @__PURE__ */
|
|
854
|
+
/* @__PURE__ */ jsxs8(
|
|
507
855
|
"div",
|
|
508
856
|
{
|
|
509
857
|
className: `fixed z-50 ${positionClass} ${sizeClass} bg-white dark:bg-gray-800 shadow-2xl overflow-hidden flex flex-col ${slideClasses[position]}`,
|
|
510
858
|
children: [
|
|
511
|
-
(title || showCloseButton) && /* @__PURE__ */
|
|
512
|
-
title && /* @__PURE__ */
|
|
513
|
-
showCloseButton && /* @__PURE__ */
|
|
859
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700", children: [
|
|
860
|
+
title && /* @__PURE__ */ jsx39("h3", { className: "text-xl font-semibold text-gray-900 dark:text-gray-100", children: title }),
|
|
861
|
+
showCloseButton && /* @__PURE__ */ jsx39(
|
|
514
862
|
"button",
|
|
515
863
|
{
|
|
516
864
|
onClick: onClose,
|
|
517
865
|
className: "ml-auto text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors",
|
|
518
866
|
"aria-label": "Close drawer",
|
|
519
|
-
children: /* @__PURE__ */
|
|
867
|
+
children: /* @__PURE__ */ jsx39("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx39("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
520
868
|
}
|
|
521
869
|
)
|
|
522
870
|
] }),
|
|
523
|
-
/* @__PURE__ */
|
|
871
|
+
/* @__PURE__ */ jsx39("div", { className: "flex-1 p-6 overflow-y-auto", children })
|
|
524
872
|
]
|
|
525
873
|
}
|
|
526
874
|
)
|
|
@@ -529,8 +877,8 @@ var Drawer = ({
|
|
|
529
877
|
|
|
530
878
|
// src/components/TextInput.tsx
|
|
531
879
|
import { forwardRef } from "react";
|
|
532
|
-
import { jsx as
|
|
533
|
-
var
|
|
880
|
+
import { jsx as jsx40, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
881
|
+
var sizeClasses4 = {
|
|
534
882
|
sm: "px-3 py-1.5 text-sm",
|
|
535
883
|
md: "px-4 py-2.5 text-base",
|
|
536
884
|
lg: "px-4 py-3 text-lg"
|
|
@@ -550,16 +898,16 @@ var TextInput = forwardRef(
|
|
|
550
898
|
}, ref) => {
|
|
551
899
|
const { theme, themeName } = useTheme();
|
|
552
900
|
const baseStyles = theme.select?.base || "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
553
|
-
const sizeStyle =
|
|
901
|
+
const sizeStyle = sizeClasses4[size];
|
|
554
902
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
555
903
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
556
904
|
const widthStyle = fullWidth ? "w-full" : "";
|
|
557
905
|
const paddingWithIcon = leftIcon ? "pl-10" : rightIcon ? "pr-10" : "";
|
|
558
|
-
return /* @__PURE__ */
|
|
559
|
-
label && /* @__PURE__ */
|
|
560
|
-
/* @__PURE__ */
|
|
561
|
-
leftIcon && /* @__PURE__ */
|
|
562
|
-
/* @__PURE__ */
|
|
906
|
+
return /* @__PURE__ */ jsxs9("div", { className: `${widthStyle} ${className}`, children: [
|
|
907
|
+
label && /* @__PURE__ */ jsx40("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
908
|
+
/* @__PURE__ */ jsxs9("div", { className: "relative", children: [
|
|
909
|
+
leftIcon && /* @__PURE__ */ jsx40("div", { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: leftIcon }),
|
|
910
|
+
/* @__PURE__ */ jsx40(
|
|
563
911
|
"input",
|
|
564
912
|
{
|
|
565
913
|
ref,
|
|
@@ -568,25 +916,25 @@ var TextInput = forwardRef(
|
|
|
568
916
|
...props
|
|
569
917
|
}
|
|
570
918
|
),
|
|
571
|
-
rightIcon && /* @__PURE__ */
|
|
919
|
+
rightIcon && /* @__PURE__ */ jsx40("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-gray-500", children: rightIcon })
|
|
572
920
|
] }),
|
|
573
|
-
error && /* @__PURE__ */
|
|
574
|
-
helperText && !error && /* @__PURE__ */
|
|
921
|
+
error && /* @__PURE__ */ jsx40("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
922
|
+
helperText && !error && /* @__PURE__ */ jsx40("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
575
923
|
] });
|
|
576
924
|
}
|
|
577
925
|
);
|
|
578
926
|
TextInput.displayName = "TextInput";
|
|
579
927
|
|
|
580
928
|
// src/components/ActionMenu.tsx
|
|
581
|
-
import { useState as
|
|
582
|
-
import { jsx as
|
|
929
|
+
import { useState as useState5, useRef as useRef2, useEffect as useEffect5 } from "react";
|
|
930
|
+
import { jsx as jsx41, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
583
931
|
var ActionMenu = ({
|
|
584
932
|
items,
|
|
585
933
|
trigger,
|
|
586
934
|
position = "right"
|
|
587
935
|
}) => {
|
|
588
936
|
const { themeName } = useTheme();
|
|
589
|
-
const [isOpen, setIsOpen] =
|
|
937
|
+
const [isOpen, setIsOpen] = useState5(false);
|
|
590
938
|
const menuRef = useRef2(null);
|
|
591
939
|
useEffect5(() => {
|
|
592
940
|
const handleClickOutside = (event) => {
|
|
@@ -605,33 +953,33 @@ var ActionMenu = ({
|
|
|
605
953
|
setIsOpen(false);
|
|
606
954
|
}
|
|
607
955
|
};
|
|
608
|
-
const defaultTrigger = /* @__PURE__ */
|
|
956
|
+
const defaultTrigger = /* @__PURE__ */ jsx41(
|
|
609
957
|
"button",
|
|
610
958
|
{
|
|
611
959
|
className: "p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
612
960
|
"aria-label": "Open menu",
|
|
613
|
-
children: /* @__PURE__ */
|
|
961
|
+
children: /* @__PURE__ */ jsx41("svg", { className: "w-5 h-5 text-gray-600 dark:text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx41("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z" }) })
|
|
614
962
|
}
|
|
615
963
|
);
|
|
616
964
|
const menuBaseStyles = themeName === "minimalistic" ? "bg-black border-2 border-white" : "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg";
|
|
617
965
|
const itemBaseStyles = themeName === "minimalistic" ? "text-white hover:bg-white hover:text-black transition-colors duration-200" : "text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors";
|
|
618
966
|
const positionClass = position === "left" ? "left-0" : "right-0";
|
|
619
|
-
return /* @__PURE__ */
|
|
620
|
-
/* @__PURE__ */
|
|
621
|
-
isOpen && /* @__PURE__ */
|
|
967
|
+
return /* @__PURE__ */ jsxs10("div", { className: "relative inline-block", ref: menuRef, children: [
|
|
968
|
+
/* @__PURE__ */ jsx41("div", { onClick: () => setIsOpen(!isOpen), children: trigger || defaultTrigger }),
|
|
969
|
+
isOpen && /* @__PURE__ */ jsx41(
|
|
622
970
|
"div",
|
|
623
971
|
{
|
|
624
972
|
className: `absolute ${positionClass} mt-2 w-56 rounded-lg ${menuBaseStyles} z-50 overflow-hidden`,
|
|
625
973
|
style: { minWidth: "14rem" },
|
|
626
|
-
children: items.map((item, index) => /* @__PURE__ */
|
|
974
|
+
children: items.map((item, index) => /* @__PURE__ */ jsxs10(
|
|
627
975
|
"button",
|
|
628
976
|
{
|
|
629
977
|
onClick: () => handleItemClick(item),
|
|
630
978
|
disabled: item.disabled,
|
|
631
979
|
className: `w-full text-left px-4 py-3 flex items-center gap-3 ${itemBaseStyles} ${item.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${item.variant === "danger" ? "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20" : ""}`,
|
|
632
980
|
children: [
|
|
633
|
-
item.icon && /* @__PURE__ */
|
|
634
|
-
/* @__PURE__ */
|
|
981
|
+
item.icon && /* @__PURE__ */ jsx41("span", { className: "flex-shrink-0", children: item.icon }),
|
|
982
|
+
/* @__PURE__ */ jsx41("span", { className: "flex-1", children: item.label })
|
|
635
983
|
]
|
|
636
984
|
},
|
|
637
985
|
index
|
|
@@ -642,7 +990,7 @@ var ActionMenu = ({
|
|
|
642
990
|
};
|
|
643
991
|
|
|
644
992
|
// src/components/Card.tsx
|
|
645
|
-
import { jsx as
|
|
993
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
646
994
|
var paddingClasses = {
|
|
647
995
|
none: "",
|
|
648
996
|
sm: "p-4",
|
|
@@ -658,7 +1006,7 @@ var Card = ({
|
|
|
658
1006
|
const { theme } = useTheme();
|
|
659
1007
|
const paddingClass = paddingClasses[padding];
|
|
660
1008
|
const hoverClass = hover ? "hover:shadow-lg transition-shadow duration-200" : "";
|
|
661
|
-
return /* @__PURE__ */
|
|
1009
|
+
return /* @__PURE__ */ jsx42(
|
|
662
1010
|
"div",
|
|
663
1011
|
{
|
|
664
1012
|
className: `bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`,
|
|
@@ -668,7 +1016,7 @@ var Card = ({
|
|
|
668
1016
|
};
|
|
669
1017
|
|
|
670
1018
|
// src/components/Alert.tsx
|
|
671
|
-
import { jsx as
|
|
1019
|
+
import { jsx as jsx43, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
672
1020
|
var variantStyles = {
|
|
673
1021
|
info: "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100",
|
|
674
1022
|
success: "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-900 dark:text-green-100",
|
|
@@ -691,24 +1039,24 @@ var Alert = ({
|
|
|
691
1039
|
const { theme } = useTheme();
|
|
692
1040
|
const variantClass = variantStyles[variant];
|
|
693
1041
|
const iconClass = iconStyles[variant];
|
|
694
|
-
return /* @__PURE__ */
|
|
695
|
-
/* @__PURE__ */
|
|
696
|
-
variant === "info" && /* @__PURE__ */
|
|
697
|
-
variant === "success" && /* @__PURE__ */
|
|
698
|
-
variant === "warning" && /* @__PURE__ */
|
|
699
|
-
variant === "error" && /* @__PURE__ */
|
|
1042
|
+
return /* @__PURE__ */ jsx43("div", { className: `rounded-lg border p-4 ${variantClass} ${className}`, role: "alert", children: /* @__PURE__ */ jsxs11("div", { className: "flex items-start gap-3", children: [
|
|
1043
|
+
/* @__PURE__ */ jsxs11("div", { className: `flex-shrink-0 ${iconClass}`, children: [
|
|
1044
|
+
variant === "info" && /* @__PURE__ */ jsx43("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx43("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) }),
|
|
1045
|
+
variant === "success" && /* @__PURE__ */ jsx43("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx43("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" }) }),
|
|
1046
|
+
variant === "warning" && /* @__PURE__ */ jsx43("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx43("path", { fillRule: "evenodd", d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z", clipRule: "evenodd" }) }),
|
|
1047
|
+
variant === "error" && /* @__PURE__ */ jsx43("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx43("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }) })
|
|
700
1048
|
] }),
|
|
701
|
-
/* @__PURE__ */
|
|
702
|
-
title && /* @__PURE__ */
|
|
703
|
-
/* @__PURE__ */
|
|
1049
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex-1", children: [
|
|
1050
|
+
title && /* @__PURE__ */ jsx43("h3", { className: "font-semibold mb-1", children: title }),
|
|
1051
|
+
/* @__PURE__ */ jsx43("div", { className: "text-sm", children })
|
|
704
1052
|
] }),
|
|
705
|
-
onClose && /* @__PURE__ */
|
|
1053
|
+
onClose && /* @__PURE__ */ jsx43(
|
|
706
1054
|
"button",
|
|
707
1055
|
{
|
|
708
1056
|
onClick: onClose,
|
|
709
1057
|
className: `flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`,
|
|
710
1058
|
"aria-label": "Close alert",
|
|
711
|
-
children: /* @__PURE__ */
|
|
1059
|
+
children: /* @__PURE__ */ jsx43("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx43("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
712
1060
|
}
|
|
713
1061
|
)
|
|
714
1062
|
] }) });
|
|
@@ -716,13 +1064,13 @@ var Alert = ({
|
|
|
716
1064
|
|
|
717
1065
|
// src/components/Checkbox.tsx
|
|
718
1066
|
import { forwardRef as forwardRef2 } from "react";
|
|
719
|
-
import { jsx as
|
|
1067
|
+
import { jsx as jsx44, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
720
1068
|
var Checkbox = forwardRef2(
|
|
721
1069
|
({ label, error, className = "", disabled, ...props }, ref) => {
|
|
722
1070
|
const { theme } = useTheme();
|
|
723
|
-
return /* @__PURE__ */
|
|
724
|
-
/* @__PURE__ */
|
|
725
|
-
/* @__PURE__ */
|
|
1071
|
+
return /* @__PURE__ */ jsxs12("div", { className, children: [
|
|
1072
|
+
/* @__PURE__ */ jsxs12("label", { className: "flex items-center gap-2 cursor-pointer group", children: [
|
|
1073
|
+
/* @__PURE__ */ jsx44(
|
|
726
1074
|
"input",
|
|
727
1075
|
{
|
|
728
1076
|
ref,
|
|
@@ -732,9 +1080,9 @@ var Checkbox = forwardRef2(
|
|
|
732
1080
|
...props
|
|
733
1081
|
}
|
|
734
1082
|
),
|
|
735
|
-
label && /* @__PURE__ */
|
|
1083
|
+
label && /* @__PURE__ */ jsx44("span", { className: `text-sm text-gray-700 dark:text-gray-300 ${disabled ? "opacity-50 cursor-not-allowed" : "group-hover:text-gray-900 dark:group-hover:text-gray-100"}`, children: label })
|
|
736
1084
|
] }),
|
|
737
|
-
error && /* @__PURE__ */
|
|
1085
|
+
error && /* @__PURE__ */ jsx44("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error })
|
|
738
1086
|
] });
|
|
739
1087
|
}
|
|
740
1088
|
);
|
|
@@ -742,7 +1090,7 @@ Checkbox.displayName = "Checkbox";
|
|
|
742
1090
|
|
|
743
1091
|
// src/components/Toggle.tsx
|
|
744
1092
|
import { forwardRef as forwardRef3 } from "react";
|
|
745
|
-
import { jsx as
|
|
1093
|
+
import { jsx as jsx45, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
746
1094
|
var Toggle = forwardRef3(
|
|
747
1095
|
({ label, size = "md", className = "", disabled, checked, ...props }, ref) => {
|
|
748
1096
|
const { theme } = useTheme();
|
|
@@ -761,9 +1109,9 @@ var Toggle = forwardRef3(
|
|
|
761
1109
|
}
|
|
762
1110
|
};
|
|
763
1111
|
const currentSize = toggleClasses[size];
|
|
764
|
-
return /* @__PURE__ */
|
|
765
|
-
/* @__PURE__ */
|
|
766
|
-
/* @__PURE__ */
|
|
1112
|
+
return /* @__PURE__ */ jsxs13("label", { className: `inline-flex items-center gap-3 cursor-pointer ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`, children: [
|
|
1113
|
+
/* @__PURE__ */ jsxs13("div", { className: "relative", children: [
|
|
1114
|
+
/* @__PURE__ */ jsx45(
|
|
767
1115
|
"input",
|
|
768
1116
|
{
|
|
769
1117
|
ref,
|
|
@@ -774,27 +1122,27 @@ var Toggle = forwardRef3(
|
|
|
774
1122
|
...props
|
|
775
1123
|
}
|
|
776
1124
|
),
|
|
777
|
-
/* @__PURE__ */
|
|
1125
|
+
/* @__PURE__ */ jsx45(
|
|
778
1126
|
"div",
|
|
779
1127
|
{
|
|
780
1128
|
className: `${currentSize.switch} bg-gray-300 dark:bg-gray-700 peer-focus:ring-2 peer-focus:ring-blue-500 rounded-full peer peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500 transition-colors`
|
|
781
1129
|
}
|
|
782
1130
|
),
|
|
783
|
-
/* @__PURE__ */
|
|
1131
|
+
/* @__PURE__ */ jsx45(
|
|
784
1132
|
"div",
|
|
785
1133
|
{
|
|
786
1134
|
className: `${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`
|
|
787
1135
|
}
|
|
788
1136
|
)
|
|
789
1137
|
] }),
|
|
790
|
-
label && /* @__PURE__ */
|
|
1138
|
+
label && /* @__PURE__ */ jsx45("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label })
|
|
791
1139
|
] });
|
|
792
1140
|
}
|
|
793
1141
|
);
|
|
794
1142
|
Toggle.displayName = "Toggle";
|
|
795
1143
|
|
|
796
1144
|
// src/components/Badge.tsx
|
|
797
|
-
import { jsx as
|
|
1145
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
798
1146
|
var variantStyles2 = {
|
|
799
1147
|
default: "bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200",
|
|
800
1148
|
primary: "bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200",
|
|
@@ -817,12 +1165,12 @@ var Badge = ({
|
|
|
817
1165
|
const { theme } = useTheme();
|
|
818
1166
|
const variantClass = variantStyles2[variant];
|
|
819
1167
|
const sizeClass = sizeStyles[size];
|
|
820
|
-
return /* @__PURE__ */
|
|
1168
|
+
return /* @__PURE__ */ jsx46("span", { className: `inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`, children });
|
|
821
1169
|
};
|
|
822
1170
|
|
|
823
1171
|
// src/components/Spinner.tsx
|
|
824
|
-
import { jsx as
|
|
825
|
-
var
|
|
1172
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
1173
|
+
var sizeClasses5 = {
|
|
826
1174
|
sm: "w-4 h-4 border-2",
|
|
827
1175
|
md: "w-8 h-8 border-2",
|
|
828
1176
|
lg: "w-12 h-12 border-3",
|
|
@@ -839,22 +1187,22 @@ var Spinner = ({
|
|
|
839
1187
|
className = ""
|
|
840
1188
|
}) => {
|
|
841
1189
|
const { theme } = useTheme();
|
|
842
|
-
const sizeClass =
|
|
1190
|
+
const sizeClass = sizeClasses5[size];
|
|
843
1191
|
const colorClass = colorClasses[color];
|
|
844
|
-
return /* @__PURE__ */
|
|
1192
|
+
return /* @__PURE__ */ jsx47(
|
|
845
1193
|
"div",
|
|
846
1194
|
{
|
|
847
1195
|
className: `inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`,
|
|
848
1196
|
role: "status",
|
|
849
1197
|
"aria-label": "Loading",
|
|
850
|
-
children: /* @__PURE__ */
|
|
1198
|
+
children: /* @__PURE__ */ jsx47("span", { className: "sr-only", children: "Loading..." })
|
|
851
1199
|
}
|
|
852
1200
|
);
|
|
853
1201
|
};
|
|
854
1202
|
|
|
855
1203
|
// src/components/Tabs.tsx
|
|
856
|
-
import { useState as
|
|
857
|
-
import { jsx as
|
|
1204
|
+
import { useState as useState6 } from "react";
|
|
1205
|
+
import { jsx as jsx48, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
858
1206
|
var Tabs = ({
|
|
859
1207
|
tabs,
|
|
860
1208
|
defaultIndex = 0,
|
|
@@ -862,14 +1210,14 @@ var Tabs = ({
|
|
|
862
1210
|
className = ""
|
|
863
1211
|
}) => {
|
|
864
1212
|
const { theme } = useTheme();
|
|
865
|
-
const [activeIndex, setActiveIndex] =
|
|
1213
|
+
const [activeIndex, setActiveIndex] = useState6(defaultIndex);
|
|
866
1214
|
const handleTabClick = (index) => {
|
|
867
1215
|
if (tabs[index].disabled) return;
|
|
868
1216
|
setActiveIndex(index);
|
|
869
1217
|
onChange?.(index);
|
|
870
1218
|
};
|
|
871
|
-
return /* @__PURE__ */
|
|
872
|
-
/* @__PURE__ */
|
|
1219
|
+
return /* @__PURE__ */ jsxs14("div", { className, children: [
|
|
1220
|
+
/* @__PURE__ */ jsx48("div", { className: "border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx48("nav", { className: "flex gap-8 px-6", "aria-label": "Tabs", children: tabs.map((tab, index) => /* @__PURE__ */ jsx48(
|
|
873
1221
|
"button",
|
|
874
1222
|
{
|
|
875
1223
|
onClick: () => handleTabClick(index),
|
|
@@ -880,12 +1228,12 @@ var Tabs = ({
|
|
|
880
1228
|
},
|
|
881
1229
|
index
|
|
882
1230
|
)) }) }),
|
|
883
|
-
/* @__PURE__ */
|
|
1231
|
+
/* @__PURE__ */ jsx48("div", { children: tabs[activeIndex]?.content })
|
|
884
1232
|
] });
|
|
885
1233
|
};
|
|
886
1234
|
|
|
887
1235
|
// src/components/Table.tsx
|
|
888
|
-
import { jsx as
|
|
1236
|
+
import { jsx as jsx49, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
889
1237
|
function Table({
|
|
890
1238
|
columns,
|
|
891
1239
|
data,
|
|
@@ -895,9 +1243,9 @@ function Table({
|
|
|
895
1243
|
className = ""
|
|
896
1244
|
}) {
|
|
897
1245
|
const { theme } = useTheme();
|
|
898
|
-
return /* @__PURE__ */
|
|
899
|
-
/* @__PURE__ */
|
|
900
|
-
/* @__PURE__ */
|
|
1246
|
+
return /* @__PURE__ */ jsxs15("div", { className: `overflow-x-auto ${className}`, children: [
|
|
1247
|
+
/* @__PURE__ */ jsxs15("table", { className: "w-full text-left", children: [
|
|
1248
|
+
/* @__PURE__ */ jsx49("thead", { className: "bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx49("tr", { children: columns.map((column) => /* @__PURE__ */ jsx49(
|
|
901
1249
|
"th",
|
|
902
1250
|
{
|
|
903
1251
|
className: "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider",
|
|
@@ -906,14 +1254,14 @@ function Table({
|
|
|
906
1254
|
},
|
|
907
1255
|
column.key
|
|
908
1256
|
)) }) }),
|
|
909
|
-
/* @__PURE__ */
|
|
1257
|
+
/* @__PURE__ */ jsx49("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: data.map((row, rowIndex) => /* @__PURE__ */ jsx49(
|
|
910
1258
|
"tr",
|
|
911
1259
|
{
|
|
912
1260
|
className: `
|
|
913
1261
|
${striped && rowIndex % 2 === 1 ? "bg-gray-50 dark:bg-gray-800/50" : ""}
|
|
914
1262
|
${hoverable ? "hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors" : ""}
|
|
915
1263
|
`,
|
|
916
|
-
children: columns.map((column) => /* @__PURE__ */
|
|
1264
|
+
children: columns.map((column) => /* @__PURE__ */ jsx49(
|
|
917
1265
|
"td",
|
|
918
1266
|
{
|
|
919
1267
|
className: "px-6 py-4 text-sm text-gray-900 dark:text-gray-100",
|
|
@@ -925,12 +1273,12 @@ function Table({
|
|
|
925
1273
|
row[keyField] || rowIndex
|
|
926
1274
|
)) })
|
|
927
1275
|
] }),
|
|
928
|
-
data.length === 0 && /* @__PURE__ */
|
|
1276
|
+
data.length === 0 && /* @__PURE__ */ jsx49("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: "No data available" })
|
|
929
1277
|
] });
|
|
930
1278
|
}
|
|
931
1279
|
|
|
932
1280
|
// src/components/Pagination.tsx
|
|
933
|
-
import { jsx as
|
|
1281
|
+
import { jsx as jsx50, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
934
1282
|
var Pagination = ({
|
|
935
1283
|
currentPage,
|
|
936
1284
|
totalPages,
|
|
@@ -971,8 +1319,8 @@ var Pagination = ({
|
|
|
971
1319
|
return range(1, totalPages);
|
|
972
1320
|
};
|
|
973
1321
|
const pages = paginationRange();
|
|
974
|
-
return /* @__PURE__ */
|
|
975
|
-
/* @__PURE__ */
|
|
1322
|
+
return /* @__PURE__ */ jsxs16("nav", { className: `flex items-center gap-1 ${className}`, "aria-label": "Pagination", children: [
|
|
1323
|
+
/* @__PURE__ */ jsx50(
|
|
976
1324
|
"button",
|
|
977
1325
|
{
|
|
978
1326
|
onClick: () => onPageChange(currentPage - 1),
|
|
@@ -984,7 +1332,7 @@ var Pagination = ({
|
|
|
984
1332
|
),
|
|
985
1333
|
pages.map((page, index) => {
|
|
986
1334
|
if (page === "...") {
|
|
987
|
-
return /* @__PURE__ */
|
|
1335
|
+
return /* @__PURE__ */ jsx50(
|
|
988
1336
|
"span",
|
|
989
1337
|
{
|
|
990
1338
|
className: "px-3 py-2 text-gray-700 dark:text-gray-300",
|
|
@@ -993,7 +1341,7 @@ var Pagination = ({
|
|
|
993
1341
|
`dots-${index}`
|
|
994
1342
|
);
|
|
995
1343
|
}
|
|
996
|
-
return /* @__PURE__ */
|
|
1344
|
+
return /* @__PURE__ */ jsx50(
|
|
997
1345
|
"button",
|
|
998
1346
|
{
|
|
999
1347
|
onClick: () => onPageChange(page),
|
|
@@ -1005,7 +1353,7 @@ var Pagination = ({
|
|
|
1005
1353
|
page
|
|
1006
1354
|
);
|
|
1007
1355
|
}),
|
|
1008
|
-
/* @__PURE__ */
|
|
1356
|
+
/* @__PURE__ */ jsx50(
|
|
1009
1357
|
"button",
|
|
1010
1358
|
{
|
|
1011
1359
|
onClick: () => onPageChange(currentPage + 1),
|
|
@@ -1020,16 +1368,16 @@ var Pagination = ({
|
|
|
1020
1368
|
|
|
1021
1369
|
// src/components/DatePicker.tsx
|
|
1022
1370
|
import { forwardRef as forwardRef4 } from "react";
|
|
1023
|
-
import { jsx as
|
|
1371
|
+
import { jsx as jsx51, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1024
1372
|
var DatePicker = forwardRef4(
|
|
1025
1373
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1026
1374
|
const { theme } = useTheme();
|
|
1027
1375
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1028
1376
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1029
1377
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1030
|
-
return /* @__PURE__ */
|
|
1031
|
-
label && /* @__PURE__ */
|
|
1032
|
-
/* @__PURE__ */
|
|
1378
|
+
return /* @__PURE__ */ jsxs17("div", { className, children: [
|
|
1379
|
+
label && /* @__PURE__ */ jsx51("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1380
|
+
/* @__PURE__ */ jsx51(
|
|
1033
1381
|
"input",
|
|
1034
1382
|
{
|
|
1035
1383
|
ref,
|
|
@@ -1039,8 +1387,8 @@ var DatePicker = forwardRef4(
|
|
|
1039
1387
|
...props
|
|
1040
1388
|
}
|
|
1041
1389
|
),
|
|
1042
|
-
error && /* @__PURE__ */
|
|
1043
|
-
helperText && !error && /* @__PURE__ */
|
|
1390
|
+
error && /* @__PURE__ */ jsx51("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1391
|
+
helperText && !error && /* @__PURE__ */ jsx51("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1044
1392
|
] });
|
|
1045
1393
|
}
|
|
1046
1394
|
);
|
|
@@ -1048,16 +1396,16 @@ DatePicker.displayName = "DatePicker";
|
|
|
1048
1396
|
|
|
1049
1397
|
// src/components/TimePicker.tsx
|
|
1050
1398
|
import { forwardRef as forwardRef5 } from "react";
|
|
1051
|
-
import { jsx as
|
|
1399
|
+
import { jsx as jsx52, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1052
1400
|
var TimePicker = forwardRef5(
|
|
1053
1401
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1054
1402
|
const { theme } = useTheme();
|
|
1055
1403
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1056
1404
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1057
1405
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1058
|
-
return /* @__PURE__ */
|
|
1059
|
-
label && /* @__PURE__ */
|
|
1060
|
-
/* @__PURE__ */
|
|
1406
|
+
return /* @__PURE__ */ jsxs18("div", { className, children: [
|
|
1407
|
+
label && /* @__PURE__ */ jsx52("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1408
|
+
/* @__PURE__ */ jsx52(
|
|
1061
1409
|
"input",
|
|
1062
1410
|
{
|
|
1063
1411
|
ref,
|
|
@@ -1067,8 +1415,8 @@ var TimePicker = forwardRef5(
|
|
|
1067
1415
|
...props
|
|
1068
1416
|
}
|
|
1069
1417
|
),
|
|
1070
|
-
error && /* @__PURE__ */
|
|
1071
|
-
helperText && !error && /* @__PURE__ */
|
|
1418
|
+
error && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1419
|
+
helperText && !error && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1072
1420
|
] });
|
|
1073
1421
|
}
|
|
1074
1422
|
);
|
|
@@ -1076,16 +1424,16 @@ TimePicker.displayName = "TimePicker";
|
|
|
1076
1424
|
|
|
1077
1425
|
// src/components/DateTimePicker.tsx
|
|
1078
1426
|
import { forwardRef as forwardRef6 } from "react";
|
|
1079
|
-
import { jsx as
|
|
1427
|
+
import { jsx as jsx53, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1080
1428
|
var DateTimePicker = forwardRef6(
|
|
1081
1429
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1082
1430
|
const { theme } = useTheme();
|
|
1083
1431
|
const baseStyles = "w-full appearance-none rounded-lg border border-gray-300 bg-white text-gray-900 px-4 py-2.5 text-base transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent shadow-sm hover:border-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-100 dark:hover:border-gray-500";
|
|
1084
1432
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1085
1433
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1086
|
-
return /* @__PURE__ */
|
|
1087
|
-
label && /* @__PURE__ */
|
|
1088
|
-
/* @__PURE__ */
|
|
1434
|
+
return /* @__PURE__ */ jsxs19("div", { className, children: [
|
|
1435
|
+
label && /* @__PURE__ */ jsx53("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1436
|
+
/* @__PURE__ */ jsx53(
|
|
1089
1437
|
"input",
|
|
1090
1438
|
{
|
|
1091
1439
|
ref,
|
|
@@ -1095,13 +1443,607 @@ var DateTimePicker = forwardRef6(
|
|
|
1095
1443
|
...props
|
|
1096
1444
|
}
|
|
1097
1445
|
),
|
|
1098
|
-
error && /* @__PURE__ */
|
|
1099
|
-
helperText && !error && /* @__PURE__ */
|
|
1446
|
+
error && /* @__PURE__ */ jsx53("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1447
|
+
helperText && !error && /* @__PURE__ */ jsx53("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1100
1448
|
] });
|
|
1101
1449
|
}
|
|
1102
1450
|
);
|
|
1103
1451
|
DateTimePicker.displayName = "DateTimePicker";
|
|
1104
1452
|
|
|
1453
|
+
// src/components/Radio.tsx
|
|
1454
|
+
import React15 from "react";
|
|
1455
|
+
import { jsx as jsx54, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1456
|
+
var Radio = ({
|
|
1457
|
+
name,
|
|
1458
|
+
options,
|
|
1459
|
+
value: controlledValue,
|
|
1460
|
+
defaultValue,
|
|
1461
|
+
onChange,
|
|
1462
|
+
disabled = false,
|
|
1463
|
+
orientation = "vertical",
|
|
1464
|
+
className = ""
|
|
1465
|
+
}) => {
|
|
1466
|
+
const [internalValue, setInternalValue] = React15.useState(defaultValue || "");
|
|
1467
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1468
|
+
const handleChange = (optionValue) => {
|
|
1469
|
+
if (disabled) return;
|
|
1470
|
+
setInternalValue(optionValue);
|
|
1471
|
+
onChange?.(optionValue);
|
|
1472
|
+
};
|
|
1473
|
+
const containerClass = orientation === "horizontal" ? "flex flex-wrap gap-4" : "flex flex-col gap-2";
|
|
1474
|
+
return /* @__PURE__ */ jsx54("div", { className: `${containerClass} ${className}`, role: "radiogroup", children: options.map((option) => {
|
|
1475
|
+
const isDisabled = disabled || option.disabled;
|
|
1476
|
+
const isChecked = value === option.value;
|
|
1477
|
+
const id = `${name}-${option.value}`;
|
|
1478
|
+
return /* @__PURE__ */ jsxs20(
|
|
1479
|
+
"label",
|
|
1480
|
+
{
|
|
1481
|
+
htmlFor: id,
|
|
1482
|
+
className: `flex items-center gap-2 cursor-pointer ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1483
|
+
children: [
|
|
1484
|
+
/* @__PURE__ */ jsx54(
|
|
1485
|
+
"input",
|
|
1486
|
+
{
|
|
1487
|
+
type: "radio",
|
|
1488
|
+
id,
|
|
1489
|
+
name,
|
|
1490
|
+
value: option.value,
|
|
1491
|
+
checked: isChecked,
|
|
1492
|
+
onChange: () => handleChange(option.value),
|
|
1493
|
+
disabled: isDisabled,
|
|
1494
|
+
className: "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 cursor-pointer disabled:cursor-not-allowed"
|
|
1495
|
+
}
|
|
1496
|
+
),
|
|
1497
|
+
/* @__PURE__ */ jsx54("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-300", children: option.label })
|
|
1498
|
+
]
|
|
1499
|
+
},
|
|
1500
|
+
option.value
|
|
1501
|
+
);
|
|
1502
|
+
}) });
|
|
1503
|
+
};
|
|
1504
|
+
|
|
1505
|
+
// src/components/ProgressBar.tsx
|
|
1506
|
+
import { jsx as jsx55, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1507
|
+
var ProgressBar = ({
|
|
1508
|
+
value,
|
|
1509
|
+
max = 100,
|
|
1510
|
+
size = "md",
|
|
1511
|
+
variant = "default",
|
|
1512
|
+
showLabel = false,
|
|
1513
|
+
label,
|
|
1514
|
+
className = ""
|
|
1515
|
+
}) => {
|
|
1516
|
+
const percentage = Math.min(Math.max(value / max * 100, 0), 100);
|
|
1517
|
+
const sizeClasses6 = {
|
|
1518
|
+
sm: "h-1",
|
|
1519
|
+
md: "h-2",
|
|
1520
|
+
lg: "h-3"
|
|
1521
|
+
};
|
|
1522
|
+
const variantClasses = {
|
|
1523
|
+
default: "bg-blue-600 dark:bg-blue-500",
|
|
1524
|
+
success: "bg-green-600 dark:bg-green-500",
|
|
1525
|
+
warning: "bg-yellow-500 dark:bg-yellow-400",
|
|
1526
|
+
danger: "bg-red-600 dark:bg-red-500"
|
|
1527
|
+
};
|
|
1528
|
+
return /* @__PURE__ */ jsxs21("div", { className: `w-full ${className}`, children: [
|
|
1529
|
+
(showLabel || label) && /* @__PURE__ */ jsxs21("div", { className: "flex justify-between items-center mb-1", children: [
|
|
1530
|
+
label && /* @__PURE__ */ jsx55("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1531
|
+
showLabel && /* @__PURE__ */ jsxs21("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
1532
|
+
Math.round(percentage),
|
|
1533
|
+
"%"
|
|
1534
|
+
] })
|
|
1535
|
+
] }),
|
|
1536
|
+
/* @__PURE__ */ jsx55(
|
|
1537
|
+
"div",
|
|
1538
|
+
{
|
|
1539
|
+
className: `w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses6[size]}`,
|
|
1540
|
+
role: "progressbar",
|
|
1541
|
+
"aria-valuenow": value,
|
|
1542
|
+
"aria-valuemin": 0,
|
|
1543
|
+
"aria-valuemax": max,
|
|
1544
|
+
children: /* @__PURE__ */ jsx55(
|
|
1545
|
+
"div",
|
|
1546
|
+
{
|
|
1547
|
+
className: `${sizeClasses6[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`,
|
|
1548
|
+
style: { width: `${percentage}%` }
|
|
1549
|
+
}
|
|
1550
|
+
)
|
|
1551
|
+
}
|
|
1552
|
+
)
|
|
1553
|
+
] });
|
|
1554
|
+
};
|
|
1555
|
+
|
|
1556
|
+
// src/components/Slider.tsx
|
|
1557
|
+
import React16 from "react";
|
|
1558
|
+
import { jsx as jsx56, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1559
|
+
var Slider = ({
|
|
1560
|
+
value: controlledValue,
|
|
1561
|
+
defaultValue = 50,
|
|
1562
|
+
min = 0,
|
|
1563
|
+
max = 100,
|
|
1564
|
+
step = 1,
|
|
1565
|
+
onChange,
|
|
1566
|
+
disabled = false,
|
|
1567
|
+
showValue = false,
|
|
1568
|
+
label,
|
|
1569
|
+
className = ""
|
|
1570
|
+
}) => {
|
|
1571
|
+
const [internalValue, setInternalValue] = React16.useState(defaultValue);
|
|
1572
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1573
|
+
const handleChange = (e) => {
|
|
1574
|
+
const newValue = Number(e.target.value);
|
|
1575
|
+
setInternalValue(newValue);
|
|
1576
|
+
onChange?.(newValue);
|
|
1577
|
+
};
|
|
1578
|
+
const percentage = (value - min) / (max - min) * 100;
|
|
1579
|
+
return /* @__PURE__ */ jsxs22("div", { className: `w-full ${className}`, children: [
|
|
1580
|
+
(label || showValue) && /* @__PURE__ */ jsxs22("div", { className: "flex justify-between items-center mb-2", children: [
|
|
1581
|
+
label && /* @__PURE__ */ jsx56("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1582
|
+
showValue && /* @__PURE__ */ jsx56("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: value })
|
|
1583
|
+
] }),
|
|
1584
|
+
/* @__PURE__ */ jsxs22("div", { className: "relative", children: [
|
|
1585
|
+
/* @__PURE__ */ jsx56("div", { className: "absolute inset-0 h-2 bg-gray-200 dark:bg-gray-700 rounded-full top-1/2 -translate-y-1/2" }),
|
|
1586
|
+
/* @__PURE__ */ jsx56(
|
|
1587
|
+
"div",
|
|
1588
|
+
{
|
|
1589
|
+
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none",
|
|
1590
|
+
style: { width: `${percentage}%` }
|
|
1591
|
+
}
|
|
1592
|
+
),
|
|
1593
|
+
/* @__PURE__ */ jsx56(
|
|
1594
|
+
"input",
|
|
1595
|
+
{
|
|
1596
|
+
type: "range",
|
|
1597
|
+
min,
|
|
1598
|
+
max,
|
|
1599
|
+
step,
|
|
1600
|
+
value,
|
|
1601
|
+
onChange: handleChange,
|
|
1602
|
+
disabled,
|
|
1603
|
+
className: "relative w-full h-2 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-md\n [&::-webkit-slider-thumb]:hover:bg-blue-700 [&::-webkit-slider-thumb]:active:scale-110 [&::-webkit-slider-thumb]:transition-all\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-2\n [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:hover:bg-blue-700\n [&::-moz-range-thumb]:active:scale-110 [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:border-none",
|
|
1604
|
+
"aria-label": label,
|
|
1605
|
+
"aria-valuemin": min,
|
|
1606
|
+
"aria-valuemax": max,
|
|
1607
|
+
"aria-valuenow": value
|
|
1608
|
+
}
|
|
1609
|
+
)
|
|
1610
|
+
] })
|
|
1611
|
+
] });
|
|
1612
|
+
};
|
|
1613
|
+
|
|
1614
|
+
// src/components/Avatar.tsx
|
|
1615
|
+
import React17 from "react";
|
|
1616
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1617
|
+
var Avatar = ({
|
|
1618
|
+
src,
|
|
1619
|
+
alt,
|
|
1620
|
+
name,
|
|
1621
|
+
size = "md",
|
|
1622
|
+
shape = "circle",
|
|
1623
|
+
className = "",
|
|
1624
|
+
fallbackColor = "bg-blue-600"
|
|
1625
|
+
}) => {
|
|
1626
|
+
const [imageError, setImageError] = React17.useState(false);
|
|
1627
|
+
const sizeClasses6 = {
|
|
1628
|
+
xs: "w-6 h-6 text-xs",
|
|
1629
|
+
sm: "w-8 h-8 text-sm",
|
|
1630
|
+
md: "w-10 h-10 text-base",
|
|
1631
|
+
lg: "w-12 h-12 text-lg",
|
|
1632
|
+
xl: "w-16 h-16 text-2xl"
|
|
1633
|
+
};
|
|
1634
|
+
const shapeClass = shape === "circle" ? "rounded-full" : "rounded-md";
|
|
1635
|
+
const getInitials = (name2) => {
|
|
1636
|
+
const parts = name2.trim().split(" ");
|
|
1637
|
+
if (parts.length >= 2) {
|
|
1638
|
+
return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();
|
|
1639
|
+
}
|
|
1640
|
+
return name2.slice(0, 2).toUpperCase();
|
|
1641
|
+
};
|
|
1642
|
+
const showImage = src && !imageError;
|
|
1643
|
+
const showInitials = !showImage && name;
|
|
1644
|
+
return /* @__PURE__ */ jsx57(
|
|
1645
|
+
"div",
|
|
1646
|
+
{
|
|
1647
|
+
className: `${sizeClasses6[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-gray-200 dark:bg-gray-700" : `${fallbackColor} text-white`} ${className}`,
|
|
1648
|
+
children: showImage ? /* @__PURE__ */ jsx57(
|
|
1649
|
+
"img",
|
|
1650
|
+
{
|
|
1651
|
+
src,
|
|
1652
|
+
alt: alt || name || "Avatar",
|
|
1653
|
+
className: "w-full h-full object-cover",
|
|
1654
|
+
onError: () => setImageError(true)
|
|
1655
|
+
}
|
|
1656
|
+
) : showInitials ? /* @__PURE__ */ jsx57("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ jsx57(
|
|
1657
|
+
"svg",
|
|
1658
|
+
{
|
|
1659
|
+
className: "w-full h-full text-gray-400 dark:text-gray-600",
|
|
1660
|
+
fill: "currentColor",
|
|
1661
|
+
viewBox: "0 0 24 24",
|
|
1662
|
+
children: /* @__PURE__ */ jsx57("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })
|
|
1663
|
+
}
|
|
1664
|
+
)
|
|
1665
|
+
}
|
|
1666
|
+
);
|
|
1667
|
+
};
|
|
1668
|
+
|
|
1669
|
+
// src/components/Textarea.tsx
|
|
1670
|
+
import { jsx as jsx58, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1671
|
+
var Textarea = ({
|
|
1672
|
+
label,
|
|
1673
|
+
error,
|
|
1674
|
+
helperText,
|
|
1675
|
+
size = "md",
|
|
1676
|
+
resize = "vertical",
|
|
1677
|
+
className = "",
|
|
1678
|
+
disabled,
|
|
1679
|
+
...props
|
|
1680
|
+
}) => {
|
|
1681
|
+
const sizeClasses6 = {
|
|
1682
|
+
sm: "px-3 py-1.5 text-sm min-h-[80px]",
|
|
1683
|
+
md: "px-4 py-2 text-base min-h-[100px]",
|
|
1684
|
+
lg: "px-4 py-3 text-lg min-h-[120px]"
|
|
1685
|
+
};
|
|
1686
|
+
const resizeClasses = {
|
|
1687
|
+
none: "resize-none",
|
|
1688
|
+
vertical: "resize-y",
|
|
1689
|
+
horizontal: "resize-x",
|
|
1690
|
+
both: "resize"
|
|
1691
|
+
};
|
|
1692
|
+
const baseClasses = `w-full rounded-lg border transition-colors duration-150 focus:outline-none focus:ring-2
|
|
1693
|
+
${error ? "border-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:focus:ring-blue-400"}
|
|
1694
|
+
bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100
|
|
1695
|
+
placeholder:text-gray-500 dark:placeholder:text-gray-400
|
|
1696
|
+
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;
|
|
1697
|
+
return /* @__PURE__ */ jsxs23("div", { className: `w-full ${className}`, children: [
|
|
1698
|
+
label && /* @__PURE__ */ jsx58("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1699
|
+
/* @__PURE__ */ jsx58(
|
|
1700
|
+
"textarea",
|
|
1701
|
+
{
|
|
1702
|
+
className: `${baseClasses} ${sizeClasses6[size]} ${resizeClasses[resize]}`,
|
|
1703
|
+
disabled,
|
|
1704
|
+
...props
|
|
1705
|
+
}
|
|
1706
|
+
),
|
|
1707
|
+
error && /* @__PURE__ */ jsx58("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1708
|
+
helperText && !error && /* @__PURE__ */ jsx58("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1709
|
+
] });
|
|
1710
|
+
};
|
|
1711
|
+
|
|
1712
|
+
// src/components/Toast.tsx
|
|
1713
|
+
import { createContext as createContext3, useContext as useContext3, useState as useState7, useCallback } from "react";
|
|
1714
|
+
import { jsx as jsx59, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1715
|
+
var ToastContext = createContext3(void 0);
|
|
1716
|
+
var useToast = () => {
|
|
1717
|
+
const context = useContext3(ToastContext);
|
|
1718
|
+
if (!context) {
|
|
1719
|
+
throw new Error("useToast must be used within a ToastProvider");
|
|
1720
|
+
}
|
|
1721
|
+
return context;
|
|
1722
|
+
};
|
|
1723
|
+
var ToastProvider = ({ children, position = "top-right" }) => {
|
|
1724
|
+
const [toasts, setToasts] = useState7([]);
|
|
1725
|
+
const addToast = useCallback((toast2) => {
|
|
1726
|
+
const id = Math.random().toString(36).substring(7);
|
|
1727
|
+
const newToast = { ...toast2, id };
|
|
1728
|
+
setToasts((prev) => [...prev, newToast]);
|
|
1729
|
+
const duration = toast2.duration || 5e3;
|
|
1730
|
+
setTimeout(() => {
|
|
1731
|
+
removeToast(id);
|
|
1732
|
+
}, duration);
|
|
1733
|
+
}, []);
|
|
1734
|
+
const removeToast = useCallback((id) => {
|
|
1735
|
+
setToasts((prev) => prev.filter((toast2) => toast2.id !== id));
|
|
1736
|
+
}, []);
|
|
1737
|
+
const positionClasses2 = {
|
|
1738
|
+
"top-right": "top-4 right-4",
|
|
1739
|
+
"top-left": "top-4 left-4",
|
|
1740
|
+
"bottom-right": "bottom-4 right-4",
|
|
1741
|
+
"bottom-left": "bottom-4 left-4",
|
|
1742
|
+
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1743
|
+
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1744
|
+
};
|
|
1745
|
+
return /* @__PURE__ */ jsxs24(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
1746
|
+
children,
|
|
1747
|
+
/* @__PURE__ */ jsx59("div", { className: `fixed ${positionClasses2[position]} z-50 flex flex-col gap-2 max-w-md`, children: toasts.map((toast2) => /* @__PURE__ */ jsx59(ToastItem, { toast: toast2, onClose: () => removeToast(toast2.id) }, toast2.id)) })
|
|
1748
|
+
] });
|
|
1749
|
+
};
|
|
1750
|
+
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
1751
|
+
const typeStyles = {
|
|
1752
|
+
success: "bg-green-50 dark:bg-green-900/30 border-green-500 text-green-800 dark:text-green-200",
|
|
1753
|
+
error: "bg-red-50 dark:bg-red-900/30 border-red-500 text-red-800 dark:text-red-200",
|
|
1754
|
+
warning: "bg-yellow-50 dark:bg-yellow-900/30 border-yellow-500 text-yellow-800 dark:text-yellow-200",
|
|
1755
|
+
info: "bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200"
|
|
1756
|
+
};
|
|
1757
|
+
const typeIcons = {
|
|
1758
|
+
success: /* @__PURE__ */ jsx59(CheckIcon, { size: "sm", className: "text-green-600 dark:text-green-400" }),
|
|
1759
|
+
error: /* @__PURE__ */ jsx59(CloseIcon, { size: "sm", className: "text-red-600 dark:text-red-400" }),
|
|
1760
|
+
warning: /* @__PURE__ */ jsx59("svg", { className: "w-4 h-4 text-yellow-600 dark:text-yellow-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx59("path", { fillRule: "evenodd", d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z", clipRule: "evenodd" }) }),
|
|
1761
|
+
info: /* @__PURE__ */ jsx59("svg", { className: "w-4 h-4 text-blue-600 dark:text-blue-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx59("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) })
|
|
1762
|
+
};
|
|
1763
|
+
const type = toast2.type || "info";
|
|
1764
|
+
return /* @__PURE__ */ jsxs24(
|
|
1765
|
+
"div",
|
|
1766
|
+
{
|
|
1767
|
+
className: `flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`,
|
|
1768
|
+
role: "alert",
|
|
1769
|
+
children: [
|
|
1770
|
+
/* @__PURE__ */ jsx59("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
1771
|
+
/* @__PURE__ */ jsx59("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
1772
|
+
/* @__PURE__ */ jsx59(
|
|
1773
|
+
"button",
|
|
1774
|
+
{
|
|
1775
|
+
onClick: onClose,
|
|
1776
|
+
className: "flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors",
|
|
1777
|
+
"aria-label": "Close",
|
|
1778
|
+
children: /* @__PURE__ */ jsx59(CloseIcon, { size: "sm" })
|
|
1779
|
+
}
|
|
1780
|
+
)
|
|
1781
|
+
]
|
|
1782
|
+
}
|
|
1783
|
+
);
|
|
1784
|
+
};
|
|
1785
|
+
var toast = {
|
|
1786
|
+
success: (message, duration) => ({
|
|
1787
|
+
message,
|
|
1788
|
+
type: "success",
|
|
1789
|
+
duration
|
|
1790
|
+
}),
|
|
1791
|
+
error: (message, duration) => ({
|
|
1792
|
+
message,
|
|
1793
|
+
type: "error",
|
|
1794
|
+
duration
|
|
1795
|
+
}),
|
|
1796
|
+
warning: (message, duration) => ({
|
|
1797
|
+
message,
|
|
1798
|
+
type: "warning",
|
|
1799
|
+
duration
|
|
1800
|
+
}),
|
|
1801
|
+
info: (message, duration) => ({
|
|
1802
|
+
message,
|
|
1803
|
+
type: "info",
|
|
1804
|
+
duration
|
|
1805
|
+
})
|
|
1806
|
+
};
|
|
1807
|
+
|
|
1808
|
+
// src/components/Stepper.tsx
|
|
1809
|
+
import React19 from "react";
|
|
1810
|
+
import { jsx as jsx60, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1811
|
+
var Stepper = ({
|
|
1812
|
+
steps,
|
|
1813
|
+
currentStep,
|
|
1814
|
+
orientation = "horizontal",
|
|
1815
|
+
className = ""
|
|
1816
|
+
}) => {
|
|
1817
|
+
const isHorizontal = orientation === "horizontal";
|
|
1818
|
+
return /* @__PURE__ */ jsx60("div", { className: `${isHorizontal ? "flex items-center" : "flex flex-col"} ${className}`, children: steps.map((step, index) => {
|
|
1819
|
+
const stepNumber = index + 1;
|
|
1820
|
+
const isActive = stepNumber === currentStep;
|
|
1821
|
+
const isCompleted = stepNumber < currentStep;
|
|
1822
|
+
const isLast = index === steps.length - 1;
|
|
1823
|
+
return /* @__PURE__ */ jsxs25(React19.Fragment, { children: [
|
|
1824
|
+
/* @__PURE__ */ jsxs25("div", { className: `flex ${isHorizontal ? "flex-col items-center" : "flex-row items-start"} ${isHorizontal ? "" : "flex-1"}`, children: [
|
|
1825
|
+
/* @__PURE__ */ jsx60("div", { className: "flex items-center", children: /* @__PURE__ */ jsx60(
|
|
1826
|
+
"div",
|
|
1827
|
+
{
|
|
1828
|
+
className: `flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${isCompleted ? "bg-blue-600 border-blue-600 dark:bg-blue-500 dark:border-blue-500" : isActive ? "border-blue-600 bg-white dark:border-blue-500 dark:bg-gray-800" : "border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800"}`,
|
|
1829
|
+
children: isCompleted ? /* @__PURE__ */ jsx60(CheckIcon, { size: "sm", className: "text-white" }) : /* @__PURE__ */ jsx60(
|
|
1830
|
+
"span",
|
|
1831
|
+
{
|
|
1832
|
+
className: `text-sm font-semibold ${isActive ? "text-blue-600 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`,
|
|
1833
|
+
children: stepNumber
|
|
1834
|
+
}
|
|
1835
|
+
)
|
|
1836
|
+
}
|
|
1837
|
+
) }),
|
|
1838
|
+
/* @__PURE__ */ jsxs25("div", { className: `${isHorizontal ? "mt-2 text-center" : "ml-4 pb-8"} ${isLast && !isHorizontal ? "pb-0" : ""}`, children: [
|
|
1839
|
+
/* @__PURE__ */ jsx60(
|
|
1840
|
+
"p",
|
|
1841
|
+
{
|
|
1842
|
+
className: `text-sm font-medium ${isActive || isCompleted ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"}`,
|
|
1843
|
+
children: step.label
|
|
1844
|
+
}
|
|
1845
|
+
),
|
|
1846
|
+
step.description && /* @__PURE__ */ jsx60("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: step.description })
|
|
1847
|
+
] })
|
|
1848
|
+
] }),
|
|
1849
|
+
!isLast && /* @__PURE__ */ jsx60(
|
|
1850
|
+
"div",
|
|
1851
|
+
{
|
|
1852
|
+
className: `${isHorizontal ? "flex-1 h-0.5 mx-4" : "w-0.5 h-full ml-5 -mt-8"} ${isCompleted || isActive && stepNumber < currentStep ? "bg-blue-600 dark:bg-blue-500" : "bg-gray-300 dark:bg-gray-600"}`
|
|
1853
|
+
}
|
|
1854
|
+
)
|
|
1855
|
+
] }, index);
|
|
1856
|
+
}) });
|
|
1857
|
+
};
|
|
1858
|
+
|
|
1859
|
+
// src/components/Divider.tsx
|
|
1860
|
+
import { jsx as jsx61, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1861
|
+
var Divider = ({
|
|
1862
|
+
orientation = "horizontal",
|
|
1863
|
+
variant = "solid",
|
|
1864
|
+
className = "",
|
|
1865
|
+
label,
|
|
1866
|
+
labelPosition = "center"
|
|
1867
|
+
}) => {
|
|
1868
|
+
const variantClasses = {
|
|
1869
|
+
solid: "border-solid",
|
|
1870
|
+
dashed: "border-dashed",
|
|
1871
|
+
dotted: "border-dotted"
|
|
1872
|
+
};
|
|
1873
|
+
if (label && orientation === "horizontal") {
|
|
1874
|
+
const alignmentClasses = {
|
|
1875
|
+
left: "justify-start",
|
|
1876
|
+
center: "justify-center",
|
|
1877
|
+
right: "justify-end"
|
|
1878
|
+
};
|
|
1879
|
+
return /* @__PURE__ */ jsxs26("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
1880
|
+
labelPosition !== "left" && /* @__PURE__ */ jsx61("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` }),
|
|
1881
|
+
/* @__PURE__ */ jsx61("span", { className: "px-4 text-sm text-gray-500 dark:text-gray-400", children: label }),
|
|
1882
|
+
labelPosition !== "right" && /* @__PURE__ */ jsx61("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` })
|
|
1883
|
+
] });
|
|
1884
|
+
}
|
|
1885
|
+
if (orientation === "vertical") {
|
|
1886
|
+
return /* @__PURE__ */ jsx61(
|
|
1887
|
+
"div",
|
|
1888
|
+
{
|
|
1889
|
+
className: `inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
1890
|
+
role: "separator",
|
|
1891
|
+
"aria-orientation": "vertical"
|
|
1892
|
+
}
|
|
1893
|
+
);
|
|
1894
|
+
}
|
|
1895
|
+
return /* @__PURE__ */ jsx61(
|
|
1896
|
+
"hr",
|
|
1897
|
+
{
|
|
1898
|
+
className: `border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
1899
|
+
role: "separator"
|
|
1900
|
+
}
|
|
1901
|
+
);
|
|
1902
|
+
};
|
|
1903
|
+
|
|
1904
|
+
// src/components/FileUpload.tsx
|
|
1905
|
+
import { useRef as useRef3, useState as useState8 } from "react";
|
|
1906
|
+
import { jsx as jsx62, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1907
|
+
var FileUpload = ({
|
|
1908
|
+
accept,
|
|
1909
|
+
multiple = false,
|
|
1910
|
+
maxSize,
|
|
1911
|
+
maxFiles = 10,
|
|
1912
|
+
disabled = false,
|
|
1913
|
+
onChange,
|
|
1914
|
+
onError,
|
|
1915
|
+
className = "",
|
|
1916
|
+
label,
|
|
1917
|
+
helperText
|
|
1918
|
+
}) => {
|
|
1919
|
+
const [files, setFiles] = useState8([]);
|
|
1920
|
+
const [isDragging, setIsDragging] = useState8(false);
|
|
1921
|
+
const fileInputRef = useRef3(null);
|
|
1922
|
+
const formatFileSize = (bytes) => {
|
|
1923
|
+
if (bytes === 0) return "0 Bytes";
|
|
1924
|
+
const k = 1024;
|
|
1925
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
1926
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
1927
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
1928
|
+
};
|
|
1929
|
+
const validateFiles = (fileList) => {
|
|
1930
|
+
const validFiles = [];
|
|
1931
|
+
const filesArray = Array.from(fileList);
|
|
1932
|
+
if (filesArray.length + files.length > maxFiles) {
|
|
1933
|
+
onError?.(`Maximum ${maxFiles} files allowed`);
|
|
1934
|
+
return validFiles;
|
|
1935
|
+
}
|
|
1936
|
+
for (const file of filesArray) {
|
|
1937
|
+
if (maxSize && file.size > maxSize) {
|
|
1938
|
+
onError?.(`File ${file.name} exceeds maximum size of ${formatFileSize(maxSize)}`);
|
|
1939
|
+
continue;
|
|
1940
|
+
}
|
|
1941
|
+
validFiles.push(file);
|
|
1942
|
+
}
|
|
1943
|
+
return validFiles;
|
|
1944
|
+
};
|
|
1945
|
+
const handleFiles = (fileList) => {
|
|
1946
|
+
if (!fileList || disabled) return;
|
|
1947
|
+
const validFiles = validateFiles(fileList);
|
|
1948
|
+
if (validFiles.length > 0) {
|
|
1949
|
+
const newFiles = multiple ? [...files, ...validFiles] : validFiles;
|
|
1950
|
+
setFiles(newFiles);
|
|
1951
|
+
onChange?.(newFiles);
|
|
1952
|
+
}
|
|
1953
|
+
};
|
|
1954
|
+
const handleDrop = (e) => {
|
|
1955
|
+
e.preventDefault();
|
|
1956
|
+
setIsDragging(false);
|
|
1957
|
+
handleFiles(e.dataTransfer.files);
|
|
1958
|
+
};
|
|
1959
|
+
const handleDragOver = (e) => {
|
|
1960
|
+
e.preventDefault();
|
|
1961
|
+
if (!disabled) {
|
|
1962
|
+
setIsDragging(true);
|
|
1963
|
+
}
|
|
1964
|
+
};
|
|
1965
|
+
const handleDragLeave = (e) => {
|
|
1966
|
+
e.preventDefault();
|
|
1967
|
+
setIsDragging(false);
|
|
1968
|
+
};
|
|
1969
|
+
const handleClick = () => {
|
|
1970
|
+
if (!disabled) {
|
|
1971
|
+
fileInputRef.current?.click();
|
|
1972
|
+
}
|
|
1973
|
+
};
|
|
1974
|
+
const handleRemoveFile = (index) => {
|
|
1975
|
+
const newFiles = files.filter((_, i) => i !== index);
|
|
1976
|
+
setFiles(newFiles);
|
|
1977
|
+
onChange?.(newFiles);
|
|
1978
|
+
};
|
|
1979
|
+
return /* @__PURE__ */ jsxs27("div", { className: `w-full ${className}`, children: [
|
|
1980
|
+
label && /* @__PURE__ */ jsx62("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
1981
|
+
/* @__PURE__ */ jsxs27(
|
|
1982
|
+
"div",
|
|
1983
|
+
{
|
|
1984
|
+
onDrop: handleDrop,
|
|
1985
|
+
onDragOver: handleDragOver,
|
|
1986
|
+
onDragLeave: handleDragLeave,
|
|
1987
|
+
onClick: handleClick,
|
|
1988
|
+
className: `relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${isDragging ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"} ${disabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1989
|
+
children: [
|
|
1990
|
+
/* @__PURE__ */ jsx62(
|
|
1991
|
+
"input",
|
|
1992
|
+
{
|
|
1993
|
+
ref: fileInputRef,
|
|
1994
|
+
type: "file",
|
|
1995
|
+
accept,
|
|
1996
|
+
multiple,
|
|
1997
|
+
onChange: (e) => handleFiles(e.target.files),
|
|
1998
|
+
disabled,
|
|
1999
|
+
className: "hidden"
|
|
2000
|
+
}
|
|
2001
|
+
),
|
|
2002
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center gap-2", children: [
|
|
2003
|
+
/* @__PURE__ */ jsx62("div", { className: "w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center", children: /* @__PURE__ */ jsx62(UploadIcon, { size: "lg", className: "text-gray-400 dark:text-gray-500" }) }),
|
|
2004
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
2005
|
+
/* @__PURE__ */ jsxs27("p", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
2006
|
+
/* @__PURE__ */ jsx62("span", { className: "text-blue-600 dark:text-blue-400", children: "Click to upload" }),
|
|
2007
|
+
" or drag and drop"
|
|
2008
|
+
] }),
|
|
2009
|
+
/* @__PURE__ */ jsxs27("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: [
|
|
2010
|
+
accept ? `Accepted: ${accept}` : "Any file type",
|
|
2011
|
+
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
2012
|
+
] })
|
|
2013
|
+
] })
|
|
2014
|
+
] })
|
|
2015
|
+
]
|
|
2016
|
+
}
|
|
2017
|
+
),
|
|
2018
|
+
helperText && /* @__PURE__ */ jsx62("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
2019
|
+
files.length > 0 && /* @__PURE__ */ jsx62("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ jsxs27(
|
|
2020
|
+
"div",
|
|
2021
|
+
{
|
|
2022
|
+
className: "flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",
|
|
2023
|
+
children: [
|
|
2024
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex-1 min-w-0", children: [
|
|
2025
|
+
/* @__PURE__ */ jsx62("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: file.name }),
|
|
2026
|
+
/* @__PURE__ */ jsx62("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatFileSize(file.size) })
|
|
2027
|
+
] }),
|
|
2028
|
+
/* @__PURE__ */ jsx62(
|
|
2029
|
+
"button",
|
|
2030
|
+
{
|
|
2031
|
+
onClick: (e) => {
|
|
2032
|
+
e.stopPropagation();
|
|
2033
|
+
handleRemoveFile(index);
|
|
2034
|
+
},
|
|
2035
|
+
className: "ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors",
|
|
2036
|
+
"aria-label": "Remove file",
|
|
2037
|
+
children: /* @__PURE__ */ jsx62(CloseIcon, { size: "sm" })
|
|
2038
|
+
}
|
|
2039
|
+
)
|
|
2040
|
+
]
|
|
2041
|
+
},
|
|
2042
|
+
index
|
|
2043
|
+
)) })
|
|
2044
|
+
] });
|
|
2045
|
+
};
|
|
2046
|
+
|
|
1105
2047
|
// src/utils/theme-script.ts
|
|
1106
2048
|
var themeScript = `
|
|
1107
2049
|
(function() {
|
|
@@ -1134,168 +2076,12 @@ var themeScript = `
|
|
|
1134
2076
|
function getThemeScript() {
|
|
1135
2077
|
return themeScript;
|
|
1136
2078
|
}
|
|
1137
|
-
|
|
1138
|
-
// src/icons/Icon.tsx
|
|
1139
|
-
import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1140
|
-
var sizeClasses5 = {
|
|
1141
|
-
xs: "w-3 h-3",
|
|
1142
|
-
sm: "w-4 h-4",
|
|
1143
|
-
md: "w-5 h-5",
|
|
1144
|
-
lg: "w-6 h-6",
|
|
1145
|
-
xl: "w-8 h-8"
|
|
1146
|
-
};
|
|
1147
|
-
var createIcon = (displayName, path, filled = false) => {
|
|
1148
|
-
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
1149
|
-
const sizeClass = sizeClasses5[size];
|
|
1150
|
-
return /* @__PURE__ */ jsx23(
|
|
1151
|
-
"svg",
|
|
1152
|
-
{
|
|
1153
|
-
className: `${sizeClass} ${className}`,
|
|
1154
|
-
fill: filled ? color : "none",
|
|
1155
|
-
viewBox: "0 0 24 24",
|
|
1156
|
-
stroke: filled ? "none" : color,
|
|
1157
|
-
"aria-hidden": "true",
|
|
1158
|
-
children: path
|
|
1159
|
-
}
|
|
1160
|
-
);
|
|
1161
|
-
};
|
|
1162
|
-
Icon.displayName = displayName;
|
|
1163
|
-
return Icon;
|
|
1164
|
-
};
|
|
1165
|
-
var HomeIcon = createIcon(
|
|
1166
|
-
"HomeIcon",
|
|
1167
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" })
|
|
1168
|
-
);
|
|
1169
|
-
var UserIcon = createIcon(
|
|
1170
|
-
"UserIcon",
|
|
1171
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" })
|
|
1172
|
-
);
|
|
1173
|
-
var SearchIcon = createIcon(
|
|
1174
|
-
"SearchIcon",
|
|
1175
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
1176
|
-
);
|
|
1177
|
-
var BellIcon = createIcon(
|
|
1178
|
-
"BellIcon",
|
|
1179
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" })
|
|
1180
|
-
);
|
|
1181
|
-
var SettingsIcon = createIcon(
|
|
1182
|
-
"SettingsIcon",
|
|
1183
|
-
/* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
1184
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
|
|
1185
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1186
|
-
] })
|
|
1187
|
-
);
|
|
1188
|
-
var MenuIcon = createIcon(
|
|
1189
|
-
"MenuIcon",
|
|
1190
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
1191
|
-
);
|
|
1192
|
-
var CloseIcon = createIcon(
|
|
1193
|
-
"CloseIcon",
|
|
1194
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
1195
|
-
);
|
|
1196
|
-
var ChevronDownIcon = createIcon(
|
|
1197
|
-
"ChevronDownIcon",
|
|
1198
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
1199
|
-
);
|
|
1200
|
-
var ChevronRightIcon = createIcon(
|
|
1201
|
-
"ChevronRightIcon",
|
|
1202
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
1203
|
-
);
|
|
1204
|
-
var CheckIcon = createIcon(
|
|
1205
|
-
"CheckIcon",
|
|
1206
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
1207
|
-
);
|
|
1208
|
-
var PlusIcon = createIcon(
|
|
1209
|
-
"PlusIcon",
|
|
1210
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
1211
|
-
);
|
|
1212
|
-
var TrashIcon = createIcon(
|
|
1213
|
-
"TrashIcon",
|
|
1214
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })
|
|
1215
|
-
);
|
|
1216
|
-
var EditIcon = createIcon(
|
|
1217
|
-
"EditIcon",
|
|
1218
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })
|
|
1219
|
-
);
|
|
1220
|
-
var MailIcon = createIcon(
|
|
1221
|
-
"MailIcon",
|
|
1222
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
1223
|
-
);
|
|
1224
|
-
var StarIcon = createIcon(
|
|
1225
|
-
"StarIcon",
|
|
1226
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" })
|
|
1227
|
-
);
|
|
1228
|
-
var HeartIcon = createIcon(
|
|
1229
|
-
"HeartIcon",
|
|
1230
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" })
|
|
1231
|
-
);
|
|
1232
|
-
var DownloadIcon = createIcon(
|
|
1233
|
-
"DownloadIcon",
|
|
1234
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" })
|
|
1235
|
-
);
|
|
1236
|
-
var UploadIcon = createIcon(
|
|
1237
|
-
"UploadIcon",
|
|
1238
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })
|
|
1239
|
-
);
|
|
1240
|
-
var CameraIcon = createIcon(
|
|
1241
|
-
"CameraIcon",
|
|
1242
|
-
/* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
1243
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
1244
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1245
|
-
] })
|
|
1246
|
-
);
|
|
1247
|
-
var LockIcon = createIcon(
|
|
1248
|
-
"LockIcon",
|
|
1249
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" })
|
|
1250
|
-
);
|
|
1251
|
-
var CalendarIcon = createIcon(
|
|
1252
|
-
"CalendarIcon",
|
|
1253
|
-
/* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })
|
|
1254
|
-
);
|
|
1255
|
-
var GoogleIcon = createIcon(
|
|
1256
|
-
"GoogleIcon",
|
|
1257
|
-
/* @__PURE__ */ jsx23("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" }),
|
|
1258
|
-
true
|
|
1259
|
-
);
|
|
1260
|
-
var GitHubIcon = createIcon(
|
|
1261
|
-
"GitHubIcon",
|
|
1262
|
-
/* @__PURE__ */ jsx23("path", { d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }),
|
|
1263
|
-
true
|
|
1264
|
-
);
|
|
1265
|
-
var TwitterIcon = createIcon(
|
|
1266
|
-
"TwitterIcon",
|
|
1267
|
-
/* @__PURE__ */ jsx23("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
|
|
1268
|
-
true
|
|
1269
|
-
);
|
|
1270
|
-
var FacebookIcon = createIcon(
|
|
1271
|
-
"FacebookIcon",
|
|
1272
|
-
/* @__PURE__ */ jsx23("path", { d: "M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" }),
|
|
1273
|
-
true
|
|
1274
|
-
);
|
|
1275
|
-
var AppleIcon = createIcon(
|
|
1276
|
-
"AppleIcon",
|
|
1277
|
-
/* @__PURE__ */ jsx23("path", { d: "M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }),
|
|
1278
|
-
true
|
|
1279
|
-
);
|
|
1280
|
-
var LinkedInIcon = createIcon(
|
|
1281
|
-
"LinkedInIcon",
|
|
1282
|
-
/* @__PURE__ */ jsx23("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }),
|
|
1283
|
-
true
|
|
1284
|
-
);
|
|
1285
|
-
var YouTubeIcon = createIcon(
|
|
1286
|
-
"YouTubeIcon",
|
|
1287
|
-
/* @__PURE__ */ jsx23("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }),
|
|
1288
|
-
true
|
|
1289
|
-
);
|
|
1290
|
-
var SlackIcon = createIcon(
|
|
1291
|
-
"SlackIcon",
|
|
1292
|
-
/* @__PURE__ */ jsx23("path", { d: "M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" }),
|
|
1293
|
-
true
|
|
1294
|
-
);
|
|
1295
2079
|
export {
|
|
1296
2080
|
ActionMenu,
|
|
1297
2081
|
Alert,
|
|
2082
|
+
AppShell,
|
|
1298
2083
|
AppleIcon,
|
|
2084
|
+
Avatar,
|
|
1299
2085
|
Badge,
|
|
1300
2086
|
BellIcon,
|
|
1301
2087
|
Button,
|
|
@@ -1309,10 +2095,12 @@ export {
|
|
|
1309
2095
|
CloseIcon,
|
|
1310
2096
|
DatePicker,
|
|
1311
2097
|
DateTimePicker,
|
|
2098
|
+
Divider,
|
|
1312
2099
|
DownloadIcon,
|
|
1313
2100
|
Drawer,
|
|
1314
2101
|
EditIcon,
|
|
1315
2102
|
FacebookIcon,
|
|
2103
|
+
FileUpload,
|
|
1316
2104
|
GitHubIcon,
|
|
1317
2105
|
GoogleIcon,
|
|
1318
2106
|
HeartIcon,
|
|
@@ -1325,19 +2113,25 @@ export {
|
|
|
1325
2113
|
Navbar,
|
|
1326
2114
|
Pagination,
|
|
1327
2115
|
PlusIcon,
|
|
2116
|
+
ProgressBar,
|
|
2117
|
+
Radio,
|
|
1328
2118
|
SearchIcon,
|
|
1329
2119
|
Select,
|
|
1330
2120
|
SettingsIcon,
|
|
1331
2121
|
Sidebar,
|
|
1332
2122
|
SidebarProvider,
|
|
1333
2123
|
SlackIcon,
|
|
2124
|
+
Slider,
|
|
1334
2125
|
Spinner,
|
|
1335
2126
|
StarIcon,
|
|
2127
|
+
Stepper,
|
|
1336
2128
|
Table,
|
|
1337
2129
|
Tabs,
|
|
1338
2130
|
TextInput,
|
|
2131
|
+
Textarea,
|
|
1339
2132
|
ThemeProvider,
|
|
1340
2133
|
TimePicker,
|
|
2134
|
+
ToastProvider,
|
|
1341
2135
|
Toggle,
|
|
1342
2136
|
TrashIcon,
|
|
1343
2137
|
TwitterIcon,
|
|
@@ -1347,7 +2141,9 @@ export {
|
|
|
1347
2141
|
getThemeScript,
|
|
1348
2142
|
themeScript,
|
|
1349
2143
|
themes,
|
|
2144
|
+
toast,
|
|
1350
2145
|
useSidebar,
|
|
1351
|
-
useTheme
|
|
2146
|
+
useTheme,
|
|
2147
|
+
useToast
|
|
1352
2148
|
};
|
|
1353
2149
|
//# sourceMappingURL=index.mjs.map
|