@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,413 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import {
|
|
3
|
+
WakaLoadingOrbit,
|
|
4
|
+
WakaLoadingOrbitSimple,
|
|
5
|
+
WakaLoadingOrbitSolar,
|
|
6
|
+
WakaLoadingOrbitAtom,
|
|
7
|
+
WakaLoadingOrbitMinimal,
|
|
8
|
+
WakaLoadingOrbitGalaxy,
|
|
9
|
+
orbitPresets,
|
|
10
|
+
useLoadingOrbit,
|
|
11
|
+
} from './index'
|
|
12
|
+
import type { OrbitConfig } from './index'
|
|
13
|
+
import * as React from 'react'
|
|
14
|
+
import { Zap, Loader2, Cloud, Database, Server } from 'lucide-react'
|
|
15
|
+
|
|
16
|
+
const meta: Meta<typeof WakaLoadingOrbit> = {
|
|
17
|
+
title: 'Components/Effects/WakaLoadingOrbit',
|
|
18
|
+
component: WakaLoadingOrbit,
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: 'centered',
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: 'An orbital loading animation with customizable planets, orbit paths, and multiple presets.',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
tags: ['autodocs'],
|
|
28
|
+
argTypes: {
|
|
29
|
+
size: {
|
|
30
|
+
control: 'select',
|
|
31
|
+
options: ['sm', 'md', 'lg', 'xl'],
|
|
32
|
+
description: 'Size of the loading orbit',
|
|
33
|
+
},
|
|
34
|
+
orbitCount: {
|
|
35
|
+
control: { type: 'range', min: 1, max: 6, step: 1 },
|
|
36
|
+
description: 'Number of orbits',
|
|
37
|
+
},
|
|
38
|
+
showPaths: {
|
|
39
|
+
control: 'boolean',
|
|
40
|
+
description: 'Show orbit paths',
|
|
41
|
+
},
|
|
42
|
+
paused: {
|
|
43
|
+
control: 'boolean',
|
|
44
|
+
description: 'Pause the animation',
|
|
45
|
+
},
|
|
46
|
+
centerScale: {
|
|
47
|
+
control: { type: 'range', min: 0.5, max: 2, step: 0.1 },
|
|
48
|
+
description: 'Center dot scale',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default meta
|
|
54
|
+
type Story = StoryObj<typeof WakaLoadingOrbit>
|
|
55
|
+
|
|
56
|
+
export const Default: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
size: 'md',
|
|
59
|
+
},
|
|
60
|
+
render: (args) => <WakaLoadingOrbit {...args} />,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const Sizes: Story = {
|
|
64
|
+
render: () => (
|
|
65
|
+
<div className="flex items-center gap-8">
|
|
66
|
+
<div className="text-center">
|
|
67
|
+
<WakaLoadingOrbit size="sm" />
|
|
68
|
+
<p className="text-xs text-muted-foreground mt-2">Small</p>
|
|
69
|
+
</div>
|
|
70
|
+
<div className="text-center">
|
|
71
|
+
<WakaLoadingOrbit size="md" />
|
|
72
|
+
<p className="text-xs text-muted-foreground mt-2">Medium</p>
|
|
73
|
+
</div>
|
|
74
|
+
<div className="text-center">
|
|
75
|
+
<WakaLoadingOrbit size="lg" />
|
|
76
|
+
<p className="text-xs text-muted-foreground mt-2">Large</p>
|
|
77
|
+
</div>
|
|
78
|
+
<div className="text-center">
|
|
79
|
+
<WakaLoadingOrbit size="xl" />
|
|
80
|
+
<p className="text-xs text-muted-foreground mt-2">Extra Large</p>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
),
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export const Presets: Story = {
|
|
87
|
+
render: () => (
|
|
88
|
+
<div className="flex flex-wrap gap-12 justify-center">
|
|
89
|
+
<div className="text-center">
|
|
90
|
+
<WakaLoadingOrbitSimple size="lg" />
|
|
91
|
+
<p className="text-sm text-muted-foreground mt-4">Simple</p>
|
|
92
|
+
</div>
|
|
93
|
+
<div className="text-center">
|
|
94
|
+
<WakaLoadingOrbitSolar size="lg" />
|
|
95
|
+
<p className="text-sm text-muted-foreground mt-4">Solar</p>
|
|
96
|
+
</div>
|
|
97
|
+
<div className="text-center">
|
|
98
|
+
<WakaLoadingOrbitAtom size="lg" />
|
|
99
|
+
<p className="text-sm text-muted-foreground mt-4">Atom</p>
|
|
100
|
+
</div>
|
|
101
|
+
<div className="text-center">
|
|
102
|
+
<WakaLoadingOrbitMinimal size="lg" />
|
|
103
|
+
<p className="text-sm text-muted-foreground mt-4">Minimal</p>
|
|
104
|
+
</div>
|
|
105
|
+
<div className="text-center">
|
|
106
|
+
<WakaLoadingOrbitGalaxy size="lg" />
|
|
107
|
+
<p className="text-sm text-muted-foreground mt-4">Galaxy</p>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
),
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export const OrbitCounts: Story = {
|
|
114
|
+
render: () => (
|
|
115
|
+
<div className="flex items-center gap-8">
|
|
116
|
+
<div className="text-center">
|
|
117
|
+
<WakaLoadingOrbit size="lg" orbitCount={1} />
|
|
118
|
+
<p className="text-xs text-muted-foreground mt-2">1 orbit</p>
|
|
119
|
+
</div>
|
|
120
|
+
<div className="text-center">
|
|
121
|
+
<WakaLoadingOrbit size="lg" orbitCount={2} />
|
|
122
|
+
<p className="text-xs text-muted-foreground mt-2">2 orbits</p>
|
|
123
|
+
</div>
|
|
124
|
+
<div className="text-center">
|
|
125
|
+
<WakaLoadingOrbit size="lg" orbitCount={3} />
|
|
126
|
+
<p className="text-xs text-muted-foreground mt-2">3 orbits</p>
|
|
127
|
+
</div>
|
|
128
|
+
<div className="text-center">
|
|
129
|
+
<WakaLoadingOrbit size="lg" orbitCount={5} />
|
|
130
|
+
<p className="text-xs text-muted-foreground mt-2">5 orbits</p>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
),
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export const WithoutPaths: Story = {
|
|
137
|
+
render: () => (
|
|
138
|
+
<div className="flex gap-8">
|
|
139
|
+
<div className="text-center">
|
|
140
|
+
<WakaLoadingOrbit size="lg" showPaths />
|
|
141
|
+
<p className="text-xs text-muted-foreground mt-2">With paths</p>
|
|
142
|
+
</div>
|
|
143
|
+
<div className="text-center">
|
|
144
|
+
<WakaLoadingOrbit size="lg" showPaths={false} />
|
|
145
|
+
<p className="text-xs text-muted-foreground mt-2">Without paths</p>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
),
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export const CustomColors: Story = {
|
|
152
|
+
render: () => (
|
|
153
|
+
<div className="flex gap-8">
|
|
154
|
+
<div className="text-center">
|
|
155
|
+
<WakaLoadingOrbit
|
|
156
|
+
size="lg"
|
|
157
|
+
primaryColor="#ef4444"
|
|
158
|
+
secondaryColor="#f97316"
|
|
159
|
+
accentColor="#eab308"
|
|
160
|
+
centerColor="#ef4444"
|
|
161
|
+
/>
|
|
162
|
+
<p className="text-xs text-muted-foreground mt-2">Warm</p>
|
|
163
|
+
</div>
|
|
164
|
+
<div className="text-center">
|
|
165
|
+
<WakaLoadingOrbit
|
|
166
|
+
size="lg"
|
|
167
|
+
primaryColor="#3b82f6"
|
|
168
|
+
secondaryColor="#8b5cf6"
|
|
169
|
+
accentColor="#ec4899"
|
|
170
|
+
centerColor="#3b82f6"
|
|
171
|
+
/>
|
|
172
|
+
<p className="text-xs text-muted-foreground mt-2">Cool</p>
|
|
173
|
+
</div>
|
|
174
|
+
<div className="text-center">
|
|
175
|
+
<WakaLoadingOrbit
|
|
176
|
+
size="lg"
|
|
177
|
+
primaryColor="#22c55e"
|
|
178
|
+
secondaryColor="#14b8a6"
|
|
179
|
+
accentColor="#06b6d4"
|
|
180
|
+
centerColor="#22c55e"
|
|
181
|
+
/>
|
|
182
|
+
<p className="text-xs text-muted-foreground mt-2">Nature</p>
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
),
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export const WithCenterIcon: Story = {
|
|
189
|
+
render: () => (
|
|
190
|
+
<div className="flex gap-8">
|
|
191
|
+
<div className="text-center">
|
|
192
|
+
<WakaLoadingOrbit
|
|
193
|
+
size="lg"
|
|
194
|
+
centerIcon={<Zap className="h-6 w-6 text-primary" />}
|
|
195
|
+
/>
|
|
196
|
+
<p className="text-xs text-muted-foreground mt-2">Zap</p>
|
|
197
|
+
</div>
|
|
198
|
+
<div className="text-center">
|
|
199
|
+
<WakaLoadingOrbit
|
|
200
|
+
size="lg"
|
|
201
|
+
centerIcon={<Cloud className="h-6 w-6 text-primary" />}
|
|
202
|
+
/>
|
|
203
|
+
<p className="text-xs text-muted-foreground mt-2">Cloud</p>
|
|
204
|
+
</div>
|
|
205
|
+
<div className="text-center">
|
|
206
|
+
<WakaLoadingOrbit
|
|
207
|
+
size="lg"
|
|
208
|
+
centerIcon={<Database className="h-6 w-6 text-primary" />}
|
|
209
|
+
/>
|
|
210
|
+
<p className="text-xs text-muted-foreground mt-2">Database</p>
|
|
211
|
+
</div>
|
|
212
|
+
<div className="text-center">
|
|
213
|
+
<WakaLoadingOrbit
|
|
214
|
+
size="lg"
|
|
215
|
+
centerIcon={<Server className="h-6 w-6 text-primary" />}
|
|
216
|
+
/>
|
|
217
|
+
<p className="text-xs text-muted-foreground mt-2">Server</p>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
),
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export const CenterScale: Story = {
|
|
224
|
+
render: () => (
|
|
225
|
+
<div className="flex gap-8">
|
|
226
|
+
<div className="text-center">
|
|
227
|
+
<WakaLoadingOrbit size="lg" centerScale={0.5} />
|
|
228
|
+
<p className="text-xs text-muted-foreground mt-2">0.5x</p>
|
|
229
|
+
</div>
|
|
230
|
+
<div className="text-center">
|
|
231
|
+
<WakaLoadingOrbit size="lg" centerScale={1} />
|
|
232
|
+
<p className="text-xs text-muted-foreground mt-2">1x</p>
|
|
233
|
+
</div>
|
|
234
|
+
<div className="text-center">
|
|
235
|
+
<WakaLoadingOrbit size="lg" centerScale={1.5} />
|
|
236
|
+
<p className="text-xs text-muted-foreground mt-2">1.5x</p>
|
|
237
|
+
</div>
|
|
238
|
+
<div className="text-center">
|
|
239
|
+
<WakaLoadingOrbit size="lg" centerScale={2} />
|
|
240
|
+
<p className="text-xs text-muted-foreground mt-2">2x</p>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
),
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export const Paused: Story = {
|
|
247
|
+
render: () => {
|
|
248
|
+
const [paused, setPaused] = React.useState(false)
|
|
249
|
+
|
|
250
|
+
return (
|
|
251
|
+
<div className="flex flex-col items-center gap-4">
|
|
252
|
+
<WakaLoadingOrbit size="xl" paused={paused} />
|
|
253
|
+
<button
|
|
254
|
+
onClick={() => setPaused(!paused)}
|
|
255
|
+
className="px-4 py-2 text-sm border rounded-md hover:bg-muted"
|
|
256
|
+
>
|
|
257
|
+
{paused ? 'Resume' : 'Pause'}
|
|
258
|
+
</button>
|
|
259
|
+
</div>
|
|
260
|
+
)
|
|
261
|
+
},
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export const CustomOrbits: Story = {
|
|
265
|
+
render: () => {
|
|
266
|
+
const customOrbits: OrbitConfig[] = [
|
|
267
|
+
{
|
|
268
|
+
radius: 0.3,
|
|
269
|
+
duration: 1.5,
|
|
270
|
+
planetSize: 12,
|
|
271
|
+
color: '#ef4444',
|
|
272
|
+
direction: 'clockwise',
|
|
273
|
+
showPath: true,
|
|
274
|
+
pathOpacity: 0.3,
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
radius: 0.5,
|
|
278
|
+
duration: 2.5,
|
|
279
|
+
planetSize: 8,
|
|
280
|
+
color: '#3b82f6',
|
|
281
|
+
direction: 'counterclockwise',
|
|
282
|
+
startAngle: 90,
|
|
283
|
+
showPath: true,
|
|
284
|
+
pathOpacity: 0.2,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
radius: 0.75,
|
|
288
|
+
duration: 4,
|
|
289
|
+
planetSize: 6,
|
|
290
|
+
color: '#22c55e',
|
|
291
|
+
direction: 'clockwise',
|
|
292
|
+
startAngle: 180,
|
|
293
|
+
showPath: true,
|
|
294
|
+
pathOpacity: 0.1,
|
|
295
|
+
},
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
return <WakaLoadingOrbit size="xl" orbits={customOrbits} />
|
|
299
|
+
},
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export const WithHook: Story = {
|
|
303
|
+
render: () => {
|
|
304
|
+
const { orbits } = useLoadingOrbit({
|
|
305
|
+
count: 4,
|
|
306
|
+
minRadius: 0.2,
|
|
307
|
+
maxRadius: 0.85,
|
|
308
|
+
minDuration: 1,
|
|
309
|
+
maxDuration: 5,
|
|
310
|
+
colors: ['#f97316', '#eab308', '#22c55e', '#06b6d4'],
|
|
311
|
+
showPaths: true,
|
|
312
|
+
})
|
|
313
|
+
|
|
314
|
+
return (
|
|
315
|
+
<div className="space-y-4 text-center">
|
|
316
|
+
<WakaLoadingOrbit size="xl" orbits={orbits} centerColor="#f97316" />
|
|
317
|
+
<p className="text-sm text-muted-foreground">Custom orbits via hook</p>
|
|
318
|
+
</div>
|
|
319
|
+
)
|
|
320
|
+
},
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export const LoadingCard: Story = {
|
|
324
|
+
render: () => (
|
|
325
|
+
<div className="w-[300px] p-8 border rounded-lg bg-card text-center">
|
|
326
|
+
<WakaLoadingOrbit size="lg" />
|
|
327
|
+
<p className="mt-4 text-muted-foreground">Loading data...</p>
|
|
328
|
+
</div>
|
|
329
|
+
),
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export const FullPageLoader: Story = {
|
|
333
|
+
render: () => (
|
|
334
|
+
<div className="w-[500px] h-[300px] flex flex-col items-center justify-center border rounded-lg bg-gradient-to-b from-background to-muted/20">
|
|
335
|
+
<WakaLoadingOrbitSolar size="xl" />
|
|
336
|
+
<p className="mt-6 text-lg font-medium">Initializing System</p>
|
|
337
|
+
<p className="text-sm text-muted-foreground">Please wait...</p>
|
|
338
|
+
</div>
|
|
339
|
+
),
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export const ButtonLoading: Story = {
|
|
343
|
+
render: () => {
|
|
344
|
+
const [loading, setLoading] = React.useState(false)
|
|
345
|
+
|
|
346
|
+
const handleClick = () => {
|
|
347
|
+
setLoading(true)
|
|
348
|
+
setTimeout(() => setLoading(false), 3000)
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return (
|
|
352
|
+
<button
|
|
353
|
+
onClick={handleClick}
|
|
354
|
+
disabled={loading}
|
|
355
|
+
className="relative px-6 py-3 bg-primary text-primary-foreground rounded-lg font-medium disabled:opacity-70"
|
|
356
|
+
>
|
|
357
|
+
{loading ? (
|
|
358
|
+
<span className="flex items-center gap-3">
|
|
359
|
+
<WakaLoadingOrbitMinimal size="sm" />
|
|
360
|
+
Processing...
|
|
361
|
+
</span>
|
|
362
|
+
) : (
|
|
363
|
+
'Click to Load'
|
|
364
|
+
)}
|
|
365
|
+
</button>
|
|
366
|
+
)
|
|
367
|
+
},
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
export const DarkBackground: Story = {
|
|
371
|
+
render: () => (
|
|
372
|
+
<div className="p-12 rounded-xl bg-slate-900">
|
|
373
|
+
<div className="flex gap-8">
|
|
374
|
+
<WakaLoadingOrbit
|
|
375
|
+
size="lg"
|
|
376
|
+
primaryColor="#60a5fa"
|
|
377
|
+
secondaryColor="#a78bfa"
|
|
378
|
+
accentColor="#f472b6"
|
|
379
|
+
centerColor="#60a5fa"
|
|
380
|
+
/>
|
|
381
|
+
<WakaLoadingOrbitAtom
|
|
382
|
+
size="lg"
|
|
383
|
+
/>
|
|
384
|
+
<WakaLoadingOrbitGalaxy
|
|
385
|
+
size="lg"
|
|
386
|
+
/>
|
|
387
|
+
</div>
|
|
388
|
+
</div>
|
|
389
|
+
),
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export const CompareWithSpinner: Story = {
|
|
393
|
+
render: () => (
|
|
394
|
+
<div className="flex gap-12 items-center">
|
|
395
|
+
<div className="text-center">
|
|
396
|
+
<Loader2 className="h-16 w-16 animate-spin text-primary mx-auto" />
|
|
397
|
+
<p className="text-sm text-muted-foreground mt-4">Standard Spinner</p>
|
|
398
|
+
</div>
|
|
399
|
+
<div className="text-center">
|
|
400
|
+
<WakaLoadingOrbitMinimal size="md" />
|
|
401
|
+
<p className="text-sm text-muted-foreground mt-4">Minimal Orbit</p>
|
|
402
|
+
</div>
|
|
403
|
+
<div className="text-center">
|
|
404
|
+
<WakaLoadingOrbit size="md" />
|
|
405
|
+
<p className="text-sm text-muted-foreground mt-4">Default Orbit</p>
|
|
406
|
+
</div>
|
|
407
|
+
<div className="text-center">
|
|
408
|
+
<WakaLoadingOrbitSolar size="md" />
|
|
409
|
+
<p className="text-sm text-muted-foreground mt-4">Solar Orbit</p>
|
|
410
|
+
</div>
|
|
411
|
+
</div>
|
|
412
|
+
),
|
|
413
|
+
}
|