@parto-system-design/ui 1.1.11 → 1.1.17
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.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 +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- 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 +21003 -15720
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +412 -71
- package/dist/index.d.cts +82 -490
- package/dist/index.d.ts +82 -490
- package/dist/index.js +6727 -976
- 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-L2L5CKC2.js
DELETED
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { formatLargeNumber, cn, convertToLocalNumbers } from './chunk-4SVQNEVH.js';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
|
|
5
|
-
// src/lib/iran-provinces.ts
|
|
6
|
-
var IRAN_PROVINCES = [
|
|
7
|
-
{
|
|
8
|
-
slug: "east-azerbaijan",
|
|
9
|
-
iso: "IR-01",
|
|
10
|
-
labels: { fa: "\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u0634\u0631\u0642\u06CC", ar: "\u0623\u0630\u0631\u0628\u064A\u062C\u0627\u0646 \u0627\u0644\u0634\u0631\u0642\u064A\u0629", en: "East Azerbaijan" }
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
slug: "west-azerbaijan",
|
|
14
|
-
iso: "IR-02",
|
|
15
|
-
labels: { fa: "\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u063A\u0631\u0628\u06CC", ar: "\u0623\u0630\u0631\u0628\u064A\u062C\u0627\u0646 \u0627\u0644\u063A\u0631\u0628\u064A\u0629", en: "West Azerbaijan" }
|
|
16
|
-
},
|
|
17
|
-
{ slug: "ardabil", iso: "IR-03", labels: { fa: "\u0627\u0631\u062F\u0628\u06CC\u0644", ar: "\u0623\u0631\u062F\u0628\u064A\u0644", en: "Ardabil" } },
|
|
18
|
-
{ slug: "isfahan", iso: "IR-04", labels: { fa: "\u0627\u0635\u0641\u0647\u0627\u0646", ar: "\u0623\u0635\u0641\u0647\u0627\u0646", en: "Isfahan" } },
|
|
19
|
-
{ slug: "ilam", iso: "IR-05", labels: { fa: "\u0627\u06CC\u0644\u0627\u0645", ar: "\u0625\u064A\u0644\u0627\u0645", en: "Ilam" } },
|
|
20
|
-
{ slug: "bushehr", iso: "IR-06", labels: { fa: "\u0628\u0648\u0634\u0647\u0631", ar: "\u0628\u0648\u0634\u0647\u0631", en: "Bushehr" } },
|
|
21
|
-
{ slug: "tehran", iso: "IR-07", labels: { fa: "\u062A\u0647\u0631\u0627\u0646", ar: "\u0637\u0647\u0631\u0627\u0646", en: "Tehran" } },
|
|
22
|
-
{
|
|
23
|
-
slug: "chaharmahal-bakhtiari",
|
|
24
|
-
iso: "IR-08",
|
|
25
|
-
labels: { fa: "\u0686\u0647\u0627\u0631\u0645\u062D\u0627\u0644 \u0648 \u0628\u062E\u062A\u06CC\u0627\u0631\u06CC", ar: "\u062A\u0634\u0647\u0627\u0631\u0645\u062D\u0627\u0644 \u0648\u0628\u062E\u062A\u064A\u0627\u0631\u064A", en: "Chaharmahal and Bakhtiari" }
|
|
26
|
-
},
|
|
27
|
-
{ slug: "razavi-khorasan", iso: "IR-09", labels: { fa: "\u062E\u0631\u0627\u0633\u0627\u0646 \u0631\u0636\u0648\u06CC", ar: "\u062E\u0631\u0627\u0633\u0627\u0646 \u0631\u0636\u0648\u064A", en: "Razavi Khorasan" } },
|
|
28
|
-
{ slug: "khuzestan", iso: "IR-10", labels: { fa: "\u062E\u0648\u0632\u0633\u062A\u0627\u0646", ar: "\u062E\u0648\u0632\u0633\u062A\u0627\u0646", en: "Khuzestan" } },
|
|
29
|
-
{ slug: "zanjan", iso: "IR-11", labels: { fa: "\u0632\u0646\u062C\u0627\u0646", ar: "\u0632\u0646\u062C\u0627\u0646", en: "Zanjan" } },
|
|
30
|
-
{ slug: "semnan", iso: "IR-12", labels: { fa: "\u0633\u0645\u0646\u0627\u0646", ar: "\u0633\u0645\u0646\u0627\u0646", en: "Semnan" } },
|
|
31
|
-
{
|
|
32
|
-
slug: "sistan-baluchestan",
|
|
33
|
-
iso: "IR-13",
|
|
34
|
-
labels: { fa: "\u0633\u06CC\u0633\u062A\u0627\u0646 \u0648 \u0628\u0644\u0648\u0686\u0633\u062A\u0627\u0646", ar: "\u0633\u064A\u0633\u062A\u0627\u0646 \u0648\u0628\u0644\u0648\u0634\u0633\u062A\u0627\u0646", en: "Sistan and Baluchestan" }
|
|
35
|
-
},
|
|
36
|
-
{ slug: "fars", iso: "IR-14", labels: { fa: "\u0641\u0627\u0631\u0633", ar: "\u0641\u0627\u0631\u0633", en: "Fars" } },
|
|
37
|
-
{ slug: "kerman", iso: "IR-15", labels: { fa: "\u06A9\u0631\u0645\u0627\u0646", ar: "\u0643\u0631\u0645\u0627\u0646", en: "Kerman" } },
|
|
38
|
-
{ slug: "kurdistan", iso: "IR-16", labels: { fa: "\u06A9\u0631\u062F\u0633\u062A\u0627\u0646", ar: "\u0643\u0631\u062F\u0633\u062A\u0627\u0646", en: "Kurdistan" } },
|
|
39
|
-
{ slug: "kermanshah", iso: "IR-17", labels: { fa: "\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647", ar: "\u0643\u0631\u0645\u0627\u0646\u0634\u0627\u0647", en: "Kermanshah" } },
|
|
40
|
-
{
|
|
41
|
-
slug: "kohgiluyeh-boyer-ahmad",
|
|
42
|
-
iso: "IR-18",
|
|
43
|
-
labels: { fa: "\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647 \u0648 \u0628\u0648\u06CC\u0631\u0627\u062D\u0645\u062F", ar: "\u0643\u0647\u063A\u064A\u0644\u0648\u064A\u0629 \u0648\u0628\u0648\u064A\u0631 \u0623\u062D\u0645\u062F", en: "Kohgiluyeh and Boyer-Ahmad" }
|
|
44
|
-
},
|
|
45
|
-
{ slug: "gilan", iso: "IR-19", labels: { fa: "\u06AF\u06CC\u0644\u0627\u0646", ar: "\u062C\u064A\u0644\u0627\u0646", en: "Gilan" } },
|
|
46
|
-
{ slug: "lorestan", iso: "IR-20", labels: { fa: "\u0644\u0631\u0633\u062A\u0627\u0646", ar: "\u0644\u0631\u0633\u062A\u0627\u0646", en: "Lorestan" } },
|
|
47
|
-
{ slug: "mazandaran", iso: "IR-21", labels: { fa: "\u0645\u0627\u0632\u0646\u062F\u0631\u0627\u0646", ar: "\u0645\u0627\u0632\u0646\u062F\u0631\u0627\u0646", en: "Mazandaran" } },
|
|
48
|
-
{ slug: "markazi", iso: "IR-22", labels: { fa: "\u0645\u0631\u06A9\u0632\u06CC", ar: "\u0645\u0631\u0643\u0632\u064A", en: "Markazi" } },
|
|
49
|
-
{ slug: "hormozgan", iso: "IR-23", labels: { fa: "\u0647\u0631\u0645\u0632\u06AF\u0627\u0646", ar: "\u0647\u0631\u0645\u0632\u063A\u0627\u0646", en: "Hormozgan" } },
|
|
50
|
-
{ slug: "hamadan", iso: "IR-24", labels: { fa: "\u0647\u0645\u062F\u0627\u0646", ar: "\u0647\u0645\u062F\u0627\u0646", en: "Hamadan" } },
|
|
51
|
-
{ slug: "yazd", iso: "IR-25", labels: { fa: "\u06CC\u0632\u062F", ar: "\u064A\u0632\u062F", en: "Yazd" } },
|
|
52
|
-
{ slug: "qom", iso: "IR-26", labels: { fa: "\u0642\u0645", ar: "\u0642\u0645", en: "Qom" } },
|
|
53
|
-
{ slug: "golestan", iso: "IR-27", labels: { fa: "\u06AF\u0644\u0633\u062A\u0627\u0646", ar: "\u063A\u0648\u0644\u0633\u062A\u0627\u0646", en: "Golestan" } },
|
|
54
|
-
{ slug: "qazvin", iso: "IR-28", labels: { fa: "\u0642\u0632\u0648\u06CC\u0646", ar: "\u0642\u0632\u0648\u064A\u0646", en: "Qazvin" } },
|
|
55
|
-
{ slug: "north-khorasan", iso: "IR-29", labels: { fa: "\u062E\u0631\u0627\u0633\u0627\u0646 \u0634\u0645\u0627\u0644\u06CC", ar: "\u062E\u0631\u0627\u0633\u0627\u0646 \u0627\u0644\u0634\u0645\u0627\u0644\u064A\u0629", en: "North Khorasan" } },
|
|
56
|
-
{ slug: "south-khorasan", iso: "IR-30", labels: { fa: "\u062E\u0631\u0627\u0633\u0627\u0646 \u062C\u0646\u0648\u0628\u06CC", ar: "\u062E\u0631\u0627\u0633\u0627\u0646 \u0627\u0644\u062C\u0646\u0648\u0628\u064A\u0629", en: "South Khorasan" } },
|
|
57
|
-
{ slug: "alborz", iso: "IR-31", labels: { fa: "\u0627\u0644\u0628\u0631\u0632", ar: "\u0627\u0644\u0628\u0631\u0632", en: "Alborz" } }
|
|
58
|
-
];
|
|
59
|
-
var SLUG_INDEX = new Map(IRAN_PROVINCES.map((p) => [p.slug, p]));
|
|
60
|
-
var ISO_INDEX = new Map(IRAN_PROVINCES.map((p) => [p.iso, p]));
|
|
61
|
-
function findProvince(codeOrSlug) {
|
|
62
|
-
return SLUG_INDEX.get(codeOrSlug) ?? ISO_INDEX.get(codeOrSlug);
|
|
63
|
-
}
|
|
64
|
-
function getProvinceLabel(codeOrSlug, locale = "fa") {
|
|
65
|
-
const p = findProvince(codeOrSlug);
|
|
66
|
-
if (!p) return codeOrSlug;
|
|
67
|
-
return p.labels[locale] ?? p.labels.fa;
|
|
68
|
-
}
|
|
69
|
-
var SCALE_TO_VAR = {
|
|
70
|
-
brand: "--brand-default",
|
|
71
|
-
"sentiment-positive": "--sentiment-positive",
|
|
72
|
-
"sentiment-negative": "--sentiment-negative",
|
|
73
|
-
destructive: "--destructive-default",
|
|
74
|
-
warning: "--warning-default",
|
|
75
|
-
"severity-urgent": "--severity-urgent",
|
|
76
|
-
"severity-high": "--severity-high",
|
|
77
|
-
"flow-pro-gov": "--flow-pro-gov",
|
|
78
|
-
"flow-internal-critic": "--flow-internal-critic"
|
|
79
|
-
};
|
|
80
|
-
var LOCALE_STRINGS = {
|
|
81
|
-
fa: {
|
|
82
|
-
empty: "\u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0627\u0646\u200C\u0647\u0627 \u062F\u0631 \u062F\u0633\u062A\u0631\u0633 \u0646\u06CC\u0633\u062A.",
|
|
83
|
-
more: (n) => `+${n} \u0627\u0633\u062A\u0627\u0646 \u062F\u06CC\u06AF\u0631`,
|
|
84
|
-
loading: "\u062F\u0631 \u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC"
|
|
85
|
-
},
|
|
86
|
-
ar: {
|
|
87
|
-
empty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A \u0644\u0644\u0645\u062D\u0627\u0641\u0638\u0627\u062A.",
|
|
88
|
-
more: (n) => `+${n} \u0645\u062D\u0627\u0641\u0638\u0629 \u0623\u062E\u0631\u0649`,
|
|
89
|
-
loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644"
|
|
90
|
-
},
|
|
91
|
-
en: {
|
|
92
|
-
empty: "No province data available.",
|
|
93
|
-
more: (n) => `+${n} more`,
|
|
94
|
-
loading: "Loading"
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
var IranProvinceHeat = React.forwardRef(function IranProvinceHeat2({
|
|
98
|
-
data,
|
|
99
|
-
scale = "brand",
|
|
100
|
-
sort = "value-desc",
|
|
101
|
-
topN = 0,
|
|
102
|
-
showRank = false,
|
|
103
|
-
showValue = true,
|
|
104
|
-
hideMissing = false,
|
|
105
|
-
density = "comfortable",
|
|
106
|
-
valueSuffix,
|
|
107
|
-
valueFormatter,
|
|
108
|
-
onProvinceClick,
|
|
109
|
-
onUnknownCode,
|
|
110
|
-
locale = "fa",
|
|
111
|
-
isLoading = false,
|
|
112
|
-
emptyState,
|
|
113
|
-
className,
|
|
114
|
-
...divProps
|
|
115
|
-
}, ref) {
|
|
116
|
-
const strings = LOCALE_STRINGS[locale] ?? LOCALE_STRINGS.fa;
|
|
117
|
-
const cssVar = SCALE_TO_VAR[scale];
|
|
118
|
-
const rows = React.useMemo(() => {
|
|
119
|
-
if (isLoading) return [];
|
|
120
|
-
const cells = Array.isArray(data) ? data : Object.entries(data).map(([code, value]) => ({ code, value }));
|
|
121
|
-
const valueByProvinceSlug = /* @__PURE__ */ new Map();
|
|
122
|
-
for (const cell of cells) {
|
|
123
|
-
const province = findProvince(cell.code);
|
|
124
|
-
if (!province) {
|
|
125
|
-
onUnknownCode?.(cell.code);
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
valueByProvinceSlug.set(province.slug, cell.value);
|
|
129
|
-
}
|
|
130
|
-
const candidates = [];
|
|
131
|
-
for (const province of IRAN_PROVINCES) {
|
|
132
|
-
const value = valueByProvinceSlug.get(province.slug) ?? 0;
|
|
133
|
-
if (hideMissing && value === 0) continue;
|
|
134
|
-
candidates.push({
|
|
135
|
-
slug: province.slug,
|
|
136
|
-
iso: province.iso,
|
|
137
|
-
label: province.labels[locale] ?? province.labels.fa,
|
|
138
|
-
value,
|
|
139
|
-
intensity: 0
|
|
140
|
-
// filled below
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
if (candidates.length === 0) return [];
|
|
144
|
-
const max = candidates.reduce((m, r) => Math.max(m, r.value), 0);
|
|
145
|
-
if (max > 0) {
|
|
146
|
-
for (const row of candidates) row.intensity = Math.min(1, Math.max(0, row.value / max));
|
|
147
|
-
}
|
|
148
|
-
if (sort === "value-desc") candidates.sort((a, b) => b.value - a.value);
|
|
149
|
-
else if (sort === "value-asc") candidates.sort((a, b) => a.value - b.value);
|
|
150
|
-
else candidates.sort((a, b) => a.label.localeCompare(b.label, locale === "en" ? "en" : "fa"));
|
|
151
|
-
return candidates;
|
|
152
|
-
}, [data, hideMissing, isLoading, locale, onUnknownCode, sort]);
|
|
153
|
-
const visibleRows = topN > 0 ? rows.slice(0, topN) : rows;
|
|
154
|
-
const hiddenCount = rows.length - visibleRows.length;
|
|
155
|
-
const formatValue = React.useCallback(
|
|
156
|
-
(value) => {
|
|
157
|
-
if (valueFormatter) return valueFormatter(value);
|
|
158
|
-
const base = formatLargeNumber(value, locale);
|
|
159
|
-
return valueSuffix ? `${base}${valueSuffix}` : base;
|
|
160
|
-
},
|
|
161
|
-
[locale, valueFormatter, valueSuffix]
|
|
162
|
-
);
|
|
163
|
-
if (isLoading) {
|
|
164
|
-
return /* @__PURE__ */ jsx(
|
|
165
|
-
"div",
|
|
166
|
-
{
|
|
167
|
-
ref,
|
|
168
|
-
"data-slot": "iran-province-heat",
|
|
169
|
-
"data-state": "loading",
|
|
170
|
-
role: "status",
|
|
171
|
-
"aria-label": strings.loading,
|
|
172
|
-
className: cn("flex flex-col gap-1.5 w-full", className),
|
|
173
|
-
...divProps,
|
|
174
|
-
children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxs(
|
|
175
|
-
"div",
|
|
176
|
-
{
|
|
177
|
-
"data-slot": "iran-province-heat-skeleton-row",
|
|
178
|
-
className: cn("flex items-center gap-2 animate-pulse", density === "compact" ? "h-7" : "h-9"),
|
|
179
|
-
children: [
|
|
180
|
-
/* @__PURE__ */ jsx("div", { className: "h-3.5 w-24 rounded bg-overlay-hover" }),
|
|
181
|
-
/* @__PURE__ */ jsx("div", { className: "h-2.5 flex-1 rounded bg-overlay-hover" }),
|
|
182
|
-
/* @__PURE__ */ jsx("div", { className: "h-3.5 w-10 rounded bg-overlay-hover" })
|
|
183
|
-
]
|
|
184
|
-
},
|
|
185
|
-
i
|
|
186
|
-
))
|
|
187
|
-
}
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
if (rows.length === 0) {
|
|
191
|
-
return /* @__PURE__ */ jsx(
|
|
192
|
-
"div",
|
|
193
|
-
{
|
|
194
|
-
ref,
|
|
195
|
-
"data-slot": "iran-province-heat",
|
|
196
|
-
"data-state": "empty",
|
|
197
|
-
className: cn("flex items-center justify-center text-sm text-foreground-muted py-8", className),
|
|
198
|
-
...divProps,
|
|
199
|
-
children: emptyState ?? strings.empty
|
|
200
|
-
}
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
return /* @__PURE__ */ jsxs(
|
|
204
|
-
"div",
|
|
205
|
-
{
|
|
206
|
-
ref,
|
|
207
|
-
"data-slot": "iran-province-heat",
|
|
208
|
-
"data-density": density,
|
|
209
|
-
"data-scale": scale,
|
|
210
|
-
role: "list",
|
|
211
|
-
className: cn("flex flex-col w-full", density === "compact" ? "gap-0.5" : "gap-1", className),
|
|
212
|
-
...divProps,
|
|
213
|
-
children: [
|
|
214
|
-
visibleRows.map((row, index) => {
|
|
215
|
-
const isInteractive = !!onProvinceClick;
|
|
216
|
-
const Tag = isInteractive ? "button" : "div";
|
|
217
|
-
const intensity = row.intensity;
|
|
218
|
-
const bgAlpha = 0.08 + intensity * 0.55;
|
|
219
|
-
const widthPct = `${Math.max(2, intensity * 100)}%`;
|
|
220
|
-
return /* @__PURE__ */ jsxs(
|
|
221
|
-
Tag,
|
|
222
|
-
{
|
|
223
|
-
type: isInteractive ? "button" : void 0,
|
|
224
|
-
role: "listitem",
|
|
225
|
-
"data-slot": "iran-province-heat-row",
|
|
226
|
-
"data-province": row.slug,
|
|
227
|
-
"data-iso": row.iso,
|
|
228
|
-
"data-rank": index + 1,
|
|
229
|
-
onClick: isInteractive ? () => onProvinceClick({ slug: row.slug, iso: row.iso, value: row.value }) : void 0,
|
|
230
|
-
className: cn(
|
|
231
|
-
"group relative flex items-center gap-2 rounded-md ps-2 pe-2 text-start transition-colors",
|
|
232
|
-
density === "compact" ? "h-7 text-xs" : "h-9 text-sm",
|
|
233
|
-
isInteractive && "hover:bg-overlay-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand",
|
|
234
|
-
!isInteractive && "cursor-default"
|
|
235
|
-
),
|
|
236
|
-
"aria-label": `${row.label}: ${formatValue(row.value)}`,
|
|
237
|
-
children: [
|
|
238
|
-
/* @__PURE__ */ jsx(
|
|
239
|
-
"div",
|
|
240
|
-
{
|
|
241
|
-
"data-slot": "iran-province-heat-bar",
|
|
242
|
-
"aria-hidden": "true",
|
|
243
|
-
className: "absolute inset-y-0 inset-inline-start-0 rounded-md transition-[width] duration-300",
|
|
244
|
-
style: {
|
|
245
|
-
width: widthPct,
|
|
246
|
-
backgroundColor: `hsl(var(${cssVar}) / ${bgAlpha.toFixed(3)})`
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
),
|
|
250
|
-
showRank && /* @__PURE__ */ jsx(
|
|
251
|
-
"span",
|
|
252
|
-
{
|
|
253
|
-
"data-slot": "iran-province-heat-rank",
|
|
254
|
-
className: "relative z-[1] inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-default px-1 text-[10px] font-medium tabular-nums text-foreground-light",
|
|
255
|
-
children: convertToLocalNumbers(index + 1, locale)
|
|
256
|
-
}
|
|
257
|
-
),
|
|
258
|
-
/* @__PURE__ */ jsx(
|
|
259
|
-
"span",
|
|
260
|
-
{
|
|
261
|
-
"data-slot": "iran-province-heat-label",
|
|
262
|
-
className: "relative z-[1] flex-1 truncate font-medium text-foreground",
|
|
263
|
-
children: row.label
|
|
264
|
-
}
|
|
265
|
-
),
|
|
266
|
-
showValue && /* @__PURE__ */ jsx("span", { "data-slot": "iran-province-heat-value", className: "relative z-[1] tabular-nums text-foreground-light", children: formatValue(row.value) })
|
|
267
|
-
]
|
|
268
|
-
},
|
|
269
|
-
row.slug
|
|
270
|
-
);
|
|
271
|
-
}),
|
|
272
|
-
hiddenCount > 0 && /* @__PURE__ */ jsx(
|
|
273
|
-
"div",
|
|
274
|
-
{
|
|
275
|
-
"data-slot": "iran-province-heat-overflow",
|
|
276
|
-
className: cn(
|
|
277
|
-
"flex items-center justify-center rounded-md text-foreground-muted",
|
|
278
|
-
density === "compact" ? "h-7 text-[11px]" : "h-9 text-xs"
|
|
279
|
-
),
|
|
280
|
-
children: strings.more(convertToLocalNumbers(hiddenCount, locale))
|
|
281
|
-
}
|
|
282
|
-
)
|
|
283
|
-
]
|
|
284
|
-
}
|
|
285
|
-
);
|
|
286
|
-
});
|
|
287
|
-
IranProvinceHeat.displayName = "IranProvinceHeat";
|
|
288
|
-
|
|
289
|
-
export { IRAN_PROVINCES, IranProvinceHeat, findProvince, getProvinceLabel };
|
|
290
|
-
//# sourceMappingURL=chunk-L2L5CKC2.js.map
|
|
291
|
-
//# sourceMappingURL=chunk-L2L5CKC2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/iran-provinces.ts","../src/components/ui/iran-province-heat.tsx"],"names":["IranProvinceHeat"],"mappings":"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","file":"chunk-L2L5CKC2.js","sourcesContent":["/**\n * Iran's 31 provinces with trilingual labels and ISO 3166-2 codes.\n *\n * Use as a stable identifier source for `IranProvinceHeat`, `RegionPicker`,\n * and any public-opinion dashboard scoped by استان. The slug (`code`) is the\n * canonical key — never rely on label string equality, since labels are\n * locale-dependent and may evolve.\n *\n * Codes follow ISO 3166-2:IR (e.g. 'IR-07' for Tehran). The slug is the\n * lowercased, hyphenated English name without diacritics, suitable for URLs\n * and CSS selectors. Use `getProvinceLabel(code, locale)` to resolve a label.\n */\n\nimport type { SupportedLocale } from './utils'\n\nexport interface IranProvince {\n /** Stable URL-safe slug. The canonical key for province lookups. */\n slug: string\n /** ISO 3166-2:IR code (e.g. 'IR-07'). */\n iso: string\n /** Trilingual labels — fa is the canonical/native form. */\n labels: Record<SupportedLocale, string>\n}\n\nexport const IRAN_PROVINCES: readonly IranProvince[] = [\n {\n slug: 'east-azerbaijan',\n iso: 'IR-01',\n labels: { fa: 'آذربایجان شرقی', ar: 'أذربيجان الشرقية', en: 'East Azerbaijan' },\n },\n {\n slug: 'west-azerbaijan',\n iso: 'IR-02',\n labels: { fa: 'آذربایجان غربی', ar: 'أذربيجان الغربية', en: 'West Azerbaijan' },\n },\n { slug: 'ardabil', iso: 'IR-03', labels: { fa: 'اردبیل', ar: 'أردبيل', en: 'Ardabil' } },\n { slug: 'isfahan', iso: 'IR-04', labels: { fa: 'اصفهان', ar: 'أصفهان', en: 'Isfahan' } },\n { slug: 'ilam', iso: 'IR-05', labels: { fa: 'ایلام', ar: 'إيلام', en: 'Ilam' } },\n { slug: 'bushehr', iso: 'IR-06', labels: { fa: 'بوشهر', ar: 'بوشهر', en: 'Bushehr' } },\n { slug: 'tehran', iso: 'IR-07', labels: { fa: 'تهران', ar: 'طهران', en: 'Tehran' } },\n {\n slug: 'chaharmahal-bakhtiari',\n iso: 'IR-08',\n labels: { fa: 'چهارمحال و بختیاری', ar: 'تشهارمحال وبختياري', en: 'Chaharmahal and Bakhtiari' },\n },\n { slug: 'razavi-khorasan', iso: 'IR-09', labels: { fa: 'خراسان رضوی', ar: 'خراسان رضوي', en: 'Razavi Khorasan' } },\n { slug: 'khuzestan', iso: 'IR-10', labels: { fa: 'خوزستان', ar: 'خوزستان', en: 'Khuzestan' } },\n { slug: 'zanjan', iso: 'IR-11', labels: { fa: 'زنجان', ar: 'زنجان', en: 'Zanjan' } },\n { slug: 'semnan', iso: 'IR-12', labels: { fa: 'سمنان', ar: 'سمنان', en: 'Semnan' } },\n {\n slug: 'sistan-baluchestan',\n iso: 'IR-13',\n labels: { fa: 'سیستان و بلوچستان', ar: 'سيستان وبلوشستان', en: 'Sistan and Baluchestan' },\n },\n { slug: 'fars', iso: 'IR-14', labels: { fa: 'فارس', ar: 'فارس', en: 'Fars' } },\n { slug: 'kerman', iso: 'IR-15', labels: { fa: 'کرمان', ar: 'كرمان', en: 'Kerman' } },\n { slug: 'kurdistan', iso: 'IR-16', labels: { fa: 'کردستان', ar: 'كردستان', en: 'Kurdistan' } },\n { slug: 'kermanshah', iso: 'IR-17', labels: { fa: 'کرمانشاه', ar: 'كرمانشاه', en: 'Kermanshah' } },\n {\n slug: 'kohgiluyeh-boyer-ahmad',\n iso: 'IR-18',\n labels: { fa: 'کهگیلویه و بویراحمد', ar: 'كهغيلوية وبوير أحمد', en: 'Kohgiluyeh and Boyer-Ahmad' },\n },\n { slug: 'gilan', iso: 'IR-19', labels: { fa: 'گیلان', ar: 'جيلان', en: 'Gilan' } },\n { slug: 'lorestan', iso: 'IR-20', labels: { fa: 'لرستان', ar: 'لرستان', en: 'Lorestan' } },\n { slug: 'mazandaran', iso: 'IR-21', labels: { fa: 'مازندران', ar: 'مازندران', en: 'Mazandaran' } },\n { slug: 'markazi', iso: 'IR-22', labels: { fa: 'مرکزی', ar: 'مركزي', en: 'Markazi' } },\n { slug: 'hormozgan', iso: 'IR-23', labels: { fa: 'هرمزگان', ar: 'هرمزغان', en: 'Hormozgan' } },\n { slug: 'hamadan', iso: 'IR-24', labels: { fa: 'همدان', ar: 'همدان', en: 'Hamadan' } },\n { slug: 'yazd', iso: 'IR-25', labels: { fa: 'یزد', ar: 'يزد', en: 'Yazd' } },\n { slug: 'qom', iso: 'IR-26', labels: { fa: 'قم', ar: 'قم', en: 'Qom' } },\n { slug: 'golestan', iso: 'IR-27', labels: { fa: 'گلستان', ar: 'غولستان', en: 'Golestan' } },\n { slug: 'qazvin', iso: 'IR-28', labels: { fa: 'قزوین', ar: 'قزوين', en: 'Qazvin' } },\n { slug: 'north-khorasan', iso: 'IR-29', labels: { fa: 'خراسان شمالی', ar: 'خراسان الشمالية', en: 'North Khorasan' } },\n { slug: 'south-khorasan', iso: 'IR-30', labels: { fa: 'خراسان جنوبی', ar: 'خراسان الجنوبية', en: 'South Khorasan' } },\n { slug: 'alborz', iso: 'IR-31', labels: { fa: 'البرز', ar: 'البرز', en: 'Alborz' } },\n] as const\n\nexport type IranProvinceSlug = (typeof IRAN_PROVINCES)[number]['slug']\n\nconst SLUG_INDEX = new Map(IRAN_PROVINCES.map((p) => [p.slug, p]))\nconst ISO_INDEX = new Map(IRAN_PROVINCES.map((p) => [p.iso, p]))\n\n/** Look up a province by slug or ISO code. Returns undefined for unknown codes. */\nexport function findProvince(codeOrSlug: string): IranProvince | undefined {\n return SLUG_INDEX.get(codeOrSlug) ?? ISO_INDEX.get(codeOrSlug)\n}\n\n/**\n * Resolve the locale-appropriate label for a province slug or ISO code.\n * Falls back to fa for unknown locales and to the slug itself for unknown\n * provinces (so the row still renders something instead of crashing).\n */\nexport function getProvinceLabel(codeOrSlug: string, locale: SupportedLocale = 'fa'): string {\n const p = findProvince(codeOrSlug)\n if (!p) return codeOrSlug\n return p.labels[locale] ?? p.labels.fa\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn, convertToLocalNumbers, formatLargeNumber, type SupportedLocale } from '@/lib/utils'\nimport { findProvince, IRAN_PROVINCES } from '@/lib/iran-provinces'\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface IranProvinceCell {\n /** Province slug or ISO 3166-2:IR code (e.g. 'tehran' or 'IR-07'). */\n code: string\n /** Numeric value to compare across provinces (count, score, percentage…). */\n value: number\n}\n\nexport type IranProvinceHeatScale =\n | 'brand'\n | 'sentiment-positive'\n | 'sentiment-negative'\n | 'destructive'\n | 'warning'\n | 'severity-urgent'\n | 'severity-high'\n | 'flow-pro-gov'\n | 'flow-internal-critic'\n\nexport interface IranProvinceHeatProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Either an array of `{code, value}` cells, or a record map. Provinces not\n * in the dataset render with value 0 unless `hideMissing` is true. Cells\n * with unknown codes are skipped (and warned via `onUnknownCode` if set).\n */\n data: IranProvinceCell[] | Record<string, number>\n /**\n * Color token to use for the heat bars. Bars within the dataset are tinted\n * with progressively higher alpha based on `value / max`.\n * @default 'brand'\n */\n scale?: IranProvinceHeatScale\n /** Sort order for the rows. @default 'value-desc' */\n sort?: 'value-desc' | 'value-asc' | 'name'\n /**\n * Show only top-N rows (after sorting). When set, a \"+N more\" row collapses\n * the rest. Use 0 to show all 31 — that's the default.\n */\n topN?: number\n /** Display rank (۱، ۲، ۳، …) at the start of each row. @default false */\n showRank?: boolean\n /** Inline numeric value on each row. @default true */\n showValue?: boolean\n /** Hide rows with value 0 (or missing from dataset). @default false */\n hideMissing?: boolean\n /** Compact rows (28px) vs comfortable (36px). @default 'comfortable' */\n density?: 'compact' | 'comfortable'\n /**\n * Suffix on the inline value (e.g. ' نظر', ' %').\n * Useful when consumers don't want to write a custom valueFormatter.\n */\n valueSuffix?: string\n /** Custom value formatter; overrides the locale-aware default. */\n valueFormatter?: (value: number) => string\n /** Click handler — receives slug + ISO + value. Optional. */\n onProvinceClick?: (province: { slug: string; iso: string; value: number }) => void\n /** Called once per unknown code in `data`, useful for telemetry. */\n onUnknownCode?: (code: string) => void\n /** Locale for labels + digit formatting. @default 'fa' */\n locale?: SupportedLocale\n /** Loading skeleton while data fetches. */\n isLoading?: boolean\n /** Empty-state node when `data` is empty (or all-zero with hideMissing). */\n emptyState?: React.ReactNode\n}\n\n/* -------------------------------------------------------------------------- */\n/* Token mapping */\n/* -------------------------------------------------------------------------- */\n\nconst SCALE_TO_VAR: Record<IranProvinceHeatScale, string> = {\n brand: '--brand-default',\n 'sentiment-positive': '--sentiment-positive',\n 'sentiment-negative': '--sentiment-negative',\n destructive: '--destructive-default',\n warning: '--warning-default',\n 'severity-urgent': '--severity-urgent',\n 'severity-high': '--severity-high',\n 'flow-pro-gov': '--flow-pro-gov',\n 'flow-internal-critic': '--flow-internal-critic',\n}\n\nconst LOCALE_STRINGS: Record<SupportedLocale, { empty: string; more: (n: string) => string; loading: string }> = {\n fa: {\n empty: 'دادهای برای استانها در دسترس نیست.',\n more: (n) => `+${n} استان دیگر`,\n loading: 'در حال بارگذاری',\n },\n ar: {\n empty: 'لا توجد بيانات للمحافظات.',\n more: (n) => `+${n} محافظة أخرى`,\n loading: 'جارٍ التحميل',\n },\n en: {\n empty: 'No province data available.',\n more: (n) => `+${n} more`,\n loading: 'Loading',\n },\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\ninterface ResolvedRow {\n slug: string\n iso: string\n label: string\n value: number\n intensity: number\n}\n\nconst IranProvinceHeat = React.forwardRef<HTMLDivElement, IranProvinceHeatProps>(function IranProvinceHeat(\n {\n data,\n scale = 'brand',\n sort = 'value-desc',\n topN = 0,\n showRank = false,\n showValue = true,\n hideMissing = false,\n density = 'comfortable',\n valueSuffix,\n valueFormatter,\n onProvinceClick,\n onUnknownCode,\n locale = 'fa',\n isLoading = false,\n emptyState,\n className,\n ...divProps\n },\n ref\n) {\n const strings = LOCALE_STRINGS[locale] ?? LOCALE_STRINGS.fa\n const cssVar = SCALE_TO_VAR[scale]\n\n const rows = React.useMemo<ResolvedRow[]>(() => {\n if (isLoading) return []\n\n const cells = Array.isArray(data) ? data : Object.entries(data).map(([code, value]) => ({ code, value }))\n\n // Resolve provinces, drop unknown (with optional callback for telemetry)\n const valueByProvinceSlug = new Map<string, number>()\n for (const cell of cells) {\n const province = findProvince(cell.code)\n if (!province) {\n onUnknownCode?.(cell.code)\n continue\n }\n // If duplicates exist for the same province, the later one wins —\n // consumers normalize upstream if needed.\n valueByProvinceSlug.set(province.slug, cell.value)\n }\n\n // Build rows for ALL 31 provinces unless hideMissing\n const candidates: ResolvedRow[] = []\n for (const province of IRAN_PROVINCES) {\n const value = valueByProvinceSlug.get(province.slug) ?? 0\n if (hideMissing && value === 0) continue\n candidates.push({\n slug: province.slug,\n iso: province.iso,\n label: province.labels[locale] ?? province.labels.fa,\n value,\n intensity: 0, // filled below\n })\n }\n\n if (candidates.length === 0) return []\n\n // Compute intensity = value / max (clamped to [0,1]); when all zero, all intensities are 0\n const max = candidates.reduce((m, r) => Math.max(m, r.value), 0)\n if (max > 0) {\n for (const row of candidates) row.intensity = Math.min(1, Math.max(0, row.value / max))\n }\n\n // Sort\n if (sort === 'value-desc') candidates.sort((a, b) => b.value - a.value)\n else if (sort === 'value-asc') candidates.sort((a, b) => a.value - b.value)\n else candidates.sort((a, b) => a.label.localeCompare(b.label, locale === 'en' ? 'en' : 'fa'))\n\n return candidates\n }, [data, hideMissing, isLoading, locale, onUnknownCode, sort])\n\n const visibleRows = topN > 0 ? rows.slice(0, topN) : rows\n const hiddenCount = rows.length - visibleRows.length\n\n const formatValue = React.useCallback(\n (value: number) => {\n if (valueFormatter) return valueFormatter(value)\n const base = formatLargeNumber(value, locale)\n return valueSuffix ? `${base}${valueSuffix}` : base\n },\n [locale, valueFormatter, valueSuffix]\n )\n\n /* --------------------------------- Render -------------------------------- */\n\n if (isLoading) {\n return (\n <div\n ref={ref}\n data-slot=\"iran-province-heat\"\n data-state=\"loading\"\n role=\"status\"\n aria-label={strings.loading}\n className={cn('flex flex-col gap-1.5 w-full', className)}\n {...divProps}\n >\n {Array.from({ length: 6 }).map((_, i) => (\n <div\n key={i}\n data-slot=\"iran-province-heat-skeleton-row\"\n className={cn('flex items-center gap-2 animate-pulse', density === 'compact' ? 'h-7' : 'h-9')}\n >\n <div className=\"h-3.5 w-24 rounded bg-overlay-hover\" />\n <div className=\"h-2.5 flex-1 rounded bg-overlay-hover\" />\n <div className=\"h-3.5 w-10 rounded bg-overlay-hover\" />\n </div>\n ))}\n </div>\n )\n }\n\n if (rows.length === 0) {\n return (\n <div\n ref={ref}\n data-slot=\"iran-province-heat\"\n data-state=\"empty\"\n className={cn('flex items-center justify-center text-sm text-foreground-muted py-8', className)}\n {...divProps}\n >\n {emptyState ?? strings.empty}\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"iran-province-heat\"\n data-density={density}\n data-scale={scale}\n role=\"list\"\n className={cn('flex flex-col w-full', density === 'compact' ? 'gap-0.5' : 'gap-1', className)}\n {...divProps}\n >\n {visibleRows.map((row, index) => {\n const isInteractive = !!onProvinceClick\n const Tag = isInteractive ? 'button' : 'div'\n const intensity = row.intensity\n // The bar background scales alpha from 0.1 to 0.9; the bar itself\n // uses the full token color for a consistent darkest-shade signal.\n const bgAlpha = 0.08 + intensity * 0.55\n const widthPct = `${Math.max(2, intensity * 100)}%` // min 2% so a rendered row is visible\n\n return (\n <Tag\n key={row.slug}\n type={isInteractive ? 'button' : undefined}\n role=\"listitem\"\n data-slot=\"iran-province-heat-row\"\n data-province={row.slug}\n data-iso={row.iso}\n data-rank={index + 1}\n onClick={\n isInteractive ? () => onProvinceClick({ slug: row.slug, iso: row.iso, value: row.value }) : undefined\n }\n className={cn(\n 'group relative flex items-center gap-2 rounded-md ps-2 pe-2 text-start transition-colors',\n density === 'compact' ? 'h-7 text-xs' : 'h-9 text-sm',\n isInteractive &&\n 'hover:bg-overlay-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand',\n !isInteractive && 'cursor-default'\n )}\n aria-label={`${row.label}: ${formatValue(row.value)}`}\n >\n {/* Heat bar — sits behind text, fills logical-start to right */}\n <div\n data-slot=\"iran-province-heat-bar\"\n aria-hidden=\"true\"\n className=\"absolute inset-y-0 inset-inline-start-0 rounded-md transition-[width] duration-300\"\n style={{\n width: widthPct,\n backgroundColor: `hsl(var(${cssVar}) / ${bgAlpha.toFixed(3)})`,\n }}\n />\n\n {/* Foreground content */}\n {showRank && (\n <span\n data-slot=\"iran-province-heat-rank\"\n className=\"relative z-[1] inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-default px-1 text-[10px] font-medium tabular-nums text-foreground-light\"\n >\n {convertToLocalNumbers(index + 1, locale)}\n </span>\n )}\n\n <span\n data-slot=\"iran-province-heat-label\"\n className=\"relative z-[1] flex-1 truncate font-medium text-foreground\"\n >\n {row.label}\n </span>\n\n {showValue && (\n <span data-slot=\"iran-province-heat-value\" className=\"relative z-[1] tabular-nums text-foreground-light\">\n {formatValue(row.value)}\n </span>\n )}\n </Tag>\n )\n })}\n\n {hiddenCount > 0 && (\n <div\n data-slot=\"iran-province-heat-overflow\"\n className={cn(\n 'flex items-center justify-center rounded-md text-foreground-muted',\n density === 'compact' ? 'h-7 text-[11px]' : 'h-9 text-xs'\n )}\n >\n {strings.more(convertToLocalNumbers(hiddenCount, locale))}\n </div>\n )}\n </div>\n )\n})\n\nIranProvinceHeat.displayName = 'IranProvinceHeat'\n\nexport { IranProvinceHeat }\n"]}
|
package/dist/chunk-M5CHZ5BA.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { cn } from './chunk-4SVQNEVH.js';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { cva } from 'class-variance-authority';
|
|
4
|
-
import { jsx } from 'react/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
var cardVariants = cva(
|
|
7
|
-
// A Card is a visual container, not a focusable surface. Do not apply
|
|
8
|
-
// focus-within rings to the base — that bleeds the ring of whatever
|
|
9
|
-
// input/button inside has focus onto the whole card. The `interactive`
|
|
10
|
-
// variant below opts into focus-visible explicitly because it IS clickable.
|
|
11
|
-
"overflow-hidden rounded-lg text-card-foreground transition-all duration-200",
|
|
12
|
-
{
|
|
13
|
-
variants: {
|
|
14
|
-
variant: {
|
|
15
|
-
default: "border bg-surface-100 shadow-sm",
|
|
16
|
-
outlined: "border-2 border-border bg-transparent",
|
|
17
|
-
elevated: "bg-surface-100 shadow-card hover:shadow-lg",
|
|
18
|
-
interactive: "border bg-surface-100 shadow-sm hover:-translate-y-0.5 hover:shadow-lg active:translate-y-0 active:shadow-md cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
19
|
-
glass: "border border-border/50 bg-background/80 backdrop-blur-sm shadow-sm"
|
|
20
|
-
},
|
|
21
|
-
size: {
|
|
22
|
-
sm: "",
|
|
23
|
-
md: "",
|
|
24
|
-
lg: ""
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
defaultVariants: {
|
|
28
|
-
variant: "default",
|
|
29
|
-
size: "md"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
var Card = React.forwardRef(({ className, variant, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
ref,
|
|
37
|
-
"data-slot": "card",
|
|
38
|
-
"data-size": size,
|
|
39
|
-
className: cn(cardVariants({ variant, size }), className),
|
|
40
|
-
...props
|
|
41
|
-
}
|
|
42
|
-
));
|
|
43
|
-
Card.displayName = "Card";
|
|
44
|
-
var CardHeader = React.forwardRef(
|
|
45
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
46
|
-
"div",
|
|
47
|
-
{
|
|
48
|
-
ref,
|
|
49
|
-
"data-slot": "card-header",
|
|
50
|
-
className: cn(
|
|
51
|
-
"flex flex-col space-y-1.5 border-b",
|
|
52
|
-
// Size variants inherited from Card
|
|
53
|
-
"[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4",
|
|
54
|
-
"[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6",
|
|
55
|
-
"[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8",
|
|
56
|
-
className
|
|
57
|
-
),
|
|
58
|
-
...props
|
|
59
|
-
}
|
|
60
|
-
)
|
|
61
|
-
);
|
|
62
|
-
CardHeader.displayName = "CardHeader";
|
|
63
|
-
var CardTitle = React.forwardRef(
|
|
64
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
65
|
-
"h3",
|
|
66
|
-
{
|
|
67
|
-
ref,
|
|
68
|
-
"data-slot": "card-title",
|
|
69
|
-
className: cn(
|
|
70
|
-
"font-semibold leading-tight tracking-tight",
|
|
71
|
-
"[[data-size=sm]_&]:text-sm",
|
|
72
|
-
"[[data-size=md]_&]:text-base",
|
|
73
|
-
"[[data-size=lg]_&]:text-lg",
|
|
74
|
-
className
|
|
75
|
-
),
|
|
76
|
-
...props
|
|
77
|
-
}
|
|
78
|
-
)
|
|
79
|
-
);
|
|
80
|
-
CardTitle.displayName = "CardTitle";
|
|
81
|
-
var CardDescription = React.forwardRef(
|
|
82
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, "data-slot": "card-description", className: cn("text-sm text-foreground-muted", className), ...props })
|
|
83
|
-
);
|
|
84
|
-
CardDescription.displayName = "CardDescription";
|
|
85
|
-
var CardContent = React.forwardRef(
|
|
86
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
87
|
-
"div",
|
|
88
|
-
{
|
|
89
|
-
ref,
|
|
90
|
-
"data-slot": "card-content",
|
|
91
|
-
className: cn(
|
|
92
|
-
"border-b last:border-none",
|
|
93
|
-
"[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4",
|
|
94
|
-
"[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6",
|
|
95
|
-
"[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8",
|
|
96
|
-
className
|
|
97
|
-
),
|
|
98
|
-
...props
|
|
99
|
-
}
|
|
100
|
-
)
|
|
101
|
-
);
|
|
102
|
-
CardContent.displayName = "CardContent";
|
|
103
|
-
var CardFooter = React.forwardRef(
|
|
104
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
105
|
-
"div",
|
|
106
|
-
{
|
|
107
|
-
ref,
|
|
108
|
-
"data-slot": "card-footer",
|
|
109
|
-
className: cn(
|
|
110
|
-
"flex items-center",
|
|
111
|
-
"[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4",
|
|
112
|
-
"[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6",
|
|
113
|
-
"[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8",
|
|
114
|
-
className
|
|
115
|
-
),
|
|
116
|
-
...props
|
|
117
|
-
}
|
|
118
|
-
)
|
|
119
|
-
);
|
|
120
|
-
CardFooter.displayName = "CardFooter";
|
|
121
|
-
|
|
122
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardVariants };
|
|
123
|
-
//# sourceMappingURL=chunk-M5CHZ5BA.js.map
|
|
124
|
-
//# sourceMappingURL=chunk-M5CHZ5BA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/card.tsx"],"names":[],"mappings":"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","file":"chunk-M5CHZ5BA.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\n/* -------------------------------------------------------------------------- */\n/* Card */\n/* -------------------------------------------------------------------------- */\n\nconst cardVariants = cva(\n // A Card is a visual container, not a focusable surface. Do not apply\n // focus-within rings to the base — that bleeds the ring of whatever\n // input/button inside has focus onto the whole card. The `interactive`\n // variant below opts into focus-visible explicitly because it IS clickable.\n 'overflow-hidden rounded-lg text-card-foreground transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border bg-surface-100 shadow-sm',\n outlined: 'border-2 border-border bg-transparent',\n elevated: 'bg-surface-100 shadow-card hover:shadow-lg',\n interactive:\n 'border bg-surface-100 shadow-sm hover:-translate-y-0.5 hover:shadow-lg active:translate-y-0 active:shadow-md cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n glass: 'border border-border/50 bg-background/80 backdrop-blur-sm shadow-sm',\n },\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, variant, size = 'md', ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card\"\n data-size={size}\n className={cn(cardVariants({ variant, size }), className)}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\n/* -------------------------------------------------------------------------- */\n/* CardHeader */\n/* -------------------------------------------------------------------------- */\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-header\"\n className={cn(\n 'flex flex-col space-y-1.5 border-b',\n // Size variants inherited from Card\n '[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4',\n '[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6',\n '[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8',\n className\n )}\n {...props}\n />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\n/* -------------------------------------------------------------------------- */\n/* CardTitle */\n/* -------------------------------------------------------------------------- */\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n data-slot=\"card-title\"\n className={cn(\n 'font-semibold leading-tight tracking-tight',\n '[[data-size=sm]_&]:text-sm',\n '[[data-size=md]_&]:text-base',\n '[[data-size=lg]_&]:text-lg',\n className\n )}\n {...props}\n />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\n/* -------------------------------------------------------------------------- */\n/* CardDescription */\n/* -------------------------------------------------------------------------- */\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} data-slot=\"card-description\" className={cn('text-sm text-foreground-muted', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\n/* -------------------------------------------------------------------------- */\n/* CardContent */\n/* -------------------------------------------------------------------------- */\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-content\"\n className={cn(\n 'border-b last:border-none',\n '[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4',\n '[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6',\n '[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8',\n className\n )}\n {...props}\n />\n )\n)\nCardContent.displayName = 'CardContent'\n\n/* -------------------------------------------------------------------------- */\n/* CardFooter */\n/* -------------------------------------------------------------------------- */\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-footer\"\n className={cn(\n 'flex items-center',\n '[[data-size=sm]_&]:py-3 [[data-size=sm]_&]:px-4',\n '[[data-size=md]_&]:py-4 [[data-size=md]_&]:px-6',\n '[[data-size=lg]_&]:py-5 [[data-size=lg]_&]:px-8',\n className\n )}\n {...props}\n />\n )\n)\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, cardVariants, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\nexport type { CardProps }\n"]}
|
package/dist/chunk-MEK4RSGC.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { statusLabels } from './chunk-CV3N3HVK.js';
|
|
2
|
-
import { cn } from './chunk-4SVQNEVH.js';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
var SIZE_CLASSES = {
|
|
7
|
-
sm: { badge: "h-6 text-xs px-2 gap-1.5", dot: "size-1.5" },
|
|
8
|
-
md: { badge: "h-7 text-sm px-2.5 gap-2", dot: "size-2" }
|
|
9
|
-
};
|
|
10
|
-
function tokenVar(status) {
|
|
11
|
-
return `--status-${status}`;
|
|
12
|
-
}
|
|
13
|
-
var StatusBadge = React.forwardRef(
|
|
14
|
-
({ className, status, size = "md", showLabel = true, locale = "fa", animated, ...props }, ref) => {
|
|
15
|
-
const label = statusLabels[locale]?.[status] ?? statusLabels.fa[status];
|
|
16
|
-
const shouldPulse = animated ?? status === "critical";
|
|
17
|
-
const token = tokenVar(status);
|
|
18
|
-
return /* @__PURE__ */ jsxs(
|
|
19
|
-
"span",
|
|
20
|
-
{
|
|
21
|
-
ref,
|
|
22
|
-
"data-slot": "status-badge",
|
|
23
|
-
"data-status": status,
|
|
24
|
-
"aria-label": showLabel ? void 0 : label,
|
|
25
|
-
className: cn(
|
|
26
|
-
"inline-flex items-center rounded-full border font-medium transition-colors duration-150",
|
|
27
|
-
SIZE_CLASSES[size].badge,
|
|
28
|
-
className
|
|
29
|
-
),
|
|
30
|
-
style: {
|
|
31
|
-
backgroundColor: `hsl(var(${token}) / 0.1)`,
|
|
32
|
-
borderColor: `hsl(var(${token}) / 0.3)`,
|
|
33
|
-
color: `hsl(var(${token}))`
|
|
34
|
-
},
|
|
35
|
-
...props,
|
|
36
|
-
children: [
|
|
37
|
-
/* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
|
|
38
|
-
shouldPulse && /* @__PURE__ */ jsx(
|
|
39
|
-
"span",
|
|
40
|
-
{
|
|
41
|
-
className: "absolute inset-0 rounded-full animate-pulse-subtle",
|
|
42
|
-
style: { backgroundColor: `hsl(var(${token}) / 0.5)` },
|
|
43
|
-
"aria-hidden": "true"
|
|
44
|
-
}
|
|
45
|
-
),
|
|
46
|
-
/* @__PURE__ */ jsx(
|
|
47
|
-
"span",
|
|
48
|
-
{
|
|
49
|
-
className: cn("relative inline-block rounded-full", SIZE_CLASSES[size].dot),
|
|
50
|
-
style: { backgroundColor: `hsl(var(${token}))` },
|
|
51
|
-
"aria-hidden": "true"
|
|
52
|
-
}
|
|
53
|
-
)
|
|
54
|
-
] }),
|
|
55
|
-
showLabel && /* @__PURE__ */ jsx("span", { children: label })
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
);
|
|
61
|
-
StatusBadge.displayName = "StatusBadge";
|
|
62
|
-
|
|
63
|
-
export { StatusBadge };
|
|
64
|
-
//# sourceMappingURL=chunk-MEK4RSGC.js.map
|
|
65
|
-
//# sourceMappingURL=chunk-MEK4RSGC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/status-badge.tsx"],"names":[],"mappings":";;;;;AAuBA,IAAM,YAAA,GAAe;AAAA,EACnB,EAAA,EAAI,EAAE,KAAA,EAAO,0BAAA,EAA4B,KAAK,UAAA,EAAW;AAAA,EACzD,EAAA,EAAI,EAAE,KAAA,EAAO,0BAAA,EAA4B,KAAK,QAAA;AAChD,CAAA;AAEA,SAAS,SAAS,MAAA,EAA2B;AAC3C,EAAA,OAAO,YAAY,MAAM,CAAA,CAAA;AAC3B;AAEA,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,MAAA,EAAQ,OAAO,IAAA,EAAM,SAAA,GAAY,IAAA,EAAM,MAAA,GAAS,IAAA,EAAM,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChG,IAAA,MAAM,KAAA,GAAQ,aAAa,MAAM,CAAA,GAAI,MAAM,CAAA,IAAK,YAAA,CAAa,GAAG,MAAM,CAAA;AACtE,IAAA,MAAM,WAAA,GAAc,YAAY,MAAA,KAAW,UAAA;AAC3C,IAAA,MAAM,KAAA,GAAQ,SAAS,MAAM,CAAA;AAE7B,IAAA,uBACE,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,cAAA;AAAA,QACV,aAAA,EAAa,MAAA;AAAA,QACb,YAAA,EAAY,YAAY,MAAA,GAAY,KAAA;AAAA,QACpC,SAAA,EAAW,EAAA;AAAA,UACT,yFAAA;AAAA,UACA,YAAA,CAAa,IAAI,CAAA,CAAE,KAAA;AAAA,UACnB;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,eAAA,EAAiB,WAAW,KAAK,CAAA,QAAA,CAAA;AAAA,UACjC,WAAA,EAAa,WAAW,KAAK,CAAA,QAAA,CAAA;AAAA,UAC7B,KAAA,EAAO,WAAW,KAAK,CAAA,EAAA;AAAA,SACzB;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EACb,QAAA,EAAA;AAAA,YAAA,WAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,oDAAA;AAAA,gBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,CAAA,QAAA,EAAW,KAAK,CAAA,QAAA,CAAA,EAAW;AAAA,gBACrD,aAAA,EAAY;AAAA;AAAA,aACd;AAAA,4BAEF,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,WAAW,EAAA,CAAG,oCAAA,EAAsC,YAAA,CAAa,IAAI,EAAE,GAAG,CAAA;AAAA,gBAC1E,KAAA,EAAO,EAAE,eAAA,EAAiB,CAAA,QAAA,EAAW,KAAK,CAAA,EAAA,CAAA,EAAK;AAAA,gBAC/C,aAAA,EAAY;AAAA;AAAA;AACd,WAAA,EACF,CAAA;AAAA,UACC,SAAA,oBAAa,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,KAC7B;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-MEK4RSGC.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cn, type SupportedLocale } from '@/lib/utils'\nimport { statusLabels, type StatusKey } from '@/lib/i18n'\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Operational status */\n status: StatusKey\n /** Size */\n size?: 'sm' | 'md'\n /** Show text label (keeps aria-label when false) */\n showLabel?: boolean\n /** Locale */\n locale?: SupportedLocale\n /**\n * Explicitly enable/disable the pulse animation on the indicator dot.\n * Default: animated only for `status=\"critical\"`. Pair with\n * `prefers-reduced-motion` (already honoured globally in globals.css).\n */\n animated?: boolean\n}\n\nconst SIZE_CLASSES = {\n sm: { badge: 'h-6 text-xs px-2 gap-1.5', dot: 'size-1.5' },\n md: { badge: 'h-7 text-sm px-2.5 gap-2', dot: 'size-2' },\n} as const\n\nfunction tokenVar(status: StatusKey): string {\n return `--status-${status}`\n}\n\nconst StatusBadge = React.forwardRef<HTMLSpanElement, StatusBadgeProps>(\n ({ className, status, size = 'md', showLabel = true, locale = 'fa', animated, ...props }, ref) => {\n const label = statusLabels[locale]?.[status] ?? statusLabels.fa[status]\n const shouldPulse = animated ?? status === 'critical'\n const token = tokenVar(status)\n\n return (\n <span\n ref={ref}\n data-slot=\"status-badge\"\n data-status={status}\n aria-label={showLabel ? undefined : label}\n className={cn(\n 'inline-flex items-center rounded-full border font-medium transition-colors duration-150',\n SIZE_CLASSES[size].badge,\n className\n )}\n style={{\n backgroundColor: `hsl(var(${token}) / 0.1)`,\n borderColor: `hsl(var(${token}) / 0.3)`,\n color: `hsl(var(${token}))`,\n }}\n {...props}\n >\n <span className=\"relative inline-flex\">\n {shouldPulse && (\n <span\n className=\"absolute inset-0 rounded-full animate-pulse-subtle\"\n style={{ backgroundColor: `hsl(var(${token}) / 0.5)` }}\n aria-hidden=\"true\"\n />\n )}\n <span\n className={cn('relative inline-block rounded-full', SIZE_CLASSES[size].dot)}\n style={{ backgroundColor: `hsl(var(${token}))` }}\n aria-hidden=\"true\"\n />\n </span>\n {showLabel && <span>{label}</span>}\n </span>\n )\n }\n)\n\nStatusBadge.displayName = 'StatusBadge'\n\nexport { StatusBadge }\n"]}
|