@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 +579 -388
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +372 -19
- package/dist/index.d.cts +29 -28
- package/dist/index.d.ts +29 -28
- package/dist/index.js +595 -405
- package/dist/index.js.map +1 -1
- package/package.json +4 -21
- package/tailwind.config.ts +297 -13
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
|
|
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,
|
|
417
|
-
|
|
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,
|
|
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,
|
|
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.
|
|
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,
|
|
517
|
+
return (0, import_moment_jalaali.default)(date).jYear();
|
|
440
518
|
}
|
|
441
519
|
function getPersianMonth(date) {
|
|
442
|
-
return (0,
|
|
520
|
+
return (0, import_moment_jalaali.default)(date).jMonth();
|
|
443
521
|
}
|
|
444
522
|
function getPersianDay(date) {
|
|
445
|
-
return (0,
|
|
523
|
+
return (0, import_moment_jalaali.default)(date).jDate();
|
|
446
524
|
}
|
|
447
525
|
function jalaliToGregorian(year, month, day) {
|
|
448
|
-
|
|
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
|
|
457
|
-
const
|
|
458
|
-
const
|
|
459
|
-
const
|
|
460
|
-
const
|
|
461
|
-
const
|
|
462
|
-
|
|
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 (
|
|
540
|
+
if (fromYear === toYear && fromMonth === toMonth) {
|
|
466
541
|
return `${toPersianDigits(fromDay)} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)}`;
|
|
467
542
|
}
|
|
468
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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)(
|
|
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-
|
|
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-
|
|
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-
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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: "
|
|
4312
|
-
secondary: "bg-
|
|
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-
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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: "
|
|
4439
|
-
secondary: "bg-
|
|
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-
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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" ? "
|
|
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)(
|
|
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
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
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
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
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) =>
|
|
4968
|
-
"
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
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
|
|
5057
|
+
function getAspectRatioCSS(ratio) {
|
|
4993
5058
|
const ratios = {
|
|
4994
|
-
"16:9": 16
|
|
4995
|
-
"9:16":
|
|
4996
|
-
|
|
4997
|
-
"
|
|
4998
|
-
"5
|
|
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:
|
|
5254
|
-
|
|
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:
|
|
5268
|
-
|
|
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:
|
|
5282
|
-
|
|
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:
|
|
5296
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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 ?
|
|
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)(
|
|
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
|
|
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-
|
|
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,#
|
|
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-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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: "#
|
|
6997
|
-
//
|
|
6998
|
-
hoverColor: "#
|
|
6999
|
-
//
|
|
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: "#
|
|
7341
|
-
//
|
|
7342
|
-
hoverColor: "#
|
|
7343
|
-
//
|
|
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-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
|
|
9114
|
-
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
const
|
|
9124
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 ${
|
|
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:
|
|
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
|
-
|
|
9182
|
-
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
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
|
|
9219
|
-
const
|
|
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
|
|
9229
|
-
const
|
|
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
|
|
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",
|
|
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",
|
|
9501
|
+
stroke: getColor("--border", FALLBACKS4.border),
|
|
9311
9502
|
strokeWidth: 1
|
|
9312
9503
|
}
|
|
9313
9504
|
},
|
|
9314
9505
|
ticks: {
|
|
9315
9506
|
line: {
|
|
9316
|
-
stroke: getColor("--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",
|
|
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",
|
|
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",
|
|
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",
|
|
9345
|
-
color: getColor("--popover-foreground",
|
|
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",
|
|
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",
|
|
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",
|
|
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
|
|
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",
|
|
9669
|
+
const primaryColor = getColor("--primary", FALLBACKS5.primary);
|
|
9479
9670
|
const formattedWords = React34.useMemo(() => {
|
|
9480
9671
|
return words.map((word) => ({
|
|
9481
9672
|
...word,
|