@burdenoff/microfe-kadaikodi 2026.704.4 → 2026.710.1

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 (341) hide show
  1. package/dist/generated/global-operations.d.ts +2 -0
  2. package/dist/generated/global-operations.d.ts.map +1 -0
  3. package/dist/generated/global-types.d.ts +23527 -0
  4. package/dist/generated/global-types.d.ts.map +1 -0
  5. package/dist/generated/wspace-operations.d.ts +2 -0
  6. package/dist/generated/wspace-operations.d.ts.map +1 -0
  7. package/dist/generated/wspace-types.d.ts +57851 -0
  8. package/dist/generated/wspace-types.d.ts.map +1 -0
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +2 -1
  12. package/dist/kadaikodi/KadaikodiRoot.d.ts +5 -0
  13. package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -0
  14. package/dist/kadaikodi/KadaikodiRoutes.d.ts +4 -0
  15. package/dist/kadaikodi/KadaikodiRoutes.d.ts.map +1 -0
  16. package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
  17. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  18. package/dist/kadaikodi/components/CartCard.d.ts +18 -0
  19. package/dist/kadaikodi/components/CartCard.d.ts.map +1 -0
  20. package/dist/kadaikodi/components/EmptyState.d.ts +17 -0
  21. package/dist/kadaikodi/components/EmptyState.d.ts.map +1 -0
  22. package/dist/kadaikodi/components/InvestmentCard.d.ts +18 -0
  23. package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -0
  24. package/dist/kadaikodi/components/MetricsCard.d.ts +16 -0
  25. package/dist/kadaikodi/components/MetricsCard.d.ts.map +1 -0
  26. package/dist/kadaikodi/components/OrderCard.d.ts +18 -0
  27. package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -0
  28. package/dist/kadaikodi/components/PageLayout.d.ts +12 -0
  29. package/dist/kadaikodi/components/PageLayout.d.ts.map +1 -0
  30. package/dist/kadaikodi/components/RatingDisplay.d.ts +12 -0
  31. package/dist/kadaikodi/components/RatingDisplay.d.ts.map +1 -0
  32. package/dist/kadaikodi/components/StatusBadge.d.ts +9 -0
  33. package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -0
  34. package/dist/kadaikodi/components/index.d.ts +13 -0
  35. package/dist/kadaikodi/components/index.d.ts.map +1 -0
  36. package/dist/kadaikodi/components/viz/AllocationBar.d.ts +21 -0
  37. package/dist/kadaikodi/components/viz/AllocationBar.d.ts.map +1 -0
  38. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  39. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/AreaChart.d.ts +18 -0
  41. package/dist/kadaikodi/components/viz/AreaChart.d.ts.map +1 -0
  42. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  43. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/AvatarStack.d.ts +13 -0
  45. package/dist/kadaikodi/components/viz/AvatarStack.d.ts.map +1 -0
  46. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  47. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/BarChart.d.ts +17 -0
  49. package/dist/kadaikodi/components/viz/BarChart.d.ts.map +1 -0
  50. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  51. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  52. package/dist/kadaikodi/components/viz/CertificateCard.d.ts +14 -0
  53. package/dist/kadaikodi/components/viz/CertificateCard.d.ts.map +1 -0
  54. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  55. package/dist/kadaikodi/components/viz/DonutChart.d.ts +20 -0
  56. package/dist/kadaikodi/components/viz/DonutChart.d.ts.map +1 -0
  57. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  58. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  59. package/dist/kadaikodi/components/viz/HBarFunnel.d.ts +17 -0
  60. package/dist/kadaikodi/components/viz/HBarFunnel.d.ts.map +1 -0
  61. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  62. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  63. package/dist/kadaikodi/components/viz/Heatmap.d.ts +26 -0
  64. package/dist/kadaikodi/components/viz/Heatmap.d.ts.map +1 -0
  65. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  66. package/dist/kadaikodi/components/viz/KanbanBoard.d.ts +17 -0
  67. package/dist/kadaikodi/components/viz/KanbanBoard.d.ts.map +1 -0
  68. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  69. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  70. package/dist/kadaikodi/components/viz/LineChart.d.ts +20 -0
  71. package/dist/kadaikodi/components/viz/LineChart.d.ts.map +1 -0
  72. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  73. package/dist/kadaikodi/components/viz/OrgTree.d.ts +14 -0
  74. package/dist/kadaikodi/components/viz/OrgTree.d.ts.map +1 -0
  75. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  76. package/dist/kadaikodi/components/viz/PathSteps.d.ts +17 -0
  77. package/dist/kadaikodi/components/viz/PathSteps.d.ts.map +1 -0
  78. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  79. package/dist/kadaikodi/components/viz/ProgressRing.d.ts +20 -0
  80. package/dist/kadaikodi/components/viz/ProgressRing.d.ts.map +1 -0
  81. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  82. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  83. package/dist/kadaikodi/components/viz/RatingStars.d.ts +14 -0
  84. package/dist/kadaikodi/components/viz/RatingStars.d.ts.map +1 -0
  85. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  86. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  87. package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts +26 -0
  88. package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts.map +1 -0
  89. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  90. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  91. package/dist/kadaikodi/components/viz/SkillBar.d.ts +17 -0
  92. package/dist/kadaikodi/components/viz/SkillBar.d.ts.map +1 -0
  93. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  94. package/dist/kadaikodi/components/viz/Sparkline.d.ts +16 -0
  95. package/dist/kadaikodi/components/viz/Sparkline.d.ts.map +1 -0
  96. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  97. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  98. package/dist/kadaikodi/components/viz/StatCard.d.ts +22 -0
  99. package/dist/kadaikodi/components/viz/StatCard.d.ts.map +1 -0
  100. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  101. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  102. package/dist/kadaikodi/components/viz/StepProgress.d.ts +17 -0
  103. package/dist/kadaikodi/components/viz/StepProgress.d.ts.map +1 -0
  104. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  105. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  106. package/dist/kadaikodi/components/viz/Timeline.d.ts +21 -0
  107. package/dist/kadaikodi/components/viz/Timeline.d.ts.map +1 -0
  108. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  109. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  110. package/dist/kadaikodi/components/viz/index.d.ts +35 -0
  111. package/dist/kadaikodi/components/viz/index.d.ts.map +1 -0
  112. package/dist/kadaikodi/components/viz/index.js +23 -0
  113. package/dist/kadaikodi/components/viz/lib/Avatar.d.ts +15 -0
  114. package/dist/kadaikodi/components/viz/lib/Avatar.d.ts.map +1 -0
  115. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  116. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  117. package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts +44 -0
  118. package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts.map +1 -0
  119. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  120. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  121. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts +27 -0
  122. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts.map +1 -0
  123. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  124. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  125. package/dist/kadaikodi/components/viz/lib/format.d.ts +10 -0
  126. package/dist/kadaikodi/components/viz/lib/format.d.ts.map +1 -0
  127. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  128. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  129. package/dist/kadaikodi/components/viz/lib/geometry.d.ts +41 -0
  130. package/dist/kadaikodi/components/viz/lib/geometry.d.ts.map +1 -0
  131. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  132. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  133. package/dist/kadaikodi/components/viz/lib/hooks.d.ts +18 -0
  134. package/dist/kadaikodi/components/viz/lib/hooks.d.ts.map +1 -0
  135. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  136. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  137. package/dist/kadaikodi/components/viz/lib/palette.d.ts +31 -0
  138. package/dist/kadaikodi/components/viz/lib/palette.d.ts.map +1 -0
  139. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  140. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  141. package/dist/kadaikodi/components/viz/lib/types.d.ts +27 -0
  142. package/dist/kadaikodi/components/viz/lib/types.d.ts.map +1 -0
  143. package/dist/kadaikodi/context/KadaikodiContext.d.ts +16 -0
  144. package/dist/kadaikodi/context/KadaikodiContext.d.ts.map +1 -0
  145. package/dist/kadaikodi/context/index.d.ts +6 -0
  146. package/dist/kadaikodi/context/index.d.ts.map +1 -0
  147. package/dist/kadaikodi/hooks/index.d.ts +2 -0
  148. package/dist/kadaikodi/hooks/index.d.ts.map +1 -0
  149. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +169 -0
  150. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -0
  151. package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
  152. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  153. package/dist/kadaikodi/index.d.ts +11 -0
  154. package/dist/kadaikodi/index.d.ts.map +1 -0
  155. package/dist/kadaikodi/pages/HomePage.d.ts +14 -0
  156. package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -0
  157. package/dist/kadaikodi/pages/HomePage.js +373 -631
  158. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  159. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +13 -0
  160. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -0
  161. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  162. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  163. package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts +13 -0
  164. package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts.map +1 -0
  165. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  166. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  167. package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts +12 -0
  168. package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts.map +1 -0
  169. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  170. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  171. package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts +11 -0
  172. package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts.map +1 -0
  173. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  174. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  175. package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts +11 -0
  176. package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts.map +1 -0
  177. package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts +10 -0
  178. package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts.map +1 -0
  179. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +13 -0
  180. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -0
  181. package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
  182. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  183. package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts +10 -0
  184. package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts.map +1 -0
  185. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  186. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts +13 -0
  187. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts.map +1 -0
  188. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
  189. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  190. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts +11 -0
  191. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts.map +1 -0
  192. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts +12 -0
  193. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts.map +1 -0
  194. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
  195. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  196. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts +12 -0
  197. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts.map +1 -0
  198. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts +11 -0
  199. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts.map +1 -0
  200. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts +11 -0
  201. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts.map +1 -0
  202. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
  203. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  204. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts +2 -0
  205. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts.map +1 -0
  206. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
  207. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
  208. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts +2 -0
  209. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -0
  210. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  211. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  212. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts +10 -0
  213. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts.map +1 -0
  214. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
  215. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  216. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +12 -0
  217. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -0
  218. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  219. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  220. package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts +11 -0
  221. package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts.map +1 -0
  222. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  223. package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts +10 -0
  224. package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts.map +1 -0
  225. package/dist/kadaikodi/pages/common/SettingsPage.d.ts +19 -0
  226. package/dist/kadaikodi/pages/common/SettingsPage.d.ts.map +1 -0
  227. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  228. package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts +12 -0
  229. package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts.map +1 -0
  230. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
  231. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  232. package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts +13 -0
  233. package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -0
  234. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  235. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  236. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +11 -0
  237. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -0
  238. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  239. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  240. package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts +9 -0
  241. package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts.map +1 -0
  242. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  243. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  244. package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts +10 -0
  245. package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts.map +1 -0
  246. package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts +10 -0
  247. package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts.map +1 -0
  248. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts +12 -0
  249. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts.map +1 -0
  250. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
  251. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  252. package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts +11 -0
  253. package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts.map +1 -0
  254. package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
  255. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  256. package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts +9 -0
  257. package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts.map +1 -0
  258. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  259. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  260. package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts +9 -0
  261. package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -0
  262. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
  263. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  264. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts +11 -0
  265. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts.map +1 -0
  266. package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts +12 -0
  267. package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts.map +1 -0
  268. package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
  269. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  270. package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts +10 -0
  271. package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts.map +1 -0
  272. package/dist/kadaikodi/pages/customer/shared.d.ts +41 -0
  273. package/dist/kadaikodi/pages/customer/shared.d.ts.map +1 -0
  274. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  275. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  276. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts +13 -0
  277. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts.map +1 -0
  278. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  279. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  280. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts +10 -0
  281. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts.map +1 -0
  282. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  283. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  284. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts +11 -0
  285. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts.map +1 -0
  286. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  287. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  288. package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts +10 -0
  289. package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts.map +1 -0
  290. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  291. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  292. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts +10 -0
  293. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts.map +1 -0
  294. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  295. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  296. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts +11 -0
  297. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts.map +1 -0
  298. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  299. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  300. package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts +20 -0
  301. package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts.map +1 -0
  302. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  303. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +18 -0
  304. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -0
  305. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
  306. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  307. package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts +14 -0
  308. package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts.map +1 -0
  309. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  310. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  311. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts +18 -0
  312. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts.map +1 -0
  313. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  314. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  315. package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts +18 -0
  316. package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts.map +1 -0
  317. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
  318. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  319. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts +16 -0
  320. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts.map +1 -0
  321. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
  322. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  323. package/dist/kadaikodi/store/index.d.ts +6 -0
  324. package/dist/kadaikodi/store/index.d.ts.map +1 -0
  325. package/dist/kadaikodi/store/kadaikodiStore.d.ts +60 -0
  326. package/dist/kadaikodi/store/kadaikodiStore.d.ts.map +1 -0
  327. package/dist/kadaikodi/types/index.d.ts +464 -0
  328. package/dist/kadaikodi/types/index.d.ts.map +1 -0
  329. package/dist/kadaikodi/utils/cn.d.ts +4 -0
  330. package/dist/kadaikodi/utils/cn.d.ts.map +1 -0
  331. package/dist/kadaikodi/utils/formatters.d.ts +78 -0
  332. package/dist/kadaikodi/utils/formatters.d.ts.map +1 -0
  333. package/dist/kadaikodi/utils/index.d.ts +8 -0
  334. package/dist/kadaikodi/utils/index.d.ts.map +1 -0
  335. package/dist/kadaikodi/utils/navigation.d.ts +20 -0
  336. package/dist/kadaikodi/utils/navigation.d.ts.map +1 -0
  337. package/dist/services/createSandboxAssistantTransport.d.ts +43 -0
  338. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  339. package/dist/services/createSandboxAssistantTransport.js +15 -0
  340. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  341. package/package.json +5 -1
@@ -0,0 +1,18 @@
1
+ import { LabeledValue } from './lib/types';
2
+
3
+ export interface AreaChartProps {
4
+ series: LabeledValue[];
5
+ /** Pixel height of the plot. */
6
+ height?: number;
7
+ /** Formats axis + tooltip values. Defaults to compact notation. */
8
+ valueFormatter?: (value: number) => string;
9
+ /** Accessible title; defaults to a generic description. */
10
+ title?: string;
11
+ className?: string;
12
+ }
13
+ /**
14
+ * Gradient-fill area chart with x/y axes, faint grid and a pointer/keyboard
15
+ * hover readout. Draws itself in on mount unless reduced-motion is requested.
16
+ */
17
+ export declare function AreaChart({ series, height, valueFormatter, title, className, }: AreaChartProps): import("react").JSX.Element | null;
18
+ //# sourceMappingURL=AreaChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/AreaChart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,MAAY,EACZ,cAA8B,EAC9B,KAAK,EACL,SAAS,GACV,EAAE,cAAc,sCA8FhB"}
@@ -0,0 +1,102 @@
1
+ import { ACCENT as e } from "./lib/palette.js";
2
+ import { useMounted as t, usePrefersReducedMotion as n, useVizId as r } from "./lib/hooks.js";
3
+ import { buildAreaPath as i, buildLinePath as a } from "./lib/geometry.js";
4
+ import { CartesianFrame as o } from "./lib/CartesianFrame.js";
5
+ import { formatCompact as s } from "./lib/format.js";
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
+ //#region src/kadaikodi/components/viz/AreaChart.tsx
8
+ function u({ series: u, height: d = 200, valueFormatter: f = s, title: p, className: m }) {
9
+ let h = r("area-grad"), g = t(), _ = n();
10
+ if (u.length === 0) return null;
11
+ let v = u.map((e) => e.value), y = u.map((e) => e.label), b = Math.min(...v), x = Math.max(...v), S = x - b || Math.abs(x) || 1;
12
+ return /* @__PURE__ */ c(o, {
13
+ labels: y,
14
+ domain: [b - S * .12, x + S * .12],
15
+ height: d,
16
+ title: p ?? `Area chart of ${u.length} points`,
17
+ formatValue: f,
18
+ className: m,
19
+ tooltip: (e) => /* @__PURE__ */ l("span", { children: [/* @__PURE__ */ l("span", {
20
+ className: "text-text-secondary",
21
+ children: [y[e], ": "]
22
+ }), /* @__PURE__ */ c("span", {
23
+ className: "font-semibold tabular-nums",
24
+ children: f(v[e])
25
+ })] }),
26
+ children: ({ px: t, py: n, plotBottom: r, activeIndex: o }) => {
27
+ let s = v.map((e, r) => ({
28
+ x: t(r),
29
+ y: n(e)
30
+ })), u = a(s), d = i(s, r), f = s[s.length - 1];
31
+ return /* @__PURE__ */ l("g", {
32
+ style: { color: e },
33
+ children: [
34
+ /* @__PURE__ */ c("defs", { children: /* @__PURE__ */ l("linearGradient", {
35
+ id: h,
36
+ x1: "0",
37
+ y1: "0",
38
+ x2: "0",
39
+ y2: "1",
40
+ children: [/* @__PURE__ */ c("stop", {
41
+ offset: "0%",
42
+ stopColor: "currentColor",
43
+ stopOpacity: .34
44
+ }), /* @__PURE__ */ c("stop", {
45
+ offset: "100%",
46
+ stopColor: "currentColor",
47
+ stopOpacity: .02
48
+ })]
49
+ }) }),
50
+ /* @__PURE__ */ c("path", {
51
+ d,
52
+ fill: `url(#${h})`,
53
+ stroke: "none",
54
+ style: {
55
+ opacity: g || _ ? 1 : 0,
56
+ transition: _ ? void 0 : "opacity 700ms ease"
57
+ }
58
+ }),
59
+ /* @__PURE__ */ c("path", {
60
+ d: u,
61
+ fill: "none",
62
+ stroke: "currentColor",
63
+ strokeWidth: 2,
64
+ strokeLinecap: "round",
65
+ strokeLinejoin: "round",
66
+ vectorEffect: "non-scaling-stroke",
67
+ pathLength: 1,
68
+ style: {
69
+ strokeDasharray: 1,
70
+ strokeDashoffset: g || _ ? 0 : 1,
71
+ transition: _ ? void 0 : "stroke-dashoffset 900ms ease"
72
+ }
73
+ }),
74
+ /* @__PURE__ */ c("circle", {
75
+ cx: f.x,
76
+ cy: f.y,
77
+ r: 3.5,
78
+ fill: "currentColor"
79
+ }),
80
+ o === null ? null : /* @__PURE__ */ l("g", { children: [/* @__PURE__ */ c("circle", {
81
+ cx: t(o),
82
+ cy: n(v[o]),
83
+ r: 7,
84
+ fill: "currentColor",
85
+ opacity: .16
86
+ }), /* @__PURE__ */ c("circle", {
87
+ cx: t(o),
88
+ cy: n(v[o]),
89
+ r: 3.5,
90
+ fill: "currentColor",
91
+ stroke: "var(--color-bg-surface)",
92
+ strokeWidth: 1.5
93
+ })] })
94
+ ]
95
+ });
96
+ }
97
+ });
98
+ }
99
+ //#endregion
100
+ export { u as AreaChart };
101
+
102
+ //# sourceMappingURL=AreaChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AreaChart.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/AreaChart.tsx"],"sourcesContent":["import { ACCENT } from './lib/palette';\nimport { CartesianFrame } from './lib/CartesianFrame';\nimport { buildAreaPath, buildLinePath } from './lib/geometry';\nimport { formatCompact } from './lib/format';\nimport { useMounted, usePrefersReducedMotion, useVizId } from './lib/hooks';\nimport type { LabeledValue } from './lib/types';\n\nexport interface AreaChartProps {\n series: LabeledValue[];\n /** Pixel height of the plot. */\n height?: number;\n /** Formats axis + tooltip values. Defaults to compact notation. */\n valueFormatter?: (value: number) => string;\n /** Accessible title; defaults to a generic description. */\n title?: string;\n className?: string;\n}\n\n/**\n * Gradient-fill area chart with x/y axes, faint grid and a pointer/keyboard\n * hover readout. Draws itself in on mount unless reduced-motion is requested.\n */\nexport function AreaChart({\n series,\n height = 200,\n valueFormatter = formatCompact,\n title,\n className,\n}: AreaChartProps) {\n const gradientId = useVizId('area-grad');\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (series.length === 0) {\n return null;\n }\n\n const values = series.map((s) => s.value);\n const labels = series.map((s) => s.label);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const span = max - min || Math.abs(max) || 1;\n const domain: [number, number] = [min - span * 0.12, max + span * 0.12];\n const chartTitle = title ?? `Area chart of ${series.length} points`;\n\n return (\n <CartesianFrame\n labels={labels}\n domain={domain}\n height={height}\n title={chartTitle}\n formatValue={valueFormatter}\n className={className}\n tooltip={(i) => (\n <span>\n <span className=\"text-text-secondary\">{labels[i]}: </span>\n <span className=\"font-semibold tabular-nums\">{valueFormatter(values[i])}</span>\n </span>\n )}\n >\n {({ px, py, plotBottom, activeIndex }) => {\n const points = values.map((v, i) => ({ x: px(i), y: py(v) }));\n const line = buildLinePath(points);\n const area = buildAreaPath(points, plotBottom);\n const last = points[points.length - 1];\n return (\n <g style={{ color: ACCENT }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"currentColor\" stopOpacity={0.34} />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <path\n d={area}\n fill={`url(#${gradientId})`}\n stroke=\"none\"\n style={{\n opacity: mounted || reduced ? 1 : 0,\n transition: reduced ? undefined : 'opacity 700ms ease',\n }}\n />\n <path\n d={line}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n pathLength={1}\n style={{\n strokeDasharray: 1,\n strokeDashoffset: mounted || reduced ? 0 : 1,\n transition: reduced ? undefined : 'stroke-dashoffset 900ms ease',\n }}\n />\n <circle cx={last.x} cy={last.y} r={3.5} fill=\"currentColor\" />\n {activeIndex !== null ? (\n <g>\n <circle\n cx={px(activeIndex)}\n cy={py(values[activeIndex])}\n r={7}\n fill=\"currentColor\"\n opacity={0.16}\n />\n <circle\n cx={px(activeIndex)}\n cy={py(values[activeIndex])}\n r={3.5}\n fill=\"currentColor\"\n stroke=\"var(--color-bg-surface)\"\n strokeWidth={1.5}\n />\n </g>\n ) : null}\n </g>\n );\n }}\n </CartesianFrame>\n );\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,EAAU,EACxB,WACA,YAAS,KACT,oBAAiB,GACjB,UACA,gBACiB;CACjB,IAAM,IAAa,EAAS,YAAY,EAClC,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAO,WAAW,EACpB,QAAO;CAGT,IAAM,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAM,KAAK,IAAI,GAAG,EAAO,EACzB,IAAM,KAAK,IAAI,GAAG,EAAO,EACzB,IAAO,IAAM,KAAO,KAAK,IAAI,EAAI,IAAI;AAI3C,QACE,kBAAC,GAAD;EACU;EACA,QANqB,CAAC,IAAM,IAAO,KAAM,IAAM,IAAO,IAAK;EAO3D;EACR,OAPe,KAAS,iBAAiB,EAAO,OAAO;EAQvD,aAAa;EACF;EACX,UAAU,MACR,kBAAC,QAAD,EAAA,UAAA,CACE,kBAAC,QAAD;GAAM,WAAU;aAAhB,CAAuC,EAAO,IAAG,KAAS;MAC1D,kBAAC,QAAD;GAAM,WAAU;aAA8B,EAAe,EAAO,GAAG;GAAQ,CAAA,CAC1E,EAAA,CAAA;aAGP,EAAE,OAAI,OAAI,eAAY,qBAAkB;GACxC,IAAM,IAAS,EAAO,KAAK,GAAG,OAAO;IAAE,GAAG,EAAG,EAAE;IAAE,GAAG,EAAG,EAAE;IAAE,EAAE,EACvD,IAAO,EAAc,EAAO,EAC5B,IAAO,EAAc,GAAQ,EAAW,EACxC,IAAO,EAAO,EAAO,SAAS;AACpC,UACE,kBAAC,KAAD;IAAG,OAAO,EAAE,OAAO,GAAQ;cAA3B;KACE,kBAAC,QAAD,EAAA,UACE,kBAAC,kBAAD;MAAgB,IAAI;MAAY,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAAxD,CACE,kBAAC,QAAD;OAAM,QAAO;OAAK,WAAU;OAAe,aAAa;OAAQ,CAAA,EAChE,kBAAC,QAAD;OAAM,QAAO;OAAO,WAAU;OAAe,aAAa;OAAQ,CAAA,CACnD;SACZ,CAAA;KACP,kBAAC,QAAD;MACK;MACH,MAAM,QAAQ,EAAW;MACzB,QAAO;MACP,OAAO;OACL,SAAS,KAAW,IAAU,IAAI;OAClC,YAAY,IAAU,KAAA,IAAY;OACnC;MACD,CAAA;KACF,kBAAC,QAAD;MACE,GAAG;MACH,MAAK;MACL,QAAO;MACP,aAAa;MACb,eAAc;MACd,gBAAe;MACf,cAAa;MACb,YAAY;MACZ,OAAO;OACL,iBAAiB;OACjB,kBAAkB,KAAW,IAAU,IAAI;OAC3C,YAAY,IAAU,KAAA,IAAY;OACnC;MACD,CAAA;KACF,kBAAC,UAAD;MAAQ,IAAI,EAAK;MAAG,IAAI,EAAK;MAAG,GAAG;MAAK,MAAK;MAAiB,CAAA;KAC7D,MAAgB,OAkBb,OAjBF,kBAAC,KAAD,EAAA,UAAA,CACE,kBAAC,UAAD;MACE,IAAI,EAAG,EAAY;MACnB,IAAI,EAAG,EAAO,GAAa;MAC3B,GAAG;MACH,MAAK;MACL,SAAS;MACT,CAAA,EACF,kBAAC,UAAD;MACE,IAAI,EAAG,EAAY;MACnB,IAAI,EAAG,EAAO,GAAa;MAC3B,GAAG;MACH,MAAK;MACL,QAAO;MACP,aAAa;MACb,CAAA,CACA,EAAA,CAAA;KAEJ;;;EAGO,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { Person } from './lib/types';
2
+
3
+ export interface AvatarStackProps {
4
+ people: Person[];
5
+ /** Maximum avatars shown before collapsing into a "+N" chip. */
6
+ max?: number;
7
+ /** Pixel diameter of each avatar. */
8
+ size?: number;
9
+ className?: string;
10
+ }
11
+ /** Overlapping avatars with a "+N" overflow chip. */
12
+ export declare function AvatarStack({ people, max, size, className }: AvatarStackProps): import("react").JSX.Element | null;
13
+ //# sourceMappingURL=AvatarStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarStack.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/AvatarStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAO,EAAE,IAAS,EAAE,SAAS,EAAE,EAAE,gBAAgB,sCAmCtF"}
@@ -0,0 +1,36 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { VizAvatar as t } from "./lib/Avatar.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/kadaikodi/components/viz/AvatarStack.tsx
5
+ function i({ people: i, max: a = 5, size: o = 32, className: s }) {
6
+ if (i.length === 0) return null;
7
+ let c = i.slice(0, a), l = i.length - c.length, u = Math.round(o * .32);
8
+ return /* @__PURE__ */ r("div", {
9
+ className: e("flex items-center", s),
10
+ role: "img",
11
+ "aria-label": `${i.length} people: ${i.map((e) => e.name).join(", ")}`,
12
+ children: [c.map((e, r) => /* @__PURE__ */ n("span", {
13
+ style: { marginLeft: r === 0 ? 0 : -u },
14
+ children: /* @__PURE__ */ n(t, {
15
+ name: e.name,
16
+ src: e.avatarUrl,
17
+ size: o,
18
+ ring: !0
19
+ })
20
+ }, `${e.name}-${r}`)), l > 0 ? /* @__PURE__ */ r("span", {
21
+ className: "inline-flex items-center justify-center rounded-full border border-border-subtle bg-bg-elevated font-medium text-text-secondary ring-2 ring-[var(--color-bg-surface)]",
22
+ style: {
23
+ width: o,
24
+ height: o,
25
+ marginLeft: -u,
26
+ fontSize: Math.round(o * .34)
27
+ },
28
+ "aria-hidden": "true",
29
+ children: ["+", l]
30
+ }) : null]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { i as AvatarStack };
35
+
36
+ //# sourceMappingURL=AvatarStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarStack.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/AvatarStack.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport { VizAvatar } from './lib/Avatar';\nimport type { Person } from './lib/types';\n\nexport interface AvatarStackProps {\n people: Person[];\n /** Maximum avatars shown before collapsing into a \"+N\" chip. */\n max?: number;\n /** Pixel diameter of each avatar. */\n size?: number;\n className?: string;\n}\n\n/** Overlapping avatars with a \"+N\" overflow chip. */\nexport function AvatarStack({ people, max = 5, size = 32, className }: AvatarStackProps) {\n if (people.length === 0) {\n return null;\n }\n const shown = people.slice(0, max);\n const overflow = people.length - shown.length;\n const overlap = Math.round(size * 0.32);\n\n return (\n <div\n className={cn('flex items-center', className)}\n role=\"img\"\n aria-label={`${people.length} people: ${people.map((p) => p.name).join(', ')}`}\n >\n {shown.map((person, i) => (\n <span key={`${person.name}-${i}`} style={{ marginLeft: i === 0 ? 0 : -overlap }}>\n <VizAvatar name={person.name} src={person.avatarUrl} size={size} ring />\n </span>\n ))}\n {overflow > 0 ? (\n <span\n className=\"inline-flex items-center justify-center rounded-full border border-border-subtle bg-bg-elevated font-medium text-text-secondary ring-2 ring-[var(--color-bg-surface)]\"\n style={{\n width: size,\n height: size,\n marginLeft: -overlap,\n fontSize: Math.round(size * 0.34),\n }}\n aria-hidden=\"true\"\n >\n +{overflow}\n </span>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;AAcA,SAAgB,EAAY,EAAE,WAAQ,SAAM,GAAG,UAAO,IAAI,gBAA+B;AACvF,KAAI,EAAO,WAAW,EACpB,QAAO;CAET,IAAM,IAAQ,EAAO,MAAM,GAAG,EAAI,EAC5B,IAAW,EAAO,SAAS,EAAM,QACjC,IAAU,KAAK,MAAM,IAAO,IAAK;AAEvC,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,qBAAqB,EAAU;EAC7C,MAAK;EACL,cAAY,GAAG,EAAO,OAAO,WAAW,EAAO,KAAK,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK;YAH9E,CAKG,EAAM,KAAK,GAAQ,MAClB,kBAAC,QAAD;GAAkC,OAAO,EAAE,YAAY,MAAM,IAAI,IAAI,CAAC,GAAS;aAC7E,kBAAC,GAAD;IAAW,MAAM,EAAO;IAAM,KAAK,EAAO;IAAiB;IAAM,MAAA;IAAO,CAAA;GACnE,EAFI,GAAG,EAAO,KAAK,GAAG,IAEtB,CACP,EACD,IAAW,IACV,kBAAC,QAAD;GACE,WAAU;GACV,OAAO;IACL,OAAO;IACP,QAAQ;IACR,YAAY,CAAC;IACb,UAAU,KAAK,MAAM,IAAO,IAAK;IAClC;GACD,eAAY;aARd,CASC,KACG,EACG;OACL,KACA"}
@@ -0,0 +1,17 @@
1
+ import { Segment } from './lib/types';
2
+
3
+ export interface BarChartProps {
4
+ /** Bars to render. A `color` on a datum overrides the palette. */
5
+ series: Segment[];
6
+ height?: number;
7
+ valueFormatter?: (value: number) => string;
8
+ /** Color each bar from the categorical palette instead of a single accent. */
9
+ colorful?: boolean;
10
+ /** Hide the value label above each bar. */
11
+ hideValues?: boolean;
12
+ title?: string;
13
+ className?: string;
14
+ }
15
+ /** Vertical bar chart with value labels and an animated grow-in. */
16
+ export declare function BarChart({ series, height, valueFormatter, colorful, hideValues, title, className, }: BarChartProps): import("react").JSX.Element | null;
17
+ //# sourceMappingURL=BarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/BarChart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,MAAY,EACZ,cAA8B,EAC9B,QAAgB,EAChB,UAAkB,EAClB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,sCAoGf"}
@@ -0,0 +1,83 @@
1
+ import { chartPalette as e } from "./lib/palette.js";
2
+ import { useMounted as t, usePrefersReducedMotion as n } from "./lib/hooks.js";
3
+ import { ResponsiveSvg as r } from "./lib/ResponsiveSvg.js";
4
+ import { scaleLinear as i } from "./lib/geometry.js";
5
+ import { formatCompact as a } from "./lib/format.js";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ //#region src/kadaikodi/components/viz/BarChart.tsx
8
+ var c = {
9
+ top: 20,
10
+ bottom: 26,
11
+ left: 8,
12
+ right: 8
13
+ };
14
+ function l({ series: l, height: u = 220, valueFormatter: d = a, colorful: f = !1, hideValues: p = !1, title: m, className: h }) {
15
+ let g = t(), _ = n();
16
+ if (l.length === 0) return null;
17
+ let v = l.map((e) => e.value), y = Math.max(...v, 0) || 1, b = e(l.length);
18
+ return /* @__PURE__ */ o(r, {
19
+ height: u,
20
+ title: m ?? `Bar chart of ${l.length} categories`,
21
+ className: h,
22
+ desc: l.map((e) => `${e.label}: ${d(e.value)}`).join(", "),
23
+ children: ({ width: e }) => {
24
+ let t = c.left, n = e - c.right, r = c.top, a = u - c.bottom, m = a - r, h = (n - t) / l.length, v = Math.min(56, h * .62);
25
+ return /* @__PURE__ */ s("g", { children: [/* @__PURE__ */ o("line", {
26
+ x1: t,
27
+ x2: n,
28
+ y1: a,
29
+ y2: a,
30
+ stroke: "var(--color-chart-axis)",
31
+ strokeWidth: 1,
32
+ vectorEffect: "non-scaling-stroke",
33
+ opacity: .5
34
+ }), l.map((e, n) => {
35
+ let r = i(e.value, 0, y, 0, m), c = t + h * n + h / 2, l = c - v / 2, x = a - r, S = e.color ?? (f ? b[n] : "var(--color-accent-primary)");
36
+ return /* @__PURE__ */ s("g", { children: [
37
+ /* @__PURE__ */ o("title", { children: `${e.label}: ${d(e.value)}` }),
38
+ /* @__PURE__ */ o("rect", {
39
+ x: l,
40
+ y: x,
41
+ width: v,
42
+ height: Math.max(0, r),
43
+ rx: 4,
44
+ fill: S,
45
+ style: {
46
+ transformBox: "fill-box",
47
+ transformOrigin: "bottom",
48
+ transform: g || _ ? "scaleY(1)" : "scaleY(0)",
49
+ transition: _ ? void 0 : "transform 620ms cubic-bezier(0.22,1,0.36,1)",
50
+ transitionDelay: _ ? void 0 : `${n * 45}ms`
51
+ }
52
+ }),
53
+ p ? null : /* @__PURE__ */ o("text", {
54
+ x: c,
55
+ y: x - 6,
56
+ textAnchor: "middle",
57
+ fontSize: 10,
58
+ fontWeight: 600,
59
+ fill: "var(--color-text-secondary)",
60
+ style: {
61
+ opacity: g || _ ? 1 : 0,
62
+ transition: _ ? void 0 : "opacity 400ms ease",
63
+ transitionDelay: _ ? void 0 : `${n * 45 + 220}ms`
64
+ },
65
+ children: d(e.value)
66
+ }),
67
+ /* @__PURE__ */ o("text", {
68
+ x: c,
69
+ y: u - 8,
70
+ textAnchor: "middle",
71
+ fontSize: 10,
72
+ fill: "var(--color-chart-axis)",
73
+ children: e.label
74
+ })
75
+ ] }, `${e.label}-${n}`);
76
+ })] });
77
+ }
78
+ });
79
+ }
80
+ //#endregion
81
+ export { l as BarChart };
82
+
83
+ //# sourceMappingURL=BarChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/BarChart.tsx"],"sourcesContent":["import { ACCENT, chartPalette } from './lib/palette';\nimport { ResponsiveSvg } from './lib/ResponsiveSvg';\nimport { scaleLinear } from './lib/geometry';\nimport { formatCompact } from './lib/format';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\nimport type { Segment } from './lib/types';\n\nexport interface BarChartProps {\n /** Bars to render. A `color` on a datum overrides the palette. */\n series: Segment[];\n height?: number;\n valueFormatter?: (value: number) => string;\n /** Color each bar from the categorical palette instead of a single accent. */\n colorful?: boolean;\n /** Hide the value label above each bar. */\n hideValues?: boolean;\n title?: string;\n className?: string;\n}\n\nconst PAD = { top: 20, bottom: 26, left: 8, right: 8 };\n\n/** Vertical bar chart with value labels and an animated grow-in. */\nexport function BarChart({\n series,\n height = 220,\n valueFormatter = formatCompact,\n colorful = false,\n hideValues = false,\n title,\n className,\n}: BarChartProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (series.length === 0) {\n return null;\n }\n\n const values = series.map((s) => s.value);\n const max = Math.max(...values, 0) || 1;\n const palette = chartPalette(series.length);\n const chartTitle = title ?? `Bar chart of ${series.length} categories`;\n\n return (\n <ResponsiveSvg\n height={height}\n title={chartTitle}\n className={className}\n desc={series.map((s) => `${s.label}: ${valueFormatter(s.value)}`).join(', ')}\n >\n {({ width }) => {\n const plotLeft = PAD.left;\n const plotRight = width - PAD.right;\n const plotTop = PAD.top;\n const plotBottom = height - PAD.bottom;\n const plotH = plotBottom - plotTop;\n const slot = (plotRight - plotLeft) / series.length;\n const barWidth = Math.min(56, slot * 0.62);\n return (\n <g>\n <line\n x1={plotLeft}\n x2={plotRight}\n y1={plotBottom}\n y2={plotBottom}\n stroke=\"var(--color-chart-axis)\"\n strokeWidth={1}\n vectorEffect=\"non-scaling-stroke\"\n opacity={0.5}\n />\n {series.map((datum, i) => {\n const barH = scaleLinear(datum.value, 0, max, 0, plotH);\n const cx = plotLeft + slot * i + slot / 2;\n const x = cx - barWidth / 2;\n const y = plotBottom - barH;\n const color = datum.color ?? (colorful ? palette[i] : ACCENT);\n return (\n <g key={`${datum.label}-${i}`}>\n <title>{`${datum.label}: ${valueFormatter(datum.value)}`}</title>\n <rect\n x={x}\n y={y}\n width={barWidth}\n height={Math.max(0, barH)}\n rx={4}\n fill={color}\n style={{\n transformBox: 'fill-box',\n transformOrigin: 'bottom',\n transform: mounted || reduced ? 'scaleY(1)' : 'scaleY(0)',\n transition: reduced\n ? undefined\n : 'transform 620ms cubic-bezier(0.22,1,0.36,1)',\n transitionDelay: reduced ? undefined : `${i * 45}ms`,\n }}\n />\n {hideValues ? null : (\n <text\n x={cx}\n y={y - 6}\n textAnchor=\"middle\"\n fontSize={10}\n fontWeight={600}\n fill=\"var(--color-text-secondary)\"\n style={{\n opacity: mounted || reduced ? 1 : 0,\n transition: reduced ? undefined : 'opacity 400ms ease',\n transitionDelay: reduced ? undefined : `${i * 45 + 220}ms`,\n }}\n >\n {valueFormatter(datum.value)}\n </text>\n )}\n <text\n x={cx}\n y={height - 8}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"var(--color-chart-axis)\"\n >\n {datum.label}\n </text>\n </g>\n );\n })}\n </g>\n );\n }}\n </ResponsiveSvg>\n );\n}\n"],"mappings":";;;;;;;AAoBA,IAAM,IAAM;CAAE,KAAK;CAAI,QAAQ;CAAI,MAAM;CAAG,OAAO;CAAG;AAGtD,SAAgB,EAAS,EACvB,WACA,YAAS,KACT,oBAAiB,GACjB,cAAW,IACX,gBAAa,IACb,UACA,gBACgB;CAChB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAO,WAAW,EACpB,QAAO;CAGT,IAAM,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAM,KAAK,IAAI,GAAG,GAAQ,EAAE,IAAI,GAChC,IAAU,EAAa,EAAO,OAAO;AAG3C,QACE,kBAAC,GAAD;EACU;EACR,OALe,KAAS,gBAAgB,EAAO,OAAO;EAM3C;EACX,MAAM,EAAO,KAAK,MAAM,GAAG,EAAE,MAAM,IAAI,EAAe,EAAE,MAAM,GAAG,CAAC,KAAK,KAAK;aAE1E,EAAE,eAAY;GACd,IAAM,IAAW,EAAI,MACf,IAAY,IAAQ,EAAI,OACxB,IAAU,EAAI,KACd,IAAa,IAAS,EAAI,QAC1B,IAAQ,IAAa,GACrB,KAAQ,IAAY,KAAY,EAAO,QACvC,IAAW,KAAK,IAAI,IAAI,IAAO,IAAK;AAC1C,UACE,kBAAC,KAAD,EAAA,UAAA,CACE,kBAAC,QAAD;IACE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAO;IACP,aAAa;IACb,cAAa;IACb,SAAS;IACT,CAAA,EACD,EAAO,KAAK,GAAO,MAAM;IACxB,IAAM,IAAO,EAAY,EAAM,OAAO,GAAG,GAAK,GAAG,EAAM,EACjD,IAAK,IAAW,IAAO,IAAI,IAAO,GAClC,IAAI,IAAK,IAAW,GACpB,IAAI,IAAa,GACjB,IAAQ,EAAM,UAAU,IAAW,EAAQ,KAAA;AACjD,WACE,kBAAC,KAAD,EAAA,UAAA;KACE,kBAAC,SAAD,EAAA,UAAQ,GAAG,EAAM,MAAM,IAAI,EAAe,EAAM,MAAM,IAAW,CAAA;KACjE,kBAAC,QAAD;MACK;MACA;MACH,OAAO;MACP,QAAQ,KAAK,IAAI,GAAG,EAAK;MACzB,IAAI;MACJ,MAAM;MACN,OAAO;OACL,cAAc;OACd,iBAAiB;OACjB,WAAW,KAAW,IAAU,cAAc;OAC9C,YAAY,IACR,KAAA,IACA;OACJ,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,GAAG;OAClD;MACD,CAAA;KACD,IAAa,OACZ,kBAAC,QAAD;MACE,GAAG;MACH,GAAG,IAAI;MACP,YAAW;MACX,UAAU;MACV,YAAY;MACZ,MAAK;MACL,OAAO;OACL,SAAS,KAAW,IAAU,IAAI;OAClC,YAAY,IAAU,KAAA,IAAY;OAClC,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,KAAK,IAAI;OACxD;gBAEA,EAAe,EAAM,MAAM;MACvB,CAAA;KAET,kBAAC,QAAD;MACE,GAAG;MACH,GAAG,IAAS;MACZ,YAAW;MACX,UAAU;MACV,MAAK;gBAEJ,EAAM;MACF,CAAA;KACL,EAAA,EA7CI,GAAG,EAAM,MAAM,GAAG,IA6CtB;KAEN,CACA,EAAA,CAAA;;EAGM,CAAA"}
@@ -0,0 +1,14 @@
1
+ export interface CertificateCardProps {
2
+ title: string;
3
+ recipient: string;
4
+ date: string;
5
+ issuer?: string;
6
+ credentialId?: string;
7
+ /** When provided, renders a download button wired to this handler. */
8
+ onDownload?: () => void;
9
+ downloadLabel?: string;
10
+ className?: string;
11
+ }
12
+ /** Landscape certificate tile with seal, recipient, date and download affordance. */
13
+ export declare function CertificateCard({ title, recipient, date, issuer, credentialId, onDownload, downloadLabel, className, }: CertificateCardProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=CertificateCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CertificateCard.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/CertificateCard.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,SAAS,EACT,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,UAAU,EACV,aAA0B,EAC1B,SAAS,GACV,EAAE,oBAAoB,+BAkDtB"}
@@ -0,0 +1,4 @@
1
+ import "./lib/palette.js";
2
+ import "lucide-react";
3
+ import "react/jsx-runtime";
4
+ import "@burdenoff/fe-libs/ui";
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ import { Segment } from './lib/types';
3
+
4
+ export interface DonutChartProps {
5
+ segments: Segment[];
6
+ centerLabel?: ReactNode;
7
+ /** Small caption under the center label. */
8
+ centerCaption?: ReactNode;
9
+ /** Pixel diameter (scales down responsively). */
10
+ size?: number;
11
+ /** Ring thickness as a fraction of the radius (0–1). */
12
+ thickness?: number;
13
+ valueFormatter?: (value: number) => string;
14
+ showLegend?: boolean;
15
+ title?: string;
16
+ className?: string;
17
+ }
18
+ /** Donut chart with a center label and an optional legend. */
19
+ export declare function DonutChart({ segments, centerLabel, centerCaption, size, thickness, valueFormatter, showLegend, title, className, }: DonutChartProps): import("react").JSX.Element | null;
20
+ //# sourceMappingURL=DonutChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutChart.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/DonutChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,IAAU,EACV,SAAgB,EAChB,cAA8B,EAC9B,UAAiB,EACjB,KAAK,EACL,SAAS,GACV,EAAE,eAAe,sCAyHjB"}
@@ -0,0 +1,109 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { chartPalette as t } from "./lib/palette.js";
3
+ import { useMounted as n, usePrefersReducedMotion as r } from "./lib/hooks.js";
4
+ import { donutSegmentPath as i } from "./lib/geometry.js";
5
+ import { formatCompact as a, toPercent as o } from "./lib/format.js";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ //#region src/kadaikodi/components/viz/DonutChart.tsx
8
+ var l = 100, u = l / 2, d = 46;
9
+ function f({ segments: f, centerLabel: p, centerCaption: m, size: h = 168, thickness: g = .28, valueFormatter: _ = a, showLegend: v = !0, title: y, className: b }) {
10
+ let x = n(), S = r();
11
+ if (f.length === 0) return null;
12
+ let C = f.reduce((e, t) => e + Math.max(0, t.value), 0), w = t(f.length), T = d * (1 - g), E = y ?? `Donut chart of ${f.length} segments`, D = f.map((e) => C > 0 ? Math.max(0, e.value) / C : 0), O = D.map((e, t) => D.slice(0, t).reduce((e, t) => e + t, 0)), k = f.map((e, t) => {
13
+ let n = D[t], r = O[t] * 360, i = Math.min((O[t] + n) * 360, 359.999);
14
+ return {
15
+ segment: e,
16
+ color: e.color ?? w[t],
17
+ startAngle: r,
18
+ endAngle: i,
19
+ fraction: n,
20
+ isFull: n >= .9999
21
+ };
22
+ });
23
+ return /* @__PURE__ */ c("div", {
24
+ className: e("flex flex-wrap items-center gap-5", b),
25
+ children: [/* @__PURE__ */ c("div", {
26
+ className: "relative shrink-0",
27
+ style: {
28
+ width: h,
29
+ height: h,
30
+ maxWidth: "100%"
31
+ },
32
+ children: [/* @__PURE__ */ c("svg", {
33
+ viewBox: `0 0 ${l} ${l}`,
34
+ width: h,
35
+ height: h,
36
+ role: "img",
37
+ "aria-label": E,
38
+ style: {
39
+ display: "block",
40
+ maxWidth: "100%",
41
+ height: "auto"
42
+ },
43
+ children: [
44
+ /* @__PURE__ */ s("title", { children: E }),
45
+ /* @__PURE__ */ s("desc", { children: f.map((e) => `${e.label}: ${_(e.value)} (${o(e.value, C)}%)`).join(", ") }),
46
+ /* @__PURE__ */ s("g", {
47
+ style: {
48
+ transformOrigin: "center",
49
+ transform: x || S ? "scale(1)" : "scale(0.86)",
50
+ transition: S ? void 0 : "transform 520ms cubic-bezier(0.22,1,0.36,1)"
51
+ },
52
+ children: k.map((e, t) => {
53
+ let n = {
54
+ fill: e.color,
55
+ style: {
56
+ opacity: x || S ? 1 : 0,
57
+ transition: S ? void 0 : "opacity 460ms ease",
58
+ transitionDelay: S ? void 0 : `${t * 70}ms`
59
+ }
60
+ };
61
+ return e.isFull ? /* @__PURE__ */ s("path", {
62
+ d: `M ${u} ${u - d} A ${d} ${d} 0 1 0 ${u} ${u + d} A ${d} ${d} 0 1 0 ${u} ${u - d} M ${u} ${u - T} A ${T} ${T} 0 1 1 ${u} ${u + T} A ${T} ${T} 0 1 1 ${u} ${u - T} Z`,
63
+ fillRule: "evenodd",
64
+ ...n
65
+ }, `${e.segment.label}-${t}`) : /* @__PURE__ */ s("path", {
66
+ d: i(u, u, d, T, e.startAngle, e.endAngle),
67
+ ...n,
68
+ children: /* @__PURE__ */ s("title", { children: `${e.segment.label}: ${_(e.segment.value)}` })
69
+ }, `${e.segment.label}-${t}`);
70
+ })
71
+ })
72
+ ]
73
+ }), p !== void 0 || m !== void 0 ? /* @__PURE__ */ c("div", {
74
+ className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center",
75
+ children: [/* @__PURE__ */ s("span", {
76
+ className: "text-xl font-semibold leading-none text-text-primary",
77
+ children: p
78
+ }), m === void 0 ? null : /* @__PURE__ */ s("span", {
79
+ className: "mt-1 text-xs text-text-muted",
80
+ children: m
81
+ })]
82
+ }) : null]
83
+ }), v ? /* @__PURE__ */ s("ul", {
84
+ className: "flex min-w-[8rem] flex-1 flex-col gap-1.5 text-sm",
85
+ children: k.map((e, t) => /* @__PURE__ */ c("li", {
86
+ className: "flex items-center gap-2",
87
+ children: [
88
+ /* @__PURE__ */ s("span", {
89
+ "aria-hidden": "true",
90
+ className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
91
+ style: { backgroundColor: e.color }
92
+ }),
93
+ /* @__PURE__ */ s("span", {
94
+ className: "flex-1 truncate text-text-secondary",
95
+ children: e.segment.label
96
+ }),
97
+ /* @__PURE__ */ c("span", {
98
+ className: "tabular-nums text-text-muted",
99
+ children: [o(e.segment.value, C), "%"]
100
+ })
101
+ ]
102
+ }, `${e.segment.label}-${t}`))
103
+ }) : null]
104
+ });
105
+ }
106
+ //#endregion
107
+ export { f as DonutChart };
108
+
109
+ //# sourceMappingURL=DonutChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutChart.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/DonutChart.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { chartPalette } from './lib/palette';\nimport { donutSegmentPath } from './lib/geometry';\nimport { formatCompact, toPercent } from './lib/format';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\nimport type { Segment } from './lib/types';\n\nexport interface DonutChartProps {\n segments: Segment[];\n centerLabel?: ReactNode;\n /** Small caption under the center label. */\n centerCaption?: ReactNode;\n /** Pixel diameter (scales down responsively). */\n size?: number;\n /** Ring thickness as a fraction of the radius (0–1). */\n thickness?: number;\n valueFormatter?: (value: number) => string;\n showLegend?: boolean;\n title?: string;\n className?: string;\n}\n\nconst VIEW = 100;\nconst CENTER = VIEW / 2;\nconst R_OUTER = 46;\n\n/** Donut chart with a center label and an optional legend. */\nexport function DonutChart({\n segments,\n centerLabel,\n centerCaption,\n size = 168,\n thickness = 0.28,\n valueFormatter = formatCompact,\n showLegend = true,\n title,\n className,\n}: DonutChartProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (segments.length === 0) {\n return null;\n }\n\n const total = segments.reduce((acc, s) => acc + Math.max(0, s.value), 0);\n const palette = chartPalette(segments.length);\n const rInner = R_OUTER * (1 - thickness);\n const chartTitle = title ?? `Donut chart of ${segments.length} segments`;\n\n const fractions = segments.map((s) => (total > 0 ? Math.max(0, s.value) / total : 0));\n const starts = fractions.map((_, i) => fractions.slice(0, i).reduce((a, b) => a + b, 0));\n const arcs = segments.map((segment, i) => {\n const fraction = fractions[i];\n const startAngle = starts[i] * 360;\n const endAngle = Math.min((starts[i] + fraction) * 360, 359.999);\n const color = segment.color ?? palette[i];\n return { segment, color, startAngle, endAngle, fraction, isFull: fraction >= 0.9999 };\n });\n\n return (\n <div className={cn('flex flex-wrap items-center gap-5', className)}>\n <div className=\"relative shrink-0\" style={{ width: size, height: size, maxWidth: '100%' }}>\n <svg\n viewBox={`0 0 ${VIEW} ${VIEW}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={chartTitle}\n style={{ display: 'block', maxWidth: '100%', height: 'auto' }}\n >\n <title>{chartTitle}</title>\n <desc>\n {segments\n .map((s) => `${s.label}: ${valueFormatter(s.value)} (${toPercent(s.value, total)}%)`)\n .join(', ')}\n </desc>\n <g\n style={{\n transformOrigin: 'center',\n transform: mounted || reduced ? 'scale(1)' : 'scale(0.86)',\n transition: reduced ? undefined : 'transform 520ms cubic-bezier(0.22,1,0.36,1)',\n }}\n >\n {arcs.map((arc, i) => {\n const shared = {\n fill: arc.color,\n style: {\n opacity: mounted || reduced ? 1 : 0,\n transition: reduced ? undefined : 'opacity 460ms ease',\n transitionDelay: reduced ? undefined : `${i * 70}ms`,\n },\n } as const;\n if (arc.isFull) {\n return (\n <path\n key={`${arc.segment.label}-${i}`}\n d={`M ${CENTER} ${CENTER - R_OUTER} A ${R_OUTER} ${R_OUTER} 0 1 0 ${CENTER} ${\n CENTER + R_OUTER\n } A ${R_OUTER} ${R_OUTER} 0 1 0 ${CENTER} ${CENTER - R_OUTER} M ${CENTER} ${\n CENTER - rInner\n } A ${rInner} ${rInner} 0 1 1 ${CENTER} ${CENTER + rInner} A ${rInner} ${rInner} 0 1 1 ${CENTER} ${\n CENTER - rInner\n } Z`}\n fillRule=\"evenodd\"\n {...shared}\n />\n );\n }\n return (\n <path\n key={`${arc.segment.label}-${i}`}\n d={donutSegmentPath(\n CENTER,\n CENTER,\n R_OUTER,\n rInner,\n arc.startAngle,\n arc.endAngle\n )}\n {...shared}\n >\n <title>{`${arc.segment.label}: ${valueFormatter(arc.segment.value)}`}</title>\n </path>\n );\n })}\n </g>\n </svg>\n {centerLabel !== undefined || centerCaption !== undefined ? (\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center\">\n <span className=\"text-xl font-semibold leading-none text-text-primary\">\n {centerLabel}\n </span>\n {centerCaption !== undefined ? (\n <span className=\"mt-1 text-xs text-text-muted\">{centerCaption}</span>\n ) : null}\n </div>\n ) : null}\n </div>\n {showLegend ? (\n <ul className=\"flex min-w-[8rem] flex-1 flex-col gap-1.5 text-sm\">\n {arcs.map((arc, i) => (\n <li key={`${arc.segment.label}-${i}`} className=\"flex items-center gap-2\">\n <span\n aria-hidden=\"true\"\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: arc.color }}\n />\n <span className=\"flex-1 truncate text-text-secondary\">{arc.segment.label}</span>\n <span className=\"tabular-nums text-text-muted\">\n {toPercent(arc.segment.value, total)}%\n </span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAuBA,IAAM,IAAO,KACP,IAAS,IAAO,GAChB,IAAU;AAGhB,SAAgB,EAAW,EACzB,aACA,gBACA,kBACA,UAAO,KACP,eAAY,KACZ,oBAAiB,GACjB,gBAAa,IACb,UACA,gBACkB;CAClB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAS,WAAW,EACtB,QAAO;CAGT,IAAM,IAAQ,EAAS,QAAQ,GAAK,MAAM,IAAM,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,EAClE,IAAU,EAAa,EAAS,OAAO,EACvC,IAAS,KAAW,IAAI,IACxB,IAAa,KAAS,kBAAkB,EAAS,OAAO,YAExD,IAAY,EAAS,KAAK,MAAO,IAAQ,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,IAAQ,EAAG,EAC/E,IAAS,EAAU,KAAK,GAAG,MAAM,EAAU,MAAM,GAAG,EAAE,CAAC,QAAQ,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,EAClF,IAAO,EAAS,KAAK,GAAS,MAAM;EACxC,IAAM,IAAW,EAAU,IACrB,IAAa,EAAO,KAAK,KACzB,IAAW,KAAK,KAAK,EAAO,KAAK,KAAY,KAAK,QAAQ;AAEhE,SAAO;GAAE;GAAS,OADJ,EAAQ,SAAS,EAAQ;GACd;GAAY;GAAU;GAAU,QAAQ,KAAY;GAAQ;GACrF;AAEF,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,qCAAqC,EAAU;YAAlE,CACE,kBAAC,OAAD;GAAK,WAAU;GAAoB,OAAO;IAAE,OAAO;IAAM,QAAQ;IAAM,UAAU;IAAQ;aAAzF,CACE,kBAAC,OAAD;IACE,SAAS,OAAO,EAAK,GAAG;IACxB,OAAO;IACP,QAAQ;IACR,MAAK;IACL,cAAY;IACZ,OAAO;KAAE,SAAS;KAAS,UAAU;KAAQ,QAAQ;KAAQ;cAN/D;KAQE,kBAAC,SAAD,EAAA,UAAQ,GAAmB,CAAA;KAC3B,kBAAC,QAAD,EAAA,UACG,EACE,KAAK,MAAM,GAAG,EAAE,MAAM,IAAI,EAAe,EAAE,MAAM,CAAC,IAAI,EAAU,EAAE,OAAO,EAAM,CAAC,IAAI,CACpF,KAAK,KAAK,EACR,CAAA;KACP,kBAAC,KAAD;MACE,OAAO;OACL,iBAAiB;OACjB,WAAW,KAAW,IAAU,aAAa;OAC7C,YAAY,IAAU,KAAA,IAAY;OACnC;gBAEA,EAAK,KAAK,GAAK,MAAM;OACpB,IAAM,IAAS;QACb,MAAM,EAAI;QACV,OAAO;SACL,SAAS,KAAW,IAAU,IAAI;SAClC,YAAY,IAAU,KAAA,IAAY;SAClC,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,GAAG;SAClD;QACF;AAiBD,cAhBI,EAAI,SAEJ,kBAAC,QAAD;QAEE,GAAG,KAAK,EAAO,GAAG,IAAS,EAAQ,KAAK,EAAQ,GAAG,EAAQ,SAAS,EAAO,GACzE,IAAS,EACV,KAAK,EAAQ,GAAG,EAAQ,SAAS,EAAO,GAAG,IAAS,EAAQ,KAAK,EAAO,GACvE,IAAS,EACV,KAAK,EAAO,GAAG,EAAO,SAAS,EAAO,GAAG,IAAS,EAAO,KAAK,EAAO,GAAG,EAAO,SAAS,EAAO,GAC9F,IAAS,EACV;QACD,UAAS;QACT,GAAI;QACJ,EAVK,GAAG,EAAI,QAAQ,MAAM,GAAG,IAU7B,GAIJ,kBAAC,QAAD;QAEE,GAAG,EACD,GACA,GACA,GACA,GACA,EAAI,YACJ,EAAI,SACL;QACD,GAAI;kBAEJ,kBAAC,SAAD,EAAA,UAAQ,GAAG,EAAI,QAAQ,MAAM,IAAI,EAAe,EAAI,QAAQ,MAAM,IAAW,CAAA;QACxE,EAZA,GAAG,EAAI,QAAQ,MAAM,GAAG,IAYxB;QAET;MACA,CAAA;KACA;OACL,MAAgB,KAAA,KAAa,MAAkB,KAAA,IAC9C,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,QAAD;KAAM,WAAU;eACb;KACI,CAAA,EACN,MAAkB,KAAA,IAEf,OADF,kBAAC,QAAD;KAAM,WAAU;eAAgC;KAAqB,CAAA,CAEnE;QACJ,KACA;MACL,IACC,kBAAC,MAAD;GAAI,WAAU;aACX,EAAK,KAAK,GAAK,MACd,kBAAC,MAAD;IAAsC,WAAU;cAAhD;KACE,kBAAC,QAAD;MACE,eAAY;MACZ,WAAU;MACV,OAAO,EAAE,iBAAiB,EAAI,OAAO;MACrC,CAAA;KACF,kBAAC,QAAD;MAAM,WAAU;gBAAuC,EAAI,QAAQ;MAAa,CAAA;KAChF,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACG,EAAU,EAAI,QAAQ,OAAO,EAAM,EAAC,IAChC;;KACJ;MAVI,GAAG,EAAI,QAAQ,MAAM,GAAG,IAU5B,CACL;GACC,CAAA,GACH,KACA"}
@@ -0,0 +1,17 @@
1
+ import { LabeledValue } from './lib/types';
2
+
3
+ export interface HBarFunnelProps {
4
+ /** Ordered funnel stages, largest first. */
5
+ stages: LabeledValue[];
6
+ valueFormatter?: (value: number) => string;
7
+ /** Show conversion % relative to the first stage. */
8
+ showConversion?: boolean;
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Horizontal descending funnel. Each stage renders as a bar whose width is
13
+ * proportional to the top-of-funnel value; the accent fades down the funnel so
14
+ * the drop-off reads at a glance. Built with CSS bars for crisp, real text.
15
+ */
16
+ export declare function HBarFunnel({ stages, valueFormatter, showConversion, className, }: HBarFunnelProps): import("react").JSX.Element | null;
17
+ //# sourceMappingURL=HBarFunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HBarFunnel.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/HBarFunnel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,cAA8B,EAC9B,cAAqB,EACrB,SAAS,GACV,EAAE,eAAe,sCAmDjB"}
@@ -0,0 +1,54 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { ACCENT as t } from "./lib/palette.js";
3
+ import { useMounted as n, usePrefersReducedMotion as r } from "./lib/hooks.js";
4
+ import { formatCompact as i, toPercent as a } from "./lib/format.js";
5
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ //#region src/kadaikodi/components/viz/HBarFunnel.tsx
7
+ function c({ stages: c, valueFormatter: l = i, showConversion: u = !0, className: d }) {
8
+ let f = n(), p = r();
9
+ if (c.length === 0) return null;
10
+ let m = Math.max(c[0]?.value ?? 0, 1);
11
+ return /* @__PURE__ */ o("ol", {
12
+ className: e("flex flex-col gap-2", d),
13
+ children: c.map((e, n) => {
14
+ let r = a(e.value, m, 1), i = n === 0 ? 100 : a(e.value, c[n - 1].value, 1), d = 1 - n / Math.max(c.length, 2) * .62;
15
+ return /* @__PURE__ */ s("li", {
16
+ className: "flex flex-col gap-1",
17
+ children: [/* @__PURE__ */ s("div", {
18
+ className: "flex items-baseline justify-between text-sm",
19
+ children: [/* @__PURE__ */ o("span", {
20
+ className: "font-medium text-text-primary",
21
+ children: e.label
22
+ }), /* @__PURE__ */ s("span", {
23
+ className: "tabular-nums text-text-secondary",
24
+ children: [l(e.value), u && n > 0 ? /* @__PURE__ */ s("span", {
25
+ className: "ml-2 text-xs text-text-muted",
26
+ children: [i, "%"]
27
+ }) : null]
28
+ })]
29
+ }), /* @__PURE__ */ o("div", {
30
+ className: "h-7 w-full overflow-hidden rounded-[var(--radius-input)] bg-bg-sunken",
31
+ role: "progressbar",
32
+ "aria-valuenow": Math.round(r),
33
+ "aria-valuemin": 0,
34
+ "aria-valuemax": 100,
35
+ "aria-label": `${e.label}: ${l(e.value)}`,
36
+ children: /* @__PURE__ */ o("div", {
37
+ className: "h-full rounded-[var(--radius-input)]",
38
+ style: {
39
+ width: f || p ? `${r}%` : "0%",
40
+ backgroundColor: t,
41
+ opacity: d,
42
+ transition: p ? void 0 : "width 720ms cubic-bezier(0.22,1,0.36,1)",
43
+ transitionDelay: p ? void 0 : `${n * 70}ms`
44
+ }
45
+ })
46
+ })]
47
+ }, `${e.label}-${n}`);
48
+ })
49
+ });
50
+ }
51
+ //#endregion
52
+ export { c as HBarFunnel };
53
+
54
+ //# sourceMappingURL=HBarFunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HBarFunnel.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/HBarFunnel.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\nimport { formatCompact, toPercent } from './lib/format';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\nimport type { LabeledValue } from './lib/types';\n\nexport interface HBarFunnelProps {\n /** Ordered funnel stages, largest first. */\n stages: LabeledValue[];\n valueFormatter?: (value: number) => string;\n /** Show conversion % relative to the first stage. */\n showConversion?: boolean;\n className?: string;\n}\n\n/**\n * Horizontal descending funnel. Each stage renders as a bar whose width is\n * proportional to the top-of-funnel value; the accent fades down the funnel so\n * the drop-off reads at a glance. Built with CSS bars for crisp, real text.\n */\nexport function HBarFunnel({\n stages,\n valueFormatter = formatCompact,\n showConversion = true,\n className,\n}: HBarFunnelProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (stages.length === 0) {\n return null;\n }\n\n const top = Math.max(stages[0]?.value ?? 0, 1);\n\n return (\n <ol className={cn('flex flex-col gap-2', className)}>\n {stages.map((stage, i) => {\n const pct = toPercent(stage.value, top, 1);\n const conversion = i === 0 ? 100 : toPercent(stage.value, stages[i - 1].value, 1);\n const fillOpacity = 1 - (i / Math.max(stages.length, 2)) * 0.62;\n return (\n <li key={`${stage.label}-${i}`} className=\"flex flex-col gap-1\">\n <div className=\"flex items-baseline justify-between text-sm\">\n <span className=\"font-medium text-text-primary\">{stage.label}</span>\n <span className=\"tabular-nums text-text-secondary\">\n {valueFormatter(stage.value)}\n {showConversion && i > 0 ? (\n <span className=\"ml-2 text-xs text-text-muted\">{conversion}%</span>\n ) : null}\n </span>\n </div>\n <div\n className=\"h-7 w-full overflow-hidden rounded-[var(--radius-input)] bg-bg-sunken\"\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`${stage.label}: ${valueFormatter(stage.value)}`}\n >\n <div\n className=\"h-full rounded-[var(--radius-input)]\"\n style={{\n width: mounted || reduced ? `${pct}%` : '0%',\n backgroundColor: ACCENT,\n opacity: fillOpacity,\n transition: reduced ? undefined : 'width 720ms cubic-bezier(0.22,1,0.36,1)',\n transitionDelay: reduced ? undefined : `${i * 70}ms`,\n }}\n />\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,EAAW,EACzB,WACA,oBAAiB,GACjB,oBAAiB,IACjB,gBACkB;CAClB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAO,WAAW,EACpB,QAAO;CAGT,IAAM,IAAM,KAAK,IAAI,EAAO,IAAI,SAAS,GAAG,EAAE;AAE9C,QACE,kBAAC,MAAD;EAAI,WAAW,EAAG,uBAAuB,EAAU;YAChD,EAAO,KAAK,GAAO,MAAM;GACxB,IAAM,IAAM,EAAU,EAAM,OAAO,GAAK,EAAE,EACpC,IAAa,MAAM,IAAI,MAAM,EAAU,EAAM,OAAO,EAAO,IAAI,GAAG,OAAO,EAAE,EAC3E,IAAc,IAAK,IAAI,KAAK,IAAI,EAAO,QAAQ,EAAE,GAAI;AAC3D,UACE,kBAAC,MAAD;IAAgC,WAAU;cAA1C,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD;MAAM,WAAU;gBAAiC,EAAM;MAAa,CAAA,EACpE,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACG,EAAe,EAAM,MAAM,EAC3B,KAAkB,IAAI,IACrB,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAgD,GAAW,IAAQ;WACjE,KACC;QACH;QACN,kBAAC,OAAD;KACE,WAAU;KACV,MAAK;KACL,iBAAe,KAAK,MAAM,EAAI;KAC9B,iBAAe;KACf,iBAAe;KACf,cAAY,GAAG,EAAM,MAAM,IAAI,EAAe,EAAM,MAAM;eAE1D,kBAAC,OAAD;MACE,WAAU;MACV,OAAO;OACL,OAAO,KAAW,IAAU,GAAG,EAAI,KAAK;OACxC,iBAAiB;OACjB,SAAS;OACT,YAAY,IAAU,KAAA,IAAY;OAClC,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,GAAG;OAClD;MACD,CAAA;KACE,CAAA,CACH;MA7BI,GAAG,EAAM,MAAM,GAAG,IA6BtB;IAEP;EACC,CAAA"}
@@ -0,0 +1,26 @@
1
+ export interface HeatmapCell {
2
+ value: number;
3
+ /** Per-cell max; otherwise the grid-wide max is used. */
4
+ max?: number;
5
+ }
6
+ export interface HeatmapRow {
7
+ label: string;
8
+ cells: HeatmapCell[];
9
+ }
10
+ export interface HeatmapProps {
11
+ rows: HeatmapRow[];
12
+ colLabels?: string[];
13
+ /** Show the intensity legend below the grid. */
14
+ legend?: boolean;
15
+ /** Show the numeric value inside each cell. */
16
+ showValues?: boolean;
17
+ valueFormatter?: (value: number) => string;
18
+ title?: string;
19
+ className?: string;
20
+ }
21
+ /**
22
+ * Row × column grid with accent-shaded cells. Rendered as a real table (row +
23
+ * column headers) and horizontally scrollable so wide grids never push the page.
24
+ */
25
+ export declare function Heatmap({ rows, colLabels, legend, showValues, valueFormatter, title, className, }: HeatmapProps): import("react").JSX.Element | null;
26
+ //# sourceMappingURL=Heatmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heatmap.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/Heatmap.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,SAAS,EACT,MAAa,EACb,UAAkB,EAClB,cAAiC,EACjC,KAAK,EACL,SAAS,GACV,EAAE,YAAY,sCAwGd"}
@@ -0,0 +1,3 @@
1
+ import "./lib/palette.js";
2
+ import "./lib/hooks.js";
3
+ import "react/jsx-runtime";