@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.
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +23527 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +57851 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/dist/kadaikodi/KadaikodiRoot.d.ts +5 -0
- package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -0
- package/dist/kadaikodi/KadaikodiRoutes.d.ts +4 -0
- package/dist/kadaikodi/KadaikodiRoutes.d.ts.map +1 -0
- package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/components/CartCard.d.ts +18 -0
- package/dist/kadaikodi/components/CartCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/EmptyState.d.ts +17 -0
- package/dist/kadaikodi/components/EmptyState.d.ts.map +1 -0
- package/dist/kadaikodi/components/InvestmentCard.d.ts +18 -0
- package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/MetricsCard.d.ts +16 -0
- package/dist/kadaikodi/components/MetricsCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/OrderCard.d.ts +18 -0
- package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/PageLayout.d.ts +12 -0
- package/dist/kadaikodi/components/PageLayout.d.ts.map +1 -0
- package/dist/kadaikodi/components/RatingDisplay.d.ts +12 -0
- package/dist/kadaikodi/components/RatingDisplay.d.ts.map +1 -0
- package/dist/kadaikodi/components/StatusBadge.d.ts +9 -0
- package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -0
- package/dist/kadaikodi/components/index.d.ts +13 -0
- package/dist/kadaikodi/components/index.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/AllocationBar.d.ts +21 -0
- package/dist/kadaikodi/components/viz/AllocationBar.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.d.ts +18 -0
- package/dist/kadaikodi/components/viz/AreaChart.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
- package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.d.ts +13 -0
- package/dist/kadaikodi/components/viz/AvatarStack.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.d.ts +17 -0
- package/dist/kadaikodi/components/viz/BarChart.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.js +83 -0
- package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.d.ts +14 -0
- package/dist/kadaikodi/components/viz/CertificateCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
- package/dist/kadaikodi/components/viz/DonutChart.d.ts +20 -0
- package/dist/kadaikodi/components/viz/DonutChart.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
- package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.d.ts +17 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.d.ts +26 -0
- package/dist/kadaikodi/components/viz/Heatmap.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.d.ts +17 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.d.ts +20 -0
- package/dist/kadaikodi/components/viz/LineChart.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.js +4 -0
- package/dist/kadaikodi/components/viz/OrgTree.d.ts +14 -0
- package/dist/kadaikodi/components/viz/OrgTree.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
- package/dist/kadaikodi/components/viz/PathSteps.d.ts +17 -0
- package/dist/kadaikodi/components/viz/PathSteps.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
- package/dist/kadaikodi/components/viz/ProgressRing.d.ts +20 -0
- package/dist/kadaikodi/components/viz/ProgressRing.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.d.ts +14 -0
- package/dist/kadaikodi/components/viz/RatingStars.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
- package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts +26 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.d.ts +17 -0
- package/dist/kadaikodi/components/viz/SkillBar.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
- package/dist/kadaikodi/components/viz/Sparkline.d.ts +16 -0
- package/dist/kadaikodi/components/viz/Sparkline.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
- package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.d.ts +22 -0
- package/dist/kadaikodi/components/viz/StatCard.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.js +60 -0
- package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.d.ts +17 -0
- package/dist/kadaikodi/components/viz/StepProgress.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
- package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.d.ts +21 -0
- package/dist/kadaikodi/components/viz/Timeline.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.js +66 -0
- package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
- package/dist/kadaikodi/components/viz/index.d.ts +35 -0
- package/dist/kadaikodi/components/viz/index.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/index.js +23 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.d.ts +15 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts +44 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts +27 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.d.ts +10 -0
- package/dist/kadaikodi/components/viz/lib/format.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.js +21 -0
- package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.d.ts +41 -0
- package/dist/kadaikodi/components/viz/lib/geometry.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.d.ts +18 -0
- package/dist/kadaikodi/components/viz/lib/hooks.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.d.ts +31 -0
- package/dist/kadaikodi/components/viz/lib/palette.d.ts.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
- package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/types.d.ts +27 -0
- package/dist/kadaikodi/components/viz/lib/types.d.ts.map +1 -0
- package/dist/kadaikodi/context/KadaikodiContext.d.ts +16 -0
- package/dist/kadaikodi/context/KadaikodiContext.d.ts.map +1 -0
- package/dist/kadaikodi/context/index.d.ts +6 -0
- package/dist/kadaikodi/context/index.d.ts.map +1 -0
- package/dist/kadaikodi/hooks/index.d.ts +2 -0
- package/dist/kadaikodi/hooks/index.d.ts.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +169 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/index.d.ts +11 -0
- package/dist/kadaikodi/index.d.ts.map +1 -0
- package/dist/kadaikodi/pages/HomePage.d.ts +14 -0
- package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/HomePage.js +373 -631
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +13 -0
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts +13 -0
- package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts +12 -0
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts +11 -0
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts +11 -0
- package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts +10 -0
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +13 -0
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts +10 -0
- package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts +13 -0
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts +11 -0
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts +12 -0
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts +12 -0
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts +11 -0
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts +11 -0
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts +2 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts +2 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts +10 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +12 -0
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts +11 -0
- package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts +10 -0
- package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/common/SettingsPage.d.ts +19 -0
- package/dist/kadaikodi/pages/common/SettingsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts +12 -0
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts +13 -0
- package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +11 -0
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts +9 -0
- package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts +10 -0
- package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts +10 -0
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts +12 -0
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts +11 -0
- package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts +9 -0
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts +9 -0
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts +11 -0
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts +12 -0
- package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts +10 -0
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/shared.d.ts +41 -0
- package/dist/kadaikodi/pages/customer/shared.d.ts.map +1 -0
- package/dist/kadaikodi/pages/customer/shared.js +181 -0
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts +13 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts +10 -0
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts +11 -0
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts +10 -0
- package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts +10 -0
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts +11 -0
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts +20 -0
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +18 -0
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts +14 -0
- package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts.map +1 -0
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts +18 -0
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts +18 -0
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts +16 -0
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts.map +1 -0
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/dist/kadaikodi/store/index.d.ts +6 -0
- package/dist/kadaikodi/store/index.d.ts.map +1 -0
- package/dist/kadaikodi/store/kadaikodiStore.d.ts +60 -0
- package/dist/kadaikodi/store/kadaikodiStore.d.ts.map +1 -0
- package/dist/kadaikodi/types/index.d.ts +464 -0
- package/dist/kadaikodi/types/index.d.ts.map +1 -0
- package/dist/kadaikodi/utils/cn.d.ts +4 -0
- package/dist/kadaikodi/utils/cn.d.ts.map +1 -0
- package/dist/kadaikodi/utils/formatters.d.ts +78 -0
- package/dist/kadaikodi/utils/formatters.d.ts.map +1 -0
- package/dist/kadaikodi/utils/index.d.ts +8 -0
- package/dist/kadaikodi/utils/index.d.ts.map +1 -0
- package/dist/kadaikodi/utils/navigation.d.ts +20 -0
- package/dist/kadaikodi/utils/navigation.d.ts.map +1 -0
- package/dist/services/createSandboxAssistantTransport.d.ts +43 -0
- package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
- package/dist/services/createSandboxAssistantTransport.js +15 -0
- package/dist/services/createSandboxAssistantTransport.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { KanbanColumnData } from './lib/types';
|
|
2
|
+
|
|
3
|
+
export interface KanbanBoardProps {
|
|
4
|
+
columns: KanbanColumnData[];
|
|
5
|
+
/** Fixed column width in pixels. */
|
|
6
|
+
columnWidth?: number;
|
|
7
|
+
/** Optional empty-state node rendered inside a column with no items. */
|
|
8
|
+
emptyColumnHint?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generic columns board. The caller supplies pre-rendered card nodes; the board
|
|
13
|
+
* owns layout, horizontal scroll and keyboard-focusable columns/cards. It never
|
|
14
|
+
* scrolls the page sideways — overflow is contained here.
|
|
15
|
+
*/
|
|
16
|
+
export declare function KanbanBoard({ columns, columnWidth, emptyColumnHint, className, }: KanbanBoardProps): import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=KanbanBoard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanBoard.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/KanbanBoard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,WAAiB,EACjB,eAAoC,EACpC,SAAS,GACV,EAAE,gBAAgB,+BAkDlB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import "./lib/palette.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/kadaikodi/components/viz/KanbanBoard.tsx
|
|
5
|
+
function r({ columns: r, columnWidth: i = 288, emptyColumnHint: a = "Nothing here yet", className: o }) {
|
|
6
|
+
return /* @__PURE__ */ t("div", {
|
|
7
|
+
className: e("flex gap-4 overflow-x-auto pb-2", o),
|
|
8
|
+
role: "list",
|
|
9
|
+
"aria-label": "Board columns",
|
|
10
|
+
children: r.map((e) => /* @__PURE__ */ n("section", {
|
|
11
|
+
role: "listitem",
|
|
12
|
+
"aria-label": `${e.title}, ${e.items.length} items`,
|
|
13
|
+
tabIndex: 0,
|
|
14
|
+
className: "flex shrink-0 flex-col rounded-[var(--radius-card)] border border-border-subtle bg-bg-sunken outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
|
|
15
|
+
style: { width: i },
|
|
16
|
+
children: [/* @__PURE__ */ n("header", {
|
|
17
|
+
className: "flex items-center gap-2 border-b border-border-subtle px-3 py-2.5",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ t("span", {
|
|
20
|
+
"aria-hidden": "true",
|
|
21
|
+
className: "h-3.5 w-1 shrink-0 rounded-full",
|
|
22
|
+
style: { backgroundColor: e.accent ?? "var(--color-accent-primary)" }
|
|
23
|
+
}),
|
|
24
|
+
/* @__PURE__ */ t("h3", {
|
|
25
|
+
className: "flex-1 truncate text-sm font-semibold text-text-primary",
|
|
26
|
+
children: e.title
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ t("span", {
|
|
29
|
+
className: "inline-flex min-w-5 items-center justify-center rounded-full bg-bg-elevated px-1.5 text-xs font-medium tabular-nums text-text-secondary",
|
|
30
|
+
children: e.items.length
|
|
31
|
+
})
|
|
32
|
+
]
|
|
33
|
+
}), /* @__PURE__ */ t("ul", {
|
|
34
|
+
className: "flex flex-1 flex-col gap-2 p-2",
|
|
35
|
+
children: e.items.length === 0 ? /* @__PURE__ */ t("li", {
|
|
36
|
+
className: "rounded-[var(--radius-input)] border border-dashed border-border-subtle px-3 py-6 text-center text-xs text-text-muted",
|
|
37
|
+
children: a
|
|
38
|
+
}) : e.items.map((e, n) => /* @__PURE__ */ t("li", {
|
|
39
|
+
tabIndex: 0,
|
|
40
|
+
className: "rounded-[var(--radius-input)] outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
|
|
41
|
+
children: e
|
|
42
|
+
}, n))
|
|
43
|
+
})]
|
|
44
|
+
}, e.id))
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { r as KanbanBoard };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=KanbanBoard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanBoard.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/KanbanBoard.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\nimport type { KanbanColumnData } from './lib/types';\n\nexport interface KanbanBoardProps {\n columns: KanbanColumnData[];\n /** Fixed column width in pixels. */\n columnWidth?: number;\n /** Optional empty-state node rendered inside a column with no items. */\n emptyColumnHint?: string;\n className?: string;\n}\n\n/**\n * Generic columns board. The caller supplies pre-rendered card nodes; the board\n * owns layout, horizontal scroll and keyboard-focusable columns/cards. It never\n * scrolls the page sideways — overflow is contained here.\n */\nexport function KanbanBoard({\n columns,\n columnWidth = 288,\n emptyColumnHint = 'Nothing here yet',\n className,\n}: KanbanBoardProps) {\n return (\n <div\n className={cn('flex gap-4 overflow-x-auto pb-2', className)}\n role=\"list\"\n aria-label=\"Board columns\"\n >\n {columns.map((column) => (\n <section\n key={column.id}\n role=\"listitem\"\n aria-label={`${column.title}, ${column.items.length} items`}\n tabIndex={0}\n className=\"flex shrink-0 flex-col rounded-[var(--radius-card)] border border-border-subtle bg-bg-sunken outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n style={{ width: columnWidth }}\n >\n <header className=\"flex items-center gap-2 border-b border-border-subtle px-3 py-2.5\">\n <span\n aria-hidden=\"true\"\n className=\"h-3.5 w-1 shrink-0 rounded-full\"\n style={{ backgroundColor: column.accent ?? ACCENT }}\n />\n <h3 className=\"flex-1 truncate text-sm font-semibold text-text-primary\">\n {column.title}\n </h3>\n <span className=\"inline-flex min-w-5 items-center justify-center rounded-full bg-bg-elevated px-1.5 text-xs font-medium tabular-nums text-text-secondary\">\n {column.items.length}\n </span>\n </header>\n <ul className=\"flex flex-1 flex-col gap-2 p-2\">\n {column.items.length === 0 ? (\n <li className=\"rounded-[var(--radius-input)] border border-dashed border-border-subtle px-3 py-6 text-center text-xs text-text-muted\">\n {emptyColumnHint}\n </li>\n ) : (\n column.items.map((item, i) => (\n <li\n key={i}\n tabIndex={0}\n className=\"rounded-[var(--radius-input)] outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n {item}\n </li>\n ))\n )}\n </ul>\n </section>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;AAkBA,SAAgB,EAAY,EAC1B,YACA,iBAAc,KACd,qBAAkB,oBAClB,gBACmB;AACnB,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,mCAAmC,EAAU;EAC3D,MAAK;EACL,cAAW;YAEV,EAAQ,KAAK,MACZ,kBAAC,WAAD;GAEE,MAAK;GACL,cAAY,GAAG,EAAO,MAAM,IAAI,EAAO,MAAM,OAAO;GACpD,UAAU;GACV,WAAU;GACV,OAAO,EAAE,OAAO,GAAa;aAN/B,CAQE,kBAAC,UAAD;IAAQ,WAAU;cAAlB;KACE,kBAAC,QAAD;MACE,eAAY;MACZ,WAAU;MACV,OAAO,EAAE,iBAAiB,EAAO,UAAA,+BAAkB;MACnD,CAAA;KACF,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAO;MACL,CAAA;KACL,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAO,MAAM;MACT,CAAA;KACA;OACT,kBAAC,MAAD;IAAI,WAAU;cACX,EAAO,MAAM,WAAW,IACvB,kBAAC,MAAD;KAAI,WAAU;eACX;KACE,CAAA,GAEL,EAAO,MAAM,KAAK,GAAM,MACtB,kBAAC,MAAD;KAEE,UAAU;KACV,WAAU;eAET;KACE,EALE,EAKF,CACL;IAED,CAAA,CACG;KArCH,EAAO,GAqCJ,CACV;EACE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LabeledValue } from './lib/types';
|
|
2
|
+
|
|
3
|
+
export interface LineChartProps {
|
|
4
|
+
/** Primary series (its labels drive the x-axis). */
|
|
5
|
+
series: LabeledValue[];
|
|
6
|
+
/** Optional second series, aligned to the primary series by index. */
|
|
7
|
+
compare?: number[];
|
|
8
|
+
seriesLabel?: string;
|
|
9
|
+
compareLabel?: string;
|
|
10
|
+
height?: number;
|
|
11
|
+
valueFormatter?: (value: number) => string;
|
|
12
|
+
title?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Multi-point line chart (trend / attrition) with an optional second series,
|
|
17
|
+
* shared axes + hover, and an animated draw-in.
|
|
18
|
+
*/
|
|
19
|
+
export declare function LineChart({ series, compare, seriesLabel, compareLabel, height, valueFormatter, title, className, }: LineChartProps): import("react").JSX.Element | null;
|
|
20
|
+
//# sourceMappingURL=LineChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/LineChart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,OAAO,EACP,WAAsB,EACtB,YAAwB,EACxB,MAAY,EACZ,cAA8B,EAC9B,KAAK,EACL,SAAS,GACV,EAAE,cAAc,sCA8HhB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface OrgNode {
|
|
2
|
+
id?: string;
|
|
3
|
+
name: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
avatarUrl?: string;
|
|
6
|
+
children?: OrgNode[];
|
|
7
|
+
}
|
|
8
|
+
export interface OrgTreeProps {
|
|
9
|
+
root: OrgNode;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Simple top-down org tree with connected nodes; scrolls horizontally when wide. */
|
|
13
|
+
export declare function OrgTree({ root, className }: OrgTreeProps): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=OrgTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrgTree.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/OrgTree.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6DD,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,+BAQxD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type PathStepState = 'done' | 'active' | 'todo' | 'locked';
|
|
2
|
+
export interface PathStep {
|
|
3
|
+
label: string;
|
|
4
|
+
meta?: string;
|
|
5
|
+
state?: PathStepState;
|
|
6
|
+
}
|
|
7
|
+
export interface PathStepsProps {
|
|
8
|
+
steps: PathStep[];
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A sequence of course nodes (circles + labels + connectors) for a learning
|
|
13
|
+
* path. Each node carries its own state; the connector into a node is filled
|
|
14
|
+
* once that node is complete. Scrolls horizontally on narrow screens.
|
|
15
|
+
*/
|
|
16
|
+
export declare function PathSteps({ steps, className }: PathStepsProps): import("react").JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=PathSteps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathSteps.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/PathSteps.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,sCAqF7D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface ProgressRingProps {
|
|
4
|
+
value: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
/** Center content. Defaults to the rounded value (e.g. "4.6" or "72%"). */
|
|
7
|
+
label?: ReactNode;
|
|
8
|
+
/** Small caption under the center label. */
|
|
9
|
+
caption?: ReactNode;
|
|
10
|
+
size?: number;
|
|
11
|
+
/** Stroke thickness in viewBox units. */
|
|
12
|
+
thickness?: number;
|
|
13
|
+
/** Tokenized arc color; defaults to the product accent. */
|
|
14
|
+
color?: string;
|
|
15
|
+
title?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Circular gauge for a score or percentage, with an animated sweep. */
|
|
19
|
+
export declare function ProgressRing({ value, max, label, caption, size, thickness, color, title, className, }: ProgressRingProps): import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=ProgressRing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressRing.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/ProgressRing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,GAAS,EACT,KAAK,EACL,OAAO,EACP,IAAU,EACV,SAAc,EACd,KAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE,iBAAiB,+BA4DnB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { clamp as i } from "./lib/geometry.js";
|
|
5
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
+
//#region src/kadaikodi/components/viz/ProgressRing.tsx
|
|
7
|
+
var s = 100, c = s / 2;
|
|
8
|
+
function l({ value: l, max: u = 100, label: d, caption: f, size: p = 132, thickness: m = 10, color: h = t, title: g, className: _ }) {
|
|
9
|
+
let v = n(), y = r(), b = c - m / 2, x = 2 * Math.PI * b, S = i(u === 0 ? 0 : l / u, 0, 1), C = x * (1 - S), w = v || y ? C : x, T = g ?? `Progress: ${Math.round(S * 100)} percent`;
|
|
10
|
+
return /* @__PURE__ */ o("div", {
|
|
11
|
+
className: e("relative inline-flex shrink-0", _),
|
|
12
|
+
style: {
|
|
13
|
+
width: p,
|
|
14
|
+
height: p,
|
|
15
|
+
maxWidth: "100%"
|
|
16
|
+
},
|
|
17
|
+
children: [/* @__PURE__ */ o("svg", {
|
|
18
|
+
viewBox: `0 0 ${s} ${s}`,
|
|
19
|
+
width: p,
|
|
20
|
+
height: p,
|
|
21
|
+
role: "img",
|
|
22
|
+
"aria-label": T,
|
|
23
|
+
style: {
|
|
24
|
+
display: "block",
|
|
25
|
+
maxWidth: "100%",
|
|
26
|
+
height: "auto"
|
|
27
|
+
},
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ a("title", { children: T }),
|
|
30
|
+
/* @__PURE__ */ a("circle", {
|
|
31
|
+
cx: c,
|
|
32
|
+
cy: c,
|
|
33
|
+
r: b,
|
|
34
|
+
fill: "none",
|
|
35
|
+
stroke: "var(--color-chart-grid)",
|
|
36
|
+
strokeWidth: m,
|
|
37
|
+
opacity: .7
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ a("circle", {
|
|
40
|
+
cx: c,
|
|
41
|
+
cy: c,
|
|
42
|
+
r: b,
|
|
43
|
+
fill: "none",
|
|
44
|
+
stroke: h,
|
|
45
|
+
strokeWidth: m,
|
|
46
|
+
strokeLinecap: "round",
|
|
47
|
+
strokeDasharray: x,
|
|
48
|
+
strokeDashoffset: w,
|
|
49
|
+
transform: `rotate(-90 ${c} ${c})`,
|
|
50
|
+
style: { transition: y ? void 0 : "stroke-dashoffset 900ms cubic-bezier(0.22,1,0.36,1)" }
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
}), /* @__PURE__ */ o("div", {
|
|
54
|
+
className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center",
|
|
55
|
+
children: [/* @__PURE__ */ a("span", {
|
|
56
|
+
className: "text-2xl font-semibold leading-none text-text-primary",
|
|
57
|
+
children: d ?? Math.round(S * 100)
|
|
58
|
+
}), f === void 0 ? null : /* @__PURE__ */ a("span", {
|
|
59
|
+
className: "mt-1 text-xs text-text-muted",
|
|
60
|
+
children: f
|
|
61
|
+
})]
|
|
62
|
+
})]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { l as ProgressRing };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=ProgressRing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressRing.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/ProgressRing.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\nimport { clamp } from './lib/geometry';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\n\nexport interface ProgressRingProps {\n value: number;\n max?: number;\n /** Center content. Defaults to the rounded value (e.g. \"4.6\" or \"72%\"). */\n label?: ReactNode;\n /** Small caption under the center label. */\n caption?: ReactNode;\n size?: number;\n /** Stroke thickness in viewBox units. */\n thickness?: number;\n /** Tokenized arc color; defaults to the product accent. */\n color?: string;\n title?: string;\n className?: string;\n}\n\nconst VIEW = 100;\nconst CENTER = VIEW / 2;\n\n/** Circular gauge for a score or percentage, with an animated sweep. */\nexport function ProgressRing({\n value,\n max = 100,\n label,\n caption,\n size = 132,\n thickness = 10,\n color = ACCENT,\n title,\n className,\n}: ProgressRingProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n const radius = CENTER - thickness / 2;\n const circumference = 2 * Math.PI * radius;\n const fraction = clamp(max === 0 ? 0 : value / max, 0, 1);\n const target = circumference * (1 - fraction);\n const offset = mounted || reduced ? target : circumference;\n const ringTitle = title ?? `Progress: ${Math.round(fraction * 100)} percent`;\n\n return (\n <div\n className={cn('relative inline-flex shrink-0', className)}\n style={{ width: size, height: size, maxWidth: '100%' }}\n >\n <svg\n viewBox={`0 0 ${VIEW} ${VIEW}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={ringTitle}\n style={{ display: 'block', maxWidth: '100%', height: 'auto' }}\n >\n <title>{ringTitle}</title>\n <circle\n cx={CENTER}\n cy={CENTER}\n r={radius}\n fill=\"none\"\n stroke=\"var(--color-chart-grid)\"\n strokeWidth={thickness}\n opacity={0.7}\n />\n <circle\n cx={CENTER}\n cy={CENTER}\n r={radius}\n fill=\"none\"\n stroke={color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${CENTER} ${CENTER})`}\n style={{\n transition: reduced ? undefined : 'stroke-dashoffset 900ms cubic-bezier(0.22,1,0.36,1)',\n }}\n />\n </svg>\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center\">\n <span className=\"text-2xl font-semibold leading-none text-text-primary\">\n {label ?? Math.round(fraction * 100)}\n </span>\n {caption !== undefined ? (\n <span className=\"mt-1 text-xs text-text-muted\">{caption}</span>\n ) : null}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAsBA,IAAM,IAAO,KACP,IAAS,IAAO;AAGtB,SAAgB,EAAa,EAC3B,UACA,SAAM,KACN,UACA,YACA,UAAO,KACP,eAAY,IACZ,WAAQ,GACR,UACA,gBACoB;CACpB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB,EAEnC,IAAS,IAAS,IAAY,GAC9B,IAAgB,IAAI,KAAK,KAAK,GAC9B,IAAW,EAAM,MAAQ,IAAI,IAAI,IAAQ,GAAK,GAAG,EAAE,EACnD,IAAS,KAAiB,IAAI,IAC9B,IAAS,KAAW,IAAU,IAAS,GACvC,IAAY,KAAS,aAAa,KAAK,MAAM,IAAW,IAAI,CAAC;AAEnE,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,iCAAiC,EAAU;EACzD,OAAO;GAAE,OAAO;GAAM,QAAQ;GAAM,UAAU;GAAQ;YAFxD,CAIE,kBAAC,OAAD;GACE,SAAS,OAAO,EAAK,GAAG;GACxB,OAAO;GACP,QAAQ;GACR,MAAK;GACL,cAAY;GACZ,OAAO;IAAE,SAAS;IAAS,UAAU;IAAQ,QAAQ;IAAQ;aAN/D;IAQE,kBAAC,SAAD,EAAA,UAAQ,GAAkB,CAAA;IAC1B,kBAAC,UAAD;KACE,IAAI;KACJ,IAAI;KACJ,GAAG;KACH,MAAK;KACL,QAAO;KACP,aAAa;KACb,SAAS;KACT,CAAA;IACF,kBAAC,UAAD;KACE,IAAI;KACJ,IAAI;KACJ,GAAG;KACH,MAAK;KACL,QAAQ;KACR,aAAa;KACb,eAAc;KACd,iBAAiB;KACjB,kBAAkB;KAClB,WAAW,cAAc,EAAO,GAAG,EAAO;KAC1C,OAAO,EACL,YAAY,IAAU,KAAA,IAAY,uDACnC;KACD,CAAA;IACE;MACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cACb,KAAS,KAAK,MAAM,IAAW,IAAI;IAC/B,CAAA,EACN,MAAY,KAAA,IAET,OADF,kBAAC,QAAD;IAAM,WAAU;cAAgC;IAAe,CAAA,CAE7D;KACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface RatingStarsProps {
|
|
2
|
+
value: number;
|
|
3
|
+
max?: number;
|
|
4
|
+
/** Show the numeric value next to the stars. */
|
|
5
|
+
showValue?: boolean;
|
|
6
|
+
/** Optional review count, e.g. "(128)". */
|
|
7
|
+
count?: number;
|
|
8
|
+
/** Star size in pixels. */
|
|
9
|
+
size?: number;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Filled / empty stars for a 0–max rating, with optional value + count. */
|
|
13
|
+
export declare function RatingStars({ value, max, showValue, count, size, className, }: RatingStarsProps): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=RatingStars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatingStars.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/RatingStars.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAO,EACP,SAAiB,EACjB,KAAK,EACL,IAAS,EACT,SAAS,GACV,EAAE,gBAAgB,+BAwClB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { STATUS as t } from "./lib/palette.js";
|
|
3
|
+
import { clamp as n } from "./lib/geometry.js";
|
|
4
|
+
import { Star as r } from "lucide-react";
|
|
5
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
|
+
//#region src/kadaikodi/components/viz/RatingStars.tsx
|
|
7
|
+
function o({ value: o, max: s = 5, showValue: c = !1, count: l, size: u = 16, className: d }) {
|
|
8
|
+
let f = n(o, 0, s), p = f / s * 100, m = Math.round(u * .15), h = (e) => /* @__PURE__ */ i("span", {
|
|
9
|
+
className: "flex",
|
|
10
|
+
style: { gap: m },
|
|
11
|
+
"aria-hidden": "true",
|
|
12
|
+
children: Array.from({ length: s }, (n, a) => /* @__PURE__ */ i(r, {
|
|
13
|
+
width: u,
|
|
14
|
+
height: u,
|
|
15
|
+
strokeWidth: 1.5,
|
|
16
|
+
style: { color: e ? t.warning : "var(--color-border-strong)" },
|
|
17
|
+
fill: e ? "currentColor" : "none"
|
|
18
|
+
}, a))
|
|
19
|
+
});
|
|
20
|
+
return /* @__PURE__ */ a("span", {
|
|
21
|
+
className: e("inline-flex items-center gap-1.5", d),
|
|
22
|
+
role: "img",
|
|
23
|
+
"aria-label": `Rated ${f} out of ${s}${l === void 0 ? "" : ` from ${l} reviews`}`,
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ a("span", {
|
|
26
|
+
className: "relative inline-flex",
|
|
27
|
+
children: [h(!1), /* @__PURE__ */ i("span", {
|
|
28
|
+
className: "absolute left-0 top-0 overflow-hidden",
|
|
29
|
+
style: { width: `${p}%` },
|
|
30
|
+
children: h(!0)
|
|
31
|
+
})]
|
|
32
|
+
}),
|
|
33
|
+
c ? /* @__PURE__ */ i("span", {
|
|
34
|
+
className: "text-sm font-medium tabular-nums text-text-secondary",
|
|
35
|
+
children: f.toFixed(1)
|
|
36
|
+
}) : null,
|
|
37
|
+
l === void 0 ? null : /* @__PURE__ */ a("span", {
|
|
38
|
+
className: "text-xs text-text-muted",
|
|
39
|
+
children: [
|
|
40
|
+
"(",
|
|
41
|
+
l,
|
|
42
|
+
")"
|
|
43
|
+
]
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { o as RatingStars };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=RatingStars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatingStars.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/RatingStars.tsx"],"sourcesContent":["import { Star } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { STATUS } from './lib/palette';\nimport { clamp } from './lib/geometry';\n\nexport interface RatingStarsProps {\n value: number;\n max?: number;\n /** Show the numeric value next to the stars. */\n showValue?: boolean;\n /** Optional review count, e.g. \"(128)\". */\n count?: number;\n /** Star size in pixels. */\n size?: number;\n className?: string;\n}\n\n/** Filled / empty stars for a 0–max rating, with optional value + count. */\nexport function RatingStars({\n value,\n max = 5,\n showValue = false,\n count,\n size = 16,\n className,\n}: RatingStarsProps) {\n const clamped = clamp(value, 0, max);\n const fillPct = (clamped / max) * 100;\n const gap = Math.round(size * 0.15);\n\n const row = (filled: boolean) => (\n <span className=\"flex\" style={{ gap }} aria-hidden=\"true\">\n {Array.from({ length: max }, (_, i) => (\n <Star\n key={i}\n width={size}\n height={size}\n strokeWidth={1.5}\n style={{ color: filled ? STATUS.warning : 'var(--color-border-strong)' }}\n fill={filled ? 'currentColor' : 'none'}\n />\n ))}\n </span>\n );\n\n return (\n <span\n className={cn('inline-flex items-center gap-1.5', className)}\n role=\"img\"\n aria-label={`Rated ${clamped} out of ${max}${count !== undefined ? ` from ${count} reviews` : ''}`}\n >\n <span className=\"relative inline-flex\">\n {row(false)}\n <span className=\"absolute left-0 top-0 overflow-hidden\" style={{ width: `${fillPct}%` }}>\n {row(true)}\n </span>\n </span>\n {showValue ? (\n <span className=\"text-sm font-medium tabular-nums text-text-secondary\">\n {clamped.toFixed(1)}\n </span>\n ) : null}\n {count !== undefined ? <span className=\"text-xs text-text-muted\">({count})</span> : null}\n </span>\n );\n}\n"],"mappings":";;;;;;AAkBA,SAAgB,EAAY,EAC1B,UACA,SAAM,GACN,eAAY,IACZ,UACA,UAAO,IACP,gBACmB;CACnB,IAAM,IAAU,EAAM,GAAO,GAAG,EAAI,EAC9B,IAAW,IAAU,IAAO,KAC5B,IAAM,KAAK,MAAM,IAAO,IAAK,EAE7B,KAAO,MACX,kBAAC,QAAD;EAAM,WAAU;EAAO,OAAO,EAAE,QAAK;EAAE,eAAY;YAChD,MAAM,KAAK,EAAE,QAAQ,GAAK,GAAG,GAAG,MAC/B,kBAAC,GAAD;GAEE,OAAO;GACP,QAAQ;GACR,aAAa;GACb,OAAO,EAAE,OAAO,IAAS,EAAO,UAAU,8BAA8B;GACxE,MAAM,IAAS,iBAAiB;GAChC,EANK,EAML,CACF;EACG,CAAA;AAGT,QACE,kBAAC,QAAD;EACE,WAAW,EAAG,oCAAoC,EAAU;EAC5D,MAAK;EACL,cAAY,SAAS,EAAQ,UAAU,IAAM,MAAU,KAAA,IAAuC,KAA3B,SAAS,EAAM;YAHpF;GAKE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACG,EAAI,GAAM,EACX,kBAAC,QAAD;KAAM,WAAU;KAAwC,OAAO,EAAE,OAAO,GAAG,EAAQ,IAAI;eACpF,EAAI,GAAK;KACL,CAAA,CACF;;GACN,IACC,kBAAC,QAAD;IAAM,WAAU;cACb,EAAQ,QAAQ,EAAE;IACd,CAAA,GACL;GACH,MAAU,KAAA,IAAyE,OAA7D,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAA0C;KAAE;KAAM;KAAQ;;GAC5E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface SegmentedTab {
|
|
4
|
+
id: string;
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
count?: number;
|
|
8
|
+
/** id of the panel this tab controls (for aria-controls). */
|
|
9
|
+
controls?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SegmentedTabsProps {
|
|
12
|
+
tabs: SegmentedTab[];
|
|
13
|
+
value: string;
|
|
14
|
+
onChange: (id: string) => void;
|
|
15
|
+
variant?: 'pill' | 'underline';
|
|
16
|
+
/** Stretch tabs to fill the available width. */
|
|
17
|
+
fill?: boolean;
|
|
18
|
+
className?: string;
|
|
19
|
+
'aria-label'?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A controlled pill / underline tab switcher with a proper tablist:
|
|
23
|
+
* roving tab focus, arrow / Home / End navigation, and tokenized styling.
|
|
24
|
+
*/
|
|
25
|
+
export declare function SegmentedTabs({ tabs, value, onChange, variant, fill, className, 'aria-label': ariaLabel, }: SegmentedTabsProps): import("react").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=SegmentedTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedTabs.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/SegmentedTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAgB,EAChB,IAAY,EACZ,SAAS,EACT,YAAY,EAAE,SAAS,GACxB,EAAE,kBAAkB,+BA2GpB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { ACCENT as t } from "./lib/palette.js";
|
|
3
|
+
import { useRef as n } from "react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
//#region src/kadaikodi/components/viz/SegmentedTabs.tsx
|
|
6
|
+
function a({ tabs: a, value: o, onChange: s, variant: c = "pill", fill: l = !1, className: u, "aria-label": d }) {
|
|
7
|
+
let f = n([]), p = (e) => {
|
|
8
|
+
let t = (e + a.length) % a.length, n = a[t];
|
|
9
|
+
n && (s(n.id), f.current[t]?.focus());
|
|
10
|
+
}, m = (e, t) => {
|
|
11
|
+
switch (e.key) {
|
|
12
|
+
case "ArrowRight":
|
|
13
|
+
case "ArrowDown":
|
|
14
|
+
e.preventDefault(), p(t + 1);
|
|
15
|
+
break;
|
|
16
|
+
case "ArrowLeft":
|
|
17
|
+
case "ArrowUp":
|
|
18
|
+
e.preventDefault(), p(t - 1);
|
|
19
|
+
break;
|
|
20
|
+
case "Home":
|
|
21
|
+
e.preventDefault(), p(0);
|
|
22
|
+
break;
|
|
23
|
+
case "End":
|
|
24
|
+
e.preventDefault(), p(a.length - 1);
|
|
25
|
+
break;
|
|
26
|
+
default: break;
|
|
27
|
+
}
|
|
28
|
+
}, h = c === "pill";
|
|
29
|
+
return /* @__PURE__ */ r("div", {
|
|
30
|
+
role: "tablist",
|
|
31
|
+
"aria-label": d,
|
|
32
|
+
className: e("flex items-center", h ? "gap-1 rounded-full border border-border-subtle bg-bg-sunken p-1" : "gap-1 border-b border-border-subtle", l && "w-full", u),
|
|
33
|
+
children: a.map((n, a) => {
|
|
34
|
+
let c = n.id === o;
|
|
35
|
+
return /* @__PURE__ */ i("button", {
|
|
36
|
+
ref: (e) => {
|
|
37
|
+
f.current[a] = e;
|
|
38
|
+
},
|
|
39
|
+
type: "button",
|
|
40
|
+
role: "tab",
|
|
41
|
+
"aria-selected": c,
|
|
42
|
+
"aria-controls": n.controls,
|
|
43
|
+
tabIndex: c ? 0 : -1,
|
|
44
|
+
onClick: () => s(n.id),
|
|
45
|
+
onKeyDown: (e) => m(e, a),
|
|
46
|
+
className: e("inline-flex items-center justify-center gap-1.5 whitespace-nowrap text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", l && "flex-1", h ? e("rounded-full px-3 py-1.5", c ? "bg-bg-surface text-text-primary shadow-elevation-1" : "text-text-secondary hover:text-text-primary") : e("-mb-px border-b-2 px-3 py-2", c ? "text-text-primary" : "border-transparent text-text-secondary hover:text-text-primary")),
|
|
47
|
+
style: !h && c ? {
|
|
48
|
+
borderColor: t,
|
|
49
|
+
color: "var(--color-text-primary)"
|
|
50
|
+
} : void 0,
|
|
51
|
+
children: [
|
|
52
|
+
n.icon ? /* @__PURE__ */ r("span", {
|
|
53
|
+
"aria-hidden": "true",
|
|
54
|
+
children: n.icon
|
|
55
|
+
}) : null,
|
|
56
|
+
n.label,
|
|
57
|
+
n.count === void 0 ? null : /* @__PURE__ */ r("span", {
|
|
58
|
+
className: e("inline-flex min-w-5 items-center justify-center rounded-full px-1.5 text-xs tabular-nums", c ? "bg-bg-sunken text-text-secondary" : "bg-bg-elevated text-text-muted"),
|
|
59
|
+
children: n.count
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
}, n.id);
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { a as SegmentedTabs };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=SegmentedTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedTabs.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/SegmentedTabs.tsx"],"sourcesContent":["import { type KeyboardEvent, type ReactNode, useRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\n\nexport interface SegmentedTab {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n count?: number;\n /** id of the panel this tab controls (for aria-controls). */\n controls?: string;\n}\n\nexport interface SegmentedTabsProps {\n tabs: SegmentedTab[];\n value: string;\n onChange: (id: string) => void;\n variant?: 'pill' | 'underline';\n /** Stretch tabs to fill the available width. */\n fill?: boolean;\n className?: string;\n 'aria-label'?: string;\n}\n\n/**\n * A controlled pill / underline tab switcher with a proper tablist:\n * roving tab focus, arrow / Home / End navigation, and tokenized styling.\n */\nexport function SegmentedTabs({\n tabs,\n value,\n onChange,\n variant = 'pill',\n fill = false,\n className,\n 'aria-label': ariaLabel,\n}: SegmentedTabsProps) {\n const refs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const focusTab = (index: number): void => {\n const clamped = (index + tabs.length) % tabs.length;\n const tab = tabs[clamped];\n if (tab) {\n onChange(tab.id);\n refs.current[clamped]?.focus();\n }\n };\n\n const handleKey = (event: KeyboardEvent<HTMLButtonElement>, index: number): void => {\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n focusTab(index + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n focusTab(index - 1);\n break;\n case 'Home':\n event.preventDefault();\n focusTab(0);\n break;\n case 'End':\n event.preventDefault();\n focusTab(tabs.length - 1);\n break;\n default:\n break;\n }\n };\n\n const isPill = variant === 'pill';\n\n return (\n <div\n role=\"tablist\"\n aria-label={ariaLabel}\n className={cn(\n 'flex items-center',\n isPill\n ? 'gap-1 rounded-full border border-border-subtle bg-bg-sunken p-1'\n : 'gap-1 border-b border-border-subtle',\n fill && 'w-full',\n className\n )}\n >\n {tabs.map((tab, i) => {\n const selected = tab.id === value;\n return (\n <button\n key={tab.id}\n ref={(node) => {\n refs.current[i] = node;\n }}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n aria-controls={tab.controls}\n tabIndex={selected ? 0 : -1}\n onClick={() => onChange(tab.id)}\n onKeyDown={(event) => handleKey(event, i)}\n className={cn(\n 'inline-flex items-center justify-center gap-1.5 whitespace-nowrap text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]',\n fill && 'flex-1',\n isPill\n ? cn(\n 'rounded-full px-3 py-1.5',\n selected\n ? 'bg-bg-surface text-text-primary shadow-elevation-1'\n : 'text-text-secondary hover:text-text-primary'\n )\n : cn(\n '-mb-px border-b-2 px-3 py-2',\n selected\n ? 'text-text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )\n )}\n style={\n !isPill && selected\n ? { borderColor: ACCENT, color: 'var(--color-text-primary)' }\n : undefined\n }\n >\n {tab.icon ? <span aria-hidden=\"true\">{tab.icon}</span> : null}\n {tab.label}\n {tab.count !== undefined ? (\n <span\n className={cn(\n 'inline-flex min-w-5 items-center justify-center rounded-full px-1.5 text-xs tabular-nums',\n selected ? 'bg-bg-sunken text-text-secondary' : 'bg-bg-elevated text-text-muted'\n )}\n >\n {tab.count}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;AA4BA,SAAgB,EAAc,EAC5B,SACA,UACA,aACA,aAAU,QACV,UAAO,IACP,cACA,cAAc,KACO;CACrB,IAAM,IAAO,EAAqC,EAAE,CAAC,EAE/C,KAAY,MAAwB;EACxC,IAAM,KAAW,IAAQ,EAAK,UAAU,EAAK,QACvC,IAAM,EAAK;AACjB,EAAI,MACF,EAAS,EAAI,GAAG,EAChB,EAAK,QAAQ,IAAU,OAAO;IAI5B,KAAa,GAAyC,MAAwB;AAClF,UAAQ,EAAM,KAAd;GACE,KAAK;GACL,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,EAAS,IAAQ,EAAE;AACnB;GACF,KAAK;GACL,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,EAAS,IAAQ,EAAE;AACnB;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,EAAS,EAAE;AACX;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,EAAS,EAAK,SAAS,EAAE;AACzB;GACF,QACE;;IAIA,IAAS,MAAY;AAE3B,QACE,kBAAC,OAAD;EACE,MAAK;EACL,cAAY;EACZ,WAAW,EACT,qBACA,IACI,oEACA,uCACJ,KAAQ,UACR,EACD;YAEA,EAAK,KAAK,GAAK,MAAM;GACpB,IAAM,IAAW,EAAI,OAAO;AAC5B,UACE,kBAAC,UAAD;IAEE,MAAM,MAAS;AACb,OAAK,QAAQ,KAAK;;IAEpB,MAAK;IACL,MAAK;IACL,iBAAe;IACf,iBAAe,EAAI;IACnB,UAAU,IAAW,IAAI;IACzB,eAAe,EAAS,EAAI,GAAG;IAC/B,YAAY,MAAU,EAAU,GAAO,EAAE;IACzC,WAAW,EACT,0LACA,KAAQ,UACR,IACI,EACE,4BACA,IACI,uDACA,8CACL,GACD,EACE,+BACA,IACI,sBACA,iEACL,CACN;IACD,OACE,CAAC,KAAU,IACP;KAAE,aAAa;KAAQ,OAAO;KAA6B,GAC3D,KAAA;cAhCR;KAmCG,EAAI,OAAO,kBAAC,QAAD;MAAM,eAAY;gBAAQ,EAAI;MAAY,CAAA,GAAG;KACxD,EAAI;KACJ,EAAI,UAAU,KAAA,IASX,OARF,kBAAC,QAAD;MACE,WAAW,EACT,4FACA,IAAW,qCAAqC,iCACjD;gBAEA,EAAI;MACA,CAAA;KAEF;MA9CF,EAAI,GA8CF;IAEX;EACE,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface SkillBarProps {
|
|
2
|
+
label: string;
|
|
3
|
+
value: number;
|
|
4
|
+
max?: number;
|
|
5
|
+
/** Qualitative level shown on the right, e.g. "Advanced". */
|
|
6
|
+
levelLabel?: string;
|
|
7
|
+
/** Show the numeric percentage on the right (ignored when levelLabel is set). */
|
|
8
|
+
showPercent?: boolean;
|
|
9
|
+
/** Tokenized fill color; defaults to the product accent. */
|
|
10
|
+
color?: string;
|
|
11
|
+
/** Bar height in pixels. */
|
|
12
|
+
height?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** A labeled proficiency bar (skill name + level bar). */
|
|
16
|
+
export declare function SkillBar({ label, value, max, levelLabel, showPercent, color, height, className, }: SkillBarProps): import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=SkillBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillBar.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/SkillBar.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0DAA0D;AAC1D,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAS,EACT,UAAU,EACV,WAAkB,EAClB,KAAc,EACd,MAAU,EACV,SAAS,GACV,EAAE,aAAa,+BAgCf"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SparklineProps {
|
|
2
|
+
/** Ordered trend values (oldest first). */
|
|
3
|
+
data: number[];
|
|
4
|
+
variant?: 'line' | 'area';
|
|
5
|
+
/** Pixel height of the sparkline. */
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Accessible label; defaults to a generic trend description. */
|
|
8
|
+
label?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Tiny inline trend line/area for KPI cards. Draws itself in on mount
|
|
13
|
+
* (unless reduced-motion is requested) and emphasizes the final point.
|
|
14
|
+
*/
|
|
15
|
+
export declare function Sparkline({ data, variant, height, label, className, }: SparklineProps): import("react").JSX.Element | null;
|
|
16
|
+
//# sourceMappingURL=Sparkline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/components/viz/Sparkline.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAgB,EAChB,MAAW,EACX,KAAK,EACL,SAAS,GACV,EAAE,cAAc,sCA0DhB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
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 { ResponsiveSvg as i } from "./lib/ResponsiveSvg.js";
|
|
4
|
+
import { buildAreaPath as a, buildLinePath as o, pointsFromValues as s } from "./lib/geometry.js";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
//#region src/kadaikodi/components/viz/Sparkline.tsx
|
|
7
|
+
var u = 3;
|
|
8
|
+
function d({ data: d, variant: f = "line", height: p = 36, label: m, className: h }) {
|
|
9
|
+
let g = r("spark-grad"), _ = t(), v = n();
|
|
10
|
+
return d.length === 0 ? null : /* @__PURE__ */ c(i, {
|
|
11
|
+
height: p,
|
|
12
|
+
title: m ?? `Trend of ${d.length} points`,
|
|
13
|
+
minWidth: 96,
|
|
14
|
+
className: h,
|
|
15
|
+
children: ({ width: t }) => {
|
|
16
|
+
let n = s(d, t, p, u), r = o(n), i = a(n, p - u), m = n[n.length - 1];
|
|
17
|
+
return /* @__PURE__ */ l("g", {
|
|
18
|
+
style: { color: e },
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ c("defs", { children: /* @__PURE__ */ l("linearGradient", {
|
|
21
|
+
id: g,
|
|
22
|
+
x1: "0",
|
|
23
|
+
y1: "0",
|
|
24
|
+
x2: "0",
|
|
25
|
+
y2: "1",
|
|
26
|
+
children: [/* @__PURE__ */ c("stop", {
|
|
27
|
+
offset: "0%",
|
|
28
|
+
stopColor: "currentColor",
|
|
29
|
+
stopOpacity: .28
|
|
30
|
+
}), /* @__PURE__ */ c("stop", {
|
|
31
|
+
offset: "100%",
|
|
32
|
+
stopColor: "currentColor",
|
|
33
|
+
stopOpacity: 0
|
|
34
|
+
})]
|
|
35
|
+
}) }),
|
|
36
|
+
f === "area" ? /* @__PURE__ */ c("path", {
|
|
37
|
+
d: i,
|
|
38
|
+
fill: `url(#${g})`,
|
|
39
|
+
stroke: "none",
|
|
40
|
+
style: {
|
|
41
|
+
opacity: _ || v ? 1 : 0,
|
|
42
|
+
transition: v ? void 0 : "opacity 700ms ease"
|
|
43
|
+
}
|
|
44
|
+
}) : null,
|
|
45
|
+
/* @__PURE__ */ c("path", {
|
|
46
|
+
d: r,
|
|
47
|
+
fill: "none",
|
|
48
|
+
stroke: "currentColor",
|
|
49
|
+
strokeWidth: 2,
|
|
50
|
+
strokeLinecap: "round",
|
|
51
|
+
strokeLinejoin: "round",
|
|
52
|
+
vectorEffect: "non-scaling-stroke",
|
|
53
|
+
pathLength: 1,
|
|
54
|
+
style: {
|
|
55
|
+
strokeDasharray: 1,
|
|
56
|
+
strokeDashoffset: _ || v ? 0 : 1,
|
|
57
|
+
transition: v ? void 0 : "stroke-dashoffset 900ms ease"
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ c("circle", {
|
|
61
|
+
cx: m.x,
|
|
62
|
+
cy: m.y,
|
|
63
|
+
r: 2.6,
|
|
64
|
+
fill: "currentColor"
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { d as Sparkline };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=Sparkline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sparkline.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/Sparkline.tsx"],"sourcesContent":["import { ACCENT } from './lib/palette';\nimport { ResponsiveSvg } from './lib/ResponsiveSvg';\nimport { buildAreaPath, buildLinePath, pointsFromValues } from './lib/geometry';\nimport { useMounted, usePrefersReducedMotion, useVizId } from './lib/hooks';\n\nexport interface SparklineProps {\n /** Ordered trend values (oldest first). */\n data: number[];\n variant?: 'line' | 'area';\n /** Pixel height of the sparkline. */\n height?: number;\n /** Accessible label; defaults to a generic trend description. */\n label?: string;\n className?: string;\n}\n\nconst PAD = 3;\n\n/**\n * Tiny inline trend line/area for KPI cards. Draws itself in on mount\n * (unless reduced-motion is requested) and emphasizes the final point.\n */\nexport function Sparkline({\n data,\n variant = 'line',\n height = 36,\n label,\n className,\n}: SparklineProps) {\n const gradientId = useVizId('spark-grad');\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (data.length === 0) {\n return null;\n }\n\n const title = label ?? `Trend of ${data.length} points`;\n\n return (\n <ResponsiveSvg height={height} title={title} minWidth={96} className={className}>\n {({ width }) => {\n const points = pointsFromValues(data, width, height, PAD);\n const linePath = buildLinePath(points);\n const areaPath = buildAreaPath(points, height - PAD);\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.28} />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity={0} />\n </linearGradient>\n </defs>\n {variant === 'area' ? (\n <path\n d={areaPath}\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 ) : null}\n <path\n d={linePath}\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={2.6} fill=\"currentColor\" />\n </g>\n );\n }}\n </ResponsiveSvg>\n );\n}\n"],"mappings":";;;;;;AAgBA,IAAM,IAAM;AAMZ,SAAgB,EAAU,EACxB,SACA,aAAU,QACV,YAAS,IACT,UACA,gBACiB;CACjB,IAAM,IAAa,EAAS,aAAa,EACnC,IAAU,GAAY,EACtB,IAAU,GAAyB;AAQzC,QANI,EAAK,WAAW,IACX,OAMP,kBAAC,GAAD;EAAuB;EAAe,OAH1B,KAAS,YAAY,EAAK,OAAO;EAGA,UAAU;EAAe;aAClE,EAAE,eAAY;GACd,IAAM,IAAS,EAAiB,GAAM,GAAO,GAAQ,EAAI,EACnD,IAAW,EAAc,EAAO,EAChC,IAAW,EAAc,GAAQ,IAAS,EAAI,EAC9C,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;OAAK,CAAA,CAChD;SACZ,CAAA;KACN,MAAY,SACX,kBAAC,QAAD;MACE,GAAG;MACH,MAAM,QAAQ,EAAW;MACzB,QAAO;MACP,OAAO;OACL,SAAS,KAAW,IAAU,IAAI;OAClC,YAAY,IAAU,KAAA,IAAY;OACnC;MACD,CAAA,GACA;KACJ,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;KAC5D;;;EAGM,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface StatCardProps {
|
|
4
|
+
label: string;
|
|
5
|
+
value: ReactNode;
|
|
6
|
+
/** Signed change; positive renders success (unless `invertDelta`). */
|
|
7
|
+
delta?: number;
|
|
8
|
+
/** Unit appended to the delta (default "%"). */
|
|
9
|
+
deltaSuffix?: string;
|
|
10
|
+
/** Context line under the delta, e.g. "vs last month". */
|
|
11
|
+
deltaLabel?: string;
|
|
12
|
+
/** When true (attrition, cost) a negative delta is the good outcome. */
|
|
13
|
+
invertDelta?: boolean;
|
|
14
|
+
icon?: ReactNode;
|
|
15
|
+
/** Optional trend to render as a footer sparkline. */
|
|
16
|
+
sparkline?: number[];
|
|
17
|
+
sparklineVariant?: 'line' | 'area';
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
/** KPI tile: label, big tabular value, optional signed delta and sparkline. */
|
|
21
|
+
export declare function StatCard({ label, value, delta, deltaSuffix, deltaLabel, invertDelta, icon, sparkline, sparklineVariant, className, }: StatCardProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=StatCard.d.ts.map
|