@parto-system-design/ui 1.1.5 → 1.1.8
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/AGENTS.md +233 -0
- package/LICENSE +21 -0
- package/README.md +96 -43
- package/dist/chunk-2ACKKPWA.cjs +112 -0
- package/dist/chunk-2ACKKPWA.cjs.map +1 -0
- package/dist/chunk-2UD3LGVX.cjs +316 -0
- package/dist/chunk-2UD3LGVX.cjs.map +1 -0
- package/dist/chunk-3QYYPPFJ.js +269 -0
- package/dist/chunk-3QYYPPFJ.js.map +1 -0
- package/dist/chunk-4SVQNEVH.js +173 -0
- package/dist/chunk-4SVQNEVH.js.map +1 -0
- package/dist/chunk-4WONHORR.cjs +152 -0
- package/dist/chunk-4WONHORR.cjs.map +1 -0
- package/dist/chunk-5HCXH6GS.js +409 -0
- package/dist/chunk-5HCXH6GS.js.map +1 -0
- package/dist/chunk-5JJSRGJD.js +31 -0
- package/dist/chunk-5JJSRGJD.js.map +1 -0
- package/dist/chunk-5K6E4ZSW.cjs +77 -0
- package/dist/chunk-5K6E4ZSW.cjs.map +1 -0
- package/dist/chunk-5NY26ULO.js +89 -0
- package/dist/chunk-5NY26ULO.js.map +1 -0
- package/dist/chunk-7RVPG3LE.cjs +231 -0
- package/dist/chunk-7RVPG3LE.cjs.map +1 -0
- package/dist/chunk-AYEK3WOM.js +207 -0
- package/dist/chunk-AYEK3WOM.js.map +1 -0
- package/dist/chunk-BRMBLIQG.js +53 -0
- package/dist/chunk-BRMBLIQG.js.map +1 -0
- package/dist/chunk-CAJKSTXX.cjs +54 -0
- package/dist/chunk-CAJKSTXX.cjs.map +1 -0
- package/dist/chunk-CKFWMHQU.js +401 -0
- package/dist/chunk-CKFWMHQU.js.map +1 -0
- package/dist/chunk-CV3N3HVK.js +672 -0
- package/dist/chunk-CV3N3HVK.js.map +1 -0
- package/dist/chunk-D2EBLE2B.cjs +220 -0
- package/dist/chunk-D2EBLE2B.cjs.map +1 -0
- package/dist/chunk-GCZ6YATL.js +940 -0
- package/dist/chunk-GCZ6YATL.js.map +1 -0
- package/dist/chunk-GKRAZGDI.cjs +84 -0
- package/dist/chunk-GKRAZGDI.cjs.map +1 -0
- package/dist/chunk-GPYJ66CG.js +45 -0
- package/dist/chunk-GPYJ66CG.js.map +1 -0
- package/dist/chunk-HF6XU5NI.js +84 -0
- package/dist/chunk-HF6XU5NI.js.map +1 -0
- package/dist/chunk-HJPDZOMJ.cjs +87 -0
- package/dist/chunk-HJPDZOMJ.cjs.map +1 -0
- package/dist/chunk-HS3XI3CC.cjs +69 -0
- package/dist/chunk-HS3XI3CC.cjs.map +1 -0
- package/dist/chunk-HUCC3QH5.cjs +53 -0
- package/dist/chunk-HUCC3QH5.cjs.map +1 -0
- package/dist/chunk-HYZ6BQPS.cjs +425 -0
- package/dist/chunk-HYZ6BQPS.cjs.map +1 -0
- package/dist/chunk-ISCSZMYW.cjs +106 -0
- package/dist/chunk-ISCSZMYW.cjs.map +1 -0
- package/dist/chunk-IXFEFIDO.js +82 -0
- package/dist/chunk-IXFEFIDO.js.map +1 -0
- package/dist/chunk-JCJLN437.js +108 -0
- package/dist/chunk-JCJLN437.js.map +1 -0
- package/dist/chunk-JMKNNH63.cjs +982 -0
- package/dist/chunk-JMKNNH63.cjs.map +1 -0
- package/dist/chunk-JUBHQAA2.js +53 -0
- package/dist/chunk-JUBHQAA2.js.map +1 -0
- package/dist/chunk-K6G63EED.cjs +41 -0
- package/dist/chunk-K6G63EED.cjs.map +1 -0
- package/dist/chunk-KCWRCSI7.js +62 -0
- package/dist/chunk-KCWRCSI7.js.map +1 -0
- package/dist/chunk-KYM7NIJO.cjs +433 -0
- package/dist/chunk-KYM7NIJO.cjs.map +1 -0
- package/dist/chunk-L2L5CKC2.js +291 -0
- package/dist/chunk-L2L5CKC2.js.map +1 -0
- package/dist/chunk-M5CHZ5BA.js +124 -0
- package/dist/chunk-M5CHZ5BA.js.map +1 -0
- package/dist/chunk-MEK4RSGC.js +65 -0
- package/dist/chunk-MEK4RSGC.js.map +1 -0
- package/dist/chunk-MEKWH3GS.js +89 -0
- package/dist/chunk-MEKWH3GS.js.map +1 -0
- package/dist/chunk-MFTX2DDQ.js +27 -0
- package/dist/chunk-MFTX2DDQ.js.map +1 -0
- package/dist/chunk-MMC6M35Q.cjs +272 -0
- package/dist/chunk-MMC6M35Q.cjs.map +1 -0
- package/dist/chunk-NMH43BDC.js +130 -0
- package/dist/chunk-NMH43BDC.js.map +1 -0
- package/dist/chunk-NORDUD2T.cjs +135 -0
- package/dist/chunk-NORDUD2T.cjs.map +1 -0
- package/dist/chunk-NV4JOKWL.cjs +197 -0
- package/dist/chunk-NV4JOKWL.cjs.map +1 -0
- package/dist/chunk-O2JG7WY5.cjs +121 -0
- package/dist/chunk-O2JG7WY5.cjs.map +1 -0
- package/dist/chunk-ONO2FTV4.cjs +68 -0
- package/dist/chunk-ONO2FTV4.cjs.map +1 -0
- package/dist/chunk-OQB6HIUL.cjs +108 -0
- package/dist/chunk-OQB6HIUL.cjs.map +1 -0
- package/dist/chunk-OS6CMYAS.cjs +79 -0
- package/dist/chunk-OS6CMYAS.cjs.map +1 -0
- package/dist/chunk-PYURPUTV.js +402 -0
- package/dist/chunk-PYURPUTV.js.map +1 -0
- package/dist/chunk-RJ3HYZ7S.js +44 -0
- package/dist/chunk-RJ3HYZ7S.js.map +1 -0
- package/dist/chunk-RZNRIOLT.js +128 -0
- package/dist/chunk-RZNRIOLT.js.map +1 -0
- package/dist/chunk-S3T2L6NA.js +38 -0
- package/dist/chunk-S3T2L6NA.js.map +1 -0
- package/dist/chunk-S5IPJQZ3.cjs +161 -0
- package/dist/chunk-S5IPJQZ3.cjs.map +1 -0
- package/dist/chunk-SB5DSYR5.js +211 -0
- package/dist/chunk-SB5DSYR5.js.map +1 -0
- package/dist/chunk-SFXV2DUH.js +106 -0
- package/dist/chunk-SFXV2DUH.js.map +1 -0
- package/dist/chunk-SXEPGD4Z.cjs +152 -0
- package/dist/chunk-SXEPGD4Z.cjs.map +1 -0
- package/dist/chunk-SXWSOU3Y.js +89 -0
- package/dist/chunk-SXWSOU3Y.js.map +1 -0
- package/dist/chunk-SZMVOHT7.cjs +107 -0
- package/dist/chunk-SZMVOHT7.cjs.map +1 -0
- package/dist/chunk-TWJXOV4C.js +145 -0
- package/dist/chunk-TWJXOV4C.js.map +1 -0
- package/dist/chunk-U3ADRIVO.cjs +434 -0
- package/dist/chunk-U3ADRIVO.cjs.map +1 -0
- package/dist/chunk-U5FLLCGC.cjs +151 -0
- package/dist/chunk-U5FLLCGC.cjs.map +1 -0
- package/dist/chunk-UOZN45G4.cjs +130 -0
- package/dist/chunk-UOZN45G4.cjs.map +1 -0
- package/dist/chunk-VHLDOG74.cjs +167 -0
- package/dist/chunk-VHLDOG74.cjs.map +1 -0
- package/dist/chunk-YC5KLN6I.js +139 -0
- package/dist/chunk-YC5KLN6I.js.map +1 -0
- package/dist/chunk-YENXXYUV.cjs +111 -0
- package/dist/chunk-YENXXYUV.cjs.map +1 -0
- package/dist/chunk-YFQWC2PW.js +113 -0
- package/dist/chunk-YFQWC2PW.js.map +1 -0
- package/dist/chunk-Z2TY4A75.cjs +700 -0
- package/dist/chunk-Z2TY4A75.cjs.map +1 -0
- package/dist/chunk-Z56O7UEU.cjs +136 -0
- package/dist/chunk-Z56O7UEU.cjs.map +1 -0
- package/dist/chunk-ZBZDR4ZC.js +106 -0
- package/dist/chunk-ZBZDR4ZC.js.map +1 -0
- package/dist/components/charts/PartoAreaChart.cjs +15 -0
- package/dist/components/charts/PartoAreaChart.cjs.map +1 -0
- package/dist/components/charts/PartoAreaChart.d.cts +53 -0
- package/dist/components/charts/PartoAreaChart.d.ts +53 -0
- package/dist/components/charts/PartoAreaChart.js +6 -0
- package/dist/components/charts/PartoAreaChart.js.map +1 -0
- package/dist/components/charts/PartoBarChart.cjs +15 -0
- package/dist/components/charts/PartoBarChart.cjs.map +1 -0
- package/dist/components/charts/PartoBarChart.d.cts +61 -0
- package/dist/components/charts/PartoBarChart.d.ts +61 -0
- package/dist/components/charts/PartoBarChart.js +6 -0
- package/dist/components/charts/PartoBarChart.js.map +1 -0
- package/dist/components/charts/PartoLineChart.cjs +15 -0
- package/dist/components/charts/PartoLineChart.cjs.map +1 -0
- package/dist/components/charts/PartoLineChart.d.cts +57 -0
- package/dist/components/charts/PartoLineChart.d.ts +57 -0
- package/dist/components/charts/PartoLineChart.js +6 -0
- package/dist/components/charts/PartoLineChart.js.map +1 -0
- package/dist/components/charts/PartoPieChart.cjs +15 -0
- package/dist/components/charts/PartoPieChart.cjs.map +1 -0
- package/dist/components/charts/PartoPieChart.d.cts +52 -0
- package/dist/components/charts/PartoPieChart.d.ts +52 -0
- package/dist/components/charts/PartoPieChart.js +6 -0
- package/dist/components/charts/PartoPieChart.js.map +1 -0
- package/dist/components/ui/alert-rule-card.cjs +15 -0
- package/dist/components/ui/alert-rule-card.cjs.map +1 -0
- package/dist/components/ui/alert-rule-card.d.cts +38 -0
- package/dist/components/ui/alert-rule-card.d.ts +38 -0
- package/dist/components/ui/alert-rule-card.js +6 -0
- package/dist/components/ui/alert-rule-card.js.map +1 -0
- package/dist/components/ui/avatar.cjs +21 -0
- package/dist/components/ui/avatar.cjs.map +1 -0
- package/dist/components/ui/avatar.d.cts +18 -0
- package/dist/components/ui/avatar.d.ts +18 -0
- package/dist/components/ui/avatar.js +4 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.cjs +17 -0
- package/dist/components/ui/badge.cjs.map +1 -0
- package/dist/components/ui/badge.d.cts +16 -0
- package/dist/components/ui/badge.d.ts +16 -0
- package/dist/components/ui/badge.js +4 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.cjs +18 -0
- package/dist/components/ui/button.cjs.map +1 -0
- package/dist/components/ui/button.d.cts +37 -0
- package/dist/components/ui/button.d.ts +37 -0
- package/dist/components/ui/button.js +5 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.cjs +15 -0
- package/dist/components/ui/calendar.cjs.map +1 -0
- package/dist/components/ui/calendar.d.cts +17 -0
- package/dist/components/ui/calendar.d.ts +17 -0
- package/dist/components/ui/calendar.js +6 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.cjs +37 -0
- package/dist/components/ui/card.cjs.map +1 -0
- package/dist/components/ui/card.d.cts +18 -0
- package/dist/components/ui/card.d.ts +18 -0
- package/dist/components/ui/card.js +4 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/concept-card.cjs +18 -0
- package/dist/components/ui/concept-card.cjs.map +1 -0
- package/dist/components/ui/concept-card.d.cts +5 -0
- package/dist/components/ui/concept-card.d.ts +5 -0
- package/dist/components/ui/concept-card.js +9 -0
- package/dist/components/ui/concept-card.js.map +1 -0
- package/dist/components/ui/data-table.cjs +18 -0
- package/dist/components/ui/data-table.cjs.map +1 -0
- package/dist/components/ui/data-table.d.cts +181 -0
- package/dist/components/ui/data-table.d.ts +181 -0
- package/dist/components/ui/data-table.js +9 -0
- package/dist/components/ui/data-table.js.map +1 -0
- package/dist/components/ui/dialog.cjs +49 -0
- package/dist/components/ui/dialog.cjs.map +1 -0
- package/dist/components/ui/dialog.d.cts +22 -0
- package/dist/components/ui/dialog.d.ts +22 -0
- package/dist/components/ui/dialog.js +4 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/filter-provider.cjs +20 -0
- package/dist/components/ui/filter-provider.cjs.map +1 -0
- package/dist/components/ui/filter-provider.d.cts +49 -0
- package/dist/components/ui/filter-provider.d.ts +49 -0
- package/dist/components/ui/filter-provider.js +3 -0
- package/dist/components/ui/filter-provider.js.map +1 -0
- package/dist/components/ui/input.cjs +22 -0
- package/dist/components/ui/input.cjs.map +1 -0
- package/dist/components/ui/input.d.cts +16 -0
- package/dist/components/ui/input.d.ts +16 -0
- package/dist/components/ui/input.js +5 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/iran-province-heat.cjs +13 -0
- package/dist/components/ui/iran-province-heat.cjs.map +1 -0
- package/dist/components/ui/iran-province-heat.d.cts +64 -0
- package/dist/components/ui/iran-province-heat.d.ts +64 -0
- package/dist/components/ui/iran-province-heat.js +4 -0
- package/dist/components/ui/iran-province-heat.js.map +1 -0
- package/dist/components/ui/page-card.cjs +16 -0
- package/dist/components/ui/page-card.cjs.map +1 -0
- package/dist/components/ui/page-card.d.cts +6 -0
- package/dist/components/ui/page-card.d.ts +6 -0
- package/dist/components/ui/page-card.js +7 -0
- package/dist/components/ui/page-card.js.map +1 -0
- package/dist/components/ui/popover.cjs +25 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.d.cts +9 -0
- package/dist/components/ui/popover.d.ts +9 -0
- package/dist/components/ui/popover.js +4 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/saved-query-card.cjs +15 -0
- package/dist/components/ui/saved-query-card.cjs.map +1 -0
- package/dist/components/ui/saved-query-card.d.cts +41 -0
- package/dist/components/ui/saved-query-card.d.ts +41 -0
- package/dist/components/ui/saved-query-card.js +6 -0
- package/dist/components/ui/saved-query-card.js.map +1 -0
- package/dist/components/ui/separator.cjs +13 -0
- package/dist/components/ui/separator.cjs.map +1 -0
- package/dist/components/ui/separator.d.cts +9 -0
- package/dist/components/ui/separator.d.ts +9 -0
- package/dist/components/ui/separator.js +4 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.cjs +45 -0
- package/dist/components/ui/sheet.cjs.map +1 -0
- package/dist/components/ui/sheet.d.cts +44 -0
- package/dist/components/ui/sheet.d.ts +44 -0
- package/dist/components/ui/sheet.js +4 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/sparkline.cjs +13 -0
- package/dist/components/ui/sparkline.cjs.map +1 -0
- package/dist/components/ui/sparkline.d.cts +36 -0
- package/dist/components/ui/sparkline.d.ts +36 -0
- package/dist/components/ui/sparkline.js +4 -0
- package/dist/components/ui/sparkline.js.map +1 -0
- package/dist/components/ui/tooltip.cjs +25 -0
- package/dist/components/ui/tooltip.cjs.map +1 -0
- package/dist/components/ui/tooltip.d.cts +17 -0
- package/dist/components/ui/tooltip.d.ts +17 -0
- package/dist/components/ui/tooltip.js +4 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/concept-card-CcOBb2Nz.d.ts +83 -0
- package/dist/concept-card-RwPbqJ06.d.cts +83 -0
- package/dist/hooks/use-hotkey-registry.cjs +21 -0
- package/dist/hooks/use-hotkey-registry.cjs.map +1 -0
- package/dist/hooks/use-hotkey-registry.d.cts +65 -0
- package/dist/hooks/use-hotkey-registry.d.ts +65 -0
- package/dist/hooks/use-hotkey-registry.js +4 -0
- package/dist/hooks/use-hotkey-registry.js.map +1 -0
- package/dist/hooks/use-hotkeys.cjs +16 -0
- package/dist/hooks/use-hotkeys.cjs.map +1 -0
- package/dist/hooks/use-hotkeys.d.cts +66 -0
- package/dist/hooks/use-hotkeys.d.ts +66 -0
- package/dist/hooks/use-hotkeys.js +3 -0
- package/dist/hooks/use-hotkeys.js.map +1 -0
- package/dist/i18n-ArS3mqj0.d.ts +344 -0
- package/dist/i18n-CAd9wGOr.d.cts +344 -0
- package/dist/index.cjs +12195 -13224
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +490 -34
- package/dist/index.d.cts +1635 -1263
- package/dist/index.d.ts +1635 -1263
- package/dist/index.js +10693 -12364
- package/dist/index.js.map +1 -1
- package/dist/page-card-CmShVqG-.d.cts +100 -0
- package/dist/page-card-HBn-cy4J.d.ts +100 -0
- package/dist/utils-DlXWmDZ-.d.cts +35 -0
- package/dist/utils-DlXWmDZ-.d.ts +35 -0
- package/package.json +160 -4
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkMMC6M35Q_cjs = require('./chunk-MMC6M35Q.cjs');
|
|
4
|
+
var chunkNV4JOKWL_cjs = require('./chunk-NV4JOKWL.cjs');
|
|
5
|
+
var lucideReact = require('lucide-react');
|
|
6
|
+
var reactDayPicker = require('react-day-picker');
|
|
7
|
+
var persian = require('react-day-picker/persian');
|
|
8
|
+
var locale = require('date-fns/locale');
|
|
9
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
+
|
|
11
|
+
function Calendar({
|
|
12
|
+
className,
|
|
13
|
+
classNames,
|
|
14
|
+
showOutsideDays = true,
|
|
15
|
+
usePersianCalendar = false,
|
|
16
|
+
...props
|
|
17
|
+
}) {
|
|
18
|
+
const PickerComponent = usePersianCalendar ? persian.DayPicker : reactDayPicker.DayPicker;
|
|
19
|
+
const englishFormatters = !usePersianCalendar ? {
|
|
20
|
+
formatDay: (date) => {
|
|
21
|
+
if (!date || !(date instanceof Date)) {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
const dayNumber = date.getDate();
|
|
25
|
+
return new Intl.NumberFormat("en-US", { useGrouping: false }).format(dayNumber);
|
|
26
|
+
},
|
|
27
|
+
formatWeekdayName: (date) => {
|
|
28
|
+
if (!date || !(date instanceof Date)) {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
return new Intl.DateTimeFormat("en-US", { weekday: "short" }).format(date);
|
|
32
|
+
},
|
|
33
|
+
formatMonthCaption: (date) => {
|
|
34
|
+
if (!date || !(date instanceof Date)) {
|
|
35
|
+
return "";
|
|
36
|
+
}
|
|
37
|
+
return new Intl.DateTimeFormat("en-US", { month: "long", year: "numeric" }).format(date);
|
|
38
|
+
}
|
|
39
|
+
} : void 0;
|
|
40
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "calendar", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
+
PickerComponent,
|
|
42
|
+
{
|
|
43
|
+
dir: usePersianCalendar ? "rtl" : "ltr",
|
|
44
|
+
locale: usePersianCalendar ? void 0 : locale.enUS,
|
|
45
|
+
formatters: englishFormatters,
|
|
46
|
+
showOutsideDays,
|
|
47
|
+
className: chunkNV4JOKWL_cjs.cn("p-6", usePersianCalendar ? "" : "font-sans", className),
|
|
48
|
+
classNames: {
|
|
49
|
+
months: "flex flex-col sm:flex-row gap-y-4 sm:gap-y-0",
|
|
50
|
+
month: "gap-y-4 mx-2",
|
|
51
|
+
month_caption: "flex justify-center pt-1 relative items-center h-7",
|
|
52
|
+
caption_label: "text-sm font-medium truncate",
|
|
53
|
+
button_previous: chunkNV4JOKWL_cjs.cn(
|
|
54
|
+
chunkMMC6M35Q_cjs.buttonVariants({ variant: "outline" }),
|
|
55
|
+
"absolute start-2 size-7 bg-transparent p-0 opacity-50 hover:opacity-100 border-0"
|
|
56
|
+
),
|
|
57
|
+
button_next: chunkNV4JOKWL_cjs.cn(
|
|
58
|
+
chunkMMC6M35Q_cjs.buttonVariants({ variant: "outline" }),
|
|
59
|
+
"absolute end-2 size-7 bg-transparent p-0 opacity-50 hover:opacity-100 border-0"
|
|
60
|
+
),
|
|
61
|
+
month_grid: "mt-4",
|
|
62
|
+
weekdays: "flex flex-row",
|
|
63
|
+
weekday: "text-muted-foreground rounded-md size-9 font-normal text-xs flex items-center justify-center",
|
|
64
|
+
week: "flex w-full mt-2",
|
|
65
|
+
day: chunkNV4JOKWL_cjs.cn("size-9 text-center text-sm p-0 relative", "focus-within:relative focus-within:z-20"),
|
|
66
|
+
day_button: chunkNV4JOKWL_cjs.cn(
|
|
67
|
+
"w-full cursor-pointer h-full p-0 font-normal rounded-md",
|
|
68
|
+
"aria-selected:opacity-100",
|
|
69
|
+
"border-0 shadow-none outline-none",
|
|
70
|
+
"transition-colors duration-150",
|
|
71
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
72
|
+
"focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
|
|
73
|
+
"flex items-center justify-center",
|
|
74
|
+
"text-foreground"
|
|
75
|
+
),
|
|
76
|
+
range_start: "day-range-start",
|
|
77
|
+
range_end: "day-range-end",
|
|
78
|
+
selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground rounded-md",
|
|
79
|
+
today: "bg-accent text-accent-foreground",
|
|
80
|
+
outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
|
|
81
|
+
disabled: "text-muted-foreground opacity-50",
|
|
82
|
+
range_middle: "aria-selected:bg-primary/20 aria-selected:text-foreground rounded-none",
|
|
83
|
+
hidden: "invisible",
|
|
84
|
+
...classNames
|
|
85
|
+
},
|
|
86
|
+
components: {
|
|
87
|
+
Chevron: ({ orientation }) => {
|
|
88
|
+
if (usePersianCalendar) {
|
|
89
|
+
if (orientation === "left") {
|
|
90
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" });
|
|
91
|
+
}
|
|
92
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" });
|
|
93
|
+
}
|
|
94
|
+
if (orientation === "left") {
|
|
95
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" });
|
|
96
|
+
}
|
|
97
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" });
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
...props
|
|
101
|
+
}
|
|
102
|
+
) });
|
|
103
|
+
}
|
|
104
|
+
Calendar.displayName = "Calendar";
|
|
105
|
+
|
|
106
|
+
exports.Calendar = Calendar;
|
|
107
|
+
//# sourceMappingURL=chunk-OQB6HIUL.cjs.map
|
|
108
|
+
//# sourceMappingURL=chunk-OQB6HIUL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/calendar.tsx"],"names":["PersianDayPicker","DayPicker","jsx","enUS","cn","buttonVariants","ChevronRight","ChevronLeft"],"mappings":"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","file":"chunk-OQB6HIUL.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport { DayPicker } from 'react-day-picker'\nimport { DayPicker as PersianDayPicker } from 'react-day-picker/persian'\nimport { enUS } from 'date-fns/locale'\n\nimport { cn } from '@/lib/utils'\nimport { buttonVariants } from './button'\n\nexport type CalendarProps = {\n usePersianCalendar?: boolean\n className?: string\n classNames?: Partial<Record<string, string>>\n showOutsideDays?: boolean\n} & (React.ComponentProps<typeof DayPicker> | React.ComponentProps<typeof PersianDayPicker>)\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n usePersianCalendar = false,\n ...props\n}: CalendarProps) {\n const PickerComponent = usePersianCalendar ? PersianDayPicker : DayPicker\n\n // Formatters for English numbers in Gregorian calendar\n const englishFormatters = !usePersianCalendar\n ? {\n formatDay: (date: Date) => {\n // Force English numbers using Intl.NumberFormat with en-US locale\n if (!date || !(date instanceof Date)) {\n return ''\n }\n const dayNumber = date.getDate()\n return new Intl.NumberFormat('en-US', { useGrouping: false }).format(dayNumber)\n },\n formatWeekdayName: (date: Date) => {\n if (!date || !(date instanceof Date)) {\n return ''\n }\n return new Intl.DateTimeFormat('en-US', { weekday: 'short' }).format(date)\n },\n formatMonthCaption: (date: Date) => {\n if (!date || !(date instanceof Date)) {\n return ''\n }\n return new Intl.DateTimeFormat('en-US', { month: 'long', year: 'numeric' }).format(date)\n },\n }\n : undefined\n\n return (\n <div data-slot=\"calendar\">\n <PickerComponent\n dir={usePersianCalendar ? 'rtl' : 'ltr'}\n locale={usePersianCalendar ? undefined : enUS}\n formatters={englishFormatters}\n showOutsideDays={showOutsideDays}\n className={cn('p-6', usePersianCalendar ? '' : 'font-sans', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-y-4 sm:gap-y-0',\n month: 'gap-y-4 mx-2',\n month_caption: 'flex justify-center pt-1 relative items-center h-7',\n caption_label: 'text-sm font-medium truncate',\n button_previous: cn(\n buttonVariants({ variant: 'outline' }),\n 'absolute start-2 size-7 bg-transparent p-0 opacity-50 hover:opacity-100 border-0'\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline' }),\n 'absolute end-2 size-7 bg-transparent p-0 opacity-50 hover:opacity-100 border-0'\n ),\n month_grid: 'mt-4',\n weekdays: 'flex flex-row',\n weekday: 'text-muted-foreground rounded-md size-9 font-normal text-xs flex items-center justify-center',\n week: 'flex w-full mt-2',\n day: cn('size-9 text-center text-sm p-0 relative', 'focus-within:relative focus-within:z-20'),\n day_button: cn(\n 'w-full cursor-pointer h-full p-0 font-normal rounded-md',\n 'aria-selected:opacity-100',\n 'border-0 shadow-none outline-none',\n 'transition-colors duration-150',\n 'hover:bg-accent hover:text-accent-foreground',\n 'focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2',\n 'flex items-center justify-center',\n 'text-foreground'\n ),\n range_start: 'day-range-start',\n range_end: 'day-range-end',\n selected:\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground rounded-md',\n today: 'bg-accent text-accent-foreground',\n outside: 'day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground',\n disabled: 'text-muted-foreground opacity-50',\n range_middle: 'aria-selected:bg-primary/20 aria-selected:text-foreground rounded-none',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => {\n // برای RTL (تقویم شمسی) فلشها معکوس میشوند\n if (usePersianCalendar) {\n if (orientation === 'left') {\n return <ChevronRight className=\"size-4\" />\n }\n return <ChevronLeft className=\"size-4\" />\n }\n // برای LTR (تقویم میلادی) فلشها طبیعی هستند\n if (orientation === 'left') {\n return <ChevronLeft className=\"size-4\" />\n }\n return <ChevronRight className=\"size-4\" />\n },\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(props as any)}\n />\n </div>\n )\n}\nCalendar.displayName = 'Calendar'\n\nexport { Calendar }\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkNV4JOKWL_cjs = require('./chunk-NV4JOKWL.cjs');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
|
+
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
|
|
28
|
+
|
|
29
|
+
var TooltipProvider = TooltipPrimitive__namespace.Provider;
|
|
30
|
+
var Tooltip = TooltipPrimitive__namespace.Root;
|
|
31
|
+
var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
|
|
32
|
+
var TooltipContent = React__namespace.forwardRef(
|
|
33
|
+
({ className, variant = "default", size = "sm", showArrow = false, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34
|
+
TooltipPrimitive__namespace.Content,
|
|
35
|
+
{
|
|
36
|
+
ref,
|
|
37
|
+
"data-slot": "tooltip-content",
|
|
38
|
+
sideOffset,
|
|
39
|
+
className: chunkNV4JOKWL_cjs.cn(
|
|
40
|
+
"z-50 overflow-hidden rounded-md shadow-dropdown",
|
|
41
|
+
"animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",
|
|
42
|
+
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
43
|
+
// Variant styles
|
|
44
|
+
variant === "default" && "border bg-alternative text-foreground",
|
|
45
|
+
variant === "light" && "border bg-surface-100 text-foreground shadow-dropdown",
|
|
46
|
+
variant === "error" && "border border-destructive-500 bg-destructive-200 text-destructive-600",
|
|
47
|
+
// Size
|
|
48
|
+
size === "sm" && "px-3 py-1.5 text-xs",
|
|
49
|
+
size === "md" && "px-4 py-2 text-sm",
|
|
50
|
+
className
|
|
51
|
+
),
|
|
52
|
+
...props,
|
|
53
|
+
children: [
|
|
54
|
+
children,
|
|
55
|
+
showArrow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
56
|
+
TooltipPrimitive__namespace.Arrow,
|
|
57
|
+
{
|
|
58
|
+
className: chunkNV4JOKWL_cjs.cn(
|
|
59
|
+
"fill-current",
|
|
60
|
+
variant === "default" && "text-alternative",
|
|
61
|
+
variant === "light" && "text-surface-100",
|
|
62
|
+
variant === "error" && "text-destructive-200"
|
|
63
|
+
),
|
|
64
|
+
width: 8,
|
|
65
|
+
height: 4
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
) })
|
|
71
|
+
);
|
|
72
|
+
TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
|
|
73
|
+
|
|
74
|
+
exports.Tooltip = Tooltip;
|
|
75
|
+
exports.TooltipContent = TooltipContent;
|
|
76
|
+
exports.TooltipProvider = TooltipProvider;
|
|
77
|
+
exports.TooltipTrigger = TooltipTrigger;
|
|
78
|
+
//# sourceMappingURL=chunk-OS6CMYAS.cjs.map
|
|
79
|
+
//# sourceMappingURL=chunk-OS6CMYAS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/tooltip.tsx"],"names":["TooltipPrimitive","React","jsx","jsxs","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAM,eAAA,GAAmCA,2BAAA,CAAA;AAEzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA;AAEjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AAexC,IAAM,cAAA,GAAuBC,gBAAA,CAAA,UAAA;AAAA,EAC3B,CAAC,EAAE,SAAA,EAAW,UAAU,SAAA,EAAW,IAAA,GAAO,MAAM,SAAA,GAAY,KAAA,EAAO,UAAA,GAAa,CAAA,EAAG,UAAU,GAAG,KAAA,IAAS,GAAA,qBACvGC,cAAA,CAAkBF,oCAAjB,EACC,QAAA,kBAAAG,eAAA;AAAA,IAAkBH,2BAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAWI,oBAAA;AAAA,QACT,iDAAA;AAAA,QACA,mLAAA;AAAA,QACA,gGAAA;AAAA;AAAA,QAEA,YAAY,SAAA,IAAa,uCAAA;AAAA,QACzB,YAAY,OAAA,IAAW,uDAAA;AAAA,QACvB,YAAY,OAAA,IAAW,uEAAA;AAAA;AAAA,QAEvB,SAAS,IAAA,IAAQ,qBAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,mBAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,SAAA,oBACCF,cAAA;AAAA,UAAkBF,2BAAA,CAAA,KAAA;AAAA,UAAjB;AAAA,YACC,SAAA,EAAWI,oBAAA;AAAA,cACT,cAAA;AAAA,cACA,YAAY,SAAA,IAAa,kBAAA;AAAA,cACzB,YAAY,OAAA,IAAW,kBAAA;AAAA,cACvB,YAAY,OAAA,IAAW;AAAA,aACzB;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,MAAA,EAAQ;AAAA;AAAA;AACV;AAAA;AAAA,GAEJ,EACF;AAEJ;AACA,cAAA,CAAe,cAA+BJ,2BAAA,CAAA,OAAA,CAAQ,WAAA","file":"chunk-OS6CMYAS.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@/lib/utils'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n/* -------------------------------------------------------------------------- */\n/* TooltipContent */\n/* -------------------------------------------------------------------------- */\n\ninterface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Visual variant */\n variant?: 'default' | 'light' | 'error'\n /** Size */\n size?: 'sm' | 'md'\n /** Show arrow/caret pointing to trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Content>, TooltipContentProps>(\n ({ className, variant = 'default', size = 'sm', showArrow = false, sideOffset = 4, children, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md shadow-dropdown',\n 'animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n // Variant styles\n variant === 'default' && 'border bg-alternative text-foreground',\n variant === 'light' && 'border bg-surface-100 text-foreground shadow-dropdown',\n variant === 'error' && 'border border-destructive-500 bg-destructive-200 text-destructive-600',\n // Size\n size === 'sm' && 'px-3 py-1.5 text-xs',\n size === 'md' && 'px-4 py-2 text-sm',\n className\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n 'fill-current',\n variant === 'default' && 'text-alternative',\n variant === 'light' && 'text-surface-100',\n variant === 'error' && 'text-destructive-200'\n )}\n width={8}\n height={4}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n)\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { Skeleton } from './chunk-SB5DSYR5.js';
|
|
2
|
+
import { formatLargeNumber, convertToLocalNumbers } from './chunk-4SVQNEVH.js';
|
|
3
|
+
import * as React2 from 'react';
|
|
4
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function useRootStyles() {
|
|
8
|
+
const [version, setVersion] = useState(0);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (typeof window === "undefined" || !document?.documentElement) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const target = document.documentElement;
|
|
14
|
+
const observer = new MutationObserver(() => {
|
|
15
|
+
setVersion((prev) => prev + 1);
|
|
16
|
+
});
|
|
17
|
+
observer.observe(target, {
|
|
18
|
+
attributes: true,
|
|
19
|
+
attributeFilter: ["class", "data-theme"]
|
|
20
|
+
});
|
|
21
|
+
const media = window.matchMedia("(prefers-color-scheme: dark)");
|
|
22
|
+
const mediaHandler = () => setVersion((prev) => prev + 1);
|
|
23
|
+
media.addEventListener("change", mediaHandler);
|
|
24
|
+
return () => {
|
|
25
|
+
observer.disconnect();
|
|
26
|
+
media.removeEventListener("change", mediaHandler);
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
return useMemo(() => {
|
|
30
|
+
if (typeof window === "undefined" || !document?.documentElement) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return getComputedStyle(document.documentElement);
|
|
34
|
+
}, [version]);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// src/lib/theme.ts
|
|
38
|
+
var COLOR_VALUE_REGEX = /^(#|rgb|hsl|oklch)/i;
|
|
39
|
+
function resolveCssColor(styles, variable, fallback) {
|
|
40
|
+
if (!styles) return fallback;
|
|
41
|
+
const raw = styles.getPropertyValue(variable).trim();
|
|
42
|
+
if (!raw) return fallback;
|
|
43
|
+
if (COLOR_VALUE_REGEX.test(raw)) return raw;
|
|
44
|
+
if (raw.includes("%")) return `hsl(${raw})`;
|
|
45
|
+
return raw;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/hooks/use-chart-theme.ts
|
|
49
|
+
var FALLBACKS = {
|
|
50
|
+
foregroundMuted: "hsl(0 0% 50%)",
|
|
51
|
+
border: "hsl(0 0% 22%)",
|
|
52
|
+
popover: "hsl(0 0% 10%)",
|
|
53
|
+
popoverForeground: "hsl(0 0% 98%)",
|
|
54
|
+
chart1: "hsl(153 55% 42%)",
|
|
55
|
+
chart2: "hsl(198 50% 48%)",
|
|
56
|
+
chart3: "hsl(240 40% 54%)",
|
|
57
|
+
chart4: "hsl(310 38% 52%)",
|
|
58
|
+
chart5: "hsl(355 45% 52%)",
|
|
59
|
+
chart6: "hsl(35 52% 48%)",
|
|
60
|
+
chart7: "hsl(75 38% 46%)",
|
|
61
|
+
chart8: "hsl(118 35% 46%)"
|
|
62
|
+
};
|
|
63
|
+
var CHART_FONT_FAMILY = "Yekan Bakh, system-ui, -apple-system, sans-serif";
|
|
64
|
+
function useChartTheme() {
|
|
65
|
+
const styles = useRootStyles();
|
|
66
|
+
return React2.useMemo(() => {
|
|
67
|
+
const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
68
|
+
const chartColors = [
|
|
69
|
+
getColor("--chart-1", FALLBACKS.chart1),
|
|
70
|
+
getColor("--chart-2", FALLBACKS.chart2),
|
|
71
|
+
getColor("--chart-3", FALLBACKS.chart3),
|
|
72
|
+
getColor("--chart-4", FALLBACKS.chart4),
|
|
73
|
+
getColor("--chart-5", FALLBACKS.chart5),
|
|
74
|
+
getColor("--chart-6", FALLBACKS.chart6),
|
|
75
|
+
getColor("--chart-7", FALLBACKS.chart7),
|
|
76
|
+
getColor("--chart-8", FALLBACKS.chart8)
|
|
77
|
+
];
|
|
78
|
+
const axisTickStyle = {
|
|
79
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
80
|
+
fill: getColor("--foreground-lighter", FALLBACKS.foregroundMuted),
|
|
81
|
+
fontSize: 11,
|
|
82
|
+
fontWeight: 400
|
|
83
|
+
};
|
|
84
|
+
const gridStyle = {
|
|
85
|
+
stroke: getColor("--border", FALLBACKS.border),
|
|
86
|
+
strokeDasharray: "3 3",
|
|
87
|
+
strokeOpacity: 0.15
|
|
88
|
+
};
|
|
89
|
+
const tooltipStyle = {
|
|
90
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
91
|
+
background: getColor("--background-overlay-default", FALLBACKS.popover),
|
|
92
|
+
color: getColor("--foreground-default", FALLBACKS.popoverForeground),
|
|
93
|
+
fontSize: 12,
|
|
94
|
+
lineHeight: "1.5",
|
|
95
|
+
borderRadius: "10px",
|
|
96
|
+
border: `1px solid ${getColor("--border-muted", FALLBACKS.border)}`,
|
|
97
|
+
boxShadow: "0 4px 24px -4px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.06)",
|
|
98
|
+
padding: "10px 14px",
|
|
99
|
+
backdropFilter: "blur(8px)",
|
|
100
|
+
WebkitBackdropFilter: "blur(8px)"
|
|
101
|
+
};
|
|
102
|
+
const crosshairStyle = {
|
|
103
|
+
stroke: getColor("--foreground-muted", FALLBACKS.foregroundMuted),
|
|
104
|
+
strokeWidth: 1,
|
|
105
|
+
strokeDasharray: "4 4",
|
|
106
|
+
strokeOpacity: 0.5
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
chartColors,
|
|
110
|
+
getColor,
|
|
111
|
+
fontFamily: CHART_FONT_FAMILY,
|
|
112
|
+
axisTickStyle,
|
|
113
|
+
gridStyle,
|
|
114
|
+
tooltipStyle,
|
|
115
|
+
crosshairStyle
|
|
116
|
+
};
|
|
117
|
+
}, [styles]);
|
|
118
|
+
}
|
|
119
|
+
var ChartContainer = React2.forwardRef(
|
|
120
|
+
({ className, dataSlot, ariaLabel, children }, ref) => /* @__PURE__ */ jsx(
|
|
121
|
+
"div",
|
|
122
|
+
{
|
|
123
|
+
ref,
|
|
124
|
+
className,
|
|
125
|
+
dir: "ltr",
|
|
126
|
+
"data-slot": dataSlot,
|
|
127
|
+
role: "img",
|
|
128
|
+
"aria-label": ariaLabel ?? "\u0646\u0645\u0648\u062F\u0627\u0631",
|
|
129
|
+
style: { position: "relative", width: "100%", height: "100%" },
|
|
130
|
+
children
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
);
|
|
134
|
+
ChartContainer.displayName = "ChartContainer";
|
|
135
|
+
function ChartLoadingSkeleton({ className, shape = "rect" }) {
|
|
136
|
+
return /* @__PURE__ */ jsx(
|
|
137
|
+
"div",
|
|
138
|
+
{
|
|
139
|
+
"data-slot": "chart-loading-skeleton",
|
|
140
|
+
className,
|
|
141
|
+
dir: "ltr",
|
|
142
|
+
style: { position: "relative", width: "100%", height: "100%" },
|
|
143
|
+
role: "status",
|
|
144
|
+
"aria-label": "Loading chart",
|
|
145
|
+
children: /* @__PURE__ */ jsx(
|
|
146
|
+
Skeleton,
|
|
147
|
+
{
|
|
148
|
+
shape,
|
|
149
|
+
className: shape === "circle" ? "w-full h-full min-h-[200px] aspect-square mx-auto" : "w-full h-full min-h-[200px]"
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
var LOCALE_TO_BCP47 = {
|
|
156
|
+
fa: "fa-IR",
|
|
157
|
+
ar: "ar",
|
|
158
|
+
en: "en-US"
|
|
159
|
+
};
|
|
160
|
+
function ChartTooltip({ active, payload, label, tooltipStyle, formatter, locale = "fa" }) {
|
|
161
|
+
if (!active || !payload?.length) return null;
|
|
162
|
+
const bcp47 = LOCALE_TO_BCP47[locale] ?? "fa-IR";
|
|
163
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "chart-tooltip", style: tooltipStyle, children: [
|
|
164
|
+
label && /* @__PURE__ */ jsx("div", { style: { fontWeight: 500, fontSize: 13, marginBottom: 6 }, children: label }),
|
|
165
|
+
payload.map((entry, i) => /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8, marginTop: i > 0 ? 4 : 0 }, children: [
|
|
166
|
+
/* @__PURE__ */ jsx(
|
|
167
|
+
"div",
|
|
168
|
+
{
|
|
169
|
+
style: {
|
|
170
|
+
width: 10,
|
|
171
|
+
height: 10,
|
|
172
|
+
borderRadius: 2,
|
|
173
|
+
backgroundColor: entry.color,
|
|
174
|
+
flexShrink: 0
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
),
|
|
178
|
+
formatter ? formatter(entry.name, entry.value) : /* @__PURE__ */ jsxs("span", { style: { display: "flex", justifyContent: "space-between", width: "100%", gap: 16 }, children: [
|
|
179
|
+
/* @__PURE__ */ jsx("span", { style: { opacity: 0.7 }, children: entry.name }),
|
|
180
|
+
/* @__PURE__ */ jsx("span", { style: { fontWeight: 600, fontVariantNumeric: "tabular-nums" }, children: typeof entry.value === "number" ? entry.value.toLocaleString(bcp47) : entry.value })
|
|
181
|
+
] })
|
|
182
|
+
] }, i))
|
|
183
|
+
] });
|
|
184
|
+
}
|
|
185
|
+
function localeAwareNumberTick(locale) {
|
|
186
|
+
return (value) => {
|
|
187
|
+
if (typeof value === "number") return formatLargeNumber(value, locale);
|
|
188
|
+
if (typeof value === "string") {
|
|
189
|
+
if (/^-?\d+(\.\d+)?$/.test(value)) return convertToLocalNumbers(value, locale);
|
|
190
|
+
return value;
|
|
191
|
+
}
|
|
192
|
+
return String(value ?? "");
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function localeAwareCategoryTick(locale) {
|
|
196
|
+
return (value) => convertToLocalNumbers(String(value ?? ""), locale);
|
|
197
|
+
}
|
|
198
|
+
var PATTERN_DASHARRAY = {
|
|
199
|
+
solid: void 0,
|
|
200
|
+
dashed: "4 3",
|
|
201
|
+
dotted: "1 3",
|
|
202
|
+
"dash-dot": "4 2 1 2"
|
|
203
|
+
};
|
|
204
|
+
var ChartLegend = React2.forwardRef(
|
|
205
|
+
({ className, items, orientation = "horizontal", swatchSize = 10, ...props }, ref) => {
|
|
206
|
+
const isVertical = orientation === "vertical";
|
|
207
|
+
return /* @__PURE__ */ jsx(
|
|
208
|
+
"div",
|
|
209
|
+
{
|
|
210
|
+
ref,
|
|
211
|
+
"data-slot": "chart-legend",
|
|
212
|
+
"data-orientation": orientation,
|
|
213
|
+
className,
|
|
214
|
+
style: {
|
|
215
|
+
display: "flex",
|
|
216
|
+
flexWrap: isVertical ? "nowrap" : "wrap",
|
|
217
|
+
flexDirection: isVertical ? "column" : "row",
|
|
218
|
+
gap: isVertical ? "6px" : "12px 16px",
|
|
219
|
+
fontSize: 12,
|
|
220
|
+
color: "hsl(var(--foreground-light))"
|
|
221
|
+
},
|
|
222
|
+
role: "list",
|
|
223
|
+
...props,
|
|
224
|
+
children: items.map((item) => /* @__PURE__ */ jsxs(
|
|
225
|
+
"div",
|
|
226
|
+
{
|
|
227
|
+
role: "listitem",
|
|
228
|
+
"data-slot": "chart-legend-item",
|
|
229
|
+
style: { display: "inline-flex", alignItems: "center", gap: 6, lineHeight: 1.2 },
|
|
230
|
+
children: [
|
|
231
|
+
/* @__PURE__ */ jsx(
|
|
232
|
+
ChartLegendSwatch,
|
|
233
|
+
{
|
|
234
|
+
color: item.color,
|
|
235
|
+
shape: item.shape ?? "dot",
|
|
236
|
+
pattern: item.pattern ?? "solid",
|
|
237
|
+
size: swatchSize
|
|
238
|
+
}
|
|
239
|
+
),
|
|
240
|
+
/* @__PURE__ */ jsx("span", { style: { fontWeight: 500 }, children: item.label }),
|
|
241
|
+
item.value !== void 0 && /* @__PURE__ */ jsx(
|
|
242
|
+
"span",
|
|
243
|
+
{
|
|
244
|
+
style: { marginInlineStart: 4, fontVariantNumeric: "tabular-nums", opacity: 0.7 },
|
|
245
|
+
"data-slot": "chart-legend-value",
|
|
246
|
+
children: item.value
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
]
|
|
250
|
+
},
|
|
251
|
+
item.key
|
|
252
|
+
))
|
|
253
|
+
}
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
);
|
|
257
|
+
ChartLegend.displayName = "ChartLegend";
|
|
258
|
+
function ChartLegendSwatch({
|
|
259
|
+
color,
|
|
260
|
+
shape,
|
|
261
|
+
pattern,
|
|
262
|
+
size
|
|
263
|
+
}) {
|
|
264
|
+
if (shape === "dot") {
|
|
265
|
+
return /* @__PURE__ */ jsx(
|
|
266
|
+
"span",
|
|
267
|
+
{
|
|
268
|
+
"aria-hidden": "true",
|
|
269
|
+
style: {
|
|
270
|
+
display: "inline-block",
|
|
271
|
+
width: size,
|
|
272
|
+
height: size,
|
|
273
|
+
borderRadius: "50%",
|
|
274
|
+
backgroundColor: color,
|
|
275
|
+
flexShrink: 0
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
if (shape === "bar") {
|
|
281
|
+
return /* @__PURE__ */ jsx(
|
|
282
|
+
"span",
|
|
283
|
+
{
|
|
284
|
+
"aria-hidden": "true",
|
|
285
|
+
style: {
|
|
286
|
+
display: "inline-block",
|
|
287
|
+
width: size + 4,
|
|
288
|
+
height: Math.max(3, Math.round(size / 2.5)),
|
|
289
|
+
borderRadius: 2,
|
|
290
|
+
backgroundColor: color,
|
|
291
|
+
flexShrink: 0
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
return /* @__PURE__ */ jsx(
|
|
297
|
+
"svg",
|
|
298
|
+
{
|
|
299
|
+
"aria-hidden": "true",
|
|
300
|
+
width: size + 8,
|
|
301
|
+
height: Math.max(8, Math.round(size / 1.5)),
|
|
302
|
+
viewBox: `0 0 ${size + 8} ${Math.max(8, Math.round(size / 1.5))}`,
|
|
303
|
+
style: { flexShrink: 0 },
|
|
304
|
+
children: /* @__PURE__ */ jsx(
|
|
305
|
+
"line",
|
|
306
|
+
{
|
|
307
|
+
x1: 1,
|
|
308
|
+
y1: Math.max(8, Math.round(size / 1.5)) / 2,
|
|
309
|
+
x2: size + 7,
|
|
310
|
+
y2: Math.max(8, Math.round(size / 1.5)) / 2,
|
|
311
|
+
stroke: color,
|
|
312
|
+
strokeWidth: 2,
|
|
313
|
+
strokeLinecap: "round",
|
|
314
|
+
strokeDasharray: PATTERN_DASHARRAY[pattern]
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
var ChartGradientLegend = React2.forwardRef(
|
|
321
|
+
({
|
|
322
|
+
className,
|
|
323
|
+
startColor,
|
|
324
|
+
endColor,
|
|
325
|
+
startLabel,
|
|
326
|
+
endLabel,
|
|
327
|
+
caption,
|
|
328
|
+
width = 160,
|
|
329
|
+
height = 8,
|
|
330
|
+
"aria-label": ariaLabelProp,
|
|
331
|
+
...props
|
|
332
|
+
}, ref) => {
|
|
333
|
+
const ariaLabel = ariaLabelProp ?? (typeof startLabel === "string" && typeof endLabel === "string" ? `${startLabel} \u062A\u0627 ${endLabel}` : "\u0645\u0642\u06CC\u0627\u0633 \u0631\u0646\u06AF");
|
|
334
|
+
return /* @__PURE__ */ jsxs(
|
|
335
|
+
"div",
|
|
336
|
+
{
|
|
337
|
+
ref,
|
|
338
|
+
"data-slot": "chart-gradient-legend",
|
|
339
|
+
className,
|
|
340
|
+
role: "img",
|
|
341
|
+
"aria-label": ariaLabel,
|
|
342
|
+
style: {
|
|
343
|
+
display: "inline-flex",
|
|
344
|
+
flexDirection: "column",
|
|
345
|
+
gap: 4,
|
|
346
|
+
fontSize: 12,
|
|
347
|
+
color: "hsl(var(--foreground-light))"
|
|
348
|
+
},
|
|
349
|
+
...props,
|
|
350
|
+
children: [
|
|
351
|
+
caption && /* @__PURE__ */ jsx("div", { "data-slot": "chart-gradient-legend-caption", style: { fontWeight: 500 }, children: caption }),
|
|
352
|
+
/* @__PURE__ */ jsx(
|
|
353
|
+
"div",
|
|
354
|
+
{
|
|
355
|
+
"data-slot": "chart-gradient-legend-bar",
|
|
356
|
+
"aria-hidden": "true",
|
|
357
|
+
style: {
|
|
358
|
+
width,
|
|
359
|
+
height,
|
|
360
|
+
borderRadius: height / 2,
|
|
361
|
+
background: `linear-gradient(to right, ${startColor}, ${endColor})`
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
),
|
|
365
|
+
(startLabel !== void 0 || endLabel !== void 0) && /* @__PURE__ */ jsxs(
|
|
366
|
+
"div",
|
|
367
|
+
{
|
|
368
|
+
style: {
|
|
369
|
+
display: "flex",
|
|
370
|
+
justifyContent: "space-between",
|
|
371
|
+
width,
|
|
372
|
+
fontVariantNumeric: "tabular-nums",
|
|
373
|
+
opacity: 0.85
|
|
374
|
+
},
|
|
375
|
+
children: [
|
|
376
|
+
/* @__PURE__ */ jsx("span", { "data-slot": "chart-gradient-legend-start", children: startLabel }),
|
|
377
|
+
/* @__PURE__ */ jsx("span", { "data-slot": "chart-gradient-legend-end", children: endLabel })
|
|
378
|
+
]
|
|
379
|
+
}
|
|
380
|
+
)
|
|
381
|
+
]
|
|
382
|
+
}
|
|
383
|
+
);
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
ChartGradientLegend.displayName = "ChartGradientLegend";
|
|
387
|
+
function transformNivoLineData(nivoData) {
|
|
388
|
+
const dataKeys = nivoData.map((s) => s.id);
|
|
389
|
+
const xValues = nivoData[0]?.data.map((d) => d.x) ?? [];
|
|
390
|
+
const data = xValues.map((x, xi) => {
|
|
391
|
+
const row = { name: x };
|
|
392
|
+
for (const series of nivoData) {
|
|
393
|
+
row[series.id] = series.data[xi]?.y ?? 0;
|
|
394
|
+
}
|
|
395
|
+
return row;
|
|
396
|
+
});
|
|
397
|
+
return { data, dataKeys };
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export { CHART_FONT_FAMILY, ChartContainer, ChartGradientLegend, ChartLegend, ChartLoadingSkeleton, ChartTooltip, localeAwareCategoryTick, localeAwareNumberTick, transformNivoLineData, useChartTheme, useRootStyles };
|
|
401
|
+
//# sourceMappingURL=chunk-PYURPUTV.js.map
|
|
402
|
+
//# sourceMappingURL=chunk-PYURPUTV.js.map
|