@parto-system-design/ui 1.1.11 → 1.1.16
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/components/brand/parto-logo.cjs +130 -0
- package/dist/components/brand/parto-logo.cjs.map +1 -0
- package/dist/components/brand/parto-logo.d.cts +38 -0
- package/dist/components/brand/parto-logo.d.ts +38 -0
- package/dist/components/brand/parto-logo.js +108 -0
- package/dist/components/brand/parto-logo.js.map +1 -0
- package/dist/components/charts/PartoAreaChart.cjs +579 -7
- package/dist/components/charts/PartoAreaChart.cjs.map +1 -1
- package/dist/components/charts/PartoAreaChart.js +564 -4
- package/dist/components/charts/PartoAreaChart.js.map +1 -1
- package/dist/components/charts/PartoBarChart.cjs +616 -7
- package/dist/components/charts/PartoBarChart.cjs.map +1 -1
- package/dist/components/charts/PartoBarChart.js +601 -4
- package/dist/components/charts/PartoBarChart.js.map +1 -1
- package/dist/components/charts/PartoLineChart.cjs +584 -7
- package/dist/components/charts/PartoLineChart.cjs.map +1 -1
- package/dist/components/charts/PartoLineChart.js +569 -4
- package/dist/components/charts/PartoLineChart.js.map +1 -1
- package/dist/components/charts/PartoPieChart.cjs +566 -7
- package/dist/components/charts/PartoPieChart.cjs.map +1 -1
- package/dist/components/charts/PartoPieChart.js +551 -4
- package/dist/components/charts/PartoPieChart.js.map +1 -1
- package/dist/components/ui/accordion.cjs +97 -0
- package/dist/components/ui/accordion.cjs.map +1 -0
- package/dist/components/ui/accordion.d.cts +22 -0
- package/dist/components/ui/accordion.d.ts +22 -0
- package/dist/components/ui/accordion.js +72 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/{chunk-MMC6M35Q.cjs → components/ui/alert-dialog.cjs} +216 -22
- package/dist/components/ui/alert-dialog.cjs.map +1 -0
- package/dist/components/ui/alert-dialog.d.cts +17 -0
- package/dist/components/ui/alert-dialog.d.ts +17 -0
- package/dist/{chunk-3QYYPPFJ.js → components/ui/alert-dialog.js} +175 -10
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert-rule-card.cjs +289 -8
- package/dist/components/ui/alert-rule-card.cjs.map +1 -1
- package/dist/components/ui/alert-rule-card.d.cts +1 -1
- package/dist/components/ui/alert-rule-card.d.ts +1 -1
- package/dist/components/ui/alert-rule-card.js +271 -4
- package/dist/components/ui/alert-rule-card.js.map +1 -1
- package/dist/components/ui/alert.cjs +81 -0
- package/dist/components/ui/alert.cjs.map +1 -0
- package/dist/components/ui/alert.d.cts +11 -0
- package/dist/components/ui/alert.d.ts +11 -0
- package/dist/components/ui/alert.js +57 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/app-bar.cjs +67 -0
- package/dist/components/ui/app-bar.cjs.map +1 -0
- package/dist/components/ui/app-bar.d.cts +22 -0
- package/dist/components/ui/app-bar.d.ts +22 -0
- package/dist/components/ui/app-bar.js +44 -0
- package/dist/components/ui/app-bar.js.map +1 -0
- package/dist/components/ui/avatar.cjs +66 -14
- package/dist/components/ui/avatar.cjs.map +1 -1
- package/dist/components/ui/avatar.js +47 -2
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/badge.cjs +113 -9
- package/dist/components/ui/badge.cjs.map +1 -1
- package/dist/components/ui/badge.d.cts +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/badge.js +96 -2
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/breadcrumb.cjs +100 -0
- package/dist/components/ui/breadcrumb.cjs.map +1 -0
- package/dist/components/ui/breadcrumb.d.cts +35 -0
- package/dist/components/ui/breadcrumb.d.ts +35 -0
- package/dist/components/ui/breadcrumb.js +92 -0
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/button.cjs +304 -11
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.d.cts +3 -3
- package/dist/components/ui/button.d.ts +3 -3
- package/dist/components/ui/button.js +306 -3
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.cjs +401 -8
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +404 -4
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.cjs +154 -30
- package/dist/components/ui/card.cjs.map +1 -1
- package/dist/components/ui/card.js +131 -2
- package/dist/components/ui/card.js.map +1 -1
- package/dist/{chunk-CAJKSTXX.cjs → components/ui/checkbox.cjs} +10 -5
- package/dist/components/ui/checkbox.cjs.map +1 -0
- package/dist/components/ui/checkbox.d.cts +6 -0
- package/dist/components/ui/checkbox.d.ts +6 -0
- package/dist/{chunk-5JJSRGJD.js → components/ui/checkbox.js} +9 -4
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/concept-card.cjs +728 -11
- package/dist/components/ui/concept-card.cjs.map +1 -1
- package/dist/components/ui/concept-card.d.cts +2 -2
- package/dist/components/ui/concept-card.d.ts +2 -2
- package/dist/components/ui/concept-card.js +710 -7
- package/dist/components/ui/concept-card.js.map +1 -1
- package/dist/components/ui/data-table.cjs +1553 -10
- package/dist/components/ui/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table.js +1537 -7
- package/dist/components/ui/data-table.js.map +1 -1
- package/dist/components/ui/dialog.cjs +119 -42
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js +92 -2
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dropdown-menu.cjs +268 -0
- package/dist/components/ui/dropdown-menu.cjs.map +1 -0
- package/dist/components/ui/dropdown-menu.d.cts +73 -0
- package/dist/components/ui/dropdown-menu.d.ts +73 -0
- package/dist/components/ui/dropdown-menu.js +232 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/filter-provider.cjs +70 -13
- package/dist/components/ui/filter-provider.cjs.map +1 -1
- package/dist/components/ui/filter-provider.js +51 -1
- package/dist/components/ui/filter-provider.js.map +1 -1
- package/dist/components/ui/form.cjs +169 -0
- package/dist/components/ui/form.cjs.map +1 -0
- package/dist/components/ui/form.d.cts +46 -0
- package/dist/components/ui/form.d.ts +46 -0
- package/dist/components/ui/form.js +139 -0
- package/dist/components/ui/form.js.map +1 -0
- package/dist/components/ui/input.cjs +135 -15
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.d.cts +15 -0
- package/dist/components/ui/input.d.ts +15 -0
- package/dist/components/ui/input.js +116 -3
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/iran-province-heat.cjs +328 -5
- package/dist/components/ui/iran-province-heat.cjs.map +1 -1
- package/dist/components/ui/iran-province-heat.js +312 -2
- package/dist/components/ui/iran-province-heat.js.map +1 -1
- package/dist/components/ui/label.cjs +52 -0
- package/dist/components/ui/label.cjs.map +1 -0
- package/dist/components/ui/label.d.cts +10 -0
- package/dist/components/ui/label.d.ts +10 -0
- package/dist/components/ui/label.js +30 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/page-card.cjs +627 -8
- package/dist/components/ui/page-card.cjs.map +1 -1
- package/dist/components/ui/page-card.d.cts +3 -2
- package/dist/components/ui/page-card.d.ts +3 -2
- package/dist/components/ui/page-card.js +611 -5
- package/dist/components/ui/page-card.js.map +1 -1
- package/dist/components/ui/page-header.cjs +299 -0
- package/dist/components/ui/page-header.cjs.map +1 -0
- package/dist/components/ui/page-header.d.cts +21 -0
- package/dist/components/ui/page-header.d.ts +21 -0
- package/dist/components/ui/page-header.js +277 -0
- package/dist/components/ui/page-header.js.map +1 -0
- package/dist/components/ui/password-input.cjs +168 -0
- package/dist/components/ui/password-input.cjs.map +1 -0
- package/dist/components/ui/password-input.d.cts +48 -0
- package/dist/components/ui/password-input.d.ts +48 -0
- package/dist/components/ui/password-input.js +146 -0
- package/dist/components/ui/password-input.js.map +1 -0
- package/dist/components/ui/popover.cjs +51 -18
- package/dist/components/ui/popover.cjs.map +1 -1
- package/dist/components/ui/popover.js +30 -2
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/progress.cjs +95 -0
- package/dist/components/ui/progress.cjs.map +1 -0
- package/dist/components/ui/progress.d.cts +18 -0
- package/dist/components/ui/progress.d.ts +18 -0
- package/dist/components/ui/progress.js +72 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/radio-card.cjs +84 -0
- package/dist/components/ui/radio-card.cjs.map +1 -0
- package/dist/components/ui/radio-card.d.cts +12 -0
- package/dist/components/ui/radio-card.d.ts +12 -0
- package/dist/components/ui/radio-card.js +58 -0
- package/dist/components/ui/radio-card.js.map +1 -0
- package/dist/components/ui/radio-group.cjs +62 -0
- package/dist/components/ui/radio-group.cjs.map +1 -0
- package/dist/components/ui/radio-group.d.cts +7 -0
- package/dist/components/ui/radio-group.d.ts +7 -0
- package/dist/components/ui/radio-group.js +38 -0
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/saved-query-card.cjs +409 -7
- package/dist/components/ui/saved-query-card.cjs.map +1 -1
- package/dist/components/ui/saved-query-card.js +394 -4
- package/dist/components/ui/saved-query-card.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs +79 -0
- package/dist/components/ui/scroll-area.cjs.map +1 -0
- package/dist/components/ui/scroll-area.d.cts +14 -0
- package/dist/components/ui/scroll-area.d.ts +14 -0
- package/dist/components/ui/scroll-area.js +56 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.cjs +242 -0
- package/dist/components/ui/select.cjs.map +1 -0
- package/dist/components/ui/select.d.cts +29 -0
- package/dist/components/ui/select.d.ts +29 -0
- package/dist/components/ui/select.js +210 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.cjs +105 -6
- package/dist/components/ui/separator.cjs.map +1 -1
- package/dist/components/ui/separator.js +87 -2
- package/dist/components/ui/separator.js.map +1 -1
- package/dist/components/ui/sheet.cjs +134 -38
- package/dist/components/ui/sheet.cjs.map +1 -1
- package/dist/components/ui/sheet.js +109 -2
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/{chunk-D2EBLE2B.cjs → components/ui/skeleton.cjs} +21 -16
- package/dist/components/ui/skeleton.cjs.map +1 -0
- package/dist/components/ui/skeleton.d.cts +90 -0
- package/dist/components/ui/skeleton.d.ts +90 -0
- package/dist/{chunk-SB5DSYR5.js → components/ui/skeleton.js} +8 -3
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/slider.cjs +129 -0
- package/dist/components/ui/slider.cjs.map +1 -0
- package/dist/components/ui/slider.d.cts +10 -0
- package/dist/components/ui/slider.d.ts +10 -0
- package/dist/components/ui/slider.js +107 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/social-platform-badge.cjs +120 -0
- package/dist/components/ui/social-platform-badge.cjs.map +1 -0
- package/dist/components/ui/social-platform-badge.d.cts +21 -0
- package/dist/components/ui/social-platform-badge.d.ts +21 -0
- package/dist/components/ui/social-platform-badge.js +97 -0
- package/dist/components/ui/social-platform-badge.js.map +1 -0
- package/dist/components/ui/sonner.cjs +51 -0
- package/dist/components/ui/sonner.cjs.map +1 -0
- package/dist/components/ui/sonner.d.cts +13 -0
- package/dist/components/ui/sonner.d.ts +13 -0
- package/dist/components/ui/sonner.js +45 -0
- package/dist/components/ui/sonner.js.map +1 -0
- package/dist/components/ui/sparkline.cjs +159 -6
- package/dist/components/ui/sparkline.cjs.map +1 -1
- package/dist/components/ui/sparkline.js +142 -2
- package/dist/components/ui/sparkline.js.map +1 -1
- package/dist/components/ui/switch.cjs +96 -0
- package/dist/components/ui/switch.cjs.map +1 -0
- package/dist/components/ui/switch.d.cts +13 -0
- package/dist/components/ui/switch.d.ts +13 -0
- package/dist/components/ui/switch.js +73 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.cjs +188 -0
- package/dist/components/ui/table.cjs.map +1 -0
- package/dist/components/ui/table.d.cts +59 -0
- package/dist/components/ui/table.d.ts +59 -0
- package/dist/components/ui/table.js +178 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.cjs +140 -0
- package/dist/components/ui/tabs.cjs.map +1 -0
- package/dist/components/ui/tabs.d.cts +21 -0
- package/dist/components/ui/tabs.d.ts +21 -0
- package/dist/components/ui/tabs.js +115 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.cjs +56 -0
- package/dist/components/ui/textarea.cjs.map +1 -0
- package/dist/components/ui/textarea.d.cts +5 -0
- package/dist/components/ui/textarea.d.ts +5 -0
- package/dist/components/ui/textarea.js +34 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toggle-group.cjs +123 -0
- package/dist/components/ui/toggle-group.cjs.map +1 -0
- package/dist/components/ui/toggle-group.d.cts +7 -0
- package/dist/components/ui/toggle-group.d.ts +7 -0
- package/dist/components/ui/toggle-group.js +99 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/tooltip.cjs +77 -18
- package/dist/components/ui/tooltip.cjs.map +1 -1
- package/dist/components/ui/tooltip.js +56 -2
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/{concept-card-RwPbqJ06.d.cts → concept-card-BXra9mr0.d.cts} +2 -2
- package/dist/{concept-card-CcOBb2Nz.d.ts → concept-card-BoJ5gIJD.d.ts} +2 -2
- package/dist/hooks/use-hotkey-registry.cjs +201 -14
- package/dist/hooks/use-hotkey-registry.cjs.map +1 -1
- package/dist/hooks/use-hotkey-registry.js +182 -2
- package/dist/hooks/use-hotkey-registry.js.map +1 -1
- package/dist/hooks/use-hotkeys.cjs +144 -9
- package/dist/hooks/use-hotkeys.cjs.map +1 -1
- package/dist/hooks/use-hotkeys.js +126 -1
- package/dist/hooks/use-hotkeys.js.map +1 -1
- package/dist/{i18n-CAd9wGOr.d.cts → i18n-BfRhV5aw.d.cts} +5 -3
- package/dist/{i18n-ArS3mqj0.d.ts → i18n-ewyqbKM-.d.ts} +5 -3
- package/dist/index.cjs +20906 -15706
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +396 -69
- package/dist/index.d.cts +49 -490
- package/dist/index.d.ts +49 -490
- package/dist/index.js +7704 -2032
- package/dist/index.js.map +1 -1
- package/dist/{page-card-CmShVqG-.d.cts → page-card-C9XXXOVr.d.cts} +3 -20
- package/dist/{page-card-HBn-cy4J.d.ts → page-card-DAnbez_f.d.ts} +3 -20
- package/dist/toggle-group-B8r4LOQw.d.cts +26 -0
- package/dist/toggle-group-B8r4LOQw.d.ts +26 -0
- package/package.json +132 -2
- package/tailwind.config.ts +45 -0
- package/dist/chunk-2ACKKPWA.cjs +0 -112
- package/dist/chunk-2ACKKPWA.cjs.map +0 -1
- package/dist/chunk-2UD3LGVX.cjs +0 -316
- package/dist/chunk-2UD3LGVX.cjs.map +0 -1
- package/dist/chunk-3QYYPPFJ.js.map +0 -1
- package/dist/chunk-4SVQNEVH.js +0 -173
- package/dist/chunk-4SVQNEVH.js.map +0 -1
- package/dist/chunk-4WONHORR.cjs +0 -152
- package/dist/chunk-4WONHORR.cjs.map +0 -1
- package/dist/chunk-5HCXH6GS.js +0 -409
- package/dist/chunk-5HCXH6GS.js.map +0 -1
- package/dist/chunk-5JJSRGJD.js.map +0 -1
- package/dist/chunk-5K6E4ZSW.cjs +0 -77
- package/dist/chunk-5K6E4ZSW.cjs.map +0 -1
- package/dist/chunk-5NY26ULO.js +0 -89
- package/dist/chunk-5NY26ULO.js.map +0 -1
- package/dist/chunk-7RVPG3LE.cjs +0 -231
- package/dist/chunk-7RVPG3LE.cjs.map +0 -1
- package/dist/chunk-AYEK3WOM.js +0 -207
- package/dist/chunk-AYEK3WOM.js.map +0 -1
- package/dist/chunk-BRMBLIQG.js +0 -53
- package/dist/chunk-BRMBLIQG.js.map +0 -1
- package/dist/chunk-CAJKSTXX.cjs.map +0 -1
- package/dist/chunk-CKFWMHQU.js +0 -401
- package/dist/chunk-CKFWMHQU.js.map +0 -1
- package/dist/chunk-CV3N3HVK.js +0 -672
- package/dist/chunk-CV3N3HVK.js.map +0 -1
- package/dist/chunk-D2EBLE2B.cjs.map +0 -1
- package/dist/chunk-GCZ6YATL.js +0 -940
- package/dist/chunk-GCZ6YATL.js.map +0 -1
- package/dist/chunk-GKRAZGDI.cjs +0 -84
- package/dist/chunk-GKRAZGDI.cjs.map +0 -1
- package/dist/chunk-GPYJ66CG.js +0 -45
- package/dist/chunk-GPYJ66CG.js.map +0 -1
- package/dist/chunk-HF6XU5NI.js +0 -84
- package/dist/chunk-HF6XU5NI.js.map +0 -1
- package/dist/chunk-HJPDZOMJ.cjs +0 -87
- package/dist/chunk-HJPDZOMJ.cjs.map +0 -1
- package/dist/chunk-HS3XI3CC.cjs +0 -69
- package/dist/chunk-HS3XI3CC.cjs.map +0 -1
- package/dist/chunk-HUCC3QH5.cjs +0 -53
- package/dist/chunk-HUCC3QH5.cjs.map +0 -1
- package/dist/chunk-HYZ6BQPS.cjs +0 -425
- package/dist/chunk-HYZ6BQPS.cjs.map +0 -1
- package/dist/chunk-ISCSZMYW.cjs +0 -106
- package/dist/chunk-ISCSZMYW.cjs.map +0 -1
- package/dist/chunk-IXFEFIDO.js +0 -82
- package/dist/chunk-IXFEFIDO.js.map +0 -1
- package/dist/chunk-JCJLN437.js +0 -108
- package/dist/chunk-JCJLN437.js.map +0 -1
- package/dist/chunk-JMKNNH63.cjs +0 -982
- package/dist/chunk-JMKNNH63.cjs.map +0 -1
- package/dist/chunk-JUBHQAA2.js +0 -53
- package/dist/chunk-JUBHQAA2.js.map +0 -1
- package/dist/chunk-K6G63EED.cjs +0 -41
- package/dist/chunk-K6G63EED.cjs.map +0 -1
- package/dist/chunk-KCWRCSI7.js +0 -62
- package/dist/chunk-KCWRCSI7.js.map +0 -1
- package/dist/chunk-KYM7NIJO.cjs +0 -433
- package/dist/chunk-KYM7NIJO.cjs.map +0 -1
- package/dist/chunk-L2L5CKC2.js +0 -291
- package/dist/chunk-L2L5CKC2.js.map +0 -1
- package/dist/chunk-M5CHZ5BA.js +0 -124
- package/dist/chunk-M5CHZ5BA.js.map +0 -1
- package/dist/chunk-MEK4RSGC.js +0 -65
- package/dist/chunk-MEK4RSGC.js.map +0 -1
- package/dist/chunk-MEKWH3GS.js +0 -89
- package/dist/chunk-MEKWH3GS.js.map +0 -1
- package/dist/chunk-MFTX2DDQ.js +0 -27
- package/dist/chunk-MFTX2DDQ.js.map +0 -1
- package/dist/chunk-MMC6M35Q.cjs.map +0 -1
- package/dist/chunk-NMH43BDC.js +0 -130
- package/dist/chunk-NMH43BDC.js.map +0 -1
- package/dist/chunk-NORDUD2T.cjs +0 -135
- package/dist/chunk-NORDUD2T.cjs.map +0 -1
- package/dist/chunk-NV4JOKWL.cjs +0 -197
- package/dist/chunk-NV4JOKWL.cjs.map +0 -1
- package/dist/chunk-O2JG7WY5.cjs +0 -121
- package/dist/chunk-O2JG7WY5.cjs.map +0 -1
- package/dist/chunk-ONO2FTV4.cjs +0 -68
- package/dist/chunk-ONO2FTV4.cjs.map +0 -1
- package/dist/chunk-OQB6HIUL.cjs +0 -108
- package/dist/chunk-OQB6HIUL.cjs.map +0 -1
- package/dist/chunk-OS6CMYAS.cjs +0 -79
- package/dist/chunk-OS6CMYAS.cjs.map +0 -1
- package/dist/chunk-PYURPUTV.js +0 -402
- package/dist/chunk-PYURPUTV.js.map +0 -1
- package/dist/chunk-RJ3HYZ7S.js +0 -44
- package/dist/chunk-RJ3HYZ7S.js.map +0 -1
- package/dist/chunk-RZNRIOLT.js +0 -128
- package/dist/chunk-RZNRIOLT.js.map +0 -1
- package/dist/chunk-S3T2L6NA.js +0 -38
- package/dist/chunk-S3T2L6NA.js.map +0 -1
- package/dist/chunk-S5IPJQZ3.cjs +0 -161
- package/dist/chunk-S5IPJQZ3.cjs.map +0 -1
- package/dist/chunk-SB5DSYR5.js.map +0 -1
- package/dist/chunk-SFXV2DUH.js +0 -106
- package/dist/chunk-SFXV2DUH.js.map +0 -1
- package/dist/chunk-SXEPGD4Z.cjs +0 -152
- package/dist/chunk-SXEPGD4Z.cjs.map +0 -1
- package/dist/chunk-SXWSOU3Y.js +0 -89
- package/dist/chunk-SXWSOU3Y.js.map +0 -1
- package/dist/chunk-SZMVOHT7.cjs +0 -107
- package/dist/chunk-SZMVOHT7.cjs.map +0 -1
- package/dist/chunk-TWJXOV4C.js +0 -145
- package/dist/chunk-TWJXOV4C.js.map +0 -1
- package/dist/chunk-U3ADRIVO.cjs +0 -434
- package/dist/chunk-U3ADRIVO.cjs.map +0 -1
- package/dist/chunk-U5FLLCGC.cjs +0 -151
- package/dist/chunk-U5FLLCGC.cjs.map +0 -1
- package/dist/chunk-UOZN45G4.cjs +0 -130
- package/dist/chunk-UOZN45G4.cjs.map +0 -1
- package/dist/chunk-VHLDOG74.cjs +0 -167
- package/dist/chunk-VHLDOG74.cjs.map +0 -1
- package/dist/chunk-YC5KLN6I.js +0 -139
- package/dist/chunk-YC5KLN6I.js.map +0 -1
- package/dist/chunk-YENXXYUV.cjs +0 -111
- package/dist/chunk-YENXXYUV.cjs.map +0 -1
- package/dist/chunk-YFQWC2PW.js +0 -113
- package/dist/chunk-YFQWC2PW.js.map +0 -1
- package/dist/chunk-Z2TY4A75.cjs +0 -700
- package/dist/chunk-Z2TY4A75.cjs.map +0 -1
- package/dist/chunk-Z56O7UEU.cjs +0 -136
- package/dist/chunk-Z56O7UEU.cjs.map +0 -1
- package/dist/chunk-ZBZDR4ZC.js +0 -106
- package/dist/chunk-ZBZDR4ZC.js.map +0 -1
package/dist/chunk-U5FLLCGC.cjs
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
|
|
5
|
-
function _interopNamespace(e) {
|
|
6
|
-
if (e && e.__esModule) return e;
|
|
7
|
-
var n = Object.create(null);
|
|
8
|
-
if (e) {
|
|
9
|
-
Object.keys(e).forEach(function (k) {
|
|
10
|
-
if (k !== 'default') {
|
|
11
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () { return e[k]; }
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
n.default = e;
|
|
20
|
-
return Object.freeze(n);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
|
-
|
|
25
|
-
// src/hooks/use-hotkeys.ts
|
|
26
|
-
function isMac() {
|
|
27
|
-
if (typeof navigator === "undefined") return false;
|
|
28
|
-
const ua = navigator.userAgentData?.platform;
|
|
29
|
-
const platform = ua ?? navigator.platform ?? "";
|
|
30
|
-
return /mac|darwin/i.test(platform);
|
|
31
|
-
}
|
|
32
|
-
var SPECIAL_KEY_MAP = {
|
|
33
|
-
" ": "space",
|
|
34
|
-
spacebar: "space",
|
|
35
|
-
esc: "escape",
|
|
36
|
-
del: "delete",
|
|
37
|
-
return: "enter",
|
|
38
|
-
arrowup: "up",
|
|
39
|
-
arrowdown: "down",
|
|
40
|
-
arrowleft: "left",
|
|
41
|
-
arrowright: "right"
|
|
42
|
-
};
|
|
43
|
-
function normalizeKey(raw) {
|
|
44
|
-
const lower = raw.toLowerCase();
|
|
45
|
-
return SPECIAL_KEY_MAP[lower] ?? lower;
|
|
46
|
-
}
|
|
47
|
-
function parseCombo(combo) {
|
|
48
|
-
const parts = combo.toLowerCase().split("+").map((s) => s.trim()).filter(Boolean);
|
|
49
|
-
const result = {
|
|
50
|
-
mod: false,
|
|
51
|
-
ctrl: false,
|
|
52
|
-
cmd: false,
|
|
53
|
-
shift: false,
|
|
54
|
-
alt: false,
|
|
55
|
-
meta: false,
|
|
56
|
-
key: ""
|
|
57
|
-
};
|
|
58
|
-
for (const p of parts) {
|
|
59
|
-
if (p === "mod") result.mod = true;
|
|
60
|
-
else if (p === "ctrl" || p === "control") result.ctrl = true;
|
|
61
|
-
else if (p === "cmd" || p === "command" || p === "win") result.cmd = true;
|
|
62
|
-
else if (p === "shift") result.shift = true;
|
|
63
|
-
else if (p === "alt" || p === "option" || p === "opt") result.alt = true;
|
|
64
|
-
else if (p === "meta") result.meta = true;
|
|
65
|
-
else result.key = normalizeKey(p);
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
function matches(parsed, event, mac) {
|
|
70
|
-
const requiredCmd = parsed.cmd || parsed.mod && mac;
|
|
71
|
-
const requiredCtrl = parsed.ctrl || parsed.mod && !mac;
|
|
72
|
-
if (requiredCmd !== event.metaKey) return false;
|
|
73
|
-
if (requiredCtrl !== event.ctrlKey) return false;
|
|
74
|
-
if (parsed.shift !== event.shiftKey) return false;
|
|
75
|
-
if (parsed.alt !== event.altKey) return false;
|
|
76
|
-
if (parsed.meta && !mac && !event.metaKey) return false;
|
|
77
|
-
if (!parsed.key) return true;
|
|
78
|
-
const eventKey = normalizeKey(event.key);
|
|
79
|
-
return eventKey === parsed.key;
|
|
80
|
-
}
|
|
81
|
-
function isEditable(el) {
|
|
82
|
-
if (!(el instanceof HTMLElement)) return false;
|
|
83
|
-
if (el.isContentEditable) return true;
|
|
84
|
-
const tag = el.tagName;
|
|
85
|
-
if (tag === "INPUT") {
|
|
86
|
-
const type = el.type;
|
|
87
|
-
return !["button", "submit", "reset", "checkbox", "radio", "range", "color", "file"].includes(type);
|
|
88
|
-
}
|
|
89
|
-
return tag === "TEXTAREA" || tag === "SELECT";
|
|
90
|
-
}
|
|
91
|
-
function hasModifier(event) {
|
|
92
|
-
return event.metaKey || event.ctrlKey || event.altKey;
|
|
93
|
-
}
|
|
94
|
-
function resolveTarget(target) {
|
|
95
|
-
if (!target) return typeof document !== "undefined" ? document : null;
|
|
96
|
-
if (target instanceof Document) return target;
|
|
97
|
-
if ("current" in target) return target.current ?? null;
|
|
98
|
-
return target;
|
|
99
|
-
}
|
|
100
|
-
function useHotkeys(combo, handler, options = {}) {
|
|
101
|
-
const { preventDefault = true, ignoreWhenTyping = true, enabled = true, target } = options;
|
|
102
|
-
const handlerRef = React__namespace.useRef(handler);
|
|
103
|
-
React__namespace.useEffect(() => {
|
|
104
|
-
handlerRef.current = handler;
|
|
105
|
-
}, [handler]);
|
|
106
|
-
React__namespace.useEffect(() => {
|
|
107
|
-
if (!enabled) return;
|
|
108
|
-
const resolvedTarget = resolveTarget(target);
|
|
109
|
-
if (!resolvedTarget) return;
|
|
110
|
-
const combos = (Array.isArray(combo) ? combo : [combo]).map(parseCombo);
|
|
111
|
-
const mac = isMac();
|
|
112
|
-
const listener = (event) => {
|
|
113
|
-
const keyboardEvent = event;
|
|
114
|
-
const matched = combos.find((parsed) => matches(parsed, keyboardEvent, mac));
|
|
115
|
-
if (!matched) return;
|
|
116
|
-
if (ignoreWhenTyping && isEditable(keyboardEvent.target) && !hasModifier(keyboardEvent)) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (preventDefault) keyboardEvent.preventDefault();
|
|
120
|
-
handlerRef.current(keyboardEvent);
|
|
121
|
-
};
|
|
122
|
-
resolvedTarget.addEventListener("keydown", listener);
|
|
123
|
-
return () => {
|
|
124
|
-
resolvedTarget.removeEventListener("keydown", listener);
|
|
125
|
-
};
|
|
126
|
-
}, [Array.isArray(combo) ? combo.join("|") : combo, enabled, ignoreWhenTyping, preventDefault, target]);
|
|
127
|
-
}
|
|
128
|
-
function formatHotkey(combo) {
|
|
129
|
-
const mac = isMac();
|
|
130
|
-
return combo.split("+").map((p) => {
|
|
131
|
-
const t = p.trim().toLowerCase();
|
|
132
|
-
if (t === "mod") return mac ? "\u2318" : "Ctrl";
|
|
133
|
-
if (t === "cmd" || t === "meta") return mac ? "\u2318" : "Win";
|
|
134
|
-
if (t === "ctrl" || t === "control") return mac ? "\u2303" : "Ctrl";
|
|
135
|
-
if (t === "shift") return mac ? "\u21E7" : "Shift";
|
|
136
|
-
if (t === "alt" || t === "option" || t === "opt") return mac ? "\u2325" : "Alt";
|
|
137
|
-
if (t === "enter" || t === "return") return "\u21B5";
|
|
138
|
-
if (t === "escape" || t === "esc") return "Esc";
|
|
139
|
-
if (t === "space") return "Space";
|
|
140
|
-
if (t === "up") return "\u2191";
|
|
141
|
-
if (t === "down") return "\u2193";
|
|
142
|
-
if (t === "left") return "\u2190";
|
|
143
|
-
if (t === "right") return "\u2192";
|
|
144
|
-
return t.length === 1 ? t.toUpperCase() : t;
|
|
145
|
-
}).join(mac ? "" : "+");
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
exports.formatHotkey = formatHotkey;
|
|
149
|
-
exports.useHotkeys = useHotkeys;
|
|
150
|
-
//# sourceMappingURL=chunk-U5FLLCGC.cjs.map
|
|
151
|
-
//# sourceMappingURL=chunk-U5FLLCGC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-hotkeys.ts"],"names":["React"],"mappings":"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","file":"chunk-U5FLLCGC.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\n\n/**\n * Hotkey string grammar:\n *\n * <part>[+<part>]*\n *\n * where each <part> is one of:\n * mod — Cmd on macOS, Ctrl on everything else (recommended)\n * ctrl / cmd — explicit, cross-platform tokens\n * shift | alt | meta\n * <single key> — lowercase character, 'space', 'enter', 'escape', 'tab',\n * arrow{up,down,left,right}, 'slash', 'backspace', etc.\n *\n * Examples:\n * 'mod+k' — ⌘K on macOS, CtrlK elsewhere\n * 'mod+shift+p'\n * 'escape'\n * 'ctrl+k' — explicit Ctrl (no Cmd fallback on macOS)\n *\n * Passing an array of strings is treated as an OR — any combo fires the handler.\n */\nexport type HotkeyCombo = string | readonly string[]\n\nexport interface UseHotkeysOptions {\n /**\n * When true, `event.preventDefault()` is called on matched combos.\n * Default: true. Useful to allow the browser's native 'mod+k' (address bar)\n * to keep working — set to false if the handler only does something conditionally.\n */\n preventDefault?: boolean\n /**\n * Skip the handler when focus is inside an editable control (input, textarea,\n * contenteditable). The exception: combos that include a modifier (mod/ctrl/\n * cmd/alt) still fire — they are unambiguous shortcuts, not typing.\n * Default: true.\n */\n ignoreWhenTyping?: boolean\n /**\n * When false, the hook unregisters its listener. Useful for conditionally\n * enabling shortcuts (e.g., only while a panel is open).\n * Default: true.\n */\n enabled?: boolean\n /**\n * DOM target. Defaults to `document`. Pass a ref for scoped shortcuts (e.g.,\n * only when a specific panel has focus within).\n */\n target?: React.RefObject<HTMLElement | null> | HTMLElement | Document | null\n}\n\nfunction isMac(): boolean {\n if (typeof navigator === 'undefined') return false\n // `userAgentData.platform` is the modern API; fall back to platform string.\n // Accept 'darwin' (nodejs tests) and 'MacIntel'/'Mac OS X'.\n const ua = (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData?.platform\n const platform = ua ?? navigator.platform ?? ''\n return /mac|darwin/i.test(platform)\n}\n\nconst SPECIAL_KEY_MAP: Record<string, string> = {\n ' ': 'space',\n spacebar: 'space',\n esc: 'escape',\n del: 'delete',\n return: 'enter',\n arrowup: 'up',\n arrowdown: 'down',\n arrowleft: 'left',\n arrowright: 'right',\n}\n\nfunction normalizeKey(raw: string): string {\n const lower = raw.toLowerCase()\n return SPECIAL_KEY_MAP[lower] ?? lower\n}\n\ntype ParsedCombo = {\n mod: boolean\n ctrl: boolean\n cmd: boolean\n shift: boolean\n alt: boolean\n meta: boolean\n key: string\n}\n\nfunction parseCombo(combo: string): ParsedCombo {\n const parts = combo\n .toLowerCase()\n .split('+')\n .map((s) => s.trim())\n .filter(Boolean)\n const result: ParsedCombo = {\n mod: false,\n ctrl: false,\n cmd: false,\n shift: false,\n alt: false,\n meta: false,\n key: '',\n }\n for (const p of parts) {\n if (p === 'mod') result.mod = true\n else if (p === 'ctrl' || p === 'control') result.ctrl = true\n else if (p === 'cmd' || p === 'command' || p === 'win') result.cmd = true\n else if (p === 'shift') result.shift = true\n else if (p === 'alt' || p === 'option' || p === 'opt') result.alt = true\n else if (p === 'meta') result.meta = true\n else result.key = normalizeKey(p)\n }\n return result\n}\n\nfunction matches(parsed: ParsedCombo, event: KeyboardEvent, mac: boolean): boolean {\n // `mod` resolves to Cmd on macOS, Ctrl elsewhere. Track both sides of the combo.\n const requiredCmd = parsed.cmd || (parsed.mod && mac)\n const requiredCtrl = parsed.ctrl || (parsed.mod && !mac)\n\n if (requiredCmd !== event.metaKey) return false\n if (requiredCtrl !== event.ctrlKey) return false\n if (parsed.shift !== event.shiftKey) return false\n if (parsed.alt !== event.altKey) return false\n // `meta` (plain) aliases Cmd on macOS — avoid double-matching when both mod+meta are specified.\n if (parsed.meta && !mac && !event.metaKey) return false\n\n if (!parsed.key) return true\n const eventKey = normalizeKey(event.key)\n return eventKey === parsed.key\n}\n\nfunction isEditable(el: EventTarget | null): boolean {\n if (!(el instanceof HTMLElement)) return false\n if (el.isContentEditable) return true\n const tag = el.tagName\n if (tag === 'INPUT') {\n const type = (el as HTMLInputElement).type\n // Buttons and checkboxes aren't \"typing\" — don't block.\n return !['button', 'submit', 'reset', 'checkbox', 'radio', 'range', 'color', 'file'].includes(type)\n }\n return tag === 'TEXTAREA' || tag === 'SELECT'\n}\n\nfunction hasModifier(event: KeyboardEvent): boolean {\n return event.metaKey || event.ctrlKey || event.altKey\n}\n\nfunction resolveTarget(target: UseHotkeysOptions['target']): EventTarget | null {\n if (!target) return typeof document !== 'undefined' ? document : null\n if (target instanceof Document) return target\n if ('current' in target) return target.current ?? null\n return target\n}\n\n/**\n * Register a keyboard shortcut. Handler fires when the combo matches, respecting\n * `ignoreWhenTyping` (default true) — except when a modifier is part of the combo,\n * which always wins. Returns nothing; cleanup is automatic.\n *\n * @example\n * useHotkeys('mod+k', () => setOpen((v) => !v))\n * useHotkeys(['escape', 'mod+w'], close, { enabled: open })\n */\nexport function useHotkeys(\n combo: HotkeyCombo,\n handler: (event: KeyboardEvent) => void,\n options: UseHotkeysOptions = {}\n): void {\n const { preventDefault = true, ignoreWhenTyping = true, enabled = true, target } = options\n\n // Keep latest handler in a ref so callers don't need to memoize.\n const handlerRef = React.useRef(handler)\n React.useEffect(() => {\n handlerRef.current = handler\n }, [handler])\n\n React.useEffect(() => {\n if (!enabled) return\n const resolvedTarget = resolveTarget(target)\n if (!resolvedTarget) return\n\n const combos = (Array.isArray(combo) ? combo : [combo]).map(parseCombo)\n const mac = isMac()\n\n const listener = (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n const matched = combos.find((parsed) => matches(parsed, keyboardEvent, mac))\n if (!matched) return\n\n if (ignoreWhenTyping && isEditable(keyboardEvent.target) && !hasModifier(keyboardEvent)) {\n return\n }\n\n if (preventDefault) keyboardEvent.preventDefault()\n handlerRef.current(keyboardEvent)\n }\n\n resolvedTarget.addEventListener('keydown', listener)\n return () => {\n resolvedTarget.removeEventListener('keydown', listener)\n }\n // `combo` is usually a stable string literal; if callers pass a new array every\n // render we join-stringify to avoid stale closures without surprising rerenders.\n }, [Array.isArray(combo) ? combo.join('|') : combo, enabled, ignoreWhenTyping, preventDefault, target])\n}\n\n/**\n * Render-helper: returns a platform-appropriate display string for a combo.\n * 'mod+k' → '⌘K' on macOS, 'Ctrl+K' elsewhere. Useful for `<CommandShortcut>`.\n */\nexport function formatHotkey(combo: string): string {\n const mac = isMac()\n return combo\n .split('+')\n .map((p) => {\n const t = p.trim().toLowerCase()\n if (t === 'mod') return mac ? '⌘' : 'Ctrl'\n if (t === 'cmd' || t === 'meta') return mac ? '⌘' : 'Win'\n if (t === 'ctrl' || t === 'control') return mac ? '⌃' : 'Ctrl'\n if (t === 'shift') return mac ? '⇧' : 'Shift'\n if (t === 'alt' || t === 'option' || t === 'opt') return mac ? '⌥' : 'Alt'\n if (t === 'enter' || t === 'return') return '↵'\n if (t === 'escape' || t === 'esc') return 'Esc'\n if (t === 'space') return 'Space'\n if (t === 'up') return '↑'\n if (t === 'down') return '↓'\n if (t === 'left') return '←'\n if (t === 'right') return '→'\n return t.length === 1 ? t.toUpperCase() : t\n })\n .join(mac ? '' : '+')\n}\n"]}
|
package/dist/chunk-UOZN45G4.cjs
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkKYM7NIJO_cjs = require('./chunk-KYM7NIJO.cjs');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var recharts = require('recharts');
|
|
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
|
-
|
|
28
|
-
var PartoAreaChart = React__namespace.forwardRef(function PartoAreaChart2({
|
|
29
|
-
data,
|
|
30
|
-
dataKeys,
|
|
31
|
-
xAxisKey = "name",
|
|
32
|
-
curve = "monotone",
|
|
33
|
-
strokeWidth = 2,
|
|
34
|
-
fillOpacity = 0.08,
|
|
35
|
-
showDots = false,
|
|
36
|
-
enableGridY = true,
|
|
37
|
-
enableGridX = false,
|
|
38
|
-
margin = { top: 20, right: 20, bottom: 50, left: 50 },
|
|
39
|
-
axisBottom,
|
|
40
|
-
axisLeft,
|
|
41
|
-
tooltipFormatter,
|
|
42
|
-
locale = "fa",
|
|
43
|
-
className,
|
|
44
|
-
isLoading = false,
|
|
45
|
-
ariaLabel,
|
|
46
|
-
chartProps,
|
|
47
|
-
legend = false
|
|
48
|
-
}, ref) {
|
|
49
|
-
const { chartColors, axisTickStyle, gridStyle, tooltipStyle, crosshairStyle } = chunkKYM7NIJO_cjs.useChartTheme();
|
|
50
|
-
const defaultXTick = React__namespace.useMemo(() => chunkKYM7NIJO_cjs.localeAwareCategoryTick(locale), [locale]);
|
|
51
|
-
const defaultYTick = React__namespace.useMemo(() => chunkKYM7NIJO_cjs.localeAwareNumberTick(locale), [locale]);
|
|
52
|
-
if (isLoading) {
|
|
53
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLoadingSkeleton, { className });
|
|
54
|
-
}
|
|
55
|
-
const legendItems = legend ? dataKeys.map((key, i) => ({
|
|
56
|
-
key,
|
|
57
|
-
label: key,
|
|
58
|
-
color: chartColors[i % chartColors.length],
|
|
59
|
-
shape: "line"
|
|
60
|
-
})) : [];
|
|
61
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartContainer, { ref, className, dataSlot: "area-chart", ariaLabel, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", width: "100%", height: "100%" }, children: [
|
|
62
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, minHeight: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.AreaChart, { data, margin, ...chartProps, children: [
|
|
63
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: dataKeys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: `area-gradient-${key}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
64
|
-
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: chartColors[i % chartColors.length], stopOpacity: fillOpacity }),
|
|
65
|
-
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: chartColors[i % chartColors.length], stopOpacity: 0 })
|
|
66
|
-
] }, key)) }),
|
|
67
|
-
(enableGridX || enableGridY) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
-
recharts.CartesianGrid,
|
|
69
|
-
{
|
|
70
|
-
horizontal: enableGridY,
|
|
71
|
-
vertical: enableGridX,
|
|
72
|
-
stroke: gridStyle.stroke,
|
|
73
|
-
strokeDasharray: gridStyle.strokeDasharray,
|
|
74
|
-
strokeOpacity: gridStyle.strokeOpacity
|
|
75
|
-
}
|
|
76
|
-
),
|
|
77
|
-
axisBottom !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
78
|
-
recharts.XAxis,
|
|
79
|
-
{
|
|
80
|
-
dataKey: xAxisKey,
|
|
81
|
-
tick: axisTickStyle,
|
|
82
|
-
tickLine: false,
|
|
83
|
-
axisLine: false,
|
|
84
|
-
tickMargin: 12,
|
|
85
|
-
tickFormatter: defaultXTick,
|
|
86
|
-
...axisBottom
|
|
87
|
-
}
|
|
88
|
-
),
|
|
89
|
-
axisLeft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
90
|
-
recharts.YAxis,
|
|
91
|
-
{
|
|
92
|
-
tick: axisTickStyle,
|
|
93
|
-
tickLine: false,
|
|
94
|
-
axisLine: false,
|
|
95
|
-
tickMargin: 12,
|
|
96
|
-
tickFormatter: defaultYTick,
|
|
97
|
-
...axisLeft
|
|
98
|
-
}
|
|
99
|
-
),
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
-
recharts.Tooltip,
|
|
102
|
-
{
|
|
103
|
-
cursor: crosshairStyle,
|
|
104
|
-
content: /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartTooltip, { tooltipStyle, formatter: tooltipFormatter, locale })
|
|
105
|
-
}
|
|
106
|
-
),
|
|
107
|
-
dataKeys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
-
recharts.Area,
|
|
109
|
-
{
|
|
110
|
-
type: curve,
|
|
111
|
-
dataKey: key,
|
|
112
|
-
stroke: chartColors[i % chartColors.length],
|
|
113
|
-
strokeWidth,
|
|
114
|
-
fill: `url(#area-gradient-${key})`,
|
|
115
|
-
dot: showDots,
|
|
116
|
-
activeDot: { r: 4, strokeWidth: 2 },
|
|
117
|
-
animationDuration: 800,
|
|
118
|
-
animationEasing: "ease-out"
|
|
119
|
-
},
|
|
120
|
-
key
|
|
121
|
-
))
|
|
122
|
-
] }) }) }),
|
|
123
|
-
legend && /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLegend, { items: legendItems, style: { paddingTop: 12 } })
|
|
124
|
-
] }) });
|
|
125
|
-
});
|
|
126
|
-
PartoAreaChart.displayName = "PartoAreaChart";
|
|
127
|
-
|
|
128
|
-
exports.PartoAreaChart = PartoAreaChart;
|
|
129
|
-
//# sourceMappingURL=chunk-UOZN45G4.cjs.map
|
|
130
|
-
//# sourceMappingURL=chunk-UOZN45G4.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/charts/PartoAreaChart.tsx"],"names":["React","PartoAreaChart","useChartTheme","localeAwareCategoryTick","localeAwareNumberTick","jsx","ChartLoadingSkeleton","ChartContainer","jsxs","ResponsiveContainer","AreaChart","CartesianGrid","XAxis","YAxis","Tooltip","ChartTooltip","Area","ChartLegend"],"mappings":"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","file":"chunk-UOZN45G4.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'\n\nimport { useChartTheme } from '@/hooks/use-chart-theme'\nimport { type SupportedLocale } from '@/lib/utils'\nimport {\n ChartContainer,\n ChartLegend,\n ChartLoadingSkeleton,\n ChartTooltip,\n localeAwareCategoryTick,\n localeAwareNumberTick,\n type ChartLegendItem,\n} from './chart-utils'\n\nexport interface PartoAreaChartProps {\n /** Row-oriented data: [{ name: \"فروردین\", series1: 50, series2: 30 }] */\n data: Array<Record<string, any>>\n /** Keys for each area series (e.g. ['فروش', 'سود']) */\n dataKeys: string[]\n /** Field name for X axis (default: 'name') */\n xAxisKey?: string\n /** Curve type */\n curve?: 'monotone' | 'linear' | 'natural' | 'step'\n /** Line width */\n strokeWidth?: number\n /** Area fill opacity */\n fillOpacity?: number\n /** Show dots on data points */\n showDots?: boolean\n /** Show horizontal grid lines */\n enableGridY?: boolean\n /** Show vertical grid lines */\n enableGridX?: boolean\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** Custom X axis config */\n axisBottom?: Record<string, any> | null\n /** Custom Y axis config */\n axisLeft?: Record<string, any> | null\n /** Custom tooltip formatter */\n tooltipFormatter?: (name: string, value: number) => React.ReactNode\n /**\n * Locale for digit formatting in tooltips and axis ticks. fa/ar render\n * Persian/Arabic digits with locale suffixes; en uses Latin K/M/B.\n * Default: 'fa'.\n */\n locale?: SupportedLocale\n className?: string\n isLoading?: boolean\n ariaLabel?: string\n /** Additional Recharts AreaChart props */\n chartProps?: Record<string, any>\n /** Render a colored-marker legend below the chart. @default `false` */\n legend?: boolean\n}\n\nexport const PartoAreaChart = React.forwardRef<HTMLDivElement, PartoAreaChartProps>(function PartoAreaChart(\n {\n data,\n dataKeys,\n xAxisKey = 'name',\n curve = 'monotone',\n strokeWidth = 2,\n fillOpacity = 0.08,\n showDots = false,\n enableGridY = true,\n enableGridX = false,\n margin = { top: 20, right: 20, bottom: 50, left: 50 },\n axisBottom,\n axisLeft,\n tooltipFormatter,\n locale = 'fa',\n className,\n isLoading = false,\n ariaLabel,\n chartProps,\n legend = false,\n },\n ref\n) {\n const { chartColors, axisTickStyle, gridStyle, tooltipStyle, crosshairStyle } = useChartTheme()\n const defaultXTick = React.useMemo(() => localeAwareCategoryTick(locale), [locale])\n const defaultYTick = React.useMemo(() => localeAwareNumberTick(locale), [locale])\n\n if (isLoading) {\n return <ChartLoadingSkeleton className={className} />\n }\n\n const legendItems: ChartLegendItem[] = legend\n ? dataKeys.map((key, i) => ({\n key,\n label: key,\n color: chartColors[i % chartColors.length],\n shape: 'line',\n }))\n : []\n\n return (\n <ChartContainer ref={ref} className={className} dataSlot=\"area-chart\" ariaLabel={ariaLabel}>\n <div style={{ display: 'flex', flexDirection: 'column', width: '100%', height: '100%' }}>\n <div style={{ flex: 1, minHeight: 0 }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={data} margin={margin} {...chartProps}>\n <defs>\n {dataKeys.map((key, i) => (\n <linearGradient key={key} id={`area-gradient-${key}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={chartColors[i % chartColors.length]} stopOpacity={fillOpacity} />\n <stop offset=\"100%\" stopColor={chartColors[i % chartColors.length]} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n\n {(enableGridX || enableGridY) && (\n <CartesianGrid\n horizontal={enableGridY}\n vertical={enableGridX}\n stroke={gridStyle.stroke}\n strokeDasharray={gridStyle.strokeDasharray}\n strokeOpacity={gridStyle.strokeOpacity}\n />\n )}\n\n {axisBottom !== null && (\n <XAxis\n dataKey={xAxisKey}\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={defaultXTick}\n {...axisBottom}\n />\n )}\n\n {axisLeft !== null && (\n <YAxis\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={defaultYTick}\n {...axisLeft}\n />\n )}\n\n <Tooltip\n cursor={crosshairStyle}\n content={<ChartTooltip tooltipStyle={tooltipStyle} formatter={tooltipFormatter} locale={locale} />}\n />\n\n {dataKeys.map((key, i) => (\n <Area\n key={key}\n type={curve}\n dataKey={key}\n stroke={chartColors[i % chartColors.length]}\n strokeWidth={strokeWidth}\n fill={`url(#area-gradient-${key})`}\n dot={showDots}\n activeDot={{ r: 4, strokeWidth: 2 }}\n animationDuration={800}\n animationEasing=\"ease-out\"\n />\n ))}\n </AreaChart>\n </ResponsiveContainer>\n </div>\n {legend && <ChartLegend items={legendItems} style={{ paddingTop: 12 }} />}\n </div>\n </ChartContainer>\n )\n})\nPartoAreaChart.displayName = 'PartoAreaChart'\n"]}
|
package/dist/chunk-VHLDOG74.cjs
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkKYM7NIJO_cjs = require('./chunk-KYM7NIJO.cjs');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var recharts = require('recharts');
|
|
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
|
-
|
|
28
|
-
var PartoBarChart = React__namespace.forwardRef(function PartoBarChart2({
|
|
29
|
-
data,
|
|
30
|
-
keys,
|
|
31
|
-
indexBy,
|
|
32
|
-
groupMode = "grouped",
|
|
33
|
-
layout = "vertical",
|
|
34
|
-
margin = { top: 20, right: 20, bottom: 50, left: 50 },
|
|
35
|
-
barCategoryGap = "35%",
|
|
36
|
-
barGap = 2,
|
|
37
|
-
radius = [6, 6, 0, 0],
|
|
38
|
-
enableGridY = true,
|
|
39
|
-
enableGridX = false,
|
|
40
|
-
enableLabel = false,
|
|
41
|
-
axisBottom,
|
|
42
|
-
axisLeft,
|
|
43
|
-
tooltipFormatter,
|
|
44
|
-
locale = "fa",
|
|
45
|
-
className,
|
|
46
|
-
isLoading = false,
|
|
47
|
-
ariaLabel,
|
|
48
|
-
chartProps,
|
|
49
|
-
legend = false
|
|
50
|
-
}, ref) {
|
|
51
|
-
const { chartColors, axisTickStyle, gridStyle, tooltipStyle } = chunkKYM7NIJO_cjs.useChartTheme();
|
|
52
|
-
const categoryTick = React__namespace.useMemo(() => chunkKYM7NIJO_cjs.localeAwareCategoryTick(locale), [locale]);
|
|
53
|
-
const numberTick = React__namespace.useMemo(() => chunkKYM7NIJO_cjs.localeAwareNumberTick(locale), [locale]);
|
|
54
|
-
if (isLoading) {
|
|
55
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLoadingSkeleton, { className });
|
|
56
|
-
}
|
|
57
|
-
const rechartsLayout = layout === "horizontal" ? "vertical" : "horizontal";
|
|
58
|
-
const stackId = groupMode === "stacked" ? "stack" : void 0;
|
|
59
|
-
const legendItems = legend ? keys.map((key, i) => ({
|
|
60
|
-
key,
|
|
61
|
-
label: key,
|
|
62
|
-
color: chartColors[i % chartColors.length],
|
|
63
|
-
shape: "bar"
|
|
64
|
-
})) : [];
|
|
65
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartContainer, { ref, className, dataSlot: "bar-chart", ariaLabel, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", width: "100%", height: "100%" }, children: [
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, minHeight: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
67
|
-
recharts.BarChart,
|
|
68
|
-
{
|
|
69
|
-
data,
|
|
70
|
-
layout: rechartsLayout,
|
|
71
|
-
margin,
|
|
72
|
-
barCategoryGap,
|
|
73
|
-
barGap,
|
|
74
|
-
...chartProps,
|
|
75
|
-
children: [
|
|
76
|
-
(enableGridX || enableGridY) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
recharts.CartesianGrid,
|
|
78
|
-
{
|
|
79
|
-
horizontal: enableGridY,
|
|
80
|
-
vertical: enableGridX,
|
|
81
|
-
stroke: gridStyle.stroke,
|
|
82
|
-
strokeDasharray: gridStyle.strokeDasharray,
|
|
83
|
-
strokeOpacity: gridStyle.strokeOpacity
|
|
84
|
-
}
|
|
85
|
-
),
|
|
86
|
-
rechartsLayout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
87
|
-
axisBottom !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
recharts.XAxis,
|
|
89
|
-
{
|
|
90
|
-
dataKey: indexBy,
|
|
91
|
-
tick: axisTickStyle,
|
|
92
|
-
tickLine: false,
|
|
93
|
-
axisLine: false,
|
|
94
|
-
tickMargin: 12,
|
|
95
|
-
tickFormatter: categoryTick,
|
|
96
|
-
...axisBottom
|
|
97
|
-
}
|
|
98
|
-
),
|
|
99
|
-
axisLeft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
-
recharts.YAxis,
|
|
101
|
-
{
|
|
102
|
-
tick: axisTickStyle,
|
|
103
|
-
tickLine: false,
|
|
104
|
-
axisLine: false,
|
|
105
|
-
tickMargin: 12,
|
|
106
|
-
tickFormatter: numberTick,
|
|
107
|
-
...axisLeft
|
|
108
|
-
}
|
|
109
|
-
)
|
|
110
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
111
|
-
axisLeft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
112
|
-
recharts.YAxis,
|
|
113
|
-
{
|
|
114
|
-
dataKey: indexBy,
|
|
115
|
-
type: "category",
|
|
116
|
-
tick: axisTickStyle,
|
|
117
|
-
tickLine: false,
|
|
118
|
-
axisLine: false,
|
|
119
|
-
tickMargin: 12,
|
|
120
|
-
tickFormatter: categoryTick,
|
|
121
|
-
...axisLeft
|
|
122
|
-
}
|
|
123
|
-
),
|
|
124
|
-
axisBottom !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
-
recharts.XAxis,
|
|
126
|
-
{
|
|
127
|
-
type: "number",
|
|
128
|
-
tick: axisTickStyle,
|
|
129
|
-
tickLine: false,
|
|
130
|
-
axisLine: false,
|
|
131
|
-
tickMargin: 12,
|
|
132
|
-
tickFormatter: numberTick,
|
|
133
|
-
...axisBottom
|
|
134
|
-
}
|
|
135
|
-
)
|
|
136
|
-
] }),
|
|
137
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
138
|
-
recharts.Tooltip,
|
|
139
|
-
{
|
|
140
|
-
cursor: { fill: "hsl(0 0% 50% / 0.05)" },
|
|
141
|
-
content: /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartTooltip, { tooltipStyle, formatter: tooltipFormatter, locale })
|
|
142
|
-
}
|
|
143
|
-
),
|
|
144
|
-
keys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
145
|
-
recharts.Bar,
|
|
146
|
-
{
|
|
147
|
-
dataKey: key,
|
|
148
|
-
fill: chartColors[i % chartColors.length],
|
|
149
|
-
radius,
|
|
150
|
-
stackId,
|
|
151
|
-
label: enableLabel ? { position: "top", style: axisTickStyle } : false,
|
|
152
|
-
animationDuration: 800,
|
|
153
|
-
animationEasing: "ease-out"
|
|
154
|
-
},
|
|
155
|
-
key
|
|
156
|
-
))
|
|
157
|
-
]
|
|
158
|
-
}
|
|
159
|
-
) }) }),
|
|
160
|
-
legend && /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLegend, { items: legendItems, style: { paddingTop: 12 } })
|
|
161
|
-
] }) });
|
|
162
|
-
});
|
|
163
|
-
PartoBarChart.displayName = "PartoBarChart";
|
|
164
|
-
|
|
165
|
-
exports.PartoBarChart = PartoBarChart;
|
|
166
|
-
//# sourceMappingURL=chunk-VHLDOG74.cjs.map
|
|
167
|
-
//# sourceMappingURL=chunk-VHLDOG74.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/charts/PartoBarChart.tsx"],"names":["React","PartoBarChart","useChartTheme","localeAwareCategoryTick","localeAwareNumberTick","jsx","ChartLoadingSkeleton","ChartContainer","jsxs","ResponsiveContainer","BarChart","CartesianGrid","Fragment","XAxis","YAxis","Tooltip","ChartTooltip","Bar","ChartLegend"],"mappings":"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","file":"chunk-VHLDOG74.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'\n\nimport { useChartTheme } from '@/hooks/use-chart-theme'\nimport { type SupportedLocale } from '@/lib/utils'\nimport {\n ChartContainer,\n ChartLegend,\n ChartLoadingSkeleton,\n ChartTooltip,\n localeAwareCategoryTick,\n localeAwareNumberTick,\n type ChartLegendItem,\n} from './chart-utils'\n\nexport interface PartoBarChartProps {\n /** Chart data — row-oriented array of objects */\n data: Array<Record<string, any>>\n /** Data keys to render as bars (e.g. ['فروش', 'هزینه']) */\n keys: string[]\n /** Field name used for X axis categories (e.g. 'ماه') */\n indexBy: string\n /** Stacked or grouped layout */\n groupMode?: 'grouped' | 'stacked'\n /** Bar layout direction */\n layout?: 'vertical' | 'horizontal'\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** Gap between category groups as percentage */\n barCategoryGap?: string | number\n /** Gap between bars within a group */\n barGap?: number\n /** Border radius for bar tops [topLeft, topRight, bottomRight, bottomLeft] */\n radius?: [number, number, number, number]\n /** Show horizontal grid lines */\n enableGridY?: boolean\n /** Show vertical grid lines */\n enableGridX?: boolean\n /** Show labels inside bars */\n enableLabel?: boolean\n /** Custom X axis config */\n axisBottom?: Record<string, any> | null\n /** Custom Y axis config */\n axisLeft?: Record<string, any> | null\n /** Custom tooltip formatter */\n tooltipFormatter?: (name: string, value: number) => React.ReactNode\n /**\n * Locale for digit formatting in tooltips and axis ticks. fa/ar render\n * Persian/Arabic digits with locale suffixes; en uses Latin K/M/B.\n * Default: 'fa'.\n */\n locale?: SupportedLocale\n className?: string\n isLoading?: boolean\n ariaLabel?: string\n /** Additional Recharts BarChart props */\n chartProps?: Record<string, any>\n /**\n * Render a legend below the chart that names each series with a colored\n * marker. Strongly recommended for grouped or stacked layouts where\n * series identity is otherwise color-only. @default `false`\n */\n legend?: boolean\n}\n\nexport const PartoBarChart = React.forwardRef<HTMLDivElement, PartoBarChartProps>(function PartoBarChart(\n {\n data,\n keys,\n indexBy,\n groupMode = 'grouped',\n layout = 'vertical',\n margin = { top: 20, right: 20, bottom: 50, left: 50 },\n barCategoryGap = '35%',\n barGap = 2,\n radius = [6, 6, 0, 0],\n enableGridY = true,\n enableGridX = false,\n enableLabel = false,\n axisBottom,\n axisLeft,\n tooltipFormatter,\n locale = 'fa',\n className,\n isLoading = false,\n ariaLabel,\n chartProps,\n legend = false,\n },\n ref\n) {\n const { chartColors, axisTickStyle, gridStyle, tooltipStyle } = useChartTheme()\n const categoryTick = React.useMemo(() => localeAwareCategoryTick(locale), [locale])\n const numberTick = React.useMemo(() => localeAwareNumberTick(locale), [locale])\n\n if (isLoading) {\n return <ChartLoadingSkeleton className={className} />\n }\n\n // Recharts uses \"horizontal\" for standard vertical bars and \"vertical\" for horizontal bars\n const rechartsLayout = layout === 'horizontal' ? 'vertical' : 'horizontal'\n const stackId = groupMode === 'stacked' ? 'stack' : undefined\n\n const legendItems: ChartLegendItem[] = legend\n ? keys.map((key, i) => ({\n key,\n label: key,\n color: chartColors[i % chartColors.length],\n shape: 'bar',\n }))\n : []\n\n return (\n <ChartContainer ref={ref} className={className} dataSlot=\"bar-chart\" ariaLabel={ariaLabel}>\n <div style={{ display: 'flex', flexDirection: 'column', width: '100%', height: '100%' }}>\n <div style={{ flex: 1, minHeight: 0 }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart\n data={data}\n layout={rechartsLayout}\n margin={margin}\n barCategoryGap={barCategoryGap}\n barGap={barGap}\n {...chartProps}\n >\n {(enableGridX || enableGridY) && (\n <CartesianGrid\n horizontal={enableGridY}\n vertical={enableGridX}\n stroke={gridStyle.stroke}\n strokeDasharray={gridStyle.strokeDasharray}\n strokeOpacity={gridStyle.strokeOpacity}\n />\n )}\n\n {rechartsLayout === 'horizontal' ? (\n <>\n {axisBottom !== null && (\n <XAxis\n dataKey={indexBy}\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={categoryTick}\n {...axisBottom}\n />\n )}\n {axisLeft !== null && (\n <YAxis\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={numberTick}\n {...axisLeft}\n />\n )}\n </>\n ) : (\n <>\n {axisLeft !== null && (\n <YAxis\n dataKey={indexBy}\n type=\"category\"\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={categoryTick}\n {...axisLeft}\n />\n )}\n {axisBottom !== null && (\n <XAxis\n type=\"number\"\n tick={axisTickStyle}\n tickLine={false}\n axisLine={false}\n tickMargin={12}\n tickFormatter={numberTick}\n {...axisBottom}\n />\n )}\n </>\n )}\n\n <Tooltip\n cursor={{ fill: 'hsl(0 0% 50% / 0.05)' }}\n content={<ChartTooltip tooltipStyle={tooltipStyle} formatter={tooltipFormatter} locale={locale} />}\n />\n\n {keys.map((key, i) => (\n <Bar\n key={key}\n dataKey={key}\n fill={chartColors[i % chartColors.length]}\n radius={radius}\n stackId={stackId}\n label={enableLabel ? { position: 'top', style: axisTickStyle } : false}\n animationDuration={800}\n animationEasing=\"ease-out\"\n />\n ))}\n </BarChart>\n </ResponsiveContainer>\n </div>\n {legend && <ChartLegend items={legendItems} style={{ paddingTop: 12 }} />}\n </div>\n </ChartContainer>\n )\n})\nPartoBarChart.displayName = 'PartoBarChart'\n"]}
|