react-component-kit-ui 0.0.0-stage → 0.1.0
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/CHANGELOG.md +25 -0
- package/LICENSE +21 -0
- package/README.md +225 -2
- package/dist/apexcharts.js +327 -0
- package/dist/app.js +21 -0
- package/dist/buttons.js +26 -0
- package/dist/cards.js +26 -0
- package/dist/charts.js +50 -0
- package/dist/chunks/ActivityHeatmapGrid-P3FP0D6z.js +416 -0
- package/dist/chunks/AnimatedCheckmark-CJEmTxC6.js +19 -0
- package/dist/chunks/AnimatedInput-Dt37HZSs.js +21 -0
- package/dist/chunks/AuthCard-BkWHMFho.js +1409 -0
- package/dist/chunks/Badge-CHkR__dT.js +11 -0
- package/dist/chunks/CartPageList-DvsbjjCi.js +331 -0
- package/dist/chunks/CartToast-UIJFD2CK.js +570 -0
- package/dist/chunks/ChangelogSection-eY4neMby.js +2409 -0
- package/dist/chunks/CountdownBanner-CcpsvvE8.js +1263 -0
- package/dist/chunks/CtaNewsletterSection-Cl3fLVpQ.js +75 -0
- package/dist/chunks/CustomRadioGroup-DAwliU9n.js +26 -0
- package/dist/chunks/DiagonalSectionDivider-CwOOEFbn.js +541 -0
- package/dist/chunks/FloatingFeedbackWidget-D_0EpalW.js +348 -0
- package/dist/chunks/FooterMegaSection-DG1qtKuZ.js +67 -0
- package/dist/chunks/HackerDecodeText-hutANQXI.js +289 -0
- package/dist/chunks/LogoWallGrid-BEpsn1Gt.js +433 -0
- package/dist/chunks/LogoWithGalaxy-q_3-9vGU.js +139 -0
- package/dist/chunks/ProductCardMinimal-lQi5vy3-.js +88 -0
- package/dist/chunks/QuickJumpDock-DZzwR0vg.js +294 -0
- package/dist/chunks/SegmentedBarChart-DEBZURnS.js +384 -0
- package/dist/chunks/ShopCategoryHero-BLlWZ-i3.js +695 -0
- package/dist/chunks/StackedAreaChart-DF1-3rDG.js +453 -0
- package/dist/chunks/StatsTrendCard--nij2Jv0.js +491 -0
- package/dist/chunks/StatusTimelineFeed-BRYwz08g.js +62 -0
- package/dist/chunks/StepBreadcrumbBar-BGXvx5NX.js +32 -0
- package/dist/chunks/StepperInput-Ck_9n2BL.js +30 -0
- package/dist/chunks/TagsAutocompleteInput-BdbVqPbF.js +467 -0
- package/dist/chunks/TiltGlowButton-BRHwq9Af.js +650 -0
- package/dist/chunks/TypingIndicator-DshBNXhx.js +373 -0
- package/dist/chunks/WaterfallChart-C6NFbfO0.js +1337 -0
- package/dist/chunks/cart-store-u-ScUvte.js +212 -0
- package/dist/chunks/chart-tooltip-C7pIc_Su.js +49 -0
- package/dist/chunks/galaxy-scene-C854qLoX.js +231 -0
- package/dist/data.js +28 -0
- package/dist/ecommerce.js +43 -0
- package/dist/favicon.svg +14 -0
- package/dist/feedback.js +28 -0
- package/dist/forms.js +31 -0
- package/dist/global.css +254 -0
- package/dist/index.js +397 -0
- package/dist/layout.js +26 -0
- package/dist/logo-animated.svg +46 -0
- package/dist/logo.svg +46 -0
- package/dist/navigation.js +28 -0
- package/dist/overlays.js +27 -0
- package/dist/robots.txt +4 -0
- package/dist/sections.js +68 -0
- package/dist/styles.css +1 -0
- package/dist/templates/ecommerce-editorial.js +481 -0
- package/dist/templates/ecommerce.js +556 -0
- package/dist/templates/saas-hotel.js +540 -0
- package/dist/three.js +17 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/components/apexcharts.d.ts +3 -0
- package/dist/types/components/index.d.ts +15 -0
- package/dist/types/components/lib/AnimatedGalaxy.d.ts +8 -0
- package/dist/types/components/lib/Galaxy3D.d.ts +15 -0
- package/dist/types/components/lib/LogoWithGalaxy.d.ts +8 -0
- package/dist/types/components/lib/app/AppSidebar.d.ts +53 -0
- package/dist/types/components/lib/app/AppTopbar.d.ts +52 -0
- package/dist/types/components/lib/app/ArrivalsBoard.d.ts +45 -0
- package/dist/types/components/lib/app/AuthCard.d.ts +45 -0
- package/dist/types/components/lib/app/DataTable.d.ts +54 -0
- package/dist/types/components/lib/app/GuestProfileCard.d.ts +48 -0
- package/dist/types/components/lib/app/HousekeepingBoard.d.ts +38 -0
- package/dist/types/components/lib/app/PageHeader.d.ts +45 -0
- package/dist/types/components/lib/app/PlanUsageCard.d.ts +44 -0
- package/dist/types/components/lib/app/RoomRack.d.ts +42 -0
- package/dist/types/components/lib/app/SettingsSection.d.ts +34 -0
- package/dist/types/components/lib/app/SwitchRow.d.ts +28 -0
- package/dist/types/components/lib/app/TeamMembers.d.ts +33 -0
- package/dist/types/components/lib/app/app-icons.d.ts +37 -0
- package/dist/types/components/lib/app/index.d.ts +15 -0
- package/dist/types/components/lib/buttons/AnimatedIconButton.d.ts +22 -0
- package/dist/types/components/lib/buttons/BorderDrawButton.d.ts +19 -0
- package/dist/types/components/lib/buttons/CyberpunkButton.d.ts +23 -0
- package/dist/types/components/lib/buttons/DoubleBorderButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/GhostOutlineButton.d.ts +21 -0
- package/dist/types/components/lib/buttons/GlassButton.d.ts +23 -0
- package/dist/types/components/lib/buttons/GlowButton.d.ts +19 -0
- package/dist/types/components/lib/buttons/LiquidButton.d.ts +19 -0
- package/dist/types/components/lib/buttons/LoadingButton.d.ts +20 -0
- package/dist/types/components/lib/buttons/MagneticButton.d.ts +21 -0
- package/dist/types/components/lib/buttons/MinimalPillButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/NeonBorderButton.d.ts +19 -0
- package/dist/types/components/lib/buttons/NeumorphicButton.d.ts +21 -0
- package/dist/types/components/lib/buttons/PulseButton.d.ts +20 -0
- package/dist/types/components/lib/buttons/RetroArcadeButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/RetroShadowButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/RippleButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/ShimmerButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/ShinyButton.d.ts +17 -0
- package/dist/types/components/lib/buttons/SlideRevealButton.d.ts +20 -0
- package/dist/types/components/lib/buttons/ThreeDPushButton.d.ts +19 -0
- package/dist/types/components/lib/buttons/TiltGlowButton.d.ts +21 -0
- package/dist/types/components/lib/buttons/index.d.ts +22 -0
- package/dist/types/components/lib/cards/BlogHorizontalCard.d.ts +17 -0
- package/dist/types/components/lib/cards/CyberFeatureCard.d.ts +15 -0
- package/dist/types/components/lib/cards/EcommerceProductCard.d.ts +21 -0
- package/dist/types/components/lib/cards/GithubRepoCard.d.ts +25 -0
- package/dist/types/components/lib/cards/GlassCard.d.ts +19 -0
- package/dist/types/components/lib/cards/GlassEventCard.d.ts +17 -0
- package/dist/types/components/lib/cards/GlowPortfolioCard.d.ts +17 -0
- package/dist/types/components/lib/cards/InteractiveTiltCard.d.ts +13 -0
- package/dist/types/components/lib/cards/KanbanItemCard.d.ts +15 -0
- package/dist/types/components/lib/cards/MinimalLinkCard.d.ts +13 -0
- package/dist/types/components/lib/cards/MusicPlayerMini.d.ts +17 -0
- package/dist/types/components/lib/cards/NeumorphicCard.d.ts +13 -0
- package/dist/types/components/lib/cards/NotificationCard.d.ts +15 -0
- package/dist/types/components/lib/cards/PricingCard.d.ts +17 -0
- package/dist/types/components/lib/cards/PricingCompareMiniCard.d.ts +25 -0
- package/dist/types/components/lib/cards/ProfileCard.d.ts +17 -0
- package/dist/types/components/lib/cards/RetroGameCard.d.ts +15 -0
- package/dist/types/components/lib/cards/StatCard.d.ts +15 -0
- package/dist/types/components/lib/cards/StatsTrendCard.d.ts +19 -0
- package/dist/types/components/lib/cards/TaskKanbanCard.d.ts +17 -0
- package/dist/types/components/lib/cards/TestimonialCardClean.d.ts +17 -0
- package/dist/types/components/lib/cards/WeatherWidgetCard.d.ts +17 -0
- package/dist/types/components/lib/cards/index.d.ts +22 -0
- package/dist/types/components/lib/charts/ActivityRings.d.ts +26 -0
- package/dist/types/components/lib/charts/AreaChart.d.ts +16 -0
- package/dist/types/components/lib/charts/BarChart.d.ts +17 -0
- package/dist/types/components/lib/charts/BoxPlotChart.d.ts +26 -0
- package/dist/types/components/lib/charts/BubbleChart.d.ts +35 -0
- package/dist/types/components/lib/charts/BulletChart.d.ts +29 -0
- package/dist/types/components/lib/charts/BumpChart.d.ts +25 -0
- package/dist/types/components/lib/charts/CandlestickChart.d.ts +30 -0
- package/dist/types/components/lib/charts/ChartFrame.d.ts +43 -0
- package/dist/types/components/lib/charts/DivergingBarChart.d.ts +31 -0
- package/dist/types/components/lib/charts/DonutChart.d.ts +16 -0
- package/dist/types/components/lib/charts/DumbbellChart.d.ts +31 -0
- package/dist/types/components/lib/charts/ForecastLineChart.d.ts +30 -0
- package/dist/types/components/lib/charts/FunnelChart.d.ts +24 -0
- package/dist/types/components/lib/charts/GaugeChart.d.ts +29 -0
- package/dist/types/components/lib/charts/GoalProgressChart.d.ts +29 -0
- package/dist/types/components/lib/charts/GroupedBarChart.d.ts +32 -0
- package/dist/types/components/lib/charts/HeatmapChart.d.ts +29 -0
- package/dist/types/components/lib/charts/HistogramChart.d.ts +27 -0
- package/dist/types/components/lib/charts/HorizontalBarChart.d.ts +32 -0
- package/dist/types/components/lib/charts/KpiStatTile.d.ts +28 -0
- package/dist/types/components/lib/charts/KpiTrendGrid.d.ts +27 -0
- package/dist/types/components/lib/charts/LineChart.d.ts +38 -0
- package/dist/types/components/lib/charts/LinearProgressGauge.d.ts +19 -0
- package/dist/types/components/lib/charts/LollipopChart.d.ts +32 -0
- package/dist/types/components/lib/charts/MeterGauge.d.ts +32 -0
- package/dist/types/components/lib/charts/MetricDeltaTable.d.ts +36 -0
- package/dist/types/components/lib/charts/PieChart.d.ts +32 -0
- package/dist/types/components/lib/charts/PolarAreaChart.d.ts +27 -0
- package/dist/types/components/lib/charts/PopulationPyramid.d.ts +31 -0
- package/dist/types/components/lib/charts/PunchCardChart.d.ts +26 -0
- package/dist/types/components/lib/charts/RadarChart.d.ts +28 -0
- package/dist/types/components/lib/charts/RadarMetricChart.d.ts +20 -0
- package/dist/types/components/lib/charts/RadialBarChart.d.ts +27 -0
- package/dist/types/components/lib/charts/RangeAreaChart.d.ts +34 -0
- package/dist/types/components/lib/charts/RetentionCohortTable.d.ts +27 -0
- package/dist/types/components/lib/charts/SankeyChart.d.ts +30 -0
- package/dist/types/components/lib/charts/ScatterPlot.d.ts +35 -0
- package/dist/types/components/lib/charts/SegmentedBarChart.d.ts +30 -0
- package/dist/types/components/lib/charts/SlopeChart.d.ts +33 -0
- package/dist/types/components/lib/charts/SparklineChart.d.ts +24 -0
- package/dist/types/components/lib/charts/StackedAreaChart.d.ts +34 -0
- package/dist/types/components/lib/charts/StackedBarChart.d.ts +33 -0
- package/dist/types/components/lib/charts/SunburstChart.d.ts +33 -0
- package/dist/types/components/lib/charts/TreemapChart.d.ts +31 -0
- package/dist/types/components/lib/charts/WaffleChart.d.ts +26 -0
- package/dist/types/components/lib/charts/WaterfallChart.d.ts +32 -0
- package/dist/types/components/lib/charts/chart-tooltip.d.ts +1 -0
- package/dist/types/components/lib/charts/chart-utils.d.ts +46 -0
- package/dist/types/components/lib/charts/index.d.ts +44 -0
- package/dist/types/components/lib/data/AccordionGroupGlass.d.ts +6 -0
- package/dist/types/components/lib/data/ActivityHeatmapGrid.d.ts +13 -0
- package/dist/types/components/lib/data/AvatarGroupStack.d.ts +6 -0
- package/dist/types/components/lib/data/CalendarGridView.d.ts +6 -0
- package/dist/types/components/lib/data/DataChipsGroup.d.ts +6 -0
- package/dist/types/components/lib/data/DescriptionListHoriz.d.ts +6 -0
- package/dist/types/components/lib/data/FileTreeView.d.ts +6 -0
- package/dist/types/components/lib/data/GanttChartMinimal.d.ts +6 -0
- package/dist/types/components/lib/data/GlassTable.d.ts +6 -0
- package/dist/types/components/lib/data/KeyValuePillGroup.d.ts +6 -0
- package/dist/types/components/lib/data/MetricComparisonRow.d.ts +19 -0
- package/dist/types/components/lib/data/PriceCompareTable.d.ts +6 -0
- package/dist/types/components/lib/data/ProgressListSmall.d.ts +6 -0
- package/dist/types/components/lib/data/RatingBreakdownBar.d.ts +6 -0
- package/dist/types/components/lib/data/SparklineStatCard.d.ts +6 -0
- package/dist/types/components/lib/data/StatsGridDashboard.d.ts +6 -0
- package/dist/types/components/lib/data/StatusTimelineFeed.d.ts +16 -0
- package/dist/types/components/lib/data/StepperDataVertical.d.ts +6 -0
- package/dist/types/components/lib/data/TagCloudData.d.ts +6 -0
- package/dist/types/components/lib/data/TimelineHorizSteps.d.ts +6 -0
- package/dist/types/components/lib/data/TreeItemInteractive.d.ts +6 -0
- package/dist/types/components/lib/data/UserDirectoryItem.d.ts +6 -0
- package/dist/types/components/lib/data/VerticalTimeline.d.ts +6 -0
- package/dist/types/components/lib/data/index.d.ts +23 -0
- package/dist/types/components/lib/ecommerce/CartDrawer.d.ts +43 -0
- package/dist/types/components/lib/ecommerce/CartPageList.d.ts +36 -0
- package/dist/types/components/lib/ecommerce/CartToast.d.ts +34 -0
- package/dist/types/components/lib/ecommerce/CategoryTiles.d.ts +32 -0
- package/dist/types/components/lib/ecommerce/CheckoutForm.d.ts +44 -0
- package/dist/types/components/lib/ecommerce/CountdownBanner.d.ts +38 -0
- package/dist/types/components/lib/ecommerce/FilterBar.d.ts +48 -0
- package/dist/types/components/lib/ecommerce/FilterSidebar.d.ts +42 -0
- package/dist/types/components/lib/ecommerce/LiveActivityToast.d.ts +43 -0
- package/dist/types/components/lib/ecommerce/OrderSummary.d.ts +39 -0
- package/dist/types/components/lib/ecommerce/ProductBuyBox.d.ts +39 -0
- package/dist/types/components/lib/ecommerce/ProductCardMinimal.d.ts +38 -0
- package/dist/types/components/lib/ecommerce/ProductGallery.d.ts +29 -0
- package/dist/types/components/lib/ecommerce/ProductGrid.d.ts +41 -0
- package/dist/types/components/lib/ecommerce/ProductMedia.d.ts +30 -0
- package/dist/types/components/lib/ecommerce/ProductRating.d.ts +23 -0
- package/dist/types/components/lib/ecommerce/ProductToolbar.d.ts +35 -0
- package/dist/types/components/lib/ecommerce/PromoBar.d.ts +29 -0
- package/dist/types/components/lib/ecommerce/StockIndicator.d.ts +29 -0
- package/dist/types/components/lib/ecommerce/StoreHeader.d.ts +54 -0
- package/dist/types/components/lib/ecommerce/StoreHero.d.ts +48 -0
- package/dist/types/components/lib/ecommerce/StoreProductCard.d.ts +40 -0
- package/dist/types/components/lib/ecommerce/TrustBadges.d.ts +24 -0
- package/dist/types/components/lib/ecommerce/VariantPicker.d.ts +37 -0
- package/dist/types/components/lib/ecommerce/cart-store.d.ts +31 -0
- package/dist/types/components/lib/ecommerce/catalog-filter.d.ts +12 -0
- package/dist/types/components/lib/ecommerce/index.d.ts +30 -0
- package/dist/types/components/lib/ecommerce/product-icons.d.ts +20 -0
- package/dist/types/components/lib/ecommerce/types.d.ts +61 -0
- package/dist/types/components/lib/feedback/AnimatedCheckmark.d.ts +14 -0
- package/dist/types/components/lib/feedback/Badge.d.ts +17 -0
- package/dist/types/components/lib/feedback/CircleProgress.d.ts +18 -0
- package/dist/types/components/lib/feedback/ConfettiFeedback.d.ts +18 -0
- package/dist/types/components/lib/feedback/CyberGlitchAlert.d.ts +14 -0
- package/dist/types/components/lib/feedback/EmptyStateCard.d.ts +20 -0
- package/dist/types/components/lib/feedback/GlassAlert.d.ts +15 -0
- package/dist/types/components/lib/feedback/GlassModal.d.ts +24 -0
- package/dist/types/components/lib/feedback/GlassProgress.d.ts +14 -0
- package/dist/types/components/lib/feedback/IndicatorBadgeMinimal.d.ts +17 -0
- package/dist/types/components/lib/feedback/NeonSpinner.d.ts +16 -0
- package/dist/types/components/lib/feedback/ProgressRingCounter.d.ts +22 -0
- package/dist/types/components/lib/feedback/PulseDot.d.ts +14 -0
- package/dist/types/components/lib/feedback/RatingPill.d.ts +15 -0
- package/dist/types/components/lib/feedback/ShakeErrorGroup.d.ts +17 -0
- package/dist/types/components/lib/feedback/SimpleTooltip.d.ts +15 -0
- package/dist/types/components/lib/feedback/SkeletonList.d.ts +12 -0
- package/dist/types/components/lib/feedback/Spotlight.d.ts +15 -0
- package/dist/types/components/lib/feedback/StepProgress.d.ts +16 -0
- package/dist/types/components/lib/feedback/ToastNotif.d.ts +18 -0
- package/dist/types/components/lib/feedback/ToastNotificationGroup.d.ts +22 -0
- package/dist/types/components/lib/feedback/TypingIndicator.d.ts +14 -0
- package/dist/types/components/lib/feedback/index.d.ts +22 -0
- package/dist/types/components/lib/forms/AnimatedInput.d.ts +23 -0
- package/dist/types/components/lib/forms/ChipInput.d.ts +17 -0
- package/dist/types/components/lib/forms/ColorPickerInput.d.ts +17 -0
- package/dist/types/components/lib/forms/CurrencyInput.d.ts +21 -0
- package/dist/types/components/lib/forms/CustomRadioGroup.d.ts +21 -0
- package/dist/types/components/lib/forms/CyberpunkCheckbox.d.ts +17 -0
- package/dist/types/components/lib/forms/DragDropUpload.d.ts +19 -0
- package/dist/types/components/lib/forms/ErrorInput.d.ts +19 -0
- package/dist/types/components/lib/forms/FloatingPassword.d.ts +17 -0
- package/dist/types/components/lib/forms/FormGroupVertical.d.ts +21 -0
- package/dist/types/components/lib/forms/GlassInlineToggleGroup.d.ts +21 -0
- package/dist/types/components/lib/forms/GlassSlider.d.ts +23 -0
- package/dist/types/components/lib/forms/GlassTextarea.d.ts +21 -0
- package/dist/types/components/lib/forms/ModernSelect.d.ts +23 -0
- package/dist/types/components/lib/forms/NeumorphicSwitch.d.ts +17 -0
- package/dist/types/components/lib/forms/OTPInput.d.ts +17 -0
- package/dist/types/components/lib/forms/PasswordStrengthInput.d.ts +19 -0
- package/dist/types/components/lib/forms/PhoneCountryInput.d.ts +19 -0
- package/dist/types/components/lib/forms/RatingStars.d.ts +17 -0
- package/dist/types/components/lib/forms/SearchReveal.d.ts +15 -0
- package/dist/types/components/lib/forms/SegmentedControl.d.ts +19 -0
- package/dist/types/components/lib/forms/SimpleFileInput.d.ts +17 -0
- package/dist/types/components/lib/forms/StepperInput.d.ts +23 -0
- package/dist/types/components/lib/forms/TagsAutocompleteInput.d.ts +19 -0
- package/dist/types/components/lib/forms/index.d.ts +24 -0
- package/dist/types/components/lib/galaxy-scene.d.ts +5 -0
- package/dist/types/components/lib/layout/BentoGrid3.d.ts +14 -0
- package/dist/types/components/lib/layout/CenterFixedBox.d.ts +11 -0
- package/dist/types/components/lib/layout/CenteredContainer.d.ts +27 -0
- package/dist/types/components/lib/layout/ClusterHorizontal.d.ts +13 -0
- package/dist/types/components/lib/layout/DiagonalSectionDivider.d.ts +17 -0
- package/dist/types/components/lib/layout/FeatureHero.d.ts +35 -0
- package/dist/types/components/lib/layout/FooterCenteredMinimal.d.ts +23 -0
- package/dist/types/components/lib/layout/FullBleedSection.d.ts +11 -0
- package/dist/types/components/lib/layout/GalleryGrid4.d.ts +11 -0
- package/dist/types/components/lib/layout/GlassCardGrid.d.ts +16 -0
- package/dist/types/components/lib/layout/GlassSectionHeader.d.ts +30 -0
- package/dist/types/components/lib/layout/HolyGrailGrid.d.ts +23 -0
- package/dist/types/components/lib/layout/LandingSectionSplit.d.ts +14 -0
- package/dist/types/components/lib/layout/MasonryGrid.d.ts +13 -0
- package/dist/types/components/lib/layout/MinimalFooterGrid.d.ts +10 -0
- package/dist/types/components/lib/layout/ScrollSnapSection.d.ts +12 -0
- package/dist/types/components/lib/layout/SectionDividerText.d.ts +23 -0
- package/dist/types/components/lib/layout/SidebarLayoutWrapper.d.ts +33 -0
- package/dist/types/components/lib/layout/SplitScreenLayout.d.ts +12 -0
- package/dist/types/components/lib/layout/StepLayoutVertical.d.ts +9 -0
- package/dist/types/components/lib/layout/StickySidebarWrapper.d.ts +35 -0
- package/dist/types/components/lib/layout/VerticalStack.d.ts +27 -0
- package/dist/types/components/lib/layout/index.d.ts +22 -0
- package/dist/types/components/lib/navigation/AnchorSideNav.d.ts +6 -0
- package/dist/types/components/lib/navigation/BottomNavMobile.d.ts +6 -0
- package/dist/types/components/lib/navigation/BreadcrumbsMinimal.d.ts +6 -0
- package/dist/types/components/lib/navigation/BurgerMorphIcon.d.ts +6 -0
- package/dist/types/components/lib/navigation/CommandPaletteUI.d.ts +6 -0
- package/dist/types/components/lib/navigation/DotNavigationSlider.d.ts +6 -0
- package/dist/types/components/lib/navigation/FloatingTabBar.d.ts +6 -0
- package/dist/types/components/lib/navigation/GlassNavbar.d.ts +12 -0
- package/dist/types/components/lib/navigation/LangSwitcherPill.d.ts +6 -0
- package/dist/types/components/lib/navigation/MegaMenuGlass.d.ts +6 -0
- package/dist/types/components/lib/navigation/MinimalSidebar.d.ts +6 -0
- package/dist/types/components/lib/navigation/PaginationGlass.d.ts +6 -0
- package/dist/types/components/lib/navigation/PaginationInfiniteUI.d.ts +6 -0
- package/dist/types/components/lib/navigation/QuickJumpDock.d.ts +15 -0
- package/dist/types/components/lib/navigation/RadialIconMenu.d.ts +6 -0
- package/dist/types/components/lib/navigation/RetroArcadeMenu.d.ts +6 -0
- package/dist/types/components/lib/navigation/ScrollProgressTop.d.ts +6 -0
- package/dist/types/components/lib/navigation/SimpleFooterGlass.d.ts +6 -0
- package/dist/types/components/lib/navigation/StepBreadcrumbBar.d.ts +16 -0
- package/dist/types/components/lib/navigation/SubNavbarPills.d.ts +18 -0
- package/dist/types/components/lib/navigation/TabUnderline.d.ts +6 -0
- package/dist/types/components/lib/navigation/UserProfileNav.d.ts +6 -0
- package/dist/types/components/lib/navigation/VerticalTabs.d.ts +6 -0
- package/dist/types/components/lib/navigation/index.d.ts +23 -0
- package/dist/types/components/lib/overlays/AgeVerificationOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/BackdropBlurMask.d.ts +6 -0
- package/dist/types/components/lib/overlays/BottomSheetMobile.d.ts +6 -0
- package/dist/types/components/lib/overlays/CommandDialog.d.ts +6 -0
- package/dist/types/components/lib/overlays/ContextMenuOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/CookieBannerGlass.d.ts +6 -0
- package/dist/types/components/lib/overlays/CookiePreferencesDrawer.d.ts +13 -0
- package/dist/types/components/lib/overlays/ExitIntentOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/FloatingFeedbackWidget.d.ts +13 -0
- package/dist/types/components/lib/overlays/FloatingTrayActions.d.ts +6 -0
- package/dist/types/components/lib/overlays/HelpBubbleOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/ImageCompareSlider.d.ts +19 -0
- package/dist/types/components/lib/overlays/LightboxOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/LoadingOverlayFull.d.ts +6 -0
- package/dist/types/components/lib/overlays/MobileNavOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/OverlayModal.d.ts +6 -0
- package/dist/types/components/lib/overlays/PopoverMenuGlass.d.ts +6 -0
- package/dist/types/components/lib/overlays/SearchOverlayFullscreen.d.ts +6 -0
- package/dist/types/components/lib/overlays/SideDrawerRight.d.ts +8 -0
- package/dist/types/components/lib/overlays/SplashIntroOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/SpotlightIndicator.d.ts +6 -0
- package/dist/types/components/lib/overlays/ToastStackOverlay.d.ts +6 -0
- package/dist/types/components/lib/overlays/TooltipActionTray.d.ts +6 -0
- package/dist/types/components/lib/overlays/index.d.ts +23 -0
- package/dist/types/components/lib/sections/AgencyContactBrief.d.ts +44 -0
- package/dist/types/components/lib/sections/AgencyFooterCta.d.ts +46 -0
- package/dist/types/components/lib/sections/AgencyHeader.d.ts +37 -0
- package/dist/types/components/lib/sections/AgencyHeroKinetic.d.ts +45 -0
- package/dist/types/components/lib/sections/AgencyServicesList.d.ts +35 -0
- package/dist/types/components/lib/sections/AgencyTeamGrid.d.ts +45 -0
- package/dist/types/components/lib/sections/AgencyWorkGrid.d.ts +42 -0
- package/dist/types/components/lib/sections/BlogGridSection.d.ts +35 -0
- package/dist/types/components/lib/sections/ButtonsShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/CardsShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/CareersOpenings.d.ts +37 -0
- package/dist/types/components/lib/sections/ChangelogSection.d.ts +37 -0
- package/dist/types/components/lib/sections/ContactGlassForm.d.ts +16 -0
- package/dist/types/components/lib/sections/ContactSplitMap.d.ts +36 -0
- package/dist/types/components/lib/sections/CtaAppDownload.d.ts +16 -0
- package/dist/types/components/lib/sections/CtaGlowBanner.d.ts +20 -0
- package/dist/types/components/lib/sections/CtaNewsletterSection.d.ts +28 -0
- package/dist/types/components/lib/sections/CtaSplitImage.d.ts +39 -0
- package/dist/types/components/lib/sections/DataShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/FaqAccordionSection.d.ts +16 -0
- package/dist/types/components/lib/sections/FaqTwoColumn.d.ts +32 -0
- package/dist/types/components/lib/sections/FeatureAlternatingRows.d.ts +29 -0
- package/dist/types/components/lib/sections/FeatureBentoGrid.d.ts +16 -0
- package/dist/types/components/lib/sections/FeatureIconGrid.d.ts +33 -0
- package/dist/types/components/lib/sections/FeatureTabsShowcase.d.ts +30 -0
- package/dist/types/components/lib/sections/FeatureTimelineFlow.d.ts +16 -0
- package/dist/types/components/lib/sections/FeedbackShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/FooterMegaSection.d.ts +40 -0
- package/dist/types/components/lib/sections/FormsShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/HeroDashboardPreview.d.ts +32 -0
- package/dist/types/components/lib/sections/HeroGlass.d.ts +8 -0
- package/dist/types/components/lib/sections/HeroGradient.d.ts +8 -0
- package/dist/types/components/lib/sections/HeroMinimalCentered.d.ts +36 -0
- package/dist/types/components/lib/sections/HeroShowcaseSplit.d.ts +25 -0
- package/dist/types/components/lib/sections/HeroSplit.d.ts +8 -0
- package/dist/types/components/lib/sections/HeroTerminal.d.ts +35 -0
- package/dist/types/components/lib/sections/HeroWaitlist.d.ts +30 -0
- package/dist/types/components/lib/sections/HowItWorksSteps.d.ts +32 -0
- package/dist/types/components/lib/sections/IntegrationsGrid.d.ts +28 -0
- package/dist/types/components/lib/sections/LayoutShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/LogoCloudSection.d.ts +16 -0
- package/dist/types/components/lib/sections/LogoWallGrid.d.ts +28 -0
- package/dist/types/components/lib/sections/NavigationShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/OverlaysShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/PricingComparisonMatrix.d.ts +16 -0
- package/dist/types/components/lib/sections/PricingSinglePlan.d.ts +37 -0
- package/dist/types/components/lib/sections/PricingTierCards.d.ts +16 -0
- package/dist/types/components/lib/sections/PricingToggleCards.d.ts +36 -0
- package/dist/types/components/lib/sections/ShopCategoryHero.d.ts +41 -0
- package/dist/types/components/lib/sections/ShopCollectionMosaic.d.ts +37 -0
- package/dist/types/components/lib/sections/ShopFooterWordmark.d.ts +38 -0
- package/dist/types/components/lib/sections/ShopHeaderEditorial.d.ts +61 -0
- package/dist/types/components/lib/sections/ShopHeroEditorial.d.ts +45 -0
- package/dist/types/components/lib/sections/ShopLookbook.d.ts +47 -0
- package/dist/types/components/lib/sections/ShopNewsletterEditorial.d.ts +33 -0
- package/dist/types/components/lib/sections/ShopProductRail.d.ts +41 -0
- package/dist/types/components/lib/sections/ShopReviewsEditorial.d.ts +34 -0
- package/dist/types/components/lib/sections/ShopValuesMarquee.d.ts +28 -0
- package/dist/types/components/lib/sections/StatsCounterBand.d.ts +30 -0
- package/dist/types/components/lib/sections/StatsDashboardSection.d.ts +31 -0
- package/dist/types/components/lib/sections/StatsMetricShowcase.d.ts +16 -0
- package/dist/types/components/lib/sections/TeamGridSection.d.ts +16 -0
- package/dist/types/components/lib/sections/TestimonialCarousel.d.ts +26 -0
- package/dist/types/components/lib/sections/TestimonialFeatured.d.ts +34 -0
- package/dist/types/components/lib/sections/TestimonialGridSection.d.ts +15 -0
- package/dist/types/components/lib/sections/TestimonialWallGlass.d.ts +16 -0
- package/dist/types/components/lib/sections/TypographyShowcase.d.ts +8 -0
- package/dist/types/components/lib/sections/index.d.ts +60 -0
- package/dist/types/components/lib/templates/ecommerce/StoreCategoryPage.d.ts +28 -0
- package/dist/types/components/lib/templates/ecommerce/StoreCheckoutPage.d.ts +25 -0
- package/dist/types/components/lib/templates/ecommerce/StoreHomePage.d.ts +25 -0
- package/dist/types/components/lib/templates/ecommerce/StoreLayout.d.ts +41 -0
- package/dist/types/components/lib/templates/ecommerce/StoreProductPage.d.ts +28 -0
- package/dist/types/components/lib/templates/ecommerce/data.d.ts +49 -0
- package/dist/types/components/lib/templates/ecommerce/index.d.ts +7 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialBagPage.d.ts +25 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialCheckoutPage.d.ts +25 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialHomePage.d.ts +25 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialLayout.d.ts +36 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialProductPage.d.ts +29 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/EditorialShopPage.d.ts +28 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/data.d.ts +50 -0
- package/dist/types/components/lib/templates/ecommerce-editorial/index.d.ts +8 -0
- package/dist/types/components/lib/templates/saas-hotel/AppLayout.d.ts +30 -0
- package/dist/types/components/lib/templates/saas-hotel/DashboardPage.d.ts +20 -0
- package/dist/types/components/lib/templates/saas-hotel/GuestsPage.d.ts +20 -0
- package/dist/types/components/lib/templates/saas-hotel/LandingPage.d.ts +24 -0
- package/dist/types/components/lib/templates/saas-hotel/ReportsPage.d.ts +20 -0
- package/dist/types/components/lib/templates/saas-hotel/ReservationsPage.d.ts +20 -0
- package/dist/types/components/lib/templates/saas-hotel/RoomsPage.d.ts +20 -0
- package/dist/types/components/lib/templates/saas-hotel/SettingsPage.d.ts +21 -0
- package/dist/types/components/lib/templates/saas-hotel/SignInPage.d.ts +23 -0
- package/dist/types/components/lib/templates/saas-hotel/data.d.ts +224 -0
- package/dist/types/components/lib/templates/saas-hotel/index.d.ts +11 -0
- package/dist/types/components/lib/typography/AnimatedCounterText.d.ts +19 -0
- package/dist/types/components/lib/typography/AnimatedUnderlineLink.d.ts +9 -0
- package/dist/types/components/lib/typography/BackgroundClipMask.d.ts +8 -0
- package/dist/types/components/lib/typography/CodeInlineGlass.d.ts +8 -0
- package/dist/types/components/lib/typography/CurvedPathHeading.d.ts +15 -0
- package/dist/types/components/lib/typography/CyberpunkGlitchText.d.ts +7 -0
- package/dist/types/components/lib/typography/DropCapParagraph.d.ts +8 -0
- package/dist/types/components/lib/typography/FadedVerticalText.d.ts +8 -0
- package/dist/types/components/lib/typography/FloatingTextLabel.d.ts +8 -0
- package/dist/types/components/lib/typography/GlassBlockQuote.d.ts +8 -0
- package/dist/types/components/lib/typography/GlassTextReveal.d.ts +8 -0
- package/dist/types/components/lib/typography/GradientHeading.d.ts +11 -0
- package/dist/types/components/lib/typography/GradientTextMarquee.d.ts +15 -0
- package/dist/types/components/lib/typography/GradientUnderlineLink.d.ts +8 -0
- package/dist/types/components/lib/typography/HackerDecodeText.d.ts +15 -0
- package/dist/types/components/lib/typography/KbdIndicator.d.ts +8 -0
- package/dist/types/components/lib/typography/LetterSpacingWide.d.ts +8 -0
- package/dist/types/components/lib/typography/MinimalListMarkers.d.ts +8 -0
- package/dist/types/components/lib/typography/MonospaceStatLine.d.ts +8 -0
- package/dist/types/components/lib/typography/NeonTextHighlight.d.ts +8 -0
- package/dist/types/components/lib/typography/ShadowRevealText.d.ts +8 -0
- package/dist/types/components/lib/typography/StrokeHeadingOutline.d.ts +8 -0
- package/dist/types/components/lib/typography/Text3DLayer.d.ts +8 -0
- package/dist/types/components/lib/typography/TypewriterText.d.ts +8 -0
- package/dist/types/components/lib/typography/index.d.ts +24 -0
- package/dist/types/components/three.d.ts +1 -0
- package/dist/typography.js +28 -0
- package/package.json +237 -4
|
@@ -0,0 +1,1337 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as a, Fragment as I, jsxs as v } from "react/jsx-runtime";
|
|
3
|
+
import { d as H, C as O, c as J, n as q, q as Y, s as T, h as X, i as ta, P as K, N as Z, f as E, j as oa, l as la, e as G, K as da, p as j, g as ra, b as ia, k as ha } from "./StackedAreaChart-DF1-3rDG.js";
|
|
4
|
+
function ma($) {
|
|
5
|
+
const y = {};
|
|
6
|
+
for (const r of String($ ?? "").split(";")) {
|
|
7
|
+
const d = r.indexOf(":");
|
|
8
|
+
if (d < 0) continue;
|
|
9
|
+
const s = r.slice(0, d).trim();
|
|
10
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
11
|
+
}
|
|
12
|
+
return y;
|
|
13
|
+
}
|
|
14
|
+
function Na({
|
|
15
|
+
title: $ = "System Capabilities",
|
|
16
|
+
data: y = [
|
|
17
|
+
{ axis: "Speed", value: 95 },
|
|
18
|
+
{ axis: "A11y", value: 98 },
|
|
19
|
+
{ axis: "SEO", value: 100 },
|
|
20
|
+
{ axis: "Design", value: 92 },
|
|
21
|
+
{ axis: "Zero-JS", value: 96 },
|
|
22
|
+
{ axis: "Security", value: 90 }
|
|
23
|
+
],
|
|
24
|
+
color: r = "#d4a017",
|
|
25
|
+
size: d = 320
|
|
26
|
+
}) {
|
|
27
|
+
const s = d / 2, g = (d - 70) / 2, M = y.length, _ = Math.PI * 2 / M, C = [0.2, 0.4, 0.6, 0.8, 1].map((x) => y.map((p, i) => {
|
|
28
|
+
const l = g * x, o = s + l * Math.cos(_ * i - Math.PI / 2), h = s + l * Math.sin(_ * i - Math.PI / 2);
|
|
29
|
+
return `${o},${h}`;
|
|
30
|
+
}).join(" ")), S = y.map((x, p) => {
|
|
31
|
+
const i = g * (Math.min(100, Math.max(0, x.value)) / 100), l = s + i * Math.cos(_ * p - Math.PI / 2), o = s + i * Math.sin(_ * p - Math.PI / 2);
|
|
32
|
+
return `${l},${o}`;
|
|
33
|
+
}).join(" ");
|
|
34
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ v("div", { className: "radar-card", style: ma(`--radar-size: ${d}px; --radar-color: ${r};`), "data-rk-5aa1c8": "", children: [
|
|
35
|
+
$ && /* @__PURE__ */ a("h5", { className: "radar-card__title", "data-rk-5aa1c8": "", children: $ }),
|
|
36
|
+
/* @__PURE__ */ a("div", { className: "radar-card__wrap", "data-rk-5aa1c8": "", children: /* @__PURE__ */ v("svg", { width: d, height: d, className: "radar-card__svg", "data-rk-5aa1c8": "", children: [
|
|
37
|
+
C.map((x, p) => /* @__PURE__ */ a("polygon", { points: x, className: "radar-web", "data-rk-5aa1c8": "" }, p)),
|
|
38
|
+
y.map((x, p) => {
|
|
39
|
+
const i = s + g * Math.cos(_ * p - Math.PI / 2), l = s + g * Math.sin(_ * p - Math.PI / 2);
|
|
40
|
+
return /* @__PURE__ */ a("line", { x1: s, y1: s, x2: i, y2: l, className: "radar-spoke", "data-rk-5aa1c8": "" }, p);
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ a("polygon", { points: S, className: "radar-data", "data-rk-5aa1c8": "" }),
|
|
43
|
+
y.map((x, p) => {
|
|
44
|
+
const i = g * (x.value / 100), l = s + i * Math.cos(_ * p - Math.PI / 2), o = s + i * Math.sin(_ * p - Math.PI / 2);
|
|
45
|
+
return /* @__PURE__ */ a("circle", { cx: l, cy: o, r: "4", className: "radar-node", "data-rk-5aa1c8": "" }, p);
|
|
46
|
+
}),
|
|
47
|
+
y.map((x, p) => {
|
|
48
|
+
const i = g + 22, l = s + i * Math.cos(_ * p - Math.PI / 2), o = s + i * Math.sin(_ * p - Math.PI / 2);
|
|
49
|
+
return /* @__PURE__ */ v("text", { x: l, y: o, className: "radar-label", textAnchor: "middle", dominantBaseline: "central", "data-rk-5aa1c8": "", children: [
|
|
50
|
+
x.axis,
|
|
51
|
+
" (",
|
|
52
|
+
x.value,
|
|
53
|
+
")"
|
|
54
|
+
] }, p);
|
|
55
|
+
})
|
|
56
|
+
] }) })
|
|
57
|
+
] }) });
|
|
58
|
+
}
|
|
59
|
+
function ca($) {
|
|
60
|
+
const y = {};
|
|
61
|
+
for (const r of String($ ?? "").split(";")) {
|
|
62
|
+
const d = r.indexOf(":");
|
|
63
|
+
if (d < 0) continue;
|
|
64
|
+
const s = r.slice(0, d).trim();
|
|
65
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
66
|
+
}
|
|
67
|
+
return y;
|
|
68
|
+
}
|
|
69
|
+
function wa({
|
|
70
|
+
title: $ = "System Resource Allocation",
|
|
71
|
+
segments: y = [
|
|
72
|
+
{ label: "SSR Execution", value: 45, color: "#d4a017" },
|
|
73
|
+
{ label: "Asset Caching", value: 25, color: "#38bdf8" },
|
|
74
|
+
{ label: "Edge Worker", value: 15, color: "#a855f7" },
|
|
75
|
+
{ label: "Free Headroom", value: 15, color: "rgb(var(--ink-rgb, 255 255 255) / 0.1)" }
|
|
76
|
+
],
|
|
77
|
+
total: r = "100%"
|
|
78
|
+
}) {
|
|
79
|
+
const d = y.reduce((s, g) => s + g.value, 0) || 100;
|
|
80
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ v("div", { className: "linear-gauge", "data-rk-4f95ee": "", children: [
|
|
81
|
+
/* @__PURE__ */ v("div", { className: "linear-gauge__header", "data-rk-4f95ee": "", children: [
|
|
82
|
+
/* @__PURE__ */ a("span", { className: "linear-gauge__title", "data-rk-4f95ee": "", children: $ }),
|
|
83
|
+
/* @__PURE__ */ a("span", { className: "linear-gauge__total", "data-rk-4f95ee": "", children: r })
|
|
84
|
+
] }),
|
|
85
|
+
/* @__PURE__ */ a("div", { className: "linear-gauge__bar", role: "progressbar", "aria-valuemax": 100, "aria-valuemin": 0, "data-rk-4f95ee": "", children: y.map((s, g) => {
|
|
86
|
+
const M = s.value / d * 100;
|
|
87
|
+
return /* @__PURE__ */ a("div", { className: "linear-gauge__chunk", style: ca(`width: ${M}%; background-color: ${s.color};`), title: `${s.label}: ${s.value}%`, "data-rk-4f95ee": "" }, g);
|
|
88
|
+
}) }),
|
|
89
|
+
/* @__PURE__ */ a("div", { className: "linear-gauge__legend", "data-rk-4f95ee": "", children: y.map((s, g) => /* @__PURE__ */ v("div", { className: "legend-item", "data-rk-4f95ee": "", children: [
|
|
90
|
+
/* @__PURE__ */ a("span", { className: "legend-item__dot", style: ca(`background-color: ${s.color};`), "data-rk-4f95ee": "" }),
|
|
91
|
+
/* @__PURE__ */ a("span", { className: "legend-item__name", "data-rk-4f95ee": "", children: s.label }),
|
|
92
|
+
/* @__PURE__ */ v("span", { className: "legend-item__val", "data-rk-4f95ee": "", children: [
|
|
93
|
+
s.value,
|
|
94
|
+
"%"
|
|
95
|
+
] })
|
|
96
|
+
] }, g)) })
|
|
97
|
+
] }) });
|
|
98
|
+
}
|
|
99
|
+
function ba($) {
|
|
100
|
+
const y = {};
|
|
101
|
+
for (const r of String($ ?? "").split(";")) {
|
|
102
|
+
const d = r.indexOf(":");
|
|
103
|
+
if (d < 0) continue;
|
|
104
|
+
const s = r.slice(0, d).trim();
|
|
105
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
106
|
+
}
|
|
107
|
+
return y;
|
|
108
|
+
}
|
|
109
|
+
function Wa({
|
|
110
|
+
title: $ = "Today",
|
|
111
|
+
subtitle: y = "Daily goals",
|
|
112
|
+
rings: r = [
|
|
113
|
+
{ label: "Focus time", value: 5.2, goal: 6, unit: "h" },
|
|
114
|
+
{ label: "Tasks done", value: 11, goal: 8 },
|
|
115
|
+
{ label: "Reviews", value: 3, goal: 5 }
|
|
116
|
+
],
|
|
117
|
+
colors: d = ["var(--chart-5, #d55181)", "var(--chart-3, #199e70)", "var(--chart-1, #3987e5)"],
|
|
118
|
+
variant: s = "glass",
|
|
119
|
+
size: g = "md",
|
|
120
|
+
className: M = ""
|
|
121
|
+
}) {
|
|
122
|
+
const S = r.slice(0, 4).map((x, p) => {
|
|
123
|
+
const i = 96 - p * 24, l = x.value / (x.goal || 1);
|
|
124
|
+
return { ...x, radius: i, pct: l, color: H(p, d) };
|
|
125
|
+
});
|
|
126
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: s, size: g, className: M, table: { headers: ["Goal", "Value", "Target", "Progress"], rows: S.map((x) => [x.label, `${x.value}${x.unit ?? ""}`, `${x.goal}${x.unit ?? ""}`, `${Math.round(x.pct * 100)}%`]) }, children: /* @__PURE__ */ v("div", { className: "ar", "data-rk-2006ec": "", children: [
|
|
127
|
+
/* @__PURE__ */ a("svg", { viewBox: "0 0 220 220", role: "img", "aria-label": `${$}: ${S.map((x) => `${x.label} ${Math.round(x.pct * 100)}%`).join(", ")}`, "data-rk-2006ec": "", children: S.map((x, p) => {
|
|
128
|
+
const i = Math.min(x.pct, 0.9999), l = x.pct > 1 ? Math.min(x.pct - 1, 0.9999) : 0;
|
|
129
|
+
return /* @__PURE__ */ v("g", { "data-rk-2006ec": "", children: [
|
|
130
|
+
/* @__PURE__ */ a("circle", { cx: 110, cy: 110, r: x.radius, fill: "none", stroke: x.color, strokeOpacity: "0.16", strokeWidth: 20, "data-rk-2006ec": "" }),
|
|
131
|
+
i > 0 && /* @__PURE__ */ a("path", { className: "ar__arc", d: J(110, 110, x.radius, 0, Math.PI * 2 * i), fill: "none", stroke: x.color, strokeWidth: 20, strokeLinecap: "round", "data-rk-2006ec": "" }),
|
|
132
|
+
l > 0 && /* @__PURE__ */ a("path", { d: J(110, 110, x.radius, 0, Math.PI * 2 * l), fill: "none", stroke: x.color, strokeWidth: 20, strokeLinecap: "round", style: { filter: "drop-shadow(0 0 3px rgba(0,0,0,0.6)) brightness(1.15)" }, "data-rk-2006ec": "" })
|
|
133
|
+
] }, p);
|
|
134
|
+
}) }),
|
|
135
|
+
/* @__PURE__ */ a("ul", { className: "ar__list", "data-rk-2006ec": "", children: S.map((x, p) => /* @__PURE__ */ v("li", { "data-rk-2006ec": "", children: [
|
|
136
|
+
/* @__PURE__ */ v("span", { className: "ar__label", "data-rk-2006ec": "", children: [
|
|
137
|
+
/* @__PURE__ */ a("i", { style: ba(`background:${x.color}`), "aria-hidden": "true", "data-rk-2006ec": "" }),
|
|
138
|
+
x.label
|
|
139
|
+
] }),
|
|
140
|
+
/* @__PURE__ */ v("span", { className: "ar__value", "data-rk-2006ec": "", children: [
|
|
141
|
+
x.value,
|
|
142
|
+
x.unit ?? "",
|
|
143
|
+
/* @__PURE__ */ v("small", { "data-rk-2006ec": "", children: [
|
|
144
|
+
"/",
|
|
145
|
+
x.goal,
|
|
146
|
+
x.unit ?? ""
|
|
147
|
+
] })
|
|
148
|
+
] }),
|
|
149
|
+
/* @__PURE__ */ v("span", { className: "ar__pct", "data-rk-2006ec": "", children: [
|
|
150
|
+
Math.round(x.pct * 100),
|
|
151
|
+
"%",
|
|
152
|
+
x.pct >= 1 && /* @__PURE__ */ a("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", "aria-label": "goal met", "data-rk-2006ec": "", children: /* @__PURE__ */ a("path", { d: "M20 6 9 17l-5-5", "data-rk-2006ec": "" }) })
|
|
153
|
+
] })
|
|
154
|
+
] }, p)) })
|
|
155
|
+
] }) }) });
|
|
156
|
+
}
|
|
157
|
+
const V = ($, y, r, d) => Array.from({ length: y }, (s, g) => {
|
|
158
|
+
const M = Math.sin((g + 1) * $) * 9999, _ = Math.sin((g + 3) * $ * 1.7) * 9999;
|
|
159
|
+
return Math.round(r + (M - Math.floor(M) + (_ - Math.floor(_)) - 1) * d);
|
|
160
|
+
});
|
|
161
|
+
function _a({
|
|
162
|
+
title: $ = "Response time by region",
|
|
163
|
+
subtitle: y = "Distribution of p50 latency, ms",
|
|
164
|
+
groups: r = [
|
|
165
|
+
{ label: "us-east", values: [...V(1.3, 40, 82, 40), 190] },
|
|
166
|
+
{ label: "us-west", values: V(2.7, 40, 95, 45) },
|
|
167
|
+
{ label: "eu-central", values: [...V(4.1, 40, 70, 30), 160, 172] },
|
|
168
|
+
{ label: "ap-south", values: V(5.9, 40, 140, 70) },
|
|
169
|
+
{ label: "sa-east", values: V(8.3, 40, 160, 55) }
|
|
170
|
+
],
|
|
171
|
+
suffix: d = "ms",
|
|
172
|
+
height: s = 290,
|
|
173
|
+
color: g = "var(--chart-1, #3987e5)",
|
|
174
|
+
variant: M = "glass",
|
|
175
|
+
size: _ = "md",
|
|
176
|
+
className: w = ""
|
|
177
|
+
}) {
|
|
178
|
+
const C = r.map((c) => {
|
|
179
|
+
const e = [...c.values].sort((k, P) => k - P), u = Y(e, 0.25), f = Y(e, 0.5), A = Y(e, 0.75), N = A - u, W = e.find((k) => k >= u - 1.5 * N) ?? e[0], b = [...e].reverse().find((k) => k <= A + 1.5 * N) ?? e[e.length - 1], m = e.filter((k) => k < W || k > b);
|
|
180
|
+
return { label: c.label, q1: u, med: f, q3: A, lo: W, hi: b, outliers: m, n: e.length };
|
|
181
|
+
}), S = 640, x = s, p = { t: 14, r: 12, b: 30, l: 48 }, i = r.flatMap((c) => c.values), l = q(Math.min(...i), Math.max(...i), 4), o = T(l[0], l[l.length - 1], x - p.b, p.t), h = (S - p.l - p.r) / r.length, t = Math.min(56, h * 0.45), n = (c) => `${Math.round(c)}${d}`;
|
|
182
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: M, size: _, className: w, table: { headers: ["Group", "Min", "Q1", "Median", "Q3", "Max", "Outliers"], rows: C.map((c) => [c.label, n(c.lo), n(c.q1), n(c.med), n(c.q3), n(c.hi), c.outliers.length]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 ${S} ${x}`, role: "img", "aria-label": `${$}: box plot of ${r.length} groups`, children: [
|
|
183
|
+
l.map((c, e) => /* @__PURE__ */ v("g", { children: [
|
|
184
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: p.l, x2: S - p.r, y1: o(c), y2: o(c) }),
|
|
185
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: p.l - 8, y: o(c) + 4, textAnchor: "end", children: n(c) })
|
|
186
|
+
] }, e)),
|
|
187
|
+
C.map((c, e) => {
|
|
188
|
+
const u = p.l + e * h + h / 2;
|
|
189
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${c.label}: median ${n(c.med)}, IQR ${n(c.q1)}–${n(c.q3)}, range ${n(c.lo)}–${n(c.hi)}, ${c.outliers.length} outliers`, "data-tip-title": c.label, "data-tip": `Max: ${n(c.hi)}|Q3: ${n(c.q3)}|${g}::Median: ${n(c.med)}|Q1: ${n(c.q1)}|Min: ${n(c.lo)}${c.outliers.length ? `|Outliers: ${c.outliers.length}` : ""}`, children: [
|
|
190
|
+
/* @__PURE__ */ a("rect", { x: u - h / 2, y: p.t, width: h, height: x - p.t - p.b, fill: "transparent" }),
|
|
191
|
+
/* @__PURE__ */ a("line", { x1: u, x2: u, y1: o(c.hi), y2: o(c.q3), stroke: "var(--c-text-2, #a3a3a3)", strokeWidth: "1.5" }),
|
|
192
|
+
/* @__PURE__ */ a("line", { x1: u, x2: u, y1: o(c.q1), y2: o(c.lo), stroke: "var(--c-text-2, #a3a3a3)", strokeWidth: "1.5" }),
|
|
193
|
+
/* @__PURE__ */ a("line", { x1: u - t / 4, x2: u + t / 4, y1: o(c.hi), y2: o(c.hi), stroke: "var(--c-text-2, #a3a3a3)", strokeWidth: "1.5" }),
|
|
194
|
+
/* @__PURE__ */ a("line", { x1: u - t / 4, x2: u + t / 4, y1: o(c.lo), y2: o(c.lo), stroke: "var(--c-text-2, #a3a3a3)", strokeWidth: "1.5" }),
|
|
195
|
+
/* @__PURE__ */ a("rect", { x: u - t / 2, y: o(c.q3), width: t, height: Math.max(1, o(c.q1) - o(c.q3)), rx: "4", fill: g, fillOpacity: "0.3", stroke: g, strokeWidth: "1.5" }),
|
|
196
|
+
/* @__PURE__ */ a("line", { x1: u - t / 2, x2: u + t / 2, y1: o(c.med), y2: o(c.med), stroke: "var(--c-text-1, #fff)", strokeWidth: "2.5" }),
|
|
197
|
+
c.outliers.map((f, A) => /* @__PURE__ */ a("circle", { cx: u, cy: o(f), r: "3.5", fill: "none", stroke: g, strokeWidth: "1.5" }, A)),
|
|
198
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: u, y: x - 10, textAnchor: "middle", children: c.label })
|
|
199
|
+
] }, e);
|
|
200
|
+
})
|
|
201
|
+
] }) }) });
|
|
202
|
+
}
|
|
203
|
+
function Sa({
|
|
204
|
+
title: $ = "Market opportunity",
|
|
205
|
+
subtitle: y = "Growth vs margin, bubble = revenue",
|
|
206
|
+
items: r = [
|
|
207
|
+
{ label: "Analytics", x: 34, y: 62, z: 120, group: 0 },
|
|
208
|
+
{ label: "Payments", x: 18, y: 41, z: 260, group: 0 },
|
|
209
|
+
{ label: "CRM", x: 9, y: 55, z: 180, group: 1 },
|
|
210
|
+
{ label: "Hosting", x: 22, y: 28, z: 90, group: 1 },
|
|
211
|
+
{ label: "AI tools", x: 71, y: 48, z: 70, group: 2 },
|
|
212
|
+
{ label: "Security", x: 27, y: 72, z: 140, group: 2 },
|
|
213
|
+
{ label: "Email", x: 6, y: 66, z: 60, group: 1 },
|
|
214
|
+
{ label: "Design", x: 41, y: 58, z: 85, group: 0 }
|
|
215
|
+
],
|
|
216
|
+
groups: d = ["Core", "Mature", "Emerging"],
|
|
217
|
+
xLabel: s = "YoY growth (%)",
|
|
218
|
+
yLabel: g = "Gross margin (%)",
|
|
219
|
+
zLabel: M = "Revenue ($M)",
|
|
220
|
+
height: _ = 320,
|
|
221
|
+
colors: w,
|
|
222
|
+
variant: C = "glass",
|
|
223
|
+
size: S = "md",
|
|
224
|
+
className: x = ""
|
|
225
|
+
}) {
|
|
226
|
+
const i = _, l = { t: 20, r: 24, b: 40, l: 48 }, o = q(0, Math.max(...r.map((f) => f.x)), 5), h = q(0, Math.max(...r.map((f) => f.y)), 4), t = T(o[0], o[o.length - 1], l.l, 640 - l.r), n = T(h[0], h[h.length - 1], i - l.b, l.t), c = Math.max(...r.map((f) => f.z)) || 1, e = (f) => 6 + Math.sqrt(f / c) * 30, u = [...r].sort((f, A) => A.z - f.z);
|
|
227
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: C, size: S, className: x, legend: d.slice(0, 3).map((f, A) => ({ label: f, color: H(A, w) })), table: { headers: ["Item", "Group", s, g, M], rows: r.map((f) => [f.label, d[f.group ?? 0] ?? "—", f.x, f.y, f.z]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${i}`, role: "img", "aria-label": `${$}: bubble chart of ${r.length} items`, children: [
|
|
228
|
+
h.map((f, A) => /* @__PURE__ */ v("g", { children: [
|
|
229
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: l.l, x2: 640 - l.r, y1: n(f), y2: n(f) }),
|
|
230
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l.l - 8, y: n(f) + 4, textAnchor: "end", children: X(f) })
|
|
231
|
+
] }, A)),
|
|
232
|
+
o.map((f, A) => /* @__PURE__ */ a("text", { className: "cf-label", x: t(f), y: i - l.b + 16, textAnchor: "middle", children: X(f) }, A)),
|
|
233
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: (l.l + 640 - l.r) / 2, y: i - 4, textAnchor: "middle", children: s }),
|
|
234
|
+
/* @__PURE__ */ a("text", { className: "cf-label", transform: `translate(12 ${(l.t + i - l.b) / 2}) rotate(-90)`, textAnchor: "middle", children: g }),
|
|
235
|
+
u.map((f, A) => {
|
|
236
|
+
const N = H(f.group ?? 0, w), W = e(f.z);
|
|
237
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${f.label}: ${s} ${f.x}, ${g} ${f.y}, ${M} ${f.z}`, "data-tip-title": f.label, "data-tip": `${N}::${d[f.group ?? 0] ?? ""}|${s}: ${f.x}|${g}: ${f.y}|${M}: ${f.z}`, children: [
|
|
238
|
+
/* @__PURE__ */ a("circle", { cx: t(f.x), cy: n(f.y), r: W, fill: N, fillOpacity: "0.55", stroke: N, strokeWidth: "1.5" }),
|
|
239
|
+
W > 18 && /* @__PURE__ */ a("text", { x: t(f.x), y: n(f.y) + 4, textAnchor: "middle", fill: "#fff", fontSize: "11", fontWeight: "600", children: f.label })
|
|
240
|
+
] }, A);
|
|
241
|
+
})
|
|
242
|
+
] }) }) });
|
|
243
|
+
}
|
|
244
|
+
function Q($) {
|
|
245
|
+
const y = {};
|
|
246
|
+
for (const r of String($ ?? "").split(";")) {
|
|
247
|
+
const d = r.indexOf(":");
|
|
248
|
+
if (d < 0) continue;
|
|
249
|
+
const s = r.slice(0, d).trim();
|
|
250
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
251
|
+
}
|
|
252
|
+
return y;
|
|
253
|
+
}
|
|
254
|
+
function Aa({
|
|
255
|
+
title: $ = "Quarterly targets",
|
|
256
|
+
subtitle: y = "Measure vs target with performance bands",
|
|
257
|
+
metrics: r = [
|
|
258
|
+
{ label: "Revenue ($k)", value: 270, target: 250, ranges: [150, 225, 300] },
|
|
259
|
+
{ label: "Profit", value: 23, target: 26, ranges: [20, 25, 30], unit: "%" },
|
|
260
|
+
{ label: "New customers", value: 1650, target: 2100, ranges: [1400, 2e3, 2500] },
|
|
261
|
+
{ label: "NPS", value: 54, target: 50, ranges: [30, 50, 70] }
|
|
262
|
+
],
|
|
263
|
+
color: d = "var(--c-text-1, #fff)",
|
|
264
|
+
variant: s = "glass",
|
|
265
|
+
size: g = "md",
|
|
266
|
+
className: M = ""
|
|
267
|
+
}) {
|
|
268
|
+
const _ = (w, C) => `${Math.min(100, w / C * 100)}%`;
|
|
269
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: s, size: g, className: M, table: { headers: ["Metric", "Value", "Target", "Status"], rows: r.map((w) => [w.label, `${w.value}${w.unit ?? ""}`, `${w.target}${w.unit ?? ""}`, w.value >= w.target ? "On target" : "Below target"]) }, children: /* @__PURE__ */ a("div", { className: "bc", "data-rk-d2b72d": "", children: r.map((w, C) => {
|
|
270
|
+
const S = w.ranges[2], x = w.value >= w.target;
|
|
271
|
+
return /* @__PURE__ */ v("div", { className: "bc__row cf-mark", tabIndex: 0, role: "meter", "aria-valuemin": 0, "aria-valuemax": S, "aria-valuenow": w.value, "aria-label": `${w.label}: ${w.value}${w.unit ?? ""} of target ${w.target}${w.unit ?? ""}`, "data-tip-title": w.label, "data-tip": `Value: ${w.value}${w.unit ?? ""}|Target: ${w.target}${w.unit ?? ""}|${x ? "var(--chart-pos)::On target" : "var(--chart-neg)::Below target"}`, "data-rk-d2b72d": "", children: [
|
|
272
|
+
/* @__PURE__ */ v("div", { className: "bc__meta", "data-rk-d2b72d": "", children: [
|
|
273
|
+
/* @__PURE__ */ a("span", { className: "bc__label", "data-rk-d2b72d": "", children: w.label }),
|
|
274
|
+
/* @__PURE__ */ v("span", { className: "bc__value", "data-rk-d2b72d": "", children: [
|
|
275
|
+
w.value,
|
|
276
|
+
w.unit ?? "",
|
|
277
|
+
/* @__PURE__ */ v("span", { className: `bc__status ${x ? "bc__status--ok" : "bc__status--bad"}`, "data-rk-d2b72d": "", children: [
|
|
278
|
+
/* @__PURE__ */ a("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", "aria-hidden": "true", "data-rk-d2b72d": "", children: x ? /* @__PURE__ */ a("path", { d: "M20 6 9 17l-5-5", "data-rk-d2b72d": "" }) : /* @__PURE__ */ v(I, { children: [
|
|
279
|
+
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "9", "data-rk-d2b72d": "" }),
|
|
280
|
+
/* @__PURE__ */ a("path", { d: "M12 8v4M12 16h.01", "data-rk-d2b72d": "" })
|
|
281
|
+
] }) }),
|
|
282
|
+
x ? "On target" : "Below"
|
|
283
|
+
] })
|
|
284
|
+
] })
|
|
285
|
+
] }),
|
|
286
|
+
/* @__PURE__ */ v("div", { className: "bc__track", "aria-hidden": "true", "data-rk-d2b72d": "", children: [
|
|
287
|
+
/* @__PURE__ */ a("span", { className: "bc__band", style: Q(`width:${_(w.ranges[2], S)}; opacity:0.07`), "data-rk-d2b72d": "" }),
|
|
288
|
+
/* @__PURE__ */ a("span", { className: "bc__band", style: Q(`width:${_(w.ranges[1], S)}; opacity:0.11`), "data-rk-d2b72d": "" }),
|
|
289
|
+
/* @__PURE__ */ a("span", { className: "bc__band", style: Q(`width:${_(w.ranges[0], S)}; opacity:0.16`), "data-rk-d2b72d": "" }),
|
|
290
|
+
/* @__PURE__ */ a("span", { className: "bc__measure", style: Q(`width:${_(w.value, S)}; background:${d}`), "data-rk-d2b72d": "" }),
|
|
291
|
+
/* @__PURE__ */ a("span", { className: "bc__target", style: Q(`left:${_(w.target, S)}`), "data-rk-d2b72d": "" })
|
|
292
|
+
] })
|
|
293
|
+
] }, C);
|
|
294
|
+
}) }) }) });
|
|
295
|
+
}
|
|
296
|
+
function Ca({
|
|
297
|
+
title: $ = "Framework popularity rank",
|
|
298
|
+
subtitle: y = "Developer survey position by year",
|
|
299
|
+
periods: r = ["2021", "2022", "2023", "2024", "2025", "2026"],
|
|
300
|
+
series: d = [
|
|
301
|
+
{ name: "React", ranks: [5, 4, 3, 2, 1, 1] },
|
|
302
|
+
{ name: "Next", ranks: [1, 1, 1, 1, 2, 2] },
|
|
303
|
+
{ name: "Svelte", ranks: [3, 2, 2, 3, 3, 4] },
|
|
304
|
+
{ name: "Nuxt", ranks: [2, 3, 4, 4, 5, 3] },
|
|
305
|
+
{ name: "Remix", ranks: [4, 5, 5, 5, 4, 5] }
|
|
306
|
+
],
|
|
307
|
+
colors: s,
|
|
308
|
+
variant: g = "glass",
|
|
309
|
+
size: M = "md",
|
|
310
|
+
className: _ = ""
|
|
311
|
+
}) {
|
|
312
|
+
const C = Math.max(...d.flatMap((t) => t.ranks)), S = 44, x = C * S + 36, p = { t: 30, l: 80, r: 80 }, i = r.length, l = (t) => p.l + t / Math.max(1, i - 1) * (640 - p.l - p.r), o = (t) => p.t + (t - 1) * S + 8, h = d.slice(0, 8).map((t, n) => ({
|
|
313
|
+
...t,
|
|
314
|
+
color: H(n, s),
|
|
315
|
+
pts: t.ranks.map((c, e) => [l(e), o(c)])
|
|
316
|
+
}));
|
|
317
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: g, size: M, className: _, legend: h.map((t) => ({ label: t.name, color: t.color })), table: { headers: ["Name", ...r], rows: d.map((t) => [t.name, ...t.ranks.map((n) => `#${n}`)]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${x}`, role: "img", "aria-label": `${$}: bump chart of ranks over ${i} periods`, children: [
|
|
318
|
+
r.map((t, n) => /* @__PURE__ */ v("g", { children: [
|
|
319
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: l(n), x2: l(n), y1: p.t - 6, y2: x - 10 }),
|
|
320
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l(n), y: 14, textAnchor: "middle", children: t })
|
|
321
|
+
] }, n)),
|
|
322
|
+
h.map((t, n) => /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${t.name}: ${t.ranks.map((c, e) => `${r[e]} #${c}`).join(", ")}`, "data-tip-title": t.name, "data-tip": t.ranks.map((c, e) => `${r[e]}: #${c}`).join("|"), children: [
|
|
323
|
+
/* @__PURE__ */ a("path", { d: ta(t.pts), fill: "none", stroke: t.color, strokeWidth: "3", strokeLinecap: "round" }),
|
|
324
|
+
/* @__PURE__ */ a("path", { d: ta(t.pts), fill: "none", stroke: "transparent", strokeWidth: "16" }),
|
|
325
|
+
t.pts.map(([c, e], u) => /* @__PURE__ */ v("g", { children: [
|
|
326
|
+
/* @__PURE__ */ a("circle", { cx: c, cy: e, r: "11", fill: t.color, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2" }),
|
|
327
|
+
/* @__PURE__ */ a("text", { x: c, y: e + 4, textAnchor: "middle", fontSize: "10", fontWeight: "700", fill: "#fff", children: t.ranks[u] })
|
|
328
|
+
] }, u)),
|
|
329
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: p.l - 18, y: t.pts[0][1] + 4, textAnchor: "end", children: t.name }),
|
|
330
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: 640 - p.r + 18, y: t.pts[i - 1][1] + 4, children: t.name })
|
|
331
|
+
] }, n))
|
|
332
|
+
] }) }) });
|
|
333
|
+
}
|
|
334
|
+
const ua = (() => {
|
|
335
|
+
let $ = 182;
|
|
336
|
+
return Array.from({ length: 22 }, (y, r) => {
|
|
337
|
+
const d = Math.sin(r * 4.7) * 0.5 + Math.sin(r * 1.3) * 0.5, s = Math.abs(Math.sin(r * 9.1)), g = $, M = Math.round(($ + d * 6 + 0.6) * 100) / 100, _ = Math.round((Math.max(g, M) + s * 3 + 0.4) * 100) / 100, w = Math.round((Math.min(g, M) - (1 - s) * 3 - 0.4) * 100) / 100;
|
|
338
|
+
return $ = M, { label: `Oct ${r + 6}`, open: g, high: _, low: w, close: M };
|
|
339
|
+
});
|
|
340
|
+
})();
|
|
341
|
+
function Pa({
|
|
342
|
+
title: $ = "ACME / USD",
|
|
343
|
+
subtitle: y = "Daily candles",
|
|
344
|
+
candles: r = ua,
|
|
345
|
+
prefix: d = "$",
|
|
346
|
+
height: s = 300,
|
|
347
|
+
variant: g = "glass",
|
|
348
|
+
size: M = "md",
|
|
349
|
+
className: _ = ""
|
|
350
|
+
}) {
|
|
351
|
+
const C = s, S = { t: 12, r: 52, b: 28, l: 12 }, x = q(Math.min(...r.map((e) => e.low)), Math.max(...r.map((e) => e.high)), 5), p = T(x[0], x[x.length - 1], C - S.b, S.t), i = (640 - S.l - S.r) / r.length, l = Math.max(3, i * 0.6), o = (e) => `${d}${e.toFixed(2)}`, h = r[r.length - 1], t = r[0], n = (h.close - t.open) / t.open * 100, c = Math.ceil(r.length / 6);
|
|
352
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, value: o(h.close), delta: `${n >= 0 ? "+" : ""}${n.toFixed(2)}%`, deltaPositive: n >= 0, variant: g, size: M, className: _, legend: [{ label: "Up (hollow)", color: K }, { label: "Down (filled)", color: Z }], table: { headers: ["Date", "Open", "High", "Low", "Close"], rows: r.map((e) => [e.label, o(e.open), o(e.high), o(e.low), o(e.close)]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${C}`, role: "img", "aria-label": `${$}: candlestick chart, ${r.length} periods, ${n.toFixed(1)}% change`, children: [
|
|
353
|
+
x.map((e, u) => /* @__PURE__ */ v("g", { children: [
|
|
354
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: S.l, x2: 640 - S.r, y1: p(e), y2: p(e) }),
|
|
355
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: 640 - S.r + 8, y: p(e) + 4, children: o(e) })
|
|
356
|
+
] }, u)),
|
|
357
|
+
r.map((e, u) => {
|
|
358
|
+
const f = S.l + u * i + i / 2, A = e.close >= e.open, N = A ? K : Z, W = p(Math.max(e.open, e.close)), b = Math.max(1.5, Math.abs(p(e.open) - p(e.close)));
|
|
359
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${e.label}: open ${o(e.open)}, high ${o(e.high)}, low ${o(e.low)}, close ${o(e.close)}`, "data-tip-title": e.label, "data-tip": `${N}::${A ? "Up" : "Down"} ${((e.close - e.open) / e.open * 100).toFixed(2)}%|O ${o(e.open)} · H ${o(e.high)}|L ${o(e.low)} · C ${o(e.close)}`, children: [
|
|
360
|
+
/* @__PURE__ */ a("rect", { x: f - i / 2, y: S.t, width: i, height: C - S.t - S.b, fill: "transparent" }),
|
|
361
|
+
/* @__PURE__ */ a("line", { x1: f, x2: f, y1: p(e.high), y2: p(e.low), stroke: N, strokeWidth: "1.5" }),
|
|
362
|
+
/* @__PURE__ */ a("rect", { x: f - l / 2, y: W, width: l, height: b, rx: "1.5", fill: A ? "var(--chart-surface, #0d0d0f)" : N, stroke: N, strokeWidth: "1.5" }),
|
|
363
|
+
u % c === 0 && /* @__PURE__ */ a("text", { className: "cf-label", x: f, y: C - 8, textAnchor: "middle", children: e.label })
|
|
364
|
+
] }, u);
|
|
365
|
+
}),
|
|
366
|
+
/* @__PURE__ */ a("line", { x1: S.l, x2: 640 - S.r, y1: p(h.close), y2: p(h.close), stroke: "var(--c-text-1, #fff)", strokeOpacity: "0.3", strokeDasharray: "3 4", "aria-hidden": "true" })
|
|
367
|
+
] }) }) });
|
|
368
|
+
}
|
|
369
|
+
function Ia({
|
|
370
|
+
title: $ = "Budget variance by team",
|
|
371
|
+
subtitle: y = "Actual minus plan, Q3",
|
|
372
|
+
items: r = [
|
|
373
|
+
{ label: "Engineering", value: -42 },
|
|
374
|
+
{ label: "Marketing", value: 28 },
|
|
375
|
+
{ label: "Sales", value: 64 },
|
|
376
|
+
{ label: "Support", value: -12 },
|
|
377
|
+
{ label: "Design", value: 9 },
|
|
378
|
+
{ label: "Ops", value: -31 }
|
|
379
|
+
],
|
|
380
|
+
positiveLabel: d = "Under budget",
|
|
381
|
+
negativeLabel: s = "Over budget",
|
|
382
|
+
prefix: g = "$",
|
|
383
|
+
suffix: M = "k",
|
|
384
|
+
positiveColor: _ = "var(--chart-1, #3987e5)",
|
|
385
|
+
negativeColor: w = "var(--chart-2, #d95926)",
|
|
386
|
+
variant: C = "glass",
|
|
387
|
+
size: S = "md",
|
|
388
|
+
className: x = ""
|
|
389
|
+
}) {
|
|
390
|
+
const l = { t: 8, r: 56, b: 26, l: 110 }, o = r.length * 34 + l.t + l.b, h = Math.max(...r.map((e) => Math.abs(e.value))), t = q(-h, h, 4), n = T(t[0], t[t.length - 1], l.l, 640 - l.r), c = (e) => `${e > 0 ? "+" : e < 0 ? "−" : ""}${E(Math.abs(e), g, M)}`;
|
|
391
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: C, size: S, className: x, legend: [{ label: d, color: _ }, { label: s, color: w }], table: { headers: ["Item", "Value"], rows: r.map((e) => [e.label, c(e.value)]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${o}`, role: "img", "aria-label": `${$}: diverging bar chart`, children: [
|
|
392
|
+
t.map((e, u) => /* @__PURE__ */ v("g", { children: [
|
|
393
|
+
/* @__PURE__ */ a("line", { className: e === 0 ? "cf-axis" : "cf-grid", x1: n(e), x2: n(e), y1: l.t, y2: o - l.b }),
|
|
394
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: n(e), y: o - 8, textAnchor: "middle", children: e === 0 ? "0" : c(e) })
|
|
395
|
+
] }, u)),
|
|
396
|
+
r.map((e, u) => {
|
|
397
|
+
const f = l.t + u * 34 + 17, A = e.value >= 0, N = n(0), W = n(e.value), b = A ? _ : w, m = Math.abs(W - N);
|
|
398
|
+
return /* @__PURE__ */ v("g", { children: [
|
|
399
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l.l - 10, y: f + 4, textAnchor: "end", children: e.label }),
|
|
400
|
+
/* @__PURE__ */ a("rect", { className: "cf-mark cf-dim", x: Math.min(N, W), y: f - 9, width: Math.max(1, m), height: "18", rx: "4", fill: b, tabIndex: 0, role: "img", "aria-label": `${e.label}: ${c(e.value)}`, "data-tip-title": e.label, "data-tip": `${b}::${A ? d : s}: ${c(e.value)}` }),
|
|
401
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: A ? W + 6 : W - 6, y: f + 4, textAnchor: A ? "start" : "end", children: c(e.value) })
|
|
402
|
+
] }, u);
|
|
403
|
+
})
|
|
404
|
+
] }) }) });
|
|
405
|
+
}
|
|
406
|
+
function Ba({
|
|
407
|
+
title: $ = "Time to first value",
|
|
408
|
+
subtitle: y = "Minutes, before vs after onboarding redesign",
|
|
409
|
+
items: r = [
|
|
410
|
+
{ label: "Solo devs", a: 34, b: 12 },
|
|
411
|
+
{ label: "Startups", a: 41, b: 18 },
|
|
412
|
+
{ label: "Agencies", a: 52, b: 26 },
|
|
413
|
+
{ label: "Mid-market", a: 63, b: 37 },
|
|
414
|
+
{ label: "Enterprise", a: 88, b: 54 }
|
|
415
|
+
],
|
|
416
|
+
aLabel: d = "Before",
|
|
417
|
+
bLabel: s = "After",
|
|
418
|
+
prefix: g = "",
|
|
419
|
+
suffix: M = "m",
|
|
420
|
+
colors: _,
|
|
421
|
+
variant: w = "glass",
|
|
422
|
+
size: C = "md",
|
|
423
|
+
className: S = ""
|
|
424
|
+
}) {
|
|
425
|
+
const i = { t: 8, r: 24, b: 26, l: 110 }, l = r.length * 40 + i.t + i.b, o = q(0, Math.max(...r.flatMap((e) => [e.a, e.b])), 5), h = T(0, o[o.length - 1], i.l, 640 - i.r), t = H(0, _), n = H(1, _), c = (e) => E(e, g, M);
|
|
426
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: w, size: C, className: S, legend: [{ label: d, color: t }, { label: s, color: n }], table: { headers: ["Item", d, s, "Difference"], rows: r.map((e) => [e.label, c(e.a), c(e.b), c(e.b - e.a)]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${l}`, role: "img", "aria-label": `${$}: dumbbell chart comparing ${d} and ${s}`, children: [
|
|
427
|
+
o.map((e, u) => /* @__PURE__ */ v("g", { children: [
|
|
428
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: h(e), x2: h(e), y1: i.t, y2: l - i.b }),
|
|
429
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: h(e), y: l - 8, textAnchor: "middle", children: c(e) })
|
|
430
|
+
] }, u)),
|
|
431
|
+
r.map((e, u) => {
|
|
432
|
+
const f = i.t + u * 40 + 20;
|
|
433
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${e.label}: ${d} ${c(e.a)}, ${s} ${c(e.b)}`, "data-tip-title": e.label, "data-tip": `${t}::${d}: ${c(e.a)}|${n}::${s}: ${c(e.b)}|Δ ${c(e.b - e.a)}`, children: [
|
|
434
|
+
/* @__PURE__ */ a("rect", { x: i.l, y: f - 40 / 2, width: 640 - i.l - i.r, height: 40, fill: "transparent" }),
|
|
435
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: i.l - 10, y: f + 4, textAnchor: "end", children: e.label }),
|
|
436
|
+
/* @__PURE__ */ a("line", { x1: h(e.a), x2: h(e.b), y1: f, y2: f, stroke: "rgb(var(--ink-rgb, 255 255 255) / 0.22)", strokeWidth: "4", strokeLinecap: "round" }),
|
|
437
|
+
/* @__PURE__ */ a("circle", { cx: h(e.a), cy: f, r: "7", fill: t, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2" }),
|
|
438
|
+
/* @__PURE__ */ a("circle", { cx: h(e.b), cy: f, r: "7", fill: n, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2" })
|
|
439
|
+
] }, u);
|
|
440
|
+
})
|
|
441
|
+
] }) }) });
|
|
442
|
+
}
|
|
443
|
+
function Ra({
|
|
444
|
+
title: $ = "Q4 bookings goal",
|
|
445
|
+
subtitle: y = "Cumulative vs. linear pace",
|
|
446
|
+
periods: r = ["W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "W10", "W11", "W12", "W13"],
|
|
447
|
+
values: d = [22, 31, 28, 40, 36, 44, 51, 39],
|
|
448
|
+
goal: s = 520,
|
|
449
|
+
prefix: g = "$",
|
|
450
|
+
suffix: M = "k",
|
|
451
|
+
height: _ = 270,
|
|
452
|
+
color: w = "var(--chart-1, #3987e5)",
|
|
453
|
+
variant: C = "glass",
|
|
454
|
+
size: S = "md",
|
|
455
|
+
className: x = ""
|
|
456
|
+
}) {
|
|
457
|
+
const i = _, l = { t: 14, r: 16, b: 28, l: 48 }, o = r.length, h = [];
|
|
458
|
+
d.forEach((m, k) => h.push((h[k - 1] ?? 0) + m));
|
|
459
|
+
const t = h[h.length - 1] ?? 0, n = s / o * d.length, c = t >= n, e = q(0, Math.max(s, t), 4), u = T(0, e[e.length - 1], i - l.b, l.t), f = (m) => l.l + (m + 1) / o * (640 - l.l - l.r), A = l.l, N = [[A, u(0)], ...h.map((m, k) => [f(k), u(m)])], W = (m) => E(m, g, M), b = t / s * 100;
|
|
460
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, value: `${W(t)} / ${W(s)}`, delta: `${c ? "Ahead of" : "Behind"} pace by ${W(Math.abs(t - n))}`, deltaPositive: c, variant: C, size: S, className: x, legend: [{ label: "Achieved", color: w }, { label: "Linear pace", color: "var(--c-text-3, #8a8a8a)" }], table: { headers: ["Period", "Amount", "Cumulative", "Pace"], rows: r.map((m, k) => [m, d[k] !== void 0 ? W(d[k]) : "—", h[k] !== void 0 ? W(h[k]) : "—", W(s / o * (k + 1))]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${i}`, role: "img", "aria-label": `${$}: ${W(t)} of ${W(s)} (${b.toFixed(0)}%), ${c ? "ahead of" : "behind"} pace`, children: [
|
|
461
|
+
e.map((m, k) => /* @__PURE__ */ v("g", { children: [
|
|
462
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: l.l, x2: 640 - l.r, y1: u(m), y2: u(m) }),
|
|
463
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l.l - 8, y: u(m) + 4, textAnchor: "end", children: W(m) })
|
|
464
|
+
] }, k)),
|
|
465
|
+
r.map((m, k) => k % 2 === 0 && /* @__PURE__ */ a("text", { className: "cf-label", x: f(k), y: i - 8, textAnchor: "middle", children: m })),
|
|
466
|
+
/* @__PURE__ */ a("line", { x1: l.l, x2: 640 - l.r, y1: u(s), y2: u(s), stroke: "var(--chart-4, #c98500)", strokeWidth: "1.5", "aria-hidden": "true" }),
|
|
467
|
+
/* @__PURE__ */ v("text", { className: "cf-label cf-label--strong", x: 640 - l.r, y: u(s) - 6, textAnchor: "end", children: [
|
|
468
|
+
"Goal ",
|
|
469
|
+
W(s)
|
|
470
|
+
] }),
|
|
471
|
+
/* @__PURE__ */ a("line", { x1: A, y1: u(0), x2: f(o - 1), y2: u(s), stroke: "var(--c-text-3, #8a8a8a)", strokeWidth: "1.5", strokeDasharray: "5 5", "aria-hidden": "true" }),
|
|
472
|
+
/* @__PURE__ */ a("path", { d: oa(N, u(0), "linear"), fill: w, fillOpacity: "0.15", "aria-hidden": "true" }),
|
|
473
|
+
/* @__PURE__ */ a("path", { d: la(N), fill: "none", stroke: w, strokeWidth: "2.5", strokeLinejoin: "round", "aria-hidden": "true" }),
|
|
474
|
+
h.map((m, k) => /* @__PURE__ */ a("circle", { className: "cf-mark", cx: f(k), cy: u(m), r: k === h.length - 1 ? 6 : 3.5, fill: w, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2", tabIndex: 0, role: "img", "aria-label": `${r[k]}: cumulative ${W(m)}`, "data-tip-title": r[k], "data-tip": `${w}::Cumulative: ${W(m)}|This period: ${W(d[k])}|Pace: ${W(s / o * (k + 1))}` }, k))
|
|
475
|
+
] }) }) });
|
|
476
|
+
}
|
|
477
|
+
const fa = Array.from({ length: 240 }, ($, y) => {
|
|
478
|
+
const r = Math.sin(y * 12.9898) * 43758.5453, d = Math.sin(y * 78.233) * 12345.678, s = r - Math.floor(r), g = d - Math.floor(d);
|
|
479
|
+
return Math.round((0.6 + Math.abs(Math.sqrt(-2 * Math.log(s + 1e-9)) * Math.cos(2 * Math.PI * g)) * 0.9) * 100) / 100;
|
|
480
|
+
});
|
|
481
|
+
function Oa({
|
|
482
|
+
title: $ = "Page load time",
|
|
483
|
+
subtitle: y = "240 sessions, seconds",
|
|
484
|
+
values: r = fa,
|
|
485
|
+
bins: d = 14,
|
|
486
|
+
showStats: s = !0,
|
|
487
|
+
unit: g = "s",
|
|
488
|
+
height: M = 260,
|
|
489
|
+
color: _ = "var(--chart-1, #3987e5)",
|
|
490
|
+
variant: w = "glass",
|
|
491
|
+
size: C = "md",
|
|
492
|
+
className: S = ""
|
|
493
|
+
}) {
|
|
494
|
+
const p = M, i = { t: 22, r: 12, b: 30, l: 40 }, l = [...r].sort((W, b) => W - b), o = l[0], h = l[l.length - 1], t = (h - o) / d || 1, n = Array.from({ length: d }, () => 0);
|
|
495
|
+
r.forEach((W) => {
|
|
496
|
+
n[Math.min(d - 1, Math.floor((W - o) / t))] += 1;
|
|
497
|
+
});
|
|
498
|
+
const c = q(0, Math.max(...n), 4), e = T(0, c[c.length - 1], p - i.b, i.t), u = T(o, h, i.l, 640 - i.r), f = G(r) / r.length, A = Y(l, 0.5), N = (W) => (o + W * t).toFixed(1);
|
|
499
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, value: `${A.toFixed(2)}${g}`, delta: "median", variant: w, size: C, className: S, table: { headers: ["Bucket", "Count"], rows: n.map((W, b) => [`${N(b)}–${N(b + 1)}${g}`, W]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${p}`, role: "img", "aria-label": `${$}: histogram of ${r.length} values, median ${A.toFixed(2)}${g}`, children: [
|
|
500
|
+
c.map((W, b) => /* @__PURE__ */ v("g", { children: [
|
|
501
|
+
/* @__PURE__ */ a("line", { className: W === 0 ? "cf-axis" : "cf-grid", x1: i.l, x2: 640 - i.r, y1: e(W), y2: e(W) }),
|
|
502
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: i.l - 8, y: e(W) + 4, textAnchor: "end", children: W })
|
|
503
|
+
] }, b)),
|
|
504
|
+
n.map((W, b) => {
|
|
505
|
+
const m = u(o + b * t) + 1, k = u(o + (b + 1) * t) - u(o + b * t) - 2;
|
|
506
|
+
return /* @__PURE__ */ a("rect", { className: "cf-mark cf-dim", x: m, y: e(W), width: Math.max(1, k), height: Math.max(0, e(0) - e(W)), rx: "2", fill: _, tabIndex: 0, role: "img", "aria-label": `${N(b)} to ${N(b + 1)}${g}: ${W} values`, "data-tip-title": `${N(b)}–${N(b + 1)}${g}`, "data-tip": `${_}::${W} values · ${(W / r.length * 100).toFixed(1)}%` }, b);
|
|
507
|
+
}),
|
|
508
|
+
Array.from({ length: d + 1 }, (W, b) => b).filter((W) => W % 2 === 0).map((W, b) => /* @__PURE__ */ a("text", { className: "cf-label", x: u(o + W * t), y: p - 10, textAnchor: "middle", children: N(W) }, b)),
|
|
509
|
+
s && /* @__PURE__ */ v("g", { "aria-hidden": "true", children: [
|
|
510
|
+
/* @__PURE__ */ a("line", { x1: u(A), x2: u(A), y1: i.t - 6, y2: p - i.b, stroke: "var(--c-text-1, #fff)", strokeWidth: "1.5" }),
|
|
511
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: u(A) + 5, y: i.t, children: "Median" }),
|
|
512
|
+
/* @__PURE__ */ a("line", { x1: u(f), x2: u(f), y1: i.t + 10, y2: p - i.b, stroke: "var(--chart-2, #d95926)", strokeWidth: "1.5" }),
|
|
513
|
+
/* @__PURE__ */ v("text", { className: "cf-label", x: u(f) + 5, y: i.t + 16, children: [
|
|
514
|
+
"Mean ",
|
|
515
|
+
f.toFixed(2),
|
|
516
|
+
g
|
|
517
|
+
] })
|
|
518
|
+
] })
|
|
519
|
+
] }) }) });
|
|
520
|
+
}
|
|
521
|
+
function Fa({
|
|
522
|
+
title: $ = "Overview",
|
|
523
|
+
metrics: y = [
|
|
524
|
+
{ label: "Revenue", value: "$128.4k", change: 9.2, trend: [80, 84, 90, 88, 96, 102, 110, 118, 128] },
|
|
525
|
+
{ label: "Active users", value: "24,812", change: 4.1, trend: [20, 21, 21.5, 22, 22.8, 23.1, 23.9, 24.2, 24.8] },
|
|
526
|
+
{ label: "Churn", value: "2.3%", change: -0.6, invert: !0, trend: [3.1, 3, 2.9, 2.8, 2.7, 2.6, 2.5, 2.4, 2.3] },
|
|
527
|
+
{ label: "Avg. response", value: "182ms", change: 7.8, invert: !0, trend: [150, 160, 158, 170, 165, 175, 172, 180, 182] }
|
|
528
|
+
],
|
|
529
|
+
period: r = "vs previous 30 days",
|
|
530
|
+
variant: d = "glass",
|
|
531
|
+
size: s = "md",
|
|
532
|
+
className: g = ""
|
|
533
|
+
}) {
|
|
534
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ v("section", { className: `kg ${g}`, "aria-label": $, "data-rk-1cf6fc": "", children: [
|
|
535
|
+
$ && /* @__PURE__ */ a("h2", { className: "kg__title", "data-rk-1cf6fc": "", children: $ }),
|
|
536
|
+
/* @__PURE__ */ a("div", { className: "kg__grid", "data-rk-1cf6fc": "", children: y.map((M, _) => /* @__PURE__ */ a(da, { label: M.label, value: M.value, change: M.change, trend: M.trend, invert: M.invert, period: r, variant: d, size: s }, _)) })
|
|
537
|
+
] }) });
|
|
538
|
+
}
|
|
539
|
+
function Ha({
|
|
540
|
+
title: $ = "Lighthouse performance",
|
|
541
|
+
subtitle: y = "Score per page template",
|
|
542
|
+
items: r = [
|
|
543
|
+
{ label: "Home", value: 98 },
|
|
544
|
+
{ label: "Docs", value: 96 },
|
|
545
|
+
{ label: "Blog", value: 91 },
|
|
546
|
+
{ label: "Pricing", value: 88 },
|
|
547
|
+
{ label: "Dashboard", value: 74 },
|
|
548
|
+
{ label: "Checkout", value: 81 },
|
|
549
|
+
{ label: "Search", value: 69 }
|
|
550
|
+
],
|
|
551
|
+
target: d = 90,
|
|
552
|
+
targetLabel: s = "Goal",
|
|
553
|
+
prefix: g = "",
|
|
554
|
+
suffix: M = "",
|
|
555
|
+
height: _ = 270,
|
|
556
|
+
color: w = "var(--chart-1, #3987e5)",
|
|
557
|
+
variant: C = "glass",
|
|
558
|
+
size: S = "md",
|
|
559
|
+
className: x = ""
|
|
560
|
+
}) {
|
|
561
|
+
const i = _, l = { t: 16, r: 12, b: 30, l: 40 }, o = q(0, Math.max(...r.map((c) => c.value), d ?? 0), 4), h = T(0, o[o.length - 1], i - l.b, l.t), t = (640 - l.l - l.r) / r.length, n = (c) => E(c, g, M);
|
|
562
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: C, size: S, className: x, table: { headers: ["Item", "Value", s], rows: r.map((c) => [c.label, n(c.value), d !== void 0 ? c.value >= d ? "Met" : "Below" : "—"]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${i}`, role: "img", "aria-label": `${$}: lollipop chart`, children: [
|
|
563
|
+
o.map((c, e) => /* @__PURE__ */ v("g", { children: [
|
|
564
|
+
/* @__PURE__ */ a("line", { className: c === 0 ? "cf-axis" : "cf-grid", x1: l.l, x2: 640 - l.r, y1: h(c), y2: h(c) }),
|
|
565
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l.l - 8, y: h(c) + 4, textAnchor: "end", children: n(c) })
|
|
566
|
+
] }, e)),
|
|
567
|
+
d !== void 0 && /* @__PURE__ */ v("g", { "aria-hidden": "true", children: [
|
|
568
|
+
/* @__PURE__ */ a("line", { x1: l.l, x2: 640 - l.r, y1: h(d), y2: h(d), stroke: "var(--c-text-1, #fff)", strokeOpacity: "0.55", strokeWidth: "1", strokeDasharray: "4 4" }),
|
|
569
|
+
/* @__PURE__ */ v("text", { className: "cf-label", x: 640 - l.r, y: h(d) - 6, textAnchor: "end", children: [
|
|
570
|
+
s,
|
|
571
|
+
" ",
|
|
572
|
+
n(d)
|
|
573
|
+
] })
|
|
574
|
+
] }),
|
|
575
|
+
r.map((c, e) => {
|
|
576
|
+
const u = l.l + e * t + t / 2, f = d !== void 0 && d > c.value;
|
|
577
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${c.label}: ${n(c.value)}${f ? ", below goal" : ""}`, "data-tip-title": c.label, "data-tip": `${w}::${n(c.value)}${d !== void 0 ? `|${f ? "Below" : "Meets"} ${s.toLowerCase()}` : ""}`, children: [
|
|
578
|
+
/* @__PURE__ */ a("line", { x1: u, x2: u, y1: h(0), y2: h(c.value), stroke: w, strokeWidth: "2", strokeOpacity: f ? 0.5 : 1 }),
|
|
579
|
+
/* @__PURE__ */ a("circle", { cx: u, cy: h(c.value), r: "7", fill: f ? "var(--chart-surface, #0d0d0f)" : w, stroke: w, strokeWidth: "2.5" }),
|
|
580
|
+
/* @__PURE__ */ a("rect", { x: u - t / 2, y: l.t, width: t, height: i - l.t - l.b, fill: "transparent" }),
|
|
581
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: u, y: i - 10, textAnchor: "middle", children: c.label })
|
|
582
|
+
] }, e);
|
|
583
|
+
})
|
|
584
|
+
] }) }) });
|
|
585
|
+
}
|
|
586
|
+
function pa($) {
|
|
587
|
+
const y = {};
|
|
588
|
+
for (const r of String($ ?? "").split(";")) {
|
|
589
|
+
const d = r.indexOf(":");
|
|
590
|
+
if (d < 0) continue;
|
|
591
|
+
const s = r.slice(0, d).trim();
|
|
592
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
593
|
+
}
|
|
594
|
+
return y;
|
|
595
|
+
}
|
|
596
|
+
function Ta({
|
|
597
|
+
title: $ = "CPU load",
|
|
598
|
+
subtitle: y = "Cluster average, live",
|
|
599
|
+
value: r = 68,
|
|
600
|
+
min: d = 0,
|
|
601
|
+
max: s = 100,
|
|
602
|
+
zones: g = [
|
|
603
|
+
{ to: 60, label: "Healthy", tone: "good" },
|
|
604
|
+
{ to: 85, label: "Elevated", tone: "warn" },
|
|
605
|
+
{ to: 100, label: "Critical", tone: "bad" }
|
|
606
|
+
],
|
|
607
|
+
unit: M = "%",
|
|
608
|
+
variant: _ = "glass",
|
|
609
|
+
size: w = "md",
|
|
610
|
+
className: C = ""
|
|
611
|
+
}) {
|
|
612
|
+
const S = { good: "var(--chart-pos, #34c38f)", warn: "var(--chart-4, #c98500)", bad: "var(--chart-neg, #f06a6a)" }, x = 280, p = 170, i = x / 2, l = 150, o = 112, h = Math.PI * 4 / 3, t = -h / 2, n = (W) => t + (Math.min(s, Math.max(d, W)) - d) / (s - d || 1) * h;
|
|
613
|
+
let c = d;
|
|
614
|
+
const e = g.map((W) => {
|
|
615
|
+
const b = J(i, l - 20, o, n(c) + 0.015, n(W.to) - 0.015);
|
|
616
|
+
return c = W.to, { ...W, d: b };
|
|
617
|
+
}), u = g.find((W) => r <= W.to) ?? g[g.length - 1], [f, A] = j(i, l - 20, o - 24, n(r)), N = [d, d + (s - d) / 2, s];
|
|
618
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: _, size: w, className: C, table: { headers: ["Zone", "Up to"], rows: g.map((W) => [W.label, `${W.to}${M}`]) }, children: /* @__PURE__ */ v("div", { className: "mg", role: "meter", "aria-valuemin": d, "aria-valuemax": s, "aria-valuenow": r, "aria-valuetext": `${r}${M}, ${u.label}`, "aria-label": $, "data-rk-fff4b2": "", children: [
|
|
619
|
+
/* @__PURE__ */ v("svg", { viewBox: `0 0 ${x} ${p}`, "aria-hidden": "true", "data-rk-fff4b2": "", children: [
|
|
620
|
+
e.map((W, b) => /* @__PURE__ */ a("path", { d: W.d, fill: "none", stroke: S[W.tone], strokeWidth: "14", strokeLinecap: "butt", opacity: W.label === u.label ? 1 : 0.3, "data-rk-fff4b2": "" }, b)),
|
|
621
|
+
N.map((W, b) => {
|
|
622
|
+
const [m, k] = j(i, l - 20, o + 18, n(W));
|
|
623
|
+
return /* @__PURE__ */ a("text", { className: "cf-label", x: m, y: k + 4, textAnchor: "middle", "data-rk-fff4b2": "", children: W }, b);
|
|
624
|
+
}),
|
|
625
|
+
/* @__PURE__ */ a("line", { className: "mg__needle", x1: i, y1: l - 20, x2: f, y2: A, stroke: "var(--c-text-1, #fff)", strokeWidth: "3", strokeLinecap: "round", "data-rk-fff4b2": "" }),
|
|
626
|
+
/* @__PURE__ */ a("circle", { cx: i, cy: l - 20, r: "7", fill: "var(--c-text-1, #fff)", "data-rk-fff4b2": "" }),
|
|
627
|
+
/* @__PURE__ */ a("circle", { cx: i, cy: l - 20, r: "3", fill: "var(--chart-surface, #0d0d0f)", "data-rk-fff4b2": "" })
|
|
628
|
+
] }),
|
|
629
|
+
/* @__PURE__ */ v("div", { className: "mg__readout", "data-rk-fff4b2": "", children: [
|
|
630
|
+
/* @__PURE__ */ v("span", { className: "mg__value", "data-rk-fff4b2": "", children: [
|
|
631
|
+
r,
|
|
632
|
+
/* @__PURE__ */ a("small", { "data-rk-fff4b2": "", children: M })
|
|
633
|
+
] }),
|
|
634
|
+
/* @__PURE__ */ v("span", { className: "mg__zone", style: pa(`--mg-c:${S[u.tone]}`), "data-rk-fff4b2": "", children: [
|
|
635
|
+
/* @__PURE__ */ a("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", "aria-hidden": "true", "data-rk-fff4b2": "", children: u.tone === "good" ? /* @__PURE__ */ a("path", { d: "M20 6 9 17l-5-5", "data-rk-fff4b2": "" }) : /* @__PURE__ */ v(I, { children: [
|
|
636
|
+
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "9", "data-rk-fff4b2": "" }),
|
|
637
|
+
/* @__PURE__ */ a("path", { d: "M12 8v4M12 16h.01", "data-rk-fff4b2": "" })
|
|
638
|
+
] }) }),
|
|
639
|
+
u.label
|
|
640
|
+
] })
|
|
641
|
+
] })
|
|
642
|
+
] }) }) });
|
|
643
|
+
}
|
|
644
|
+
function Da({
|
|
645
|
+
title: $ = "Orders by month",
|
|
646
|
+
subtitle: y = "Seasonality at a glance",
|
|
647
|
+
items: r = [
|
|
648
|
+
{ label: "Jan", value: 320 },
|
|
649
|
+
{ label: "Feb", value: 280 },
|
|
650
|
+
{ label: "Mar", value: 360 },
|
|
651
|
+
{ label: "Apr", value: 410 },
|
|
652
|
+
{ label: "May", value: 470 },
|
|
653
|
+
{ label: "Jun", value: 520 },
|
|
654
|
+
{ label: "Jul", value: 490 },
|
|
655
|
+
{ label: "Aug", value: 450 },
|
|
656
|
+
{ label: "Sep", value: 430 },
|
|
657
|
+
{ label: "Oct", value: 510 },
|
|
658
|
+
{ label: "Nov", value: 690 },
|
|
659
|
+
{ label: "Dec", value: 820 }
|
|
660
|
+
],
|
|
661
|
+
color: d = "var(--chart-7, #9085e9)",
|
|
662
|
+
prefix: s = "",
|
|
663
|
+
suffix: g = "",
|
|
664
|
+
variant: M = "glass",
|
|
665
|
+
size: _ = "md",
|
|
666
|
+
className: w = ""
|
|
667
|
+
}) {
|
|
668
|
+
const p = Math.max(...r.map((t) => t.value)) || 1, i = Math.min(r.length, 12), l = Math.PI * 2 / i, o = [0.25, 0.5, 0.75, 1], h = (t) => E(t, s, g);
|
|
669
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: M, size: _, className: w, table: { headers: ["Item", "Value"], rows: r.map((t) => [t.label, h(t.value)]) }, children: /* @__PURE__ */ a("div", { className: "pa", "data-rk-5b5eb9": "", children: /* @__PURE__ */ v("svg", { viewBox: "0 0 320 320", role: "img", "aria-label": `${$}: polar area chart of ${i} categories`, "data-rk-5b5eb9": "", children: [
|
|
670
|
+
o.map((t, n) => /* @__PURE__ */ a("circle", { className: "cf-grid", cx: 160, cy: 160, r: 134 * Math.sqrt(t), fill: "none", "data-rk-5b5eb9": "" }, n)),
|
|
671
|
+
r.slice(0, i).map((t, n) => {
|
|
672
|
+
const c = 134 * Math.sqrt(t.value / p), e = n * l + 0.012, u = (n + 1) * l - 0.012, [f, A] = j(160, 160, 148, n * l + l / 2), N = t.value === p;
|
|
673
|
+
return /* @__PURE__ */ v("g", { "data-rk-5b5eb9": "", children: [
|
|
674
|
+
/* @__PURE__ */ a("path", { className: "cf-mark cf-dim", d: ra(160, 160, c, 0, e, u), fill: d, fillOpacity: 0.35 + 0.6 * (t.value / p), tabIndex: 0, role: "img", "aria-label": `${t.label}: ${h(t.value)}`, "data-tip-title": t.label, "data-tip": `${d}::${h(t.value)}`, "data-rk-5b5eb9": "" }),
|
|
675
|
+
/* @__PURE__ */ a("text", { className: N ? "cf-label cf-label--strong" : "cf-label", x: f, y: A + 4, textAnchor: "middle", "data-rk-5b5eb9": "", children: t.label })
|
|
676
|
+
] }, n);
|
|
677
|
+
})
|
|
678
|
+
] }) }) }) });
|
|
679
|
+
}
|
|
680
|
+
function na($) {
|
|
681
|
+
const y = {};
|
|
682
|
+
for (const r of String($ ?? "").split(";")) {
|
|
683
|
+
const d = r.indexOf(":");
|
|
684
|
+
if (d < 0) continue;
|
|
685
|
+
const s = r.slice(0, d).trim();
|
|
686
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
687
|
+
}
|
|
688
|
+
return y;
|
|
689
|
+
}
|
|
690
|
+
function qa({
|
|
691
|
+
title: $ = "Audience by age",
|
|
692
|
+
subtitle: y = "Share of users per age band",
|
|
693
|
+
bands: r = ["65+", "55–64", "45–54", "35–44", "25–34", "18–24"],
|
|
694
|
+
left: d = [2.1, 4.8, 8.2, 12.6, 15.4, 7.9],
|
|
695
|
+
right: s = [1.7, 4.1, 7.4, 11.8, 16.2, 8.8],
|
|
696
|
+
leftLabel: g = "Women",
|
|
697
|
+
rightLabel: M = "Men",
|
|
698
|
+
prefix: _ = "",
|
|
699
|
+
suffix: w = "%",
|
|
700
|
+
colors: C,
|
|
701
|
+
variant: S = "glass",
|
|
702
|
+
size: x = "md",
|
|
703
|
+
className: p = ""
|
|
704
|
+
}) {
|
|
705
|
+
const i = Math.max(...d, ...s) || 1, l = H(0, C), o = H(1, C), h = (t) => E(t, _, w);
|
|
706
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: S, size: x, className: p, legend: [{ label: g, color: l }, { label: M, color: o }], table: { headers: ["Band", g, M], rows: r.map((t, n) => [t, h(d[n]), h(s[n])]) }, children: /* @__PURE__ */ a("div", { className: "pp", role: "list", "data-rk-b22a54": "", children: r.map((t, n) => /* @__PURE__ */ v("div", { className: "pp__row", role: "listitem", "data-rk-b22a54": "", children: [
|
|
707
|
+
/* @__PURE__ */ v("div", { className: "pp__side pp__side--l", "data-rk-b22a54": "", children: [
|
|
708
|
+
/* @__PURE__ */ a("span", { className: "pp__val", "data-rk-b22a54": "", children: h(d[n]) }),
|
|
709
|
+
/* @__PURE__ */ a("span", { className: "pp__bar cf-mark", tabIndex: 0, style: na(`width:${d[n] / i * 100}%; background:${l}`), "aria-label": `${t}, ${g}: ${h(d[n])}`, "data-tip-title": `${t} · ${g}`, "data-tip": `${l}::${h(d[n])}`, "data-rk-b22a54": "" })
|
|
710
|
+
] }),
|
|
711
|
+
/* @__PURE__ */ a("span", { className: "pp__band", "data-rk-b22a54": "", children: t }),
|
|
712
|
+
/* @__PURE__ */ v("div", { className: "pp__side pp__side--r", "data-rk-b22a54": "", children: [
|
|
713
|
+
/* @__PURE__ */ a("span", { className: "pp__bar cf-mark", tabIndex: 0, style: na(`width:${s[n] / i * 100}%; background:${o}`), "aria-label": `${t}, ${M}: ${h(s[n])}`, "data-tip-title": `${t} · ${M}`, "data-tip": `${o}::${h(s[n])}`, "data-rk-b22a54": "" }),
|
|
714
|
+
/* @__PURE__ */ a("span", { className: "pp__val", "data-rk-b22a54": "", children: h(s[n]) })
|
|
715
|
+
] })
|
|
716
|
+
] }, n)) }) }) });
|
|
717
|
+
}
|
|
718
|
+
const xa = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22], ga = [0.1, 0.05, 0.02, 0.1, 0.6, 0.95, 0.8, 1, 0.9, 0.55, 0.35, 0.2], $a = [0.9, 1, 1, 0.95, 0.75, 0.25, 0.2];
|
|
719
|
+
function Ea({
|
|
720
|
+
title: $ = "Deploy activity",
|
|
721
|
+
subtitle: y = "Deploys by weekday and hour (UTC)",
|
|
722
|
+
days: r = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
|
723
|
+
hours: d = xa,
|
|
724
|
+
values: s = $a.map((S, x) => ga.map((p, i) => Math.round(S * p * 42 + (x * 7 + i * 3) % 5))),
|
|
725
|
+
unit: g = "deploys",
|
|
726
|
+
color: M = "var(--chart-3, #199e70)",
|
|
727
|
+
variant: _ = "glass",
|
|
728
|
+
size: w = "md",
|
|
729
|
+
className: C = ""
|
|
730
|
+
}) {
|
|
731
|
+
const x = { t: 10, r: 10, b: 26, l: 46 }, p = d.length, i = (640 - x.l - x.r) / p, l = 34, o = x.t + r.length * l + x.b, h = Math.max(...s.flat()) || 1, t = Math.min(i, l) / 2 - 2, n = (e) => `${String(e).padStart(2, "0")}:00`, c = s.flat().reduce((e, u) => e + u, 0);
|
|
732
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, value: c.toLocaleString("en-US"), delta: `total ${g}`, variant: _, size: w, className: C, table: { headers: ["Day", ...d.map(n)], rows: r.map((e, u) => [e, ...s[u]]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${o}`, role: "img", "aria-label": `${$}: punch card of ${g} by day and hour`, children: [
|
|
733
|
+
r.map((e, u) => /* @__PURE__ */ v("g", { children: [
|
|
734
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: x.l, x2: 640 - x.r, y1: x.t + u * l + l / 2, y2: x.t + u * l + l / 2 }),
|
|
735
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: x.l - 10, y: x.t + u * l + l / 2 + 4, textAnchor: "end", children: e })
|
|
736
|
+
] }, u)),
|
|
737
|
+
d.map((e, u) => /* @__PURE__ */ a("text", { className: "cf-label", x: x.l + u * i + i / 2, y: o - 8, textAnchor: "middle", children: n(e) }, u)),
|
|
738
|
+
r.map((e, u) => d.map((f, A) => {
|
|
739
|
+
var k;
|
|
740
|
+
const N = ((k = s[u]) == null ? void 0 : k[A]) ?? 0, W = N ? 2 + Math.sqrt(N / h) * (t - 2) : 0, b = x.l + A * i + i / 2, m = x.t + u * l + l / 2;
|
|
741
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${e} ${n(f)}: ${N} ${g}`, "data-tip-title": `${e} · ${n(f)}`, "data-tip": `${M}::${N} ${g}`, children: [
|
|
742
|
+
/* @__PURE__ */ a("rect", { x: b - i / 2, y: m - l / 2, width: i, height: l, fill: "transparent" }),
|
|
743
|
+
W > 0 && /* @__PURE__ */ a("circle", { cx: b, cy: m, r: W, fill: M, fillOpacity: 0.35 + N / h * 0.65 })
|
|
744
|
+
] }, A);
|
|
745
|
+
}))
|
|
746
|
+
] }) }) });
|
|
747
|
+
}
|
|
748
|
+
function Ua({
|
|
749
|
+
title: $ = "Framework comparison",
|
|
750
|
+
subtitle: y = "Scored 0–10 by the team",
|
|
751
|
+
axes: r = ["Performance", "DX", "Ecosystem", "SEO", "Learning curve", "Flexibility"],
|
|
752
|
+
series: d = [
|
|
753
|
+
{ name: "React", data: [9.5, 8.5, 7, 9.5, 8.5, 8] },
|
|
754
|
+
{ name: "Next", data: [7.5, 8, 9.5, 8, 6.5, 8.5] }
|
|
755
|
+
],
|
|
756
|
+
max: s = 10,
|
|
757
|
+
colors: g,
|
|
758
|
+
variant: M = "glass",
|
|
759
|
+
size: _ = "md",
|
|
760
|
+
className: w = ""
|
|
761
|
+
}) {
|
|
762
|
+
const p = r.length, i = (h) => h / p * Math.PI * 2, l = [0.25, 0.5, 0.75, 1], o = d.slice(0, 3).map((h, t) => {
|
|
763
|
+
const n = h.data.map((c, e) => j(170, 170, 116 * Math.max(0, Math.min(1, c / s)), i(e)));
|
|
764
|
+
return { ...h, pts: n, d: `${la(n)} Z`, color: H(t, g) };
|
|
765
|
+
});
|
|
766
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: M, size: _, className: w, legend: o.map((h) => ({ label: h.name, color: h.color })), table: { headers: ["Axis", ...d.map((h) => h.name)], rows: r.map((h, t) => [h, ...d.map((n) => n.data[t])]) }, children: /* @__PURE__ */ a("div", { className: "rd", "data-rk-b100db": "", children: /* @__PURE__ */ v("svg", { viewBox: "0 0 340 340", role: "img", "aria-label": `${$}: radar chart across ${p} axes`, "data-rk-b100db": "", children: [
|
|
767
|
+
l.map((h, t) => /* @__PURE__ */ a("path", { className: "cf-grid", fill: "none", d: `${la(r.map((n, c) => j(170, 170, 116 * h, i(c))))} Z`, "data-rk-b100db": "" }, t)),
|
|
768
|
+
r.map((h, t) => {
|
|
769
|
+
const [n, c] = j(170, 170, 116, i(t)), [e, u] = j(170, 170, 134, i(t)), f = 4 > Math.abs(e - 170) ? "middle" : e > 170 ? "start" : "end";
|
|
770
|
+
return /* @__PURE__ */ v("g", { "data-rk-b100db": "", children: [
|
|
771
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: 170, y1: 170, x2: n, y2: c, "data-rk-b100db": "" }),
|
|
772
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: e, y: u + 4, textAnchor: f, "data-rk-b100db": "", children: h })
|
|
773
|
+
] }, t);
|
|
774
|
+
}),
|
|
775
|
+
o.map((h, t) => /* @__PURE__ */ a("path", { d: h.d, fill: h.color, fillOpacity: "0.18", stroke: h.color, strokeWidth: "2", strokeLinejoin: "round", "aria-hidden": "true", "data-rk-b100db": "" }, t)),
|
|
776
|
+
o.map((h) => h.pts.map(([t, n], c) => /* @__PURE__ */ a("circle", { className: "cf-mark", cx: t, cy: n, r: "4.5", fill: h.color, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2", tabIndex: 0, role: "img", "aria-label": `${h.name}, ${r[c]}: ${h.data[c]} of ${s}`, "data-tip-title": r[c], "data-tip": o.map((e) => `${e.color}::${e.name}: ${e.data[c]}`).join("|"), "data-rk-b100db": "" }, c)))
|
|
777
|
+
] }) }) }) });
|
|
778
|
+
}
|
|
779
|
+
function va($) {
|
|
780
|
+
const y = {};
|
|
781
|
+
for (const r of String($ ?? "").split(";")) {
|
|
782
|
+
const d = r.indexOf(":");
|
|
783
|
+
if (d < 0) continue;
|
|
784
|
+
const s = r.slice(0, d).trim();
|
|
785
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
786
|
+
}
|
|
787
|
+
return y;
|
|
788
|
+
}
|
|
789
|
+
function Ga({
|
|
790
|
+
title: $ = "Feature adoption",
|
|
791
|
+
subtitle: y = "Share of active workspaces",
|
|
792
|
+
items: r = [
|
|
793
|
+
{ label: "Dashboards", value: 86 },
|
|
794
|
+
{ label: "Alerts", value: 64 },
|
|
795
|
+
{ label: "API", value: 47 },
|
|
796
|
+
{ label: "SSO", value: 29 }
|
|
797
|
+
],
|
|
798
|
+
sweep: d = 270,
|
|
799
|
+
colors: s,
|
|
800
|
+
variant: g = "glass",
|
|
801
|
+
size: M = "md",
|
|
802
|
+
className: _ = ""
|
|
803
|
+
}) {
|
|
804
|
+
const l = Math.min(360, Math.max(180, d)) * Math.PI / 180, o = -l / 2 - 0, h = r.slice(0, 8).map((t, n) => {
|
|
805
|
+
const c = 136 - n * 24, e = Math.max(0, Math.min(1, t.value / (t.max ?? 100)));
|
|
806
|
+
return { ...t, r: c, pct: e, color: H(n, s) };
|
|
807
|
+
});
|
|
808
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: g, size: M, className: _, table: { headers: ["Item", "Value"], rows: r.map((t) => [t.label, `${t.value}${t.max ? ` / ${t.max}` : "%"}`]) }, children: /* @__PURE__ */ v("div", { className: "rb", "data-rk-fa001b": "", children: [
|
|
809
|
+
/* @__PURE__ */ a("svg", { viewBox: "0 0 300 300", role: "img", "aria-label": `${$}: radial bar chart`, "data-rk-fa001b": "", children: h.map((t, n) => /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${t.label}: ${Math.round(t.pct * 100)}%`, "data-tip-title": t.label, "data-tip": `${t.color}::${t.value}${t.max ? ` / ${t.max}` : "%"}`, "data-rk-fa001b": "", children: [
|
|
810
|
+
/* @__PURE__ */ a("path", { d: J(150, 150, t.r, o, o + l), fill: "none", stroke: "rgb(var(--ink-rgb, 255 255 255) / 0.06)", strokeWidth: 16, strokeLinecap: "round", "data-rk-fa001b": "" }),
|
|
811
|
+
t.pct > 0 && /* @__PURE__ */ a("path", { className: "rb__arc", d: J(150, 150, t.r, o, o + l * t.pct), fill: "none", stroke: t.color, strokeWidth: 16, strokeLinecap: "round", "data-rk-fa001b": "" })
|
|
812
|
+
] }, n)) }),
|
|
813
|
+
/* @__PURE__ */ a("ul", { className: "rb__labels", "aria-hidden": "true", "data-rk-fa001b": "", children: h.map((t, n) => /* @__PURE__ */ v("li", { "data-rk-fa001b": "", children: [
|
|
814
|
+
/* @__PURE__ */ a("span", { style: va(`background:${t.color}`), "data-rk-fa001b": "" }),
|
|
815
|
+
t.label,
|
|
816
|
+
/* @__PURE__ */ v("b", { "data-rk-fa001b": "", children: [
|
|
817
|
+
Math.round(t.pct * 100),
|
|
818
|
+
"%"
|
|
819
|
+
] })
|
|
820
|
+
] }, n)) })
|
|
821
|
+
] }) }) });
|
|
822
|
+
}
|
|
823
|
+
function ja({
|
|
824
|
+
title: $ = "API latency",
|
|
825
|
+
subtitle: y = "p10–p90 band with median, last 10 days",
|
|
826
|
+
categories: r = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"],
|
|
827
|
+
min: d = [42, 45, 40, 48, 52, 38, 36, 44, 47, 41],
|
|
828
|
+
max: s = [120, 135, 118, 160, 172, 98, 90, 126, 140, 115],
|
|
829
|
+
avg: g = [74, 80, 70, 92, 101, 62, 58, 78, 86, 72],
|
|
830
|
+
bandLabel: M = "p10–p90",
|
|
831
|
+
lineLabel: _ = "Median",
|
|
832
|
+
prefix: w = "",
|
|
833
|
+
suffix: C = "ms",
|
|
834
|
+
height: S = 260,
|
|
835
|
+
color: x = "var(--chart-1, #3987e5)",
|
|
836
|
+
variant: p = "glass",
|
|
837
|
+
size: i = "md",
|
|
838
|
+
className: l = ""
|
|
839
|
+
}) {
|
|
840
|
+
const h = S, t = { t: 12, r: 16, b: 28, l: 48 }, n = r.length, c = q(Math.min(...d), Math.max(...s), 4), e = T(c[0], c[c.length - 1], h - t.b, t.t), u = (m) => t.l + (n <= 1 ? 0 : m / (n - 1) * (640 - t.l - t.r)), f = n > 1 ? (640 - t.l - t.r) / (n - 1) : 640, A = s.map((m, k) => [u(k), e(m)]), N = d.map((m, k) => [u(k), e(m)]), W = g.map((m, k) => [u(k), e(m)]), b = (m) => E(m, w, C);
|
|
841
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: p, size: i, className: l, legend: [{ label: M, color: `color-mix(in srgb, ${x} 35%, transparent)` }, { label: _, color: x }], table: {
|
|
842
|
+
headers: ["Period", "Min", _, "Max"],
|
|
843
|
+
rows: r.map((m, k) => [m, b(d[k]), b(g[k]), b(s[k])])
|
|
844
|
+
}, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${h}`, role: "img", "aria-label": `${$}: range band chart`, children: [
|
|
845
|
+
c.map((m, k) => /* @__PURE__ */ v("g", { children: [
|
|
846
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: t.l, x2: 640 - t.r, y1: e(m), y2: e(m) }),
|
|
847
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: t.l - 8, y: e(m) + 4, textAnchor: "end", children: b(m) })
|
|
848
|
+
] }, k)),
|
|
849
|
+
r.map((m, k) => /* @__PURE__ */ a("text", { className: "cf-label", x: u(k), y: h - 8, textAnchor: "middle", children: m }, k)),
|
|
850
|
+
/* @__PURE__ */ a("path", { d: ia(A, N), fill: x, fillOpacity: "0.18", "aria-hidden": "true" }),
|
|
851
|
+
/* @__PURE__ */ a("path", { d: ta(W), fill: "none", stroke: x, strokeWidth: "2", "aria-hidden": "true" }),
|
|
852
|
+
r.map((m, k) => /* @__PURE__ */ v("g", { className: "cf-hit-group", children: [
|
|
853
|
+
/* @__PURE__ */ a("line", { className: "cf-cross", x1: u(k), x2: u(k), y1: e(s[k]), y2: e(d[k]) }),
|
|
854
|
+
/* @__PURE__ */ a("circle", { className: "cf-cross", cx: u(k), cy: e(g[k]), r: "4.5", fill: x, stroke: "#fff", strokeWidth: "1.5" }),
|
|
855
|
+
/* @__PURE__ */ a("rect", { className: "cf-hit", x: u(k) - f / 2, y: t.t, width: f, height: h - t.t - t.b, tabIndex: 0, role: "img", "aria-label": `${m}: min ${b(d[k])}, ${_} ${b(g[k])}, max ${b(s[k])}`, "data-tip-title": m, "data-tip": `Max: ${b(s[k])}|${x}::${_}: ${b(g[k])}|Min: ${b(d[k])}` })
|
|
856
|
+
] }, k))
|
|
857
|
+
] }) }) });
|
|
858
|
+
}
|
|
859
|
+
function ka($) {
|
|
860
|
+
const y = {};
|
|
861
|
+
for (const r of String($ ?? "").split(";")) {
|
|
862
|
+
const d = r.indexOf(":");
|
|
863
|
+
if (d < 0) continue;
|
|
864
|
+
const s = r.slice(0, d).trim();
|
|
865
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
866
|
+
}
|
|
867
|
+
return y;
|
|
868
|
+
}
|
|
869
|
+
function za({
|
|
870
|
+
title: $ = "User retention",
|
|
871
|
+
subtitle: y = "Monthly cohorts, % still active",
|
|
872
|
+
cohorts: r = [
|
|
873
|
+
{ cohort: "May", size: 1240, retention: [100, 62, 48, 41, 37, 35] },
|
|
874
|
+
{ cohort: "Jun", size: 1410, retention: [100, 65, 51, 44, 40] },
|
|
875
|
+
{ cohort: "Jul", size: 1580, retention: [100, 68, 55, 47] },
|
|
876
|
+
{ cohort: "Aug", size: 1720, retention: [100, 71, 57] },
|
|
877
|
+
{ cohort: "Sep", size: 1890, retention: [100, 73] },
|
|
878
|
+
{ cohort: "Oct", size: 2050, retention: [100] }
|
|
879
|
+
],
|
|
880
|
+
periodLabel: d = "M",
|
|
881
|
+
color: s = "var(--chart-3, #199e70)",
|
|
882
|
+
variant: g = "glass",
|
|
883
|
+
size: M = "md",
|
|
884
|
+
className: _ = ""
|
|
885
|
+
}) {
|
|
886
|
+
const w = Math.max(...r.map((p) => p.retention.length)), C = Array.from({ length: w }, (p, i) => `${d}${i}`), S = (p) => `color-mix(in srgb, ${s} ${Math.round(10 + p / 100 * 85)}%, #141416)`, x = C.map((p, i) => {
|
|
887
|
+
const l = r.map((o) => o.retention[i]).filter((o) => o !== void 0);
|
|
888
|
+
return l.length ? l.reduce((o, h) => o + h, 0) / l.length : 0;
|
|
889
|
+
});
|
|
890
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: g, size: M, className: _, children: /* @__PURE__ */ a("div", { className: "rc", "data-rk-14b914": "", children: /* @__PURE__ */ v("table", { className: "rc__table", "data-rk-14b914": "", children: [
|
|
891
|
+
/* @__PURE__ */ v("caption", { className: "sr-only", "data-rk-14b914": "", children: [
|
|
892
|
+
$,
|
|
893
|
+
": retention percentage by cohort and period"
|
|
894
|
+
] }),
|
|
895
|
+
/* @__PURE__ */ a("thead", { "data-rk-14b914": "", children: /* @__PURE__ */ v("tr", { "data-rk-14b914": "", children: [
|
|
896
|
+
/* @__PURE__ */ a("th", { scope: "col", "data-rk-14b914": "", children: "Cohort" }),
|
|
897
|
+
/* @__PURE__ */ a("th", { scope: "col", "data-rk-14b914": "", children: "Users" }),
|
|
898
|
+
C.map((p, i) => /* @__PURE__ */ a("th", { scope: "col", "data-rk-14b914": "", children: p }, i))
|
|
899
|
+
] }) }),
|
|
900
|
+
/* @__PURE__ */ a("tbody", { "data-rk-14b914": "", children: r.map((p, i) => /* @__PURE__ */ v("tr", { "data-rk-14b914": "", children: [
|
|
901
|
+
/* @__PURE__ */ a("th", { scope: "row", "data-rk-14b914": "", children: p.cohort }),
|
|
902
|
+
/* @__PURE__ */ a("td", { className: "rc__size", "data-rk-14b914": "", children: p.size.toLocaleString("en-US") }),
|
|
903
|
+
C.map((l, o) => {
|
|
904
|
+
const h = p.retention[o];
|
|
905
|
+
return h === void 0 ? /* @__PURE__ */ a("td", { className: "rc__empty", "aria-label": "no data yet", "data-rk-14b914": "" }) : /* @__PURE__ */ v("td", { className: "rc__cell", style: ka(`background:${S(h)}`), "data-strong": h > 55 ? "" : void 0, "data-rk-14b914": "", children: [
|
|
906
|
+
h,
|
|
907
|
+
"%"
|
|
908
|
+
] });
|
|
909
|
+
})
|
|
910
|
+
] }, i)) }),
|
|
911
|
+
/* @__PURE__ */ a("tfoot", { "data-rk-14b914": "", children: /* @__PURE__ */ v("tr", { "data-rk-14b914": "", children: [
|
|
912
|
+
/* @__PURE__ */ a("th", { scope: "row", "data-rk-14b914": "", children: "Average" }),
|
|
913
|
+
/* @__PURE__ */ a("td", { "data-rk-14b914": "" }),
|
|
914
|
+
x.map((p, i) => /* @__PURE__ */ v("td", { className: "rc__avg", "data-rk-14b914": "", children: [
|
|
915
|
+
p.toFixed(0),
|
|
916
|
+
"%"
|
|
917
|
+
] }, i))
|
|
918
|
+
] }) })
|
|
919
|
+
] }) }) }) });
|
|
920
|
+
}
|
|
921
|
+
function Va({
|
|
922
|
+
title: $ = "Where signups come from",
|
|
923
|
+
subtitle: y = "Acquisition channel → plan chosen",
|
|
924
|
+
flows: r = [
|
|
925
|
+
{ source: "Organic", target: "Free", value: 820 },
|
|
926
|
+
{ source: "Organic", target: "Pro", value: 310 },
|
|
927
|
+
{ source: "Organic", target: "Team", value: 90 },
|
|
928
|
+
{ source: "Paid ads", target: "Free", value: 410 },
|
|
929
|
+
{ source: "Paid ads", target: "Pro", value: 160 },
|
|
930
|
+
{ source: "Referral", target: "Pro", value: 220 },
|
|
931
|
+
{ source: "Referral", target: "Team", value: 140 },
|
|
932
|
+
{ source: "Partners", target: "Team", value: 120 },
|
|
933
|
+
{ source: "Partners", target: "Enterprise", value: 60 }
|
|
934
|
+
],
|
|
935
|
+
prefix: d = "",
|
|
936
|
+
suffix: s = "",
|
|
937
|
+
height: g = 320,
|
|
938
|
+
colors: M,
|
|
939
|
+
variant: _ = "glass",
|
|
940
|
+
size: w = "md",
|
|
941
|
+
className: C = ""
|
|
942
|
+
}) {
|
|
943
|
+
const x = g, p = 12, i = 14, l = 110, o = 530 - p, h = [...new Set(r.map((m) => m.source))], t = [...new Set(r.map((m) => m.target))], n = G(r.map((m) => m.value)) || 1, c = (m) => (x - i * (m - 1)) / n, e = Math.min(c(h.length), c(t.length)), u = (m, k) => {
|
|
944
|
+
const P = m.reduce((R, F) => R + G(r.filter((D) => D[k] === F).map((D) => D.value)) * e, 0) + i * (m.length - 1);
|
|
945
|
+
let B = (x - P) / 2;
|
|
946
|
+
return Object.fromEntries(m.map((R) => {
|
|
947
|
+
const F = G(r.filter((U) => U[k] === R).map((U) => U.value)), D = { y: B, h: F * e, v: F, offset: 0 };
|
|
948
|
+
return B += F * e + i, [R, D];
|
|
949
|
+
}));
|
|
950
|
+
}, f = u(h, "source"), A = u(t, "target"), N = Object.fromEntries(h.map((m, k) => [m, H(k, M)])), W = r.map((m) => {
|
|
951
|
+
const k = f[m.source], P = A[m.target], B = m.value * e, R = k.y + k.offset + B / 2, F = P.y + P.offset + B / 2;
|
|
952
|
+
k.offset += B, P.offset += B;
|
|
953
|
+
const D = l + p, U = o, z = (D + U) / 2;
|
|
954
|
+
return { ...m, h: B, d: `M${D},${R} C${z},${R} ${z},${F} ${U},${F}`, color: N[m.source] };
|
|
955
|
+
}), b = (m) => E(m, d, s);
|
|
956
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: _, size: w, className: C, table: { headers: ["From", "To", "Value", "Share"], rows: r.map((m) => [m.source, m.target, b(m.value), `${(m.value / n * 100).toFixed(1)}%`]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${x}`, role: "img", "aria-label": `${$}: flow from ${h.length} sources to ${t.length} targets`, "data-rk-efc23b": "", children: [
|
|
957
|
+
W.map((m, k) => /* @__PURE__ */ a("path", { className: "cf-mark cf-dim sk__link", d: m.d, fill: "none", stroke: m.color, strokeOpacity: "0.38", strokeWidth: Math.max(1, m.h), tabIndex: 0, role: "img", "aria-label": `${m.source} to ${m.target}: ${b(m.value)}`, "data-tip-title": `${m.source} → ${m.target}`, "data-tip": `${m.color}::${b(m.value)} · ${(m.value / n * 100).toFixed(1)}%`, "data-rk-efc23b": "" }, k)),
|
|
958
|
+
h.map((m, k) => /* @__PURE__ */ v("g", { "data-rk-efc23b": "", children: [
|
|
959
|
+
/* @__PURE__ */ a("rect", { x: l, y: f[m].y, width: p, height: f[m].h, rx: "3", fill: N[m], "data-rk-efc23b": "" }),
|
|
960
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: l - 8, y: f[m].y + f[m].h / 2, textAnchor: "end", "data-rk-efc23b": "", children: m }),
|
|
961
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l - 8, y: f[m].y + f[m].h / 2 + 14, textAnchor: "end", "data-rk-efc23b": "", children: b(f[m].v) })
|
|
962
|
+
] }, k)),
|
|
963
|
+
t.map((m, k) => /* @__PURE__ */ v("g", { "data-rk-efc23b": "", children: [
|
|
964
|
+
/* @__PURE__ */ a("rect", { x: o, y: A[m].y, width: p, height: A[m].h, rx: "3", fill: "var(--c-text-2, #a3a3a3)", "data-rk-efc23b": "" }),
|
|
965
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: o + p + 8, y: A[m].y + A[m].h / 2, "data-rk-efc23b": "", children: m }),
|
|
966
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: o + p + 8, y: A[m].y + A[m].h / 2 + 14, "data-rk-efc23b": "", children: b(A[m].v) })
|
|
967
|
+
] }, k))
|
|
968
|
+
] }) }) });
|
|
969
|
+
}
|
|
970
|
+
const aa = ($, y, r, d, s) => Array.from({ length: y }, (g, M) => {
|
|
971
|
+
const _ = Math.sin((M + 1) * $) * 1e4, w = _ - Math.floor(_), C = 5 + M * 37 % 95;
|
|
972
|
+
return { x: C, y: Math.round(d + r * C + (w - 0.5) * s) };
|
|
973
|
+
});
|
|
974
|
+
function Qa({
|
|
975
|
+
title: $ = "Ad spend vs signups",
|
|
976
|
+
subtitle: y = "Per campaign",
|
|
977
|
+
groups: r = [
|
|
978
|
+
{ name: "Search", points: aa(3.1, 16, 2.1, 20, 60) },
|
|
979
|
+
{ name: "Social", points: aa(7.7, 14, 1.3, 10, 70) },
|
|
980
|
+
{ name: "Video", points: aa(5.3, 10, 0.8, 30, 50) }
|
|
981
|
+
],
|
|
982
|
+
xLabel: d = "Spend ($k)",
|
|
983
|
+
yLabel: s = "Signups",
|
|
984
|
+
trend: g = !0,
|
|
985
|
+
height: M = 300,
|
|
986
|
+
colors: _,
|
|
987
|
+
variant: w = "glass",
|
|
988
|
+
size: C = "md",
|
|
989
|
+
className: S = ""
|
|
990
|
+
}) {
|
|
991
|
+
const p = M, i = { t: 12, r: 16, b: 40, l: 52 }, l = r.flatMap((b) => b.points), o = q(Math.min(0, ...l.map((b) => b.x)), Math.max(...l.map((b) => b.x)), 5), h = q(Math.min(0, ...l.map((b) => b.y)), Math.max(...l.map((b) => b.y)), 4), t = T(o[0], o[o.length - 1], i.l, 640 - i.r), n = T(h[0], h[h.length - 1], p - i.b, i.t), c = l.length, e = l.reduce((b, m) => b + m.x, 0) / c, u = l.reduce((b, m) => b + m.y, 0) / c, f = l.reduce((b, m) => b + (m.x - e) * (m.y - u), 0) / (l.reduce((b, m) => b + (m.x - e) ** 2, 0) || 1), A = u - f * e, N = (() => {
|
|
992
|
+
const b = l.reduce((k, P) => k + (P.y - u) ** 2, 0) || 1;
|
|
993
|
+
return 1 - l.reduce((k, P) => k + (P.y - (A + f * P.x)) ** 2, 0) / b;
|
|
994
|
+
})(), W = ["circle", "square", "diamond"];
|
|
995
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: w, size: C, className: S, legend: r.slice(0, 3).map((b, m) => ({ label: b.name, color: H(m, _) })), table: { headers: ["Group", d, s], rows: r.flatMap((b) => b.points.map((m) => [m.label ? `${b.name} · ${m.label}` : b.name, m.x, m.y])) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${p}`, role: "img", "aria-label": `${$}: scatter plot of ${c} points${g ? `, trend R² ${N.toFixed(2)}` : ""}`, children: [
|
|
996
|
+
h.map((b, m) => /* @__PURE__ */ v("g", { children: [
|
|
997
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: i.l, x2: 640 - i.r, y1: n(b), y2: n(b) }),
|
|
998
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: i.l - 8, y: n(b) + 4, textAnchor: "end", children: X(b) })
|
|
999
|
+
] }, m)),
|
|
1000
|
+
o.map((b, m) => /* @__PURE__ */ v("g", { children: [
|
|
1001
|
+
/* @__PURE__ */ a("line", { className: "cf-grid", x1: t(b), x2: t(b), y1: i.t, y2: p - i.b }),
|
|
1002
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: t(b), y: p - i.b + 16, textAnchor: "middle", children: X(b) })
|
|
1003
|
+
] }, m)),
|
|
1004
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: (i.l + 640 - i.r) / 2, y: p - 4, textAnchor: "middle", children: d }),
|
|
1005
|
+
/* @__PURE__ */ a("text", { className: "cf-label", transform: `translate(12 ${(i.t + p - i.b) / 2}) rotate(-90)`, textAnchor: "middle", children: s }),
|
|
1006
|
+
g && /* @__PURE__ */ v("g", { "aria-hidden": "true", children: [
|
|
1007
|
+
/* @__PURE__ */ a("line", { x1: t(o[0]), y1: n(A + f * o[0]), x2: t(o[o.length - 1]), y2: n(A + f * o[o.length - 1]), stroke: "var(--c-text-1, #fff)", strokeOpacity: "0.45", strokeWidth: "1.5" }),
|
|
1008
|
+
/* @__PURE__ */ v("text", { className: "cf-label", x: 640 - i.r, y: n(A + f * o[o.length - 1]) - 8, textAnchor: "end", children: [
|
|
1009
|
+
"R² ",
|
|
1010
|
+
N.toFixed(2)
|
|
1011
|
+
] })
|
|
1012
|
+
] }),
|
|
1013
|
+
r.slice(0, 3).map((b, m) => {
|
|
1014
|
+
const k = H(m, _);
|
|
1015
|
+
return b.points.map((P) => {
|
|
1016
|
+
const B = t(P.x), R = n(P.y), F = {
|
|
1017
|
+
class: "cf-mark cf-dim",
|
|
1018
|
+
fill: k,
|
|
1019
|
+
"fill-opacity": 0.85,
|
|
1020
|
+
stroke: "var(--chart-surface, #0d0d0f)",
|
|
1021
|
+
"stroke-width": 1.5,
|
|
1022
|
+
tabindex: 0,
|
|
1023
|
+
role: "img",
|
|
1024
|
+
"aria-label": `${b.name}${P.label ? ` ${P.label}` : ""}: ${d} ${P.x}, ${s} ${P.y}`,
|
|
1025
|
+
"data-tip-title": P.label ?? b.name,
|
|
1026
|
+
"data-tip": `${k}::${b.name}|${d}: ${P.x}|${s}: ${P.y}`
|
|
1027
|
+
};
|
|
1028
|
+
return W[m] === "square" ? /* @__PURE__ */ a("rect", { ...F, x: B - 5, y: R - 5, width: "10", height: "10", rx: "2" }) : W[m] === "diamond" ? /* @__PURE__ */ a("path", { ...F, d: `M${B},${R - 6.5} L${B + 6.5},${R} L${B},${R + 6.5} L${B - 6.5},${R} Z` }) : /* @__PURE__ */ a("circle", { ...F, cx: B, cy: R, r: "5.5" });
|
|
1029
|
+
});
|
|
1030
|
+
})
|
|
1031
|
+
] }) }) });
|
|
1032
|
+
}
|
|
1033
|
+
function Ja({
|
|
1034
|
+
title: $ = "Conversion rate by plan",
|
|
1035
|
+
subtitle: y = "Q1 vs Q2",
|
|
1036
|
+
fromLabel: r = "Q1",
|
|
1037
|
+
toLabel: d = "Q2",
|
|
1038
|
+
items: s = [
|
|
1039
|
+
{ label: "Enterprise", from: 7.8, to: 9.6 },
|
|
1040
|
+
{ label: "Team", from: 6.1, to: 6.9 },
|
|
1041
|
+
{ label: "Pro", from: 5.4, to: 4.6 },
|
|
1042
|
+
{ label: "Starter", from: 3.2, to: 4.1 },
|
|
1043
|
+
{ label: "Free trial", from: 2.4, to: 1.9 }
|
|
1044
|
+
],
|
|
1045
|
+
highlight: g,
|
|
1046
|
+
prefix: M = "",
|
|
1047
|
+
suffix: _ = "%",
|
|
1048
|
+
height: w = 300,
|
|
1049
|
+
variant: C = "glass",
|
|
1050
|
+
size: S = "md",
|
|
1051
|
+
className: x = ""
|
|
1052
|
+
}) {
|
|
1053
|
+
const i = w, l = { t: 34, b: 20 }, o = 190, h = 450, t = s.flatMap((e) => [e.from, e.to]), n = T(Math.min(...t), Math.max(...t), i - l.b, l.t), c = (e) => E(e, M, _);
|
|
1054
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: C, size: S, className: x, table: {
|
|
1055
|
+
headers: ["Item", r, d, "Change"],
|
|
1056
|
+
rows: s.map((e) => [e.label, c(e.from), c(e.to), `${e.to >= e.from ? "+" : ""}${(e.to - e.from).toFixed(1)}`])
|
|
1057
|
+
}, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${i}`, role: "img", "aria-label": `${$}: slope chart from ${r} to ${d}`, children: [
|
|
1058
|
+
/* @__PURE__ */ a("line", { className: "cf-axis", x1: o, x2: o, y1: l.t - 8, y2: i - l.b + 8 }),
|
|
1059
|
+
/* @__PURE__ */ a("line", { className: "cf-axis", x1: h, x2: h, y1: l.t - 8, y2: i - l.b + 8 }),
|
|
1060
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: o, y: 14, textAnchor: "middle", children: r }),
|
|
1061
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: h, y: 14, textAnchor: "middle", children: d }),
|
|
1062
|
+
s.map((e, u) => {
|
|
1063
|
+
const f = e.to >= e.from, A = f ? K : Z, N = g && g !== e.label;
|
|
1064
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", opacity: N ? 0.35 : 1, "aria-label": `${e.label}: ${c(e.from)} to ${c(e.to)} (${f ? "up" : "down"})`, "data-tip-title": e.label, "data-tip": `${r}: ${c(e.from)}|${d}: ${c(e.to)}|${A}::${f ? "Up" : "Down"} ${Math.abs(e.to - e.from).toFixed(1)}`, children: [
|
|
1065
|
+
/* @__PURE__ */ a("line", { x1: o, y1: n(e.from), x2: h, y2: n(e.to), stroke: A, strokeWidth: "2" }),
|
|
1066
|
+
/* @__PURE__ */ a("line", { x1: o, y1: n(e.from), x2: h, y2: n(e.to), stroke: "transparent", strokeWidth: "14" }),
|
|
1067
|
+
/* @__PURE__ */ a("circle", { cx: o, cy: n(e.from), r: "4.5", fill: A, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2" }),
|
|
1068
|
+
/* @__PURE__ */ a("circle", { cx: h, cy: n(e.to), r: "4.5", fill: A, stroke: "var(--chart-surface, #0d0d0f)", strokeWidth: "2" }),
|
|
1069
|
+
/* @__PURE__ */ v("text", { className: "cf-label", x: o - 12, y: n(e.from) + 4, textAnchor: "end", children: [
|
|
1070
|
+
e.label,
|
|
1071
|
+
" ",
|
|
1072
|
+
/* @__PURE__ */ a("tspan", { className: "cf-label--strong", children: c(e.from) })
|
|
1073
|
+
] }),
|
|
1074
|
+
/* @__PURE__ */ v("text", { className: "cf-label", x: h + 12, y: n(e.to) + 4, children: [
|
|
1075
|
+
/* @__PURE__ */ a("tspan", { className: "cf-label--strong", children: c(e.to) }),
|
|
1076
|
+
" ",
|
|
1077
|
+
e.label
|
|
1078
|
+
] })
|
|
1079
|
+
] }, u);
|
|
1080
|
+
})
|
|
1081
|
+
] }) }) });
|
|
1082
|
+
}
|
|
1083
|
+
function Ka({
|
|
1084
|
+
title: $ = "Tickets by status",
|
|
1085
|
+
subtitle: y = "Per sprint",
|
|
1086
|
+
categories: r = ["S18", "S19", "S20", "S21", "S22", "S23"],
|
|
1087
|
+
series: d = [
|
|
1088
|
+
{ name: "Done", data: [42, 48, 51, 46, 58, 63] },
|
|
1089
|
+
{ name: "In review", data: [12, 9, 14, 11, 10, 8] },
|
|
1090
|
+
{ name: "Blocked", data: [5, 7, 3, 6, 4, 2] }
|
|
1091
|
+
],
|
|
1092
|
+
horizontal: s = !1,
|
|
1093
|
+
normalized: g = !1,
|
|
1094
|
+
prefix: M = "",
|
|
1095
|
+
suffix: _ = "",
|
|
1096
|
+
height: w = 280,
|
|
1097
|
+
colors: C,
|
|
1098
|
+
variant: S = "glass",
|
|
1099
|
+
size: x = "md",
|
|
1100
|
+
className: p = ""
|
|
1101
|
+
}) {
|
|
1102
|
+
const l = s ? Math.max(w, r.length * 40 + 40) : w, o = s ? { t: 8, r: 16, b: 24, l: 72 } : { t: 12, r: 12, b: 28, l: 44 }, h = r.map((b, m) => d.reduce((k, P) => k + (P.data[m] ?? 0), 0)), t = g ? [0, 25, 50, 75, 100] : q(0, Math.max(...h), 4), n = t[t.length - 1], c = s ? T(0, n, o.l, 640 - o.r) : T(0, n, l - o.b, o.t), e = s ? (l - o.t - o.b) / r.length : (640 - o.l - o.r) / r.length, u = e * 0.6, f = 2, A = (b) => E(b, M, _), N = (b) => g ? `${b}%` : A(b), W = r.map((b, m) => {
|
|
1103
|
+
let k = 0;
|
|
1104
|
+
const P = d.slice(0, 8).map((B, R) => {
|
|
1105
|
+
const F = B.data[m] ?? 0, D = g ? F / (h[m] || 1) * 100 : F, U = k;
|
|
1106
|
+
return k += D, { name: B.name, raw: F, val: D, start: U, end: k, color: H(R, C) };
|
|
1107
|
+
});
|
|
1108
|
+
return { c: b, ci: m, segs: P };
|
|
1109
|
+
});
|
|
1110
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: S, size: x, className: p, legend: d.map((b, m) => ({ label: b.name, color: H(m, C) })), table: { headers: ["Category", ...d.map((b) => b.name), "Total"], rows: r.map((b, m) => [b, ...d.map((k) => A(k.data[m])), A(h[m])]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${l}`, role: "img", "aria-label": `${$}: ${g ? "100% " : ""}stacked bar chart`, children: [
|
|
1111
|
+
t.map((b) => s ? /* @__PURE__ */ v("g", { children: [
|
|
1112
|
+
/* @__PURE__ */ a("line", { className: b === 0 ? "cf-axis" : "cf-grid", x1: c(b), x2: c(b), y1: o.t, y2: l - o.b }),
|
|
1113
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: c(b), y: l - 6, textAnchor: "middle", children: N(b) })
|
|
1114
|
+
] }) : /* @__PURE__ */ v("g", { children: [
|
|
1115
|
+
/* @__PURE__ */ a("line", { className: b === 0 ? "cf-axis" : "cf-grid", x1: o.l, x2: 640 - o.r, y1: c(b), y2: c(b) }),
|
|
1116
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: o.l - 8, y: c(b) + 4, textAnchor: "end", children: N(b) })
|
|
1117
|
+
] })),
|
|
1118
|
+
W.map(({ c: b, ci: m, segs: k }, P) => {
|
|
1119
|
+
const B = (s ? o.t : o.l) + m * e + (e - u) / 2;
|
|
1120
|
+
return /* @__PURE__ */ v("g", { children: [
|
|
1121
|
+
s ? /* @__PURE__ */ a("text", { className: "cf-label", x: o.l - 8, y: B + u / 2 + 4, textAnchor: "end", children: b }) : /* @__PURE__ */ a("text", { className: "cf-label", x: B + u / 2, y: l - 8, textAnchor: "middle", children: b }),
|
|
1122
|
+
k.map((R, F) => {
|
|
1123
|
+
const D = c(R.start), U = c(R.end), z = F === k.length - 1, L = Math.abs(U - D) - (z ? 0 : f);
|
|
1124
|
+
if (!(L > 0)) return null;
|
|
1125
|
+
const sa = s ? { x: D, y: B, width: L, height: u } : { x: B, y: U + (z ? 0 : f), width: u, height: L };
|
|
1126
|
+
return /* @__PURE__ */ a("rect", { className: "cf-mark cf-dim", ...sa, rx: z ? 3 : 0, fill: R.color, tabIndex: 0, role: "img", "aria-label": `${b}, ${R.name}: ${A(R.raw)}${g ? ` (${R.val.toFixed(0)}%)` : ""}`, "data-tip-title": b, "data-tip": `${R.color}::${R.name}: ${A(R.raw)}${g ? ` · ${R.val.toFixed(0)}%` : ""}` }, F);
|
|
1127
|
+
})
|
|
1128
|
+
] }, P);
|
|
1129
|
+
})
|
|
1130
|
+
] }) }) });
|
|
1131
|
+
}
|
|
1132
|
+
function Za({
|
|
1133
|
+
title: $ = "Cloud spend breakdown",
|
|
1134
|
+
subtitle: y = "Service → resource",
|
|
1135
|
+
data: r = [
|
|
1136
|
+
{ label: "Compute", children: [{ label: "VMs", value: 4200 }, { label: "Functions", value: 1800 }, { label: "Containers", value: 2600 }] },
|
|
1137
|
+
{ label: "Storage", children: [{ label: "Object", value: 1900 }, { label: "Block", value: 1100 }] },
|
|
1138
|
+
{ label: "Network", children: [{ label: "CDN", value: 1400 }, { label: "Egress", value: 900 }] },
|
|
1139
|
+
{ label: "Data", children: [{ label: "Postgres", value: 1600 }, { label: "Redis", value: 500 }] }
|
|
1140
|
+
],
|
|
1141
|
+
centerLabel: d = "Monthly spend",
|
|
1142
|
+
prefix: s = "$",
|
|
1143
|
+
suffix: g = "",
|
|
1144
|
+
colors: M,
|
|
1145
|
+
variant: _ = "glass",
|
|
1146
|
+
size: w = "md",
|
|
1147
|
+
className: C = ""
|
|
1148
|
+
}) {
|
|
1149
|
+
const p = G(r.flatMap((n) => n.children.map((c) => c.value))) || 1, i = 0.01;
|
|
1150
|
+
let l = 0;
|
|
1151
|
+
const o = r.slice(0, 8).map((n, c) => {
|
|
1152
|
+
const e = G(n.children.map((b) => b.value)), u = l, f = e / p * Math.PI * 2;
|
|
1153
|
+
l += f;
|
|
1154
|
+
const A = H(c, M);
|
|
1155
|
+
let N = u;
|
|
1156
|
+
const W = n.children.map((b, m) => {
|
|
1157
|
+
const k = b.value / p * Math.PI * 2, P = N;
|
|
1158
|
+
N += k;
|
|
1159
|
+
const B = 100 - m * (40 / Math.max(1, n.children.length - 1));
|
|
1160
|
+
return { ...b, d: ra(150, 150, 146, 104, P + i / 2, P + k - i / 2), color: `color-mix(in srgb, ${A} ${B}%, #0d0d0f)` };
|
|
1161
|
+
});
|
|
1162
|
+
return { label: n.label, value: e, color: A, d: ra(150, 150, 100, 62, u + i / 2, u + f - i / 2), kids: W };
|
|
1163
|
+
}), h = (n) => E(n, s, g), t = (n) => `${(n / p * 100).toFixed(1)}%`;
|
|
1164
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: _, size: w, className: C, legend: o.map((n) => ({ label: n.label, color: n.color })), table: { headers: ["Group", "Item", "Value", "Share"], rows: o.flatMap((n) => n.kids.map((c) => [n.label, c.label, h(c.value), t(c.value)])) }, children: /* @__PURE__ */ a("div", { className: "sbt", "data-rk-355acb": "", children: /* @__PURE__ */ v("svg", { viewBox: "0 0 300 300", role: "img", "aria-label": `${$}: sunburst chart, total ${h(p)}`, "data-rk-355acb": "", children: [
|
|
1165
|
+
o.map((n, c) => /* @__PURE__ */ v("g", { "data-rk-355acb": "", children: [
|
|
1166
|
+
/* @__PURE__ */ a("path", { className: "cf-mark cf-dim", d: n.d, fill: n.color, tabIndex: 0, role: "img", "aria-label": `${n.label}: ${h(n.value)} (${t(n.value)})`, "data-tip-title": n.label, "data-tip": `${n.color}::${h(n.value)} · ${t(n.value)}`, "data-rk-355acb": "" }),
|
|
1167
|
+
n.kids.map((e, u) => /* @__PURE__ */ a("path", { className: "cf-mark cf-dim", d: e.d, fill: e.color, tabIndex: 0, role: "img", "aria-label": `${n.label} / ${e.label}: ${h(e.value)}`, "data-tip-title": `${n.label} › ${e.label}`, "data-tip": `${e.color}::${h(e.value)} · ${t(e.value)}`, "data-rk-355acb": "" }, u))
|
|
1168
|
+
] }, c)),
|
|
1169
|
+
/* @__PURE__ */ a("text", { x: 150, y: 152, textAnchor: "middle", className: "sbt__total", "data-rk-355acb": "", children: h(p) }),
|
|
1170
|
+
/* @__PURE__ */ a("text", { x: 150, y: 170, textAnchor: "middle", className: "cf-label", "data-rk-355acb": "", children: d })
|
|
1171
|
+
] }) }) }) });
|
|
1172
|
+
}
|
|
1173
|
+
function Ya({
|
|
1174
|
+
title: $ = "Bundle size by module",
|
|
1175
|
+
subtitle: y = "Gzipped KB",
|
|
1176
|
+
items: r = [
|
|
1177
|
+
{ label: "react-dom", value: 42, group: 0 },
|
|
1178
|
+
{ label: "react runtime", value: 18, group: 1 },
|
|
1179
|
+
{ label: "charts", value: 24, group: 2 },
|
|
1180
|
+
{ label: "date-fns", value: 12, group: 0 },
|
|
1181
|
+
{ label: "router", value: 9, group: 1 },
|
|
1182
|
+
{ label: "icons", value: 15, group: 2 },
|
|
1183
|
+
{ label: "i18n", value: 7, group: 1 },
|
|
1184
|
+
{ label: "utils", value: 5, group: 2 },
|
|
1185
|
+
{ label: "zod", value: 11, group: 0 },
|
|
1186
|
+
{ label: "analytics", value: 6, group: 0 }
|
|
1187
|
+
],
|
|
1188
|
+
groups: d = ["Vendor", "Framework", "App"],
|
|
1189
|
+
prefix: s = "",
|
|
1190
|
+
suffix: g = " KB",
|
|
1191
|
+
height: M = 320,
|
|
1192
|
+
colors: _,
|
|
1193
|
+
variant: w = "glass",
|
|
1194
|
+
size: C = "md",
|
|
1195
|
+
className: S = ""
|
|
1196
|
+
}) {
|
|
1197
|
+
const p = M, i = ha(r.map((t) => t.value), { x: 0, y: 0, w: 640, h: p }), l = G(r.map((t) => t.value)) || 1, o = (t) => E(t, s, g, !1), h = 2;
|
|
1198
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: w, size: C, className: S, legend: d.map((t, n) => ({ label: t, color: H(n, _) })), table: { headers: ["Item", "Group", "Value", "Share"], rows: r.map((t) => [t.label, d[t.group ?? 0] ?? "—", o(t.value), `${(t.value / l * 100).toFixed(1)}%`]) }, children: /* @__PURE__ */ a("svg", { viewBox: `0 0 640 ${p}`, role: "img", "aria-label": `${$}: treemap of ${r.length} items`, children: r.map((t, n) => {
|
|
1199
|
+
const c = i[n], e = H(t.group ?? 0, _), u = Math.max(0, c.w - h), f = Math.max(0, c.h - h), A = u > 64 && f > 34;
|
|
1200
|
+
return /* @__PURE__ */ v("g", { className: "cf-mark cf-dim", tabIndex: 0, role: "img", "aria-label": `${t.label}: ${o(t.value)}`, "data-tip-title": t.label, "data-tip": `${e}::${o(t.value)} · ${(t.value / l * 100).toFixed(1)}%`, children: [
|
|
1201
|
+
/* @__PURE__ */ a("rect", { x: c.x + h / 2, y: c.y + h / 2, width: u, height: f, rx: "6", fill: e, fillOpacity: "0.85" }),
|
|
1202
|
+
A && /* @__PURE__ */ v(I, { children: [
|
|
1203
|
+
/* @__PURE__ */ a("text", { x: c.x + 10, y: c.y + 20, fill: "#fff", fontSize: "12", fontWeight: "650", children: t.label }),
|
|
1204
|
+
/* @__PURE__ */ a("text", { x: c.x + 10, y: c.y + 36, fill: "rgb(var(--ink-rgb, 255 255 255) / 0.8)", fontSize: "11", children: o(t.value) })
|
|
1205
|
+
] })
|
|
1206
|
+
] }, n);
|
|
1207
|
+
}) }) }) });
|
|
1208
|
+
}
|
|
1209
|
+
function ea($) {
|
|
1210
|
+
const y = {};
|
|
1211
|
+
for (const r of String($ ?? "").split(";")) {
|
|
1212
|
+
const d = r.indexOf(":");
|
|
1213
|
+
if (d < 0) continue;
|
|
1214
|
+
const s = r.slice(0, d).trim();
|
|
1215
|
+
s && (y[s.startsWith("--") ? s : s.replace(/-([a-z])/g, (g, M) => M.toUpperCase())] = r.slice(d + 1).trim());
|
|
1216
|
+
}
|
|
1217
|
+
return y;
|
|
1218
|
+
}
|
|
1219
|
+
function Xa({
|
|
1220
|
+
title: $ = "Device share",
|
|
1221
|
+
subtitle: y = "Each square = 1% of sessions",
|
|
1222
|
+
parts: r = [
|
|
1223
|
+
{ label: "Desktop", value: 54 },
|
|
1224
|
+
{ label: "Mobile", value: 38 },
|
|
1225
|
+
{ label: "Tablet", value: 8 }
|
|
1226
|
+
],
|
|
1227
|
+
columns: d = 10,
|
|
1228
|
+
colors: s,
|
|
1229
|
+
variant: g = "glass",
|
|
1230
|
+
size: M = "md",
|
|
1231
|
+
className: _ = ""
|
|
1232
|
+
}) {
|
|
1233
|
+
const w = G(r.map((l) => l.value)) || 1, C = r.map((l) => l.value / w * 100), S = C.map(Math.floor);
|
|
1234
|
+
let x = 100 - G(S);
|
|
1235
|
+
C.map((l, o) => ({ i: o, r: l - Math.floor(l) })).sort((l, o) => o.r - l.r).forEach(({ i: l }) => {
|
|
1236
|
+
x > 0 && (S[l] += 1, x -= 1);
|
|
1237
|
+
});
|
|
1238
|
+
const p = S.flatMap((l, o) => Array.from({ length: l }, () => o)), i = r.slice(0, 8).map((l, o) => ({ ...l, pct: S[o], color: H(o, s) }));
|
|
1239
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: g, size: M, className: _, table: { headers: ["Part", "Share"], rows: i.map((l) => [l.label, `${l.pct}%`]) }, children: /* @__PURE__ */ v("div", { className: "wf", "data-rk-87979e": "", children: [
|
|
1240
|
+
/* @__PURE__ */ a("div", { className: "wf__grid", style: ea(`--wf-cols:${d}`), role: "img", "aria-label": `${$}: ${i.map((l) => `${l.label} ${l.pct}%`).join(", ")}`, "data-rk-87979e": "", children: p.map((l, o) => {
|
|
1241
|
+
var h, t, n, c;
|
|
1242
|
+
return /* @__PURE__ */ a("span", { className: "wf__cell", style: ea(`background:${(h = i[l]) == null ? void 0 : h.color}; --wf-i:${o}`), "data-tip-title": (t = i[l]) == null ? void 0 : t.label, "data-tip": `${(n = i[l]) == null ? void 0 : n.color}::${(c = i[l]) == null ? void 0 : c.pct}%`, "data-rk-87979e": "" }, o);
|
|
1243
|
+
}) }),
|
|
1244
|
+
/* @__PURE__ */ a("ul", { className: "wf__legend", "data-rk-87979e": "", children: i.map((l, o) => /* @__PURE__ */ v("li", { "data-rk-87979e": "", children: [
|
|
1245
|
+
/* @__PURE__ */ v("span", { className: "wf__big", "data-rk-87979e": "", children: [
|
|
1246
|
+
l.pct,
|
|
1247
|
+
/* @__PURE__ */ a("small", { "data-rk-87979e": "", children: "%" })
|
|
1248
|
+
] }),
|
|
1249
|
+
/* @__PURE__ */ v("span", { className: "wf__name", "data-rk-87979e": "", children: [
|
|
1250
|
+
/* @__PURE__ */ a("i", { style: ea(`background:${l.color}`), "aria-hidden": "true", "data-rk-87979e": "" }),
|
|
1251
|
+
l.label
|
|
1252
|
+
] })
|
|
1253
|
+
] }, o)) })
|
|
1254
|
+
] }) }) });
|
|
1255
|
+
}
|
|
1256
|
+
function La({
|
|
1257
|
+
title: $ = "ARR bridge",
|
|
1258
|
+
subtitle: y = "From January to June",
|
|
1259
|
+
startLabel: r = "Jan ARR",
|
|
1260
|
+
start: d = 12e5,
|
|
1261
|
+
steps: s = [
|
|
1262
|
+
{ label: "New", value: 38e4 },
|
|
1263
|
+
{ label: "Expansion", value: 21e4 },
|
|
1264
|
+
{ label: "Contraction", value: -9e4 },
|
|
1265
|
+
{ label: "Churn", value: -16e4 },
|
|
1266
|
+
{ label: "Reactivation", value: 45e3 }
|
|
1267
|
+
],
|
|
1268
|
+
endLabel: g = "Jun ARR",
|
|
1269
|
+
prefix: M = "$",
|
|
1270
|
+
suffix: _ = "",
|
|
1271
|
+
height: w = 290,
|
|
1272
|
+
variant: C = "glass",
|
|
1273
|
+
size: S = "md",
|
|
1274
|
+
className: x = ""
|
|
1275
|
+
}) {
|
|
1276
|
+
const i = w, l = { t: 22, r: 12, b: 30, l: 52 };
|
|
1277
|
+
let o = d;
|
|
1278
|
+
const h = [
|
|
1279
|
+
{ label: r, from: 0, to: d, kind: "total", value: d },
|
|
1280
|
+
...s.map((N) => {
|
|
1281
|
+
const W = o;
|
|
1282
|
+
return o += N.value, { label: N.label, from: W, to: o, kind: N.value >= 0 ? "up" : "down", value: N.value };
|
|
1283
|
+
}),
|
|
1284
|
+
{ label: g, from: 0, to: o, kind: "total", value: o }
|
|
1285
|
+
], t = q(0, Math.max(...h.map((N) => Math.max(N.from, N.to))), 4), n = T(0, t[t.length - 1], i - l.b, l.t), c = (640 - l.l - l.r) / h.length, e = c * 0.62, u = (N) => N === "up" ? K : N === "down" ? Z : "var(--chart-1, #3987e5)", f = (N) => E(N, M, _), A = (N) => `${N >= 0 ? "+" : "−"}${E(Math.abs(N), M, _)}`;
|
|
1286
|
+
return /* @__PURE__ */ a(I, { children: /* @__PURE__ */ a(O, { title: $, subtitle: y, variant: C, size: S, className: x, legend: [
|
|
1287
|
+
{ label: "Total", color: "var(--chart-1, #3987e5)" },
|
|
1288
|
+
{ label: "Increase", color: K },
|
|
1289
|
+
{ label: "Decrease", color: Z }
|
|
1290
|
+
], table: { headers: ["Step", "Change", "Running total"], rows: h.map((N) => [N.label, N.kind === "total" ? "—" : A(N.value), f(N.to)]) }, children: /* @__PURE__ */ v("svg", { viewBox: `0 0 640 ${i}`, role: "img", "aria-label": `${$}: waterfall chart from ${f(d)} to ${f(o)}`, children: [
|
|
1291
|
+
t.map((N, W) => /* @__PURE__ */ v("g", { children: [
|
|
1292
|
+
/* @__PURE__ */ a("line", { className: N === 0 ? "cf-axis" : "cf-grid", x1: l.l, x2: 640 - l.r, y1: n(N), y2: n(N) }),
|
|
1293
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: l.l - 8, y: n(N) + 4, textAnchor: "end", children: f(N) })
|
|
1294
|
+
] }, W)),
|
|
1295
|
+
h.map((N, W) => {
|
|
1296
|
+
const b = l.l + W * c + (c - e) / 2, m = n(Math.max(N.from, N.to)), k = Math.max(1, Math.abs(n(N.from) - n(N.to))), P = u(N.kind), B = h[W + 1];
|
|
1297
|
+
return /* @__PURE__ */ v("g", { children: [
|
|
1298
|
+
B && /* @__PURE__ */ a("line", { className: "cf-axis", x1: b + e, x2: b + c, y1: n(N.to), y2: n(N.to), opacity: "0.7" }),
|
|
1299
|
+
/* @__PURE__ */ a("rect", { className: "cf-mark cf-dim", x: b, y: m, width: e, height: k, rx: "3", fill: P, tabIndex: 0, role: "img", "aria-label": `${N.label}: ${N.kind === "total" ? f(N.value) : A(N.value)}, total ${f(N.to)}`, "data-tip-title": N.label, "data-tip": N.kind === "total" ? `${P}::Total: ${f(N.value)}` : `${P}::Change: ${A(N.value)}|Running: ${f(N.to)}` }),
|
|
1300
|
+
/* @__PURE__ */ a("text", { className: "cf-label cf-label--strong", x: b + e / 2, y: m - 6, textAnchor: "middle", children: N.kind === "total" ? f(N.value) : A(N.value) }),
|
|
1301
|
+
/* @__PURE__ */ a("text", { className: "cf-label", x: b + e / 2, y: i - 10, textAnchor: "middle", children: N.label })
|
|
1302
|
+
] }, W);
|
|
1303
|
+
})
|
|
1304
|
+
] }) }) });
|
|
1305
|
+
}
|
|
1306
|
+
export {
|
|
1307
|
+
Wa as A,
|
|
1308
|
+
_a as B,
|
|
1309
|
+
Pa as C,
|
|
1310
|
+
Ia as D,
|
|
1311
|
+
Ra as G,
|
|
1312
|
+
Oa as H,
|
|
1313
|
+
Fa as K,
|
|
1314
|
+
wa as L,
|
|
1315
|
+
Ta as M,
|
|
1316
|
+
Da as P,
|
|
1317
|
+
Ua as R,
|
|
1318
|
+
Va as S,
|
|
1319
|
+
Ya as T,
|
|
1320
|
+
Xa as W,
|
|
1321
|
+
Sa as a,
|
|
1322
|
+
Aa as b,
|
|
1323
|
+
Ca as c,
|
|
1324
|
+
Ba as d,
|
|
1325
|
+
Ha as e,
|
|
1326
|
+
qa as f,
|
|
1327
|
+
Ea as g,
|
|
1328
|
+
Na as h,
|
|
1329
|
+
Ga as i,
|
|
1330
|
+
ja as j,
|
|
1331
|
+
za as k,
|
|
1332
|
+
Qa as l,
|
|
1333
|
+
Ja as m,
|
|
1334
|
+
Ka as n,
|
|
1335
|
+
Za as o,
|
|
1336
|
+
La as p
|
|
1337
|
+
};
|