@wakastellar/ui 2.3.4 → 2.4.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/dist/blocks/dashboard/index.d.ts +4 -1
- package/dist/blocks/empty-states/index.d.ts +4 -1
- package/dist/blocks/error-pages/index.d.ts +4 -1
- package/dist/blocks/index.d.ts +1 -1
- package/dist/blocks/landing/index.d.ts +4 -1
- package/dist/blocks/pricing/index.d.ts +5 -1
- package/dist/blocks/sidebar/index.d.ts +5 -1
- package/dist/index.cjs.js +130 -130
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +7905 -7856
- package/dist/stories/Button.d.ts +14 -0
- package/dist/stories/Button.stories.d.ts +8 -0
- package/dist/stories/Header.d.ts +11 -0
- package/dist/stories/Header.stories.d.ts +6 -0
- package/dist/stories/Page.d.ts +2 -0
- package/dist/stories/Page.stories.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/link.d.ts +23 -0
- package/package.json +11 -3
- package/src/blocks/activity-timeline/ActivityTimeline.stories.tsx +460 -0
- package/src/blocks/apm-overview/APMOverview.stories.tsx +435 -0
- package/src/blocks/auth-2fa/Auth2FA.stories.tsx +308 -0
- package/src/blocks/calendar-view/CalendarView.stories.tsx +398 -0
- package/src/blocks/chat/Chat.stories.tsx +466 -0
- package/src/blocks/chat-interface/ChatInterface.stories.tsx +412 -0
- package/src/blocks/checkout-flow/CheckoutFlow.stories.tsx +408 -0
- package/src/blocks/cicd-builder/CICDBuilder.stories.tsx +499 -0
- package/src/blocks/cloud-cost-dashboard/CloudCostDashboard.stories.tsx +356 -0
- package/src/blocks/container-orchestrator/ContainerOrchestrator.stories.tsx +461 -0
- package/src/blocks/dashboard/Dashboard.stories.tsx +559 -0
- package/src/blocks/dashboard/index.tsx +68 -27
- package/src/blocks/dashboard-kpi/DashboardKPI.stories.tsx +422 -0
- package/src/blocks/database-admin/DatabaseAdmin.stories.tsx +393 -0
- package/src/blocks/deployment-dashboard/DeploymentDashboard.stories.tsx +457 -0
- package/src/blocks/empty-states/EmptyStates.stories.tsx +467 -0
- package/src/blocks/empty-states/index.tsx +26 -8
- package/src/blocks/error-pages/ErrorPages.stories.tsx +401 -0
- package/src/blocks/error-pages/index.tsx +26 -8
- package/src/blocks/faq/FAQ.stories.tsx +416 -0
- package/src/blocks/file-manager/FileManager.stories.tsx +413 -0
- package/src/blocks/footer/Footer.stories.tsx +328 -0
- package/src/blocks/gitops-sync-status/GitOpsSyncStatus.stories.tsx +529 -0
- package/src/blocks/header/WakaHeader.stories.tsx +455 -0
- package/src/blocks/headtab/Headtab.stories.tsx +369 -0
- package/src/blocks/i18n-editor/I18nEditor.stories.tsx +451 -0
- package/src/blocks/incident-manager/IncidentManager.stories.tsx +464 -0
- package/src/blocks/index.ts +1 -1
- package/src/blocks/infrastructure-map/InfrastructureMap.stories.tsx +533 -0
- package/src/blocks/kanban-board/KanbanBoard.stories.tsx +494 -0
- package/src/blocks/landing/WakaLanding.stories.tsx +449 -0
- package/src/blocks/landing/index.tsx +125 -66
- package/src/blocks/language-selector/LanguageSelector.stories.tsx +345 -0
- package/src/blocks/layout/Layout.stories.tsx +373 -0
- package/src/blocks/login/Login.stories.tsx +443 -0
- package/src/blocks/on-call-schedule/OnCallSchedule.stories.tsx +381 -0
- package/src/blocks/player-profile/PlayerProfile.stories.tsx +316 -0
- package/src/blocks/pricing/WakaPricing.stories.tsx +530 -0
- package/src/blocks/pricing/index.tsx +38 -4
- package/src/blocks/profile/Profile.stories.tsx +371 -0
- package/src/blocks/release-notes/ReleaseNotes.stories.tsx +431 -0
- package/src/blocks/settings/Settings.stories.tsx +520 -0
- package/src/blocks/sidebar/WakaSidebar.stories.tsx +513 -0
- package/src/blocks/sidebar/index.tsx +49 -20
- package/src/blocks/theme-creator-block/ThemeCreatorBlock.stories.tsx +370 -0
- package/src/blocks/user-management/UserManagement.stories.tsx +411 -0
- package/src/blocks/wizard/Wizard.stories.tsx +683 -0
- package/src/components/accordion/Accordion.stories.tsx +93 -0
- package/src/components/alert/Alert.stories.tsx +95 -0
- package/src/components/alert-dialog/AlertDialog.stories.tsx +126 -0
- package/src/components/aspect-ratio/AspectRatio.stories.tsx +118 -0
- package/src/components/avatar/Avatar.stories.tsx +104 -0
- package/src/components/button/Button.stories.tsx +12 -1
- package/src/components/calendar/Calendar.stories.tsx +102 -0
- package/src/components/card/Card.stories.tsx +125 -0
- package/src/components/checkbox/Checkbox.stories.tsx +100 -0
- package/src/components/code/Code.stories.tsx +402 -0
- package/src/components/collapsible/Collapsible.stories.tsx +123 -0
- package/src/components/command/Command.stories.tsx +207 -0
- package/src/components/context-menu/ContextMenu.stories.tsx +220 -0
- package/src/components/dialog/Dialog.stories.tsx +157 -0
- package/src/components/dropdown-menu/DropdownMenu.stories.tsx +225 -0
- package/src/components/form/Form.stories.tsx +413 -0
- package/src/components/hover-card/HoverCard.stories.tsx +148 -0
- package/src/components/input-otp/InputOTP.stories.tsx +255 -0
- package/src/components/label/Label.stories.tsx +68 -0
- package/src/components/menubar/Menubar.stories.tsx +278 -0
- package/src/components/navigation-menu/NavigationMenu.stories.tsx +202 -0
- package/src/components/popover/Popover.stories.tsx +199 -0
- package/src/components/progress/Progress.stories.tsx +104 -0
- package/src/components/radio-group/RadioGroup.stories.tsx +138 -0
- package/src/components/scroll-area/ScrollArea.stories.tsx +153 -0
- package/src/components/select/Select.stories.tsx +146 -0
- package/src/components/separator/Separator.stories.tsx +117 -0
- package/src/components/sheet/Sheet.stories.tsx +195 -0
- package/src/components/skeleton/Skeleton.stories.tsx +114 -0
- package/src/components/slider/Slider.stories.tsx +157 -0
- package/src/components/switch/Switch.stories.tsx +114 -0
- package/src/components/table/Table.stories.tsx +153 -0
- package/src/components/tabs/Tabs.stories.tsx +155 -0
- package/src/components/textarea/Textarea.stories.tsx +116 -0
- package/src/components/toast/Toast.stories.tsx +160 -0
- package/src/components/toggle/Toggle.stories.tsx +125 -0
- package/src/components/tooltip/Tooltip.stories.tsx +133 -0
- package/src/components/typography/Typography.stories.tsx +207 -0
- package/src/components/waka-3d-pie-chart/Waka3DPieChart.stories.tsx +308 -0
- package/src/components/waka-achievement-unlock/WakaAchievementUnlock.stories.tsx +353 -0
- package/src/components/waka-artifact-list/WakaArtifactList.stories.tsx +258 -0
- package/src/components/waka-autocomplete/WakaAutocomplete.stories.tsx +224 -0
- package/src/components/waka-badge-showcase/WakaBadgeShowcase.stories.tsx +269 -0
- package/src/components/waka-barcode/WakaBarcode.stories.tsx +227 -0
- package/src/components/waka-bottom-sheet/WakaBottomSheet.stories.tsx +408 -0
- package/src/components/waka-breadcrumb/WakaBreadcrumb.stories.tsx +237 -0
- package/src/components/waka-build-matrix/WakaBuildMatrix.stories.tsx +328 -0
- package/src/components/waka-carousel/WakaCarousel.stories.tsx +296 -0
- package/src/components/waka-charts/WakaCharts.stories.tsx +519 -0
- package/src/components/waka-color-picker/WakaColorPicker.stories.tsx +200 -0
- package/src/components/waka-combobox/WakaCombobox.stories.tsx +250 -0
- package/src/components/waka-container-list/WakaContainerList.stories.tsx +315 -0
- package/src/components/waka-contribution-graph/WakaContributionGraph.stories.tsx +354 -0
- package/src/components/waka-cost-breakdown/WakaCostBreakdown.stories.tsx +348 -0
- package/src/components/waka-daily-reward/WakaDailyReward.stories.tsx +365 -0
- package/src/components/waka-database-card/WakaDatabaseCard.stories.tsx +306 -0
- package/src/components/waka-date-range-picker/WakaDateRangePicker.stories.tsx +339 -0
- package/src/components/waka-datetime-picker/WakaDateTimePicker.stories.tsx +317 -0
- package/src/components/waka-deployment-lane/WakaDeploymentLane.stories.tsx +292 -0
- package/src/components/waka-dock/WakaDock.stories.tsx +332 -0
- package/src/components/waka-drawer/WakaDrawer.stories.tsx +437 -0
- package/src/components/waka-env-var-editor/WakaEnvVarEditor.stories.tsx +263 -0
- package/src/components/waka-error-shake/WakaErrorShake.stories.tsx +410 -0
- package/src/components/waka-file-upload/WakaFileUpload.stories.tsx +239 -0
- package/src/components/waka-flow-diagram/WakaFlowDiagram.stories.tsx +365 -0
- package/src/components/waka-funnel-chart/WakaFunnelChart.stories.tsx +281 -0
- package/src/components/waka-glow-card/WakaGlowCard.stories.tsx +274 -0
- package/src/components/waka-haptic-button/WakaHapticButton.stories.tsx +349 -0
- package/src/components/waka-health-pulse/WakaHealthPulse.stories.tsx +293 -0
- package/src/components/waka-heatmap/WakaHeatmap.stories.tsx +376 -0
- package/src/components/waka-image/WakaImage.stories.tsx +255 -0
- package/src/components/waka-incident-timeline/WakaIncidentTimeline.stories.tsx +300 -0
- package/src/components/waka-kanban/WakaKanban.stories.tsx +399 -0
- package/src/components/waka-kubernetes-overview/WakaKubernetesOverview.stories.tsx +281 -0
- package/src/components/waka-leaderboard/WakaLeaderboard.stories.tsx +300 -0
- package/src/components/waka-level-progress/WakaLevelProgress.stories.tsx +313 -0
- package/src/components/waka-loading-orbit/WakaLoadingOrbit.stories.tsx +413 -0
- package/src/components/waka-log-viewer/WakaLogViewer.stories.tsx +312 -0
- package/src/components/waka-loot-box/WakaLootBox.stories.tsx +374 -0
- package/src/components/waka-metric-sparkline/WakaMetricSparkline.stories.tsx +312 -0
- package/src/components/waka-migration-list/WakaMigrationList.stories.tsx +289 -0
- package/src/components/waka-modal/WakaModal.stories.tsx +434 -0
- package/src/components/waka-morph-button/WakaMorphButton.stories.tsx +405 -0
- package/src/components/waka-network-topology/WakaNetworkTopology.stories.tsx +364 -0
- package/src/components/waka-notifications/WakaNotifications.stories.tsx +290 -0
- package/src/components/waka-number-input/WakaNumberInput.stories.tsx +282 -0
- package/src/components/waka-pagination/WakaPagination.stories.tsx +328 -0
- package/src/components/waka-password-strength/WakaPasswordStrength.stories.tsx +318 -0
- package/src/components/waka-pipeline-view/WakaPipelineView.stories.tsx +386 -0
- package/src/components/waka-player-card/WakaPlayerCard.stories.tsx +333 -0
- package/src/components/waka-pod-card/WakaPodCard.stories.tsx +435 -0
- package/src/components/waka-qrcode/WakaQRCode.stories.tsx +232 -0
- package/src/components/waka-query-explain/WakaQueryExplain.stories.tsx +407 -0
- package/src/components/waka-quest-card/WakaQuestCard.stories.tsx +394 -0
- package/src/components/waka-quota-bar/WakaQuotaBar.stories.tsx +435 -0
- package/src/components/waka-radar-score/WakaRadarScore.stories.tsx +372 -0
- package/src/components/waka-resource-gauge/WakaResourceGauge.stories.tsx +366 -0
- package/src/components/waka-rich-text-editor/WakaRichTextEditor.stories.tsx +238 -0
- package/src/components/waka-sankey-diagram/WakaSankeyDiagram.stories.tsx +389 -0
- package/src/components/waka-scratch-card/WakaScratchCard.stories.tsx +388 -0
- package/src/components/waka-secret-card/WakaSecretCard.stories.tsx +314 -0
- package/src/components/waka-segmented-control/WakaSegmentedControl.stories.tsx +309 -0
- package/src/components/waka-server-rack/WakaServerRack.stories.tsx +382 -0
- package/src/components/waka-service-graph/WakaServiceGraph.stories.tsx +262 -0
- package/src/components/waka-skeleton-wave/WakaSkeletonWave.stories.tsx +321 -0
- package/src/components/waka-skill-tree/WakaSkillTree.stories.tsx +308 -0
- package/src/components/waka-spin-wheel/WakaSpinWheel.stories.tsx +368 -0
- package/src/components/waka-spinner/WakaSpinner.stories.tsx +156 -0
- package/src/components/waka-stat/WakaStat.stories.tsx +334 -0
- package/src/components/waka-status-matrix/WakaStatusMatrix.stories.tsx +331 -0
- package/src/components/waka-stepper/WakaStepper.stories.tsx +468 -0
- package/src/components/waka-streak-counter/WakaStreakCounter.stories.tsx +235 -0
- package/src/components/waka-success-explosion/WakaSuccessExplosion.stories.tsx +389 -0
- package/src/components/waka-tabs-morph/WakaTabsMorph.stories.tsx +471 -0
- package/src/components/waka-terminal-output/WakaTerminalOutput.stories.tsx +351 -0
- package/src/components/waka-test-report/WakaTestReport.stories.tsx +322 -0
- package/src/components/waka-tilt-card/WakaTiltCard.stories.tsx +300 -0
- package/src/components/waka-time-picker/WakaTimePicker.stories.tsx +227 -0
- package/src/components/waka-timeline/WakaTimeline.stories.tsx +383 -0
- package/src/components/waka-tournament-bracket/WakaTournamentBracket.stories.tsx +375 -0
- package/src/components/waka-trace-viewer/WakaTraceViewer.stories.tsx +445 -0
- package/src/components/waka-tree/WakaTree.stories.tsx +359 -0
- package/src/components/waka-treemap-chart/WakaTreemapChart.stories.tsx +378 -0
- package/src/components/waka-typewriter/WakaTypewriter.stories.tsx +366 -0
- package/src/components/waka-versus-card/WakaVersusCard.stories.tsx +530 -0
- package/src/components/waka-video/WakaVideo.stories.tsx +203 -0
- package/src/components/waka-virtual-list/WakaVirtualList.stories.tsx +273 -0
- package/src/components/waka-xp-bar/WakaXPBar.stories.tsx +305 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import { WakaSpinner } from './index'
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof WakaSpinner> = {
|
|
5
|
+
title: 'Components/Display/WakaSpinner',
|
|
6
|
+
component: WakaSpinner,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'centered',
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: 'A space-themed loading spinner with an orbiting rocket and floating asteroids.',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
tags: ['autodocs'],
|
|
16
|
+
argTypes: {
|
|
17
|
+
size: {
|
|
18
|
+
control: 'select',
|
|
19
|
+
options: ['sm', 'md', 'lg', 'xl'],
|
|
20
|
+
description: 'Size of the spinner',
|
|
21
|
+
},
|
|
22
|
+
speed: {
|
|
23
|
+
control: { type: 'range', min: 0.5, max: 5, step: 0.5 },
|
|
24
|
+
description: 'Rotation speed in seconds',
|
|
25
|
+
},
|
|
26
|
+
showAsteroids: {
|
|
27
|
+
control: 'boolean',
|
|
28
|
+
description: 'Show floating asteroids',
|
|
29
|
+
},
|
|
30
|
+
rocketColor: {
|
|
31
|
+
control: 'text',
|
|
32
|
+
description: 'Color of the rocket',
|
|
33
|
+
},
|
|
34
|
+
asteroidColor: {
|
|
35
|
+
control: 'text',
|
|
36
|
+
description: 'Color of the asteroids',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default meta
|
|
42
|
+
type Story = StoryObj<typeof WakaSpinner>
|
|
43
|
+
|
|
44
|
+
export const Default: Story = {
|
|
45
|
+
args: {},
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const Sizes: Story = {
|
|
49
|
+
render: () => (
|
|
50
|
+
<div className="flex items-end gap-8">
|
|
51
|
+
<div className="text-center">
|
|
52
|
+
<WakaSpinner size="sm" />
|
|
53
|
+
<p className="text-xs text-muted-foreground mt-2">Small</p>
|
|
54
|
+
</div>
|
|
55
|
+
<div className="text-center">
|
|
56
|
+
<WakaSpinner size="md" />
|
|
57
|
+
<p className="text-xs text-muted-foreground mt-2">Medium</p>
|
|
58
|
+
</div>
|
|
59
|
+
<div className="text-center">
|
|
60
|
+
<WakaSpinner size="lg" />
|
|
61
|
+
<p className="text-xs text-muted-foreground mt-2">Large</p>
|
|
62
|
+
</div>
|
|
63
|
+
<div className="text-center">
|
|
64
|
+
<WakaSpinner size="xl" />
|
|
65
|
+
<p className="text-xs text-muted-foreground mt-2">Extra Large</p>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
),
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export const Speeds: Story = {
|
|
72
|
+
render: () => (
|
|
73
|
+
<div className="flex items-end gap-8">
|
|
74
|
+
<div className="text-center">
|
|
75
|
+
<WakaSpinner size="md" speed={1} />
|
|
76
|
+
<p className="text-xs text-muted-foreground mt-2">Fast (1s)</p>
|
|
77
|
+
</div>
|
|
78
|
+
<div className="text-center">
|
|
79
|
+
<WakaSpinner size="md" speed={2} />
|
|
80
|
+
<p className="text-xs text-muted-foreground mt-2">Normal (2s)</p>
|
|
81
|
+
</div>
|
|
82
|
+
<div className="text-center">
|
|
83
|
+
<WakaSpinner size="md" speed={4} />
|
|
84
|
+
<p className="text-xs text-muted-foreground mt-2">Slow (4s)</p>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
),
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export const WithoutAsteroids: Story = {
|
|
91
|
+
args: {
|
|
92
|
+
size: 'lg',
|
|
93
|
+
showAsteroids: false,
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export const CustomColors: Story = {
|
|
98
|
+
render: () => (
|
|
99
|
+
<div className="flex items-center gap-8">
|
|
100
|
+
<div className="text-center">
|
|
101
|
+
<WakaSpinner size="lg" rocketColor="text-blue-500" asteroidColor="text-blue-300" />
|
|
102
|
+
<p className="text-xs text-muted-foreground mt-2">Blue</p>
|
|
103
|
+
</div>
|
|
104
|
+
<div className="text-center">
|
|
105
|
+
<WakaSpinner size="lg" rocketColor="text-green-500" asteroidColor="text-green-300" />
|
|
106
|
+
<p className="text-xs text-muted-foreground mt-2">Green</p>
|
|
107
|
+
</div>
|
|
108
|
+
<div className="text-center">
|
|
109
|
+
<WakaSpinner size="lg" rocketColor="text-purple-500" asteroidColor="text-purple-300" />
|
|
110
|
+
<p className="text-xs text-muted-foreground mt-2">Purple</p>
|
|
111
|
+
</div>
|
|
112
|
+
<div className="text-center">
|
|
113
|
+
<WakaSpinner size="lg" rocketColor="text-orange-500" asteroidColor="text-orange-300" />
|
|
114
|
+
<p className="text-xs text-muted-foreground mt-2">Orange</p>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
),
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export const LoadingOverlay: Story = {
|
|
121
|
+
render: () => (
|
|
122
|
+
<div className="relative w-[400px] h-[300px] border rounded-lg overflow-hidden">
|
|
123
|
+
<div className="absolute inset-0 flex items-center justify-center bg-background/80 backdrop-blur-sm">
|
|
124
|
+
<div className="text-center">
|
|
125
|
+
<WakaSpinner size="lg" />
|
|
126
|
+
<p className="mt-4 text-sm text-muted-foreground">Loading content...</p>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
<div className="p-4 opacity-30">
|
|
130
|
+
<h3 className="font-semibold">Card Title</h3>
|
|
131
|
+
<p className="text-sm text-muted-foreground">
|
|
132
|
+
This content is loading. The spinner displays while data is being fetched.
|
|
133
|
+
</p>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
),
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export const InButton: Story = {
|
|
140
|
+
render: () => (
|
|
141
|
+
<button className="inline-flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-md">
|
|
142
|
+
<WakaSpinner size="sm" rocketColor="text-primary-foreground" showAsteroids={false} />
|
|
143
|
+
<span>Processing...</span>
|
|
144
|
+
</button>
|
|
145
|
+
),
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export const FullPageLoader: Story = {
|
|
149
|
+
render: () => (
|
|
150
|
+
<div className="w-[600px] h-[400px] flex flex-col items-center justify-center bg-gradient-to-b from-background to-muted/30 rounded-lg">
|
|
151
|
+
<WakaSpinner size="xl" />
|
|
152
|
+
<h2 className="mt-6 text-lg font-semibold">Launching your experience</h2>
|
|
153
|
+
<p className="mt-2 text-sm text-muted-foreground">Please wait while we prepare everything...</p>
|
|
154
|
+
</div>
|
|
155
|
+
),
|
|
156
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import { WakaStat, WakaStatGroup } from './index'
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import { Users, DollarSign, ShoppingCart, TrendingUp, Activity, Package, Eye, Download } from 'lucide-react'
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof WakaStat> = {
|
|
7
|
+
title: 'Components/Display/WakaStat',
|
|
8
|
+
component: WakaStat,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: 'centered',
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component: 'A statistic display component with trends, icons, and multiple visual variants.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
tags: ['autodocs'],
|
|
18
|
+
argTypes: {
|
|
19
|
+
variant: {
|
|
20
|
+
control: 'select',
|
|
21
|
+
options: ['default', 'card', 'minimal', 'gradient'],
|
|
22
|
+
description: 'Visual variant',
|
|
23
|
+
},
|
|
24
|
+
size: {
|
|
25
|
+
control: 'select',
|
|
26
|
+
options: ['sm', 'md', 'lg'],
|
|
27
|
+
description: 'Size of the component',
|
|
28
|
+
},
|
|
29
|
+
color: {
|
|
30
|
+
control: 'select',
|
|
31
|
+
options: ['default', 'primary', 'success', 'warning', 'destructive', 'blue', 'purple'],
|
|
32
|
+
description: 'Accent color',
|
|
33
|
+
},
|
|
34
|
+
trend: {
|
|
35
|
+
control: 'select',
|
|
36
|
+
options: ['up', 'down', 'neutral'],
|
|
37
|
+
description: 'Trend direction',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default meta
|
|
43
|
+
type Story = StoryObj<typeof WakaStat>
|
|
44
|
+
|
|
45
|
+
export const Default: Story = {
|
|
46
|
+
args: {
|
|
47
|
+
label: 'Total Revenue',
|
|
48
|
+
value: '$45,231.89',
|
|
49
|
+
description: 'Monthly revenue from all sources',
|
|
50
|
+
trend: 'up',
|
|
51
|
+
trendValue: '+20.1%',
|
|
52
|
+
trendText: 'from last month',
|
|
53
|
+
icon: <DollarSign className="h-5 w-5" />,
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const Variants: Story = {
|
|
58
|
+
render: () => (
|
|
59
|
+
<div className="space-y-6 w-[600px]">
|
|
60
|
+
<div>
|
|
61
|
+
<p className="text-sm text-muted-foreground mb-2">Default</p>
|
|
62
|
+
<WakaStat
|
|
63
|
+
label="Total Users"
|
|
64
|
+
value="2,350"
|
|
65
|
+
trend="up"
|
|
66
|
+
trendValue="+12%"
|
|
67
|
+
icon={<Users className="h-5 w-5" />}
|
|
68
|
+
variant="default"
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
<div>
|
|
72
|
+
<p className="text-sm text-muted-foreground mb-2">Card</p>
|
|
73
|
+
<WakaStat
|
|
74
|
+
label="Total Users"
|
|
75
|
+
value="2,350"
|
|
76
|
+
trend="up"
|
|
77
|
+
trendValue="+12%"
|
|
78
|
+
icon={<Users className="h-5 w-5" />}
|
|
79
|
+
variant="card"
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
<div>
|
|
83
|
+
<p className="text-sm text-muted-foreground mb-2">Minimal</p>
|
|
84
|
+
<WakaStat
|
|
85
|
+
label="Total Users"
|
|
86
|
+
value="2,350"
|
|
87
|
+
trend="up"
|
|
88
|
+
trendValue="+12%"
|
|
89
|
+
variant="minimal"
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
<div>
|
|
93
|
+
<p className="text-sm text-muted-foreground mb-2">Gradient</p>
|
|
94
|
+
<WakaStat
|
|
95
|
+
label="Total Users"
|
|
96
|
+
value="2,350"
|
|
97
|
+
trend="up"
|
|
98
|
+
trendValue="+12%"
|
|
99
|
+
icon={<Users className="h-5 w-5" />}
|
|
100
|
+
variant="gradient"
|
|
101
|
+
color="primary"
|
|
102
|
+
/>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
),
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export const Colors: Story = {
|
|
109
|
+
render: () => (
|
|
110
|
+
<div className="grid grid-cols-2 gap-4 w-[600px]">
|
|
111
|
+
{(['default', 'primary', 'success', 'warning', 'destructive', 'blue', 'purple'] as const).map((color) => (
|
|
112
|
+
<WakaStat
|
|
113
|
+
key={color}
|
|
114
|
+
label={color.charAt(0).toUpperCase() + color.slice(1)}
|
|
115
|
+
value="1,234"
|
|
116
|
+
icon={<Activity className="h-5 w-5" />}
|
|
117
|
+
variant="card"
|
|
118
|
+
color={color}
|
|
119
|
+
/>
|
|
120
|
+
))}
|
|
121
|
+
</div>
|
|
122
|
+
),
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export const GradientColors: Story = {
|
|
126
|
+
render: () => (
|
|
127
|
+
<div className="grid grid-cols-2 gap-4 w-[600px]">
|
|
128
|
+
{(['primary', 'success', 'warning', 'destructive', 'blue', 'purple'] as const).map((color) => (
|
|
129
|
+
<WakaStat
|
|
130
|
+
key={color}
|
|
131
|
+
label={color.charAt(0).toUpperCase() + color.slice(1)}
|
|
132
|
+
value="1,234"
|
|
133
|
+
icon={<Activity className="h-5 w-5" />}
|
|
134
|
+
variant="gradient"
|
|
135
|
+
color={color}
|
|
136
|
+
/>
|
|
137
|
+
))}
|
|
138
|
+
</div>
|
|
139
|
+
),
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export const Sizes: Story = {
|
|
143
|
+
render: () => (
|
|
144
|
+
<div className="space-y-6 w-[400px]">
|
|
145
|
+
<WakaStat
|
|
146
|
+
label="Small"
|
|
147
|
+
value="$1,234"
|
|
148
|
+
trend="up"
|
|
149
|
+
trendValue="+5%"
|
|
150
|
+
icon={<DollarSign className="h-4 w-4" />}
|
|
151
|
+
variant="card"
|
|
152
|
+
size="sm"
|
|
153
|
+
/>
|
|
154
|
+
<WakaStat
|
|
155
|
+
label="Medium (Default)"
|
|
156
|
+
value="$12,345"
|
|
157
|
+
trend="up"
|
|
158
|
+
trendValue="+10%"
|
|
159
|
+
icon={<DollarSign className="h-5 w-5" />}
|
|
160
|
+
variant="card"
|
|
161
|
+
size="md"
|
|
162
|
+
/>
|
|
163
|
+
<WakaStat
|
|
164
|
+
label="Large"
|
|
165
|
+
value="$123,456"
|
|
166
|
+
trend="up"
|
|
167
|
+
trendValue="+15%"
|
|
168
|
+
icon={<DollarSign className="h-6 w-6" />}
|
|
169
|
+
variant="card"
|
|
170
|
+
size="lg"
|
|
171
|
+
/>
|
|
172
|
+
</div>
|
|
173
|
+
),
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export const Trends: Story = {
|
|
177
|
+
render: () => (
|
|
178
|
+
<div className="grid grid-cols-3 gap-4 w-[600px]">
|
|
179
|
+
<WakaStat
|
|
180
|
+
label="Up Trend"
|
|
181
|
+
value="$45,231"
|
|
182
|
+
trend="up"
|
|
183
|
+
trendValue="+20.1%"
|
|
184
|
+
trendText="from last month"
|
|
185
|
+
variant="card"
|
|
186
|
+
/>
|
|
187
|
+
<WakaStat
|
|
188
|
+
label="Down Trend"
|
|
189
|
+
value="$32,456"
|
|
190
|
+
trend="down"
|
|
191
|
+
trendValue="-8.2%"
|
|
192
|
+
trendText="from last month"
|
|
193
|
+
variant="card"
|
|
194
|
+
/>
|
|
195
|
+
<WakaStat
|
|
196
|
+
label="Neutral"
|
|
197
|
+
value="$28,000"
|
|
198
|
+
trend="neutral"
|
|
199
|
+
trendValue="0%"
|
|
200
|
+
trendText="no change"
|
|
201
|
+
variant="card"
|
|
202
|
+
/>
|
|
203
|
+
</div>
|
|
204
|
+
),
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export const InvertedTrend: Story = {
|
|
208
|
+
render: () => (
|
|
209
|
+
<div className="grid grid-cols-2 gap-4 w-[500px]">
|
|
210
|
+
<WakaStat
|
|
211
|
+
label="Churn Rate"
|
|
212
|
+
value="3.2%"
|
|
213
|
+
description="Down is good"
|
|
214
|
+
trend="down"
|
|
215
|
+
trendValue="-1.5%"
|
|
216
|
+
invertTrend
|
|
217
|
+
variant="card"
|
|
218
|
+
/>
|
|
219
|
+
<WakaStat
|
|
220
|
+
label="Bug Count"
|
|
221
|
+
value="23"
|
|
222
|
+
description="Down is good"
|
|
223
|
+
trend="down"
|
|
224
|
+
trendValue="-15"
|
|
225
|
+
invertTrend
|
|
226
|
+
variant="card"
|
|
227
|
+
/>
|
|
228
|
+
</div>
|
|
229
|
+
),
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export const Loading: Story = {
|
|
233
|
+
render: () => (
|
|
234
|
+
<div className="grid grid-cols-2 gap-4 w-[500px]">
|
|
235
|
+
<WakaStat label="Loading" value="" loading variant="card" size="sm" />
|
|
236
|
+
<WakaStat label="Loading" value="" loading variant="card" size="md" />
|
|
237
|
+
<WakaStat label="Loading" value="" loading variant="card" size="lg" />
|
|
238
|
+
<WakaStat label="Loading" value="" loading variant="gradient" color="primary" />
|
|
239
|
+
</div>
|
|
240
|
+
),
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export const StatGroup: Story = {
|
|
244
|
+
render: () => (
|
|
245
|
+
<WakaStatGroup layout="grid" columns={4} gap="md" className="w-[800px]">
|
|
246
|
+
<WakaStat
|
|
247
|
+
label="Total Revenue"
|
|
248
|
+
value="$45,231.89"
|
|
249
|
+
trend="up"
|
|
250
|
+
trendValue="+20.1%"
|
|
251
|
+
icon={<DollarSign className="h-5 w-5" />}
|
|
252
|
+
variant="card"
|
|
253
|
+
color="success"
|
|
254
|
+
/>
|
|
255
|
+
<WakaStat
|
|
256
|
+
label="Subscriptions"
|
|
257
|
+
value="+2,350"
|
|
258
|
+
trend="up"
|
|
259
|
+
trendValue="+180.1%"
|
|
260
|
+
icon={<Users className="h-5 w-5" />}
|
|
261
|
+
variant="card"
|
|
262
|
+
color="blue"
|
|
263
|
+
/>
|
|
264
|
+
<WakaStat
|
|
265
|
+
label="Sales"
|
|
266
|
+
value="+12,234"
|
|
267
|
+
trend="up"
|
|
268
|
+
trendValue="+19%"
|
|
269
|
+
icon={<ShoppingCart className="h-5 w-5" />}
|
|
270
|
+
variant="card"
|
|
271
|
+
color="purple"
|
|
272
|
+
/>
|
|
273
|
+
<WakaStat
|
|
274
|
+
label="Active Now"
|
|
275
|
+
value="+573"
|
|
276
|
+
trend="up"
|
|
277
|
+
trendValue="+201"
|
|
278
|
+
icon={<Activity className="h-5 w-5" />}
|
|
279
|
+
variant="card"
|
|
280
|
+
color="primary"
|
|
281
|
+
/>
|
|
282
|
+
</WakaStatGroup>
|
|
283
|
+
),
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export const Dashboard: Story = {
|
|
287
|
+
render: () => (
|
|
288
|
+
<div className="p-6 bg-muted/30 rounded-lg w-[900px]">
|
|
289
|
+
<h2 className="text-xl font-semibold mb-6">Dashboard Overview</h2>
|
|
290
|
+
<WakaStatGroup layout="grid" columns={4} gap="md">
|
|
291
|
+
<WakaStat
|
|
292
|
+
label="Total Revenue"
|
|
293
|
+
value="$45,231.89"
|
|
294
|
+
description="+20.1% from last month"
|
|
295
|
+
trend="up"
|
|
296
|
+
trendValue="+20.1%"
|
|
297
|
+
icon={<DollarSign className="h-5 w-5" />}
|
|
298
|
+
variant="card"
|
|
299
|
+
color="success"
|
|
300
|
+
/>
|
|
301
|
+
<WakaStat
|
|
302
|
+
label="Active Users"
|
|
303
|
+
value="2,350"
|
|
304
|
+
description="+180 new users this week"
|
|
305
|
+
trend="up"
|
|
306
|
+
trendValue="+12%"
|
|
307
|
+
icon={<Users className="h-5 w-5" />}
|
|
308
|
+
variant="card"
|
|
309
|
+
color="blue"
|
|
310
|
+
/>
|
|
311
|
+
<WakaStat
|
|
312
|
+
label="Page Views"
|
|
313
|
+
value="1.2M"
|
|
314
|
+
description="Total views this month"
|
|
315
|
+
trend="up"
|
|
316
|
+
trendValue="+5.2%"
|
|
317
|
+
icon={<Eye className="h-5 w-5" />}
|
|
318
|
+
variant="card"
|
|
319
|
+
color="purple"
|
|
320
|
+
/>
|
|
321
|
+
<WakaStat
|
|
322
|
+
label="Downloads"
|
|
323
|
+
value="12,543"
|
|
324
|
+
description="App downloads"
|
|
325
|
+
trend="down"
|
|
326
|
+
trendValue="-3.1%"
|
|
327
|
+
icon={<Download className="h-5 w-5" />}
|
|
328
|
+
variant="card"
|
|
329
|
+
color="warning"
|
|
330
|
+
/>
|
|
331
|
+
</WakaStatGroup>
|
|
332
|
+
</div>
|
|
333
|
+
),
|
|
334
|
+
}
|