@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,449 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import {
|
|
3
|
+
WakaLanding,
|
|
4
|
+
defaultLandingNavItems,
|
|
5
|
+
defaultLandingFeatures,
|
|
6
|
+
defaultLandingTestimonials,
|
|
7
|
+
defaultLandingHero,
|
|
8
|
+
defaultLandingCTA,
|
|
9
|
+
} from './index'
|
|
10
|
+
import type { LandingNavItem, LandingFeature, LandingTestimonial, LandingHeroProps, LandingCTA } from './index'
|
|
11
|
+
import * as React from 'react'
|
|
12
|
+
import { Zap, Shield, Users, Globe, Rocket, Heart, Star, Code, Cloud, Lock } from 'lucide-react'
|
|
13
|
+
|
|
14
|
+
const MockLink = ({ href, children, ...props }: any) => (
|
|
15
|
+
<a href={href} {...props} onClick={(e) => e.preventDefault()}>
|
|
16
|
+
{children}
|
|
17
|
+
</a>
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
const meta: Meta<typeof WakaLanding> = {
|
|
21
|
+
title: 'Blocks/Landing',
|
|
22
|
+
component: WakaLanding,
|
|
23
|
+
parameters: {
|
|
24
|
+
layout: 'fullscreen',
|
|
25
|
+
docs: {
|
|
26
|
+
description: {
|
|
27
|
+
component:
|
|
28
|
+
'A complete landing page component with navbar, hero section, features, testimonials, CTA, and customizable sections.',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
tags: ['autodocs'],
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default meta
|
|
36
|
+
type Story = StoryObj<typeof WakaLanding>
|
|
37
|
+
|
|
38
|
+
export const Default: Story = {
|
|
39
|
+
render: () => (
|
|
40
|
+
<WakaLanding
|
|
41
|
+
brandName="Wakastart"
|
|
42
|
+
navItems={defaultLandingNavItems}
|
|
43
|
+
hero={defaultLandingHero}
|
|
44
|
+
features={defaultLandingFeatures}
|
|
45
|
+
testimonials={defaultLandingTestimonials}
|
|
46
|
+
cta={defaultLandingCTA}
|
|
47
|
+
onLogin={() => console.log('Login clicked')}
|
|
48
|
+
LinkComponent={MockLink}
|
|
49
|
+
/>
|
|
50
|
+
),
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const HeroOnly: Story = {
|
|
54
|
+
render: () => (
|
|
55
|
+
<WakaLanding
|
|
56
|
+
brandName="Simple"
|
|
57
|
+
navItems={defaultLandingNavItems.slice(0, 2)}
|
|
58
|
+
hero={{
|
|
59
|
+
title: 'Build faster,',
|
|
60
|
+
highlightedTitle: 'ship sooner',
|
|
61
|
+
description: 'The ultimate toolkit for modern developers.',
|
|
62
|
+
primaryButtonText: 'Get Started',
|
|
63
|
+
primaryButtonHref: '/signup',
|
|
64
|
+
}}
|
|
65
|
+
LinkComponent={MockLink}
|
|
66
|
+
/>
|
|
67
|
+
),
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export const WithImage: Story = {
|
|
71
|
+
render: () => (
|
|
72
|
+
<WakaLanding
|
|
73
|
+
brandName="ProductX"
|
|
74
|
+
navItems={defaultLandingNavItems}
|
|
75
|
+
hero={{
|
|
76
|
+
badge: 'Now in Beta',
|
|
77
|
+
title: 'Transform your workflow with',
|
|
78
|
+
highlightedTitle: 'AI-powered tools',
|
|
79
|
+
description: 'Automate repetitive tasks and focus on what matters most.',
|
|
80
|
+
primaryButtonText: 'Try for Free',
|
|
81
|
+
secondaryButtonText: 'Watch Demo',
|
|
82
|
+
image: (
|
|
83
|
+
<div className="w-full aspect-video bg-gradient-to-br from-primary/20 to-primary/5 rounded-xl flex items-center justify-center border">
|
|
84
|
+
<div className="text-center">
|
|
85
|
+
<div className="text-6xl mb-2">🚀</div>
|
|
86
|
+
<p className="text-muted-foreground">Product Screenshot</p>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
),
|
|
90
|
+
stats: [
|
|
91
|
+
{ value: '50K+', label: 'Users' },
|
|
92
|
+
{ value: '99.9%', label: 'Uptime' },
|
|
93
|
+
],
|
|
94
|
+
}}
|
|
95
|
+
features={defaultLandingFeatures}
|
|
96
|
+
cta={{
|
|
97
|
+
title: 'Ready to get started?',
|
|
98
|
+
description: 'Join thousands of teams already using our platform.',
|
|
99
|
+
buttonText: 'Start Free Trial',
|
|
100
|
+
variant: 'gradient',
|
|
101
|
+
}}
|
|
102
|
+
LinkComponent={MockLink}
|
|
103
|
+
/>
|
|
104
|
+
),
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export const CustomFeatures: Story = {
|
|
108
|
+
render: () => {
|
|
109
|
+
const customFeatures: LandingFeature[] = [
|
|
110
|
+
{
|
|
111
|
+
id: '1',
|
|
112
|
+
icon: <Code className="h-6 w-6" />,
|
|
113
|
+
title: 'Developer First',
|
|
114
|
+
description: 'Built by developers, for developers. Clean APIs and excellent documentation.',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: '2',
|
|
118
|
+
icon: <Cloud className="h-6 w-6" />,
|
|
119
|
+
title: 'Cloud Native',
|
|
120
|
+
description: 'Deploy anywhere with our cloud-native architecture and auto-scaling.',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: '3',
|
|
124
|
+
icon: <Lock className="h-6 w-6" />,
|
|
125
|
+
title: 'Enterprise Security',
|
|
126
|
+
description: 'SOC 2 compliant with end-to-end encryption and SSO support.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: '4',
|
|
130
|
+
icon: <Rocket className="h-6 w-6" />,
|
|
131
|
+
title: 'Lightning Fast',
|
|
132
|
+
description: 'Optimized for speed with global CDN and edge computing.',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: '5',
|
|
136
|
+
icon: <Heart className="h-6 w-6" />,
|
|
137
|
+
title: 'Great Support',
|
|
138
|
+
description: '24/7 support from our team of experts. Average response time under 1 hour.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: '6',
|
|
142
|
+
icon: <Star className="h-6 w-6" />,
|
|
143
|
+
title: 'Loved by Teams',
|
|
144
|
+
description: 'Rated 4.9/5 by over 10,000 users worldwide.',
|
|
145
|
+
},
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
return (
|
|
149
|
+
<WakaLanding
|
|
150
|
+
brandName="DevTools"
|
|
151
|
+
navItems={defaultLandingNavItems}
|
|
152
|
+
hero={{
|
|
153
|
+
title: 'The toolkit that',
|
|
154
|
+
highlightedTitle: 'developers love',
|
|
155
|
+
description: 'Everything you need to build, deploy, and scale your applications.',
|
|
156
|
+
primaryButtonText: 'Start Building',
|
|
157
|
+
}}
|
|
158
|
+
features={customFeatures}
|
|
159
|
+
featuresTitle="Why choose us?"
|
|
160
|
+
featuresDescription="We provide everything you need to succeed."
|
|
161
|
+
LinkComponent={MockLink}
|
|
162
|
+
/>
|
|
163
|
+
)
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export const WithTestimonials: Story = {
|
|
168
|
+
render: () => {
|
|
169
|
+
const testimonials: LandingTestimonial[] = [
|
|
170
|
+
{
|
|
171
|
+
id: '1',
|
|
172
|
+
content: "This product has completely transformed how our team works. We've saved countless hours.",
|
|
173
|
+
author: 'Sarah Chen',
|
|
174
|
+
role: 'Engineering Manager',
|
|
175
|
+
company: 'TechCorp',
|
|
176
|
+
rating: 5,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: '2',
|
|
180
|
+
content: 'The best investment we made this year. The ROI was visible within the first month.',
|
|
181
|
+
author: 'Michael Johnson',
|
|
182
|
+
role: 'CTO',
|
|
183
|
+
company: 'StartupXYZ',
|
|
184
|
+
rating: 5,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: '3',
|
|
188
|
+
content: "Incredible support team and an amazing product. Couldn't ask for more.",
|
|
189
|
+
author: 'Emma Williams',
|
|
190
|
+
role: 'Product Lead',
|
|
191
|
+
company: 'DesignCo',
|
|
192
|
+
rating: 5,
|
|
193
|
+
},
|
|
194
|
+
]
|
|
195
|
+
|
|
196
|
+
return (
|
|
197
|
+
<WakaLanding
|
|
198
|
+
brandName="TestimonialDemo"
|
|
199
|
+
navItems={defaultLandingNavItems.slice(0, 3)}
|
|
200
|
+
hero={{
|
|
201
|
+
title: 'Trusted by',
|
|
202
|
+
highlightedTitle: 'thousands',
|
|
203
|
+
description: "Don't just take our word for it - see what our customers say.",
|
|
204
|
+
primaryButtonText: 'Join Them',
|
|
205
|
+
}}
|
|
206
|
+
testimonials={testimonials}
|
|
207
|
+
testimonialsTitle="What our customers say"
|
|
208
|
+
cta={{
|
|
209
|
+
title: 'Join our community',
|
|
210
|
+
buttonText: 'Get Started',
|
|
211
|
+
variant: 'dark',
|
|
212
|
+
}}
|
|
213
|
+
LinkComponent={MockLink}
|
|
214
|
+
/>
|
|
215
|
+
)
|
|
216
|
+
},
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export const CTAVariants: Story = {
|
|
220
|
+
render: () => (
|
|
221
|
+
<div className="space-y-0">
|
|
222
|
+
<WakaLanding
|
|
223
|
+
brandName="CTADemo"
|
|
224
|
+
hero={{
|
|
225
|
+
title: 'CTA Variants',
|
|
226
|
+
highlightedTitle: 'Demo',
|
|
227
|
+
description: 'Scroll down to see different CTA section variants.',
|
|
228
|
+
primaryButtonText: 'Scroll Down',
|
|
229
|
+
}}
|
|
230
|
+
cta={{
|
|
231
|
+
title: 'Default Variant',
|
|
232
|
+
description: 'This is the default CTA style.',
|
|
233
|
+
buttonText: 'Get Started',
|
|
234
|
+
secondaryButtonText: 'Learn More',
|
|
235
|
+
variant: 'default',
|
|
236
|
+
}}
|
|
237
|
+
LinkComponent={MockLink}
|
|
238
|
+
/>
|
|
239
|
+
<div className="border-t">
|
|
240
|
+
<section className="bg-gradient-to-r from-primary/10 via-primary/5 to-background py-24">
|
|
241
|
+
<div className="container text-center max-w-2xl mx-auto">
|
|
242
|
+
<h2 className="text-3xl font-bold mb-4">Gradient Variant</h2>
|
|
243
|
+
<p className="text-muted-foreground mb-8">This CTA uses a gradient background.</p>
|
|
244
|
+
<button className="px-6 py-3 bg-primary text-primary-foreground rounded-md">
|
|
245
|
+
Get Started →
|
|
246
|
+
</button>
|
|
247
|
+
</div>
|
|
248
|
+
</section>
|
|
249
|
+
</div>
|
|
250
|
+
<div className="border-t">
|
|
251
|
+
<section className="bg-foreground text-background py-24">
|
|
252
|
+
<div className="container text-center max-w-2xl mx-auto">
|
|
253
|
+
<h2 className="text-3xl font-bold mb-4">Dark Variant</h2>
|
|
254
|
+
<p className="text-background/80 mb-8">This CTA uses a dark background.</p>
|
|
255
|
+
<button className="px-6 py-3 bg-background text-foreground rounded-md">
|
|
256
|
+
Get Started →
|
|
257
|
+
</button>
|
|
258
|
+
</div>
|
|
259
|
+
</section>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
),
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export const WithCustomLogo: Story = {
|
|
266
|
+
render: () => (
|
|
267
|
+
<WakaLanding
|
|
268
|
+
logo={
|
|
269
|
+
<div className="h-8 w-8 rounded-lg bg-primary flex items-center justify-center text-primary-foreground font-bold">
|
|
270
|
+
W
|
|
271
|
+
</div>
|
|
272
|
+
}
|
|
273
|
+
brandName="Wakastart"
|
|
274
|
+
navItems={defaultLandingNavItems}
|
|
275
|
+
hero={defaultLandingHero}
|
|
276
|
+
features={defaultLandingFeatures.slice(0, 3)}
|
|
277
|
+
cta={defaultLandingCTA}
|
|
278
|
+
LinkComponent={MockLink}
|
|
279
|
+
/>
|
|
280
|
+
),
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export const MinimalLanding: Story = {
|
|
284
|
+
render: () => (
|
|
285
|
+
<WakaLanding
|
|
286
|
+
brandName="Minimal"
|
|
287
|
+
showLoginButton={false}
|
|
288
|
+
hero={{
|
|
289
|
+
title: 'Simple.',
|
|
290
|
+
highlightedTitle: 'Powerful.',
|
|
291
|
+
description: 'One product. Endless possibilities.',
|
|
292
|
+
primaryButtonText: 'Learn More',
|
|
293
|
+
}}
|
|
294
|
+
LinkComponent={MockLink}
|
|
295
|
+
/>
|
|
296
|
+
),
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export const SaaSLanding: Story = {
|
|
300
|
+
render: () => {
|
|
301
|
+
const saasFeatures: LandingFeature[] = [
|
|
302
|
+
{
|
|
303
|
+
id: '1',
|
|
304
|
+
icon: <Zap className="h-6 w-6" />,
|
|
305
|
+
title: 'Instant Setup',
|
|
306
|
+
description: 'Get started in minutes with our simple onboarding process.',
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: '2',
|
|
310
|
+
icon: <Shield className="h-6 w-6" />,
|
|
311
|
+
title: 'Bank-Level Security',
|
|
312
|
+
description: 'Your data is protected with enterprise-grade encryption.',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
id: '3',
|
|
316
|
+
icon: <Users className="h-6 w-6" />,
|
|
317
|
+
title: 'Team Collaboration',
|
|
318
|
+
description: 'Work together seamlessly with real-time sync and sharing.',
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: '4',
|
|
322
|
+
icon: <Globe className="h-6 w-6" />,
|
|
323
|
+
title: 'Global Scale',
|
|
324
|
+
description: 'Deploy worldwide with our distributed infrastructure.',
|
|
325
|
+
},
|
|
326
|
+
]
|
|
327
|
+
|
|
328
|
+
return (
|
|
329
|
+
<WakaLanding
|
|
330
|
+
logo={
|
|
331
|
+
<div className="flex items-center gap-2">
|
|
332
|
+
<div className="h-8 w-8 rounded bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center text-white font-bold">
|
|
333
|
+
S
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
}
|
|
337
|
+
brandName="SaaSPro"
|
|
338
|
+
navItems={[
|
|
339
|
+
{ label: 'Product', href: '#product' },
|
|
340
|
+
{ label: 'Pricing', href: '#pricing' },
|
|
341
|
+
{ label: 'Docs', href: '#docs' },
|
|
342
|
+
{ label: 'Blog', href: '#blog' },
|
|
343
|
+
]}
|
|
344
|
+
loginButtonText="Sign In"
|
|
345
|
+
loginHref="/login"
|
|
346
|
+
hero={{
|
|
347
|
+
badge: '✨ New: AI-Powered Analytics',
|
|
348
|
+
title: 'The modern platform for',
|
|
349
|
+
highlightedTitle: 'growing businesses',
|
|
350
|
+
description: 'Streamline your operations, automate workflows, and scale with confidence. Join 10,000+ companies already using SaaSPro.',
|
|
351
|
+
primaryButtonText: 'Start Free Trial',
|
|
352
|
+
primaryButtonHref: '/signup',
|
|
353
|
+
secondaryButtonText: 'Book a Demo',
|
|
354
|
+
secondaryButtonHref: '/demo',
|
|
355
|
+
stats: [
|
|
356
|
+
{ value: '10K+', label: 'Companies' },
|
|
357
|
+
{ value: '99.9%', label: 'Uptime' },
|
|
358
|
+
{ value: '24/7', label: 'Support' },
|
|
359
|
+
{ value: '150+', label: 'Integrations' },
|
|
360
|
+
],
|
|
361
|
+
}}
|
|
362
|
+
features={saasFeatures}
|
|
363
|
+
featuresTitle="Everything you need"
|
|
364
|
+
featuresDescription="Powerful features to help you manage, grow, and scale your business."
|
|
365
|
+
testimonials={[
|
|
366
|
+
{
|
|
367
|
+
id: '1',
|
|
368
|
+
content: "SaaSPro helped us reduce our operational costs by 40% in just 3 months.",
|
|
369
|
+
author: 'David Park',
|
|
370
|
+
role: 'COO',
|
|
371
|
+
company: 'ScaleUp Inc.',
|
|
372
|
+
rating: 5,
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
id: '2',
|
|
376
|
+
content: 'The automation features alone saved our team 20 hours per week.',
|
|
377
|
+
author: 'Lisa Chen',
|
|
378
|
+
role: 'Operations Manager',
|
|
379
|
+
company: 'GrowthCo',
|
|
380
|
+
rating: 5,
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
id: '3',
|
|
384
|
+
content: "Best customer support I've ever experienced. They really care.",
|
|
385
|
+
author: 'James Wilson',
|
|
386
|
+
role: 'Founder',
|
|
387
|
+
company: 'TechStartup',
|
|
388
|
+
rating: 5,
|
|
389
|
+
},
|
|
390
|
+
]}
|
|
391
|
+
cta={{
|
|
392
|
+
title: 'Start your free trial today',
|
|
393
|
+
description: 'No credit card required. Get started in under 5 minutes.',
|
|
394
|
+
buttonText: 'Start Free Trial',
|
|
395
|
+
buttonHref: '/signup',
|
|
396
|
+
secondaryButtonText: 'Talk to Sales',
|
|
397
|
+
variant: 'gradient',
|
|
398
|
+
}}
|
|
399
|
+
footer={
|
|
400
|
+
<footer className="border-t py-12 bg-muted/30">
|
|
401
|
+
<div className="container">
|
|
402
|
+
<div className="grid md:grid-cols-4 gap-8">
|
|
403
|
+
<div>
|
|
404
|
+
<h4 className="font-semibold mb-3">Product</h4>
|
|
405
|
+
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
406
|
+
<li><a href="#">Features</a></li>
|
|
407
|
+
<li><a href="#">Pricing</a></li>
|
|
408
|
+
<li><a href="#">Integrations</a></li>
|
|
409
|
+
<li><a href="#">Changelog</a></li>
|
|
410
|
+
</ul>
|
|
411
|
+
</div>
|
|
412
|
+
<div>
|
|
413
|
+
<h4 className="font-semibold mb-3">Company</h4>
|
|
414
|
+
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
415
|
+
<li><a href="#">About</a></li>
|
|
416
|
+
<li><a href="#">Blog</a></li>
|
|
417
|
+
<li><a href="#">Careers</a></li>
|
|
418
|
+
<li><a href="#">Contact</a></li>
|
|
419
|
+
</ul>
|
|
420
|
+
</div>
|
|
421
|
+
<div>
|
|
422
|
+
<h4 className="font-semibold mb-3">Resources</h4>
|
|
423
|
+
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
424
|
+
<li><a href="#">Documentation</a></li>
|
|
425
|
+
<li><a href="#">API Reference</a></li>
|
|
426
|
+
<li><a href="#">Community</a></li>
|
|
427
|
+
<li><a href="#">Support</a></li>
|
|
428
|
+
</ul>
|
|
429
|
+
</div>
|
|
430
|
+
<div>
|
|
431
|
+
<h4 className="font-semibold mb-3">Legal</h4>
|
|
432
|
+
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
433
|
+
<li><a href="#">Privacy</a></li>
|
|
434
|
+
<li><a href="#">Terms</a></li>
|
|
435
|
+
<li><a href="#">Security</a></li>
|
|
436
|
+
</ul>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
<div className="mt-8 pt-8 border-t text-center text-sm text-muted-foreground">
|
|
440
|
+
© 2024 SaaSPro Inc. All rights reserved.
|
|
441
|
+
</div>
|
|
442
|
+
</div>
|
|
443
|
+
</footer>
|
|
444
|
+
}
|
|
445
|
+
LinkComponent={MockLink}
|
|
446
|
+
/>
|
|
447
|
+
)
|
|
448
|
+
},
|
|
449
|
+
}
|