@marcoschwartz/lite-ui 0.6.0 → 0.7.1
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 +22 -3
- package/dist/index.d.ts +22 -3
- package/dist/index.js +646 -498
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +623 -476
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -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,29 +916,36 @@ 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 {
|
|
929
|
+
import { useState as useState5, useRef as useRef2, useEffect as useEffect5 } from "react";
|
|
930
|
+
import { createPortal } from "react-dom";
|
|
931
|
+
import { Fragment as Fragment6, jsx as jsx41, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
583
932
|
var ActionMenu = ({
|
|
584
933
|
items,
|
|
585
934
|
trigger,
|
|
586
935
|
position = "right"
|
|
587
936
|
}) => {
|
|
588
937
|
const { themeName } = useTheme();
|
|
589
|
-
const [isOpen, setIsOpen] =
|
|
938
|
+
const [isOpen, setIsOpen] = useState5(false);
|
|
939
|
+
const [menuPosition, setMenuPosition] = useState5(null);
|
|
940
|
+
const [mounted, setMounted] = useState5(false);
|
|
590
941
|
const menuRef = useRef2(null);
|
|
942
|
+
const triggerRef = useRef2(null);
|
|
943
|
+
useEffect5(() => {
|
|
944
|
+
setMounted(true);
|
|
945
|
+
}, []);
|
|
591
946
|
useEffect5(() => {
|
|
592
947
|
const handleClickOutside = (event) => {
|
|
593
|
-
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
948
|
+
if (menuRef.current && !menuRef.current.contains(event.target) && triggerRef.current && !triggerRef.current.contains(event.target)) {
|
|
594
949
|
setIsOpen(false);
|
|
595
950
|
}
|
|
596
951
|
};
|
|
@@ -599,50 +954,79 @@ var ActionMenu = ({
|
|
|
599
954
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
600
955
|
}
|
|
601
956
|
}, [isOpen]);
|
|
957
|
+
useEffect5(() => {
|
|
958
|
+
if (isOpen && triggerRef.current) {
|
|
959
|
+
const rect = triggerRef.current.getBoundingClientRect();
|
|
960
|
+
const menuWidth = 224;
|
|
961
|
+
setMenuPosition({
|
|
962
|
+
top: rect.bottom + 8,
|
|
963
|
+
left: position === "left" ? rect.left : rect.right - menuWidth
|
|
964
|
+
});
|
|
965
|
+
} else {
|
|
966
|
+
setMenuPosition(null);
|
|
967
|
+
}
|
|
968
|
+
}, [isOpen, position]);
|
|
602
969
|
const handleItemClick = (item) => {
|
|
970
|
+
if (item.type === "divider") return;
|
|
603
971
|
if (!item.disabled) {
|
|
604
972
|
item.onClick();
|
|
605
973
|
setIsOpen(false);
|
|
606
974
|
}
|
|
607
975
|
};
|
|
608
|
-
const defaultTrigger = /* @__PURE__ */
|
|
976
|
+
const defaultTrigger = /* @__PURE__ */ jsx41(
|
|
609
977
|
"button",
|
|
610
978
|
{
|
|
611
979
|
className: "p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
612
980
|
"aria-label": "Open menu",
|
|
613
|
-
children: /* @__PURE__ */
|
|
981
|
+
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
982
|
}
|
|
615
983
|
);
|
|
616
984
|
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
985
|
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
|
-
const
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
{
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
986
|
+
const menu = isOpen && mounted && menuPosition ? /* @__PURE__ */ jsx41(
|
|
987
|
+
"div",
|
|
988
|
+
{
|
|
989
|
+
ref: menuRef,
|
|
990
|
+
className: `fixed w-56 rounded-lg ${menuBaseStyles} z-[9999] max-h-[80vh] overflow-auto`,
|
|
991
|
+
style: {
|
|
992
|
+
minWidth: "14rem",
|
|
993
|
+
top: `${menuPosition.top}px`,
|
|
994
|
+
left: `${menuPosition.left}px`
|
|
995
|
+
},
|
|
996
|
+
children: items.map((item, index) => {
|
|
997
|
+
if (item.type === "divider") {
|
|
998
|
+
return /* @__PURE__ */ jsx41(
|
|
999
|
+
"div",
|
|
1000
|
+
{
|
|
1001
|
+
className: "my-1 border-t border-gray-200 dark:border-gray-700"
|
|
1002
|
+
},
|
|
1003
|
+
index
|
|
1004
|
+
);
|
|
1005
|
+
}
|
|
1006
|
+
return /* @__PURE__ */ jsxs10(
|
|
627
1007
|
"button",
|
|
628
1008
|
{
|
|
629
1009
|
onClick: () => handleItemClick(item),
|
|
630
1010
|
disabled: item.disabled,
|
|
631
1011
|
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
1012
|
children: [
|
|
633
|
-
item.icon && /* @__PURE__ */
|
|
634
|
-
/* @__PURE__ */
|
|
1013
|
+
item.icon && /* @__PURE__ */ jsx41("span", { className: "flex-shrink-0", children: item.icon }),
|
|
1014
|
+
/* @__PURE__ */ jsx41("span", { className: "flex-1", children: item.label })
|
|
635
1015
|
]
|
|
636
1016
|
},
|
|
637
1017
|
index
|
|
638
|
-
)
|
|
639
|
-
}
|
|
640
|
-
|
|
1018
|
+
);
|
|
1019
|
+
})
|
|
1020
|
+
}
|
|
1021
|
+
) : null;
|
|
1022
|
+
return /* @__PURE__ */ jsxs10(Fragment6, { children: [
|
|
1023
|
+
/* @__PURE__ */ jsx41("div", { className: "relative inline-block", ref: triggerRef, children: /* @__PURE__ */ jsx41("div", { onClick: () => setIsOpen(!isOpen), children: trigger || defaultTrigger }) }),
|
|
1024
|
+
mounted && createPortal(menu, document.body)
|
|
641
1025
|
] });
|
|
642
1026
|
};
|
|
643
1027
|
|
|
644
1028
|
// src/components/Card.tsx
|
|
645
|
-
import { jsx as
|
|
1029
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
646
1030
|
var paddingClasses = {
|
|
647
1031
|
none: "",
|
|
648
1032
|
sm: "p-4",
|
|
@@ -658,7 +1042,7 @@ var Card = ({
|
|
|
658
1042
|
const { theme } = useTheme();
|
|
659
1043
|
const paddingClass = paddingClasses[padding];
|
|
660
1044
|
const hoverClass = hover ? "hover:shadow-lg transition-shadow duration-200" : "";
|
|
661
|
-
return /* @__PURE__ */
|
|
1045
|
+
return /* @__PURE__ */ jsx42(
|
|
662
1046
|
"div",
|
|
663
1047
|
{
|
|
664
1048
|
className: `bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 ${paddingClass} ${hoverClass} ${className}`,
|
|
@@ -668,7 +1052,7 @@ var Card = ({
|
|
|
668
1052
|
};
|
|
669
1053
|
|
|
670
1054
|
// src/components/Alert.tsx
|
|
671
|
-
import { jsx as
|
|
1055
|
+
import { jsx as jsx43, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
672
1056
|
var variantStyles = {
|
|
673
1057
|
info: "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-900 dark:text-blue-100",
|
|
674
1058
|
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 +1075,24 @@ var Alert = ({
|
|
|
691
1075
|
const { theme } = useTheme();
|
|
692
1076
|
const variantClass = variantStyles[variant];
|
|
693
1077
|
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__ */
|
|
1078
|
+
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: [
|
|
1079
|
+
/* @__PURE__ */ jsxs11("div", { className: `flex-shrink-0 ${iconClass}`, children: [
|
|
1080
|
+
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" }) }),
|
|
1081
|
+
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" }) }),
|
|
1082
|
+
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" }) }),
|
|
1083
|
+
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
1084
|
] }),
|
|
701
|
-
/* @__PURE__ */
|
|
702
|
-
title && /* @__PURE__ */
|
|
703
|
-
/* @__PURE__ */
|
|
1085
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex-1", children: [
|
|
1086
|
+
title && /* @__PURE__ */ jsx43("h3", { className: "font-semibold mb-1", children: title }),
|
|
1087
|
+
/* @__PURE__ */ jsx43("div", { className: "text-sm", children })
|
|
704
1088
|
] }),
|
|
705
|
-
onClose && /* @__PURE__ */
|
|
1089
|
+
onClose && /* @__PURE__ */ jsx43(
|
|
706
1090
|
"button",
|
|
707
1091
|
{
|
|
708
1092
|
onClick: onClose,
|
|
709
1093
|
className: `flex-shrink-0 ${iconClass} hover:opacity-70 transition-opacity`,
|
|
710
1094
|
"aria-label": "Close alert",
|
|
711
|
-
children: /* @__PURE__ */
|
|
1095
|
+
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
1096
|
}
|
|
713
1097
|
)
|
|
714
1098
|
] }) });
|
|
@@ -716,13 +1100,13 @@ var Alert = ({
|
|
|
716
1100
|
|
|
717
1101
|
// src/components/Checkbox.tsx
|
|
718
1102
|
import { forwardRef as forwardRef2 } from "react";
|
|
719
|
-
import { jsx as
|
|
1103
|
+
import { jsx as jsx44, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
720
1104
|
var Checkbox = forwardRef2(
|
|
721
1105
|
({ label, error, className = "", disabled, ...props }, ref) => {
|
|
722
1106
|
const { theme } = useTheme();
|
|
723
|
-
return /* @__PURE__ */
|
|
724
|
-
/* @__PURE__ */
|
|
725
|
-
/* @__PURE__ */
|
|
1107
|
+
return /* @__PURE__ */ jsxs12("div", { className, children: [
|
|
1108
|
+
/* @__PURE__ */ jsxs12("label", { className: "flex items-center gap-2 cursor-pointer group", children: [
|
|
1109
|
+
/* @__PURE__ */ jsx44(
|
|
726
1110
|
"input",
|
|
727
1111
|
{
|
|
728
1112
|
ref,
|
|
@@ -732,9 +1116,9 @@ var Checkbox = forwardRef2(
|
|
|
732
1116
|
...props
|
|
733
1117
|
}
|
|
734
1118
|
),
|
|
735
|
-
label && /* @__PURE__ */
|
|
1119
|
+
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
1120
|
] }),
|
|
737
|
-
error && /* @__PURE__ */
|
|
1121
|
+
error && /* @__PURE__ */ jsx44("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error })
|
|
738
1122
|
] });
|
|
739
1123
|
}
|
|
740
1124
|
);
|
|
@@ -742,7 +1126,7 @@ Checkbox.displayName = "Checkbox";
|
|
|
742
1126
|
|
|
743
1127
|
// src/components/Toggle.tsx
|
|
744
1128
|
import { forwardRef as forwardRef3 } from "react";
|
|
745
|
-
import { jsx as
|
|
1129
|
+
import { jsx as jsx45, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
746
1130
|
var Toggle = forwardRef3(
|
|
747
1131
|
({ label, size = "md", className = "", disabled, checked, ...props }, ref) => {
|
|
748
1132
|
const { theme } = useTheme();
|
|
@@ -761,9 +1145,9 @@ var Toggle = forwardRef3(
|
|
|
761
1145
|
}
|
|
762
1146
|
};
|
|
763
1147
|
const currentSize = toggleClasses[size];
|
|
764
|
-
return /* @__PURE__ */
|
|
765
|
-
/* @__PURE__ */
|
|
766
|
-
/* @__PURE__ */
|
|
1148
|
+
return /* @__PURE__ */ jsxs13("label", { className: `inline-flex items-center gap-3 cursor-pointer ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`, children: [
|
|
1149
|
+
/* @__PURE__ */ jsxs13("div", { className: "relative", children: [
|
|
1150
|
+
/* @__PURE__ */ jsx45(
|
|
767
1151
|
"input",
|
|
768
1152
|
{
|
|
769
1153
|
ref,
|
|
@@ -774,27 +1158,27 @@ var Toggle = forwardRef3(
|
|
|
774
1158
|
...props
|
|
775
1159
|
}
|
|
776
1160
|
),
|
|
777
|
-
/* @__PURE__ */
|
|
1161
|
+
/* @__PURE__ */ jsx45(
|
|
778
1162
|
"div",
|
|
779
1163
|
{
|
|
780
1164
|
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
1165
|
}
|
|
782
1166
|
),
|
|
783
|
-
/* @__PURE__ */
|
|
1167
|
+
/* @__PURE__ */ jsx45(
|
|
784
1168
|
"div",
|
|
785
1169
|
{
|
|
786
1170
|
className: `${currentSize.thumb} bg-white rounded-full shadow-md absolute top-0.5 left-0.5 transition-transform`
|
|
787
1171
|
}
|
|
788
1172
|
)
|
|
789
1173
|
] }),
|
|
790
|
-
label && /* @__PURE__ */
|
|
1174
|
+
label && /* @__PURE__ */ jsx45("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label })
|
|
791
1175
|
] });
|
|
792
1176
|
}
|
|
793
1177
|
);
|
|
794
1178
|
Toggle.displayName = "Toggle";
|
|
795
1179
|
|
|
796
1180
|
// src/components/Badge.tsx
|
|
797
|
-
import { jsx as
|
|
1181
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
798
1182
|
var variantStyles2 = {
|
|
799
1183
|
default: "bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200",
|
|
800
1184
|
primary: "bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200",
|
|
@@ -817,12 +1201,12 @@ var Badge = ({
|
|
|
817
1201
|
const { theme } = useTheme();
|
|
818
1202
|
const variantClass = variantStyles2[variant];
|
|
819
1203
|
const sizeClass = sizeStyles[size];
|
|
820
|
-
return /* @__PURE__ */
|
|
1204
|
+
return /* @__PURE__ */ jsx46("span", { className: `inline-flex items-center font-medium rounded-full ${variantClass} ${sizeClass} ${className}`, children });
|
|
821
1205
|
};
|
|
822
1206
|
|
|
823
1207
|
// src/components/Spinner.tsx
|
|
824
|
-
import { jsx as
|
|
825
|
-
var
|
|
1208
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
1209
|
+
var sizeClasses5 = {
|
|
826
1210
|
sm: "w-4 h-4 border-2",
|
|
827
1211
|
md: "w-8 h-8 border-2",
|
|
828
1212
|
lg: "w-12 h-12 border-3",
|
|
@@ -839,22 +1223,22 @@ var Spinner = ({
|
|
|
839
1223
|
className = ""
|
|
840
1224
|
}) => {
|
|
841
1225
|
const { theme } = useTheme();
|
|
842
|
-
const sizeClass =
|
|
1226
|
+
const sizeClass = sizeClasses5[size];
|
|
843
1227
|
const colorClass = colorClasses[color];
|
|
844
|
-
return /* @__PURE__ */
|
|
1228
|
+
return /* @__PURE__ */ jsx47(
|
|
845
1229
|
"div",
|
|
846
1230
|
{
|
|
847
1231
|
className: `inline-block rounded-full animate-spin ${sizeClass} ${colorClass} ${className}`,
|
|
848
1232
|
role: "status",
|
|
849
1233
|
"aria-label": "Loading",
|
|
850
|
-
children: /* @__PURE__ */
|
|
1234
|
+
children: /* @__PURE__ */ jsx47("span", { className: "sr-only", children: "Loading..." })
|
|
851
1235
|
}
|
|
852
1236
|
);
|
|
853
1237
|
};
|
|
854
1238
|
|
|
855
1239
|
// src/components/Tabs.tsx
|
|
856
|
-
import { useState as
|
|
857
|
-
import { jsx as
|
|
1240
|
+
import { useState as useState6 } from "react";
|
|
1241
|
+
import { jsx as jsx48, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
858
1242
|
var Tabs = ({
|
|
859
1243
|
tabs,
|
|
860
1244
|
defaultIndex = 0,
|
|
@@ -862,14 +1246,14 @@ var Tabs = ({
|
|
|
862
1246
|
className = ""
|
|
863
1247
|
}) => {
|
|
864
1248
|
const { theme } = useTheme();
|
|
865
|
-
const [activeIndex, setActiveIndex] =
|
|
1249
|
+
const [activeIndex, setActiveIndex] = useState6(defaultIndex);
|
|
866
1250
|
const handleTabClick = (index) => {
|
|
867
1251
|
if (tabs[index].disabled) return;
|
|
868
1252
|
setActiveIndex(index);
|
|
869
1253
|
onChange?.(index);
|
|
870
1254
|
};
|
|
871
|
-
return /* @__PURE__ */
|
|
872
|
-
/* @__PURE__ */
|
|
1255
|
+
return /* @__PURE__ */ jsxs14("div", { className, children: [
|
|
1256
|
+
/* @__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
1257
|
"button",
|
|
874
1258
|
{
|
|
875
1259
|
onClick: () => handleTabClick(index),
|
|
@@ -880,12 +1264,12 @@ var Tabs = ({
|
|
|
880
1264
|
},
|
|
881
1265
|
index
|
|
882
1266
|
)) }) }),
|
|
883
|
-
/* @__PURE__ */
|
|
1267
|
+
/* @__PURE__ */ jsx48("div", { children: tabs[activeIndex]?.content })
|
|
884
1268
|
] });
|
|
885
1269
|
};
|
|
886
1270
|
|
|
887
1271
|
// src/components/Table.tsx
|
|
888
|
-
import { jsx as
|
|
1272
|
+
import { jsx as jsx49, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
889
1273
|
function Table({
|
|
890
1274
|
columns,
|
|
891
1275
|
data,
|
|
@@ -895,42 +1279,51 @@ function Table({
|
|
|
895
1279
|
className = ""
|
|
896
1280
|
}) {
|
|
897
1281
|
const { theme } = useTheme();
|
|
898
|
-
return /* @__PURE__ */
|
|
899
|
-
/* @__PURE__ */
|
|
900
|
-
/* @__PURE__ */
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
1282
|
+
return /* @__PURE__ */ jsxs15("div", { className: `overflow-x-auto ${className}`, children: [
|
|
1283
|
+
/* @__PURE__ */ jsxs15("table", { className: "w-full text-left", children: [
|
|
1284
|
+
/* @__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, colIndex) => {
|
|
1285
|
+
const isLast = colIndex === columns.length - 1;
|
|
1286
|
+
return /* @__PURE__ */ jsx49(
|
|
1287
|
+
"th",
|
|
1288
|
+
{
|
|
1289
|
+
className: isLast ? "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider relative" : "px-6 py-3 text-xs font-medium text-gray-700 dark:text-gray-300 uppercase tracking-wider",
|
|
1290
|
+
style: { width: column.width },
|
|
1291
|
+
children: column.title
|
|
1292
|
+
},
|
|
1293
|
+
column.key
|
|
1294
|
+
);
|
|
1295
|
+
}) }) }),
|
|
1296
|
+
/* @__PURE__ */ jsx49("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: data.map((row, rowIndex) => {
|
|
1297
|
+
const rowClasses = [
|
|
1298
|
+
striped && rowIndex % 2 === 1 ? "bg-gray-50 dark:bg-gray-800/50" : "",
|
|
1299
|
+
hoverable ? "hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors" : ""
|
|
1300
|
+
].filter(Boolean).join(" ");
|
|
1301
|
+
return /* @__PURE__ */ jsx49(
|
|
1302
|
+
"tr",
|
|
1303
|
+
{
|
|
1304
|
+
className: rowClasses,
|
|
1305
|
+
children: columns.map((column, colIndex) => {
|
|
1306
|
+
const isLast = colIndex === columns.length - 1;
|
|
1307
|
+
return /* @__PURE__ */ jsx49(
|
|
1308
|
+
"td",
|
|
1309
|
+
{
|
|
1310
|
+
className: isLast ? "px-6 py-4 text-sm text-gray-900 dark:text-gray-100 overflow-visible" : "px-6 py-4 text-sm text-gray-900 dark:text-gray-100",
|
|
1311
|
+
children: column.render ? column.render(row[column.key], row, rowIndex) : row[column.key]
|
|
1312
|
+
},
|
|
1313
|
+
column.key
|
|
1314
|
+
);
|
|
1315
|
+
})
|
|
1316
|
+
},
|
|
1317
|
+
row[keyField] || rowIndex
|
|
1318
|
+
);
|
|
1319
|
+
}) })
|
|
927
1320
|
] }),
|
|
928
|
-
data.length === 0 && /* @__PURE__ */
|
|
1321
|
+
data.length === 0 && /* @__PURE__ */ jsx49("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: "No data available" })
|
|
929
1322
|
] });
|
|
930
1323
|
}
|
|
931
1324
|
|
|
932
1325
|
// src/components/Pagination.tsx
|
|
933
|
-
import { jsx as
|
|
1326
|
+
import { jsx as jsx50, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
934
1327
|
var Pagination = ({
|
|
935
1328
|
currentPage,
|
|
936
1329
|
totalPages,
|
|
@@ -971,8 +1364,8 @@ var Pagination = ({
|
|
|
971
1364
|
return range(1, totalPages);
|
|
972
1365
|
};
|
|
973
1366
|
const pages = paginationRange();
|
|
974
|
-
return /* @__PURE__ */
|
|
975
|
-
/* @__PURE__ */
|
|
1367
|
+
return /* @__PURE__ */ jsxs16("nav", { className: `flex items-center gap-1 ${className}`, "aria-label": "Pagination", children: [
|
|
1368
|
+
/* @__PURE__ */ jsx50(
|
|
976
1369
|
"button",
|
|
977
1370
|
{
|
|
978
1371
|
onClick: () => onPageChange(currentPage - 1),
|
|
@@ -984,7 +1377,7 @@ var Pagination = ({
|
|
|
984
1377
|
),
|
|
985
1378
|
pages.map((page, index) => {
|
|
986
1379
|
if (page === "...") {
|
|
987
|
-
return /* @__PURE__ */
|
|
1380
|
+
return /* @__PURE__ */ jsx50(
|
|
988
1381
|
"span",
|
|
989
1382
|
{
|
|
990
1383
|
className: "px-3 py-2 text-gray-700 dark:text-gray-300",
|
|
@@ -993,7 +1386,7 @@ var Pagination = ({
|
|
|
993
1386
|
`dots-${index}`
|
|
994
1387
|
);
|
|
995
1388
|
}
|
|
996
|
-
return /* @__PURE__ */
|
|
1389
|
+
return /* @__PURE__ */ jsx50(
|
|
997
1390
|
"button",
|
|
998
1391
|
{
|
|
999
1392
|
onClick: () => onPageChange(page),
|
|
@@ -1005,7 +1398,7 @@ var Pagination = ({
|
|
|
1005
1398
|
page
|
|
1006
1399
|
);
|
|
1007
1400
|
}),
|
|
1008
|
-
/* @__PURE__ */
|
|
1401
|
+
/* @__PURE__ */ jsx50(
|
|
1009
1402
|
"button",
|
|
1010
1403
|
{
|
|
1011
1404
|
onClick: () => onPageChange(currentPage + 1),
|
|
@@ -1020,16 +1413,16 @@ var Pagination = ({
|
|
|
1020
1413
|
|
|
1021
1414
|
// src/components/DatePicker.tsx
|
|
1022
1415
|
import { forwardRef as forwardRef4 } from "react";
|
|
1023
|
-
import { jsx as
|
|
1416
|
+
import { jsx as jsx51, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1024
1417
|
var DatePicker = forwardRef4(
|
|
1025
1418
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1026
1419
|
const { theme } = useTheme();
|
|
1027
1420
|
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
1421
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1029
1422
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1030
|
-
return /* @__PURE__ */
|
|
1031
|
-
label && /* @__PURE__ */
|
|
1032
|
-
/* @__PURE__ */
|
|
1423
|
+
return /* @__PURE__ */ jsxs17("div", { className, children: [
|
|
1424
|
+
label && /* @__PURE__ */ jsx51("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1425
|
+
/* @__PURE__ */ jsx51(
|
|
1033
1426
|
"input",
|
|
1034
1427
|
{
|
|
1035
1428
|
ref,
|
|
@@ -1039,8 +1432,8 @@ var DatePicker = forwardRef4(
|
|
|
1039
1432
|
...props
|
|
1040
1433
|
}
|
|
1041
1434
|
),
|
|
1042
|
-
error && /* @__PURE__ */
|
|
1043
|
-
helperText && !error && /* @__PURE__ */
|
|
1435
|
+
error && /* @__PURE__ */ jsx51("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1436
|
+
helperText && !error && /* @__PURE__ */ jsx51("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1044
1437
|
] });
|
|
1045
1438
|
}
|
|
1046
1439
|
);
|
|
@@ -1048,16 +1441,16 @@ DatePicker.displayName = "DatePicker";
|
|
|
1048
1441
|
|
|
1049
1442
|
// src/components/TimePicker.tsx
|
|
1050
1443
|
import { forwardRef as forwardRef5 } from "react";
|
|
1051
|
-
import { jsx as
|
|
1444
|
+
import { jsx as jsx52, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1052
1445
|
var TimePicker = forwardRef5(
|
|
1053
1446
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1054
1447
|
const { theme } = useTheme();
|
|
1055
1448
|
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
1449
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1057
1450
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1058
|
-
return /* @__PURE__ */
|
|
1059
|
-
label && /* @__PURE__ */
|
|
1060
|
-
/* @__PURE__ */
|
|
1451
|
+
return /* @__PURE__ */ jsxs18("div", { className, children: [
|
|
1452
|
+
label && /* @__PURE__ */ jsx52("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1453
|
+
/* @__PURE__ */ jsx52(
|
|
1061
1454
|
"input",
|
|
1062
1455
|
{
|
|
1063
1456
|
ref,
|
|
@@ -1067,8 +1460,8 @@ var TimePicker = forwardRef5(
|
|
|
1067
1460
|
...props
|
|
1068
1461
|
}
|
|
1069
1462
|
),
|
|
1070
|
-
error && /* @__PURE__ */
|
|
1071
|
-
helperText && !error && /* @__PURE__ */
|
|
1463
|
+
error && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1464
|
+
helperText && !error && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1072
1465
|
] });
|
|
1073
1466
|
}
|
|
1074
1467
|
);
|
|
@@ -1076,16 +1469,16 @@ TimePicker.displayName = "TimePicker";
|
|
|
1076
1469
|
|
|
1077
1470
|
// src/components/DateTimePicker.tsx
|
|
1078
1471
|
import { forwardRef as forwardRef6 } from "react";
|
|
1079
|
-
import { jsx as
|
|
1472
|
+
import { jsx as jsx53, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1080
1473
|
var DateTimePicker = forwardRef6(
|
|
1081
1474
|
({ label, error, helperText, className = "", disabled, ...props }, ref) => {
|
|
1082
1475
|
const { theme } = useTheme();
|
|
1083
1476
|
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
1477
|
const errorStyles = error ? "border-red-500 focus:ring-red-500 dark:border-red-500" : "";
|
|
1085
1478
|
const disabledStyles = disabled ? "opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900" : "";
|
|
1086
|
-
return /* @__PURE__ */
|
|
1087
|
-
label && /* @__PURE__ */
|
|
1088
|
-
/* @__PURE__ */
|
|
1479
|
+
return /* @__PURE__ */ jsxs19("div", { className, children: [
|
|
1480
|
+
label && /* @__PURE__ */ jsx53("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1481
|
+
/* @__PURE__ */ jsx53(
|
|
1089
1482
|
"input",
|
|
1090
1483
|
{
|
|
1091
1484
|
ref,
|
|
@@ -1095,16 +1488,16 @@ var DateTimePicker = forwardRef6(
|
|
|
1095
1488
|
...props
|
|
1096
1489
|
}
|
|
1097
1490
|
),
|
|
1098
|
-
error && /* @__PURE__ */
|
|
1099
|
-
helperText && !error && /* @__PURE__ */
|
|
1491
|
+
error && /* @__PURE__ */ jsx53("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1492
|
+
helperText && !error && /* @__PURE__ */ jsx53("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1100
1493
|
] });
|
|
1101
1494
|
}
|
|
1102
1495
|
);
|
|
1103
1496
|
DateTimePicker.displayName = "DateTimePicker";
|
|
1104
1497
|
|
|
1105
1498
|
// src/components/Radio.tsx
|
|
1106
|
-
import
|
|
1107
|
-
import { jsx as
|
|
1499
|
+
import React15 from "react";
|
|
1500
|
+
import { jsx as jsx54, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1108
1501
|
var Radio = ({
|
|
1109
1502
|
name,
|
|
1110
1503
|
options,
|
|
@@ -1115,7 +1508,7 @@ var Radio = ({
|
|
|
1115
1508
|
orientation = "vertical",
|
|
1116
1509
|
className = ""
|
|
1117
1510
|
}) => {
|
|
1118
|
-
const [internalValue, setInternalValue] =
|
|
1511
|
+
const [internalValue, setInternalValue] = React15.useState(defaultValue || "");
|
|
1119
1512
|
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1120
1513
|
const handleChange = (optionValue) => {
|
|
1121
1514
|
if (disabled) return;
|
|
@@ -1123,17 +1516,17 @@ var Radio = ({
|
|
|
1123
1516
|
onChange?.(optionValue);
|
|
1124
1517
|
};
|
|
1125
1518
|
const containerClass = orientation === "horizontal" ? "flex flex-wrap gap-4" : "flex flex-col gap-2";
|
|
1126
|
-
return /* @__PURE__ */
|
|
1519
|
+
return /* @__PURE__ */ jsx54("div", { className: `${containerClass} ${className}`, role: "radiogroup", children: options.map((option) => {
|
|
1127
1520
|
const isDisabled = disabled || option.disabled;
|
|
1128
1521
|
const isChecked = value === option.value;
|
|
1129
1522
|
const id = `${name}-${option.value}`;
|
|
1130
|
-
return /* @__PURE__ */
|
|
1523
|
+
return /* @__PURE__ */ jsxs20(
|
|
1131
1524
|
"label",
|
|
1132
1525
|
{
|
|
1133
1526
|
htmlFor: id,
|
|
1134
1527
|
className: `flex items-center gap-2 cursor-pointer ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1135
1528
|
children: [
|
|
1136
|
-
/* @__PURE__ */
|
|
1529
|
+
/* @__PURE__ */ jsx54(
|
|
1137
1530
|
"input",
|
|
1138
1531
|
{
|
|
1139
1532
|
type: "radio",
|
|
@@ -1146,7 +1539,7 @@ var Radio = ({
|
|
|
1146
1539
|
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"
|
|
1147
1540
|
}
|
|
1148
1541
|
),
|
|
1149
|
-
/* @__PURE__ */
|
|
1542
|
+
/* @__PURE__ */ jsx54("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-300", children: option.label })
|
|
1150
1543
|
]
|
|
1151
1544
|
},
|
|
1152
1545
|
option.value
|
|
@@ -1155,7 +1548,7 @@ var Radio = ({
|
|
|
1155
1548
|
};
|
|
1156
1549
|
|
|
1157
1550
|
// src/components/ProgressBar.tsx
|
|
1158
|
-
import { jsx as
|
|
1551
|
+
import { jsx as jsx55, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1159
1552
|
var ProgressBar = ({
|
|
1160
1553
|
value,
|
|
1161
1554
|
max = 100,
|
|
@@ -1177,15 +1570,15 @@ var ProgressBar = ({
|
|
|
1177
1570
|
warning: "bg-yellow-500 dark:bg-yellow-400",
|
|
1178
1571
|
danger: "bg-red-600 dark:bg-red-500"
|
|
1179
1572
|
};
|
|
1180
|
-
return /* @__PURE__ */
|
|
1181
|
-
(showLabel || label) && /* @__PURE__ */
|
|
1182
|
-
label && /* @__PURE__ */
|
|
1183
|
-
showLabel && /* @__PURE__ */
|
|
1573
|
+
return /* @__PURE__ */ jsxs21("div", { className: `w-full ${className}`, children: [
|
|
1574
|
+
(showLabel || label) && /* @__PURE__ */ jsxs21("div", { className: "flex justify-between items-center mb-1", children: [
|
|
1575
|
+
label && /* @__PURE__ */ jsx55("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1576
|
+
showLabel && /* @__PURE__ */ jsxs21("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
1184
1577
|
Math.round(percentage),
|
|
1185
1578
|
"%"
|
|
1186
1579
|
] })
|
|
1187
1580
|
] }),
|
|
1188
|
-
/* @__PURE__ */
|
|
1581
|
+
/* @__PURE__ */ jsx55(
|
|
1189
1582
|
"div",
|
|
1190
1583
|
{
|
|
1191
1584
|
className: `w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses6[size]}`,
|
|
@@ -1193,7 +1586,7 @@ var ProgressBar = ({
|
|
|
1193
1586
|
"aria-valuenow": value,
|
|
1194
1587
|
"aria-valuemin": 0,
|
|
1195
1588
|
"aria-valuemax": max,
|
|
1196
|
-
children: /* @__PURE__ */
|
|
1589
|
+
children: /* @__PURE__ */ jsx55(
|
|
1197
1590
|
"div",
|
|
1198
1591
|
{
|
|
1199
1592
|
className: `${sizeClasses6[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`,
|
|
@@ -1206,8 +1599,8 @@ var ProgressBar = ({
|
|
|
1206
1599
|
};
|
|
1207
1600
|
|
|
1208
1601
|
// src/components/Slider.tsx
|
|
1209
|
-
import
|
|
1210
|
-
import { jsx as
|
|
1602
|
+
import React16 from "react";
|
|
1603
|
+
import { jsx as jsx56, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1211
1604
|
var Slider = ({
|
|
1212
1605
|
value: controlledValue,
|
|
1213
1606
|
defaultValue = 50,
|
|
@@ -1220,7 +1613,7 @@ var Slider = ({
|
|
|
1220
1613
|
label,
|
|
1221
1614
|
className = ""
|
|
1222
1615
|
}) => {
|
|
1223
|
-
const [internalValue, setInternalValue] =
|
|
1616
|
+
const [internalValue, setInternalValue] = React16.useState(defaultValue);
|
|
1224
1617
|
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1225
1618
|
const handleChange = (e) => {
|
|
1226
1619
|
const newValue = Number(e.target.value);
|
|
@@ -1228,21 +1621,21 @@ var Slider = ({
|
|
|
1228
1621
|
onChange?.(newValue);
|
|
1229
1622
|
};
|
|
1230
1623
|
const percentage = (value - min) / (max - min) * 100;
|
|
1231
|
-
return /* @__PURE__ */
|
|
1232
|
-
(label || showValue) && /* @__PURE__ */
|
|
1233
|
-
label && /* @__PURE__ */
|
|
1234
|
-
showValue && /* @__PURE__ */
|
|
1624
|
+
return /* @__PURE__ */ jsxs22("div", { className: `w-full ${className}`, children: [
|
|
1625
|
+
(label || showValue) && /* @__PURE__ */ jsxs22("div", { className: "flex justify-between items-center mb-2", children: [
|
|
1626
|
+
label && /* @__PURE__ */ jsx56("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1627
|
+
showValue && /* @__PURE__ */ jsx56("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: value })
|
|
1235
1628
|
] }),
|
|
1236
|
-
/* @__PURE__ */
|
|
1237
|
-
/* @__PURE__ */
|
|
1238
|
-
/* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ jsxs22("div", { className: "relative", children: [
|
|
1630
|
+
/* @__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" }),
|
|
1631
|
+
/* @__PURE__ */ jsx56(
|
|
1239
1632
|
"div",
|
|
1240
1633
|
{
|
|
1241
1634
|
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none",
|
|
1242
1635
|
style: { width: `${percentage}%` }
|
|
1243
1636
|
}
|
|
1244
1637
|
),
|
|
1245
|
-
/* @__PURE__ */
|
|
1638
|
+
/* @__PURE__ */ jsx56(
|
|
1246
1639
|
"input",
|
|
1247
1640
|
{
|
|
1248
1641
|
type: "range",
|
|
@@ -1264,8 +1657,8 @@ var Slider = ({
|
|
|
1264
1657
|
};
|
|
1265
1658
|
|
|
1266
1659
|
// src/components/Avatar.tsx
|
|
1267
|
-
import
|
|
1268
|
-
import { jsx as
|
|
1660
|
+
import React17 from "react";
|
|
1661
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1269
1662
|
var Avatar = ({
|
|
1270
1663
|
src,
|
|
1271
1664
|
alt,
|
|
@@ -1275,7 +1668,7 @@ var Avatar = ({
|
|
|
1275
1668
|
className = "",
|
|
1276
1669
|
fallbackColor = "bg-blue-600"
|
|
1277
1670
|
}) => {
|
|
1278
|
-
const [imageError, setImageError] =
|
|
1671
|
+
const [imageError, setImageError] = React17.useState(false);
|
|
1279
1672
|
const sizeClasses6 = {
|
|
1280
1673
|
xs: "w-6 h-6 text-xs",
|
|
1281
1674
|
sm: "w-8 h-8 text-sm",
|
|
@@ -1293,11 +1686,11 @@ var Avatar = ({
|
|
|
1293
1686
|
};
|
|
1294
1687
|
const showImage = src && !imageError;
|
|
1295
1688
|
const showInitials = !showImage && name;
|
|
1296
|
-
return /* @__PURE__ */
|
|
1689
|
+
return /* @__PURE__ */ jsx57(
|
|
1297
1690
|
"div",
|
|
1298
1691
|
{
|
|
1299
1692
|
className: `${sizeClasses6[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-gray-200 dark:bg-gray-700" : `${fallbackColor} text-white`} ${className}`,
|
|
1300
|
-
children: showImage ? /* @__PURE__ */
|
|
1693
|
+
children: showImage ? /* @__PURE__ */ jsx57(
|
|
1301
1694
|
"img",
|
|
1302
1695
|
{
|
|
1303
1696
|
src,
|
|
@@ -1305,13 +1698,13 @@ var Avatar = ({
|
|
|
1305
1698
|
className: "w-full h-full object-cover",
|
|
1306
1699
|
onError: () => setImageError(true)
|
|
1307
1700
|
}
|
|
1308
|
-
) : showInitials ? /* @__PURE__ */
|
|
1701
|
+
) : showInitials ? /* @__PURE__ */ jsx57("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ jsx57(
|
|
1309
1702
|
"svg",
|
|
1310
1703
|
{
|
|
1311
1704
|
className: "w-full h-full text-gray-400 dark:text-gray-600",
|
|
1312
1705
|
fill: "currentColor",
|
|
1313
1706
|
viewBox: "0 0 24 24",
|
|
1314
|
-
children: /* @__PURE__ */
|
|
1707
|
+
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" })
|
|
1315
1708
|
}
|
|
1316
1709
|
)
|
|
1317
1710
|
}
|
|
@@ -1319,7 +1712,7 @@ var Avatar = ({
|
|
|
1319
1712
|
};
|
|
1320
1713
|
|
|
1321
1714
|
// src/components/Textarea.tsx
|
|
1322
|
-
import { jsx as
|
|
1715
|
+
import { jsx as jsx58, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1323
1716
|
var Textarea = ({
|
|
1324
1717
|
label,
|
|
1325
1718
|
error,
|
|
@@ -1346,9 +1739,9 @@ var Textarea = ({
|
|
|
1346
1739
|
bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100
|
|
1347
1740
|
placeholder:text-gray-500 dark:placeholder:text-gray-400
|
|
1348
1741
|
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;
|
|
1349
|
-
return /* @__PURE__ */
|
|
1350
|
-
label && /* @__PURE__ */
|
|
1351
|
-
/* @__PURE__ */
|
|
1742
|
+
return /* @__PURE__ */ jsxs23("div", { className: `w-full ${className}`, children: [
|
|
1743
|
+
label && /* @__PURE__ */ jsx58("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1744
|
+
/* @__PURE__ */ jsx58(
|
|
1352
1745
|
"textarea",
|
|
1353
1746
|
{
|
|
1354
1747
|
className: `${baseClasses} ${sizeClasses6[size]} ${resizeClasses[resize]}`,
|
|
@@ -1356,261 +1749,14 @@ var Textarea = ({
|
|
|
1356
1749
|
...props
|
|
1357
1750
|
}
|
|
1358
1751
|
),
|
|
1359
|
-
error && /* @__PURE__ */
|
|
1360
|
-
helperText && !error && /* @__PURE__ */
|
|
1752
|
+
error && /* @__PURE__ */ jsx58("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1753
|
+
helperText && !error && /* @__PURE__ */ jsx58("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1361
1754
|
] });
|
|
1362
1755
|
};
|
|
1363
1756
|
|
|
1364
1757
|
// src/components/Toast.tsx
|
|
1365
|
-
import { createContext as createContext3, useContext as useContext3, useState as
|
|
1366
|
-
|
|
1367
|
-
// src/icons/icon-utils.tsx
|
|
1368
|
-
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1369
|
-
var sizeClasses5 = {
|
|
1370
|
-
xs: "w-3 h-3",
|
|
1371
|
-
sm: "w-4 h-4",
|
|
1372
|
-
md: "w-5 h-5",
|
|
1373
|
-
lg: "w-6 h-6",
|
|
1374
|
-
xl: "w-8 h-8"
|
|
1375
|
-
};
|
|
1376
|
-
var createIcon = (displayName, path, filled = false) => {
|
|
1377
|
-
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
1378
|
-
const sizeClass = sizeClasses5[size];
|
|
1379
|
-
return /* @__PURE__ */ jsx28(
|
|
1380
|
-
"svg",
|
|
1381
|
-
{
|
|
1382
|
-
className: `${sizeClass} ${className}`,
|
|
1383
|
-
fill: filled ? color : "none",
|
|
1384
|
-
viewBox: "0 0 24 24",
|
|
1385
|
-
stroke: filled ? "none" : color,
|
|
1386
|
-
"aria-hidden": "true",
|
|
1387
|
-
children: path
|
|
1388
|
-
}
|
|
1389
|
-
);
|
|
1390
|
-
};
|
|
1391
|
-
Icon.displayName = displayName;
|
|
1392
|
-
return Icon;
|
|
1393
|
-
};
|
|
1394
|
-
|
|
1395
|
-
// src/icons/HomeIcon.tsx
|
|
1396
|
-
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1397
|
-
var HomeIcon = createIcon(
|
|
1398
|
-
"HomeIcon",
|
|
1399
|
-
/* @__PURE__ */ jsx29("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" })
|
|
1400
|
-
);
|
|
1401
|
-
|
|
1402
|
-
// src/icons/UserIcon.tsx
|
|
1403
|
-
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1404
|
-
var UserIcon = createIcon(
|
|
1405
|
-
"UserIcon",
|
|
1406
|
-
/* @__PURE__ */ jsx30("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" })
|
|
1407
|
-
);
|
|
1408
|
-
|
|
1409
|
-
// src/icons/SearchIcon.tsx
|
|
1410
|
-
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1411
|
-
var SearchIcon = createIcon(
|
|
1412
|
-
"SearchIcon",
|
|
1413
|
-
/* @__PURE__ */ jsx31("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
1414
|
-
);
|
|
1415
|
-
|
|
1416
|
-
// src/icons/BellIcon.tsx
|
|
1417
|
-
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1418
|
-
var BellIcon = createIcon(
|
|
1419
|
-
"BellIcon",
|
|
1420
|
-
/* @__PURE__ */ jsx32("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" })
|
|
1421
|
-
);
|
|
1422
|
-
|
|
1423
|
-
// src/icons/SettingsIcon.tsx
|
|
1424
|
-
import { Fragment as Fragment3, jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1425
|
-
var SettingsIcon = createIcon(
|
|
1426
|
-
"SettingsIcon",
|
|
1427
|
-
/* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
1428
|
-
/* @__PURE__ */ jsx33("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" }),
|
|
1429
|
-
/* @__PURE__ */ jsx33("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1430
|
-
] })
|
|
1431
|
-
);
|
|
1432
|
-
|
|
1433
|
-
// src/icons/MenuIcon.tsx
|
|
1434
|
-
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1435
|
-
var MenuIcon = createIcon(
|
|
1436
|
-
"MenuIcon",
|
|
1437
|
-
/* @__PURE__ */ jsx34("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
1438
|
-
);
|
|
1439
|
-
|
|
1440
|
-
// src/icons/CloseIcon.tsx
|
|
1441
|
-
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
1442
|
-
var CloseIcon = createIcon(
|
|
1443
|
-
"CloseIcon",
|
|
1444
|
-
/* @__PURE__ */ jsx35("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
1445
|
-
);
|
|
1446
|
-
|
|
1447
|
-
// src/icons/ChevronDownIcon.tsx
|
|
1448
|
-
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1449
|
-
var ChevronDownIcon = createIcon(
|
|
1450
|
-
"ChevronDownIcon",
|
|
1451
|
-
/* @__PURE__ */ jsx36("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
1452
|
-
);
|
|
1453
|
-
|
|
1454
|
-
// src/icons/ChevronRightIcon.tsx
|
|
1455
|
-
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
1456
|
-
var ChevronRightIcon = createIcon(
|
|
1457
|
-
"ChevronRightIcon",
|
|
1458
|
-
/* @__PURE__ */ jsx37("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
1459
|
-
);
|
|
1460
|
-
|
|
1461
|
-
// src/icons/CheckIcon.tsx
|
|
1462
|
-
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
1463
|
-
var CheckIcon = createIcon(
|
|
1464
|
-
"CheckIcon",
|
|
1465
|
-
/* @__PURE__ */ jsx38("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
1466
|
-
);
|
|
1467
|
-
|
|
1468
|
-
// src/icons/PlusIcon.tsx
|
|
1469
|
-
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
1470
|
-
var PlusIcon = createIcon(
|
|
1471
|
-
"PlusIcon",
|
|
1472
|
-
/* @__PURE__ */ jsx39("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
1473
|
-
);
|
|
1474
|
-
|
|
1475
|
-
// src/icons/TrashIcon.tsx
|
|
1476
|
-
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
1477
|
-
var TrashIcon = createIcon(
|
|
1478
|
-
"TrashIcon",
|
|
1479
|
-
/* @__PURE__ */ jsx40("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" })
|
|
1480
|
-
);
|
|
1481
|
-
|
|
1482
|
-
// src/icons/EditIcon.tsx
|
|
1483
|
-
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
1484
|
-
var EditIcon = createIcon(
|
|
1485
|
-
"EditIcon",
|
|
1486
|
-
/* @__PURE__ */ jsx41("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" })
|
|
1487
|
-
);
|
|
1488
|
-
|
|
1489
|
-
// src/icons/MailIcon.tsx
|
|
1490
|
-
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
1491
|
-
var MailIcon = createIcon(
|
|
1492
|
-
"MailIcon",
|
|
1493
|
-
/* @__PURE__ */ jsx42("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" })
|
|
1494
|
-
);
|
|
1495
|
-
|
|
1496
|
-
// src/icons/StarIcon.tsx
|
|
1497
|
-
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
1498
|
-
var StarIcon = createIcon(
|
|
1499
|
-
"StarIcon",
|
|
1500
|
-
/* @__PURE__ */ jsx43("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" })
|
|
1501
|
-
);
|
|
1502
|
-
|
|
1503
|
-
// src/icons/HeartIcon.tsx
|
|
1504
|
-
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
1505
|
-
var HeartIcon = createIcon(
|
|
1506
|
-
"HeartIcon",
|
|
1507
|
-
/* @__PURE__ */ jsx44("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" })
|
|
1508
|
-
);
|
|
1509
|
-
|
|
1510
|
-
// src/icons/DownloadIcon.tsx
|
|
1511
|
-
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
1512
|
-
var DownloadIcon = createIcon(
|
|
1513
|
-
"DownloadIcon",
|
|
1514
|
-
/* @__PURE__ */ jsx45("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" })
|
|
1515
|
-
);
|
|
1516
|
-
|
|
1517
|
-
// src/icons/UploadIcon.tsx
|
|
1518
|
-
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
1519
|
-
var UploadIcon = createIcon(
|
|
1520
|
-
"UploadIcon",
|
|
1521
|
-
/* @__PURE__ */ jsx46("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" })
|
|
1522
|
-
);
|
|
1523
|
-
|
|
1524
|
-
// src/icons/CameraIcon.tsx
|
|
1525
|
-
import { Fragment as Fragment4, jsx as jsx47, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1526
|
-
var CameraIcon = createIcon(
|
|
1527
|
-
"CameraIcon",
|
|
1528
|
-
/* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
1529
|
-
/* @__PURE__ */ jsx47("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" }),
|
|
1530
|
-
/* @__PURE__ */ jsx47("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1531
|
-
] })
|
|
1532
|
-
);
|
|
1533
|
-
|
|
1534
|
-
// src/icons/LockIcon.tsx
|
|
1535
|
-
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
1536
|
-
var LockIcon = createIcon(
|
|
1537
|
-
"LockIcon",
|
|
1538
|
-
/* @__PURE__ */ jsx48("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" })
|
|
1539
|
-
);
|
|
1540
|
-
|
|
1541
|
-
// src/icons/CalendarIcon.tsx
|
|
1542
|
-
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
1543
|
-
var CalendarIcon = createIcon(
|
|
1544
|
-
"CalendarIcon",
|
|
1545
|
-
/* @__PURE__ */ jsx49("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" })
|
|
1546
|
-
);
|
|
1547
|
-
|
|
1548
|
-
// src/icons/GoogleIcon.tsx
|
|
1549
|
-
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
1550
|
-
var GoogleIcon = createIcon(
|
|
1551
|
-
"GoogleIcon",
|
|
1552
|
-
/* @__PURE__ */ jsx50("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" }),
|
|
1553
|
-
true
|
|
1554
|
-
);
|
|
1555
|
-
|
|
1556
|
-
// src/icons/GitHubIcon.tsx
|
|
1557
|
-
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
1558
|
-
var GitHubIcon = createIcon(
|
|
1559
|
-
"GitHubIcon",
|
|
1560
|
-
/* @__PURE__ */ jsx51("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" }),
|
|
1561
|
-
true
|
|
1562
|
-
);
|
|
1563
|
-
|
|
1564
|
-
// src/icons/TwitterIcon.tsx
|
|
1565
|
-
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
1566
|
-
var TwitterIcon = createIcon(
|
|
1567
|
-
"TwitterIcon",
|
|
1568
|
-
/* @__PURE__ */ jsx52("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" }),
|
|
1569
|
-
true
|
|
1570
|
-
);
|
|
1571
|
-
|
|
1572
|
-
// src/icons/FacebookIcon.tsx
|
|
1573
|
-
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
1574
|
-
var FacebookIcon = createIcon(
|
|
1575
|
-
"FacebookIcon",
|
|
1576
|
-
/* @__PURE__ */ jsx53("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" }),
|
|
1577
|
-
true
|
|
1578
|
-
);
|
|
1579
|
-
|
|
1580
|
-
// src/icons/AppleIcon.tsx
|
|
1581
|
-
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
1582
|
-
var AppleIcon = createIcon(
|
|
1583
|
-
"AppleIcon",
|
|
1584
|
-
/* @__PURE__ */ jsx54("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" }),
|
|
1585
|
-
true
|
|
1586
|
-
);
|
|
1587
|
-
|
|
1588
|
-
// src/icons/LinkedInIcon.tsx
|
|
1589
|
-
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
1590
|
-
var LinkedInIcon = createIcon(
|
|
1591
|
-
"LinkedInIcon",
|
|
1592
|
-
/* @__PURE__ */ jsx55("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" }),
|
|
1593
|
-
true
|
|
1594
|
-
);
|
|
1595
|
-
|
|
1596
|
-
// src/icons/YouTubeIcon.tsx
|
|
1597
|
-
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
1598
|
-
var YouTubeIcon = createIcon(
|
|
1599
|
-
"YouTubeIcon",
|
|
1600
|
-
/* @__PURE__ */ jsx56("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" }),
|
|
1601
|
-
true
|
|
1602
|
-
);
|
|
1603
|
-
|
|
1604
|
-
// src/icons/SlackIcon.tsx
|
|
1605
|
-
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1606
|
-
var SlackIcon = createIcon(
|
|
1607
|
-
"SlackIcon",
|
|
1608
|
-
/* @__PURE__ */ jsx57("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" }),
|
|
1609
|
-
true
|
|
1610
|
-
);
|
|
1611
|
-
|
|
1612
|
-
// src/components/Toast.tsx
|
|
1613
|
-
import { jsx as jsx58, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1758
|
+
import { createContext as createContext3, useContext as useContext3, useState as useState7, useCallback } from "react";
|
|
1759
|
+
import { jsx as jsx59, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1614
1760
|
var ToastContext = createContext3(void 0);
|
|
1615
1761
|
var useToast = () => {
|
|
1616
1762
|
const context = useContext3(ToastContext);
|
|
@@ -1620,7 +1766,7 @@ var useToast = () => {
|
|
|
1620
1766
|
return context;
|
|
1621
1767
|
};
|
|
1622
1768
|
var ToastProvider = ({ children, position = "top-right" }) => {
|
|
1623
|
-
const [toasts, setToasts] =
|
|
1769
|
+
const [toasts, setToasts] = useState7([]);
|
|
1624
1770
|
const addToast = useCallback((toast2) => {
|
|
1625
1771
|
const id = Math.random().toString(36).substring(7);
|
|
1626
1772
|
const newToast = { ...toast2, id };
|
|
@@ -1641,9 +1787,9 @@ var ToastProvider = ({ children, position = "top-right" }) => {
|
|
|
1641
1787
|
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1642
1788
|
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1643
1789
|
};
|
|
1644
|
-
return /* @__PURE__ */
|
|
1790
|
+
return /* @__PURE__ */ jsxs24(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
1645
1791
|
children,
|
|
1646
|
-
/* @__PURE__ */
|
|
1792
|
+
/* @__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)) })
|
|
1647
1793
|
] });
|
|
1648
1794
|
};
|
|
1649
1795
|
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
@@ -1654,27 +1800,27 @@ var ToastItem = ({ toast: toast2, onClose }) => {
|
|
|
1654
1800
|
info: "bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200"
|
|
1655
1801
|
};
|
|
1656
1802
|
const typeIcons = {
|
|
1657
|
-
success: /* @__PURE__ */
|
|
1658
|
-
error: /* @__PURE__ */
|
|
1659
|
-
warning: /* @__PURE__ */
|
|
1660
|
-
info: /* @__PURE__ */
|
|
1803
|
+
success: /* @__PURE__ */ jsx59(CheckIcon, { size: "sm", className: "text-green-600 dark:text-green-400" }),
|
|
1804
|
+
error: /* @__PURE__ */ jsx59(CloseIcon, { size: "sm", className: "text-red-600 dark:text-red-400" }),
|
|
1805
|
+
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" }) }),
|
|
1806
|
+
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" }) })
|
|
1661
1807
|
};
|
|
1662
1808
|
const type = toast2.type || "info";
|
|
1663
|
-
return /* @__PURE__ */
|
|
1809
|
+
return /* @__PURE__ */ jsxs24(
|
|
1664
1810
|
"div",
|
|
1665
1811
|
{
|
|
1666
1812
|
className: `flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`,
|
|
1667
1813
|
role: "alert",
|
|
1668
1814
|
children: [
|
|
1669
|
-
/* @__PURE__ */
|
|
1670
|
-
/* @__PURE__ */
|
|
1671
|
-
/* @__PURE__ */
|
|
1815
|
+
/* @__PURE__ */ jsx59("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
1816
|
+
/* @__PURE__ */ jsx59("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
1817
|
+
/* @__PURE__ */ jsx59(
|
|
1672
1818
|
"button",
|
|
1673
1819
|
{
|
|
1674
1820
|
onClick: onClose,
|
|
1675
1821
|
className: "flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors",
|
|
1676
1822
|
"aria-label": "Close",
|
|
1677
|
-
children: /* @__PURE__ */
|
|
1823
|
+
children: /* @__PURE__ */ jsx59(CloseIcon, { size: "sm" })
|
|
1678
1824
|
}
|
|
1679
1825
|
)
|
|
1680
1826
|
]
|
|
@@ -1705,8 +1851,8 @@ var toast = {
|
|
|
1705
1851
|
};
|
|
1706
1852
|
|
|
1707
1853
|
// src/components/Stepper.tsx
|
|
1708
|
-
import
|
|
1709
|
-
import { jsx as
|
|
1854
|
+
import React19 from "react";
|
|
1855
|
+
import { jsx as jsx60, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1710
1856
|
var Stepper = ({
|
|
1711
1857
|
steps,
|
|
1712
1858
|
currentStep,
|
|
@@ -1714,18 +1860,18 @@ var Stepper = ({
|
|
|
1714
1860
|
className = ""
|
|
1715
1861
|
}) => {
|
|
1716
1862
|
const isHorizontal = orientation === "horizontal";
|
|
1717
|
-
return /* @__PURE__ */
|
|
1863
|
+
return /* @__PURE__ */ jsx60("div", { className: `${isHorizontal ? "flex items-center" : "flex flex-col"} ${className}`, children: steps.map((step, index) => {
|
|
1718
1864
|
const stepNumber = index + 1;
|
|
1719
1865
|
const isActive = stepNumber === currentStep;
|
|
1720
1866
|
const isCompleted = stepNumber < currentStep;
|
|
1721
1867
|
const isLast = index === steps.length - 1;
|
|
1722
|
-
return /* @__PURE__ */
|
|
1723
|
-
/* @__PURE__ */
|
|
1724
|
-
/* @__PURE__ */
|
|
1868
|
+
return /* @__PURE__ */ jsxs25(React19.Fragment, { children: [
|
|
1869
|
+
/* @__PURE__ */ jsxs25("div", { className: `flex ${isHorizontal ? "flex-col items-center" : "flex-row items-start"} ${isHorizontal ? "" : "flex-1"}`, children: [
|
|
1870
|
+
/* @__PURE__ */ jsx60("div", { className: "flex items-center", children: /* @__PURE__ */ jsx60(
|
|
1725
1871
|
"div",
|
|
1726
1872
|
{
|
|
1727
1873
|
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"}`,
|
|
1728
|
-
children: isCompleted ? /* @__PURE__ */
|
|
1874
|
+
children: isCompleted ? /* @__PURE__ */ jsx60(CheckIcon, { size: "sm", className: "text-white" }) : /* @__PURE__ */ jsx60(
|
|
1729
1875
|
"span",
|
|
1730
1876
|
{
|
|
1731
1877
|
className: `text-sm font-semibold ${isActive ? "text-blue-600 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`,
|
|
@@ -1734,18 +1880,18 @@ var Stepper = ({
|
|
|
1734
1880
|
)
|
|
1735
1881
|
}
|
|
1736
1882
|
) }),
|
|
1737
|
-
/* @__PURE__ */
|
|
1738
|
-
/* @__PURE__ */
|
|
1883
|
+
/* @__PURE__ */ jsxs25("div", { className: `${isHorizontal ? "mt-2 text-center" : "ml-4 pb-8"} ${isLast && !isHorizontal ? "pb-0" : ""}`, children: [
|
|
1884
|
+
/* @__PURE__ */ jsx60(
|
|
1739
1885
|
"p",
|
|
1740
1886
|
{
|
|
1741
1887
|
className: `text-sm font-medium ${isActive || isCompleted ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"}`,
|
|
1742
1888
|
children: step.label
|
|
1743
1889
|
}
|
|
1744
1890
|
),
|
|
1745
|
-
step.description && /* @__PURE__ */
|
|
1891
|
+
step.description && /* @__PURE__ */ jsx60("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: step.description })
|
|
1746
1892
|
] })
|
|
1747
1893
|
] }),
|
|
1748
|
-
!isLast && /* @__PURE__ */
|
|
1894
|
+
!isLast && /* @__PURE__ */ jsx60(
|
|
1749
1895
|
"div",
|
|
1750
1896
|
{
|
|
1751
1897
|
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"}`
|
|
@@ -1756,7 +1902,7 @@ var Stepper = ({
|
|
|
1756
1902
|
};
|
|
1757
1903
|
|
|
1758
1904
|
// src/components/Divider.tsx
|
|
1759
|
-
import { jsx as
|
|
1905
|
+
import { jsx as jsx61, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1760
1906
|
var Divider = ({
|
|
1761
1907
|
orientation = "horizontal",
|
|
1762
1908
|
variant = "solid",
|
|
@@ -1775,14 +1921,14 @@ var Divider = ({
|
|
|
1775
1921
|
center: "justify-center",
|
|
1776
1922
|
right: "justify-end"
|
|
1777
1923
|
};
|
|
1778
|
-
return /* @__PURE__ */
|
|
1779
|
-
labelPosition !== "left" && /* @__PURE__ */
|
|
1780
|
-
/* @__PURE__ */
|
|
1781
|
-
labelPosition !== "right" && /* @__PURE__ */
|
|
1924
|
+
return /* @__PURE__ */ jsxs26("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
1925
|
+
labelPosition !== "left" && /* @__PURE__ */ jsx61("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` }),
|
|
1926
|
+
/* @__PURE__ */ jsx61("span", { className: "px-4 text-sm text-gray-500 dark:text-gray-400", children: label }),
|
|
1927
|
+
labelPosition !== "right" && /* @__PURE__ */ jsx61("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` })
|
|
1782
1928
|
] });
|
|
1783
1929
|
}
|
|
1784
1930
|
if (orientation === "vertical") {
|
|
1785
|
-
return /* @__PURE__ */
|
|
1931
|
+
return /* @__PURE__ */ jsx61(
|
|
1786
1932
|
"div",
|
|
1787
1933
|
{
|
|
1788
1934
|
className: `inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
@@ -1791,7 +1937,7 @@ var Divider = ({
|
|
|
1791
1937
|
}
|
|
1792
1938
|
);
|
|
1793
1939
|
}
|
|
1794
|
-
return /* @__PURE__ */
|
|
1940
|
+
return /* @__PURE__ */ jsx61(
|
|
1795
1941
|
"hr",
|
|
1796
1942
|
{
|
|
1797
1943
|
className: `border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
@@ -1801,8 +1947,8 @@ var Divider = ({
|
|
|
1801
1947
|
};
|
|
1802
1948
|
|
|
1803
1949
|
// src/components/FileUpload.tsx
|
|
1804
|
-
import { useRef as useRef3, useState as
|
|
1805
|
-
import { jsx as
|
|
1950
|
+
import { useRef as useRef3, useState as useState8 } from "react";
|
|
1951
|
+
import { jsx as jsx62, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1806
1952
|
var FileUpload = ({
|
|
1807
1953
|
accept,
|
|
1808
1954
|
multiple = false,
|
|
@@ -1815,8 +1961,8 @@ var FileUpload = ({
|
|
|
1815
1961
|
label,
|
|
1816
1962
|
helperText
|
|
1817
1963
|
}) => {
|
|
1818
|
-
const [files, setFiles] =
|
|
1819
|
-
const [isDragging, setIsDragging] =
|
|
1964
|
+
const [files, setFiles] = useState8([]);
|
|
1965
|
+
const [isDragging, setIsDragging] = useState8(false);
|
|
1820
1966
|
const fileInputRef = useRef3(null);
|
|
1821
1967
|
const formatFileSize = (bytes) => {
|
|
1822
1968
|
if (bytes === 0) return "0 Bytes";
|
|
@@ -1875,9 +2021,9 @@ var FileUpload = ({
|
|
|
1875
2021
|
setFiles(newFiles);
|
|
1876
2022
|
onChange?.(newFiles);
|
|
1877
2023
|
};
|
|
1878
|
-
return /* @__PURE__ */
|
|
1879
|
-
label && /* @__PURE__ */
|
|
1880
|
-
/* @__PURE__ */
|
|
2024
|
+
return /* @__PURE__ */ jsxs27("div", { className: `w-full ${className}`, children: [
|
|
2025
|
+
label && /* @__PURE__ */ jsx62("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
2026
|
+
/* @__PURE__ */ jsxs27(
|
|
1881
2027
|
"div",
|
|
1882
2028
|
{
|
|
1883
2029
|
onDrop: handleDrop,
|
|
@@ -1886,7 +2032,7 @@ var FileUpload = ({
|
|
|
1886
2032
|
onClick: handleClick,
|
|
1887
2033
|
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" : ""}`,
|
|
1888
2034
|
children: [
|
|
1889
|
-
/* @__PURE__ */
|
|
2035
|
+
/* @__PURE__ */ jsx62(
|
|
1890
2036
|
"input",
|
|
1891
2037
|
{
|
|
1892
2038
|
ref: fileInputRef,
|
|
@@ -1898,14 +2044,14 @@ var FileUpload = ({
|
|
|
1898
2044
|
className: "hidden"
|
|
1899
2045
|
}
|
|
1900
2046
|
),
|
|
1901
|
-
/* @__PURE__ */
|
|
1902
|
-
/* @__PURE__ */
|
|
1903
|
-
/* @__PURE__ */
|
|
1904
|
-
/* @__PURE__ */
|
|
1905
|
-
/* @__PURE__ */
|
|
2047
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center gap-2", children: [
|
|
2048
|
+
/* @__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" }) }),
|
|
2049
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
2050
|
+
/* @__PURE__ */ jsxs27("p", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
2051
|
+
/* @__PURE__ */ jsx62("span", { className: "text-blue-600 dark:text-blue-400", children: "Click to upload" }),
|
|
1906
2052
|
" or drag and drop"
|
|
1907
2053
|
] }),
|
|
1908
|
-
/* @__PURE__ */
|
|
2054
|
+
/* @__PURE__ */ jsxs27("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: [
|
|
1909
2055
|
accept ? `Accepted: ${accept}` : "Any file type",
|
|
1910
2056
|
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
1911
2057
|
] })
|
|
@@ -1914,17 +2060,17 @@ var FileUpload = ({
|
|
|
1914
2060
|
]
|
|
1915
2061
|
}
|
|
1916
2062
|
),
|
|
1917
|
-
helperText && /* @__PURE__ */
|
|
1918
|
-
files.length > 0 && /* @__PURE__ */
|
|
2063
|
+
helperText && /* @__PURE__ */ jsx62("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
2064
|
+
files.length > 0 && /* @__PURE__ */ jsx62("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ jsxs27(
|
|
1919
2065
|
"div",
|
|
1920
2066
|
{
|
|
1921
2067
|
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",
|
|
1922
2068
|
children: [
|
|
1923
|
-
/* @__PURE__ */
|
|
1924
|
-
/* @__PURE__ */
|
|
1925
|
-
/* @__PURE__ */
|
|
2069
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex-1 min-w-0", children: [
|
|
2070
|
+
/* @__PURE__ */ jsx62("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: file.name }),
|
|
2071
|
+
/* @__PURE__ */ jsx62("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatFileSize(file.size) })
|
|
1926
2072
|
] }),
|
|
1927
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ jsx62(
|
|
1928
2074
|
"button",
|
|
1929
2075
|
{
|
|
1930
2076
|
onClick: (e) => {
|
|
@@ -1933,7 +2079,7 @@ var FileUpload = ({
|
|
|
1933
2079
|
},
|
|
1934
2080
|
className: "ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors",
|
|
1935
2081
|
"aria-label": "Remove file",
|
|
1936
|
-
children: /* @__PURE__ */
|
|
2082
|
+
children: /* @__PURE__ */ jsx62(CloseIcon, { size: "sm" })
|
|
1937
2083
|
}
|
|
1938
2084
|
)
|
|
1939
2085
|
]
|
|
@@ -1978,6 +2124,7 @@ function getThemeScript() {
|
|
|
1978
2124
|
export {
|
|
1979
2125
|
ActionMenu,
|
|
1980
2126
|
Alert,
|
|
2127
|
+
AppShell,
|
|
1981
2128
|
AppleIcon,
|
|
1982
2129
|
Avatar,
|
|
1983
2130
|
Badge,
|