@parto-system-design/ui 1.1.0 → 1.1.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.cjs CHANGED
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  "use strict";
3
2
  var __create = Object.create;
4
3
  var __defProp = Object.defineProperty;
@@ -363,9 +362,95 @@ module.exports = __toCommonJS(index_exports);
363
362
  // src/lib/utils.ts
364
363
  var import_clsx = require("clsx");
365
364
  var import_tailwind_merge = require("tailwind-merge");
365
+ function cn(...inputs) {
366
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
367
+ }
368
+ function formatNumber(num, format3 = "exact") {
369
+ if (num === void 0 || num === null) return "0";
370
+ if (format3 === "exact") {
371
+ return num.toLocaleString("en-US");
372
+ }
373
+ if (num >= 1e9) {
374
+ return `${(num / 1e9).toFixed(1).replace(/\.0$/, "")}B`;
375
+ }
376
+ if (num >= 1e6) {
377
+ return `${(num / 1e6).toFixed(1).replace(/\.0$/, "")}M`;
378
+ }
379
+ if (num >= 1e3) {
380
+ return `${(num / 1e3).toFixed(1).replace(/\.0$/, "")}K`;
381
+ }
382
+ return num.toString();
383
+ }
384
+ function formatRelativeTime(date) {
385
+ const now = /* @__PURE__ */ new Date();
386
+ const then = new Date(date);
387
+ const diffInSeconds = Math.floor((now.getTime() - then.getTime()) / 1e3);
388
+ const toPersianDigits2 = (num) => {
389
+ const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
390
+ return num.toString().replace(/\d/g, (digit) => persianDigits[parseInt(digit)]);
391
+ };
392
+ if (diffInSeconds < 60) {
393
+ return "\u0647\u0645\u06CC\u0646 \u0627\u0644\u0627\u0646";
394
+ }
395
+ const diffInMinutes = Math.floor(diffInSeconds / 60);
396
+ if (diffInMinutes < 60) {
397
+ return `${toPersianDigits2(diffInMinutes)} \u062F\u0642\u06CC\u0642\u0647 \u067E\u06CC\u0634`;
398
+ }
399
+ const diffInHours = Math.floor(diffInMinutes / 60);
400
+ if (diffInHours < 24) {
401
+ return `${toPersianDigits2(diffInHours)} \u0633\u0627\u0639\u062A \u067E\u06CC\u0634`;
402
+ }
403
+ const diffInDays = Math.floor(diffInHours / 24);
404
+ if (diffInDays < 7) {
405
+ return `${toPersianDigits2(diffInDays)} \u0631\u0648\u0632 \u067E\u06CC\u0634`;
406
+ }
407
+ const diffInWeeks = Math.floor(diffInDays / 7);
408
+ if (diffInWeeks < 4) {
409
+ return `${toPersianDigits2(diffInWeeks)} \u0647\u0641\u062A\u0647 \u067E\u06CC\u0634`;
410
+ }
411
+ const diffInMonths = Math.floor(diffInDays / 30);
412
+ if (diffInMonths < 12) {
413
+ return `${toPersianDigits2(diffInMonths)} \u0645\u0627\u0647 \u067E\u06CC\u0634`;
414
+ }
415
+ const diffInYears = Math.floor(diffInDays / 365);
416
+ return `${toPersianDigits2(diffInYears)} \u0633\u0627\u0644 \u067E\u06CC\u0634`;
417
+ }
418
+ function formatAbsoluteTime(date) {
419
+ const d = new Date(date);
420
+ const toPersianDigits2 = (num) => {
421
+ const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
422
+ return num.toString().replace(/\d/g, (digit) => persianDigits[parseInt(digit)]);
423
+ };
424
+ const persianMonths = [
425
+ "\u0641\u0631\u0648\u0631\u062F\u06CC\u0646",
426
+ "\u0627\u0631\u062F\u06CC\u0628\u0647\u0634\u062A",
427
+ "\u062E\u0631\u062F\u0627\u062F",
428
+ "\u062A\u06CC\u0631",
429
+ "\u0645\u0631\u062F\u0627\u062F",
430
+ "\u0634\u0647\u0631\u06CC\u0648\u0631",
431
+ "\u0645\u0647\u0631",
432
+ "\u0622\u0628\u0627\u0646",
433
+ "\u0622\u0630\u0631",
434
+ "\u062F\u06CC",
435
+ "\u0628\u0647\u0645\u0646",
436
+ "\u0627\u0633\u0641\u0646\u062F"
437
+ ];
438
+ const year = d.getFullYear();
439
+ const month = d.getMonth();
440
+ const day = d.getDate();
441
+ const hours = d.getHours();
442
+ const minutes = d.getMinutes();
443
+ const persianYear = year - 621;
444
+ const persianMonth = persianMonths[month];
445
+ const persianDay = toPersianDigits2(day);
446
+ const persianHours = toPersianDigits2(hours);
447
+ const persianMinutes = toPersianDigits2(minutes.toString().padStart(2, "0"));
448
+ return `${persianDay} ${persianMonth} ${toPersianDigits2(persianYear)}\u060C ${persianHours}:${persianMinutes}`;
449
+ }
366
450
 
367
451
  // src/lib/jalali-utils.ts
368
- var import_date_fns_jalali = require("date-fns-jalali");
452
+ var import_moment_jalaali = __toESM(require("moment-jalaali"), 1);
453
+ import_moment_jalaali.default.loadPersian({ usePersianDigits: true, dialect: "persian-modern" });
369
454
  var PERSIAN_MONTHS = [
370
455
  "\u0641\u0631\u0648\u0631\u062F\u06CC\u0646",
371
456
  "\u0627\u0631\u062F\u06CC\u0628\u0647\u0634\u062A",
@@ -413,59 +498,49 @@ function toEnglishDigits(str) {
413
498
  const arabicDigits = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
414
499
  return str.replace(/[۰-۹]/g, (digit) => String(persianDigits.indexOf(digit))).replace(/[٠-٩]/g, (digit) => String(arabicDigits.indexOf(digit)));
415
500
  }
416
- function formatJalaliDate(date, formatStr = "yyyy/MM/dd") {
417
- let finalFormatStr = formatStr;
418
- if (finalFormatStr.includes("jYYYY")) finalFormatStr = finalFormatStr.replace(/jYYYY/g, "yyyy");
419
- if (finalFormatStr.includes("jMMMM")) finalFormatStr = finalFormatStr.replace(/jMMMM/g, "MMMM");
420
- if (finalFormatStr.includes("jMM")) finalFormatStr = finalFormatStr.replace(/jMM/g, "MM");
421
- if (finalFormatStr.includes("jM")) finalFormatStr = finalFormatStr.replace(/jM/g, "M");
422
- if (finalFormatStr.includes("jDD")) finalFormatStr = finalFormatStr.replace(/jDD/g, "dd");
423
- if (finalFormatStr.includes("jD")) finalFormatStr = finalFormatStr.replace(/jD/g, "d");
424
- return (0, import_date_fns_jalali.format)(date, finalFormatStr);
501
+ function formatJalaliDate(date, format3 = "jYYYY/jMM/jDD") {
502
+ return (0, import_moment_jalaali.default)(date).format(format3);
425
503
  }
426
504
  function getPersianMonthName(date) {
427
- const monthIndex = (0, import_date_fns_jalali.getMonth)(date);
505
+ const monthIndex = (0, import_moment_jalaali.default)(date).jMonth();
428
506
  return PERSIAN_MONTHS[monthIndex];
429
507
  }
430
508
  function getPersianMonthNameShort(date) {
431
- const monthIndex = (0, import_date_fns_jalali.getMonth)(date);
509
+ const monthIndex = (0, import_moment_jalaali.default)(date).jMonth();
432
510
  return PERSIAN_MONTHS_SHORT[monthIndex];
433
511
  }
434
512
  function getPersianWeekdayName(date, short = false) {
435
- const dayIndex = date.getDay();
513
+ const dayIndex = (0, import_moment_jalaali.default)(date).day();
436
514
  return short ? PERSIAN_WEEKDAYS_SHORT[dayIndex] : PERSIAN_WEEKDAYS[dayIndex];
437
515
  }
438
516
  function getPersianYear(date) {
439
- return (0, import_date_fns_jalali.getYear)(date);
517
+ return (0, import_moment_jalaali.default)(date).jYear();
440
518
  }
441
519
  function getPersianMonth(date) {
442
- return (0, import_date_fns_jalali.getMonth)(date);
520
+ return (0, import_moment_jalaali.default)(date).jMonth();
443
521
  }
444
522
  function getPersianDay(date) {
445
- return (0, import_date_fns_jalali.getDate)(date);
523
+ return (0, import_moment_jalaali.default)(date).jDate();
446
524
  }
447
525
  function jalaliToGregorian(year, month, day) {
448
- const yyyy = year.toString().padStart(4, "0");
449
- const MM = (month + 1).toString().padStart(2, "0");
450
- const dd = day.toString().padStart(2, "0");
451
- const referenceDate = /* @__PURE__ */ new Date();
452
- referenceDate.setHours(12, 0, 0, 0);
453
- return (0, import_date_fns_jalali.parse)(`${yyyy}/${MM}/${dd}`, "yyyy/MM/dd", referenceDate);
526
+ return (0, import_moment_jalaali.default)(`${year}/${month + 1}/${day}`, "jYYYY/jM/jD").toDate();
454
527
  }
455
528
  function formatPersianDateRange(from, to) {
456
- const fromYear = (0, import_date_fns_jalali.getYear)(from);
457
- const toYear = (0, import_date_fns_jalali.getYear)(to);
458
- const fromMonth = (0, import_date_fns_jalali.getMonth)(from);
459
- const toMonth = (0, import_date_fns_jalali.getMonth)(to);
460
- const fromDay = (0, import_date_fns_jalali.getDate)(from);
461
- const toDay = (0, import_date_fns_jalali.getDate)(to);
462
- if ((0, import_date_fns_jalali.isSameDay)(from, to)) {
529
+ const fromMoment = (0, import_moment_jalaali.default)(from);
530
+ const toMoment = (0, import_moment_jalaali.default)(to);
531
+ const fromYear = fromMoment.jYear();
532
+ const toYear = toMoment.jYear();
533
+ const fromMonth = fromMoment.jMonth();
534
+ const toMonth = toMoment.jMonth();
535
+ const fromDay = fromMoment.jDate();
536
+ const toDay = toMoment.jDate();
537
+ if (fromYear === toYear && fromMonth === toMonth && fromDay === toDay) {
463
538
  return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)}`;
464
539
  }
465
- if ((0, import_date_fns_jalali.isSameYear)(from, to) && (0, import_date_fns_jalali.isSameMonth)(from, to)) {
540
+ if (fromYear === toYear && fromMonth === toMonth) {
466
541
  return `${toPersianDigits(fromDay)} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)}`;
467
542
  }
468
- if ((0, import_date_fns_jalali.isSameYear)(from, to)) {
543
+ if (fromYear === toYear) {
469
544
  return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[toMonth]} ${toPersianDigits(fromYear)}`;
470
545
  }
471
546
  return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[toMonth]} ${toPersianDigits(toYear)}`;
@@ -487,71 +562,11 @@ function getPersianYearsForDropdown(fromYear, toYear) {
487
562
  return years;
488
563
  }
489
564
 
490
- // src/lib/utils.ts
491
- function cn(...inputs) {
492
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
493
- }
494
- function formatNumber(num, format4 = "exact") {
495
- if (num === void 0 || num === null) return "0";
496
- if (format4 === "exact") {
497
- return num.toLocaleString("en-US");
498
- }
499
- if (num >= 1e9) {
500
- return `${(num / 1e9).toFixed(1).replace(/\.0$/, "")}B`;
501
- }
502
- if (num >= 1e6) {
503
- return `${(num / 1e6).toFixed(1).replace(/\.0$/, "")}M`;
504
- }
505
- if (num >= 1e3) {
506
- return `${(num / 1e3).toFixed(1).replace(/\.0$/, "")}K`;
507
- }
508
- return num.toString();
509
- }
510
- function formatRelativeTime(date) {
511
- const now = /* @__PURE__ */ new Date();
512
- const then = new Date(date);
513
- const diffInSeconds = Math.floor((now.getTime() - then.getTime()) / 1e3);
514
- if (diffInSeconds < 60) {
515
- return "\u0647\u0645\u06CC\u0646 \u0627\u0644\u0627\u0646";
516
- }
517
- const diffInMinutes = Math.floor(diffInSeconds / 60);
518
- if (diffInMinutes < 60) {
519
- return `${toPersianDigits(diffInMinutes)} \u062F\u0642\u06CC\u0642\u0647 \u067E\u06CC\u0634`;
520
- }
521
- const diffInHours = Math.floor(diffInMinutes / 60);
522
- if (diffInHours < 24) {
523
- return `${toPersianDigits(diffInHours)} \u0633\u0627\u0639\u062A \u067E\u06CC\u0634`;
524
- }
525
- const diffInDays = Math.floor(diffInHours / 24);
526
- if (diffInDays < 7) {
527
- return `${toPersianDigits(diffInDays)} \u0631\u0648\u0632 \u067E\u06CC\u0634`;
528
- }
529
- const diffInWeeks = Math.floor(diffInDays / 7);
530
- if (diffInWeeks < 4) {
531
- return `${toPersianDigits(diffInWeeks)} \u0647\u0641\u062A\u0647 \u067E\u06CC\u0634`;
532
- }
533
- const diffInMonths = Math.floor(diffInDays / 30);
534
- if (diffInMonths < 12) {
535
- return `${toPersianDigits(diffInMonths)} \u0645\u0627\u0647 \u067E\u06CC\u0634`;
536
- }
537
- const diffInYears = Math.floor(diffInDays / 365);
538
- return `${toPersianDigits(diffInYears)} \u0633\u0627\u0644 \u067E\u06CC\u0634`;
539
- }
540
- function formatAbsoluteTime(date) {
541
- const d = new Date(date);
542
- const year = getPersianYear(d);
543
- const month = getPersianMonth(d);
544
- const day = getPersianDay(d);
545
- const hours = d.getHours();
546
- const minutes = d.getMinutes();
547
- return `${toPersianDigits(day)} ${PERSIAN_MONTHS[month]} ${toPersianDigits(year)}\u060C ${toPersianDigits(hours)}:${toPersianDigits(String(minutes).padStart(2, "0"))}`;
548
- }
549
-
550
565
  // src/icons.tsx
551
566
  var import_lucide_react = require("lucide-react");
552
567
  var import_jsx_runtime = require("react/jsx-runtime");
553
568
  var Icons = {
554
- /** Parto layered logo mark (generic) */
569
+ // Lucide Icons
555
570
  logo: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
556
571
  "svg",
557
572
  {
@@ -570,7 +585,6 @@ var Icons = {
570
585
  ]
571
586
  }
572
587
  ),
573
- /** Official Parto brand mark (triangle composition) */
574
588
  parto: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
575
589
  "svg",
576
590
  {
@@ -590,7 +604,6 @@ var Icons = {
590
604
  arrowRight: import_lucide_react.ArrowRight,
591
605
  arrowLeft: import_lucide_react.ArrowLeft,
592
606
  bold: import_lucide_react.Bold,
593
- building: import_lucide_react.Building,
594
607
  calendar: import_lucide_react.Calendar,
595
608
  check: import_lucide_react.Check,
596
609
  chevronDown: import_lucide_react.ChevronDown,
@@ -599,19 +612,47 @@ var Icons = {
599
612
  chevronUp: import_lucide_react.ChevronUp,
600
613
  circle: import_lucide_react.Circle,
601
614
  clock: import_lucide_react.Clock,
602
- /** Use for close/dismiss actions (X mark) */
603
- close: import_lucide_react.X,
604
615
  copy: import_lucide_react.Copy,
605
616
  download: import_lucide_react.Download,
606
617
  eye: import_lucide_react.Eye,
607
618
  eyeOff: import_lucide_react.EyeOff,
608
619
  file: import_lucide_react.File,
609
620
  fileText: import_lucide_react.FileText,
621
+ heart: import_lucide_react.Heart,
622
+ home: import_lucide_react.Home,
623
+ image: import_lucide_react.Image,
624
+ images: import_lucide_react.Images,
625
+ inbox: import_lucide_react.Inbox,
626
+ info: import_lucide_react.Info,
627
+ italic: import_lucide_react.Italic,
628
+ loader: import_lucide_react.Loader2,
629
+ menu: import_lucide_react.Menu,
630
+ messageCircle: import_lucide_react.MessageCircle,
631
+ moon: import_lucide_react.Moon,
632
+ moreHorizontal: import_lucide_react.MoreHorizontal,
633
+ moreVertical: import_lucide_react.MoreVertical,
634
+ plus: import_lucide_react.Plus,
635
+ rocket: import_lucide_react.Rocket,
636
+ search: import_lucide_react.Search,
637
+ settings: import_lucide_react.Settings,
638
+ share: import_lucide_react.Share2,
639
+ sparkles: import_lucide_react.Sparkles,
640
+ sun: import_lucide_react.Sun,
641
+ trash: import_lucide_react.Trash,
642
+ underline: import_lucide_react.Underline,
643
+ user: import_lucide_react.User,
644
+ users: import_lucide_react.Users,
645
+ video: import_lucide_react.Video,
646
+ building: import_lucide_react.Building,
647
+ close: import_lucide_react.X,
648
+ spinner: import_lucide_react.Loader2,
610
649
  gitHub: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
611
650
  "svg",
612
651
  {
613
652
  "aria-hidden": "true",
614
653
  focusable: "false",
654
+ "data-prefix": "fab",
655
+ "data-icon": "github",
615
656
  role: "img",
616
657
  xmlns: "http://www.w3.org/2000/svg",
617
658
  viewBox: "0 0 496 512",
@@ -625,13 +666,7 @@ var Icons = {
625
666
  )
626
667
  }
627
668
  ),
628
- heart: import_lucide_react.Heart,
629
- home: import_lucide_react.Home,
630
- image: import_lucide_react.Image,
631
- images: import_lucide_react.Images,
632
- inbox: import_lucide_react.Inbox,
633
- info: import_lucide_react.Info,
634
- instagram: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
669
+ twitter: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
635
670
  "svg",
636
671
  {
637
672
  xmlns: "http://www.w3.org/2000/svg",
@@ -642,30 +677,10 @@ var Icons = {
642
677
  strokeLinecap: "round",
643
678
  strokeLinejoin: "round",
644
679
  ...props,
645
- children: [
646
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", ry: "5" }),
647
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z" }),
648
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "17.5", y1: "6.5", x2: "17.51", y2: "6.5" })
649
- ]
680
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" })
650
681
  }
651
682
  ),
652
- italic: import_lucide_react.Italic,
653
- /** Animated loading spinner — prefer this over a custom spinner */
654
- loader: import_lucide_react.Loader2,
655
- menu: import_lucide_react.Menu,
656
- messageCircle: import_lucide_react.MessageCircle,
657
- moon: import_lucide_react.Moon,
658
- moreHorizontal: import_lucide_react.MoreHorizontal,
659
- moreVertical: import_lucide_react.MoreVertical,
660
- plus: import_lucide_react.Plus,
661
- rocket: import_lucide_react.Rocket,
662
- search: import_lucide_react.Search,
663
- settings: import_lucide_react.Settings,
664
- share: import_lucide_react.Share2,
665
- sparkles: import_lucide_react.Sparkles,
666
- sun: import_lucide_react.Sun,
667
- trash: import_lucide_react.Trash,
668
- twitter: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
683
+ instagram: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
669
684
  "svg",
670
685
  {
671
686
  xmlns: "http://www.w3.org/2000/svg",
@@ -676,27 +691,18 @@ var Icons = {
676
691
  strokeLinecap: "round",
677
692
  strokeLinejoin: "round",
678
693
  ...props,
679
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" })
694
+ children: [
695
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", ry: "5" }),
696
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z" }),
697
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "17.5", y1: "6.5", x2: "17.51", y2: "6.5" })
698
+ ]
680
699
  }
681
- ),
682
- underline: import_lucide_react.Underline,
683
- user: import_lucide_react.User,
684
- users: import_lucide_react.Users,
685
- video: import_lucide_react.Video,
686
- userCheck: import_lucide_react.UserCheck,
687
- trendingUp: import_lucide_react.TrendingUp,
688
- award: import_lucide_react.Award,
689
- crown: import_lucide_react.Crown,
690
- minus: import_lucide_react.Minus,
691
- imageOff: import_lucide_react.ImageOff,
692
- externalLink: import_lucide_react.ExternalLink,
693
- gripVertical: import_lucide_react.GripVertical,
694
- panelLeft: import_lucide_react.PanelLeft,
695
- xCircle: import_lucide_react.XCircle
700
+ )
696
701
  };
697
702
 
698
703
  // src/components/ui/accordion.tsx
699
704
  var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
705
+ var import_lucide_react2 = require("lucide-react");
700
706
  var import_jsx_runtime2 = require("react/jsx-runtime");
701
707
  function Accordion({
702
708
  ...props
@@ -732,7 +738,7 @@ function AccordionTrigger({
732
738
  ...props,
733
739
  children: [
734
740
  children,
735
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Icons.chevronDown, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
741
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react2.ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
736
742
  ]
737
743
  }
738
744
  ) });
@@ -810,6 +816,7 @@ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
810
816
  // src/components/ui/button.tsx
811
817
  var import_react_slot = require("@radix-ui/react-slot");
812
818
  var import_class_variance_authority2 = require("class-variance-authority");
819
+ var import_lucide_react3 = require("lucide-react");
813
820
  var import_react = require("react");
814
821
 
815
822
  // src/lib/constants.ts
@@ -975,7 +982,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
975
982
  bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive/50
976
983
  border-destructive-500 hover:border-destructive
977
984
  hover:text-hi-contrast
978
- focus-visible:outline-amber-700
985
+ focus-visible:outline-brand-600
979
986
  data-[state=open]:border-destructive
980
987
  data-[state=open]:bg-destructive-400 dark:data-[state=open]:bg-destructive/50
981
988
  data-[state=open]:outline-destructive
@@ -985,7 +992,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
985
992
  bg-warning-300 dark:bg-warning-400 hover:bg-warning-400 dark:hover:bg-warning/50
986
993
  border-warning-500 hover:border-warning
987
994
  hover:text-hi-contrast
988
- focus-visible:outline-amber-700
995
+ focus-visible:outline-brand-600
989
996
  data-[state=open]:border-warning
990
997
  data-[state=open]:bg-warning-400 dark:data-[state=open]:bg-warning/50
991
998
  data-[state=open]:outline-warning
@@ -995,7 +1002,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
995
1002
  bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive/50
996
1003
  border-destructive-500 hover:border-destructive
997
1004
  hover:text-hi-contrast
998
- focus-visible:outline-amber-700
1005
+ focus-visible:outline-brand-600
999
1006
  data-[state=open]:border-destructive
1000
1007
  data-[state=open]:bg-destructive-400 dark:data-[state=open]:bg-destructive/50
1001
1008
  data-[state=open]:outline-destructive
@@ -1123,11 +1130,11 @@ var Button = (0, import_react.forwardRef)(
1123
1130
  children: asChild ? (0, import_react.isValidElement)(children) ? (0, import_react.cloneElement)(
1124
1131
  children,
1125
1132
  void 0,
1126
- showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icons.loader, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
1133
+ showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.Loader2, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
1127
1134
  children.props?.children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "truncate", children: children.props.children }),
1128
1135
  iconRight && !loading && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: iconRight })
1129
1136
  ) : null : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
1130
- showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icons.loader, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
1137
+ showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.Loader2, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
1131
1138
  " ",
1132
1139
  children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "truncate", children }),
1133
1140
  " ",
@@ -1306,10 +1313,11 @@ var Input = React3.forwardRef(
1306
1313
  Input.displayName = "Input";
1307
1314
 
1308
1315
  // src/components/ui/spinner.tsx
1316
+ var import_lucide_react4 = require("lucide-react");
1309
1317
  var import_jsx_runtime7 = require("react/jsx-runtime");
1310
1318
  function Spinner({ className, ...props }) {
1311
1319
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1312
- Icons.loader,
1320
+ import_lucide_react4.Loader2Icon,
1313
1321
  {
1314
1322
  role: "status",
1315
1323
  "aria-label": "Loading",
@@ -2017,6 +2025,7 @@ function Badge({
2017
2025
 
2018
2026
  // src/components/ui/breadcrumb.tsx
2019
2027
  var import_react_slot2 = require("@radix-ui/react-slot");
2028
+ var import_lucide_react5 = require("lucide-react");
2020
2029
  var import_jsx_runtime13 = require("react/jsx-runtime");
2021
2030
  function Breadcrumb({ ...props }) {
2022
2031
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
@@ -2091,7 +2100,7 @@ function BreadcrumbSeparator({
2091
2100
  "aria-hidden": "true",
2092
2101
  className: cn("[&>svg]:size-3.5", className),
2093
2102
  ...props,
2094
- children: children ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icons.chevronRight, {})
2103
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react5.ChevronRight, {})
2095
2104
  }
2096
2105
  );
2097
2106
  }
@@ -2108,7 +2117,7 @@ function BreadcrumbEllipsis({
2108
2117
  className: cn("flex size-9 items-center justify-center", className),
2109
2118
  ...props,
2110
2119
  children: [
2111
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icons.moreHorizontal, { className: "size-4" }),
2120
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react5.MoreHorizontal, { className: "size-4" }),
2112
2121
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "sr-only", children: "More" })
2113
2122
  ]
2114
2123
  }
@@ -2242,6 +2251,7 @@ function ButtonGroupSeparator({
2242
2251
  }
2243
2252
 
2244
2253
  // src/components/ui/calendar.tsx
2254
+ var import_lucide_react6 = require("lucide-react");
2245
2255
  var import_react_day_picker = require("react-day-picker");
2246
2256
  var import_persian = require("react-day-picker/persian");
2247
2257
  var import_locale = require("date-fns/locale");
@@ -2326,14 +2336,14 @@ function Calendar2({
2326
2336
  Chevron: ({ orientation }) => {
2327
2337
  if (usePersianCalendar) {
2328
2338
  if (orientation === "left") {
2329
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronRight, { className: "h-4 w-4" });
2339
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react6.ChevronRight, { className: "h-4 w-4" });
2330
2340
  }
2331
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronLeft, { className: "h-4 w-4" });
2341
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react6.ChevronLeft, { className: "h-4 w-4" });
2332
2342
  }
2333
2343
  if (orientation === "left") {
2334
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronLeft, { className: "h-4 w-4" });
2344
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react6.ChevronLeft, { className: "h-4 w-4" });
2335
2345
  }
2336
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronRight, { className: "h-4 w-4" });
2346
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react6.ChevronRight, { className: "h-4 w-4" });
2337
2347
  }
2338
2348
  },
2339
2349
  ...props
@@ -2385,6 +2395,7 @@ CardFooter.displayName = "CardFooter";
2385
2395
  // src/components/ui/carousel.tsx
2386
2396
  var React8 = __toESM(require("react"), 1);
2387
2397
  var import_embla_carousel_react = __toESM(require("embla-carousel-react"), 1);
2398
+ var import_lucide_react7 = require("lucide-react");
2388
2399
  var import_jsx_runtime18 = require("react/jsx-runtime");
2389
2400
  var CarouselContext = React8.createContext(null);
2390
2401
  function useCarousel() {
@@ -2578,7 +2589,7 @@ function CarouselPrevious({
2578
2589
  onClick: scrollPrev,
2579
2590
  ...props,
2580
2591
  children: [
2581
- isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowRight, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowLeft, {}),
2592
+ isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ArrowRight, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ArrowLeft, {}),
2582
2593
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "Previous slide" })
2583
2594
  ]
2584
2595
  }
@@ -2609,7 +2620,7 @@ function CarouselNext({
2609
2620
  onClick: scrollNext,
2610
2621
  ...props,
2611
2622
  children: [
2612
- isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowLeft, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowRight, {}),
2623
+ isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ArrowLeft, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ArrowRight, {}),
2613
2624
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "Next slide" })
2614
2625
  ]
2615
2626
  }
@@ -2618,6 +2629,7 @@ function CarouselNext({
2618
2629
 
2619
2630
  // src/components/ui/checkbox.tsx
2620
2631
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
2632
+ var import_lucide_react8 = require("lucide-react");
2621
2633
  var import_jsx_runtime19 = require("react/jsx-runtime");
2622
2634
  function Checkbox({
2623
2635
  className,
@@ -2637,7 +2649,7 @@ function Checkbox({
2637
2649
  {
2638
2650
  "data-slot": "checkbox-indicator",
2639
2651
  className: "grid place-content-center text-current transition-none",
2640
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icons.check, { className: "size-3.5" })
2652
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.CheckIcon, { className: "size-3.5" })
2641
2653
  }
2642
2654
  )
2643
2655
  }
@@ -2677,10 +2689,12 @@ function CollapsibleContent2({
2677
2689
 
2678
2690
  // src/components/ui/command.tsx
2679
2691
  var import_cmdk = require("cmdk");
2692
+ var import_lucide_react10 = require("lucide-react");
2680
2693
 
2681
2694
  // src/components/ui/dialog.tsx
2682
2695
  var React9 = __toESM(require("react"), 1);
2683
2696
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
2697
+ var import_lucide_react9 = require("lucide-react");
2684
2698
  var import_jsx_runtime21 = require("react/jsx-runtime");
2685
2699
  var Dialog = DialogPrimitive.Root;
2686
2700
  var DialogTrigger = DialogPrimitive.Trigger;
@@ -2712,7 +2726,7 @@ var DialogContent = React9.forwardRef(({ className, children, ...props }, ref) =
2712
2726
  children: [
2713
2727
  children,
2714
2728
  /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(DialogPrimitive.Close, { className: "absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-default focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-selection data-[state=open]:text-foreground-muted", children: [
2715
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icons.close, { className: "h-4 w-4" }),
2729
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react9.X, { className: "h-4 w-4" }),
2716
2730
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "sr-only", children: "Close" })
2717
2731
  ] })
2718
2732
  ]
@@ -2819,7 +2833,7 @@ function CommandInput({
2819
2833
  "data-slot": "command-input-wrapper",
2820
2834
  className: "flex h-9 items-center gap-2 border-b px-3",
2821
2835
  children: [
2822
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icons.search, { className: "size-4 shrink-0 opacity-50" }),
2836
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react10.SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
2823
2837
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2824
2838
  import_cmdk.Command.Input,
2825
2839
  {
@@ -2998,6 +3012,7 @@ CommentCard.displayName = "CommentCard";
2998
3012
 
2999
3013
  // src/components/ui/context-menu.tsx
3000
3014
  var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"), 1);
3015
+ var import_lucide_react11 = require("lucide-react");
3001
3016
  var import_jsx_runtime24 = require("react/jsx-runtime");
3002
3017
  function ContextMenu({
3003
3018
  ...props
@@ -3053,7 +3068,7 @@ function ContextMenuSubTrigger({
3053
3068
  ...props,
3054
3069
  children: [
3055
3070
  children,
3056
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.chevronRight, { className: "ms-auto rtl:rotate-180" })
3071
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.ChevronRightIcon, { className: "ms-auto rtl:rotate-180" })
3057
3072
  ]
3058
3073
  }
3059
3074
  );
@@ -3127,7 +3142,7 @@ function ContextMenuCheckboxItem({
3127
3142
  checked,
3128
3143
  ...props,
3129
3144
  children: [
3130
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.check, { className: "size-4" }) }) }),
3145
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.CheckIcon, { className: "size-4" }) }) }),
3131
3146
  children
3132
3147
  ]
3133
3148
  }
@@ -3148,7 +3163,7 @@ function ContextMenuRadioItem({
3148
3163
  ),
3149
3164
  ...props,
3150
3165
  children: [
3151
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
3166
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.CircleIcon, { className: "size-2 fill-current" }) }) }),
3152
3167
  children
3153
3168
  ]
3154
3169
  }
@@ -3204,6 +3219,7 @@ function ContextMenuShortcut({
3204
3219
 
3205
3220
  // src/components/ui/date-picker.tsx
3206
3221
  var import_date_fns = require("date-fns");
3222
+ var import_lucide_react12 = require("lucide-react");
3207
3223
 
3208
3224
  // src/components/ui/popover.tsx
3209
3225
  var React11 = __toESM(require("react"), 1);
@@ -3343,7 +3359,7 @@ function DatePicker({
3343
3359
  !value && "text-muted-foreground"
3344
3360
  ),
3345
3361
  disabled,
3346
- iconLeft: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icons.calendar, { className: "h-4 w-4" }),
3362
+ iconLeft: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react12.Calendar, { className: "h-4 w-4" }),
3347
3363
  children: displayText || placeholder || defaultPlaceholder
3348
3364
  }
3349
3365
  ) }),
@@ -3402,6 +3418,7 @@ function DatePicker({
3402
3418
 
3403
3419
  // src/components/ui/date-range-picker.tsx
3404
3420
  var React12 = __toESM(require("react"), 1);
3421
+ var import_lucide_react13 = require("lucide-react");
3405
3422
 
3406
3423
  // src/components/ui/label.tsx
3407
3424
  var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
@@ -3467,7 +3484,7 @@ function DateRangePicker({
3467
3484
  ),
3468
3485
  children: [
3469
3486
  formatDateRange2(value),
3470
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icons.chevronDown, { className: "size-4 opacity-50" })
3487
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.ChevronDownIcon, { className: "size-4 opacity-50" })
3471
3488
  ]
3472
3489
  }
3473
3490
  ) }),
@@ -3534,7 +3551,7 @@ function DateRangePickerInline({
3534
3551
  ),
3535
3552
  children: [
3536
3553
  formatDateRange2(value),
3537
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icons.calendar, { className: "size-4 opacity-50" })
3554
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.CalendarIcon, { className: "size-4 opacity-50" })
3538
3555
  ]
3539
3556
  }
3540
3557
  ) }),
@@ -3682,6 +3699,7 @@ function DrawerDescription({
3682
3699
 
3683
3700
  // src/components/ui/dropdown-menu.tsx
3684
3701
  var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
3702
+ var import_lucide_react14 = require("lucide-react");
3685
3703
  var import_jsx_runtime30 = require("react/jsx-runtime");
3686
3704
  function DropdownMenu({
3687
3705
  ...props
@@ -3764,7 +3782,7 @@ function DropdownMenuCheckboxItem({
3764
3782
  checked,
3765
3783
  ...props,
3766
3784
  children: [
3767
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.check, { className: "size-4" }) }) }),
3785
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react14.CheckIcon, { className: "size-4" }) }) }),
3768
3786
  children
3769
3787
  ]
3770
3788
  }
@@ -3796,7 +3814,7 @@ function DropdownMenuRadioItem({
3796
3814
  ),
3797
3815
  ...props,
3798
3816
  children: [
3799
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
3817
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react14.CircleIcon, { className: "size-2 fill-current" }) }) }),
3800
3818
  children
3801
3819
  ]
3802
3820
  }
@@ -3872,7 +3890,7 @@ function DropdownMenuSubTrigger({
3872
3890
  ...props,
3873
3891
  children: [
3874
3892
  children,
3875
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.chevronRight, { className: "ms-auto size-4 rtl:rotate-180" })
3893
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react14.ChevronRightIcon, { className: "ms-auto size-4 rtl:rotate-180" })
3876
3894
  ]
3877
3895
  }
3878
3896
  );
@@ -4301,15 +4319,20 @@ function HoverCardContent({
4301
4319
 
4302
4320
  // src/components/ui/tag-input.tsx
4303
4321
  var React14 = __toESM(require("react"), 1);
4322
+ var import_lucide_react15 = require("lucide-react");
4304
4323
  var import_class_variance_authority7 = require("class-variance-authority");
4305
4324
  var import_jsx_runtime35 = require("react/jsx-runtime");
4306
4325
  var tagInputVariants = (0, import_class_variance_authority7.cva)(
4307
- "flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
4326
+ cn(
4327
+ "flex min-h-[34px] w-full flex-wrap gap-1.5 rounded-md border border-control bg-foreground/[.026] px-3 py-1.5 text-sm text-foreground",
4328
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 focus-within:ring-offset-foreground-muted",
4329
+ "disabled:cursor-not-allowed disabled:text-foreground-muted disabled:opacity-50"
4330
+ ),
4308
4331
  {
4309
4332
  variants: {
4310
4333
  variant: {
4311
- default: "bg-background",
4312
- secondary: "bg-secondary"
4334
+ default: "",
4335
+ secondary: "bg-surface-200"
4313
4336
  }
4314
4337
  },
4315
4338
  defaultVariants: {
@@ -4380,7 +4403,7 @@ var TagInput = React14.forwardRef(
4380
4403
  Badge,
4381
4404
  {
4382
4405
  variant: "secondary",
4383
- className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4406
+ className: "gap-1 pe-1 ps-2 h-6 text-xs font-medium hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4384
4407
  children: [
4385
4408
  tag,
4386
4409
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
@@ -4394,7 +4417,7 @@ var TagInput = React14.forwardRef(
4394
4417
  className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
4395
4418
  disabled,
4396
4419
  children: [
4397
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icons.close, { className: "h-3 w-3 text-muted-foreground" }),
4420
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react15.X, { className: "h-3 w-3 text-muted-foreground" }),
4398
4421
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "sr-only", children: [
4399
4422
  "Remove ",
4400
4423
  tag
@@ -4414,7 +4437,7 @@ var TagInput = React14.forwardRef(
4414
4437
  value: inputValue,
4415
4438
  onChange: (e) => setInputValue(e.target.value),
4416
4439
  onKeyDown: handleKeyDown,
4417
- className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
4440
+ className: "flex-1 bg-transparent outline-none placeholder:text-foreground-muted min-w-[80px] text-sm leading-4",
4418
4441
  placeholder: value.length === 0 ? placeholder : void 0,
4419
4442
  disabled
4420
4443
  }
@@ -4428,15 +4451,20 @@ TagInput.displayName = "TagInput";
4428
4451
 
4429
4452
  // src/components/ui/hashtag-input.tsx
4430
4453
  var React15 = __toESM(require("react"), 1);
4454
+ var import_lucide_react16 = require("lucide-react");
4431
4455
  var import_class_variance_authority8 = require("class-variance-authority");
4432
4456
  var import_jsx_runtime36 = require("react/jsx-runtime");
4433
4457
  var hashtagInputVariants = (0, import_class_variance_authority8.cva)(
4434
- "flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
4458
+ cn(
4459
+ "flex min-h-[34px] w-full flex-wrap gap-1.5 rounded-md border border-control bg-foreground/[.026] px-3 py-1.5 text-sm text-foreground",
4460
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 focus-within:ring-offset-foreground-muted",
4461
+ "disabled:cursor-not-allowed disabled:text-foreground-muted disabled:opacity-50"
4462
+ ),
4435
4463
  {
4436
4464
  variants: {
4437
4465
  variant: {
4438
- default: "bg-background",
4439
- secondary: "bg-secondary"
4466
+ default: "",
4467
+ secondary: "bg-surface-200"
4440
4468
  }
4441
4469
  },
4442
4470
  defaultVariants: {
@@ -4507,7 +4535,7 @@ var HashtagInput = React15.forwardRef(
4507
4535
  Badge,
4508
4536
  {
4509
4537
  variant: "secondary",
4510
- className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4538
+ className: "gap-1 pe-1 ps-2 h-6 text-xs font-medium hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4511
4539
  children: [
4512
4540
  "#",
4513
4541
  tag,
@@ -4522,7 +4550,7 @@ var HashtagInput = React15.forwardRef(
4522
4550
  className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
4523
4551
  disabled,
4524
4552
  children: [
4525
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Icons.close, { className: "h-3 w-3 text-muted-foreground" }),
4553
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.X, { className: "h-3 w-3 text-muted-foreground" }),
4526
4554
  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "sr-only", children: [
4527
4555
  "Remove ",
4528
4556
  tag
@@ -4542,7 +4570,7 @@ var HashtagInput = React15.forwardRef(
4542
4570
  value: inputValue,
4543
4571
  onChange: (e) => setInputValue(e.target.value),
4544
4572
  onKeyDown: handleKeyDown,
4545
- className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
4573
+ className: "flex-1 bg-transparent outline-none placeholder:text-foreground-muted min-w-[80px] text-sm leading-4",
4546
4574
  placeholder: value.length === 0 ? placeholder : void 0,
4547
4575
  disabled
4548
4576
  }
@@ -4747,6 +4775,7 @@ function InputGroupTextarea({
4747
4775
  // src/components/ui/input-otp.tsx
4748
4776
  var React17 = __toESM(require("react"), 1);
4749
4777
  var import_input_otp = require("input-otp");
4778
+ var import_lucide_react17 = require("lucide-react");
4750
4779
  var import_jsx_runtime39 = require("react/jsx-runtime");
4751
4780
  function InputOTP({
4752
4781
  className,
@@ -4812,7 +4841,7 @@ function InputOTPSeparator({ ...props }) {
4812
4841
  role: "separator",
4813
4842
  dir: "ltr",
4814
4843
  ...props,
4815
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icons.minus, {})
4844
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react17.MinusIcon, {})
4816
4845
  }
4817
4846
  );
4818
4847
  }
@@ -4843,6 +4872,7 @@ var TooltipContent = React18.forwardRef(({ className, sideOffset = 4, ...props }
4843
4872
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
4844
4873
 
4845
4874
  // src/components/ui/instagram-post.tsx
4875
+ var import_lucide_react18 = require("lucide-react");
4846
4876
  var import_jsx_runtime41 = require("react/jsx-runtime");
4847
4877
  var instagramPostVariants = (0, import_class_variance_authority10.cva)(
4848
4878
  "relative border bg-background-surface-100",
@@ -4868,17 +4898,18 @@ function InstagramPostMedia({
4868
4898
  const handleImageError = (url) => {
4869
4899
  setImageError((prev) => ({ ...prev, [url]: true }));
4870
4900
  };
4871
- const renderPlaceholder = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "w-full h-full flex items-center justify-center bg-muted/10 dark:bg-muted/5", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.imageOff, { className: "size-12 text-muted-foreground/50" }) });
4901
+ const renderPlaceholder = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "w-full h-full flex items-center justify-center bg-muted/10 dark:bg-muted/5", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react18.ImageOff, { className: "size-12 text-muted-foreground/50" }) });
4872
4902
  if (!media || media.length === 0) {
4873
4903
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4874
4904
  "div",
4875
4905
  {
4876
4906
  className: cn(
4877
4907
  "flex items-center justify-center bg-muted/30",
4878
- variant === "vertical" ? "aspect-square" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
4908
+ variant === "vertical" ? "w-full" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
4879
4909
  ),
4910
+ style: variant === "vertical" ? { aspectRatio: "4/5" } : void 0,
4880
4911
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "text-center p-4", children: [
4881
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.imageOff, { className: "size-12 mx-auto mb-2 text-muted-foreground" }),
4912
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react18.ImageOff, { className: "size-12 mx-auto mb-2 text-muted-foreground" }),
4882
4913
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "text-sm text-muted-foreground", children: placeholderText })
4883
4914
  ] })
4884
4915
  }
@@ -4900,19 +4931,33 @@ function InstagramPostMedia({
4900
4931
  )
4901
4932
  ] });
4902
4933
  }
4903
- const ratio = getAspectRatio(item.aspectRatio || "1:1");
4904
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
4905
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4906
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4907
- "img",
4908
- {
4909
- src: item.url,
4910
- alt: "Post media",
4911
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4912
- onError: () => handleImageError(item.url)
4913
- }
4914
- )
4915
- ] });
4934
+ const aspectRatio = item.aspectRatio || "4:5";
4935
+ const isPortrait = aspectRatio === "9:16" || aspectRatio === "4:5";
4936
+ const instagramRatio = isPortrait ? "4/5" : getAspectRatioCSS(aspectRatio);
4937
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
4938
+ "div",
4939
+ {
4940
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
4941
+ style: { aspectRatio: instagramRatio },
4942
+ children: [
4943
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4944
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4945
+ "img",
4946
+ {
4947
+ src: item.url,
4948
+ alt: "Post media",
4949
+ className: cn(
4950
+ "w-full h-full transition-transform duration-300 group-hover:scale-[1.02]",
4951
+ // For portrait images: object-contain to show full image like Instagram
4952
+ // For square/landscape: object-cover
4953
+ isPortrait ? "object-contain" : "object-cover"
4954
+ ),
4955
+ onError: () => handleImageError(item.url)
4956
+ }
4957
+ )
4958
+ ]
4959
+ }
4960
+ );
4916
4961
  }
4917
4962
  if (mediaType === "video" || media.length === 1 && media[0].type === "video") {
4918
4963
  const item = media[0];
@@ -4930,19 +4975,31 @@ function InstagramPostMedia({
4930
4975
  )
4931
4976
  ] });
4932
4977
  }
4933
- const ratio = getAspectRatio(item.aspectRatio || "16:9");
4934
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
4935
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4936
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4937
- "img",
4938
- {
4939
- src: item.url,
4940
- alt: "Post media",
4941
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4942
- onError: () => handleImageError(item.url)
4943
- }
4944
- )
4945
- ] });
4978
+ const aspectRatio = item.aspectRatio || "4:5";
4979
+ const isPortrait = aspectRatio === "9:16" || aspectRatio === "4:5";
4980
+ const instagramRatio = isPortrait ? "4/5" : getAspectRatioCSS(aspectRatio);
4981
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
4982
+ "div",
4983
+ {
4984
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
4985
+ style: { aspectRatio: instagramRatio },
4986
+ children: [
4987
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4988
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4989
+ "img",
4990
+ {
4991
+ src: item.url,
4992
+ alt: "Post media",
4993
+ className: cn(
4994
+ "w-full h-full transition-transform duration-300 group-hover:scale-[1.02]",
4995
+ isPortrait ? "object-contain" : "object-cover"
4996
+ ),
4997
+ onError: () => handleImageError(item.url)
4998
+ }
4999
+ )
5000
+ ]
5001
+ }
5002
+ );
4946
5003
  }
4947
5004
  if (mediaType === "carousel" || media.length > 1) {
4948
5005
  if (variant === "horizontal") {
@@ -4964,38 +5021,47 @@ function InstagramPostMedia({
4964
5021
  ] }) });
4965
5022
  }
4966
5023
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Carousel, { className: "w-full", children: [
4967
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselContent, { children: media.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselItem, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
4968
- "div",
4969
- {
4970
- className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30",
4971
- style: { aspectRatio: getAspectRatio(item.aspectRatio || (item.type === "video" ? "16:9" : "1:1")) },
4972
- children: [
4973
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4974
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4975
- "img",
4976
- {
4977
- src: item.url,
4978
- alt: `Post media ${index + 1}`,
4979
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4980
- onError: () => handleImageError(item.url)
4981
- }
4982
- )
4983
- ]
4984
- }
4985
- ) }, index)) }),
5024
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselContent, { children: media.map((item, index) => {
5025
+ const itemAspect = item.aspectRatio || "4:5";
5026
+ const itemIsPortrait = itemAspect === "9:16" || itemAspect === "4:5";
5027
+ const itemRatio = itemIsPortrait ? "4/5" : getAspectRatioCSS(itemAspect);
5028
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselItem, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
5029
+ "div",
5030
+ {
5031
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
5032
+ style: { aspectRatio: itemRatio },
5033
+ children: [
5034
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
5035
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5036
+ "img",
5037
+ {
5038
+ src: item.url,
5039
+ alt: `Post media ${index + 1}`,
5040
+ className: cn(
5041
+ "w-full h-full transition-transform duration-300",
5042
+ itemIsPortrait ? "object-contain" : "object-cover"
5043
+ ),
5044
+ onError: () => handleImageError(item.url)
5045
+ }
5046
+ )
5047
+ ]
5048
+ }
5049
+ ) }, index);
5050
+ }) }),
4986
5051
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselPrevious, { className: "ms-2" }),
4987
5052
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CarouselNext, { className: "me-2" })
4988
5053
  ] });
4989
5054
  }
4990
5055
  return null;
4991
5056
  }
4992
- function getAspectRatio(ratio) {
5057
+ function getAspectRatioCSS(ratio) {
4993
5058
  const ratios = {
4994
- "16:9": 16 / 9,
4995
- "9:16": 9 / 16,
4996
- "1:1": 1,
4997
- "4:5": 4 / 5,
4998
- "5:4": 5 / 4
5059
+ "16:9": "16/9",
5060
+ "9:16": "4/5",
5061
+ // Instagram standard portrait
5062
+ "1:1": "1/1",
5063
+ "4:5": "4/5",
5064
+ "5:4": "5/4"
4999
5065
  };
5000
5066
  return ratios[ratio];
5001
5067
  }
@@ -5218,7 +5284,11 @@ function InstagramPostActions({
5218
5284
  onBooster,
5219
5285
  onAIAnalysis,
5220
5286
  onOpenInstagram,
5221
- instagramUrl
5287
+ instagramUrl,
5288
+ disableCommentAnalyzer = false,
5289
+ disableBooster = false,
5290
+ disableAIAnalysis = false,
5291
+ disableOpenInstagram = false
5222
5292
  }) {
5223
5293
  if (!showActions) return null;
5224
5294
  const handleOpenInstagram = () => {
@@ -5228,21 +5298,6 @@ function InstagramPostActions({
5228
5298
  window.open(instagramUrl, "_blank", "noopener,noreferrer");
5229
5299
  }
5230
5300
  };
5231
- const handleCommentAnalyzer = () => {
5232
- if (onCommentAnalyzer) {
5233
- onCommentAnalyzer();
5234
- }
5235
- };
5236
- const handleBooster = () => {
5237
- if (onBooster) {
5238
- onBooster();
5239
- }
5240
- };
5241
- const handleAIAnalysis = () => {
5242
- if (onAIAnalysis) {
5243
- onAIAnalysis();
5244
- }
5245
- };
5246
5301
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "absolute top-2 end-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity z-10", children: [
5247
5302
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
5248
5303
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
@@ -5250,13 +5305,17 @@ function InstagramPostActions({
5250
5305
  {
5251
5306
  variant: "ghost",
5252
5307
  size: "icon",
5253
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5254
- onClick: handleCommentAnalyzer,
5308
+ className: cn(
5309
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5310
+ disableCommentAnalyzer && "opacity-40 cursor-not-allowed pointer-events-none"
5311
+ ),
5312
+ onClick: disableCommentAnalyzer ? void 0 : onCommentAnalyzer,
5313
+ disabled: disableCommentAnalyzer,
5255
5314
  "aria-label": "Comment Analyzer",
5256
5315
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.messageCircle, { className: "size-4" })
5257
5316
  }
5258
5317
  ) }),
5259
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
5318
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: disableCommentAnalyzer ? "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
5260
5319
  ] }),
5261
5320
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
5262
5321
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
@@ -5264,13 +5323,17 @@ function InstagramPostActions({
5264
5323
  {
5265
5324
  variant: "ghost",
5266
5325
  size: "icon",
5267
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5268
- onClick: handleBooster,
5326
+ className: cn(
5327
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5328
+ disableBooster && "opacity-40 cursor-not-allowed pointer-events-none"
5329
+ ),
5330
+ onClick: disableBooster ? void 0 : onBooster,
5331
+ disabled: disableBooster,
5269
5332
  "aria-label": "Booster",
5270
5333
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.rocket, { className: "size-4" })
5271
5334
  }
5272
5335
  ) }),
5273
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: "\u0628\u0648\u0633\u062A\u0631" }) })
5336
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: disableBooster ? "\u0628\u0648\u0633\u062A\u0631 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u0628\u0648\u0633\u062A\u0631" }) })
5274
5337
  ] }),
5275
5338
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
5276
5339
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
@@ -5278,13 +5341,17 @@ function InstagramPostActions({
5278
5341
  {
5279
5342
  variant: "ghost",
5280
5343
  size: "icon",
5281
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5282
- onClick: handleAIAnalysis,
5344
+ className: cn(
5345
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5346
+ disableAIAnalysis && "opacity-40 cursor-not-allowed pointer-events-none"
5347
+ ),
5348
+ onClick: disableAIAnalysis ? void 0 : onAIAnalysis,
5349
+ disabled: disableAIAnalysis,
5283
5350
  "aria-label": "AI Analysis",
5284
5351
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.sparkles, { className: "size-4" })
5285
5352
  }
5286
5353
  ) }),
5287
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
5354
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: disableAIAnalysis ? "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
5288
5355
  ] }),
5289
5356
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
5290
5357
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
@@ -5292,13 +5359,17 @@ function InstagramPostActions({
5292
5359
  {
5293
5360
  variant: "ghost",
5294
5361
  size: "icon",
5295
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5296
- onClick: handleOpenInstagram,
5362
+ className: cn(
5363
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5364
+ disableOpenInstagram && "opacity-40 cursor-not-allowed pointer-events-none"
5365
+ ),
5366
+ onClick: disableOpenInstagram ? void 0 : handleOpenInstagram,
5367
+ disabled: disableOpenInstagram,
5297
5368
  "aria-label": "Open on Instagram",
5298
5369
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.instagram, { className: "size-4" })
5299
5370
  }
5300
5371
  ) }),
5301
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645" }) })
5372
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { children: disableOpenInstagram ? "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645" }) })
5302
5373
  ] })
5303
5374
  ] }) });
5304
5375
  }
@@ -5354,6 +5425,10 @@ var InstagramPost = React19.forwardRef(
5354
5425
  onAIAnalysis,
5355
5426
  onOpenInstagram,
5356
5427
  instagramUrl,
5428
+ disableCommentAnalyzer = false,
5429
+ disableBooster = false,
5430
+ disableAIAnalysis = false,
5431
+ disableOpenInstagram = false,
5357
5432
  placeholderText,
5358
5433
  dir,
5359
5434
  ...props
@@ -5375,7 +5450,11 @@ var InstagramPost = React19.forwardRef(
5375
5450
  onBooster,
5376
5451
  onAIAnalysis,
5377
5452
  onOpenInstagram,
5378
- instagramUrl
5453
+ instagramUrl,
5454
+ disableCommentAnalyzer,
5455
+ disableBooster,
5456
+ disableAIAnalysis,
5457
+ disableOpenInstagram
5379
5458
  }
5380
5459
  ),
5381
5460
  isVertical ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
@@ -5480,6 +5559,7 @@ function KbdGroup({ className, ...props }) {
5480
5559
 
5481
5560
  // src/components/ui/menubar.tsx
5482
5561
  var MenubarPrimitive = __toESM(require("@radix-ui/react-menubar"), 1);
5562
+ var import_lucide_react19 = require("lucide-react");
5483
5563
  var import_jsx_runtime43 = require("react/jsx-runtime");
5484
5564
  function Menubar({
5485
5565
  className,
@@ -5592,7 +5672,7 @@ function MenubarCheckboxItem({
5592
5672
  checked,
5593
5673
  ...props,
5594
5674
  children: [
5595
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.check, { className: "size-4" }) }) }),
5675
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react19.CheckIcon, { className: "size-4" }) }) }),
5596
5676
  children
5597
5677
  ]
5598
5678
  }
@@ -5613,7 +5693,7 @@ function MenubarRadioItem({
5613
5693
  ),
5614
5694
  ...props,
5615
5695
  children: [
5616
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
5696
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react19.CircleIcon, { className: "size-2 fill-current" }) }) }),
5617
5697
  children
5618
5698
  ]
5619
5699
  }
@@ -5689,7 +5769,7 @@ function MenubarSubTrigger({
5689
5769
  ...props,
5690
5770
  children: [
5691
5771
  children,
5692
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.chevronRight, { className: "ms-auto h-4 w-4 rtl:rotate-180" })
5772
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react19.ChevronRightIcon, { className: "ms-auto h-4 w-4 rtl:rotate-180" })
5693
5773
  ]
5694
5774
  }
5695
5775
  );
@@ -5713,6 +5793,7 @@ function MenubarSubContent({
5713
5793
 
5714
5794
  // src/components/ui/metric-card.tsx
5715
5795
  var React20 = __toESM(require("react"), 1);
5796
+ var import_lucide_react20 = require("lucide-react");
5716
5797
  var import_date_fns2 = require("date-fns");
5717
5798
 
5718
5799
  // src/components/ui/skeleton.tsx
@@ -5751,7 +5832,7 @@ var MetricCard = React20.forwardRef(
5751
5832
  Card,
5752
5833
  {
5753
5834
  ref,
5754
- className: cn("py-4 space-y-3 @container", className),
5835
+ className: cn("py-4 space-y-3", className),
5755
5836
  ...props,
5756
5837
  children
5757
5838
  }
@@ -5776,7 +5857,7 @@ var MetricCardHeader = React20.forwardRef(
5776
5857
  target: "_blank",
5777
5858
  rel: "noopener noreferrer",
5778
5859
  className: "text-foreground-lighter hover:text-foreground transition-colors",
5779
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icons.externalLink, { className: "h-3.5 w-3.5" })
5860
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react20.ExternalLink, { className: "h-3.5 w-3.5" })
5780
5861
  }
5781
5862
  )
5782
5863
  ]
@@ -5806,7 +5887,7 @@ var MetricCardLabel = React20.forwardRef(
5806
5887
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Tooltip, { children: [
5807
5888
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center gap-1.5 cursor-help", children: [
5808
5889
  label,
5809
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icons.info, { className: "h-3.5 w-3.5 text-foreground-lighter" })
5890
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react20.Info, { className: "h-3.5 w-3.5 text-foreground-lighter" })
5810
5891
  ] }) }),
5811
5892
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "max-w-xs", children: tooltip }) })
5812
5893
  ] }) });
@@ -6065,6 +6146,7 @@ var MetricCardSparkline = React20.forwardRef(
6065
6146
  MetricCardSparkline.displayName = "MetricCardSparkline";
6066
6147
 
6067
6148
  // src/components/ui/native-select.tsx
6149
+ var import_lucide_react21 = require("lucide-react");
6068
6150
  var import_jsx_runtime46 = require("react/jsx-runtime");
6069
6151
  function NativeSelect({ className, ...props }) {
6070
6152
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
@@ -6096,7 +6178,7 @@ function NativeSelect({ className, ...props }) {
6096
6178
  }
6097
6179
  ),
6098
6180
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
6099
- Icons.chevronDown,
6181
+ import_lucide_react21.ChevronDownIcon,
6100
6182
  {
6101
6183
  className: "pointer-events-none absolute top-1/2 end-3 size-4 -translate-y-1/2 text-foreground-muted select-none",
6102
6184
  "aria-hidden": "true",
@@ -6127,6 +6209,7 @@ function NativeSelectOptGroup({
6127
6209
  // src/components/ui/navigation-menu.tsx
6128
6210
  var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"), 1);
6129
6211
  var import_class_variance_authority11 = require("class-variance-authority");
6212
+ var import_lucide_react22 = require("lucide-react");
6130
6213
  var import_jsx_runtime47 = require("react/jsx-runtime");
6131
6214
  function NavigationMenu({
6132
6215
  className,
@@ -6198,7 +6281,7 @@ function NavigationMenuTrigger({
6198
6281
  children,
6199
6282
  " ",
6200
6283
  /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
6201
- Icons.chevronDown,
6284
+ import_lucide_react22.ChevronDownIcon,
6202
6285
  {
6203
6286
  className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
6204
6287
  "aria-hidden": "true"
@@ -6285,6 +6368,7 @@ function NavigationMenuIndicator({
6285
6368
 
6286
6369
  // src/components/ui/pagination.tsx
6287
6370
  var React21 = __toESM(require("react"), 1);
6371
+ var import_lucide_react23 = require("lucide-react");
6288
6372
  var import_jsx_runtime48 = require("react/jsx-runtime");
6289
6373
  var PaginationDirectionContext = React21.createContext("rtl");
6290
6374
  function usePaginationDirection() {
@@ -6373,7 +6457,7 @@ function PaginationPrevious({
6373
6457
  const dir = usePaginationDirection();
6374
6458
  const isRTL = dir === "rtl";
6375
6459
  const label = isRTL ? "\u0642\u0628\u0644\u06CC" : "Previous";
6376
- const Icon2 = isRTL ? Icons.chevronRight : Icons.chevronLeft;
6460
+ const Icon2 = isRTL ? import_lucide_react23.ChevronRightIcon : import_lucide_react23.ChevronLeftIcon;
6377
6461
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
6378
6462
  PaginationLink,
6379
6463
  {
@@ -6399,7 +6483,7 @@ function PaginationNext({
6399
6483
  const dir = usePaginationDirection();
6400
6484
  const isRTL = dir === "rtl";
6401
6485
  const label = isRTL ? "\u0628\u0639\u062F\u06CC" : "Next";
6402
- const Icon2 = isRTL ? Icons.chevronLeft : Icons.chevronRight;
6486
+ const Icon2 = isRTL ? import_lucide_react23.ChevronLeftIcon : import_lucide_react23.ChevronRightIcon;
6403
6487
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
6404
6488
  PaginationLink,
6405
6489
  {
@@ -6433,7 +6517,7 @@ function PaginationEllipsis({
6433
6517
  className: cn("flex size-9 items-center justify-center", className),
6434
6518
  ...props,
6435
6519
  children: [
6436
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Icons.moreHorizontal, { className: "size-4" }),
6520
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react23.MoreHorizontalIcon, { className: "size-4" }),
6437
6521
  /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "sr-only", children: "More pages" })
6438
6522
  ]
6439
6523
  }
@@ -6634,7 +6718,7 @@ var ProfileCard = React22.forwardRef(
6634
6718
  {
6635
6719
  ref,
6636
6720
  className: cn(
6637
- "flex flex-col items-center rounded-lg shadow-sm transition-colors @container",
6721
+ "flex flex-col items-center rounded-lg shadow-sm transition-colors",
6638
6722
  variantClasses[variant],
6639
6723
  currentSize.container,
6640
6724
  onCardClick && "cursor-pointer hover:bg-surface-200",
@@ -6643,7 +6727,7 @@ var ProfileCard = React22.forwardRef(
6643
6727
  onClick: onCardClick,
6644
6728
  ...props,
6645
6729
  children: [
6646
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "relative flex-shrink-0", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6730
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "relative flex-shrink-0", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-brand-400 via-brand to-brand-400", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6647
6731
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
6648
6732
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
6649
6733
  ] }) }) : avatarBorderVariant === "primary" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-offset-2 ring-offset-background ring-primary"), children: [
@@ -6721,7 +6805,7 @@ var ProfileInfo = React23.forwardRef(
6721
6805
  transparent: "bg-transparent"
6722
6806
  };
6723
6807
  const borderClasses = {
6724
- gold: "ring-2 ring-offset-2 ring-offset-background [--tw-ring-color:conic-gradient(from_180deg,#f59e0b,#fbbf24,#f59e0b)]",
6808
+ gold: "ring-2 ring-offset-2 ring-offset-background [--tw-ring-color:conic-gradient(from_180deg,#22c55e,#4ade80,#22c55e)]",
6725
6809
  primary: "ring-2 ring-offset-2 ring-offset-background ring-primary",
6726
6810
  none: ""
6727
6811
  };
@@ -6741,7 +6825,7 @@ var ProfileInfo = React23.forwardRef(
6741
6825
  ...props,
6742
6826
  children: [
6743
6827
  /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-4", children: [
6744
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "relative", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6828
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "relative", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-brand-400 via-brand to-brand-400", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6745
6829
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
6746
6830
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
6747
6831
  ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Avatar, { className: cn(currentSize.avatar, borderClasses[avatarBorderVariant]), children: [
@@ -6798,6 +6882,7 @@ ProfileInfo.displayName = "ProfileInfo";
6798
6882
 
6799
6883
  // src/components/ui/engagement-rate.tsx
6800
6884
  var React24 = __toESM(require("react"), 1);
6885
+ var import_lucide_react24 = require("lucide-react");
6801
6886
  var import_jsx_runtime52 = require("react/jsx-runtime");
6802
6887
  var convertToLocalNumbers2 = (text, locale) => {
6803
6888
  if (locale === "fa" || locale === "ar") {
@@ -6857,17 +6942,17 @@ var getGroupIcon = (group) => {
6857
6942
  const iconClass = "w-12 h-12 text-primary";
6858
6943
  switch (group) {
6859
6944
  case "nano":
6860
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.users, { className: iconClass });
6945
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.Users, { className: iconClass });
6861
6946
  case "micro":
6862
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.userCheck, { className: iconClass });
6947
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.UserCheck, { className: iconClass });
6863
6948
  case "mid":
6864
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.trendingUp, { className: iconClass });
6949
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.TrendingUp, { className: iconClass });
6865
6950
  case "macro":
6866
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.award, { className: iconClass });
6951
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.Award, { className: iconClass });
6867
6952
  case "mega":
6868
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.crown, { className: iconClass });
6953
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.Crown, { className: iconClass });
6869
6954
  default:
6870
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.users, { className: iconClass });
6955
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react24.Users, { className: iconClass });
6871
6956
  }
6872
6957
  };
6873
6958
  var translations = {
@@ -6993,10 +7078,10 @@ var EngagementRate = React24.forwardRef(
6993
7078
  min: r.average[0],
6994
7079
  max: r.average[1],
6995
7080
  display: `${r.average[0]}% - ${r.average[1]}%`,
6996
- color: "#eab308",
6997
- // yellow-500
6998
- hoverColor: "#ca8a04"
6999
- // yellow-600
7081
+ color: "#22c55e",
7082
+ // brand green (green-500)
7083
+ hoverColor: "#16a34a"
7084
+ // brand green hover (green-600)
7000
7085
  },
7001
7086
  {
7002
7087
  label: t.couldBeImproved,
@@ -7337,10 +7422,10 @@ var EngagementRateBar = React25.forwardRef(
7337
7422
  label: t.average,
7338
7423
  min: r.average[0],
7339
7424
  max: r.average[1],
7340
- color: "#eab308",
7341
- // yellow-500
7342
- hoverColor: "#ca8a04"
7343
- // yellow-600
7425
+ color: "#22c55e",
7426
+ // brand green (green-500)
7427
+ hoverColor: "#16a34a"
7428
+ // brand green hover (green-600)
7344
7429
  },
7345
7430
  {
7346
7431
  label: t.couldBeImproved,
@@ -7480,7 +7565,7 @@ var progressIndicatorVariants = (0, import_class_variance_authority12.cva)(
7480
7565
  primary: "bg-brand-500",
7481
7566
  secondary: "bg-foreground",
7482
7567
  success: "bg-green-500",
7483
- warning: "bg-yellow-500",
7568
+ warning: "bg-warning-500",
7484
7569
  destructive: "bg-destructive-500"
7485
7570
  }
7486
7571
  },
@@ -7527,6 +7612,7 @@ function Progress({
7527
7612
 
7528
7613
  // src/components/ui/radio-group.tsx
7529
7614
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
7615
+ var import_lucide_react25 = require("lucide-react");
7530
7616
  var import_jsx_runtime55 = require("react/jsx-runtime");
7531
7617
  function RadioGroup4({
7532
7618
  className,
@@ -7559,7 +7645,7 @@ function RadioGroupItem({
7559
7645
  {
7560
7646
  "data-slot": "radio-group-indicator",
7561
7647
  className: "relative flex items-center justify-center",
7562
- children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icons.circle, { className: "fill-brand absolute top-1/2 start-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rtl:translate-x-1/2" })
7648
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react25.CircleIcon, { className: "fill-brand absolute top-1/2 start-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rtl:translate-x-1/2" })
7563
7649
  }
7564
7650
  )
7565
7651
  }
@@ -7627,6 +7713,7 @@ var RadioCardDescription = React26.forwardRef(({ className, ...props }, ref) =>
7627
7713
  RadioCardDescription.displayName = "RadioCardDescription";
7628
7714
 
7629
7715
  // src/components/ui/resizable.tsx
7716
+ var import_lucide_react26 = require("lucide-react");
7630
7717
  var ResizablePrimitive = __toESM(require("react-resizable-panels"), 1);
7631
7718
  var import_jsx_runtime57 = require("react/jsx-runtime");
7632
7719
  function ResizablePanelGroup({
@@ -7664,7 +7751,7 @@ function ResizableHandle({
7664
7751
  className
7665
7752
  ),
7666
7753
  ...props,
7667
- children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icons.gripVertical, { className: "size-2.5" }) })
7754
+ children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react26.GripVerticalIcon, { className: "size-2.5" }) })
7668
7755
  }
7669
7756
  );
7670
7757
  }
@@ -7729,6 +7816,7 @@ function ScrollBar({
7729
7816
  // src/components/ui/select.tsx
7730
7817
  var React27 = __toESM(require("react"), 1);
7731
7818
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
7819
+ var import_lucide_react27 = require("lucide-react");
7732
7820
  var import_class_variance_authority13 = require("class-variance-authority");
7733
7821
  var import_jsx_runtime59 = require("react/jsx-runtime");
7734
7822
  var Select = SelectPrimitive.Root;
@@ -7767,7 +7855,7 @@ var SelectTrigger = React27.forwardRef(({ className, children, size, ...props },
7767
7855
  ...props,
7768
7856
  children: [
7769
7857
  children,
7770
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronDown, { className: "h-4 w-4 text-foreground-lighter flex-shrink-0", strokeWidth: 1.5 }) })
7858
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.ChevronDown, { className: "h-4 w-4 text-foreground-lighter flex-shrink-0", strokeWidth: 1.5 }) })
7771
7859
  ]
7772
7860
  }
7773
7861
  ));
@@ -7781,7 +7869,7 @@ var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) =>
7781
7869
  className
7782
7870
  ),
7783
7871
  ...props,
7784
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronUp, { className: "h-4 w-4" })
7872
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.ChevronUp, { className: "h-4 w-4" })
7785
7873
  }
7786
7874
  ));
7787
7875
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
@@ -7794,7 +7882,7 @@ var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) =
7794
7882
  className
7795
7883
  ),
7796
7884
  ...props,
7797
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronDown, { className: "h-4 w-4" })
7885
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.ChevronDown, { className: "h-4 w-4" })
7798
7886
  }
7799
7887
  ));
7800
7888
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
@@ -7849,7 +7937,7 @@ var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) =>
7849
7937
  ),
7850
7938
  ...props,
7851
7939
  children: [
7852
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.ItemIndicator, { className: "h-3.5 w-3.5 bg-foreground rounded-full flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.check, { className: "h-2 w-2 text-background-overlay", strokeWidth: 6 }) }) }),
7940
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.ItemIndicator, { className: "h-3.5 w-3.5 bg-foreground rounded-full flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.Check, { className: "h-2 w-2 text-background-overlay", strokeWidth: 6 }) }) }),
7853
7941
  /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.ItemText, { children: typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children }) : children })
7854
7942
  ]
7855
7943
  }
@@ -7867,6 +7955,7 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
7867
7955
 
7868
7956
  // src/components/ui/sheet.tsx
7869
7957
  var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
7958
+ var import_lucide_react28 = require("lucide-react");
7870
7959
  var import_jsx_runtime60 = require("react/jsx-runtime");
7871
7960
  function Sheet({ ...props }) {
7872
7961
  return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
@@ -7926,7 +8015,7 @@ function SheetContent({
7926
8015
  children: [
7927
8016
  children,
7928
8017
  /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(SheetPrimitive.Close, { className: "absolute top-4 end-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-default focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-selection data-[state=open]:text-foreground-muted", children: [
7929
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icons.close, { className: "size-4" }),
8018
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react28.XIcon, { className: "size-4" }),
7930
8019
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "sr-only", children: "Close" })
7931
8020
  ] })
7932
8021
  ]
@@ -7985,6 +8074,7 @@ function SheetDescription({
7985
8074
  var React29 = __toESM(require("react"), 1);
7986
8075
  var import_react_slot5 = require("@radix-ui/react-slot");
7987
8076
  var import_class_variance_authority14 = require("class-variance-authority");
8077
+ var import_lucide_react29 = require("lucide-react");
7988
8078
 
7989
8079
  // src/hooks/use-mobile.ts
7990
8080
  var React28 = __toESM(require("react"), 1);
@@ -8202,7 +8292,7 @@ function SidebarTrigger({
8202
8292
  },
8203
8293
  ...props,
8204
8294
  children: [
8205
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icons.panelLeft, {}),
8295
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.PanelLeftIcon, {}),
8206
8296
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
8207
8297
  ]
8208
8298
  }
@@ -8695,15 +8785,16 @@ function Slider({
8695
8785
  }
8696
8786
 
8697
8787
  // src/components/ui/sonner.tsx
8788
+ var import_lucide_react30 = require("lucide-react");
8698
8789
  var import_next_themes = require("next-themes");
8699
8790
  var import_sonner = require("sonner");
8700
8791
  var import_sonner2 = require("sonner");
8701
8792
  var import_jsx_runtime63 = require("react/jsx-runtime");
8702
8793
  var SONNER_DEFAULT_DURATION = 4e3;
8703
- var StatusIconSuccess = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-brand-600 dark:bg-brand-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.check, { className: "size-3 text-white", strokeWidth: 3 }) });
8704
- var StatusIconInfo = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-foreground-lighter p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.info, { className: "size-3 text-background-surface-200" }) });
8705
- var StatusIconWarning = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-warning-600 dark:bg-warning-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.alertTriangle, { className: "size-3 text-white" }) });
8706
- var StatusIconError = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-destructive-600 dark:bg-destructive-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.xCircle, { className: "size-3 text-white" }) });
8794
+ var StatusIconSuccess = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-brand-600 dark:bg-brand-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.CheckIcon, { className: "size-3 text-white", strokeWidth: 3 }) });
8795
+ var StatusIconInfo = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-foreground-lighter p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.InfoIcon, { className: "size-3 text-background-surface-200" }) });
8796
+ var StatusIconWarning = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-warning-600 dark:bg-warning-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.TriangleAlertIcon, { className: "size-3 text-white" }) });
8797
+ var StatusIconError = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-destructive-600 dark:bg-destructive-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.XCircleIcon, { className: "size-3 text-white" }) });
8707
8798
  var Toaster = ({
8708
8799
  dir = "rtl",
8709
8800
  position = "bottom-left",
@@ -8720,7 +8811,7 @@ var Toaster = ({
8720
8811
  info: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconInfo, {}),
8721
8812
  warning: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconWarning, {}),
8722
8813
  error: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconError, {}),
8723
- loading: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.loader, { className: "size-4 animate-spin" })
8814
+ loading: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.Loader2Icon, { className: "size-4 animate-spin" })
8724
8815
  },
8725
8816
  theme,
8726
8817
  className: "toaster group pointer-events-auto",
@@ -9104,136 +9195,236 @@ function resolveCssColor(styles, variable, fallback) {
9104
9195
  if (raw.includes("%")) return `hsl(${raw})`;
9105
9196
  return raw;
9106
9197
  }
9107
- function addOpacityToColor(color, opacity) {
9108
- if (color.startsWith("hsl(")) {
9109
- return color.replace(")", ` / ${opacity})`);
9110
- }
9111
- if (color.startsWith("rgb(")) {
9112
- return color.replace("rgb(", "rgba(").replace(")", `, ${opacity})`);
9113
- }
9114
- return color;
9115
- }
9116
- var CHART_FONT_FAMILY = "Yekan Bakh, system-ui, -apple-system, sans-serif";
9117
- function createNivoTheme(styles, fallbacks) {
9118
- const fb = { ...DEFAULT_FALLBACKS, ...fallbacks };
9119
- const get = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9120
- const foreground = get("--foreground", fb.foreground);
9121
- const foregroundMuted = get("--foreground-muted", fb.foregroundMuted);
9122
- const border = get("--border", fb.border);
9123
- const background = get("--background", fb.background);
9124
- return {
9198
+
9199
+ // src/components/charts/PartoLineChart.tsx
9200
+ var import_jsx_runtime69 = require("react/jsx-runtime");
9201
+ var FALLBACKS = {
9202
+ foreground: "hsl(0 0% 98%)",
9203
+ border: "hsl(0 0% 45%)",
9204
+ mutedForeground: "hsl(0 0% 55%)",
9205
+ background: "hsl(0 0% 98%)",
9206
+ foregroundMuted: "hsl(0 0% 55%)",
9207
+ chart1: "hsl(12 76% 61%)",
9208
+ chart2: "hsl(173 58% 39%)",
9209
+ chart3: "hsl(197 37% 24%)",
9210
+ chart4: "hsl(43 74% 66%)",
9211
+ chart5: "hsl(27 87% 67%)"
9212
+ };
9213
+ function PartoLineChart({ className, ...props }) {
9214
+ const styles = useRootStyles();
9215
+ const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9216
+ const addOpacity = (color, opacity) => {
9217
+ if (color.startsWith("hsl(")) {
9218
+ return color.replace(")", ` / ${opacity})`);
9219
+ }
9220
+ if (color.startsWith("rgb(")) {
9221
+ return color.replace("rgb(", "rgba(").replace(")", `, ${opacity})`);
9222
+ }
9223
+ return color;
9224
+ };
9225
+ const nivoTheme = {
9125
9226
  background: "transparent",
9126
9227
  text: {
9127
- fontFamily: CHART_FONT_FAMILY,
9128
- fill: foreground
9228
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9229
+ fill: getColor("--foreground", FALLBACKS.foreground)
9129
9230
  },
9130
9231
  axis: {
9131
9232
  domain: {
9132
9233
  line: {
9133
- stroke: border,
9234
+ stroke: getColor("--border", FALLBACKS.border),
9134
9235
  strokeWidth: 1
9135
9236
  }
9136
9237
  },
9137
9238
  ticks: {
9138
9239
  line: {
9139
- stroke: border,
9240
+ stroke: getColor("--border", FALLBACKS.border),
9140
9241
  strokeWidth: 1
9141
9242
  },
9142
9243
  text: {
9143
- fontFamily: CHART_FONT_FAMILY,
9144
- fill: foregroundMuted
9244
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9245
+ fill: getColor("--foreground-muted", FALLBACKS.foregroundMuted)
9145
9246
  }
9146
9247
  },
9147
9248
  legend: {
9148
9249
  text: {
9149
- fontFamily: CHART_FONT_FAMILY,
9150
- fill: foreground
9250
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9251
+ fill: getColor("--foreground", FALLBACKS.foreground)
9151
9252
  }
9152
9253
  }
9153
9254
  },
9154
9255
  grid: {
9155
9256
  line: {
9156
- stroke: border,
9257
+ stroke: getColor("--border", FALLBACKS.border),
9157
9258
  strokeWidth: 1,
9158
9259
  strokeOpacity: 0.5
9159
9260
  }
9160
9261
  },
9161
9262
  tooltip: {
9162
9263
  container: {
9163
- fontFamily: CHART_FONT_FAMILY,
9164
- background,
9165
- color: foreground,
9264
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9265
+ background: getColor("--background", FALLBACKS.background),
9266
+ color: getColor("--foreground", FALLBACKS.foreground),
9166
9267
  fontSize: 12,
9167
9268
  borderRadius: "8px",
9168
- border: `1px solid ${addOpacityToColor(border, 0.5)}`,
9269
+ border: `1px solid ${addOpacity(getColor("--border", FALLBACKS.border), 0.5)}`,
9169
9270
  boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
9170
9271
  padding: "10px"
9171
9272
  }
9172
9273
  },
9173
9274
  legends: {
9174
9275
  text: {
9175
- fontFamily: CHART_FONT_FAMILY,
9176
- fill: foreground
9276
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9277
+ fill: getColor("--foreground", FALLBACKS.foreground)
9177
9278
  }
9178
9279
  }
9179
9280
  };
9180
- }
9181
- var DEFAULT_FALLBACKS = {
9182
- foreground: "hsl(0 0% 9%)",
9183
- foregroundMuted: "hsl(0 0% 44%)",
9184
- border: "hsl(0 0% 88%)",
9185
- background: "hsl(0 0% 99%)",
9186
- chart1: "hsl(152.9deg 60% 52.9%)",
9187
- chart2: "hsl(173 58% 39%)",
9188
- chart3: "hsl(197 37% 24%)",
9189
- chart4: "hsl(43 74% 66%)",
9190
- chart5: "hsl(27 87% 67%)"
9191
- };
9192
- function resolveChartColors(styles, fallbacks) {
9193
- const fb = { ...DEFAULT_FALLBACKS, ...fallbacks };
9194
- const get = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9195
- return [
9196
- get("--chart-1", fb.chart1),
9197
- get("--chart-2", fb.chart2),
9198
- get("--chart-3", fb.chart3),
9199
- get("--chart-4", fb.chart4),
9200
- get("--chart-5", fb.chart5)
9281
+ const defaultColors = [
9282
+ getColor("--chart-1", FALLBACKS.chart1),
9283
+ getColor("--chart-2", FALLBACKS.chart2),
9284
+ getColor("--chart-3", FALLBACKS.chart3),
9285
+ getColor("--chart-4", FALLBACKS.chart4),
9286
+ getColor("--chart-5", FALLBACKS.chart5)
9201
9287
  ];
9202
- }
9203
-
9204
- // src/components/charts/PartoLineChart.tsx
9205
- var import_jsx_runtime69 = require("react/jsx-runtime");
9206
- function PartoLineChart({ className, ...props }) {
9207
- const styles = useRootStyles();
9208
- const nivoTheme = createNivoTheme(styles);
9209
- const defaultColors = resolveChartColors(styles);
9210
9288
  return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_line.ResponsiveLine, { theme: nivoTheme, colors: defaultColors, ...props }) });
9211
9289
  }
9212
9290
 
9213
9291
  // src/components/charts/PartoBarChart.tsx
9214
9292
  var import_bar = require("@nivo/bar");
9215
9293
  var import_jsx_runtime70 = require("react/jsx-runtime");
9294
+ var FALLBACKS2 = {
9295
+ foreground: "hsl(0 0% 98%)",
9296
+ border: "hsl(0 0% 45%)",
9297
+ mutedForeground: "hsl(0 0% 55%)",
9298
+ popover: "hsl(0 0% 12%)",
9299
+ popoverForeground: "hsl(0 0% 98%)",
9300
+ chart1: "hsl(12 76% 61%)",
9301
+ chart2: "hsl(173 58% 39%)",
9302
+ chart3: "hsl(197 37% 24%)",
9303
+ chart4: "hsl(43 74% 66%)",
9304
+ chart5: "hsl(27 87% 67%)"
9305
+ };
9216
9306
  function PartoBarChart({ className, ...props }) {
9217
9307
  const styles = useRootStyles();
9218
- const nivoTheme = createNivoTheme(styles);
9219
- const defaultColors = resolveChartColors(styles);
9308
+ const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9309
+ const nivoTheme = {
9310
+ background: "transparent",
9311
+ text: {
9312
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9313
+ fill: getColor("--foreground", FALLBACKS2.foreground)
9314
+ },
9315
+ axis: {
9316
+ domain: {
9317
+ line: {
9318
+ stroke: getColor("--border", FALLBACKS2.border),
9319
+ strokeWidth: 1
9320
+ }
9321
+ },
9322
+ ticks: {
9323
+ line: {
9324
+ stroke: getColor("--border", FALLBACKS2.border),
9325
+ strokeWidth: 1
9326
+ },
9327
+ text: {
9328
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9329
+ fill: getColor("--muted-foreground", FALLBACKS2.mutedForeground)
9330
+ }
9331
+ },
9332
+ legend: {
9333
+ text: {
9334
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9335
+ fill: getColor("--foreground", FALLBACKS2.foreground)
9336
+ }
9337
+ }
9338
+ },
9339
+ grid: {
9340
+ line: {
9341
+ stroke: getColor("--border", FALLBACKS2.border),
9342
+ strokeWidth: 1,
9343
+ strokeOpacity: 0.4
9344
+ }
9345
+ },
9346
+ tooltip: {
9347
+ container: {
9348
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9349
+ background: getColor("--popover", FALLBACKS2.popover),
9350
+ color: getColor("--popover-foreground", FALLBACKS2.popoverForeground),
9351
+ fontSize: 12,
9352
+ borderRadius: "var(--radius)",
9353
+ boxShadow: "0 2px 12px rgba(0,0,0,0.15)",
9354
+ padding: "8px 12px"
9355
+ }
9356
+ },
9357
+ legends: {
9358
+ text: {
9359
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9360
+ fill: getColor("--foreground", FALLBACKS2.foreground)
9361
+ }
9362
+ }
9363
+ };
9364
+ const defaultColors = [
9365
+ getColor("--chart-1", FALLBACKS2.chart1),
9366
+ getColor("--chart-2", FALLBACKS2.chart2),
9367
+ getColor("--chart-3", FALLBACKS2.chart3),
9368
+ getColor("--chart-4", FALLBACKS2.chart4),
9369
+ getColor("--chart-5", FALLBACKS2.chart5)
9370
+ ];
9220
9371
  return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_bar.ResponsiveBar, { theme: nivoTheme, colors: defaultColors, ...props }) });
9221
9372
  }
9222
9373
 
9223
9374
  // src/components/charts/PartoPieChart.tsx
9224
9375
  var import_pie = require("@nivo/pie");
9225
9376
  var import_jsx_runtime71 = require("react/jsx-runtime");
9377
+ var FALLBACKS3 = {
9378
+ foreground: "hsl(0 0% 98%)",
9379
+ popover: "hsl(0 0% 12%)",
9380
+ popoverForeground: "hsl(0 0% 98%)",
9381
+ chart1: "hsl(12 76% 61%)",
9382
+ chart2: "hsl(173 58% 39%)",
9383
+ chart3: "hsl(197 37% 24%)",
9384
+ chart4: "hsl(43 74% 66%)",
9385
+ chart5: "hsl(27 87% 67%)"
9386
+ };
9226
9387
  function PartoPieChart({ className, ...props }) {
9227
9388
  const styles = useRootStyles();
9228
- const nivoTheme = createNivoTheme(styles);
9229
- const defaultColors = resolveChartColors(styles);
9389
+ const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9390
+ const nivoTheme = {
9391
+ background: "transparent",
9392
+ text: {
9393
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9394
+ fill: getColor("--foreground", FALLBACKS3.foreground)
9395
+ },
9396
+ tooltip: {
9397
+ container: {
9398
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9399
+ background: getColor("--popover", FALLBACKS3.popover),
9400
+ color: getColor("--popover-foreground", FALLBACKS3.popoverForeground),
9401
+ fontSize: 12,
9402
+ borderRadius: "var(--radius)",
9403
+ boxShadow: "0 2px 12px rgba(0,0,0,0.15)",
9404
+ padding: "8px 12px"
9405
+ }
9406
+ },
9407
+ legends: {
9408
+ text: {
9409
+ fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9410
+ fill: getColor("--foreground", FALLBACKS3.foreground)
9411
+ }
9412
+ }
9413
+ };
9414
+ const defaultColors = [
9415
+ getColor("--chart-1", FALLBACKS3.chart1),
9416
+ getColor("--chart-2", FALLBACKS3.chart2),
9417
+ getColor("--chart-3", FALLBACKS3.chart3),
9418
+ getColor("--chart-4", FALLBACKS3.chart4),
9419
+ getColor("--chart-5", FALLBACKS3.chart5)
9420
+ ];
9230
9421
  return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_pie.ResponsivePie, { theme: nivoTheme, colors: defaultColors, ...props }) });
9231
9422
  }
9232
9423
 
9233
9424
  // src/components/charts/PartoHeatMap.tsx
9234
9425
  var import_heatmap = require("@nivo/heatmap");
9235
9426
  var import_jsx_runtime72 = require("react/jsx-runtime");
9236
- var FALLBACKS = {
9427
+ var FALLBACKS4 = {
9237
9428
  foreground: "hsl(0 0% 98%)",
9238
9429
  border: "hsl(0 0% 45%)",
9239
9430
  mutedForeground: "hsl(0 0% 55%)",
@@ -9301,24 +9492,24 @@ function PartoHeatMap({
9301
9492
  background: "transparent",
9302
9493
  text: {
9303
9494
  fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9304
- fill: getColor("--foreground", FALLBACKS.foreground),
9495
+ fill: getColor("--foreground", FALLBACKS4.foreground),
9305
9496
  fontSize: 11
9306
9497
  },
9307
9498
  axis: {
9308
9499
  domain: {
9309
9500
  line: {
9310
- stroke: getColor("--border", FALLBACKS.border),
9501
+ stroke: getColor("--border", FALLBACKS4.border),
9311
9502
  strokeWidth: 1
9312
9503
  }
9313
9504
  },
9314
9505
  ticks: {
9315
9506
  line: {
9316
- stroke: getColor("--border", FALLBACKS.border),
9507
+ stroke: getColor("--border", FALLBACKS4.border),
9317
9508
  strokeWidth: 1
9318
9509
  },
9319
9510
  text: {
9320
9511
  fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9321
- fill: getColor("--foreground", FALLBACKS.foreground),
9512
+ fill: getColor("--foreground", FALLBACKS4.foreground),
9322
9513
  fontSize: 13,
9323
9514
  fontWeight: 600
9324
9515
  }
@@ -9326,7 +9517,7 @@ function PartoHeatMap({
9326
9517
  legend: {
9327
9518
  text: {
9328
9519
  fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9329
- fill: getColor("--foreground", FALLBACKS.foreground),
9520
+ fill: getColor("--foreground", FALLBACKS4.foreground),
9330
9521
  fontSize: 13,
9331
9522
  fontWeight: 700
9332
9523
  }
@@ -9334,26 +9525,26 @@ function PartoHeatMap({
9334
9525
  },
9335
9526
  grid: {
9336
9527
  line: {
9337
- stroke: getColor("--card", FALLBACKS.card),
9528
+ stroke: getColor("--card", FALLBACKS4.card),
9338
9529
  strokeWidth: 3
9339
9530
  }
9340
9531
  },
9341
9532
  tooltip: {
9342
9533
  container: {
9343
9534
  fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9344
- background: getColor("--popover", FALLBACKS.popover),
9345
- color: getColor("--popover-foreground", FALLBACKS.popoverForeground),
9535
+ background: getColor("--popover", FALLBACKS4.popover),
9536
+ color: getColor("--popover-foreground", FALLBACKS4.popoverForeground),
9346
9537
  fontSize: 12,
9347
9538
  borderRadius: "var(--radius)",
9348
9539
  boxShadow: "0 2px 4px rgba(0,0,0,0.2)",
9349
9540
  padding: "8px 12px",
9350
- border: `1px solid ${getColor("--border", FALLBACKS.border)}`
9541
+ border: `1px solid ${getColor("--border", FALLBACKS4.border)}`
9351
9542
  }
9352
9543
  },
9353
9544
  legends: {
9354
9545
  text: {
9355
9546
  fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
9356
- fill: getColor("--foreground", FALLBACKS.foreground),
9547
+ fill: getColor("--foreground", FALLBACKS4.foreground),
9357
9548
  fontSize: 11
9358
9549
  }
9359
9550
  }
@@ -9422,7 +9613,7 @@ function PartoHeatMap({
9422
9613
  emptyColor: getColor("--muted", "hsl(0 0% 20%)"),
9423
9614
  borderRadius: 2,
9424
9615
  borderWidth: 3,
9425
- borderColor: getColor("--card", FALLBACKS.card),
9616
+ borderColor: getColor("--card", FALLBACKS4.card),
9426
9617
  enableLabels: false,
9427
9618
  animate: true,
9428
9619
  motionConfig: "gentle",
@@ -9441,7 +9632,7 @@ var import_wordcloud = require("@visx/wordcloud");
9441
9632
  var import_scale = require("@visx/scale");
9442
9633
  var import_text = require("@visx/text");
9443
9634
  var import_jsx_runtime73 = require("react/jsx-runtime");
9444
- var FALLBACKS2 = {
9635
+ var FALLBACKS5 = {
9445
9636
  primary: "hsl(12 76% 61%)"
9446
9637
  };
9447
9638
  var stableRandom = () => 0.5;
@@ -9475,7 +9666,7 @@ function PartoWordCloud({
9475
9666
  const [hovered, setHovered] = React34.useState(null);
9476
9667
  const containerRef = React34.useRef(null);
9477
9668
  const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
9478
- const primaryColor = getColor("--primary", FALLBACKS2.primary);
9669
+ const primaryColor = getColor("--primary", FALLBACKS5.primary);
9479
9670
  const formattedWords = React34.useMemo(() => {
9480
9671
  return words.map((word) => ({
9481
9672
  ...word,