@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.
Files changed (411) hide show
  1. package/dist/components/brand/parto-logo.cjs +130 -0
  2. package/dist/components/brand/parto-logo.cjs.map +1 -0
  3. package/dist/components/brand/parto-logo.d.cts +38 -0
  4. package/dist/components/brand/parto-logo.d.ts +38 -0
  5. package/dist/components/brand/parto-logo.js +108 -0
  6. package/dist/components/brand/parto-logo.js.map +1 -0
  7. package/dist/components/charts/PartoAreaChart.cjs +579 -7
  8. package/dist/components/charts/PartoAreaChart.cjs.map +1 -1
  9. package/dist/components/charts/PartoAreaChart.js +564 -4
  10. package/dist/components/charts/PartoAreaChart.js.map +1 -1
  11. package/dist/components/charts/PartoBarChart.cjs +616 -7
  12. package/dist/components/charts/PartoBarChart.cjs.map +1 -1
  13. package/dist/components/charts/PartoBarChart.js +601 -4
  14. package/dist/components/charts/PartoBarChart.js.map +1 -1
  15. package/dist/components/charts/PartoLineChart.cjs +584 -7
  16. package/dist/components/charts/PartoLineChart.cjs.map +1 -1
  17. package/dist/components/charts/PartoLineChart.js +569 -4
  18. package/dist/components/charts/PartoLineChart.js.map +1 -1
  19. package/dist/components/charts/PartoPieChart.cjs +566 -7
  20. package/dist/components/charts/PartoPieChart.cjs.map +1 -1
  21. package/dist/components/charts/PartoPieChart.js +551 -4
  22. package/dist/components/charts/PartoPieChart.js.map +1 -1
  23. package/dist/components/ui/accordion.cjs +97 -0
  24. package/dist/components/ui/accordion.cjs.map +1 -0
  25. package/dist/components/ui/accordion.d.cts +22 -0
  26. package/dist/components/ui/accordion.d.ts +22 -0
  27. package/dist/components/ui/accordion.js +72 -0
  28. package/dist/components/ui/accordion.js.map +1 -0
  29. package/dist/{chunk-MMC6M35Q.cjs → components/ui/alert-dialog.cjs} +216 -22
  30. package/dist/components/ui/alert-dialog.cjs.map +1 -0
  31. package/dist/components/ui/alert-dialog.d.cts +17 -0
  32. package/dist/components/ui/alert-dialog.d.ts +17 -0
  33. package/dist/{chunk-3QYYPPFJ.js → components/ui/alert-dialog.js} +175 -10
  34. package/dist/components/ui/alert-dialog.js.map +1 -0
  35. package/dist/components/ui/alert-rule-card.cjs +289 -8
  36. package/dist/components/ui/alert-rule-card.cjs.map +1 -1
  37. package/dist/components/ui/alert-rule-card.d.cts +1 -1
  38. package/dist/components/ui/alert-rule-card.d.ts +1 -1
  39. package/dist/components/ui/alert-rule-card.js +271 -4
  40. package/dist/components/ui/alert-rule-card.js.map +1 -1
  41. package/dist/components/ui/alert.cjs +81 -0
  42. package/dist/components/ui/alert.cjs.map +1 -0
  43. package/dist/components/ui/alert.d.cts +11 -0
  44. package/dist/components/ui/alert.d.ts +11 -0
  45. package/dist/components/ui/alert.js +57 -0
  46. package/dist/components/ui/alert.js.map +1 -0
  47. package/dist/components/ui/app-bar.cjs +67 -0
  48. package/dist/components/ui/app-bar.cjs.map +1 -0
  49. package/dist/components/ui/app-bar.d.cts +22 -0
  50. package/dist/components/ui/app-bar.d.ts +22 -0
  51. package/dist/components/ui/app-bar.js +44 -0
  52. package/dist/components/ui/app-bar.js.map +1 -0
  53. package/dist/components/ui/avatar.cjs +66 -14
  54. package/dist/components/ui/avatar.cjs.map +1 -1
  55. package/dist/components/ui/avatar.js +47 -2
  56. package/dist/components/ui/avatar.js.map +1 -1
  57. package/dist/components/ui/badge.cjs +113 -9
  58. package/dist/components/ui/badge.cjs.map +1 -1
  59. package/dist/components/ui/badge.d.cts +1 -1
  60. package/dist/components/ui/badge.d.ts +1 -1
  61. package/dist/components/ui/badge.js +96 -2
  62. package/dist/components/ui/badge.js.map +1 -1
  63. package/dist/components/ui/breadcrumb.cjs +100 -0
  64. package/dist/components/ui/breadcrumb.cjs.map +1 -0
  65. package/dist/components/ui/breadcrumb.d.cts +35 -0
  66. package/dist/components/ui/breadcrumb.d.ts +35 -0
  67. package/dist/components/ui/breadcrumb.js +92 -0
  68. package/dist/components/ui/breadcrumb.js.map +1 -0
  69. package/dist/components/ui/button.cjs +304 -11
  70. package/dist/components/ui/button.cjs.map +1 -1
  71. package/dist/components/ui/button.d.cts +3 -3
  72. package/dist/components/ui/button.d.ts +3 -3
  73. package/dist/components/ui/button.js +306 -3
  74. package/dist/components/ui/button.js.map +1 -1
  75. package/dist/components/ui/calendar.cjs +401 -8
  76. package/dist/components/ui/calendar.cjs.map +1 -1
  77. package/dist/components/ui/calendar.js +404 -4
  78. package/dist/components/ui/calendar.js.map +1 -1
  79. package/dist/components/ui/card.cjs +154 -30
  80. package/dist/components/ui/card.cjs.map +1 -1
  81. package/dist/components/ui/card.js +131 -2
  82. package/dist/components/ui/card.js.map +1 -1
  83. package/dist/{chunk-CAJKSTXX.cjs → components/ui/checkbox.cjs} +10 -5
  84. package/dist/components/ui/checkbox.cjs.map +1 -0
  85. package/dist/components/ui/checkbox.d.cts +6 -0
  86. package/dist/components/ui/checkbox.d.ts +6 -0
  87. package/dist/{chunk-5JJSRGJD.js → components/ui/checkbox.js} +9 -4
  88. package/dist/components/ui/checkbox.js.map +1 -0
  89. package/dist/components/ui/concept-card.cjs +728 -11
  90. package/dist/components/ui/concept-card.cjs.map +1 -1
  91. package/dist/components/ui/concept-card.d.cts +2 -2
  92. package/dist/components/ui/concept-card.d.ts +2 -2
  93. package/dist/components/ui/concept-card.js +710 -7
  94. package/dist/components/ui/concept-card.js.map +1 -1
  95. package/dist/components/ui/data-table.cjs +1553 -10
  96. package/dist/components/ui/data-table.cjs.map +1 -1
  97. package/dist/components/ui/data-table.js +1537 -7
  98. package/dist/components/ui/data-table.js.map +1 -1
  99. package/dist/components/ui/dialog.cjs +119 -42
  100. package/dist/components/ui/dialog.cjs.map +1 -1
  101. package/dist/components/ui/dialog.js +92 -2
  102. package/dist/components/ui/dialog.js.map +1 -1
  103. package/dist/components/ui/dropdown-menu.cjs +268 -0
  104. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  105. package/dist/components/ui/dropdown-menu.d.cts +73 -0
  106. package/dist/components/ui/dropdown-menu.d.ts +73 -0
  107. package/dist/components/ui/dropdown-menu.js +232 -0
  108. package/dist/components/ui/dropdown-menu.js.map +1 -0
  109. package/dist/components/ui/filter-provider.cjs +70 -13
  110. package/dist/components/ui/filter-provider.cjs.map +1 -1
  111. package/dist/components/ui/filter-provider.js +51 -1
  112. package/dist/components/ui/filter-provider.js.map +1 -1
  113. package/dist/components/ui/form.cjs +169 -0
  114. package/dist/components/ui/form.cjs.map +1 -0
  115. package/dist/components/ui/form.d.cts +46 -0
  116. package/dist/components/ui/form.d.ts +46 -0
  117. package/dist/components/ui/form.js +139 -0
  118. package/dist/components/ui/form.js.map +1 -0
  119. package/dist/components/ui/input.cjs +135 -15
  120. package/dist/components/ui/input.cjs.map +1 -1
  121. package/dist/components/ui/input.d.cts +15 -0
  122. package/dist/components/ui/input.d.ts +15 -0
  123. package/dist/components/ui/input.js +116 -3
  124. package/dist/components/ui/input.js.map +1 -1
  125. package/dist/components/ui/iran-province-heat.cjs +328 -5
  126. package/dist/components/ui/iran-province-heat.cjs.map +1 -1
  127. package/dist/components/ui/iran-province-heat.js +312 -2
  128. package/dist/components/ui/iran-province-heat.js.map +1 -1
  129. package/dist/components/ui/label.cjs +52 -0
  130. package/dist/components/ui/label.cjs.map +1 -0
  131. package/dist/components/ui/label.d.cts +10 -0
  132. package/dist/components/ui/label.d.ts +10 -0
  133. package/dist/components/ui/label.js +30 -0
  134. package/dist/components/ui/label.js.map +1 -0
  135. package/dist/components/ui/page-card.cjs +627 -8
  136. package/dist/components/ui/page-card.cjs.map +1 -1
  137. package/dist/components/ui/page-card.d.cts +3 -2
  138. package/dist/components/ui/page-card.d.ts +3 -2
  139. package/dist/components/ui/page-card.js +611 -5
  140. package/dist/components/ui/page-card.js.map +1 -1
  141. package/dist/components/ui/page-header.cjs +299 -0
  142. package/dist/components/ui/page-header.cjs.map +1 -0
  143. package/dist/components/ui/page-header.d.cts +21 -0
  144. package/dist/components/ui/page-header.d.ts +21 -0
  145. package/dist/components/ui/page-header.js +277 -0
  146. package/dist/components/ui/page-header.js.map +1 -0
  147. package/dist/components/ui/password-input.cjs +168 -0
  148. package/dist/components/ui/password-input.cjs.map +1 -0
  149. package/dist/components/ui/password-input.d.cts +48 -0
  150. package/dist/components/ui/password-input.d.ts +48 -0
  151. package/dist/components/ui/password-input.js +146 -0
  152. package/dist/components/ui/password-input.js.map +1 -0
  153. package/dist/components/ui/popover.cjs +51 -18
  154. package/dist/components/ui/popover.cjs.map +1 -1
  155. package/dist/components/ui/popover.js +30 -2
  156. package/dist/components/ui/popover.js.map +1 -1
  157. package/dist/components/ui/progress.cjs +95 -0
  158. package/dist/components/ui/progress.cjs.map +1 -0
  159. package/dist/components/ui/progress.d.cts +18 -0
  160. package/dist/components/ui/progress.d.ts +18 -0
  161. package/dist/components/ui/progress.js +72 -0
  162. package/dist/components/ui/progress.js.map +1 -0
  163. package/dist/components/ui/radio-card.cjs +84 -0
  164. package/dist/components/ui/radio-card.cjs.map +1 -0
  165. package/dist/components/ui/radio-card.d.cts +12 -0
  166. package/dist/components/ui/radio-card.d.ts +12 -0
  167. package/dist/components/ui/radio-card.js +58 -0
  168. package/dist/components/ui/radio-card.js.map +1 -0
  169. package/dist/components/ui/radio-group.cjs +62 -0
  170. package/dist/components/ui/radio-group.cjs.map +1 -0
  171. package/dist/components/ui/radio-group.d.cts +7 -0
  172. package/dist/components/ui/radio-group.d.ts +7 -0
  173. package/dist/components/ui/radio-group.js +38 -0
  174. package/dist/components/ui/radio-group.js.map +1 -0
  175. package/dist/components/ui/saved-query-card.cjs +409 -7
  176. package/dist/components/ui/saved-query-card.cjs.map +1 -1
  177. package/dist/components/ui/saved-query-card.js +394 -4
  178. package/dist/components/ui/saved-query-card.js.map +1 -1
  179. package/dist/components/ui/scroll-area.cjs +79 -0
  180. package/dist/components/ui/scroll-area.cjs.map +1 -0
  181. package/dist/components/ui/scroll-area.d.cts +14 -0
  182. package/dist/components/ui/scroll-area.d.ts +14 -0
  183. package/dist/components/ui/scroll-area.js +56 -0
  184. package/dist/components/ui/scroll-area.js.map +1 -0
  185. package/dist/components/ui/select.cjs +242 -0
  186. package/dist/components/ui/select.cjs.map +1 -0
  187. package/dist/components/ui/select.d.cts +29 -0
  188. package/dist/components/ui/select.d.ts +29 -0
  189. package/dist/components/ui/select.js +210 -0
  190. package/dist/components/ui/select.js.map +1 -0
  191. package/dist/components/ui/separator.cjs +105 -6
  192. package/dist/components/ui/separator.cjs.map +1 -1
  193. package/dist/components/ui/separator.js +87 -2
  194. package/dist/components/ui/separator.js.map +1 -1
  195. package/dist/components/ui/sheet.cjs +134 -38
  196. package/dist/components/ui/sheet.cjs.map +1 -1
  197. package/dist/components/ui/sheet.js +109 -2
  198. package/dist/components/ui/sheet.js.map +1 -1
  199. package/dist/{chunk-D2EBLE2B.cjs → components/ui/skeleton.cjs} +21 -16
  200. package/dist/components/ui/skeleton.cjs.map +1 -0
  201. package/dist/components/ui/skeleton.d.cts +90 -0
  202. package/dist/components/ui/skeleton.d.ts +90 -0
  203. package/dist/{chunk-SB5DSYR5.js → components/ui/skeleton.js} +8 -3
  204. package/dist/components/ui/skeleton.js.map +1 -0
  205. package/dist/components/ui/slider.cjs +129 -0
  206. package/dist/components/ui/slider.cjs.map +1 -0
  207. package/dist/components/ui/slider.d.cts +10 -0
  208. package/dist/components/ui/slider.d.ts +10 -0
  209. package/dist/components/ui/slider.js +107 -0
  210. package/dist/components/ui/slider.js.map +1 -0
  211. package/dist/components/ui/social-platform-badge.cjs +120 -0
  212. package/dist/components/ui/social-platform-badge.cjs.map +1 -0
  213. package/dist/components/ui/social-platform-badge.d.cts +21 -0
  214. package/dist/components/ui/social-platform-badge.d.ts +21 -0
  215. package/dist/components/ui/social-platform-badge.js +97 -0
  216. package/dist/components/ui/social-platform-badge.js.map +1 -0
  217. package/dist/components/ui/sonner.cjs +51 -0
  218. package/dist/components/ui/sonner.cjs.map +1 -0
  219. package/dist/components/ui/sonner.d.cts +13 -0
  220. package/dist/components/ui/sonner.d.ts +13 -0
  221. package/dist/components/ui/sonner.js +45 -0
  222. package/dist/components/ui/sonner.js.map +1 -0
  223. package/dist/components/ui/sparkline.cjs +159 -6
  224. package/dist/components/ui/sparkline.cjs.map +1 -1
  225. package/dist/components/ui/sparkline.js +142 -2
  226. package/dist/components/ui/sparkline.js.map +1 -1
  227. package/dist/components/ui/switch.cjs +96 -0
  228. package/dist/components/ui/switch.cjs.map +1 -0
  229. package/dist/components/ui/switch.d.cts +13 -0
  230. package/dist/components/ui/switch.d.ts +13 -0
  231. package/dist/components/ui/switch.js +73 -0
  232. package/dist/components/ui/switch.js.map +1 -0
  233. package/dist/components/ui/table.cjs +188 -0
  234. package/dist/components/ui/table.cjs.map +1 -0
  235. package/dist/components/ui/table.d.cts +59 -0
  236. package/dist/components/ui/table.d.ts +59 -0
  237. package/dist/components/ui/table.js +178 -0
  238. package/dist/components/ui/table.js.map +1 -0
  239. package/dist/components/ui/tabs.cjs +140 -0
  240. package/dist/components/ui/tabs.cjs.map +1 -0
  241. package/dist/components/ui/tabs.d.cts +21 -0
  242. package/dist/components/ui/tabs.d.ts +21 -0
  243. package/dist/components/ui/tabs.js +115 -0
  244. package/dist/components/ui/tabs.js.map +1 -0
  245. package/dist/components/ui/textarea.cjs +56 -0
  246. package/dist/components/ui/textarea.cjs.map +1 -0
  247. package/dist/components/ui/textarea.d.cts +5 -0
  248. package/dist/components/ui/textarea.d.ts +5 -0
  249. package/dist/components/ui/textarea.js +34 -0
  250. package/dist/components/ui/textarea.js.map +1 -0
  251. package/dist/components/ui/toggle-group.cjs +123 -0
  252. package/dist/components/ui/toggle-group.cjs.map +1 -0
  253. package/dist/components/ui/toggle-group.d.cts +7 -0
  254. package/dist/components/ui/toggle-group.d.ts +7 -0
  255. package/dist/components/ui/toggle-group.js +99 -0
  256. package/dist/components/ui/toggle-group.js.map +1 -0
  257. package/dist/components/ui/tooltip.cjs +77 -18
  258. package/dist/components/ui/tooltip.cjs.map +1 -1
  259. package/dist/components/ui/tooltip.js +56 -2
  260. package/dist/components/ui/tooltip.js.map +1 -1
  261. package/dist/{concept-card-RwPbqJ06.d.cts → concept-card-BXra9mr0.d.cts} +2 -2
  262. package/dist/{concept-card-CcOBb2Nz.d.ts → concept-card-BoJ5gIJD.d.ts} +2 -2
  263. package/dist/hooks/use-hotkey-registry.cjs +201 -14
  264. package/dist/hooks/use-hotkey-registry.cjs.map +1 -1
  265. package/dist/hooks/use-hotkey-registry.js +182 -2
  266. package/dist/hooks/use-hotkey-registry.js.map +1 -1
  267. package/dist/hooks/use-hotkeys.cjs +144 -9
  268. package/dist/hooks/use-hotkeys.cjs.map +1 -1
  269. package/dist/hooks/use-hotkeys.js +126 -1
  270. package/dist/hooks/use-hotkeys.js.map +1 -1
  271. package/dist/{i18n-CAd9wGOr.d.cts → i18n-BfRhV5aw.d.cts} +5 -3
  272. package/dist/{i18n-ArS3mqj0.d.ts → i18n-ewyqbKM-.d.ts} +5 -3
  273. package/dist/index.cjs +20906 -15706
  274. package/dist/index.cjs.map +1 -1
  275. package/dist/index.css +396 -69
  276. package/dist/index.d.cts +49 -490
  277. package/dist/index.d.ts +49 -490
  278. package/dist/index.js +7704 -2032
  279. package/dist/index.js.map +1 -1
  280. package/dist/{page-card-CmShVqG-.d.cts → page-card-C9XXXOVr.d.cts} +3 -20
  281. package/dist/{page-card-HBn-cy4J.d.ts → page-card-DAnbez_f.d.ts} +3 -20
  282. package/dist/toggle-group-B8r4LOQw.d.cts +26 -0
  283. package/dist/toggle-group-B8r4LOQw.d.ts +26 -0
  284. package/package.json +132 -2
  285. package/tailwind.config.ts +45 -0
  286. package/dist/chunk-2ACKKPWA.cjs +0 -112
  287. package/dist/chunk-2ACKKPWA.cjs.map +0 -1
  288. package/dist/chunk-2UD3LGVX.cjs +0 -316
  289. package/dist/chunk-2UD3LGVX.cjs.map +0 -1
  290. package/dist/chunk-3QYYPPFJ.js.map +0 -1
  291. package/dist/chunk-4SVQNEVH.js +0 -173
  292. package/dist/chunk-4SVQNEVH.js.map +0 -1
  293. package/dist/chunk-4WONHORR.cjs +0 -152
  294. package/dist/chunk-4WONHORR.cjs.map +0 -1
  295. package/dist/chunk-5HCXH6GS.js +0 -409
  296. package/dist/chunk-5HCXH6GS.js.map +0 -1
  297. package/dist/chunk-5JJSRGJD.js.map +0 -1
  298. package/dist/chunk-5K6E4ZSW.cjs +0 -77
  299. package/dist/chunk-5K6E4ZSW.cjs.map +0 -1
  300. package/dist/chunk-5NY26ULO.js +0 -89
  301. package/dist/chunk-5NY26ULO.js.map +0 -1
  302. package/dist/chunk-7RVPG3LE.cjs +0 -231
  303. package/dist/chunk-7RVPG3LE.cjs.map +0 -1
  304. package/dist/chunk-AYEK3WOM.js +0 -207
  305. package/dist/chunk-AYEK3WOM.js.map +0 -1
  306. package/dist/chunk-BRMBLIQG.js +0 -53
  307. package/dist/chunk-BRMBLIQG.js.map +0 -1
  308. package/dist/chunk-CAJKSTXX.cjs.map +0 -1
  309. package/dist/chunk-CKFWMHQU.js +0 -401
  310. package/dist/chunk-CKFWMHQU.js.map +0 -1
  311. package/dist/chunk-CV3N3HVK.js +0 -672
  312. package/dist/chunk-CV3N3HVK.js.map +0 -1
  313. package/dist/chunk-D2EBLE2B.cjs.map +0 -1
  314. package/dist/chunk-GCZ6YATL.js +0 -940
  315. package/dist/chunk-GCZ6YATL.js.map +0 -1
  316. package/dist/chunk-GKRAZGDI.cjs +0 -84
  317. package/dist/chunk-GKRAZGDI.cjs.map +0 -1
  318. package/dist/chunk-GPYJ66CG.js +0 -45
  319. package/dist/chunk-GPYJ66CG.js.map +0 -1
  320. package/dist/chunk-HF6XU5NI.js +0 -84
  321. package/dist/chunk-HF6XU5NI.js.map +0 -1
  322. package/dist/chunk-HJPDZOMJ.cjs +0 -87
  323. package/dist/chunk-HJPDZOMJ.cjs.map +0 -1
  324. package/dist/chunk-HS3XI3CC.cjs +0 -69
  325. package/dist/chunk-HS3XI3CC.cjs.map +0 -1
  326. package/dist/chunk-HUCC3QH5.cjs +0 -53
  327. package/dist/chunk-HUCC3QH5.cjs.map +0 -1
  328. package/dist/chunk-HYZ6BQPS.cjs +0 -425
  329. package/dist/chunk-HYZ6BQPS.cjs.map +0 -1
  330. package/dist/chunk-ISCSZMYW.cjs +0 -106
  331. package/dist/chunk-ISCSZMYW.cjs.map +0 -1
  332. package/dist/chunk-IXFEFIDO.js +0 -82
  333. package/dist/chunk-IXFEFIDO.js.map +0 -1
  334. package/dist/chunk-JCJLN437.js +0 -108
  335. package/dist/chunk-JCJLN437.js.map +0 -1
  336. package/dist/chunk-JMKNNH63.cjs +0 -982
  337. package/dist/chunk-JMKNNH63.cjs.map +0 -1
  338. package/dist/chunk-JUBHQAA2.js +0 -53
  339. package/dist/chunk-JUBHQAA2.js.map +0 -1
  340. package/dist/chunk-K6G63EED.cjs +0 -41
  341. package/dist/chunk-K6G63EED.cjs.map +0 -1
  342. package/dist/chunk-KCWRCSI7.js +0 -62
  343. package/dist/chunk-KCWRCSI7.js.map +0 -1
  344. package/dist/chunk-KYM7NIJO.cjs +0 -433
  345. package/dist/chunk-KYM7NIJO.cjs.map +0 -1
  346. package/dist/chunk-L2L5CKC2.js +0 -291
  347. package/dist/chunk-L2L5CKC2.js.map +0 -1
  348. package/dist/chunk-M5CHZ5BA.js +0 -124
  349. package/dist/chunk-M5CHZ5BA.js.map +0 -1
  350. package/dist/chunk-MEK4RSGC.js +0 -65
  351. package/dist/chunk-MEK4RSGC.js.map +0 -1
  352. package/dist/chunk-MEKWH3GS.js +0 -89
  353. package/dist/chunk-MEKWH3GS.js.map +0 -1
  354. package/dist/chunk-MFTX2DDQ.js +0 -27
  355. package/dist/chunk-MFTX2DDQ.js.map +0 -1
  356. package/dist/chunk-MMC6M35Q.cjs.map +0 -1
  357. package/dist/chunk-NMH43BDC.js +0 -130
  358. package/dist/chunk-NMH43BDC.js.map +0 -1
  359. package/dist/chunk-NORDUD2T.cjs +0 -135
  360. package/dist/chunk-NORDUD2T.cjs.map +0 -1
  361. package/dist/chunk-NV4JOKWL.cjs +0 -197
  362. package/dist/chunk-NV4JOKWL.cjs.map +0 -1
  363. package/dist/chunk-O2JG7WY5.cjs +0 -121
  364. package/dist/chunk-O2JG7WY5.cjs.map +0 -1
  365. package/dist/chunk-ONO2FTV4.cjs +0 -68
  366. package/dist/chunk-ONO2FTV4.cjs.map +0 -1
  367. package/dist/chunk-OQB6HIUL.cjs +0 -108
  368. package/dist/chunk-OQB6HIUL.cjs.map +0 -1
  369. package/dist/chunk-OS6CMYAS.cjs +0 -79
  370. package/dist/chunk-OS6CMYAS.cjs.map +0 -1
  371. package/dist/chunk-PYURPUTV.js +0 -402
  372. package/dist/chunk-PYURPUTV.js.map +0 -1
  373. package/dist/chunk-RJ3HYZ7S.js +0 -44
  374. package/dist/chunk-RJ3HYZ7S.js.map +0 -1
  375. package/dist/chunk-RZNRIOLT.js +0 -128
  376. package/dist/chunk-RZNRIOLT.js.map +0 -1
  377. package/dist/chunk-S3T2L6NA.js +0 -38
  378. package/dist/chunk-S3T2L6NA.js.map +0 -1
  379. package/dist/chunk-S5IPJQZ3.cjs +0 -161
  380. package/dist/chunk-S5IPJQZ3.cjs.map +0 -1
  381. package/dist/chunk-SB5DSYR5.js.map +0 -1
  382. package/dist/chunk-SFXV2DUH.js +0 -106
  383. package/dist/chunk-SFXV2DUH.js.map +0 -1
  384. package/dist/chunk-SXEPGD4Z.cjs +0 -152
  385. package/dist/chunk-SXEPGD4Z.cjs.map +0 -1
  386. package/dist/chunk-SXWSOU3Y.js +0 -89
  387. package/dist/chunk-SXWSOU3Y.js.map +0 -1
  388. package/dist/chunk-SZMVOHT7.cjs +0 -107
  389. package/dist/chunk-SZMVOHT7.cjs.map +0 -1
  390. package/dist/chunk-TWJXOV4C.js +0 -145
  391. package/dist/chunk-TWJXOV4C.js.map +0 -1
  392. package/dist/chunk-U3ADRIVO.cjs +0 -434
  393. package/dist/chunk-U3ADRIVO.cjs.map +0 -1
  394. package/dist/chunk-U5FLLCGC.cjs +0 -151
  395. package/dist/chunk-U5FLLCGC.cjs.map +0 -1
  396. package/dist/chunk-UOZN45G4.cjs +0 -130
  397. package/dist/chunk-UOZN45G4.cjs.map +0 -1
  398. package/dist/chunk-VHLDOG74.cjs +0 -167
  399. package/dist/chunk-VHLDOG74.cjs.map +0 -1
  400. package/dist/chunk-YC5KLN6I.js +0 -139
  401. package/dist/chunk-YC5KLN6I.js.map +0 -1
  402. package/dist/chunk-YENXXYUV.cjs +0 -111
  403. package/dist/chunk-YENXXYUV.cjs.map +0 -1
  404. package/dist/chunk-YFQWC2PW.js +0 -113
  405. package/dist/chunk-YFQWC2PW.js.map +0 -1
  406. package/dist/chunk-Z2TY4A75.cjs +0 -700
  407. package/dist/chunk-Z2TY4A75.cjs.map +0 -1
  408. package/dist/chunk-Z56O7UEU.cjs +0 -136
  409. package/dist/chunk-Z56O7UEU.cjs.map +0 -1
  410. package/dist/chunk-ZBZDR4ZC.js +0 -106
  411. package/dist/chunk-ZBZDR4ZC.js.map +0 -1
@@ -1,79 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkNV4JOKWL_cjs = require('./chunk-NV4JOKWL.cjs');
4
- var React = require('react');
5
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- function _interopNamespace(e) {
9
- if (e && e.__esModule) return e;
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
24
- }
25
-
26
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
- var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
28
-
29
- var TooltipProvider = TooltipPrimitive__namespace.Provider;
30
- var Tooltip = TooltipPrimitive__namespace.Root;
31
- var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
32
- var TooltipContent = React__namespace.forwardRef(
33
- ({ className, variant = "default", size = "sm", showArrow = false, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
34
- TooltipPrimitive__namespace.Content,
35
- {
36
- ref,
37
- "data-slot": "tooltip-content",
38
- sideOffset,
39
- className: chunkNV4JOKWL_cjs.cn(
40
- "z-50 overflow-hidden rounded-md shadow-dropdown",
41
- "animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",
42
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
43
- // Variant styles
44
- variant === "default" && "border bg-alternative text-foreground",
45
- variant === "light" && "border bg-surface-100 text-foreground shadow-dropdown",
46
- variant === "error" && "border border-destructive-500 bg-destructive-200 text-destructive-600",
47
- // Size
48
- size === "sm" && "px-3 py-1.5 text-xs",
49
- size === "md" && "px-4 py-2 text-sm",
50
- className
51
- ),
52
- ...props,
53
- children: [
54
- children,
55
- showArrow && /* @__PURE__ */ jsxRuntime.jsx(
56
- TooltipPrimitive__namespace.Arrow,
57
- {
58
- className: chunkNV4JOKWL_cjs.cn(
59
- "fill-current",
60
- variant === "default" && "text-alternative",
61
- variant === "light" && "text-surface-100",
62
- variant === "error" && "text-destructive-200"
63
- ),
64
- width: 8,
65
- height: 4
66
- }
67
- )
68
- ]
69
- }
70
- ) })
71
- );
72
- TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
73
-
74
- exports.Tooltip = Tooltip;
75
- exports.TooltipContent = TooltipContent;
76
- exports.TooltipProvider = TooltipProvider;
77
- exports.TooltipTrigger = TooltipTrigger;
78
- //# sourceMappingURL=chunk-OS6CMYAS.cjs.map
79
- //# sourceMappingURL=chunk-OS6CMYAS.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ui/tooltip.tsx"],"names":["TooltipPrimitive","React","jsx","jsxs","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAM,eAAA,GAAmCA,2BAAA,CAAA;AAEzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA;AAEjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AAexC,IAAM,cAAA,GAAuBC,gBAAA,CAAA,UAAA;AAAA,EAC3B,CAAC,EAAE,SAAA,EAAW,UAAU,SAAA,EAAW,IAAA,GAAO,MAAM,SAAA,GAAY,KAAA,EAAO,UAAA,GAAa,CAAA,EAAG,UAAU,GAAG,KAAA,IAAS,GAAA,qBACvGC,cAAA,CAAkBF,oCAAjB,EACC,QAAA,kBAAAG,eAAA;AAAA,IAAkBH,2BAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAWI,oBAAA;AAAA,QACT,iDAAA;AAAA,QACA,mLAAA;AAAA,QACA,gGAAA;AAAA;AAAA,QAEA,YAAY,SAAA,IAAa,uCAAA;AAAA,QACzB,YAAY,OAAA,IAAW,uDAAA;AAAA,QACvB,YAAY,OAAA,IAAW,uEAAA;AAAA;AAAA,QAEvB,SAAS,IAAA,IAAQ,qBAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,mBAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,SAAA,oBACCF,cAAA;AAAA,UAAkBF,2BAAA,CAAA,KAAA;AAAA,UAAjB;AAAA,YACC,SAAA,EAAWI,oBAAA;AAAA,cACT,cAAA;AAAA,cACA,YAAY,SAAA,IAAa,kBAAA;AAAA,cACzB,YAAY,OAAA,IAAW,kBAAA;AAAA,cACvB,YAAY,OAAA,IAAW;AAAA,aACzB;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,MAAA,EAAQ;AAAA;AAAA;AACV;AAAA;AAAA,GAEJ,EACF;AAEJ;AACA,cAAA,CAAe,cAA+BJ,2BAAA,CAAA,OAAA,CAAQ,WAAA","file":"chunk-OS6CMYAS.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@/lib/utils'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n/* -------------------------------------------------------------------------- */\n/* TooltipContent */\n/* -------------------------------------------------------------------------- */\n\ninterface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Visual variant */\n variant?: 'default' | 'light' | 'error'\n /** Size */\n size?: 'sm' | 'md'\n /** Show arrow/caret pointing to trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Content>, TooltipContentProps>(\n ({ className, variant = 'default', size = 'sm', showArrow = false, sideOffset = 4, children, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md shadow-dropdown',\n 'animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n // Variant styles\n variant === 'default' && 'border bg-alternative text-foreground',\n variant === 'light' && 'border bg-surface-100 text-foreground shadow-dropdown',\n variant === 'error' && 'border border-destructive-500 bg-destructive-200 text-destructive-600',\n // Size\n size === 'sm' && 'px-3 py-1.5 text-xs',\n size === 'md' && 'px-4 py-2 text-sm',\n className\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n 'fill-current',\n variant === 'default' && 'text-alternative',\n variant === 'light' && 'text-surface-100',\n variant === 'error' && 'text-destructive-200'\n )}\n width={8}\n height={4}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n)\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
@@ -1,402 +0,0 @@
1
- import { Skeleton } from './chunk-SB5DSYR5.js';
2
- import { formatLargeNumber, convertToLocalNumbers } from './chunk-4SVQNEVH.js';
3
- import * as React2 from 'react';
4
- import { useState, useEffect, useMemo } from 'react';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
6
-
7
- function useRootStyles() {
8
- const [version, setVersion] = useState(0);
9
- useEffect(() => {
10
- if (typeof window === "undefined" || !document?.documentElement) {
11
- return;
12
- }
13
- const target = document.documentElement;
14
- const observer = new MutationObserver(() => {
15
- setVersion((prev) => prev + 1);
16
- });
17
- observer.observe(target, {
18
- attributes: true,
19
- attributeFilter: ["class", "data-theme"]
20
- });
21
- const media = window.matchMedia("(prefers-color-scheme: dark)");
22
- const mediaHandler = () => setVersion((prev) => prev + 1);
23
- media.addEventListener("change", mediaHandler);
24
- return () => {
25
- observer.disconnect();
26
- media.removeEventListener("change", mediaHandler);
27
- };
28
- }, []);
29
- return useMemo(() => {
30
- if (typeof window === "undefined" || !document?.documentElement) {
31
- return null;
32
- }
33
- return getComputedStyle(document.documentElement);
34
- }, [version]);
35
- }
36
-
37
- // src/lib/theme.ts
38
- var COLOR_VALUE_REGEX = /^(#|rgb|hsl|oklch)/i;
39
- function resolveCssColor(styles, variable, fallback) {
40
- if (!styles) return fallback;
41
- const raw = styles.getPropertyValue(variable).trim();
42
- if (!raw) return fallback;
43
- if (COLOR_VALUE_REGEX.test(raw)) return raw;
44
- if (raw.includes("%")) return `hsl(${raw})`;
45
- return raw;
46
- }
47
-
48
- // src/hooks/use-chart-theme.ts
49
- var FALLBACKS = {
50
- foregroundMuted: "hsl(0 0% 50%)",
51
- border: "hsl(0 0% 22%)",
52
- popover: "hsl(0 0% 10%)",
53
- popoverForeground: "hsl(0 0% 98%)",
54
- chart1: "hsl(153 55% 42%)",
55
- chart2: "hsl(198 50% 48%)",
56
- chart3: "hsl(240 40% 54%)",
57
- chart4: "hsl(310 38% 52%)",
58
- chart5: "hsl(355 45% 52%)",
59
- chart6: "hsl(35 52% 48%)",
60
- chart7: "hsl(75 38% 46%)",
61
- chart8: "hsl(118 35% 46%)"
62
- };
63
- var CHART_FONT_FAMILY = "Yekan Bakh, system-ui, -apple-system, sans-serif";
64
- function useChartTheme() {
65
- const styles = useRootStyles();
66
- return React2.useMemo(() => {
67
- const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
68
- const chartColors = [
69
- getColor("--chart-1", FALLBACKS.chart1),
70
- getColor("--chart-2", FALLBACKS.chart2),
71
- getColor("--chart-3", FALLBACKS.chart3),
72
- getColor("--chart-4", FALLBACKS.chart4),
73
- getColor("--chart-5", FALLBACKS.chart5),
74
- getColor("--chart-6", FALLBACKS.chart6),
75
- getColor("--chart-7", FALLBACKS.chart7),
76
- getColor("--chart-8", FALLBACKS.chart8)
77
- ];
78
- const axisTickStyle = {
79
- fontFamily: CHART_FONT_FAMILY,
80
- fill: getColor("--foreground-lighter", FALLBACKS.foregroundMuted),
81
- fontSize: 11,
82
- fontWeight: 400
83
- };
84
- const gridStyle = {
85
- stroke: getColor("--border", FALLBACKS.border),
86
- strokeDasharray: "3 3",
87
- strokeOpacity: 0.15
88
- };
89
- const tooltipStyle = {
90
- fontFamily: CHART_FONT_FAMILY,
91
- background: getColor("--background-overlay-default", FALLBACKS.popover),
92
- color: getColor("--foreground-default", FALLBACKS.popoverForeground),
93
- fontSize: 12,
94
- lineHeight: "1.5",
95
- borderRadius: "10px",
96
- border: `1px solid ${getColor("--border-muted", FALLBACKS.border)}`,
97
- boxShadow: "0 4px 24px -4px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.06)",
98
- padding: "10px 14px",
99
- backdropFilter: "blur(8px)",
100
- WebkitBackdropFilter: "blur(8px)"
101
- };
102
- const crosshairStyle = {
103
- stroke: getColor("--foreground-muted", FALLBACKS.foregroundMuted),
104
- strokeWidth: 1,
105
- strokeDasharray: "4 4",
106
- strokeOpacity: 0.5
107
- };
108
- return {
109
- chartColors,
110
- getColor,
111
- fontFamily: CHART_FONT_FAMILY,
112
- axisTickStyle,
113
- gridStyle,
114
- tooltipStyle,
115
- crosshairStyle
116
- };
117
- }, [styles]);
118
- }
119
- var ChartContainer = React2.forwardRef(
120
- ({ className, dataSlot, ariaLabel, children }, ref) => /* @__PURE__ */ jsx(
121
- "div",
122
- {
123
- ref,
124
- className,
125
- dir: "ltr",
126
- "data-slot": dataSlot,
127
- role: "img",
128
- "aria-label": ariaLabel ?? "\u0646\u0645\u0648\u062F\u0627\u0631",
129
- style: { position: "relative", width: "100%", height: "100%" },
130
- children
131
- }
132
- )
133
- );
134
- ChartContainer.displayName = "ChartContainer";
135
- function ChartLoadingSkeleton({ className, shape = "rect" }) {
136
- return /* @__PURE__ */ jsx(
137
- "div",
138
- {
139
- "data-slot": "chart-loading-skeleton",
140
- className,
141
- dir: "ltr",
142
- style: { position: "relative", width: "100%", height: "100%" },
143
- role: "status",
144
- "aria-label": "Loading chart",
145
- children: /* @__PURE__ */ jsx(
146
- Skeleton,
147
- {
148
- shape,
149
- className: shape === "circle" ? "w-full h-full min-h-[200px] aspect-square mx-auto" : "w-full h-full min-h-[200px]"
150
- }
151
- )
152
- }
153
- );
154
- }
155
- var LOCALE_TO_BCP47 = {
156
- fa: "fa-IR",
157
- ar: "ar",
158
- en: "en-US"
159
- };
160
- function ChartTooltip({ active, payload, label, tooltipStyle, formatter, locale = "fa" }) {
161
- if (!active || !payload?.length) return null;
162
- const bcp47 = LOCALE_TO_BCP47[locale] ?? "fa-IR";
163
- return /* @__PURE__ */ jsxs("div", { "data-slot": "chart-tooltip", style: tooltipStyle, children: [
164
- label && /* @__PURE__ */ jsx("div", { style: { fontWeight: 500, fontSize: 13, marginBottom: 6 }, children: label }),
165
- payload.map((entry, i) => /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8, marginTop: i > 0 ? 4 : 0 }, children: [
166
- /* @__PURE__ */ jsx(
167
- "div",
168
- {
169
- style: {
170
- width: 10,
171
- height: 10,
172
- borderRadius: 2,
173
- backgroundColor: entry.color,
174
- flexShrink: 0
175
- }
176
- }
177
- ),
178
- formatter ? formatter(entry.name, entry.value) : /* @__PURE__ */ jsxs("span", { style: { display: "flex", justifyContent: "space-between", width: "100%", gap: 16 }, children: [
179
- /* @__PURE__ */ jsx("span", { style: { opacity: 0.7 }, children: entry.name }),
180
- /* @__PURE__ */ jsx("span", { style: { fontWeight: 600, fontVariantNumeric: "tabular-nums" }, children: typeof entry.value === "number" ? entry.value.toLocaleString(bcp47) : entry.value })
181
- ] })
182
- ] }, i))
183
- ] });
184
- }
185
- function localeAwareNumberTick(locale) {
186
- return (value) => {
187
- if (typeof value === "number") return formatLargeNumber(value, locale);
188
- if (typeof value === "string") {
189
- if (/^-?\d+(\.\d+)?$/.test(value)) return convertToLocalNumbers(value, locale);
190
- return value;
191
- }
192
- return String(value ?? "");
193
- };
194
- }
195
- function localeAwareCategoryTick(locale) {
196
- return (value) => convertToLocalNumbers(String(value ?? ""), locale);
197
- }
198
- var PATTERN_DASHARRAY = {
199
- solid: void 0,
200
- dashed: "4 3",
201
- dotted: "1 3",
202
- "dash-dot": "4 2 1 2"
203
- };
204
- var ChartLegend = React2.forwardRef(
205
- ({ className, items, orientation = "horizontal", swatchSize = 10, ...props }, ref) => {
206
- const isVertical = orientation === "vertical";
207
- return /* @__PURE__ */ jsx(
208
- "div",
209
- {
210
- ref,
211
- "data-slot": "chart-legend",
212
- "data-orientation": orientation,
213
- className,
214
- style: {
215
- display: "flex",
216
- flexWrap: isVertical ? "nowrap" : "wrap",
217
- flexDirection: isVertical ? "column" : "row",
218
- gap: isVertical ? "6px" : "12px 16px",
219
- fontSize: 12,
220
- color: "hsl(var(--foreground-light))"
221
- },
222
- role: "list",
223
- ...props,
224
- children: items.map((item) => /* @__PURE__ */ jsxs(
225
- "div",
226
- {
227
- role: "listitem",
228
- "data-slot": "chart-legend-item",
229
- style: { display: "inline-flex", alignItems: "center", gap: 6, lineHeight: 1.2 },
230
- children: [
231
- /* @__PURE__ */ jsx(
232
- ChartLegendSwatch,
233
- {
234
- color: item.color,
235
- shape: item.shape ?? "dot",
236
- pattern: item.pattern ?? "solid",
237
- size: swatchSize
238
- }
239
- ),
240
- /* @__PURE__ */ jsx("span", { style: { fontWeight: 500 }, children: item.label }),
241
- item.value !== void 0 && /* @__PURE__ */ jsx(
242
- "span",
243
- {
244
- style: { marginInlineStart: 4, fontVariantNumeric: "tabular-nums", opacity: 0.7 },
245
- "data-slot": "chart-legend-value",
246
- children: item.value
247
- }
248
- )
249
- ]
250
- },
251
- item.key
252
- ))
253
- }
254
- );
255
- }
256
- );
257
- ChartLegend.displayName = "ChartLegend";
258
- function ChartLegendSwatch({
259
- color,
260
- shape,
261
- pattern,
262
- size
263
- }) {
264
- if (shape === "dot") {
265
- return /* @__PURE__ */ jsx(
266
- "span",
267
- {
268
- "aria-hidden": "true",
269
- style: {
270
- display: "inline-block",
271
- width: size,
272
- height: size,
273
- borderRadius: "50%",
274
- backgroundColor: color,
275
- flexShrink: 0
276
- }
277
- }
278
- );
279
- }
280
- if (shape === "bar") {
281
- return /* @__PURE__ */ jsx(
282
- "span",
283
- {
284
- "aria-hidden": "true",
285
- style: {
286
- display: "inline-block",
287
- width: size + 4,
288
- height: Math.max(3, Math.round(size / 2.5)),
289
- borderRadius: 2,
290
- backgroundColor: color,
291
- flexShrink: 0
292
- }
293
- }
294
- );
295
- }
296
- return /* @__PURE__ */ jsx(
297
- "svg",
298
- {
299
- "aria-hidden": "true",
300
- width: size + 8,
301
- height: Math.max(8, Math.round(size / 1.5)),
302
- viewBox: `0 0 ${size + 8} ${Math.max(8, Math.round(size / 1.5))}`,
303
- style: { flexShrink: 0 },
304
- children: /* @__PURE__ */ jsx(
305
- "line",
306
- {
307
- x1: 1,
308
- y1: Math.max(8, Math.round(size / 1.5)) / 2,
309
- x2: size + 7,
310
- y2: Math.max(8, Math.round(size / 1.5)) / 2,
311
- stroke: color,
312
- strokeWidth: 2,
313
- strokeLinecap: "round",
314
- strokeDasharray: PATTERN_DASHARRAY[pattern]
315
- }
316
- )
317
- }
318
- );
319
- }
320
- var ChartGradientLegend = React2.forwardRef(
321
- ({
322
- className,
323
- startColor,
324
- endColor,
325
- startLabel,
326
- endLabel,
327
- caption,
328
- width = 160,
329
- height = 8,
330
- "aria-label": ariaLabelProp,
331
- ...props
332
- }, ref) => {
333
- const ariaLabel = ariaLabelProp ?? (typeof startLabel === "string" && typeof endLabel === "string" ? `${startLabel} \u062A\u0627 ${endLabel}` : "\u0645\u0642\u06CC\u0627\u0633 \u0631\u0646\u06AF");
334
- return /* @__PURE__ */ jsxs(
335
- "div",
336
- {
337
- ref,
338
- "data-slot": "chart-gradient-legend",
339
- className,
340
- role: "img",
341
- "aria-label": ariaLabel,
342
- style: {
343
- display: "inline-flex",
344
- flexDirection: "column",
345
- gap: 4,
346
- fontSize: 12,
347
- color: "hsl(var(--foreground-light))"
348
- },
349
- ...props,
350
- children: [
351
- caption && /* @__PURE__ */ jsx("div", { "data-slot": "chart-gradient-legend-caption", style: { fontWeight: 500 }, children: caption }),
352
- /* @__PURE__ */ jsx(
353
- "div",
354
- {
355
- "data-slot": "chart-gradient-legend-bar",
356
- "aria-hidden": "true",
357
- style: {
358
- width,
359
- height,
360
- borderRadius: height / 2,
361
- background: `linear-gradient(to right, ${startColor}, ${endColor})`
362
- }
363
- }
364
- ),
365
- (startLabel !== void 0 || endLabel !== void 0) && /* @__PURE__ */ jsxs(
366
- "div",
367
- {
368
- style: {
369
- display: "flex",
370
- justifyContent: "space-between",
371
- width,
372
- fontVariantNumeric: "tabular-nums",
373
- opacity: 0.85
374
- },
375
- children: [
376
- /* @__PURE__ */ jsx("span", { "data-slot": "chart-gradient-legend-start", children: startLabel }),
377
- /* @__PURE__ */ jsx("span", { "data-slot": "chart-gradient-legend-end", children: endLabel })
378
- ]
379
- }
380
- )
381
- ]
382
- }
383
- );
384
- }
385
- );
386
- ChartGradientLegend.displayName = "ChartGradientLegend";
387
- function transformNivoLineData(nivoData) {
388
- const dataKeys = nivoData.map((s) => s.id);
389
- const xValues = nivoData[0]?.data.map((d) => d.x) ?? [];
390
- const data = xValues.map((x, xi) => {
391
- const row = { name: x };
392
- for (const series of nivoData) {
393
- row[series.id] = series.data[xi]?.y ?? 0;
394
- }
395
- return row;
396
- });
397
- return { data, dataKeys };
398
- }
399
-
400
- export { CHART_FONT_FAMILY, ChartContainer, ChartGradientLegend, ChartLegend, ChartLoadingSkeleton, ChartTooltip, localeAwareCategoryTick, localeAwareNumberTick, transformNivoLineData, useChartTheme, useRootStyles };
401
- //# sourceMappingURL=chunk-PYURPUTV.js.map
402
- //# sourceMappingURL=chunk-PYURPUTV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-root-styles.ts","../src/lib/theme.ts","../src/hooks/use-chart-theme.ts","../src/components/charts/chart-utils.tsx"],"names":["React"],"mappings":"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","file":"chunk-PYURPUTV.js","sourcesContent":["'use client'\n\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Returns a snapshot of the current document root computed styles and\n * re-renders when the theme class or OS color scheme changes.\n */\nexport function useRootStyles() {\n const [version, setVersion] = useState(0)\n\n useEffect(() => {\n if (typeof window === 'undefined' || !document?.documentElement) {\n return\n }\n\n const target = document.documentElement\n const observer = new MutationObserver(() => {\n setVersion((prev) => prev + 1)\n })\n\n observer.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n })\n\n const media = window.matchMedia('(prefers-color-scheme: dark)')\n const mediaHandler = () => setVersion((prev) => prev + 1)\n media.addEventListener('change', mediaHandler)\n\n return () => {\n observer.disconnect()\n media.removeEventListener('change', mediaHandler)\n }\n }, [])\n\n return useMemo(() => {\n if (typeof window === 'undefined' || !document?.documentElement) {\n return null\n }\n\n return getComputedStyle(document.documentElement)\n }, [version])\n}\n","const COLOR_VALUE_REGEX = /^(#|rgb|hsl|oklch)/i;\n\nexport function resolveCssColor(\n styles: CSSStyleDeclaration | null,\n variable: string,\n fallback: string,\n) {\n if (!styles) return fallback;\n const raw = styles.getPropertyValue(variable).trim();\n if (!raw) return fallback;\n if (COLOR_VALUE_REGEX.test(raw)) return raw;\n if (raw.includes('%')) return `hsl(${raw})`;\n return raw;\n}\n\n","'use client'\n\nimport * as React from 'react'\nimport { useRootStyles } from './use-root-styles'\nimport { resolveCssColor } from '@/lib/theme'\n\n/**\n * Chart theme hook — reads CSS design tokens at runtime and produces\n * resolved colors and styles for Recharts + Visx chart components.\n * Inspired by Linear, Vercel, and Stripe data visualizations.\n */\n\nconst FALLBACKS = {\n foreground: 'hsl(0 0% 98%)',\n foregroundMuted: 'hsl(0 0% 50%)',\n border: 'hsl(0 0% 22%)',\n popover: 'hsl(0 0% 10%)',\n popoverForeground: 'hsl(0 0% 98%)',\n chart1: 'hsl(153 55% 42%)',\n chart2: 'hsl(198 50% 48%)',\n chart3: 'hsl(240 40% 54%)',\n chart4: 'hsl(310 38% 52%)',\n chart5: 'hsl(355 45% 52%)',\n chart6: 'hsl(35 52% 48%)',\n chart7: 'hsl(75 38% 46%)',\n chart8: 'hsl(118 35% 46%)',\n}\n\nexport const CHART_FONT_FAMILY = 'Yekan Bakh, system-ui, -apple-system, sans-serif'\n\nexport function useChartTheme() {\n const styles = useRootStyles()\n\n return React.useMemo(() => {\n const getColor = (variable: string, fallback: string) => resolveCssColor(styles, variable, fallback)\n\n const chartColors = [\n getColor('--chart-1', FALLBACKS.chart1),\n getColor('--chart-2', FALLBACKS.chart2),\n getColor('--chart-3', FALLBACKS.chart3),\n getColor('--chart-4', FALLBACKS.chart4),\n getColor('--chart-5', FALLBACKS.chart5),\n getColor('--chart-6', FALLBACKS.chart6),\n getColor('--chart-7', FALLBACKS.chart7),\n getColor('--chart-8', FALLBACKS.chart8),\n ]\n\n const axisTickStyle = {\n fontFamily: CHART_FONT_FAMILY,\n fill: getColor('--foreground-lighter', FALLBACKS.foregroundMuted),\n fontSize: 11,\n fontWeight: 400 as const,\n }\n\n const gridStyle = {\n stroke: getColor('--border', FALLBACKS.border),\n strokeDasharray: '3 3',\n strokeOpacity: 0.15,\n }\n\n const tooltipStyle: React.CSSProperties = {\n fontFamily: CHART_FONT_FAMILY,\n background: getColor('--background-overlay-default', FALLBACKS.popover),\n color: getColor('--foreground-default', FALLBACKS.popoverForeground),\n fontSize: 12,\n lineHeight: '1.5',\n borderRadius: '10px',\n border: `1px solid ${getColor('--border-muted', FALLBACKS.border)}`,\n boxShadow: '0 4px 24px -4px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.06)',\n padding: '10px 14px',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n }\n\n const crosshairStyle = {\n stroke: getColor('--foreground-muted', FALLBACKS.foregroundMuted),\n strokeWidth: 1,\n strokeDasharray: '4 4',\n strokeOpacity: 0.5,\n }\n\n return {\n chartColors,\n getColor,\n fontFamily: CHART_FONT_FAMILY,\n axisTickStyle,\n gridStyle,\n tooltipStyle,\n crosshairStyle,\n }\n }, [styles])\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport { convertToLocalNumbers, formatLargeNumber, type SupportedLocale } from '@/lib/utils'\n\n// ─── Chart Container ─────────────────────────────────────────────────────────\n\ninterface ChartContainerProps {\n className?: string\n dataSlot: string\n ariaLabel?: string\n children: React.ReactNode\n}\n\nexport const ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ className, dataSlot, ariaLabel, children }, ref) => (\n <div\n ref={ref}\n className={className}\n dir=\"ltr\"\n data-slot={dataSlot}\n role=\"img\"\n aria-label={ariaLabel ?? 'نمودار'}\n style={{ position: 'relative', width: '100%', height: '100%' }}\n >\n {children}\n </div>\n )\n)\nChartContainer.displayName = 'ChartContainer'\n\n// ─── Chart Skeleton ──────────────────────────────────────────────────────────\n\ninterface ChartSkeletonProps {\n className?: string\n shape?: 'rect' | 'circle'\n}\n\nexport function ChartLoadingSkeleton({ className, shape = 'rect' }: ChartSkeletonProps) {\n return (\n <div\n data-slot=\"chart-loading-skeleton\"\n className={className}\n dir=\"ltr\"\n style={{ position: 'relative', width: '100%', height: '100%' }}\n role=\"status\"\n aria-label=\"Loading chart\"\n >\n <Skeleton\n shape={shape}\n className={\n shape === 'circle' ? 'w-full h-full min-h-[200px] aspect-square mx-auto' : 'w-full h-full min-h-[200px]'\n }\n />\n </div>\n )\n}\n\n// ─── Chart Tooltip ───────────────────────────────────────────────────────────\n\ninterface ChartTooltipProps {\n active?: boolean\n payload?: Array<{ name: string; value: number; color: string; dataKey?: string }>\n label?: string\n tooltipStyle: React.CSSProperties\n formatter?: (name: string, value: number) => React.ReactNode\n /** Locale for the default value formatter. fa/ar render Persian/Arabic digits with thousands separators; en uses Latin. */\n locale?: SupportedLocale\n}\n\nconst LOCALE_TO_BCP47: Record<SupportedLocale, string> = {\n fa: 'fa-IR',\n ar: 'ar',\n en: 'en-US',\n}\n\nexport function ChartTooltip({ active, payload, label, tooltipStyle, formatter, locale = 'fa' }: ChartTooltipProps) {\n if (!active || !payload?.length) return null\n\n const bcp47 = LOCALE_TO_BCP47[locale] ?? 'fa-IR'\n\n return (\n <div data-slot=\"chart-tooltip\" style={tooltipStyle}>\n {label && <div style={{ fontWeight: 500, fontSize: 13, marginBottom: 6 }}>{label}</div>}\n {payload.map((entry, i) => (\n <div key={i} style={{ display: 'flex', alignItems: 'center', gap: 8, marginTop: i > 0 ? 4 : 0 }}>\n <div\n style={{\n width: 10,\n height: 10,\n borderRadius: 2,\n backgroundColor: entry.color,\n flexShrink: 0,\n }}\n />\n {formatter ? (\n formatter(entry.name, entry.value)\n ) : (\n <span style={{ display: 'flex', justifyContent: 'space-between', width: '100%', gap: 16 }}>\n <span style={{ opacity: 0.7 }}>{entry.name}</span>\n <span style={{ fontWeight: 600, fontVariantNumeric: 'tabular-nums' }}>\n {typeof entry.value === 'number' ? entry.value.toLocaleString(bcp47) : entry.value}\n </span>\n </span>\n )}\n </div>\n ))}\n </div>\n )\n}\n\n// ─── Locale-aware tick formatter ─────────────────────────────────────────────\n\n/**\n * Default tickFormatter for numeric chart axes (Y axis on Line/Area/Bar, both\n * axes on Scatter, radial on Radar). Renders Persian/Arabic digits + locale\n * suffix (\"۱.۵ هزار\", \"1.5K\") for fa/ar, Latin K/M/B for en.\n *\n * Pass via `axisLeft={{ tickFormatter: localeAwareNumberTick('fa') }}`, or rely\n * on the chart wrapper's `locale` prop which wires this in by default.\n */\nexport function localeAwareNumberTick(locale: SupportedLocale): (value: unknown) => string {\n return (value) => {\n if (typeof value === 'number') return formatLargeNumber(value, locale)\n if (typeof value === 'string') {\n // Numeric strings: convert digits only (don't touch labels).\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) return convertToLocalNumbers(value, locale)\n return value\n }\n return String(value ?? '')\n }\n}\n\n/**\n * Default tickFormatter for categorical chart axes — converts embedded digits\n * to the locale's numerals (e.g. \"۱۴۰۳-۰۱\" for \"1403-01\") without altering\n * letters. Use on date/time axes whose labels carry digits.\n */\nexport function localeAwareCategoryTick(locale: SupportedLocale): (value: unknown) => string {\n return (value) => convertToLocalNumbers(String(value ?? ''), locale)\n}\n\n// ─── Chart Legend ────────────────────────────────────────────────────────────\n\nexport interface ChartLegendItem {\n /** Unique identifier — typically the dataKey or series id. */\n key: string\n /** Display label. Strings preferred so AT can read it. */\n label: React.ReactNode\n /** Marker color. Pass the resolved value (hsl, hex, or `var(--token)`). */\n color: string\n /**\n * Marker shape. `dot` for categorical (Bar/Pie), `line` for series (Line/Area),\n * `bar` for stacked distributions. @default `dot`\n */\n shape?: 'dot' | 'line' | 'bar'\n /**\n * Optional stroke pattern when `shape=\"line\"`. Lets color-blind users\n * distinguish series by texture in addition to color. WCAG 1.4.1\n * (Use of Color) recommends adding a non-color signal.\n */\n pattern?: 'solid' | 'dashed' | 'dotted' | 'dash-dot'\n /** Optional trailing value (count, percent, etc.). */\n value?: React.ReactNode\n}\n\nexport interface ChartLegendProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Series to enumerate. */\n items: ChartLegendItem[]\n /** Layout — `horizontal` wraps, `vertical` stacks. @default `horizontal` */\n orientation?: 'horizontal' | 'vertical'\n /** Marker square/dot edge length in px. @default `10` */\n swatchSize?: number\n}\n\nconst PATTERN_DASHARRAY: Record<NonNullable<ChartLegendItem['pattern']>, string | undefined> = {\n solid: undefined,\n dashed: '4 3',\n dotted: '1 3',\n 'dash-dot': '4 2 1 2',\n}\n\n/**\n * Reusable chart legend. Pair with `PartoLineChart`, `PartoBarChart`, etc. by\n * passing `legend={[…]}` or rendering `<ChartLegend>` next to the chart. Each\n * line-shape entry can carry a stroke pattern so colorblind users can read\n * series identity without relying on color alone.\n *\n * The legend has no chart-aware behavior on its own — pass the same colors\n * (resolved via `useChartTheme`) you handed to the chart's `Cell`/series.\n */\nexport const ChartLegend = React.forwardRef<HTMLDivElement, ChartLegendProps>(\n ({ className, items, orientation = 'horizontal', swatchSize = 10, ...props }, ref) => {\n const isVertical = orientation === 'vertical'\n return (\n <div\n ref={ref}\n data-slot=\"chart-legend\"\n data-orientation={orientation}\n className={className}\n style={{\n display: 'flex',\n flexWrap: isVertical ? 'nowrap' : 'wrap',\n flexDirection: isVertical ? 'column' : 'row',\n gap: isVertical ? '6px' : '12px 16px',\n fontSize: 12,\n color: 'hsl(var(--foreground-light))',\n }}\n // role=list + role=listitem because we use inline elements for layout\n // (some browsers/AT strip implicit list semantics from non-li children).\n role=\"list\"\n {...props}\n >\n {items.map((item) => (\n <div\n key={item.key}\n role=\"listitem\"\n data-slot=\"chart-legend-item\"\n style={{ display: 'inline-flex', alignItems: 'center', gap: 6, lineHeight: 1.2 }}\n >\n <ChartLegendSwatch\n color={item.color}\n shape={item.shape ?? 'dot'}\n pattern={item.pattern ?? 'solid'}\n size={swatchSize}\n />\n <span style={{ fontWeight: 500 }}>{item.label}</span>\n {item.value !== undefined && (\n <span\n style={{ marginInlineStart: 4, fontVariantNumeric: 'tabular-nums', opacity: 0.7 }}\n data-slot=\"chart-legend-value\"\n >\n {item.value}\n </span>\n )}\n </div>\n ))}\n </div>\n )\n }\n)\nChartLegend.displayName = 'ChartLegend'\n\nfunction ChartLegendSwatch({\n color,\n shape,\n pattern,\n size,\n}: {\n color: string\n shape: NonNullable<ChartLegendItem['shape']>\n pattern: NonNullable<ChartLegendItem['pattern']>\n size: number\n}) {\n if (shape === 'dot') {\n return (\n <span\n aria-hidden=\"true\"\n style={{\n display: 'inline-block',\n width: size,\n height: size,\n borderRadius: '50%',\n backgroundColor: color,\n flexShrink: 0,\n }}\n />\n )\n }\n if (shape === 'bar') {\n return (\n <span\n aria-hidden=\"true\"\n style={{\n display: 'inline-block',\n width: size + 4,\n height: Math.max(3, Math.round(size / 2.5)),\n borderRadius: 2,\n backgroundColor: color,\n flexShrink: 0,\n }}\n />\n )\n }\n // Line shape — SVG so we can render a stroke-dasharray pattern\n return (\n <svg\n aria-hidden=\"true\"\n width={size + 8}\n height={Math.max(8, Math.round(size / 1.5))}\n viewBox={`0 0 ${size + 8} ${Math.max(8, Math.round(size / 1.5))}`}\n style={{ flexShrink: 0 }}\n >\n <line\n x1={1}\n y1={Math.max(8, Math.round(size / 1.5)) / 2}\n x2={size + 7}\n y2={Math.max(8, Math.round(size / 1.5)) / 2}\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeDasharray={PATTERN_DASHARRAY[pattern]}\n />\n </svg>\n )\n}\n\n// ─── Chart Gradient Legend ───────────────────────────────────────────────────\n\nexport interface ChartGradientLegendProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Color at the low end of the scale (e.g. background-muted). */\n startColor: string\n /** Color at the high end (e.g. brand). */\n endColor: string\n /** Optional left/start label (typically the minimum value). */\n startLabel?: React.ReactNode\n /** Optional right/end label (typically the maximum value). */\n endLabel?: React.ReactNode\n /** Optional caption above the bar (e.g. \"تراکم انتشار\"). */\n caption?: React.ReactNode\n /** Bar width in px @default 160 */\n width?: number\n /** Bar height in px @default 8 */\n height?: number\n}\n\n/**\n * Continuous-scale legend for charts whose data is encoded as color intensity\n * (HeatMap, choropleth, gradient density). Renders a horizontal gradient bar\n * with start/end labels, captioned for AT via `role=\"img\"` + `aria-label`.\n *\n * For discrete categorical legends (Line/Bar/Pie), use `<ChartLegend>` instead.\n */\nexport const ChartGradientLegend = React.forwardRef<HTMLDivElement, ChartGradientLegendProps>(\n (\n {\n className,\n startColor,\n endColor,\n startLabel,\n endLabel,\n caption,\n width = 160,\n height = 8,\n 'aria-label': ariaLabelProp,\n ...props\n },\n ref\n ) => {\n const ariaLabel =\n ariaLabelProp ??\n (typeof startLabel === 'string' && typeof endLabel === 'string' ? `${startLabel} تا ${endLabel}` : 'مقیاس رنگ')\n return (\n <div\n ref={ref}\n data-slot=\"chart-gradient-legend\"\n className={className}\n role=\"img\"\n aria-label={ariaLabel}\n style={{\n display: 'inline-flex',\n flexDirection: 'column',\n gap: 4,\n fontSize: 12,\n color: 'hsl(var(--foreground-light))',\n }}\n {...props}\n >\n {caption && (\n <div data-slot=\"chart-gradient-legend-caption\" style={{ fontWeight: 500 }}>\n {caption}\n </div>\n )}\n <div\n data-slot=\"chart-gradient-legend-bar\"\n aria-hidden=\"true\"\n style={{\n width,\n height,\n borderRadius: height / 2,\n background: `linear-gradient(to right, ${startColor}, ${endColor})`,\n }}\n />\n {(startLabel !== undefined || endLabel !== undefined) && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width,\n fontVariantNumeric: 'tabular-nums',\n opacity: 0.85,\n }}\n >\n <span data-slot=\"chart-gradient-legend-start\">{startLabel}</span>\n <span data-slot=\"chart-gradient-legend-end\">{endLabel}</span>\n </div>\n )}\n </div>\n )\n }\n)\nChartGradientLegend.displayName = 'ChartGradientLegend'\n\n// ─── Data Transform Utility ──────────────────────────────────────────────────\n\n/**\n * Transforms Nivo line/area data format to Recharts row-oriented format.\n * Useful for consumers migrating from Nivo data shape.\n *\n * @example\n * // Nivo: [{ id: \"فروش\", data: [{ x: \"فروردین\", y: 50 }] }]\n * // Recharts: [{ name: \"فروردین\", فروش: 50 }]\n */\nexport function transformNivoLineData(\n nivoData: Array<{ id: string; data: Array<{ x: string | number; y: number }> }>\n): { data: Array<Record<string, string | number>>; dataKeys: string[] } {\n const dataKeys = nivoData.map((s) => s.id)\n const xValues = nivoData[0]?.data.map((d) => d.x) ?? []\n\n const data = xValues.map((x, xi) => {\n const row: Record<string, string | number> = { name: x }\n for (const series of nivoData) {\n row[series.id] = series.data[xi]?.y ?? 0\n }\n return row\n })\n\n return { data, dataKeys }\n}\n"]}
@@ -1,44 +0,0 @@
1
- import { cn } from './chunk-4SVQNEVH.js';
2
- import * as AvatarPrimitive from '@radix-ui/react-avatar';
3
- import { jsx } from 'react/jsx-runtime';
4
-
5
- function Avatar({ className, ...props }) {
6
- return /* @__PURE__ */ jsx(
7
- AvatarPrimitive.Root,
8
- {
9
- "data-slot": "avatar",
10
- className: cn(
11
- "relative inline-flex size-8 shrink-0 overflow-hidden rounded-full align-middle text-[0px] leading-none",
12
- className
13
- ),
14
- ...props
15
- }
16
- );
17
- }
18
- function AvatarImage({ className, ...props }) {
19
- return /* @__PURE__ */ jsx(
20
- AvatarPrimitive.Image,
21
- {
22
- "data-slot": "avatar-image",
23
- className: cn("block size-full object-cover object-center", className),
24
- ...props
25
- }
26
- );
27
- }
28
- function AvatarFallback({ className, ...props }) {
29
- return /* @__PURE__ */ jsx(
30
- AvatarPrimitive.Fallback,
31
- {
32
- "data-slot": "avatar-fallback",
33
- className: cn("bg-muted flex size-full items-center justify-center rounded-full text-sm", className),
34
- ...props
35
- }
36
- );
37
- }
38
- Avatar.displayName = "Avatar";
39
- AvatarImage.displayName = "AvatarImage";
40
- AvatarFallback.displayName = "AvatarFallback";
41
-
42
- export { Avatar, AvatarFallback, AvatarImage };
43
- //# sourceMappingURL=chunk-RJ3HYZ7S.js.map
44
- //# sourceMappingURL=chunk-RJ3HYZ7S.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ui/avatar.tsx"],"names":[],"mappings":";;;;AAOA,SAAS,MAAA,CAAO,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsD;AAC1F,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAuD;AAChG,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,SAAS,CAAA;AAAA,MACpE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0D;AACtG,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,QAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0EAAA,EAA4E,SAAS,CAAA;AAAA,MAClG,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AACrB,WAAA,CAAY,WAAA,GAAc,aAAA;AAC1B,cAAA,CAAe,WAAA,GAAc,gBAAA","file":"chunk-RJ3HYZ7S.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\n\nimport { cn } from '@/lib/utils'\n\nfunction Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'relative inline-flex size-8 shrink-0 overflow-hidden rounded-full align-middle text-[0px] leading-none',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('block size-full object-cover object-center', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn('bg-muted flex size-full items-center justify-center rounded-full text-sm', className)}\n {...props}\n />\n )\n}\n\nAvatar.displayName = 'Avatar'\nAvatarImage.displayName = 'AvatarImage'\nAvatarFallback.displayName = 'AvatarFallback'\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"]}