@parto-system-design/ui 1.0.5 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +282 -416
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +13 -347
- package/dist/index.d.cts +28 -25
- package/dist/index.d.ts +28 -25
- package/dist/index.js +299 -432
- package/dist/index.js.map +1 -1
- package/package.json +21 -4
- package/tailwind.config.ts +13 -297
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";
|
|
2
3
|
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
@@ -362,95 +363,9 @@ module.exports = __toCommonJS(index_exports);
|
|
|
362
363
|
// src/lib/utils.ts
|
|
363
364
|
var import_clsx = require("clsx");
|
|
364
365
|
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
|
-
}
|
|
450
366
|
|
|
451
367
|
// src/lib/jalali-utils.ts
|
|
452
|
-
var
|
|
453
|
-
import_moment_jalaali.default.loadPersian({ usePersianDigits: true, dialect: "persian-modern" });
|
|
368
|
+
var import_date_fns_jalali = require("date-fns-jalali");
|
|
454
369
|
var PERSIAN_MONTHS = [
|
|
455
370
|
"\u0641\u0631\u0648\u0631\u062F\u06CC\u0646",
|
|
456
371
|
"\u0627\u0631\u062F\u06CC\u0628\u0647\u0634\u062A",
|
|
@@ -498,49 +413,59 @@ function toEnglishDigits(str) {
|
|
|
498
413
|
const arabicDigits = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
|
|
499
414
|
return str.replace(/[۰-۹]/g, (digit) => String(persianDigits.indexOf(digit))).replace(/[٠-٩]/g, (digit) => String(arabicDigits.indexOf(digit)));
|
|
500
415
|
}
|
|
501
|
-
function formatJalaliDate(date,
|
|
502
|
-
|
|
416
|
+
function formatJalaliDate(date, formatStr = "yyyy/MM/dd") {
|
|
417
|
+
let finalFormatStr = formatStr;
|
|
418
|
+
if (finalFormatStr.includes("jYYYY")) finalFormatStr = finalFormatStr.replace(/jYYYY/g, "yyyy");
|
|
419
|
+
if (finalFormatStr.includes("jMMMM")) finalFormatStr = finalFormatStr.replace(/jMMMM/g, "MMMM");
|
|
420
|
+
if (finalFormatStr.includes("jMM")) finalFormatStr = finalFormatStr.replace(/jMM/g, "MM");
|
|
421
|
+
if (finalFormatStr.includes("jM")) finalFormatStr = finalFormatStr.replace(/jM/g, "M");
|
|
422
|
+
if (finalFormatStr.includes("jDD")) finalFormatStr = finalFormatStr.replace(/jDD/g, "dd");
|
|
423
|
+
if (finalFormatStr.includes("jD")) finalFormatStr = finalFormatStr.replace(/jD/g, "d");
|
|
424
|
+
return (0, import_date_fns_jalali.format)(date, finalFormatStr);
|
|
503
425
|
}
|
|
504
426
|
function getPersianMonthName(date) {
|
|
505
|
-
const monthIndex = (0,
|
|
427
|
+
const monthIndex = (0, import_date_fns_jalali.getMonth)(date);
|
|
506
428
|
return PERSIAN_MONTHS[monthIndex];
|
|
507
429
|
}
|
|
508
430
|
function getPersianMonthNameShort(date) {
|
|
509
|
-
const monthIndex = (0,
|
|
431
|
+
const monthIndex = (0, import_date_fns_jalali.getMonth)(date);
|
|
510
432
|
return PERSIAN_MONTHS_SHORT[monthIndex];
|
|
511
433
|
}
|
|
512
434
|
function getPersianWeekdayName(date, short = false) {
|
|
513
|
-
const dayIndex =
|
|
435
|
+
const dayIndex = date.getDay();
|
|
514
436
|
return short ? PERSIAN_WEEKDAYS_SHORT[dayIndex] : PERSIAN_WEEKDAYS[dayIndex];
|
|
515
437
|
}
|
|
516
438
|
function getPersianYear(date) {
|
|
517
|
-
return (0,
|
|
439
|
+
return (0, import_date_fns_jalali.getYear)(date);
|
|
518
440
|
}
|
|
519
441
|
function getPersianMonth(date) {
|
|
520
|
-
return (0,
|
|
442
|
+
return (0, import_date_fns_jalali.getMonth)(date);
|
|
521
443
|
}
|
|
522
444
|
function getPersianDay(date) {
|
|
523
|
-
return (0,
|
|
445
|
+
return (0, import_date_fns_jalali.getDate)(date);
|
|
524
446
|
}
|
|
525
447
|
function jalaliToGregorian(year, month, day) {
|
|
526
|
-
|
|
448
|
+
const yyyy = year.toString().padStart(4, "0");
|
|
449
|
+
const MM = (month + 1).toString().padStart(2, "0");
|
|
450
|
+
const dd = day.toString().padStart(2, "0");
|
|
451
|
+
const referenceDate = /* @__PURE__ */ new Date();
|
|
452
|
+
referenceDate.setHours(12, 0, 0, 0);
|
|
453
|
+
return (0, import_date_fns_jalali.parse)(`${yyyy}/${MM}/${dd}`, "yyyy/MM/dd", referenceDate);
|
|
527
454
|
}
|
|
528
455
|
function formatPersianDateRange(from, to) {
|
|
529
|
-
const
|
|
530
|
-
const
|
|
531
|
-
const
|
|
532
|
-
const
|
|
533
|
-
const
|
|
534
|
-
const
|
|
535
|
-
|
|
536
|
-
const toDay = toMoment.jDate();
|
|
537
|
-
if (fromYear === toYear && fromMonth === toMonth && fromDay === toDay) {
|
|
456
|
+
const fromYear = (0, import_date_fns_jalali.getYear)(from);
|
|
457
|
+
const toYear = (0, import_date_fns_jalali.getYear)(to);
|
|
458
|
+
const fromMonth = (0, import_date_fns_jalali.getMonth)(from);
|
|
459
|
+
const toMonth = (0, import_date_fns_jalali.getMonth)(to);
|
|
460
|
+
const fromDay = (0, import_date_fns_jalali.getDate)(from);
|
|
461
|
+
const toDay = (0, import_date_fns_jalali.getDate)(to);
|
|
462
|
+
if ((0, import_date_fns_jalali.isSameDay)(from, to)) {
|
|
538
463
|
return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)}`;
|
|
539
464
|
}
|
|
540
|
-
if (
|
|
465
|
+
if ((0, import_date_fns_jalali.isSameYear)(from, to) && (0, import_date_fns_jalali.isSameMonth)(from, to)) {
|
|
541
466
|
return `${toPersianDigits(fromDay)} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)}`;
|
|
542
467
|
}
|
|
543
|
-
if (
|
|
468
|
+
if ((0, import_date_fns_jalali.isSameYear)(from, to)) {
|
|
544
469
|
return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[toMonth]} ${toPersianDigits(fromYear)}`;
|
|
545
470
|
}
|
|
546
471
|
return `${toPersianDigits(fromDay)} ${PERSIAN_MONTHS[fromMonth]} ${toPersianDigits(fromYear)} - ${toPersianDigits(toDay)} ${PERSIAN_MONTHS[toMonth]} ${toPersianDigits(toYear)}`;
|
|
@@ -562,11 +487,71 @@ function getPersianYearsForDropdown(fromYear, toYear) {
|
|
|
562
487
|
return years;
|
|
563
488
|
}
|
|
564
489
|
|
|
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
|
+
|
|
565
550
|
// src/icons.tsx
|
|
566
551
|
var import_lucide_react = require("lucide-react");
|
|
567
552
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
568
553
|
var Icons = {
|
|
569
|
-
|
|
554
|
+
/** Parto layered logo mark (generic) */
|
|
570
555
|
logo: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
571
556
|
"svg",
|
|
572
557
|
{
|
|
@@ -585,6 +570,7 @@ var Icons = {
|
|
|
585
570
|
]
|
|
586
571
|
}
|
|
587
572
|
),
|
|
573
|
+
/** Official Parto brand mark (triangle composition) */
|
|
588
574
|
parto: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
589
575
|
"svg",
|
|
590
576
|
{
|
|
@@ -604,6 +590,7 @@ var Icons = {
|
|
|
604
590
|
arrowRight: import_lucide_react.ArrowRight,
|
|
605
591
|
arrowLeft: import_lucide_react.ArrowLeft,
|
|
606
592
|
bold: import_lucide_react.Bold,
|
|
593
|
+
building: import_lucide_react.Building,
|
|
607
594
|
calendar: import_lucide_react.Calendar,
|
|
608
595
|
check: import_lucide_react.Check,
|
|
609
596
|
chevronDown: import_lucide_react.ChevronDown,
|
|
@@ -612,47 +599,19 @@ var Icons = {
|
|
|
612
599
|
chevronUp: import_lucide_react.ChevronUp,
|
|
613
600
|
circle: import_lucide_react.Circle,
|
|
614
601
|
clock: import_lucide_react.Clock,
|
|
602
|
+
/** Use for close/dismiss actions (X mark) */
|
|
603
|
+
close: import_lucide_react.X,
|
|
615
604
|
copy: import_lucide_react.Copy,
|
|
616
605
|
download: import_lucide_react.Download,
|
|
617
606
|
eye: import_lucide_react.Eye,
|
|
618
607
|
eyeOff: import_lucide_react.EyeOff,
|
|
619
608
|
file: import_lucide_react.File,
|
|
620
609
|
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,
|
|
649
610
|
gitHub: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
650
611
|
"svg",
|
|
651
612
|
{
|
|
652
613
|
"aria-hidden": "true",
|
|
653
614
|
focusable: "false",
|
|
654
|
-
"data-prefix": "fab",
|
|
655
|
-
"data-icon": "github",
|
|
656
615
|
role: "img",
|
|
657
616
|
xmlns: "http://www.w3.org/2000/svg",
|
|
658
617
|
viewBox: "0 0 496 512",
|
|
@@ -666,7 +625,13 @@ var Icons = {
|
|
|
666
625
|
)
|
|
667
626
|
}
|
|
668
627
|
),
|
|
669
|
-
|
|
628
|
+
heart: import_lucide_react.Heart,
|
|
629
|
+
home: import_lucide_react.Home,
|
|
630
|
+
image: import_lucide_react.Image,
|
|
631
|
+
images: import_lucide_react.Images,
|
|
632
|
+
inbox: import_lucide_react.Inbox,
|
|
633
|
+
info: import_lucide_react.Info,
|
|
634
|
+
instagram: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
670
635
|
"svg",
|
|
671
636
|
{
|
|
672
637
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -677,10 +642,30 @@ var Icons = {
|
|
|
677
642
|
strokeLinecap: "round",
|
|
678
643
|
strokeLinejoin: "round",
|
|
679
644
|
...props,
|
|
680
|
-
children:
|
|
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
|
+
]
|
|
681
650
|
}
|
|
682
651
|
),
|
|
683
|
-
|
|
652
|
+
italic: import_lucide_react.Italic,
|
|
653
|
+
/** Animated loading spinner — prefer this over a custom spinner */
|
|
654
|
+
loader: import_lucide_react.Loader2,
|
|
655
|
+
menu: import_lucide_react.Menu,
|
|
656
|
+
messageCircle: import_lucide_react.MessageCircle,
|
|
657
|
+
moon: import_lucide_react.Moon,
|
|
658
|
+
moreHorizontal: import_lucide_react.MoreHorizontal,
|
|
659
|
+
moreVertical: import_lucide_react.MoreVertical,
|
|
660
|
+
plus: import_lucide_react.Plus,
|
|
661
|
+
rocket: import_lucide_react.Rocket,
|
|
662
|
+
search: import_lucide_react.Search,
|
|
663
|
+
settings: import_lucide_react.Settings,
|
|
664
|
+
share: import_lucide_react.Share2,
|
|
665
|
+
sparkles: import_lucide_react.Sparkles,
|
|
666
|
+
sun: import_lucide_react.Sun,
|
|
667
|
+
trash: import_lucide_react.Trash,
|
|
668
|
+
twitter: (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
684
669
|
"svg",
|
|
685
670
|
{
|
|
686
671
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -691,18 +676,27 @@ var Icons = {
|
|
|
691
676
|
strokeLinecap: "round",
|
|
692
677
|
strokeLinejoin: "round",
|
|
693
678
|
...props,
|
|
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
|
-
]
|
|
679
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" })
|
|
699
680
|
}
|
|
700
|
-
)
|
|
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
|
|
701
696
|
};
|
|
702
697
|
|
|
703
698
|
// src/components/ui/accordion.tsx
|
|
704
699
|
var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
|
|
705
|
-
var import_lucide_react2 = require("lucide-react");
|
|
706
700
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
707
701
|
function Accordion({
|
|
708
702
|
...props
|
|
@@ -738,7 +732,7 @@ function AccordionTrigger({
|
|
|
738
732
|
...props,
|
|
739
733
|
children: [
|
|
740
734
|
children,
|
|
741
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
735
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Icons.chevronDown, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
|
|
742
736
|
]
|
|
743
737
|
}
|
|
744
738
|
) });
|
|
@@ -816,7 +810,6 @@ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
|
|
|
816
810
|
// src/components/ui/button.tsx
|
|
817
811
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
818
812
|
var import_class_variance_authority2 = require("class-variance-authority");
|
|
819
|
-
var import_lucide_react3 = require("lucide-react");
|
|
820
813
|
var import_react = require("react");
|
|
821
814
|
|
|
822
815
|
// src/lib/constants.ts
|
|
@@ -1130,11 +1123,11 @@ var Button = (0, import_react.forwardRef)(
|
|
|
1130
1123
|
children: asChild ? (0, import_react.isValidElement)(children) ? (0, import_react.cloneElement)(
|
|
1131
1124
|
children,
|
|
1132
1125
|
void 0,
|
|
1133
|
-
showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1126
|
+
showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icons.loader, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
|
|
1134
1127
|
children.props?.children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "truncate", children: children.props.children }),
|
|
1135
1128
|
iconRight && !loading && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: iconRight })
|
|
1136
1129
|
) : null : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
1137
|
-
showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1130
|
+
showIcon && (loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icons.loader, { className: cn(loadingVariants({ loading, variant: buttonVariant })) }) }) : _iconLeft ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn(IconContainerVariants({ size: iconSize, variant: buttonVariant })), children: _iconLeft }) : null),
|
|
1138
1131
|
" ",
|
|
1139
1132
|
children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "truncate", children }),
|
|
1140
1133
|
" ",
|
|
@@ -1313,11 +1306,10 @@ var Input = React3.forwardRef(
|
|
|
1313
1306
|
Input.displayName = "Input";
|
|
1314
1307
|
|
|
1315
1308
|
// src/components/ui/spinner.tsx
|
|
1316
|
-
var import_lucide_react4 = require("lucide-react");
|
|
1317
1309
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1318
1310
|
function Spinner({ className, ...props }) {
|
|
1319
1311
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1320
|
-
|
|
1312
|
+
Icons.loader,
|
|
1321
1313
|
{
|
|
1322
1314
|
role: "status",
|
|
1323
1315
|
"aria-label": "Loading",
|
|
@@ -2025,7 +2017,6 @@ function Badge({
|
|
|
2025
2017
|
|
|
2026
2018
|
// src/components/ui/breadcrumb.tsx
|
|
2027
2019
|
var import_react_slot2 = require("@radix-ui/react-slot");
|
|
2028
|
-
var import_lucide_react5 = require("lucide-react");
|
|
2029
2020
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2030
2021
|
function Breadcrumb({ ...props }) {
|
|
2031
2022
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
|
|
@@ -2100,7 +2091,7 @@ function BreadcrumbSeparator({
|
|
|
2100
2091
|
"aria-hidden": "true",
|
|
2101
2092
|
className: cn("[&>svg]:size-3.5", className),
|
|
2102
2093
|
...props,
|
|
2103
|
-
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2094
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icons.chevronRight, {})
|
|
2104
2095
|
}
|
|
2105
2096
|
);
|
|
2106
2097
|
}
|
|
@@ -2117,7 +2108,7 @@ function BreadcrumbEllipsis({
|
|
|
2117
2108
|
className: cn("flex size-9 items-center justify-center", className),
|
|
2118
2109
|
...props,
|
|
2119
2110
|
children: [
|
|
2120
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2111
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icons.moreHorizontal, { className: "size-4" }),
|
|
2121
2112
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "sr-only", children: "More" })
|
|
2122
2113
|
]
|
|
2123
2114
|
}
|
|
@@ -2251,7 +2242,6 @@ function ButtonGroupSeparator({
|
|
|
2251
2242
|
}
|
|
2252
2243
|
|
|
2253
2244
|
// src/components/ui/calendar.tsx
|
|
2254
|
-
var import_lucide_react6 = require("lucide-react");
|
|
2255
2245
|
var import_react_day_picker = require("react-day-picker");
|
|
2256
2246
|
var import_persian = require("react-day-picker/persian");
|
|
2257
2247
|
var import_locale = require("date-fns/locale");
|
|
@@ -2336,14 +2326,14 @@ function Calendar2({
|
|
|
2336
2326
|
Chevron: ({ orientation }) => {
|
|
2337
2327
|
if (usePersianCalendar) {
|
|
2338
2328
|
if (orientation === "left") {
|
|
2339
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2329
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronRight, { className: "h-4 w-4" });
|
|
2340
2330
|
}
|
|
2341
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2331
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronLeft, { className: "h-4 w-4" });
|
|
2342
2332
|
}
|
|
2343
2333
|
if (orientation === "left") {
|
|
2344
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronLeft, { className: "h-4 w-4" });
|
|
2345
2335
|
}
|
|
2346
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icons.chevronRight, { className: "h-4 w-4" });
|
|
2347
2337
|
}
|
|
2348
2338
|
},
|
|
2349
2339
|
...props
|
|
@@ -2395,7 +2385,6 @@ CardFooter.displayName = "CardFooter";
|
|
|
2395
2385
|
// src/components/ui/carousel.tsx
|
|
2396
2386
|
var React8 = __toESM(require("react"), 1);
|
|
2397
2387
|
var import_embla_carousel_react = __toESM(require("embla-carousel-react"), 1);
|
|
2398
|
-
var import_lucide_react7 = require("lucide-react");
|
|
2399
2388
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2400
2389
|
var CarouselContext = React8.createContext(null);
|
|
2401
2390
|
function useCarousel() {
|
|
@@ -2589,7 +2578,7 @@ function CarouselPrevious({
|
|
|
2589
2578
|
onClick: scrollPrev,
|
|
2590
2579
|
...props,
|
|
2591
2580
|
children: [
|
|
2592
|
-
isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2581
|
+
isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowRight, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowLeft, {}),
|
|
2593
2582
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "Previous slide" })
|
|
2594
2583
|
]
|
|
2595
2584
|
}
|
|
@@ -2620,7 +2609,7 @@ function CarouselNext({
|
|
|
2620
2609
|
onClick: scrollNext,
|
|
2621
2610
|
...props,
|
|
2622
2611
|
children: [
|
|
2623
|
-
isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2612
|
+
isRTL ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowLeft, {}) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icons.arrowRight, {}),
|
|
2624
2613
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "Next slide" })
|
|
2625
2614
|
]
|
|
2626
2615
|
}
|
|
@@ -2629,7 +2618,6 @@ function CarouselNext({
|
|
|
2629
2618
|
|
|
2630
2619
|
// src/components/ui/checkbox.tsx
|
|
2631
2620
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
2632
|
-
var import_lucide_react8 = require("lucide-react");
|
|
2633
2621
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2634
2622
|
function Checkbox({
|
|
2635
2623
|
className,
|
|
@@ -2649,7 +2637,7 @@ function Checkbox({
|
|
|
2649
2637
|
{
|
|
2650
2638
|
"data-slot": "checkbox-indicator",
|
|
2651
2639
|
className: "grid place-content-center text-current transition-none",
|
|
2652
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2640
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icons.check, { className: "size-3.5" })
|
|
2653
2641
|
}
|
|
2654
2642
|
)
|
|
2655
2643
|
}
|
|
@@ -2689,12 +2677,10 @@ function CollapsibleContent2({
|
|
|
2689
2677
|
|
|
2690
2678
|
// src/components/ui/command.tsx
|
|
2691
2679
|
var import_cmdk = require("cmdk");
|
|
2692
|
-
var import_lucide_react10 = require("lucide-react");
|
|
2693
2680
|
|
|
2694
2681
|
// src/components/ui/dialog.tsx
|
|
2695
2682
|
var React9 = __toESM(require("react"), 1);
|
|
2696
2683
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
2697
|
-
var import_lucide_react9 = require("lucide-react");
|
|
2698
2684
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2699
2685
|
var Dialog = DialogPrimitive.Root;
|
|
2700
2686
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
@@ -2726,7 +2712,7 @@ var DialogContent = React9.forwardRef(({ className, children, ...props }, ref) =
|
|
|
2726
2712
|
children: [
|
|
2727
2713
|
children,
|
|
2728
2714
|
/* @__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: [
|
|
2729
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2715
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icons.close, { className: "h-4 w-4" }),
|
|
2730
2716
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "sr-only", children: "Close" })
|
|
2731
2717
|
] })
|
|
2732
2718
|
]
|
|
@@ -2833,7 +2819,7 @@ function CommandInput({
|
|
|
2833
2819
|
"data-slot": "command-input-wrapper",
|
|
2834
2820
|
className: "flex h-9 items-center gap-2 border-b px-3",
|
|
2835
2821
|
children: [
|
|
2836
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2822
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icons.search, { className: "size-4 shrink-0 opacity-50" }),
|
|
2837
2823
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2838
2824
|
import_cmdk.Command.Input,
|
|
2839
2825
|
{
|
|
@@ -3012,7 +2998,6 @@ CommentCard.displayName = "CommentCard";
|
|
|
3012
2998
|
|
|
3013
2999
|
// src/components/ui/context-menu.tsx
|
|
3014
3000
|
var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"), 1);
|
|
3015
|
-
var import_lucide_react11 = require("lucide-react");
|
|
3016
3001
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3017
3002
|
function ContextMenu({
|
|
3018
3003
|
...props
|
|
@@ -3068,7 +3053,7 @@ function ContextMenuSubTrigger({
|
|
|
3068
3053
|
...props,
|
|
3069
3054
|
children: [
|
|
3070
3055
|
children,
|
|
3071
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3056
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.chevronRight, { className: "ms-auto rtl:rotate-180" })
|
|
3072
3057
|
]
|
|
3073
3058
|
}
|
|
3074
3059
|
);
|
|
@@ -3142,7 +3127,7 @@ function ContextMenuCheckboxItem({
|
|
|
3142
3127
|
checked,
|
|
3143
3128
|
...props,
|
|
3144
3129
|
children: [
|
|
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)(
|
|
3130
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.check, { className: "size-4" }) }) }),
|
|
3146
3131
|
children
|
|
3147
3132
|
]
|
|
3148
3133
|
}
|
|
@@ -3163,7 +3148,7 @@ function ContextMenuRadioItem({
|
|
|
3163
3148
|
),
|
|
3164
3149
|
...props,
|
|
3165
3150
|
children: [
|
|
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)(
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
|
|
3167
3152
|
children
|
|
3168
3153
|
]
|
|
3169
3154
|
}
|
|
@@ -3219,7 +3204,6 @@ function ContextMenuShortcut({
|
|
|
3219
3204
|
|
|
3220
3205
|
// src/components/ui/date-picker.tsx
|
|
3221
3206
|
var import_date_fns = require("date-fns");
|
|
3222
|
-
var import_lucide_react12 = require("lucide-react");
|
|
3223
3207
|
|
|
3224
3208
|
// src/components/ui/popover.tsx
|
|
3225
3209
|
var React11 = __toESM(require("react"), 1);
|
|
@@ -3359,7 +3343,7 @@ function DatePicker({
|
|
|
3359
3343
|
!value && "text-muted-foreground"
|
|
3360
3344
|
),
|
|
3361
3345
|
disabled,
|
|
3362
|
-
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3346
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icons.calendar, { className: "h-4 w-4" }),
|
|
3363
3347
|
children: displayText || placeholder || defaultPlaceholder
|
|
3364
3348
|
}
|
|
3365
3349
|
) }),
|
|
@@ -3418,7 +3402,6 @@ function DatePicker({
|
|
|
3418
3402
|
|
|
3419
3403
|
// src/components/ui/date-range-picker.tsx
|
|
3420
3404
|
var React12 = __toESM(require("react"), 1);
|
|
3421
|
-
var import_lucide_react13 = require("lucide-react");
|
|
3422
3405
|
|
|
3423
3406
|
// src/components/ui/label.tsx
|
|
3424
3407
|
var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
|
|
@@ -3484,7 +3467,7 @@ function DateRangePicker({
|
|
|
3484
3467
|
),
|
|
3485
3468
|
children: [
|
|
3486
3469
|
formatDateRange2(value),
|
|
3487
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3470
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icons.chevronDown, { className: "size-4 opacity-50" })
|
|
3488
3471
|
]
|
|
3489
3472
|
}
|
|
3490
3473
|
) }),
|
|
@@ -3551,7 +3534,7 @@ function DateRangePickerInline({
|
|
|
3551
3534
|
),
|
|
3552
3535
|
children: [
|
|
3553
3536
|
formatDateRange2(value),
|
|
3554
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3537
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icons.calendar, { className: "size-4 opacity-50" })
|
|
3555
3538
|
]
|
|
3556
3539
|
}
|
|
3557
3540
|
) }),
|
|
@@ -3699,7 +3682,6 @@ function DrawerDescription({
|
|
|
3699
3682
|
|
|
3700
3683
|
// src/components/ui/dropdown-menu.tsx
|
|
3701
3684
|
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
|
|
3702
|
-
var import_lucide_react14 = require("lucide-react");
|
|
3703
3685
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
3704
3686
|
function DropdownMenu({
|
|
3705
3687
|
...props
|
|
@@ -3782,7 +3764,7 @@ function DropdownMenuCheckboxItem({
|
|
|
3782
3764
|
checked,
|
|
3783
3765
|
...props,
|
|
3784
3766
|
children: [
|
|
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)(
|
|
3767
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.check, { className: "size-4" }) }) }),
|
|
3786
3768
|
children
|
|
3787
3769
|
]
|
|
3788
3770
|
}
|
|
@@ -3814,7 +3796,7 @@ function DropdownMenuRadioItem({
|
|
|
3814
3796
|
),
|
|
3815
3797
|
...props,
|
|
3816
3798
|
children: [
|
|
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)(
|
|
3799
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
|
|
3818
3800
|
children
|
|
3819
3801
|
]
|
|
3820
3802
|
}
|
|
@@ -3890,7 +3872,7 @@ function DropdownMenuSubTrigger({
|
|
|
3890
3872
|
...props,
|
|
3891
3873
|
children: [
|
|
3892
3874
|
children,
|
|
3893
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
3875
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icons.chevronRight, { className: "ms-auto size-4 rtl:rotate-180" })
|
|
3894
3876
|
]
|
|
3895
3877
|
}
|
|
3896
3878
|
);
|
|
@@ -4319,7 +4301,6 @@ function HoverCardContent({
|
|
|
4319
4301
|
|
|
4320
4302
|
// src/components/ui/tag-input.tsx
|
|
4321
4303
|
var React14 = __toESM(require("react"), 1);
|
|
4322
|
-
var import_lucide_react15 = require("lucide-react");
|
|
4323
4304
|
var import_class_variance_authority7 = require("class-variance-authority");
|
|
4324
4305
|
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
4325
4306
|
var tagInputVariants = (0, import_class_variance_authority7.cva)(
|
|
@@ -4413,7 +4394,7 @@ var TagInput = React14.forwardRef(
|
|
|
4413
4394
|
className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
|
|
4414
4395
|
disabled,
|
|
4415
4396
|
children: [
|
|
4416
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4397
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icons.close, { className: "h-3 w-3 text-muted-foreground" }),
|
|
4417
4398
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "sr-only", children: [
|
|
4418
4399
|
"Remove ",
|
|
4419
4400
|
tag
|
|
@@ -4447,7 +4428,6 @@ TagInput.displayName = "TagInput";
|
|
|
4447
4428
|
|
|
4448
4429
|
// src/components/ui/hashtag-input.tsx
|
|
4449
4430
|
var React15 = __toESM(require("react"), 1);
|
|
4450
|
-
var import_lucide_react16 = require("lucide-react");
|
|
4451
4431
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
4452
4432
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
4453
4433
|
var hashtagInputVariants = (0, import_class_variance_authority8.cva)(
|
|
@@ -4542,7 +4522,7 @@ var HashtagInput = React15.forwardRef(
|
|
|
4542
4522
|
className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
|
|
4543
4523
|
disabled,
|
|
4544
4524
|
children: [
|
|
4545
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4525
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Icons.close, { className: "h-3 w-3 text-muted-foreground" }),
|
|
4546
4526
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "sr-only", children: [
|
|
4547
4527
|
"Remove ",
|
|
4548
4528
|
tag
|
|
@@ -4767,7 +4747,6 @@ function InputGroupTextarea({
|
|
|
4767
4747
|
// src/components/ui/input-otp.tsx
|
|
4768
4748
|
var React17 = __toESM(require("react"), 1);
|
|
4769
4749
|
var import_input_otp = require("input-otp");
|
|
4770
|
-
var import_lucide_react17 = require("lucide-react");
|
|
4771
4750
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
4772
4751
|
function InputOTP({
|
|
4773
4752
|
className,
|
|
@@ -4833,7 +4812,7 @@ function InputOTPSeparator({ ...props }) {
|
|
|
4833
4812
|
role: "separator",
|
|
4834
4813
|
dir: "ltr",
|
|
4835
4814
|
...props,
|
|
4836
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
4815
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icons.minus, {})
|
|
4837
4816
|
}
|
|
4838
4817
|
);
|
|
4839
4818
|
}
|
|
@@ -4864,7 +4843,6 @@ var TooltipContent = React18.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
4864
4843
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
4865
4844
|
|
|
4866
4845
|
// src/components/ui/instagram-post.tsx
|
|
4867
|
-
var import_lucide_react18 = require("lucide-react");
|
|
4868
4846
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
4869
4847
|
var instagramPostVariants = (0, import_class_variance_authority10.cva)(
|
|
4870
4848
|
"relative border bg-background-surface-100",
|
|
@@ -4890,7 +4868,7 @@ function InstagramPostMedia({
|
|
|
4890
4868
|
const handleImageError = (url) => {
|
|
4891
4869
|
setImageError((prev) => ({ ...prev, [url]: true }));
|
|
4892
4870
|
};
|
|
4893
|
-
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)(
|
|
4871
|
+
const renderPlaceholder = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "w-full h-full flex items-center justify-center bg-muted/10 dark:bg-muted/5", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.imageOff, { className: "size-12 text-muted-foreground/50" }) });
|
|
4894
4872
|
if (!media || media.length === 0) {
|
|
4895
4873
|
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
4896
4874
|
"div",
|
|
@@ -4900,7 +4878,7 @@ function InstagramPostMedia({
|
|
|
4900
4878
|
variant === "vertical" ? "aspect-square" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
|
|
4901
4879
|
),
|
|
4902
4880
|
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "text-center p-4", children: [
|
|
4903
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
4881
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icons.imageOff, { className: "size-12 mx-auto mb-2 text-muted-foreground" }),
|
|
4904
4882
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "text-sm text-muted-foreground", children: placeholderText })
|
|
4905
4883
|
] })
|
|
4906
4884
|
}
|
|
@@ -5502,7 +5480,6 @@ function KbdGroup({ className, ...props }) {
|
|
|
5502
5480
|
|
|
5503
5481
|
// src/components/ui/menubar.tsx
|
|
5504
5482
|
var MenubarPrimitive = __toESM(require("@radix-ui/react-menubar"), 1);
|
|
5505
|
-
var import_lucide_react19 = require("lucide-react");
|
|
5506
5483
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
5507
5484
|
function Menubar({
|
|
5508
5485
|
className,
|
|
@@ -5615,7 +5592,7 @@ function MenubarCheckboxItem({
|
|
|
5615
5592
|
checked,
|
|
5616
5593
|
...props,
|
|
5617
5594
|
children: [
|
|
5618
|
-
/* @__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)(
|
|
5595
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.check, { className: "size-4" }) }) }),
|
|
5619
5596
|
children
|
|
5620
5597
|
]
|
|
5621
5598
|
}
|
|
@@ -5636,7 +5613,7 @@ function MenubarRadioItem({
|
|
|
5636
5613
|
),
|
|
5637
5614
|
...props,
|
|
5638
5615
|
children: [
|
|
5639
|
-
/* @__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)(
|
|
5616
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.circle, { className: "size-2 fill-current" }) }) }),
|
|
5640
5617
|
children
|
|
5641
5618
|
]
|
|
5642
5619
|
}
|
|
@@ -5712,7 +5689,7 @@ function MenubarSubTrigger({
|
|
|
5712
5689
|
...props,
|
|
5713
5690
|
children: [
|
|
5714
5691
|
children,
|
|
5715
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
5692
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icons.chevronRight, { className: "ms-auto h-4 w-4 rtl:rotate-180" })
|
|
5716
5693
|
]
|
|
5717
5694
|
}
|
|
5718
5695
|
);
|
|
@@ -5736,7 +5713,6 @@ function MenubarSubContent({
|
|
|
5736
5713
|
|
|
5737
5714
|
// src/components/ui/metric-card.tsx
|
|
5738
5715
|
var React20 = __toESM(require("react"), 1);
|
|
5739
|
-
var import_lucide_react20 = require("lucide-react");
|
|
5740
5716
|
var import_date_fns2 = require("date-fns");
|
|
5741
5717
|
|
|
5742
5718
|
// src/components/ui/skeleton.tsx
|
|
@@ -5775,7 +5751,7 @@ var MetricCard = React20.forwardRef(
|
|
|
5775
5751
|
Card,
|
|
5776
5752
|
{
|
|
5777
5753
|
ref,
|
|
5778
|
-
className: cn("py-4 space-y-3", className),
|
|
5754
|
+
className: cn("py-4 space-y-3 @container", className),
|
|
5779
5755
|
...props,
|
|
5780
5756
|
children
|
|
5781
5757
|
}
|
|
@@ -5800,7 +5776,7 @@ var MetricCardHeader = React20.forwardRef(
|
|
|
5800
5776
|
target: "_blank",
|
|
5801
5777
|
rel: "noopener noreferrer",
|
|
5802
5778
|
className: "text-foreground-lighter hover:text-foreground transition-colors",
|
|
5803
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
5779
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icons.externalLink, { className: "h-3.5 w-3.5" })
|
|
5804
5780
|
}
|
|
5805
5781
|
)
|
|
5806
5782
|
]
|
|
@@ -5830,7 +5806,7 @@ var MetricCardLabel = React20.forwardRef(
|
|
|
5830
5806
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Tooltip, { children: [
|
|
5831
5807
|
/* @__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: [
|
|
5832
5808
|
label,
|
|
5833
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
5809
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icons.info, { className: "h-3.5 w-3.5 text-foreground-lighter" })
|
|
5834
5810
|
] }) }),
|
|
5835
5811
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "max-w-xs", children: tooltip }) })
|
|
5836
5812
|
] }) });
|
|
@@ -6089,7 +6065,6 @@ var MetricCardSparkline = React20.forwardRef(
|
|
|
6089
6065
|
MetricCardSparkline.displayName = "MetricCardSparkline";
|
|
6090
6066
|
|
|
6091
6067
|
// src/components/ui/native-select.tsx
|
|
6092
|
-
var import_lucide_react21 = require("lucide-react");
|
|
6093
6068
|
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
6094
6069
|
function NativeSelect({ className, ...props }) {
|
|
6095
6070
|
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
@@ -6121,7 +6096,7 @@ function NativeSelect({ className, ...props }) {
|
|
|
6121
6096
|
}
|
|
6122
6097
|
),
|
|
6123
6098
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
6124
|
-
|
|
6099
|
+
Icons.chevronDown,
|
|
6125
6100
|
{
|
|
6126
6101
|
className: "pointer-events-none absolute top-1/2 end-3 size-4 -translate-y-1/2 text-foreground-muted select-none",
|
|
6127
6102
|
"aria-hidden": "true",
|
|
@@ -6152,7 +6127,6 @@ function NativeSelectOptGroup({
|
|
|
6152
6127
|
// src/components/ui/navigation-menu.tsx
|
|
6153
6128
|
var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"), 1);
|
|
6154
6129
|
var import_class_variance_authority11 = require("class-variance-authority");
|
|
6155
|
-
var import_lucide_react22 = require("lucide-react");
|
|
6156
6130
|
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
6157
6131
|
function NavigationMenu({
|
|
6158
6132
|
className,
|
|
@@ -6224,7 +6198,7 @@ function NavigationMenuTrigger({
|
|
|
6224
6198
|
children,
|
|
6225
6199
|
" ",
|
|
6226
6200
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
6227
|
-
|
|
6201
|
+
Icons.chevronDown,
|
|
6228
6202
|
{
|
|
6229
6203
|
className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
6230
6204
|
"aria-hidden": "true"
|
|
@@ -6311,7 +6285,6 @@ function NavigationMenuIndicator({
|
|
|
6311
6285
|
|
|
6312
6286
|
// src/components/ui/pagination.tsx
|
|
6313
6287
|
var React21 = __toESM(require("react"), 1);
|
|
6314
|
-
var import_lucide_react23 = require("lucide-react");
|
|
6315
6288
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
6316
6289
|
var PaginationDirectionContext = React21.createContext("rtl");
|
|
6317
6290
|
function usePaginationDirection() {
|
|
@@ -6400,7 +6373,7 @@ function PaginationPrevious({
|
|
|
6400
6373
|
const dir = usePaginationDirection();
|
|
6401
6374
|
const isRTL = dir === "rtl";
|
|
6402
6375
|
const label = isRTL ? "\u0642\u0628\u0644\u06CC" : "Previous";
|
|
6403
|
-
const Icon2 = isRTL ?
|
|
6376
|
+
const Icon2 = isRTL ? Icons.chevronRight : Icons.chevronLeft;
|
|
6404
6377
|
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
6405
6378
|
PaginationLink,
|
|
6406
6379
|
{
|
|
@@ -6426,7 +6399,7 @@ function PaginationNext({
|
|
|
6426
6399
|
const dir = usePaginationDirection();
|
|
6427
6400
|
const isRTL = dir === "rtl";
|
|
6428
6401
|
const label = isRTL ? "\u0628\u0639\u062F\u06CC" : "Next";
|
|
6429
|
-
const Icon2 = isRTL ?
|
|
6402
|
+
const Icon2 = isRTL ? Icons.chevronLeft : Icons.chevronRight;
|
|
6430
6403
|
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
6431
6404
|
PaginationLink,
|
|
6432
6405
|
{
|
|
@@ -6460,7 +6433,7 @@ function PaginationEllipsis({
|
|
|
6460
6433
|
className: cn("flex size-9 items-center justify-center", className),
|
|
6461
6434
|
...props,
|
|
6462
6435
|
children: [
|
|
6463
|
-
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
6436
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Icons.moreHorizontal, { className: "size-4" }),
|
|
6464
6437
|
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
6465
6438
|
]
|
|
6466
6439
|
}
|
|
@@ -6661,7 +6634,7 @@ var ProfileCard = React22.forwardRef(
|
|
|
6661
6634
|
{
|
|
6662
6635
|
ref,
|
|
6663
6636
|
className: cn(
|
|
6664
|
-
"flex flex-col items-center rounded-lg shadow-sm transition-colors",
|
|
6637
|
+
"flex flex-col items-center rounded-lg shadow-sm transition-colors @container",
|
|
6665
6638
|
variantClasses[variant],
|
|
6666
6639
|
currentSize.container,
|
|
6667
6640
|
onCardClick && "cursor-pointer hover:bg-surface-200",
|
|
@@ -6825,7 +6798,6 @@ ProfileInfo.displayName = "ProfileInfo";
|
|
|
6825
6798
|
|
|
6826
6799
|
// src/components/ui/engagement-rate.tsx
|
|
6827
6800
|
var React24 = __toESM(require("react"), 1);
|
|
6828
|
-
var import_lucide_react24 = require("lucide-react");
|
|
6829
6801
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
6830
6802
|
var convertToLocalNumbers2 = (text, locale) => {
|
|
6831
6803
|
if (locale === "fa" || locale === "ar") {
|
|
@@ -6885,17 +6857,17 @@ var getGroupIcon = (group) => {
|
|
|
6885
6857
|
const iconClass = "w-12 h-12 text-primary";
|
|
6886
6858
|
switch (group) {
|
|
6887
6859
|
case "nano":
|
|
6888
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6860
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.users, { className: iconClass });
|
|
6889
6861
|
case "micro":
|
|
6890
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.userCheck, { className: iconClass });
|
|
6891
6863
|
case "mid":
|
|
6892
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.trendingUp, { className: iconClass });
|
|
6893
6865
|
case "macro":
|
|
6894
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.award, { className: iconClass });
|
|
6895
6867
|
case "mega":
|
|
6896
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.crown, { className: iconClass });
|
|
6897
6869
|
default:
|
|
6898
|
-
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
6870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icons.users, { className: iconClass });
|
|
6899
6871
|
}
|
|
6900
6872
|
};
|
|
6901
6873
|
var translations = {
|
|
@@ -7555,7 +7527,6 @@ function Progress({
|
|
|
7555
7527
|
|
|
7556
7528
|
// src/components/ui/radio-group.tsx
|
|
7557
7529
|
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
7558
|
-
var import_lucide_react25 = require("lucide-react");
|
|
7559
7530
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
7560
7531
|
function RadioGroup4({
|
|
7561
7532
|
className,
|
|
@@ -7588,7 +7559,7 @@ function RadioGroupItem({
|
|
|
7588
7559
|
{
|
|
7589
7560
|
"data-slot": "radio-group-indicator",
|
|
7590
7561
|
className: "relative flex items-center justify-center",
|
|
7591
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
7562
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icons.circle, { className: "fill-brand absolute top-1/2 start-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rtl:translate-x-1/2" })
|
|
7592
7563
|
}
|
|
7593
7564
|
)
|
|
7594
7565
|
}
|
|
@@ -7656,7 +7627,6 @@ var RadioCardDescription = React26.forwardRef(({ className, ...props }, ref) =>
|
|
|
7656
7627
|
RadioCardDescription.displayName = "RadioCardDescription";
|
|
7657
7628
|
|
|
7658
7629
|
// src/components/ui/resizable.tsx
|
|
7659
|
-
var import_lucide_react26 = require("lucide-react");
|
|
7660
7630
|
var ResizablePrimitive = __toESM(require("react-resizable-panels"), 1);
|
|
7661
7631
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
7662
7632
|
function ResizablePanelGroup({
|
|
@@ -7694,7 +7664,7 @@ function ResizableHandle({
|
|
|
7694
7664
|
className
|
|
7695
7665
|
),
|
|
7696
7666
|
...props,
|
|
7697
|
-
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)(
|
|
7667
|
+
children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icons.gripVertical, { className: "size-2.5" }) })
|
|
7698
7668
|
}
|
|
7699
7669
|
);
|
|
7700
7670
|
}
|
|
@@ -7759,7 +7729,6 @@ function ScrollBar({
|
|
|
7759
7729
|
// src/components/ui/select.tsx
|
|
7760
7730
|
var React27 = __toESM(require("react"), 1);
|
|
7761
7731
|
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
7762
|
-
var import_lucide_react27 = require("lucide-react");
|
|
7763
7732
|
var import_class_variance_authority13 = require("class-variance-authority");
|
|
7764
7733
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
7765
7734
|
var Select = SelectPrimitive.Root;
|
|
@@ -7798,7 +7767,7 @@ var SelectTrigger = React27.forwardRef(({ className, children, size, ...props },
|
|
|
7798
7767
|
...props,
|
|
7799
7768
|
children: [
|
|
7800
7769
|
children,
|
|
7801
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
7770
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronDown, { className: "h-4 w-4 text-foreground-lighter flex-shrink-0", strokeWidth: 1.5 }) })
|
|
7802
7771
|
]
|
|
7803
7772
|
}
|
|
7804
7773
|
));
|
|
@@ -7812,7 +7781,7 @@ var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) =>
|
|
|
7812
7781
|
className
|
|
7813
7782
|
),
|
|
7814
7783
|
...props,
|
|
7815
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
7784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronUp, { className: "h-4 w-4" })
|
|
7816
7785
|
}
|
|
7817
7786
|
));
|
|
7818
7787
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
@@ -7825,7 +7794,7 @@ var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) =
|
|
|
7825
7794
|
className
|
|
7826
7795
|
),
|
|
7827
7796
|
...props,
|
|
7828
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
7797
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.chevronDown, { className: "h-4 w-4" })
|
|
7829
7798
|
}
|
|
7830
7799
|
));
|
|
7831
7800
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
@@ -7880,7 +7849,7 @@ var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
7880
7849
|
),
|
|
7881
7850
|
...props,
|
|
7882
7851
|
children: [
|
|
7883
|
-
/* @__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)(
|
|
7852
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.ItemIndicator, { className: "h-3.5 w-3.5 bg-foreground rounded-full flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icons.check, { className: "h-2 w-2 text-background-overlay", strokeWidth: 6 }) }) }),
|
|
7884
7853
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SelectPrimitive.ItemText, { children: typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children }) : children })
|
|
7885
7854
|
]
|
|
7886
7855
|
}
|
|
@@ -7898,7 +7867,6 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
|
7898
7867
|
|
|
7899
7868
|
// src/components/ui/sheet.tsx
|
|
7900
7869
|
var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
7901
|
-
var import_lucide_react28 = require("lucide-react");
|
|
7902
7870
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
7903
7871
|
function Sheet({ ...props }) {
|
|
7904
7872
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
@@ -7958,7 +7926,7 @@ function SheetContent({
|
|
|
7958
7926
|
children: [
|
|
7959
7927
|
children,
|
|
7960
7928
|
/* @__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: [
|
|
7961
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
7929
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icons.close, { className: "size-4" }),
|
|
7962
7930
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "sr-only", children: "Close" })
|
|
7963
7931
|
] })
|
|
7964
7932
|
]
|
|
@@ -8017,7 +7985,6 @@ function SheetDescription({
|
|
|
8017
7985
|
var React29 = __toESM(require("react"), 1);
|
|
8018
7986
|
var import_react_slot5 = require("@radix-ui/react-slot");
|
|
8019
7987
|
var import_class_variance_authority14 = require("class-variance-authority");
|
|
8020
|
-
var import_lucide_react29 = require("lucide-react");
|
|
8021
7988
|
|
|
8022
7989
|
// src/hooks/use-mobile.ts
|
|
8023
7990
|
var React28 = __toESM(require("react"), 1);
|
|
@@ -8235,7 +8202,7 @@ function SidebarTrigger({
|
|
|
8235
8202
|
},
|
|
8236
8203
|
...props,
|
|
8237
8204
|
children: [
|
|
8238
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
8205
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icons.panelLeft, {}),
|
|
8239
8206
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
8240
8207
|
]
|
|
8241
8208
|
}
|
|
@@ -8728,16 +8695,15 @@ function Slider({
|
|
|
8728
8695
|
}
|
|
8729
8696
|
|
|
8730
8697
|
// src/components/ui/sonner.tsx
|
|
8731
|
-
var import_lucide_react30 = require("lucide-react");
|
|
8732
8698
|
var import_next_themes = require("next-themes");
|
|
8733
8699
|
var import_sonner = require("sonner");
|
|
8734
8700
|
var import_sonner2 = require("sonner");
|
|
8735
8701
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
8736
8702
|
var SONNER_DEFAULT_DURATION = 4e3;
|
|
8737
|
-
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)(
|
|
8738
|
-
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)(
|
|
8739
|
-
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)(
|
|
8740
|
-
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)(
|
|
8703
|
+
var StatusIconSuccess = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-brand-600 dark:bg-brand-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.check, { className: "size-3 text-white", strokeWidth: 3 }) });
|
|
8704
|
+
var StatusIconInfo = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-foreground-lighter p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.info, { className: "size-3 text-background-surface-200" }) });
|
|
8705
|
+
var StatusIconWarning = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-warning-600 dark:bg-warning-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.alertTriangle, { className: "size-3 text-white" }) });
|
|
8706
|
+
var StatusIconError = () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-destructive-600 dark:bg-destructive-500 p-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.xCircle, { className: "size-3 text-white" }) });
|
|
8741
8707
|
var Toaster = ({
|
|
8742
8708
|
dir = "rtl",
|
|
8743
8709
|
position = "bottom-left",
|
|
@@ -8754,7 +8720,7 @@ var Toaster = ({
|
|
|
8754
8720
|
info: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconInfo, {}),
|
|
8755
8721
|
warning: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconWarning, {}),
|
|
8756
8722
|
error: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusIconError, {}),
|
|
8757
|
-
loading: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8723
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icons.loader, { className: "size-4 animate-spin" })
|
|
8758
8724
|
},
|
|
8759
8725
|
theme,
|
|
8760
8726
|
className: "toaster group pointer-events-auto",
|
|
@@ -9138,236 +9104,136 @@ function resolveCssColor(styles, variable, fallback) {
|
|
|
9138
9104
|
if (raw.includes("%")) return `hsl(${raw})`;
|
|
9139
9105
|
return raw;
|
|
9140
9106
|
}
|
|
9141
|
-
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9145
|
-
|
|
9146
|
-
|
|
9147
|
-
|
|
9148
|
-
|
|
9149
|
-
|
|
9150
|
-
|
|
9151
|
-
|
|
9152
|
-
|
|
9153
|
-
|
|
9154
|
-
|
|
9155
|
-
|
|
9156
|
-
|
|
9157
|
-
const
|
|
9158
|
-
|
|
9159
|
-
const addOpacity = (color, opacity) => {
|
|
9160
|
-
if (color.startsWith("hsl(")) {
|
|
9161
|
-
return color.replace(")", ` / ${opacity})`);
|
|
9162
|
-
}
|
|
9163
|
-
if (color.startsWith("rgb(")) {
|
|
9164
|
-
return color.replace("rgb(", "rgba(").replace(")", `, ${opacity})`);
|
|
9165
|
-
}
|
|
9166
|
-
return color;
|
|
9167
|
-
};
|
|
9168
|
-
const nivoTheme = {
|
|
9107
|
+
function addOpacityToColor(color, opacity) {
|
|
9108
|
+
if (color.startsWith("hsl(")) {
|
|
9109
|
+
return color.replace(")", ` / ${opacity})`);
|
|
9110
|
+
}
|
|
9111
|
+
if (color.startsWith("rgb(")) {
|
|
9112
|
+
return color.replace("rgb(", "rgba(").replace(")", `, ${opacity})`);
|
|
9113
|
+
}
|
|
9114
|
+
return color;
|
|
9115
|
+
}
|
|
9116
|
+
var CHART_FONT_FAMILY = "Yekan Bakh, system-ui, -apple-system, sans-serif";
|
|
9117
|
+
function createNivoTheme(styles, fallbacks) {
|
|
9118
|
+
const fb = { ...DEFAULT_FALLBACKS, ...fallbacks };
|
|
9119
|
+
const get = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
9120
|
+
const foreground = get("--foreground", fb.foreground);
|
|
9121
|
+
const foregroundMuted = get("--foreground-muted", fb.foregroundMuted);
|
|
9122
|
+
const border = get("--border", fb.border);
|
|
9123
|
+
const background = get("--background", fb.background);
|
|
9124
|
+
return {
|
|
9169
9125
|
background: "transparent",
|
|
9170
9126
|
text: {
|
|
9171
|
-
fontFamily:
|
|
9172
|
-
fill:
|
|
9127
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
9128
|
+
fill: foreground
|
|
9173
9129
|
},
|
|
9174
9130
|
axis: {
|
|
9175
9131
|
domain: {
|
|
9176
9132
|
line: {
|
|
9177
|
-
stroke:
|
|
9133
|
+
stroke: border,
|
|
9178
9134
|
strokeWidth: 1
|
|
9179
9135
|
}
|
|
9180
9136
|
},
|
|
9181
9137
|
ticks: {
|
|
9182
9138
|
line: {
|
|
9183
|
-
stroke:
|
|
9139
|
+
stroke: border,
|
|
9184
9140
|
strokeWidth: 1
|
|
9185
9141
|
},
|
|
9186
9142
|
text: {
|
|
9187
|
-
fontFamily:
|
|
9188
|
-
fill:
|
|
9143
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
9144
|
+
fill: foregroundMuted
|
|
9189
9145
|
}
|
|
9190
9146
|
},
|
|
9191
9147
|
legend: {
|
|
9192
9148
|
text: {
|
|
9193
|
-
fontFamily:
|
|
9194
|
-
fill:
|
|
9149
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
9150
|
+
fill: foreground
|
|
9195
9151
|
}
|
|
9196
9152
|
}
|
|
9197
9153
|
},
|
|
9198
9154
|
grid: {
|
|
9199
9155
|
line: {
|
|
9200
|
-
stroke:
|
|
9156
|
+
stroke: border,
|
|
9201
9157
|
strokeWidth: 1,
|
|
9202
9158
|
strokeOpacity: 0.5
|
|
9203
9159
|
}
|
|
9204
9160
|
},
|
|
9205
9161
|
tooltip: {
|
|
9206
9162
|
container: {
|
|
9207
|
-
fontFamily:
|
|
9208
|
-
background
|
|
9209
|
-
color:
|
|
9163
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
9164
|
+
background,
|
|
9165
|
+
color: foreground,
|
|
9210
9166
|
fontSize: 12,
|
|
9211
9167
|
borderRadius: "8px",
|
|
9212
|
-
border: `1px solid ${
|
|
9168
|
+
border: `1px solid ${addOpacityToColor(border, 0.5)}`,
|
|
9213
9169
|
boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
|
|
9214
9170
|
padding: "10px"
|
|
9215
9171
|
}
|
|
9216
9172
|
},
|
|
9217
9173
|
legends: {
|
|
9218
9174
|
text: {
|
|
9219
|
-
fontFamily:
|
|
9220
|
-
fill:
|
|
9175
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
9176
|
+
fill: foreground
|
|
9221
9177
|
}
|
|
9222
9178
|
}
|
|
9223
9179
|
};
|
|
9224
|
-
|
|
9225
|
-
|
|
9226
|
-
|
|
9227
|
-
|
|
9228
|
-
|
|
9229
|
-
|
|
9180
|
+
}
|
|
9181
|
+
var DEFAULT_FALLBACKS = {
|
|
9182
|
+
foreground: "hsl(0 0% 9%)",
|
|
9183
|
+
foregroundMuted: "hsl(0 0% 44%)",
|
|
9184
|
+
border: "hsl(0 0% 88%)",
|
|
9185
|
+
background: "hsl(0 0% 99%)",
|
|
9186
|
+
chart1: "hsl(152.9deg 60% 52.9%)",
|
|
9187
|
+
chart2: "hsl(173 58% 39%)",
|
|
9188
|
+
chart3: "hsl(197 37% 24%)",
|
|
9189
|
+
chart4: "hsl(43 74% 66%)",
|
|
9190
|
+
chart5: "hsl(27 87% 67%)"
|
|
9191
|
+
};
|
|
9192
|
+
function resolveChartColors(styles, fallbacks) {
|
|
9193
|
+
const fb = { ...DEFAULT_FALLBACKS, ...fallbacks };
|
|
9194
|
+
const get = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
9195
|
+
return [
|
|
9196
|
+
get("--chart-1", fb.chart1),
|
|
9197
|
+
get("--chart-2", fb.chart2),
|
|
9198
|
+
get("--chart-3", fb.chart3),
|
|
9199
|
+
get("--chart-4", fb.chart4),
|
|
9200
|
+
get("--chart-5", fb.chart5)
|
|
9230
9201
|
];
|
|
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);
|
|
9231
9210
|
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 }) });
|
|
9232
9211
|
}
|
|
9233
9212
|
|
|
9234
9213
|
// src/components/charts/PartoBarChart.tsx
|
|
9235
9214
|
var import_bar = require("@nivo/bar");
|
|
9236
9215
|
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
9237
|
-
var FALLBACKS2 = {
|
|
9238
|
-
foreground: "hsl(0 0% 98%)",
|
|
9239
|
-
border: "hsl(0 0% 45%)",
|
|
9240
|
-
mutedForeground: "hsl(0 0% 55%)",
|
|
9241
|
-
popover: "hsl(0 0% 12%)",
|
|
9242
|
-
popoverForeground: "hsl(0 0% 98%)",
|
|
9243
|
-
chart1: "hsl(12 76% 61%)",
|
|
9244
|
-
chart2: "hsl(173 58% 39%)",
|
|
9245
|
-
chart3: "hsl(197 37% 24%)",
|
|
9246
|
-
chart4: "hsl(43 74% 66%)",
|
|
9247
|
-
chart5: "hsl(27 87% 67%)"
|
|
9248
|
-
};
|
|
9249
9216
|
function PartoBarChart({ className, ...props }) {
|
|
9250
9217
|
const styles = useRootStyles();
|
|
9251
|
-
const
|
|
9252
|
-
const
|
|
9253
|
-
background: "transparent",
|
|
9254
|
-
text: {
|
|
9255
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9256
|
-
fill: getColor("--foreground", FALLBACKS2.foreground)
|
|
9257
|
-
},
|
|
9258
|
-
axis: {
|
|
9259
|
-
domain: {
|
|
9260
|
-
line: {
|
|
9261
|
-
stroke: getColor("--border", FALLBACKS2.border),
|
|
9262
|
-
strokeWidth: 1
|
|
9263
|
-
}
|
|
9264
|
-
},
|
|
9265
|
-
ticks: {
|
|
9266
|
-
line: {
|
|
9267
|
-
stroke: getColor("--border", FALLBACKS2.border),
|
|
9268
|
-
strokeWidth: 1
|
|
9269
|
-
},
|
|
9270
|
-
text: {
|
|
9271
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9272
|
-
fill: getColor("--muted-foreground", FALLBACKS2.mutedForeground)
|
|
9273
|
-
}
|
|
9274
|
-
},
|
|
9275
|
-
legend: {
|
|
9276
|
-
text: {
|
|
9277
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9278
|
-
fill: getColor("--foreground", FALLBACKS2.foreground)
|
|
9279
|
-
}
|
|
9280
|
-
}
|
|
9281
|
-
},
|
|
9282
|
-
grid: {
|
|
9283
|
-
line: {
|
|
9284
|
-
stroke: getColor("--border", FALLBACKS2.border),
|
|
9285
|
-
strokeWidth: 1,
|
|
9286
|
-
strokeOpacity: 0.4
|
|
9287
|
-
}
|
|
9288
|
-
},
|
|
9289
|
-
tooltip: {
|
|
9290
|
-
container: {
|
|
9291
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9292
|
-
background: getColor("--popover", FALLBACKS2.popover),
|
|
9293
|
-
color: getColor("--popover-foreground", FALLBACKS2.popoverForeground),
|
|
9294
|
-
fontSize: 12,
|
|
9295
|
-
borderRadius: "var(--radius)",
|
|
9296
|
-
boxShadow: "0 2px 12px rgba(0,0,0,0.15)",
|
|
9297
|
-
padding: "8px 12px"
|
|
9298
|
-
}
|
|
9299
|
-
},
|
|
9300
|
-
legends: {
|
|
9301
|
-
text: {
|
|
9302
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9303
|
-
fill: getColor("--foreground", FALLBACKS2.foreground)
|
|
9304
|
-
}
|
|
9305
|
-
}
|
|
9306
|
-
};
|
|
9307
|
-
const defaultColors = [
|
|
9308
|
-
getColor("--chart-1", FALLBACKS2.chart1),
|
|
9309
|
-
getColor("--chart-2", FALLBACKS2.chart2),
|
|
9310
|
-
getColor("--chart-3", FALLBACKS2.chart3),
|
|
9311
|
-
getColor("--chart-4", FALLBACKS2.chart4),
|
|
9312
|
-
getColor("--chart-5", FALLBACKS2.chart5)
|
|
9313
|
-
];
|
|
9218
|
+
const nivoTheme = createNivoTheme(styles);
|
|
9219
|
+
const defaultColors = resolveChartColors(styles);
|
|
9314
9220
|
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 }) });
|
|
9315
9221
|
}
|
|
9316
9222
|
|
|
9317
9223
|
// src/components/charts/PartoPieChart.tsx
|
|
9318
9224
|
var import_pie = require("@nivo/pie");
|
|
9319
9225
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
9320
|
-
var FALLBACKS3 = {
|
|
9321
|
-
foreground: "hsl(0 0% 98%)",
|
|
9322
|
-
popover: "hsl(0 0% 12%)",
|
|
9323
|
-
popoverForeground: "hsl(0 0% 98%)",
|
|
9324
|
-
chart1: "hsl(12 76% 61%)",
|
|
9325
|
-
chart2: "hsl(173 58% 39%)",
|
|
9326
|
-
chart3: "hsl(197 37% 24%)",
|
|
9327
|
-
chart4: "hsl(43 74% 66%)",
|
|
9328
|
-
chart5: "hsl(27 87% 67%)"
|
|
9329
|
-
};
|
|
9330
9226
|
function PartoPieChart({ className, ...props }) {
|
|
9331
9227
|
const styles = useRootStyles();
|
|
9332
|
-
const
|
|
9333
|
-
const
|
|
9334
|
-
background: "transparent",
|
|
9335
|
-
text: {
|
|
9336
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9337
|
-
fill: getColor("--foreground", FALLBACKS3.foreground)
|
|
9338
|
-
},
|
|
9339
|
-
tooltip: {
|
|
9340
|
-
container: {
|
|
9341
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9342
|
-
background: getColor("--popover", FALLBACKS3.popover),
|
|
9343
|
-
color: getColor("--popover-foreground", FALLBACKS3.popoverForeground),
|
|
9344
|
-
fontSize: 12,
|
|
9345
|
-
borderRadius: "var(--radius)",
|
|
9346
|
-
boxShadow: "0 2px 12px rgba(0,0,0,0.15)",
|
|
9347
|
-
padding: "8px 12px"
|
|
9348
|
-
}
|
|
9349
|
-
},
|
|
9350
|
-
legends: {
|
|
9351
|
-
text: {
|
|
9352
|
-
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9353
|
-
fill: getColor("--foreground", FALLBACKS3.foreground)
|
|
9354
|
-
}
|
|
9355
|
-
}
|
|
9356
|
-
};
|
|
9357
|
-
const defaultColors = [
|
|
9358
|
-
getColor("--chart-1", FALLBACKS3.chart1),
|
|
9359
|
-
getColor("--chart-2", FALLBACKS3.chart2),
|
|
9360
|
-
getColor("--chart-3", FALLBACKS3.chart3),
|
|
9361
|
-
getColor("--chart-4", FALLBACKS3.chart4),
|
|
9362
|
-
getColor("--chart-5", FALLBACKS3.chart5)
|
|
9363
|
-
];
|
|
9228
|
+
const nivoTheme = createNivoTheme(styles);
|
|
9229
|
+
const defaultColors = resolveChartColors(styles);
|
|
9364
9230
|
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 }) });
|
|
9365
9231
|
}
|
|
9366
9232
|
|
|
9367
9233
|
// src/components/charts/PartoHeatMap.tsx
|
|
9368
9234
|
var import_heatmap = require("@nivo/heatmap");
|
|
9369
9235
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
9370
|
-
var
|
|
9236
|
+
var FALLBACKS = {
|
|
9371
9237
|
foreground: "hsl(0 0% 98%)",
|
|
9372
9238
|
border: "hsl(0 0% 45%)",
|
|
9373
9239
|
mutedForeground: "hsl(0 0% 55%)",
|
|
@@ -9435,24 +9301,24 @@ function PartoHeatMap({
|
|
|
9435
9301
|
background: "transparent",
|
|
9436
9302
|
text: {
|
|
9437
9303
|
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9438
|
-
fill: getColor("--foreground",
|
|
9304
|
+
fill: getColor("--foreground", FALLBACKS.foreground),
|
|
9439
9305
|
fontSize: 11
|
|
9440
9306
|
},
|
|
9441
9307
|
axis: {
|
|
9442
9308
|
domain: {
|
|
9443
9309
|
line: {
|
|
9444
|
-
stroke: getColor("--border",
|
|
9310
|
+
stroke: getColor("--border", FALLBACKS.border),
|
|
9445
9311
|
strokeWidth: 1
|
|
9446
9312
|
}
|
|
9447
9313
|
},
|
|
9448
9314
|
ticks: {
|
|
9449
9315
|
line: {
|
|
9450
|
-
stroke: getColor("--border",
|
|
9316
|
+
stroke: getColor("--border", FALLBACKS.border),
|
|
9451
9317
|
strokeWidth: 1
|
|
9452
9318
|
},
|
|
9453
9319
|
text: {
|
|
9454
9320
|
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9455
|
-
fill: getColor("--foreground",
|
|
9321
|
+
fill: getColor("--foreground", FALLBACKS.foreground),
|
|
9456
9322
|
fontSize: 13,
|
|
9457
9323
|
fontWeight: 600
|
|
9458
9324
|
}
|
|
@@ -9460,7 +9326,7 @@ function PartoHeatMap({
|
|
|
9460
9326
|
legend: {
|
|
9461
9327
|
text: {
|
|
9462
9328
|
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9463
|
-
fill: getColor("--foreground",
|
|
9329
|
+
fill: getColor("--foreground", FALLBACKS.foreground),
|
|
9464
9330
|
fontSize: 13,
|
|
9465
9331
|
fontWeight: 700
|
|
9466
9332
|
}
|
|
@@ -9468,26 +9334,26 @@ function PartoHeatMap({
|
|
|
9468
9334
|
},
|
|
9469
9335
|
grid: {
|
|
9470
9336
|
line: {
|
|
9471
|
-
stroke: getColor("--card",
|
|
9337
|
+
stroke: getColor("--card", FALLBACKS.card),
|
|
9472
9338
|
strokeWidth: 3
|
|
9473
9339
|
}
|
|
9474
9340
|
},
|
|
9475
9341
|
tooltip: {
|
|
9476
9342
|
container: {
|
|
9477
9343
|
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9478
|
-
background: getColor("--popover",
|
|
9479
|
-
color: getColor("--popover-foreground",
|
|
9344
|
+
background: getColor("--popover", FALLBACKS.popover),
|
|
9345
|
+
color: getColor("--popover-foreground", FALLBACKS.popoverForeground),
|
|
9480
9346
|
fontSize: 12,
|
|
9481
9347
|
borderRadius: "var(--radius)",
|
|
9482
9348
|
boxShadow: "0 2px 4px rgba(0,0,0,0.2)",
|
|
9483
9349
|
padding: "8px 12px",
|
|
9484
|
-
border: `1px solid ${getColor("--border",
|
|
9350
|
+
border: `1px solid ${getColor("--border", FALLBACKS.border)}`
|
|
9485
9351
|
}
|
|
9486
9352
|
},
|
|
9487
9353
|
legends: {
|
|
9488
9354
|
text: {
|
|
9489
9355
|
fontFamily: "Yekan Bakh, system-ui, -apple-system, sans-serif",
|
|
9490
|
-
fill: getColor("--foreground",
|
|
9356
|
+
fill: getColor("--foreground", FALLBACKS.foreground),
|
|
9491
9357
|
fontSize: 11
|
|
9492
9358
|
}
|
|
9493
9359
|
}
|
|
@@ -9556,7 +9422,7 @@ function PartoHeatMap({
|
|
|
9556
9422
|
emptyColor: getColor("--muted", "hsl(0 0% 20%)"),
|
|
9557
9423
|
borderRadius: 2,
|
|
9558
9424
|
borderWidth: 3,
|
|
9559
|
-
borderColor: getColor("--card",
|
|
9425
|
+
borderColor: getColor("--card", FALLBACKS.card),
|
|
9560
9426
|
enableLabels: false,
|
|
9561
9427
|
animate: true,
|
|
9562
9428
|
motionConfig: "gentle",
|
|
@@ -9575,7 +9441,7 @@ var import_wordcloud = require("@visx/wordcloud");
|
|
|
9575
9441
|
var import_scale = require("@visx/scale");
|
|
9576
9442
|
var import_text = require("@visx/text");
|
|
9577
9443
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
9578
|
-
var
|
|
9444
|
+
var FALLBACKS2 = {
|
|
9579
9445
|
primary: "hsl(12 76% 61%)"
|
|
9580
9446
|
};
|
|
9581
9447
|
var stableRandom = () => 0.5;
|
|
@@ -9609,7 +9475,7 @@ function PartoWordCloud({
|
|
|
9609
9475
|
const [hovered, setHovered] = React34.useState(null);
|
|
9610
9476
|
const containerRef = React34.useRef(null);
|
|
9611
9477
|
const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
9612
|
-
const primaryColor = getColor("--primary",
|
|
9478
|
+
const primaryColor = getColor("--primary", FALLBACKS2.primary);
|
|
9613
9479
|
const formattedWords = React34.useMemo(() => {
|
|
9614
9480
|
return words.map((word) => ({
|
|
9615
9481
|
...word,
|