@catalystsoftware/ui 1.0.2 → 1.0.5

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.
Files changed (157) hide show
  1. package/data/tailwind.config.js +261 -3821
  2. package/dist/components/catalyst-ui/buttons/burger.tsx +207 -0
  3. package/dist/components/catalyst-ui/core/data-display/timeline.tsx +210 -0
  4. package/dist/components/catalyst-ui/core/feedback/alert.tsx +491 -0
  5. package/dist/components/catalyst-ui/core/feedback/spinner-1.tsx +65 -0
  6. package/dist/components/catalyst-ui/core/feedback/toast.tsx +1857 -0
  7. package/dist/components/catalyst-ui/core/navigation/menu.tsx +164 -0
  8. package/dist/components/catalyst-ui/forms/toggle-class.tsx +176 -0
  9. package/dist/components/catalyst-ui/hooks/use-copy-to-clipboard.tsx +419 -0
  10. package/dist/components/catalyst-ui/hooks/use-counter.tsx +13 -0
  11. package/dist/components/catalyst-ui/hooks/use-event-listener.tsx +23 -0
  12. package/dist/components/catalyst-ui/hooks/use-export-markdown.tsx +47 -0
  13. package/dist/components/catalyst-ui/hooks/use-focus.tsx +17 -0
  14. package/dist/components/catalyst-ui/hooks/use-interval.tsx +23 -0
  15. package/dist/components/catalyst-ui/hooks/use-is-client.tsx +16 -0
  16. package/dist/components/catalyst-ui/hooks/use-media-query.tsx +19 -0
  17. package/dist/components/catalyst-ui/hooks/use-mobile.tsx +19 -0
  18. package/dist/components/catalyst-ui/hooks/use-resize-observer.tsx +81 -0
  19. package/dist/components/catalyst-ui/hooks/use-timeout.tsx +21 -0
  20. package/dist/components/catalyst-ui/hooks/use-timer.tsx +209 -0
  21. package/dist/components/catalyst-ui/hooks/use-toggle.tsx +12 -0
  22. package/dist/components/catalyst-ui/media/image.tsx +13 -0
  23. package/dist/components/catalyst-ui/overlays/dual-sidebar.tsx +4142 -0
  24. package/dist/components/catalyst-ui/overlays/sidebar-original.tsx +726 -0
  25. package/dist/components/catalyst-ui/primitives/accordion.tsx +250 -0
  26. package/dist/components/catalyst-ui/primitives/alert-dialog.tsx +126 -0
  27. package/dist/components/catalyst-ui/primitives/aspect-ratio.tsx +9 -0
  28. package/dist/components/catalyst-ui/primitives/avatar.tsx +296 -0
  29. package/dist/components/catalyst-ui/primitives/badge.tsx +57 -0
  30. package/dist/components/catalyst-ui/primitives/breadcrumb.tsx +101 -0
  31. package/dist/components/catalyst-ui/primitives/button.tsx +265 -0
  32. package/dist/components/catalyst-ui/primitives/calendar-v4.tsx +208 -0
  33. package/dist/components/catalyst-ui/primitives/calendar.tsx +295 -0
  34. package/dist/components/catalyst-ui/primitives/card.tsx +618 -0
  35. package/dist/components/catalyst-ui/primitives/carousel.tsx +238 -0
  36. package/dist/components/catalyst-ui/primitives/chart.tsx +347 -0
  37. package/dist/components/catalyst-ui/primitives/checkbox.tsx +225 -0
  38. package/dist/components/catalyst-ui/primitives/collapsible.tsx +212 -0
  39. package/dist/components/catalyst-ui/primitives/command.tsx +393 -0
  40. package/dist/components/catalyst-ui/primitives/context-menu.tsx +236 -0
  41. package/dist/components/catalyst-ui/primitives/dialog.tsx +471 -0
  42. package/dist/components/catalyst-ui/primitives/drawer.tsx +761 -0
  43. package/dist/components/catalyst-ui/primitives/dropdown-menu.tsx +290 -0
  44. package/dist/components/catalyst-ui/primitives/empty.tsx +104 -0
  45. package/dist/components/catalyst-ui/primitives/field.tsx +244 -0
  46. package/dist/components/catalyst-ui/primitives/hover-card.tsx +124 -0
  47. package/dist/components/catalyst-ui/primitives/input-otp.tsx +76 -0
  48. package/dist/components/catalyst-ui/primitives/input.tsx +64 -0
  49. package/dist/components/catalyst-ui/primitives/item.tsx +196 -0
  50. package/dist/components/catalyst-ui/primitives/kbd.tsx +75 -0
  51. package/dist/components/catalyst-ui/primitives/label.tsx +24 -0
  52. package/dist/components/catalyst-ui/primitives/navigation-menu.tsx +150 -0
  53. package/dist/components/catalyst-ui/primitives/pagination.tsx +198 -0
  54. package/dist/components/catalyst-ui/primitives/popover.tsx +232 -0
  55. package/dist/components/catalyst-ui/primitives/progress.tsx +34 -0
  56. package/dist/components/catalyst-ui/primitives/radio-group.tsx +43 -0
  57. package/dist/components/catalyst-ui/primitives/resizable.tsx +56 -0
  58. package/dist/components/catalyst-ui/primitives/select.tsx +155 -0
  59. package/dist/components/catalyst-ui/primitives/separator.tsx +74 -0
  60. package/dist/components/catalyst-ui/primitives/sheet.tsx +126 -0
  61. package/dist/components/catalyst-ui/primitives/skeleton.tsx +15 -0
  62. package/dist/components/catalyst-ui/primitives/slider.tsx +27 -0
  63. package/dist/components/catalyst-ui/primitives/switch.tsx +187 -0
  64. package/dist/components/catalyst-ui/primitives/tabs.tsx +335 -0
  65. package/dist/components/catalyst-ui/primitives/textarea.tsx +24 -0
  66. package/dist/components/catalyst-ui/primitives/toggle-group.tsx +55 -0
  67. package/dist/components/catalyst-ui/primitives/toggle.tsx +42 -0
  68. package/dist/components/catalyst-ui/primitives/tooltip.tsx +116 -0
  69. package/dist/components/catalyst-ui/utils/basic-auth.tsx +40 -0
  70. package/dist/components/catalyst-ui/utils/context-storage.tsx +19 -0
  71. package/dist/components/catalyst-ui/utils/cors-middleware.tsx +71 -0
  72. package/dist/components/catalyst-ui/utils/deferred-content.tsx +595 -0
  73. package/dist/components/catalyst-ui/utils/honeypot-middleware.tsx +38 -0
  74. package/dist/components/catalyst-ui/utils/incId.tsx +75 -0
  75. package/dist/components/catalyst-ui/utils/jwk-auth.tsx +36 -0
  76. package/dist/components/catalyst-ui/utils/request-id.tsx +14 -0
  77. package/dist/components/catalyst-ui/utils/secure-headers.tsx +37 -0
  78. package/dist/components/catalyst-ui/utils/server-timing.tsx +23 -0
  79. package/dist/components/catalyst-ui/utils/utils.ts +43 -0
  80. package/dist/components/catalyst-ui/utils/with-cookie.tsx +43 -0
  81. package/dist/components/catalyst-ui/x/accordian-x.tsx +428 -0
  82. package/dist/components/catalyst-ui/x/alert-x.tsx +413 -0
  83. package/dist/components/catalyst-ui/x/animated-text-x.tsx +2242 -0
  84. package/dist/components/catalyst-ui/x/avatar-x.tsx +515 -0
  85. package/dist/components/catalyst-ui/x/badge-x.tsx +670 -0
  86. package/dist/components/catalyst-ui/x/button-X.tsx +2857 -0
  87. package/dist/components/catalyst-ui/x/button-group-x.tsx +847 -0
  88. package/dist/components/catalyst-ui/x/calendar-x.tsx +1910 -0
  89. package/dist/components/catalyst-ui/x/card-x.tsx +2597 -0
  90. package/dist/components/catalyst-ui/x/checkbox-x.tsx +656 -0
  91. package/dist/components/catalyst-ui/x/collapsible-x.tsx +1360 -0
  92. package/dist/components/catalyst-ui/x/combobox-x.tsx +911 -0
  93. package/dist/components/catalyst-ui/x/data-table-x.tsx +1753 -0
  94. package/dist/components/catalyst-ui/x/date-picker-x.tsx +648 -0
  95. package/dist/components/catalyst-ui/x/dialog-x.tsx +659 -0
  96. package/dist/components/catalyst-ui/x/dropdown-menu-x.tsx +612 -0
  97. package/dist/components/catalyst-ui/x/hover-card-x.tsx +375 -0
  98. package/dist/components/catalyst-ui/x/icon-x.tsx +840 -0
  99. package/dist/components/catalyst-ui/x/input-mask-x.tsx +981 -0
  100. package/dist/components/catalyst-ui/x/input-otp-x.tsx +659 -0
  101. package/dist/components/catalyst-ui/x/loader-x.tsx +1757 -0
  102. package/dist/components/catalyst-ui/x/pagination-x.tsx +622 -0
  103. package/dist/components/catalyst-ui/x/popover-x.tsx +744 -0
  104. package/dist/components/catalyst-ui/x/radio-group-x.tsx +499 -0
  105. package/dist/components/catalyst-ui/x/select-x.tsx +1127 -0
  106. package/dist/components/catalyst-ui/x/sheet-x.tsx +668 -0
  107. package/dist/components/catalyst-ui/x/switch-x.tsx +681 -0
  108. package/dist/components/catalyst-ui/x/table-x.tsx +574 -0
  109. package/dist/components/catalyst-ui/x/tabs-x.tsx +839 -0
  110. package/dist/components/catalyst-ui/x/textarea-x.tsx +1263 -0
  111. package/dist/components/catalyst-ui/x/tooltip-x.tsx +396 -0
  112. package/dist/components/catalyst-ui/x/tracker-x.tsx +560 -0
  113. package/dist/data/bg-data.tsx +901 -0
  114. package/dist/data/buttons-data.tsx +2327 -0
  115. package/dist/data/charts-data.tsx +102 -0
  116. package/dist/data/chat-data.tsx +83 -0
  117. package/dist/data/code-data.tsx +1040 -0
  118. package/dist/data/comboboxes-data.tsx +1843 -0
  119. package/dist/data/command-data.tsx +1381 -0
  120. package/dist/data/core-data.tsx +15953 -0
  121. package/dist/data/crm-data.tsx +47 -0
  122. package/dist/data/data.tsx +159 -0
  123. package/dist/data/date-and-time-data.tsx +554 -0
  124. package/dist/data/dependencies.tsx +7 -0
  125. package/dist/data/ecommerce-data.tsx +1387 -0
  126. package/dist/data/forms-data.tsx +7890 -0
  127. package/dist/data/hooks-data.tsx +5487 -0
  128. package/dist/data/index.ts +34 -0
  129. package/dist/data/inputs-data.tsx +557 -0
  130. package/dist/data/interactive-data.tsx +5394 -0
  131. package/dist/data/lofi-data.tsx +18295 -0
  132. package/dist/data/marketing-data.tsx +2546 -0
  133. package/dist/data/media-data.tsx +1510 -0
  134. package/dist/data/motion-data.tsx +5801 -0
  135. package/dist/data/overlay-data.tsx +4136 -0
  136. package/dist/data/pdf-data.tsx +124 -0
  137. package/dist/data/pos-data.tsx +213 -0
  138. package/dist/data/postcss.config.js +6 -0
  139. package/dist/data/primitive-data.tsx +5170 -0
  140. package/dist/data/prompt-data.tsx +1226 -0
  141. package/dist/data/requiredLibs.ts +4 -0
  142. package/dist/data/sandbox-data.tsx +1 -0
  143. package/dist/data/sidebars-data.tsx +5421 -0
  144. package/dist/data/stacks-data.tsx +32 -0
  145. package/dist/data/table-data.tsx +706 -0
  146. package/dist/data/tailwind.config.js +270 -0
  147. package/dist/data/tailwind.config.ngin.js +3830 -0
  148. package/dist/data/tailwind.css +431 -0
  149. package/dist/data/tools-data.tsx +6910 -0
  150. package/dist/data/typography-data.tsx +2050 -0
  151. package/dist/data/utils-data.tsx +6500 -0
  152. package/dist/data/x-data.tsx +1171 -0
  153. package/dist/data.tsx +159 -0
  154. package/package.json +1 -1
  155. package/dist/index.d.ts +0 -3
  156. package/dist/index.d.ts.map +0 -1
  157. package/dist/index.js.map +0 -362
@@ -0,0 +1,2546 @@
1
+ export const marketingFeedback = [];
2
+ export const marketingPages = [
3
+ {
4
+ name: "Landing Page",
5
+ value: "landing-page",
6
+ path: "/components/catalyst-ui/marketing/pages/landingPage.tsx",
7
+ files: {
8
+ "Landing Page": "/components/catalyst-ui/marketing/pages/landingPage.tsx",
9
+ },
10
+ premium: true,
11
+ source: null,
12
+ category: "Marketing: Pages",
13
+ tags: ["pages", "marketing"],
14
+ features: ["Responsive", "TypeScript", "Accessible"],
15
+ dependencies: ["lucide-react"],
16
+ usage: "/components/catalyst-ui/marketing/pages/landingPage.tsx",
17
+ usagePath: null,
18
+ desc: null,
19
+ customize: null
20
+ },
21
+ {
22
+ name: "About",
23
+ value: "about",
24
+ path: "/components/catalyst-ui/marketing/pages/aboutPage.tsx",
25
+ files: {
26
+ "About": "/components/catalyst-ui/marketing/pages/aboutPage.tsx",
27
+ },
28
+ premium: true,
29
+ source: null,
30
+ category: "Marketing: Pages",
31
+ tags: ["pages", "marketing"],
32
+ features: ["Responsive", "TypeScript", "Accessible"],
33
+ dependencies: ["lucide-react"],
34
+ usage: null,
35
+ usagePath: "/components/catalyst-ui/marketing/pages/aboutPage.tsx",
36
+ desc: null,
37
+ customize: null
38
+ },
39
+ {
40
+ name: "Pricing Page",
41
+ value: "pricing-page",
42
+ path: "/components/catalyst-ui/marketing/pages/pricing-pages.tsx",
43
+ files: {
44
+ "Pricing Page": "/components/catalyst-ui/marketing/pages/pricing-pages.tsx",
45
+ },
46
+ premium: true,
47
+ source: null,
48
+ category: "Marketing: Pages",
49
+ tags: ["pages", "marketing"],
50
+ features: ["Responsive", "TypeScript", "Accessible"],
51
+ dependencies: ["lucide-react"],
52
+ usage: null,
53
+ usagePath: "/components/catalyst-ui/marketing/pages/pricing-pages.tsx",
54
+ desc: null,
55
+ customize: null
56
+ },
57
+ ];
58
+ export const marketingSections = [
59
+ {
60
+ name: "Animated Testimonials",
61
+ value: "animated-testimonials",
62
+ importPath: "~/components/catalyst-ui/marketing/sections/animated-testimonials",
63
+ multiImport: null,
64
+ basicusage: null,
65
+ path: "/components/catalyst-ui/marketing/sections/animated-testimonials.tsx",
66
+ source: null,
67
+ usagePath: "/components/catalyst-ui/marketing/sections/animated-testimonials.tsx",
68
+ usage: null,
69
+ premium: true,
70
+ category: "Marketing: Sections",
71
+ tags: ["testimonials", "carousel", "animation", "images", "text"],
72
+ features: ["Auto-play", "Image Animations", "Text Reveal", "Responsive"],
73
+ dependencies: ["framer-motion", "lucide-react", "react"],
74
+ props: {
75
+ "AnimatedTestimonials": [
76
+ { name: "testimonials", type: "Testimonial[]", default: "null" },
77
+ { name: "autoplay", type: "boolean", default: "false" },
78
+ { name: "className", type: "string", default: "null" }
79
+ ]
80
+ },
81
+ desc: null,
82
+ status: null,
83
+ lastUpdated: null
84
+ },
85
+ {
86
+ name: "Headers1",
87
+ value: "headers-1",
88
+ path: "/components/catalyst-ui/marketing/sections/headers-1.tsx",
89
+ importPath: "~/components/catalyst-ui/marketing/sections/headers-1/header",
90
+ source: `
91
+ // app/components/header.tsx
92
+
93
+
94
+
95
+
96
+
97
+
98
+ type HeaderLink = {
99
+ name: string;
100
+ href: string;
101
+ subLinks?: HeaderLink[];
102
+ };
103
+
104
+ type HeaderVariant =
105
+ | "simple"
106
+ | "with-search"
107
+ | "with-cta"
108
+ | "with-dropdown"
109
+ | "ecommerce"
110
+ | "dark";
111
+
112
+ type HeaderProps = {
113
+ variant?: HeaderVariant;
114
+ logo?: React.ReactNode;
115
+ navigation?: HeaderLink[];
116
+ cta?: {
117
+ primary: {
118
+ text: string;
119
+ href: string;
120
+ };
121
+ secondary?: {
122
+ text: string;
123
+ href: string;
124
+ };
125
+ };
126
+ search?: {
127
+ placeholder?: string;
128
+ action?: string;
129
+ };
130
+ userNavigation?: {
131
+ name: string;
132
+ href: string;
133
+ icon?: React.ComponentType<{ className?: string }>;
134
+ }[];
135
+ className?: string;
136
+ };
137
+
138
+ const defaultNavigation: HeaderLink[] = [
139
+ { name: "Products", href: "#" },
140
+ { name: "Features", href: "#" },
141
+ { name: "Marketplace", href: "#" },
142
+ { name: "Company", href: "#" },
143
+ ];
144
+
145
+ const defaultUserNavigation = [
146
+ { name: "Your Profile", href: "#", icon: User },
147
+ { name: "Sign in", href: "#", icon: LogIn },
148
+ { name: "Sign out", href: "#", icon: LogOut },
149
+ ];
150
+
151
+ export function Header({
152
+ variant = "simple",
153
+ logo = (
154
+ <div className="flex items-center">
155
+ <span className="text-xl font-bold">YourLogo</span>
156
+ </div>
157
+ ),
158
+ navigation = defaultNavigation,
159
+ cta,
160
+ search,
161
+ userNavigation = defaultUserNavigation,
162
+ className = "",
163
+ }: HeaderProps) {
164
+ const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
165
+
166
+ const renderSimpleHeader = () => (
167
+ <header className="bg-background">
168
+ <nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8">
169
+ <div className="flex lg:flex-1">
170
+ <Link to="/" className="-m-1.5 p-1.5">
171
+ {logo}
172
+ </Link>
173
+ </div>
174
+ <div className="flex lg:hidden">
175
+ <button
176
+ type="button"
177
+ className="-m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-muted-foreground"
178
+ onClick={() => setMobileMenuOpen(true)}
179
+ >
180
+ <span className="sr-only">Open main menu</span>
181
+ <Menu className="h-6 w-6" />
182
+ </button>
183
+ </div>
184
+ <div className="hidden lg:flex lg:gap-x-12">
185
+ {navigation.map((item) => (
186
+ <NavLink
187
+ key={item.name}
188
+ to={item.href}
189
+ className={({ isActive }) =>
190
+ cn(
191
+ "text-sm font-semibold leading-6 text-muted-foreground",
192
+ isActive ? "text-primary" : "hover:text-primary/30"
193
+ )
194
+ }
195
+ >
196
+ {item.name}
197
+ </NavLink>
198
+ ))}
199
+ </div>
200
+ <div className="hidden lg:flex lg:flex-1 lg:justify-end">
201
+ {cta?.primary && (
202
+ <Button asChild variant="default">
203
+ <Link to={cta.primary.href}>
204
+ {cta.primary.text}
205
+ </Link>
206
+ </Button>
207
+ )}
208
+ </div>
209
+ </nav>
210
+
211
+ {/* Mobile menu */}
212
+ {mobileMenuOpen && (
213
+ <div className="lg:hidden">
214
+ <div className="fixed inset-0 z-50" />
215
+ <div className="fixed inset-y-0 right-0 z-50 w-full overflow-y-auto bg-background px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10">
216
+ <div className="flex items-center justify-between">
217
+ <Link to="/" className="-m-1.5 p-1.5">
218
+ {logo}
219
+ </Link>
220
+ <button
221
+ type="button"
222
+ className="-m-2.5 rounded-md p-2.5 text-muted-foreground"
223
+ onClick={() => setMobileMenuOpen(false)}
224
+ >
225
+ <span className="sr-only">Close menu</span>
226
+ <X className="h-6 w-6" />
227
+ </button>
228
+ </div>
229
+ <div className="mt-6 flow-root">
230
+ <div className="-my-6 divide-y divide-gray-500/10">
231
+ <div className="space-y-2 py-6">
232
+ {navigation.map((item) => (
233
+ <NavLink
234
+ key={item.name}
235
+ to={item.href}
236
+ className={({ isActive }) =>
237
+ cn(
238
+ "-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-muted-foreground hover:bg-muted",
239
+ isActive ? "bg-background text-primary" : ""
240
+ )
241
+ }
242
+ onClick={() => setMobileMenuOpen(false)}
243
+ >
244
+ {item.name}
245
+ </NavLink>
246
+ ))}
247
+ </div>
248
+ <div className="py-6">
249
+ {cta?.primary && (
250
+ <Button asChild variant="default" className="w-full">
251
+ <Link to={cta.primary.href}>
252
+ {cta.primary.text}
253
+ </Link>
254
+ </Button>
255
+ )}
256
+ </div>
257
+ </div>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ )}
262
+ </header>
263
+ );
264
+
265
+ const renderWithSearch = () => (
266
+ <header className="bg-background">
267
+ <nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8">
268
+ <div className="flex lg:flex-1">
269
+ <Link to="/" className="-m-1.5 p-1.5">
270
+ {logo}
271
+ </Link>
272
+ </div>
273
+ <div className="hidden lg:flex lg:gap-x-12">
274
+ {navigation.map((item) => (
275
+ <NavLink
276
+ key={item.name}
277
+ to={item.href}
278
+ className={({ isActive }) =>
279
+ cn(
280
+ "text-sm font-semibold leading-6 text-muted-foreground",
281
+ isActive ? "text-primary" : "hover:text-primary/30"
282
+ )
283
+ }
284
+ >
285
+ {item.name}
286
+ </NavLink>
287
+ ))}
288
+ </div>
289
+ <div className="flex flex-1 items-center justify-end gap-x-6">
290
+ <div className="relative flex-1 max-w-md">
291
+ <div className="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
292
+ <Search className="h-5 w-5 text-foreground" />
293
+ </div>
294
+ <input
295
+ type="text"
296
+ className="block w-full rounded-md border-0 py-1.5 pl-10 pr-3 text-muted-foreground ring-1 ring-inset ring-gray-300 placeholder:text-foreground focus:ring-2 focus:ring-inset focus:ring-primary sm:text-sm sm:leading-6"
297
+ placeholder={search?.placeholder || "Search..."}
298
+ />
299
+ </div>
300
+ {cta?.primary && (
301
+ <Button asChild variant="default">
302
+ <Link to={cta.primary.href}>
303
+ {cta.primary.text}
304
+ </Link>
305
+ </Button>
306
+ )}
307
+ </div>
308
+ </nav>
309
+ </header>
310
+ );
311
+
312
+ const renderWithCTA = () => (
313
+ <header className="bg-background">
314
+ <div className="bg-primary px-4 py-2 text-center text-sm font-medium text-foreground">
315
+ <p>
316
+ Get free delivery on orders over $100{' '}
317
+ <Link to="#" className="inline-flex items-center font-semibold underline">
318
+ Shop now <ArrowRight className="ml-1 h-4 w-4" />
319
+ </Link>
320
+ </p>
321
+ </div>
322
+ {renderSimpleHeader()}
323
+ </header>
324
+ );
325
+
326
+ const renderWithDropdown = () => (
327
+ <header className="bg-background">
328
+ <nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8">
329
+ <div className="flex lg:flex-1">
330
+ <Link to="/" className="-m-1.5 p-1.5">
331
+ {logo}
332
+ </Link>
333
+ </div>
334
+ <div className="hidden lg:flex lg:gap-x-12">
335
+ {navigation.map((item) => (
336
+ <div key={item.name} className="relative">
337
+ {item.subLinks ? (
338
+ <div className="group inline-block">
339
+ <button
340
+ type="button"
341
+ className="flex items-center gap-x-1 text-sm font-semibold leading-6 text-muted-foreground hover:text-primary/30"
342
+ >
343
+ {item.name}
344
+ <ChevronDown className="h-4 w-4" />
345
+ </button>
346
+ <div className="absolute left-1/2 z-10 mt-2 w-48 -translate-x-1/2 rounded-md bg-background py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none opacity-0 group-hover:opacity-100 transition-opacity">
347
+ {item.subLinks.map((subItem) => (
348
+ <Link
349
+ key={subItem.name}
350
+ to={subItem.href}
351
+ className="block px-4 py-2 text-sm text-muted-foreground hover:bg-background"
352
+ >
353
+ {subItem.name}
354
+ </Link>
355
+ ))}
356
+ </div>
357
+ </div>
358
+ ) : (
359
+ <NavLink
360
+ to={item.href}
361
+ className={({ isActive }) =>
362
+ cn(
363
+ "text-sm font-semibold leading-6 text-muted-foreground",
364
+ isActive ? "text-primary" : "hover:text-primary/30"
365
+ )
366
+ }
367
+ >
368
+ {item.name}
369
+ </NavLink>
370
+ )}
371
+ </div>
372
+ ))}
373
+ </div>
374
+ <div className="flex flex-1 items-center justify-end gap-x-6">
375
+ {userNavigation.map((item) => (
376
+ <Link
377
+ key={item.name}
378
+ to={item.href}
379
+ className="text-sm font-semibold leading-6 text-muted-foreground hover:text-primary/30"
380
+ >
381
+ {item.icon ? (
382
+ <item.icon className="h-5 w-5" />
383
+ ) : (
384
+ item.name
385
+ )}
386
+ </Link>
387
+ ))}
388
+ {cta?.primary && (
389
+ <Button asChild variant="default">
390
+ <Link to={cta.primary.href}>
391
+ {cta.primary.text}
392
+ </Link>
393
+ </Button>
394
+ )}
395
+ </div>
396
+ </nav>
397
+ </header>
398
+ );
399
+
400
+ const renderEcommerce = () => (
401
+ <header className="bg-background">
402
+ <div className="border-b border-border">
403
+ <div className="mx-auto flex h-10 max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8">
404
+ <div className="hidden lg:flex lg:flex-1 lg:items-center">
405
+ <Phone className="h-5 w-5 text-foreground" />
406
+ <span className="ml-2 text-sm font-medium text-foreground">
407
+ Call us at +1 (555) 123-4567
408
+ </span>
409
+ </div>
410
+ <div className="flex flex-1 items-center justify-end space-x-6">
411
+ {userNavigation.map((item) => (
412
+ <Link
413
+ key={item.name}
414
+ to={item.href}
415
+ className="text-sm font-medium text-muted-foreground hover:text-foreground"
416
+ >
417
+ {item.name}
418
+ </Link>
419
+ ))}
420
+ </div>
421
+ </div>
422
+ </div>
423
+
424
+ <nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8">
425
+ <div className="flex lg:flex-1">
426
+ <Link to="/" className="-m-1.5 p-1.5">
427
+ {logo}
428
+ </Link>
429
+ </div>
430
+ <div className="hidden lg:flex lg:gap-x-12">
431
+ {navigation.map((item) => (
432
+ <NavLink
433
+ key={item.name}
434
+ to={item.href}
435
+ className={({ isActive }) =>
436
+ cn(
437
+ "text-sm font-semibold leading-6 text-muted-foreground",
438
+ isActive ? "text-primary" : "hover:text-primary/30"
439
+ )
440
+ }
441
+ >
442
+ {item.name}
443
+ </NavLink>
444
+ ))}
445
+ </div>
446
+ <div className="flex flex-1 items-center justify-end gap-x-6">
447
+ <Link to="#" className="text-foreground hover:text-foreground">
448
+ <span className="sr-only">Search</span>
449
+ <Search className="h-6 w-6" />
450
+ </Link>
451
+ <Link to="#" className="text-foreground hover:text-foreground">
452
+ <span className="sr-only">Cart</span>
453
+ <ShoppingCart className="h-6 w-6" />
454
+ <span className="absolute -mt-2 ml-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-primary text-xs font-medium text-foreground">
455
+ 3
456
+ </span>
457
+ </Link>
458
+ </div>
459
+ </nav>
460
+ </header>
461
+ );
462
+
463
+ const renderDark = () => (
464
+ <header className="bg-gray-900">
465
+ <nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8">
466
+ <div className="flex lg:flex-1">
467
+ <Link to="/" className="-m-1.5 p-1.5">
468
+ {React.isValidElement(logo)
469
+ ? React.cloneElement(logo, {
470
+ className: cn(logo.props.className, "text-foreground")
471
+ })
472
+ : logo}
473
+ </Link>
474
+ </div>
475
+ <div className="hidden lg:flex lg:gap-x-12">
476
+ {navigation.map((item) => (
477
+ <NavLink
478
+ key={item.name}
479
+ to={item.href}
480
+ className={({ isActive }) =>
481
+ cn(
482
+ "text-sm font-semibold leading-6 text-foreground",
483
+ isActive ? "text-indigo-400" : "hover:text-indigo-300"
484
+ )
485
+ }
486
+ >
487
+ {item.name}
488
+ </NavLink>
489
+ ))}
490
+ </div>
491
+ <div className="flex flex-1 items-center justify-end gap-x-6">
492
+ {userNavigation.map((item) => (
493
+ <Link
494
+ key={item.name}
495
+ to={item.href}
496
+ className="text-sm font-semibold leading-6 text-foreground hover:text-indigo-300"
497
+ >
498
+ {item.icon ? (
499
+ <item.icon className="h-5 w-5" />
500
+ ) : (
501
+ item.name
502
+ )}
503
+ </Link>
504
+ ))}
505
+ {cta?.primary && (
506
+ <Button asChild variant="secondary">
507
+ <Link to={cta.primary.href}>
508
+ {cta.primary.text}
509
+ </Link>
510
+ </Button>
511
+ )}
512
+ </div>
513
+ </nav>
514
+ </header>
515
+ );
516
+
517
+ const renderVariant = () => {
518
+ switch (variant) {
519
+ case "simple":
520
+ return renderSimpleHeader();
521
+ case "with-search":
522
+ return renderWithSearch();
523
+ case "with-cta":
524
+ return renderWithCTA();
525
+ case "with-dropdown":
526
+ return renderWithDropdown();
527
+ case "ecommerce":
528
+ return renderEcommerce();
529
+ case "dark":
530
+ return renderDark();
531
+ default:
532
+ return renderSimpleHeader();
533
+ }
534
+ };
535
+
536
+ return <div className={cn(className)}>{renderVariant()}</div>;
537
+ }`,
538
+ premium: true,
539
+ category: "Marketing: Sections",
540
+ tags: ["ui", "sections", "core"],
541
+ features: ["Responsive", "TypeScript", "Accessible"],
542
+ dependencies: ["lucide-react"],
543
+ usage: null,
544
+ usagePath: "/components/catalyst-ui/marketing/sections/header.tsx",
545
+ basicusage: `
546
+ <Header />
547
+
548
+ <Header variant="simple" logo="(
549
+ <div className="flex items-center">
550
+ <span className="text-xl font-bold">YourLogo</span>
551
+ </div>
552
+ )" navigation="defaultNavigation" cta="" search="" userNavigation="defaultUserNavigation" className="" />`,
553
+ desc: null,
554
+ customize: null
555
+ },
556
+ {
557
+ name: "testimonial carousel",
558
+ value: "testimonial-carousel",
559
+ path: "/components/catalyst-ui/marketing/sections/testimonial-carousel.tsx",
560
+ files: {
561
+ "testimonial carousel": "/components/catalyst-ui/marketing/sections/testimonial-carousel.tsx",
562
+ },
563
+ premium: true,
564
+ source: null,
565
+ category: "Marketing: Sections",
566
+ tags: ["sections", "marketing"],
567
+ features: ["Responsive", "TypeScript", "Accessible"],
568
+ dependencies: ["lucide-react"],
569
+ usage: `
570
+ const testimonials = [
571
+ {
572
+ id: 1,
573
+ name: "Sarah Johnson",
574
+ role: "CEO",
575
+ company: "AutoElite Dealership",
576
+ content: "This platform has completely transformed how we manage our inventory and customer relationships. Our sales have increased by 35% since implementation.",
577
+ rating: 5
578
+ },
579
+ {
580
+ id: 2,
581
+ name: "Michael Chen",
582
+ role: "Sales Director",
583
+ company: "City Motors",
584
+ content: "The AI predictions are scarily accurate. We've been able to optimize our stock based on predictive analytics, reducing overhead by 22%.",
585
+ rating: 5
586
+ },
587
+ {
588
+ id: 3,
589
+ name: "Jessica Williams",
590
+ role: "Operations Manager",
591
+ company: "Premium Autos",
592
+ content: "The customer CRM is intuitive and powerful. Our team adoption was seamless, and we've seen a significant improvement in customer satisfaction scores.",
593
+ rating: 4
594
+ },
595
+ {
596
+ id: 4,
597
+ name: "David Rodriguez",
598
+ role: "Service Director",
599
+ company: "Performance Automotive",
600
+ content: "Scheduling and managing our service department has never been easier. The automated reminders have reduced no-shows by 65%.",
601
+ rating: 5
602
+ },
603
+ {
604
+ id: 5,
605
+ name: "Emily Thompson",
606
+ role: "Marketing Head",
607
+ company: "Family Auto Group",
608
+ content: "The marketing automation tools have saved us countless hours. Our campaign ROI has improved dramatically with the targeted approach.",
609
+ rating: 4
610
+ },
611
+ {
612
+ id: 6,
613
+ name: "James Wilson",
614
+ role: "CFO",
615
+ company: "Metro Automotive",
616
+ content: "The analytics dashboard provides insights we never had before. We're making data-driven decisions that directly impact our bottom line.",
617
+ rating: 5
618
+ }
619
+ ];
620
+
621
+ <TestimonialCarousel
622
+ testimonials={testimonials}
623
+ autoRotate={false}
624
+ snap={false}
625
+ autoRotateInterval={10000}
626
+ title=''
627
+ subTitle=''
628
+ />
629
+ `,
630
+ usagePath: null,
631
+ props: [
632
+ { name: "testimonials", type: "array", default: 'null' },
633
+ { name: "autoRotate", type: "boolean", default: "true" },
634
+ { name: "autoRotateInterval", type: "int", default: '10000' },
635
+ { name: "snap", type: "boolean", default: 'false' },
636
+ { name: "title", type: "string", default: 'What Our Customers Say' },
637
+ { name: "subTitle", type: "string", default: 'Hear from businesses that have transformed their operations with our platform.' },
638
+ ],
639
+ imports: `
640
+
641
+
642
+
643
+ `,
644
+ desc: null,
645
+ customize: null,
646
+ status: null,
647
+ lastUpdated: null
648
+ },
649
+ {
650
+ name: "pricing carousel",
651
+ value: "pricing-carousel",
652
+ path: "/components/catalyst-ui/marketing/sections/pricing-carousel.tsx",
653
+ files: {
654
+ "pricing carousel": "/components/catalyst-ui/marketing/sections/pricing-carousel.tsx",
655
+ },
656
+ premium: true,
657
+ source: null,
658
+ category: "Marketing: Sections",
659
+ tags: ["sections", "marketing"],
660
+ features: ["Responsive", "TypeScript", "Accessible"],
661
+ dependencies: ["lucide-react"],
662
+ usage: `
663
+ const pricingPlans = [
664
+ {
665
+ title: "Starter Plan",
666
+ price: 400,
667
+ period: "month",
668
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). Ideal for small dealerships with fewer users or in smaller markets.",
669
+ features: [
670
+ "$950/month w/ Full Integrated Website",
671
+ "Usage:",
672
+ "Emails: 1500",
673
+ "SMS: 4400",
674
+ "Voice: 1500",
675
+ "Sales People: 4",
676
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
677
+ ],
678
+ onButtonClick: () => {
679
+ <NavLink prefetch="intent" to={URLS.STRIPE_STARTER } >Get Started Today</NavLink>
680
+ },
681
+ },
682
+ {
683
+ title: "Growth Plan",
684
+ price: 850,
685
+ period: "month",
686
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). For growing dealerships with a larger customer base and higher communication needs.",
687
+ features: [
688
+ "$1650/month w/ Full Integrated Website",
689
+ "Usage:",
690
+ "Emails: 5000",
691
+ "SMS: 12000",
692
+ "Voice: 2500",
693
+ "Sales People: 8",
694
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
695
+ ],
696
+ isPopular: true,
697
+ buttonText: "Start Pro Trial",
698
+ onButtonClick: () => {
699
+ <NavLink prefetch="intent" to={URLS.STRIPE_GROWTH} >Get Started Today</NavLink>
700
+ },
701
+ },
702
+ {
703
+ title: "Pro Plan",
704
+ price: 1750,
705
+ period: "month",
706
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). For growing dealerships with a larger customer base and higher communication needs.",
707
+ features: [
708
+ "$3500/month w/ Full Integrated Website",
709
+ "Usage:",
710
+ "Emails: 15000",
711
+ "SMS: 21000",
712
+ "Voice: 5000",
713
+ "Sales People: 14",
714
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
715
+ ],
716
+ excludedFeatures: ["Self-service setup"],
717
+ buttonText: "Contact Sales",
718
+ buttonVariant: "outline" as const,
719
+ onButtonClick: () => {
720
+ <NavLink prefetch="intent" to={URLS.STRIPE_PRO} >Get Started Today</NavLink>
721
+ },
722
+ },
723
+ {
724
+ title: "Enterprise",
725
+ price: 3200,
726
+ period: "month",
727
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). Suitable for mid-to-large dealerships with extensive service departments and marketing needs.",
728
+ features: [
729
+ "$5800/month w/ Full Integrated Website",
730
+ "Usage:",
731
+ "Emails: 18000",
732
+ "SMS: 35000",
733
+ "Voice: 8000",
734
+ "Sales People: 20",
735
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
736
+ ],
737
+ buttonText: "Get Started Free",
738
+ onButtonClick: () => {
739
+ <NavLink prefetch="intent" to={URLS.STRIPE_ENT} >Get Started Today</NavLink>
740
+ },
741
+ },
742
+ ];
743
+
744
+ <PricingCarousel
745
+ cards={pricingPlans}
746
+ autoRotate={false}
747
+ snap={false}
748
+ autoRotateInterval={10000}
749
+ title=''
750
+ subTitle=''
751
+ />
752
+
753
+ // Maybe you want to use the card on its own
754
+
755
+ <PricingCardCarousel
756
+ title="One Plan, One Price, No Paywalls"
757
+ price={400}
758
+ period="/month"
759
+ description="Full access to all features (sales, analytics, reporting, etc.). Ideal for any sized firm. Early Access - Coming Soon. Be the first to experience revolutionary legal practice management."
760
+ features={[
761
+ "Instant lawyer switching",
762
+ "Real-time document access",
763
+ "Complete case transparency",
764
+ "Advanced client portal",
765
+ "Multi-practice support"
766
+ ]}
767
+ buttonText="Join Waitlist"
768
+ onButtonClick={() => nav(0)}
769
+ />
770
+
771
+ `,
772
+ usagePath: null,
773
+ props: [
774
+ { name: "cards ie pricing information", type: "array", default: 'null' },
775
+ { name: "autoRotate", type: "boolean", default: "true" },
776
+ { name: "autoRotateInterval", type: "int", default: '10000' },
777
+ { name: "snap", type: "boolean", default: 'false' },
778
+ { name: "title", type: "string", default: 'Simple, Transparent Pricing' },
779
+ { name: "subTitle", type: "string", default: 'No Hidden Fees: No unforeseen third party charges or service management upfront costs (unlike other CRMs).' },
780
+ ],
781
+ imports: `
782
+
783
+
784
+
785
+ `,
786
+ desc: null,
787
+ customize: null,
788
+ status: null,
789
+ lastUpdated: null
790
+ },
791
+ {
792
+ name: "feature carousel",
793
+ value: "feature-carousel",
794
+ path: "/components/catalyst-ui/marketing/sections/feature-carousel.tsx",
795
+ files: {
796
+ "feature carousel": "/components/catalyst-ui/marketing/sections/feature-carousel.tsx",
797
+ },
798
+ premium: true,
799
+ source: null,
800
+ category: "Marketing: Sections",
801
+ tags: ["sections", "marketing"],
802
+ features: ["Responsive", "TypeScript", "Accessible"],
803
+ dependencies: ["lucide-react"],
804
+ usage: `
805
+
806
+
807
+ const listFeatures = [
808
+ { name: "Import CSV Wizard", description: "No need to rely on your providor in order to handle your data. No matter how your database columns were previously set up, this wizard you can adjust which columns are assigned. Even if the names completely do not match, your still able to
809
+
810
+
811
+ `,
812
+ customize: null,
813
+ status: null,
814
+ lastUpdated: null
815
+ },
816
+ {
817
+ name: "pricing carousel V2",
818
+ value: "pricing-carousel-2",
819
+ path: "/components/catalyst-ui/marketing/sections/pricing-carousel-2.tsx",
820
+ files: {
821
+ "pricing carousel V2": "/components/catalyst-ui/marketing/sections/pricing-carousel-2.tsx",
822
+ },
823
+ premium: true,
824
+ source: null,
825
+ category: "Marketing: Sections",
826
+ tags: ["sections", "marketing"],
827
+ features: ["Responsive", "TypeScript", "Accessible"],
828
+ dependencies: ["lucide-react"],
829
+ usage: `
830
+ const pricingPlans = [
831
+ {
832
+ title: "Starter Plan",
833
+ price: 400,
834
+ period: "month",
835
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). Ideal for small dealerships with fewer users or in smaller markets.",
836
+ features: [
837
+ "$950/month w/ Full Integrated Website",
838
+ "Usage:",
839
+ "Emails: 1500",
840
+ "SMS: 4400",
841
+ "Voice: 1500",
842
+ "Sales People: 4",
843
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
844
+ ],
845
+ onButtonClick: () => {
846
+ <NavLink prefetch="intent" to={URLS.STRIPE_STARTER } >Get Started Today</NavLink>
847
+ },
848
+ },
849
+ {
850
+ title: "Growth Plan",
851
+ price: 850,
852
+ period: "month",
853
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). For growing dealerships with a larger customer base and higher communication needs.",
854
+ features: [
855
+ "$1650/month w/ Full Integrated Website",
856
+ "Usage:",
857
+ "Emails: 5000",
858
+ "SMS: 12000",
859
+ "Voice: 2500",
860
+ "Sales People: 8",
861
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
862
+ ],
863
+ isPopular: true,
864
+ buttonText: "Start Pro Trial",
865
+ onButtonClick: () => {
866
+ <NavLink prefetch="intent" to={URLS.STRIPE_GROWTH} >Get Started Today</NavLink>
867
+ },
868
+ },
869
+ {
870
+ title: "Pro Plan",
871
+ price: 1750,
872
+ period: "month",
873
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). For growing dealerships with a larger customer base and higher communication needs.",
874
+ features: [
875
+ "$3500/month w/ Full Integrated Website",
876
+ "Usage:",
877
+ "Emails: 15000",
878
+ "SMS: 21000",
879
+ "Voice: 5000",
880
+ "Sales People: 14",
881
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
882
+ ],
883
+ excludedFeatures: ["Self-service setup"],
884
+ buttonText: "Contact Sales",
885
+ buttonVariant: "outline" as const,
886
+ onButtonClick: () => {
887
+ <NavLink prefetch="intent" to={URLS.STRIPE_PRO} >Get Started Today</NavLink>
888
+ },
889
+ },
890
+ {
891
+ title: "Enterprise",
892
+ price: 3200,
893
+ period: "month",
894
+ description: "Full access to all features (sales, service, parts, analytics, reporting, etc.). Suitable for mid-to-large dealerships with extensive service departments and marketing needs.",
895
+ features: [
896
+ "$5800/month w/ Full Integrated Website",
897
+ "Usage:",
898
+ "Emails: 18000",
899
+ "SMS: 35000",
900
+ "Voice: 8000",
901
+ "Sales People: 20",
902
+ "Note: There is no limit on user licenses, the example above is given to show how many sales people would be a good fit for that category.",
903
+ ],
904
+ buttonText: "Get Started Free",
905
+ onButtonClick: () => {
906
+ <NavLink prefetch="intent" to={URLS.STRIPE_ENT} >Get Started Today</NavLink>
907
+ },
908
+ },
909
+ ];
910
+
911
+ <PricingCarousel cards={pricingPlans} autoRotate={true} />`,
912
+ usagePath: null,
913
+ props: [
914
+ { name: "pricingPlans", type: "array", default: 'null' },
915
+ ],
916
+ props2: [
917
+ { name: "title", type: "string", default: 'null' },
918
+ { name: "price", type: "int", default: 'null' },
919
+ { name: "period", type: "string", default: 'null' },
920
+ { name: "description", type: "string", default: 'null' },
921
+ { name: "features", type: "string", default: 'null' },
922
+ { name: "buttonText", type: "string", default: 'Get Started' },
923
+ { name: "isPopular", type: "boolean", default: 'false' },
924
+ { name: "popularBadgeText", type: "string", default: 'Most Popular' },
925
+ { name: "excludedFeatures", type: "array", default: 'null' },
926
+ ],
927
+ imports: `
928
+
929
+ `,
930
+ customize: null,
931
+ status: null,
932
+ lastUpdated: null
933
+ },
934
+ {
935
+ name: "feature showcase",
936
+ value: "feature-showcase",
937
+ path: "/components/catalyst-ui/marketing/sections/feature-showcase.tsx",
938
+ files: {
939
+ "feature showcase": "/components/catalyst-ui/marketing/sections/feature-showcase.tsx",
940
+ },
941
+ premium: true,
942
+ source: null,
943
+ category: "Marketing: Sections",
944
+ tags: ["sections", "marketing"],
945
+ features: ["Responsive", "TypeScript", "Accessible"],
946
+ dependencies: ["lucide-react"],
947
+ usage: `
948
+ export function FeatureShowcaseDemo() {
949
+ const dealerFeatures = [
950
+ {
951
+ name: "Sales Dashboard",
952
+ description: "Our time-optimized interface saves dealerships thousands of operational minutes annually through streamlined workflows.",
953
+ category: "Sales"
954
+ },
955
+ {
956
+ name: "Sales Tracker",
957
+ description: "Comprehensive sales performance monitoring with customizable KPIs. Track conversions, follow-ups, and revenue streams with precision to maximize your closing ratios.",
958
+ category: "Sales"
959
+ },
960
+ {
961
+ name: "Inventory Management",
962
+ description: "Complete control over your vehicle inventory with real-time updates and automated alerts for low stock.",
963
+ category: "Inventory"
964
+ },
965
+ {
966
+ name: "Customer CRM",
967
+ description: "Manage all customer interactions in one place with detailed history and communication tracking.",
968
+ category: "CRM"
969
+ },
970
+ ];
971
+
972
+ return <FeatureShowcase features={dealerFeatures} />;
973
+ }`,
974
+ usagePath: null,
975
+ props: [
976
+ { name: "features", type: "array", default: 'null' },
977
+ { name: "autoRotate", type: "boolean", default: "false" },
978
+ { name: "autoRotateInterval", type: "int", default: '5000' },
979
+ { name: "visibleCount", type: "int", default: '3' },
980
+ ],
981
+ imports: `
982
+
983
+
984
+
985
+
986
+ `,
987
+ customize: null,
988
+ status: null,
989
+ lastUpdated: null
990
+ },
991
+ {
992
+ name: "Pricing Card - Single",
993
+ value: "pricing-single-card",
994
+ path: "/components/catalyst-ui/marketing/sections/pricing-single-card.tsx",
995
+ files: {
996
+ "Pricing Card - Single": "/components/catalyst-ui/marketing/sections/pricing-single-card.tsx",
997
+ },
998
+ premium: true,
999
+ source: null,
1000
+ category: "Marketing: Sections",
1001
+ tags: ["sections", "marketing"],
1002
+ features: ["Responsive", "TypeScript", "Accessible"],
1003
+ dependencies: ["lucide-react"],
1004
+ usage: `
1005
+ export function PricingCardSingleDemo() {
1006
+ const handleBasicPlanClick = () => {
1007
+ console.log("Basic plan selected");
1008
+ };
1009
+
1010
+ const handleProPlanClick = () => {
1011
+ console.log("Pro plan selected");
1012
+ };
1013
+
1014
+ return (
1015
+ <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6 p-8">
1016
+ <PricingCardSingle
1017
+ title="Basic Plan"
1018
+ price={29}
1019
+ description="Perfect for individuals just getting started."
1020
+ features={["Feature One", "Feature Two", "Feature Three"]}
1021
+ onButtonClick={handleBasicPlanClick}
1022
+ />
1023
+
1024
+ <PricingCardSingle
1025
+ title="Pro Plan"
1026
+ price={79}
1027
+ description="Best for growing teams and businesses."
1028
+ features={[
1029
+ "Everything in Basic",
1030
+ "Advanced Analytics",
1031
+ "Priority Support",
1032
+ "Team Collaboration",
1033
+ "API Access"
1034
+ ]}
1035
+ isPopular={true}
1036
+ buttonText="Start Pro Trial"
1037
+ onButtonClick={handleProPlanClick}
1038
+ />
1039
+
1040
+ <PricingCardSingle
1041
+ title="Enterprise"
1042
+ price="Custom"
1043
+ period=""
1044
+ description="Tailored solutions for large organizations."
1045
+ features={[
1046
+ "Everything in Pro",
1047
+ "Custom Integrations",
1048
+ "Dedicated Support",
1049
+ "SLA Guarantee",
1050
+ "On-premise Options"
1051
+ ]}
1052
+ excludedFeatures={["Self-service setup"]}
1053
+ buttonText="Contact Sales"
1054
+ buttonVariant="outline"
1055
+ />
1056
+ </div>
1057
+ );
1058
+ }`,
1059
+ usagePath: null,
1060
+ props: [
1061
+ { name: "title", type: "string", default: 'null' },
1062
+ { name: "price", type: "int | string", default: 'null' },
1063
+ { name: "period", type: "string", default: '/mo' },
1064
+ { name: "description", type: "string", default: 'null' },
1065
+ { name: "features", type: "string", default: 'null' },
1066
+ { name: "buttonText", type: "string", default: 'Get Started' },
1067
+ { name: "buttonVariant", type: "string", default: 'primary' },
1068
+ { name: "onButtonClick", type: "function", default: 'null' },
1069
+ { name: "isPopular", type: "boolean", default: 'false' },
1070
+ { name: "className", type: "string", default: 'null' },
1071
+ { name: "excludedFeatures", type: "array", default: 'null' },
1072
+ ],
1073
+ imports: `
1074
+
1075
+
1076
+ `,
1077
+ customize: null,
1078
+ status: null,
1079
+ lastUpdated: null
1080
+ },
1081
+ {
1082
+ name: "Bento Grid",
1083
+ value: "bento-grid",
1084
+ path: "/components/catalyst-ui/marketing/sections/bentoGrid.tsx",
1085
+ files: {
1086
+ "Bento Grid": "/components/catalyst-ui/marketing/sections/bentoGrid.tsx",
1087
+ },
1088
+ premium: true,
1089
+ source: null,
1090
+ category: "Marketing: Sections",
1091
+ tags: ["sections", "marketing"],
1092
+ features: ["Responsive", "TypeScript", "Accessible"],
1093
+ dependencies: ["lucide-react"],
1094
+ usage: `
1095
+
1096
+
1097
+
1098
+
1099
+ export default function BentoGridsDemo () {
1100
+ const sampleItems = [
1101
+ {
1102
+ title: 'Advanced Analytics',
1103
+ description: 'Get deep insights into your data with powerful analytics tools and real-time reporting.',
1104
+ icon: 'BarChart3',
1105
+ size: 'large',
1106
+ gradient: {
1107
+ direction: 'br',
1108
+ from: 'from-blue-500',
1109
+ to: 'to-purple-600'
1110
+ },
1111
+ stats: [
1112
+ { value: '99.9%', label: 'Accuracy' },
1113
+ { value: '10ms', label: 'Response' }
1114
+ ],
1115
+ cta: {
1116
+ text: 'View Dashboard',
1117
+ url: '#',
1118
+ icon: 'arrow'
1119
+ }
1120
+ },
1121
+ {
1122
+ title: 'Team Collaboration',
1123
+ description: 'Work together seamlessly with integrated chat, file sharing, and project management.',
1124
+ icon: 'Users',
1125
+ size: 'medium',
1126
+ badge: 'Popular',
1127
+ cta: {
1128
+ text: 'Start Collaborating',
1129
+ url: '#',
1130
+ icon: 'chevron'
1131
+ }
1132
+ },
1133
+ {
1134
+ title: 'Security First',
1135
+ description: 'Enterprise-grade security with end-to-end encryption and compliance certifications.',
1136
+ icon: 'Shield',
1137
+ size: 'small'
1138
+ },
1139
+ {
1140
+ title: 'Lightning Fast',
1141
+ description: 'Optimized performance ensures your applications run at peak efficiency.',
1142
+ icon: 'Zap',
1143
+ size: 'tall',
1144
+ stats: [
1145
+ { value: '<1s', label: 'Load Time' }
1146
+ ]
1147
+ },
1148
+ {
1149
+ title: 'Global Infrastructure',
1150
+ description: 'Deploy worldwide with our distributed network of data centers and edge locations.',
1151
+ icon: 'Globe',
1152
+ size: 'wide',
1153
+ gradient: {
1154
+ direction: 'r',
1155
+ from: 'from-green-500',
1156
+ to: 'to-blue-600'
1157
+ },
1158
+ cta: {
1159
+ text: 'Explore Locations',
1160
+ url: '#',
1161
+ icon: 'arrow'
1162
+ }
1163
+ },
1164
+ {
1165
+ title: 'Mobile Ready',
1166
+ description: 'Responsive design that works perfectly on all devices and screen sizes.',
1167
+ icon: 'Smartphone',
1168
+ size: 'small'
1169
+ },
1170
+ {
1171
+ title: 'Smart Scheduling',
1172
+ description: 'AI-powered scheduling that adapts to your team preferences and availability.',
1173
+ icon: 'Calendar',
1174
+ size: 'medium',
1175
+ badge: 'New'
1176
+ },
1177
+ {
1178
+ title: 'Real-time Communication',
1179
+ description: 'Instant messaging and video calls integrated directly into your workflow.',
1180
+ icon: 'MessageCircle',
1181
+ size: 'small',
1182
+ cta: {
1183
+ text: 'Start Chatting',
1184
+ url: '#',
1185
+ icon: 'play'
1186
+ }
1187
+ }
1188
+ ];
1189
+
1190
+ const simpleItems = sampleItems.slice(0, 6);
1191
+ const masonryItems = [
1192
+ {
1193
+ title: 'Quick Setup',
1194
+ description: 'Get started in minutes with our simple onboarding process.',
1195
+ icon: 'Zap'
1196
+ },
1197
+ {
1198
+ title: 'Secure by Default',
1199
+ description: 'Built with security as a foundation, not an afterthought. All data is encrypted and protected.',
1200
+ icon: 'Shield'
1201
+ },
1202
+ {
1203
+ title: 'Team Features',
1204
+ description: 'Collaborate effectively with your team members.',
1205
+ icon: 'Users'
1206
+ },
1207
+ {
1208
+ title: 'Analytics Dashboard',
1209
+ description: 'Comprehensive analytics to track your progress and measure success. Get insights that matter and make data-driven decisions with confidence.',
1210
+ icon: 'BarChart3',
1211
+ stats: [
1212
+ { value: '1M+', label: 'Data Points' }
1213
+ ]
1214
+ },
1215
+ {
1216
+ title: 'Global Network',
1217
+ description: 'Worldwide coverage with low latency.',
1218
+ icon: 'Globe'
1219
+ },
1220
+ {
1221
+ title: 'Mobile Support',
1222
+ description: 'Works seamlessly on all your devices, from desktop to mobile. Responsive design ensures a great experience everywhere.',
1223
+ icon: 'Smartphone'
1224
+ }
1225
+ ];
1226
+
1227
+ return (
1228
+ <div className="space-y-0">
1229
+ {/* Classic Bento Grid */}
1230
+ <BentoGrids
1231
+ variant="classic"
1232
+ title="Features"
1233
+ subtitle="Everything you need to succeed"
1234
+ description="Comprehensive tools and features designed to help you build, deploy, and scale your applications with confidence."
1235
+ items={sampleItems}
1236
+ showAnimation={true}
1237
+ />
1238
+
1239
+ {/* Minimal Cards */}
1240
+ <BentoGrids
1241
+ variant="minimal"
1242
+ title="Why Choose Us"
1243
+ subtitle="Built for modern teams"
1244
+ description="Simple, powerful, and reliable tools that help you focus on what matters most."
1245
+ items={simpleItems}
1246
+ darkMode={false}
1247
+ compactSpacing={true}
1248
+ />
1249
+
1250
+ {/* Card Style */}
1251
+ <BentoGrids
1252
+ variant="cards"
1253
+ title="Core Capabilities"
1254
+ subtitle="Powerful features at your fingertips"
1255
+ description="Experience the full potential of our platform with these essential capabilities."
1256
+ items={simpleItems}
1257
+ showAnimation={true}
1258
+ />
1259
+
1260
+ {/* Masonry Layout */}
1261
+ <BentoGrids
1262
+ variant="masonry"
1263
+ title="Features"
1264
+ subtitle="Discover what makes us different"
1265
+ description="Flexible, adaptive features that grow with your needs."
1266
+ items={masonryItems}
1267
+ darkMode={false}
1268
+ />
1269
+
1270
+ {/* Dark Mode Example */}
1271
+ <BentoGrids
1272
+ variant="cards"
1273
+ title="Dark Theme"
1274
+ subtitle="Beautiful in any mode"
1275
+ description="Our components look stunning in both light and dark themes."
1276
+ items={simpleItems.slice(0, 3)}
1277
+ darkMode={true}
1278
+ showAnimation={true}
1279
+ />
1280
+ </div>
1281
+ );
1282
+ };
1283
+
1284
+ `,
1285
+ usagePath: null,
1286
+ props: [
1287
+ { name: "variant", type: "string", default: "'classic'" },
1288
+ { name: "title", type: "string", default: "null" },
1289
+ { name: "subtitle", type: "string", default: "null" },
1290
+ { name: "description", type: "string", default: "null" },
1291
+ { name: "items", type: "array", default: "[]" },
1292
+ { name: "className", type: "string", default: "''" },
1293
+ { name: "darkMode", type: "boolean", default: "false" },
1294
+ { name: "showAnimation", type: "boolean", default: "true" },
1295
+ { name: "compactSpacing", type: "boolean", default: "false" },
1296
+ { name: "price", type: "int | string", default: "null" },
1297
+ { name: "period", type: "string", default: "'/mo'" },
1298
+ { name: "features", type: "string", default: "null" },
1299
+ { name: "buttonText", type: "string", default: "'Get Started'" },
1300
+ { name: "buttonVariant", type: "string", default: "'primary'" },
1301
+ { name: "onButtonClick", type: "function", default: "null" },
1302
+ { name: "isPopular", type: "boolean", default: "false" },
1303
+ { name: "excludedFeatures", type: "array", default: "null" }
1304
+ ],
1305
+ imports: `
1306
+
1307
+ `,
1308
+ customize: null,
1309
+ status: null,
1310
+ lastUpdated: null
1311
+ },
1312
+ {
1313
+ name: "Blog",
1314
+ value: "blog",
1315
+ path: "/components/catalyst-ui/marketing/sections/blog.tsx",
1316
+ source: null,
1317
+ files: {
1318
+ "Blog": "/components/catalyst-ui/marketing/sections/blog.tsx",
1319
+ },
1320
+ premium: true,
1321
+ category: "Marketing: Sections",
1322
+ tags: ["sections", "marketing"],
1323
+ features: ["Responsive", "TypeScript", "Accessible"],
1324
+ dependencies: ["lucide-react"],
1325
+ usage: `
1326
+
1327
+
1328
+ export default function BlogPageDemo() {
1329
+ const posts = [
1330
+ {
1331
+ id: "1",
1332
+ title: "Boost your conversion rate",
1333
+ href: "#",
1334
+ description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.",
1335
+ date: "Mar 16, 2023",
1336
+ datetime: "2023-03-16",
1337
+ readingTime: "5 min read",
1338
+ author: {
1339
+ name: "Michael Foster",
1340
+ image: "/images/author1.jpg",
1341
+ },
1342
+ category: {
1343
+ title: "Marketing",
1344
+ href: "#",
1345
+ },
1346
+ image: "/images/blog1.jpg",
1347
+ comments: 3,
1348
+ },
1349
+ {
1350
+ id: "2",
1351
+ title: "How to use search engine optimization",
1352
+ href: "#",
1353
+ description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit facilis asperiores porro quaerat doloribus, eveniet dolore.",
1354
+ date: "Mar 10, 2023",
1355
+ datetime: "2023-03-10",
1356
+ readingTime: "4 min read",
1357
+ author: {
1358
+ name: "Lindsay Walton",
1359
+ image: "/images/author2.jpg",
1360
+ },
1361
+ category: {
1362
+ title: "SEO",
1363
+ href: "#",
1364
+ },
1365
+ image: "/images/blog2.jpg",
1366
+ comments: 5,
1367
+ },
1368
+ ];
1369
+
1370
+ return (
1371
+ <div className=' flex flex-col gap-5'>
1372
+ <Blog
1373
+ posts={posts}
1374
+ style="featured-card"
1375
+ title="From the blog"
1376
+ description="Learn how to grow your business with our expert advice."
1377
+ viewAllText="View all posts"
1378
+ viewAllUrl="/blog"
1379
+ />
1380
+ <BlogSection posts={posts} style="simple-grid" />
1381
+ <BlogSection posts={posts} style="offset-grid" />
1382
+ <BlogSection posts={posts} style="stacked-list" />
1383
+ </div>
1384
+ );
1385
+ }
1386
+ /** Simple grid
1387
+
1388
+ // Offset grid
1389
+
1390
+ // Stacked list
1391
+ */`,
1392
+ usagePath: null,
1393
+ props: [
1394
+ { name: "id", type: "string", default: "null" },
1395
+ { name: "title", type: "string", default: "null" },
1396
+ { name: "href", type: "string", default: "null" },
1397
+ { name: "description", type: "string", default: "null" },
1398
+ { name: "date", type: "string", default: "null" },
1399
+ { name: "datetime", type: "string", default: "null" },
1400
+ { name: "readingTime", type: "string", default: "null" },
1401
+ { name: "author", type: "object", default: "null" },
1402
+ { name: "category", type: "object", default: "null" },
1403
+ { name: "image", type: "string", default: "null" },
1404
+ { name: "comments", type: "number", default: "null" },
1405
+ ],
1406
+ props2: [
1407
+ { name: "posts", type: "array", default: "[]" },
1408
+ { name: "style", type: "simple-grid | featured-card | offset-grid | side-by-side | stacked-list | with-categories | minimal-grid", default: "simple-grid" },
1409
+ { name: "title", type: "string", default: "null" },
1410
+ { name: "description", type: "string", default: "null" },
1411
+ { name: "viewAllText", type: "string", default: "null" },
1412
+ { name: "viewAllUrl", type: "string", default: "null" },
1413
+ { name: "className", type: "string", default: "null" },
1414
+ ],
1415
+ imports: `
1416
+
1417
+
1418
+ `,
1419
+ customize: null,
1420
+ status: null,
1421
+ lastUpdated: null
1422
+ },
1423
+ {
1424
+ name: "Blog Editor",
1425
+ value: "blog-editor",
1426
+ path: "/components/catalyst-ui/marketing/sections/blogEditor.tsx",
1427
+ source: null,
1428
+ files: {
1429
+ "Blog Editor": "/components/catalyst-ui/marketing/sections/blogEditor.tsx",
1430
+ },
1431
+ premium: true,
1432
+ category: "Marketing: Sections",
1433
+ tags: ["sections", "marketing"],
1434
+ features: ["Responsive", "TypeScript", "Accessible"],
1435
+ dependencies: ["lucide-react"],
1436
+ usage: null,
1437
+ usagePath: "/components/catalyst-ui/marketing/sections/blogEditor.tsx",
1438
+ desc: null,
1439
+ customize: null
1440
+ },
1441
+ {
1442
+ name: "Blog Post",
1443
+ value: "blog-post",
1444
+ path: "/components/catalyst-ui/marketing/sections/blogPost.tsx",
1445
+ source: null,
1446
+ files: {
1447
+ "Blog Post": "/components/catalyst-ui/marketing/sections/blogPost.tsx",
1448
+ },
1449
+ premium: true,
1450
+ category: "Marketing: Sections",
1451
+ tags: ["sections", "marketing"],
1452
+ features: ["Responsive", "TypeScript", "Accessible"],
1453
+ dependencies: ["lucide-react"],
1454
+ usage: "/components/catalyst-ui/marketing/demo/blogPost.tsx",
1455
+ usagePath: null,
1456
+ desc: null,
1457
+ customize: null
1458
+ },
1459
+ {
1460
+ name: "CTA",
1461
+ value: "cta",
1462
+ path: "/components/catalyst-ui/marketing/sections/cta.tsx",
1463
+ source: null,
1464
+ files: {
1465
+ "CTA": "/components/catalyst-ui/marketing/sections/cta.tsx",
1466
+ },
1467
+ premium: true,
1468
+ category: "Marketing: Sections",
1469
+ tags: ["sections", "marketing"],
1470
+ features: ["Responsive", "TypeScript", "Accessible"],
1471
+ dependencies: ["lucide-react"],
1472
+ usage: `
1473
+
1474
+
1475
+ export function CTADemo () {
1476
+ return (
1477
+ <div className='flex flex-col gap-5' >
1478
+
1479
+ <Cta variant="simple" />
1480
+
1481
+ <Cta
1482
+ variant="with-image"
1483
+ title="Ready to dive in?"
1484
+ description="Start your free trial today."
1485
+ />
1486
+
1487
+ <Cta
1488
+ variant="split"
1489
+ title="All-in-one platform"
1490
+ description="Everything you need to build, launch, and grow your business."
1491
+ features={[
1492
+ { icon: Check, text: "No setup, or hidden fees" },
1493
+ { icon: Check, text: "Team accounts" },
1494
+ { icon: Check, text: "Premium support" }
1495
+ ]}
1496
+ />
1497
+
1498
+ <Cta
1499
+ variant="with-features"
1500
+ subtitle="Deploy faster"
1501
+ title="Everything you need to deploy your app"
1502
+ features={[
1503
+ { icon: Zap, text: "Push to deploy" },
1504
+ { icon: Rocket, text: "SSL certificates" },
1505
+ { icon: Mail, text: "Database backups" }
1506
+ ]}
1507
+ />
1508
+
1509
+ <Cta
1510
+ variant="newsletter"
1511
+ title="Stay up to date"
1512
+ description="Subscribe to our newsletter for the latest updates."
1513
+ />
1514
+
1515
+ <Cta
1516
+ variant="contact"
1517
+ title="Get in touch"
1518
+ description="We'd love to hear from you. Contact us today."
1519
+ />
1520
+
1521
+ <Cta
1522
+ variant="gradient"
1523
+ title="Ready to get started?"
1524
+ description="Start your free trial today."
1525
+ />
1526
+
1527
+ <Cta
1528
+ variant="card"
1529
+ title="Boost your productivity"
1530
+ description="Start your free trial today."
1531
+ />
1532
+ </div>
1533
+ )
1534
+ }`,
1535
+ usagePath: null,
1536
+ desc: null,
1537
+ customize: null
1538
+ },
1539
+ {
1540
+ name: "FAQ",
1541
+ value: "faq",
1542
+ path: "/components/catalyst-ui/marketing/sections/FAQ.tsx",
1543
+ source: null,
1544
+ files: {
1545
+ "FAQ": "/components/catalyst-ui/marketing/sections/FAQ.tsx",
1546
+ },
1547
+ premium: true,
1548
+ category: "Marketing: Sections",
1549
+ tags: ["sections", "marketing"],
1550
+ features: ["Responsive", "TypeScript", "Accessible"],
1551
+ dependencies: ["lucide-react"],
1552
+ usage: `
1553
+
1554
+
1555
+ const faqs = [
1556
+ {
1557
+ id: '1',
1558
+ question: "What's the best thing about Switzerland?",
1559
+ answer: "I don't know, but the flag is a big plus. Lorem ipsum dolor sit amet consectetur adipisicing elit. Quas cupiditate laboriosam fugiat."
1560
+ },
1561
+ // Add more FAQs...
1562
+ ];
1563
+
1564
+ export default function FAQDemo() {
1565
+ return (
1566
+ <div>
1567
+ {/* Simple variant */}
1568
+ <FaqSection
1569
+ faqs={faqs}
1570
+ variant="simple"
1571
+ />
1572
+
1573
+ {/* Centered variant */}
1574
+ <FaqSection
1575
+ title="Frequently asked questions"
1576
+ subtitle="Everything you need to know about our product."
1577
+ faqs={faqs}
1578
+ variant="centered"
1579
+ primaryAction={{ text: "Contact us", url: "/contact" }}
1580
+ secondaryAction={{ text: "Learn more", url: "/about" }}
1581
+ />
1582
+
1583
+ {/* With branded header */}
1584
+ <FaqSection
1585
+ title="Support"
1586
+ subtitle="We're here to help"
1587
+ faqs={faqs}
1588
+ variant="with-branded-header"
1589
+ />
1590
+ </div>
1591
+ );
1592
+ }`,
1593
+ usagePath: null,
1594
+ desc: null,
1595
+ customize: null
1596
+ },
1597
+ {
1598
+ name: "Feature",
1599
+ value: "feature",
1600
+ path: "/components/catalyst-ui/marketing/sections/feature.tsx",
1601
+ source: null,
1602
+ files: {
1603
+ "Feature": "/components/catalyst-ui/marketing/sections/feature.tsx",
1604
+ },
1605
+ premium: true,
1606
+ category: "Marketing: Sections",
1607
+ tags: ["sections", "marketing"],
1608
+ features: ["Responsive", "TypeScript", "Accessible"],
1609
+ dependencies: ["lucide-react"],
1610
+ usage: `
1611
+
1612
+
1613
+ export default function FeatureDemo () {
1614
+ const sampleFeatures = [
1615
+ {
1616
+ icon: 'Shield',
1617
+ title: 'Security First',
1618
+ description: 'Built with enterprise-grade security measures to protect your data and users.'
1619
+ },
1620
+ {
1621
+ icon: 'Zap',
1622
+ title: 'Lightning Fast',
1623
+ description: 'Optimized performance ensures your applications load quickly and run smoothly.'
1624
+ },
1625
+ {
1626
+ icon: 'Users',
1627
+ title: 'Team Collaboration',
1628
+ description: 'Work together seamlessly with powerful collaboration and sharing features.'
1629
+ },
1630
+ {
1631
+ icon: 'Globe',
1632
+ title: 'Global Scale',
1633
+ description: 'Deploy worldwide with our distributed infrastructure and CDN network.'
1634
+ },
1635
+ {
1636
+ icon: 'BarChart3',
1637
+ title: 'Analytics & Insights',
1638
+ description: 'Get detailed analytics and insights to make data-driven decisions.'
1639
+ },
1640
+ {
1641
+ icon: 'Settings',
1642
+ title: 'Easy Configuration',
1643
+ description: 'Simple setup and configuration with comprehensive documentation and support.'
1644
+ }
1645
+ ];
1646
+
1647
+ const shortFeatures = sampleFeatures.slice(0, 3);
1648
+
1649
+ return (
1650
+ <div className="space-y-0">
1651
+ {/* Grid Layout */}
1652
+ <Feature
1653
+ variant="grid"
1654
+ title="Features"
1655
+ subtitle="Everything you need to succeed"
1656
+ description="Our comprehensive platform provides all the tools and features you need to build, deploy, and scale your applications with confidence."
1657
+ features={sampleFeatures}
1658
+ showCTA={true}
1659
+ ctaText="Explore All Features"
1660
+ ctaUrl="https://example.com"
1661
+ />
1662
+
1663
+ {/* List Layout */}
1664
+ <Feature
1665
+ variant="list"
1666
+ title="Why Choose Us"
1667
+ subtitle="Built for modern development"
1668
+ description="Discover what makes our platform the preferred choice for developers and teams worldwide."
1669
+ features={sampleFeatures}
1670
+ darkMode={false}
1671
+ showCTA={true}
1672
+ ctaText="Get Started Today"
1673
+ />
1674
+
1675
+ {/* Card Layout */}
1676
+ <Feature
1677
+ variant="cards"
1678
+ title="Core Features"
1679
+ subtitle="Powerful capabilities at your fingertips"
1680
+ description="Experience the full potential of our platform with these essential features designed for productivity."
1681
+ features={shortFeatures}
1682
+ centerContent={true}
1683
+ showCTA={false}
1684
+ />
1685
+
1686
+ {/* Alternating Layout */}
1687
+ <Feature
1688
+ variant="alternating"
1689
+ title="Advanced Features"
1690
+ subtitle="Take your projects to the next level"
1691
+ description="Explore our advanced features designed for complex workflows and enterprise needs."
1692
+ features={shortFeatures}
1693
+ darkMode={false}
1694
+ showCTA={true}
1695
+ ctaText="Learn More"
1696
+ ctaUrl="https://example.com"
1697
+ />
1698
+
1699
+ {/* Dark Mode Example */}
1700
+ <Feature
1701
+ variant="grid"
1702
+ title="Dark Mode"
1703
+ subtitle="Beautiful in any theme"
1704
+ description="Our components look great in both light and dark modes, giving you flexibility in your design."
1705
+ features={sampleFeatures.slice(0, 4)}
1706
+ darkMode={true}
1707
+ showCTA={true}
1708
+ ctaText="Try Dark Mode"
1709
+ />
1710
+ </div>
1711
+ );
1712
+ };
1713
+
1714
+ `,
1715
+ usagePath: null,
1716
+ desc: null,
1717
+ customize: null
1718
+ },
1719
+ {
1720
+ name: "Footer",
1721
+ value: "footer",
1722
+ path: "/components/catalyst-ui/marketing/sections/footer.tsx",
1723
+ source: null,
1724
+ files: {
1725
+ "Footer": "/components/catalyst-ui/marketing/sections/footer.tsx",
1726
+ },
1727
+ premium: true,
1728
+ category: "Marketing: Sections",
1729
+ tags: ["sections", "marketing"],
1730
+ features: ["Responsive", "TypeScript", "Accessible"],
1731
+ dependencies: ["lucide-react"],
1732
+ usage: `
1733
+
1734
+
1735
+
1736
+ export function FooterDemo1() {
1737
+ return (
1738
+ <Footer variant="simple" />
1739
+ )
1740
+ }
1741
+ export function FooterDemo2() {
1742
+ return (
1743
+ <Footer
1744
+ variant="with-newsletter"
1745
+ newsletter={{
1746
+ title: "Subscribe to our newsletter",
1747
+ description: "Get the latest news and updates delivered to your inbox."
1748
+ }}
1749
+ />
1750
+ )
1751
+ }
1752
+ export function FooterDemo3() {
1753
+ return (
1754
+ <Footer
1755
+ variant="multi-column"
1756
+ sections={[
1757
+ {
1758
+ title: "Products",
1759
+ links: [
1760
+ { name: "Features", href: "#" },
1761
+ { name: "Pricing", href: "#" },
1762
+ { name: "API", href: "#" }
1763
+ ]
1764
+ },
1765
+ {
1766
+ title: "Company",
1767
+ links: [
1768
+ { name: "About", href: "#" },
1769
+ { name: "Careers", href: "#" }
1770
+ ]
1771
+ }
1772
+ ]}
1773
+ />
1774
+ )
1775
+ }
1776
+ export function FooterDemo4() {
1777
+ return (
1778
+ <Footer
1779
+ variant="with-cta"
1780
+ cta={{
1781
+ title: "Ready to get started?",
1782
+ description: "Start your free trial today.",
1783
+ primaryButton: {
1784
+ text: "Get started",
1785
+ href: "#"
1786
+ },
1787
+ secondaryButton: {
1788
+ text: "Learn more",
1789
+ href: "#"
1790
+ }
1791
+ }}
1792
+ />
1793
+ )
1794
+ }
1795
+ `,
1796
+ usagePath: null,
1797
+ desc: null,
1798
+ customize: null
1799
+ },
1800
+ {
1801
+ name: "Header",
1802
+ value: "header",
1803
+ path: "/components/catalyst-ui/marketing/sections/header.tsx",
1804
+ source: null,
1805
+ files: {
1806
+ "Header": "/components/catalyst-ui/marketing/sections/header.tsx",
1807
+ },
1808
+ premium: true,
1809
+ category: "Marketing: Sections",
1810
+ tags: ["sections", "marketing"],
1811
+ features: ["Responsive", "TypeScript", "Accessible"],
1812
+ dependencies: ["lucide-react"],
1813
+ usage: `
1814
+
1815
+
1816
+ export function Header2Demo1() {
1817
+ return <Header variant="simple" />;
1818
+ }
1819
+ export function Header2Demo2() {
1820
+ return (
1821
+ <Header
1822
+ variant="with-search"
1823
+ search={{
1824
+ placeholder: "Search products...",
1825
+ action: "/search",
1826
+ }}
1827
+ />
1828
+ );
1829
+ }
1830
+ export function Header2Demo3() {
1831
+ return (
1832
+ <Header
1833
+ variant="dark"
1834
+ navigation={[
1835
+ {
1836
+ name: "Products",
1837
+ href: "#",
1838
+ subLinks: [
1839
+ { name: "All Products", href: "#" },
1840
+ { name: "New Arrivals", href: "#" },
1841
+ { name: "Best Sellers", href: "#" },
1842
+ ],
1843
+ },
1844
+ { name: "About", href: "#" },
1845
+ { name: "Contact", href: "#" },
1846
+ ]}
1847
+ cta={{
1848
+ primary: {
1849
+ text: "Sign up",
1850
+ href: "#",
1851
+ },
1852
+ }}
1853
+ />
1854
+ );
1855
+ }
1856
+ export function Header2Demo4() {
1857
+ return (
1858
+ <Header
1859
+ variant="ecommerce"
1860
+ navigation={[
1861
+ { name: "Women", href: "#" },
1862
+ { name: "Men", href: "#" },
1863
+ { name: "Kids", href: "#" },
1864
+ { name: "Sale", href: "#" },
1865
+ ]}
1866
+ />
1867
+ );
1868
+ }
1869
+ export function Header2Demo5() {
1870
+ return (
1871
+ <Header
1872
+ variant="with-cta"
1873
+ cta={{
1874
+ primary: {
1875
+ text: "Get started",
1876
+ href: "#",
1877
+ },
1878
+ secondary: {
1879
+ text: "Learn more",
1880
+ href: "#",
1881
+ },
1882
+ }}
1883
+ />
1884
+ );
1885
+ }
1886
+
1887
+ `,
1888
+ usagePath: null,
1889
+ desc: null,
1890
+ customize: null
1891
+ },
1892
+ {
1893
+ name: "Hero",
1894
+ value: "hero",
1895
+ path: "/components/catalyst-ui/marketing/sections/hero.tsx",
1896
+ source: null,
1897
+ files: {
1898
+ "Hero": "/components/catalyst-ui/marketing/sections/hero.tsx",
1899
+ },
1900
+ premium: true,
1901
+ category: "Marketing: Sections",
1902
+ tags: ["sections", "marketing"],
1903
+ features: ["Responsive", "TypeScript", "Accessible"],
1904
+ dependencies: ["lucide-react"],
1905
+ usage: `
1906
+
1907
+
1908
+
1909
+
1910
+ // Example usage component
1911
+ export default function HeroDemo666 () {
1912
+ const sampleStats = [
1913
+ { value: "10K+", label: "Active Users" },
1914
+ { value: "99%", label: "Uptime" },
1915
+ { value: "24/7", label: "Support" }
1916
+ ];
1917
+
1918
+ const sampleTestimonial = {
1919
+ text: "This component library has completely transformed our development workflow.",
1920
+ author: "Sarah Johnson, Lead Developer"
1921
+ };
1922
+
1923
+ return (
1924
+ <div className="space-y-0">
1925
+ {/* Centered Hero */}
1926
+ <Hero
1927
+ variant="centered"
1928
+ title="Build amazing products with our components"
1929
+ description="Create beautiful, responsive designs faster than ever with our comprehensive component library built on top of Tailwind CSS."
1930
+ url="https://example.com"
1931
+ primaryButtonText="Get Started"
1932
+ secondaryButtonText="View Demo"
1933
+ />
1934
+
1935
+ {/* Split Layout Hero */}
1936
+ <Hero
1937
+ variant="split"
1938
+ title="Split layout hero section"
1939
+ description="Perfect for showcasing your product with a visual element on the side."
1940
+ url="https://example.com"
1941
+ primaryButtonText="Try It Now"
1942
+ secondaryButtonText="Learn More"
1943
+ />
1944
+
1945
+ {/* Gradient Hero */}
1946
+ <Hero
1947
+ variant="gradient"
1948
+ title="Beautiful gradient backgrounds"
1949
+ description="Eye-catching gradients that make your hero section stand out from the competition."
1950
+ url="https://example.com"
1951
+ primaryButtonText="Explore"
1952
+ secondaryButtonText="Documentation"
1953
+ />
1954
+
1955
+ {/* Dark Hero */}
1956
+ <Hero
1957
+ variant="dark"
1958
+ title="Dark mode hero section"
1959
+ description="Perfect for modern applications that support dark themes and night modes."
1960
+ url="https://example.com"
1961
+ primaryButtonText="Start Building"
1962
+ secondaryButtonText="View Examples"
1963
+ />
1964
+
1965
+ {/* Hero with Stats */}
1966
+ <Hero
1967
+ variant="withStats"
1968
+ title="Hero with statistics"
1969
+ description="Showcase your achievements and build trust with potential customers."
1970
+ url="https://example.com"
1971
+ primaryButtonText="Join Now"
1972
+ secondaryButtonText="See Pricing"
1973
+ stats={sampleStats}
1974
+ testimonial={sampleTestimonial}
1975
+ />
1976
+ </div>
1977
+ );
1978
+ };
1979
+
1980
+ `,
1981
+ usagePath: null,
1982
+ desc: null,
1983
+ customize: null
1984
+ },
1985
+ {
1986
+ name: "Logo Clouds",
1987
+ value: "logo-clouds",
1988
+ path: "/components/catalyst-ui/marketing/sections/logoClouds.tsx",
1989
+ source: null,
1990
+ files: {
1991
+ "Logo Clouds": "/components/catalyst-ui/marketing/sections/logoClouds.tsx",
1992
+ },
1993
+ premium: true,
1994
+ category: "Marketing: Sections",
1995
+ tags: ["sections", "marketing"],
1996
+ features: ["Responsive", "TypeScript", "Accessible"],
1997
+ dependencies: ["lucide-react"],
1998
+ usage: `
1999
+
2000
+
2001
+ export function LogoClouds666() {
2002
+ const logos = [
2003
+ { name: "Company 1", logo: "/logos/company1.svg" },
2004
+ { name: "Company 2", logo: "/logos/company2.svg" },
2005
+ // Add more logos...
2006
+ ];
2007
+
2008
+ return (
2009
+ <div className=" flex flex-col gap-5">
2010
+ <LogoCloud logos={logos} style="simple-grid" title="Trusted by the world's most innovative teams" />
2011
+ <LogoCloud
2012
+ logos={[
2013
+ { name: "TechCorp", logo: "/logos/techcorp.svg" },
2014
+ { name: "InnoSoft", logo: "/logos/innosoft.svg" },
2015
+ // More logos...
2016
+ ]}
2017
+ style="with-testimonials"
2018
+ title="Customer Stories"
2019
+ description="Hear from companies using our product"
2020
+ darkMode={true}
2021
+ />
2022
+ <LogoCloud
2023
+ logos={[
2024
+ { name: "Company A", logo: "/logos/company-a.svg" },
2025
+ { name: "Company B", logo: "/logos/company-b.svg" },
2026
+ // More logos (need at least 10 for smooth carousel)...
2027
+ ]}
2028
+ style="carousel"
2029
+ title="Our Partners"
2030
+ className="overflow-hidden"
2031
+ />
2032
+ </div>
2033
+ );
2034
+ }
2035
+ `,
2036
+ usagePath: null,
2037
+ desc: null,
2038
+ customize: null
2039
+ },
2040
+ {
2041
+ name: "News Letter",
2042
+ value: "news-letter",
2043
+ path: "/components/catalyst-ui/marketing/sections/newsLetter.tsx",
2044
+ source: null,
2045
+ files: {
2046
+ "News Letter": "/components/catalyst-ui/marketing/sections/newsLetter.tsx",
2047
+ },
2048
+ premium: true,
2049
+ category: "Marketing: Sections",
2050
+ tags: ["sections", "marketing"],
2051
+ features: ["Responsive", "TypeScript", "Accessible"],
2052
+ dependencies: ["lucide-react"],
2053
+ usage: `
2054
+
2055
+
2056
+
2057
+ export default function NewsLetterDemo() {
2058
+ return (
2059
+ <div>
2060
+ {/* Default variant */}
2061
+ <Newsletter
2062
+ title="Subscribe to our newsletter"
2063
+ description="Get the latest news and updates delivered to your inbox"
2064
+ />
2065
+
2066
+ {/* Card variant */}
2067
+ <Newsletter
2068
+ title="Stay updated"
2069
+ description="Join our mailing list to receive product updates"
2070
+ variant="card"
2071
+ buttonText="Join now"
2072
+ placeholder="Your email address"
2073
+ />
2074
+
2075
+ {/* Minimal variant */}
2076
+ <Newsletter
2077
+ title="Get updates"
2078
+ description="No spam, just the good stuff"
2079
+ variant="minimal"
2080
+ buttonText="Subscribe"
2081
+ className="bg-background"
2082
+ />
2083
+
2084
+ {/* Dark variant */}
2085
+ <Newsletter
2086
+ title="Premium content"
2087
+ description="Get exclusive access to our best resources"
2088
+ variant="dark"
2089
+ buttonText="Get access"
2090
+ icon={<Bell className="h-5 w-5" />}
2091
+ />
2092
+
2093
+ {/* Featured variant */}
2094
+ <Newsletter
2095
+ title="Join our community"
2096
+ description="Be the first to know about new features and releases"
2097
+ variant="featured"
2098
+ buttonText="Sign up"
2099
+ placeholder="Enter your email"
2100
+ icon={<Send className="h-5 w-5" />}
2101
+ />
2102
+ </div>
2103
+ );
2104
+ }`,
2105
+ usagePath: null,
2106
+ desc: null,
2107
+ customize: null
2108
+ },
2109
+ {
2110
+ name: "Pricing",
2111
+ value: "pricing",
2112
+ path: "/components/catalyst-ui/marketing/sections/pricing.tsx",
2113
+ source: null,
2114
+ files: {
2115
+ "Pricing": "/components/catalyst-ui/marketing/sections/pricing.tsx",
2116
+ },
2117
+ premium: true,
2118
+ category: "Marketing: Sections",
2119
+ tags: ["sections", "marketing"],
2120
+ features: ["Responsive", "TypeScript", "Accessible"],
2121
+ dependencies: ["lucide-react"],
2122
+ usage: `
2123
+
2124
+ export function PricingUsageExamples() {
2125
+ // Example 1: Custom Two-Tier Pricing for SaaS
2126
+ const saasPlans: PricingPlan[] = [
2127
+ {
2128
+ name: 'Starter',
2129
+ price: 29,
2130
+ yearlyPrice: 290,
2131
+ period: 'month',
2132
+ description: 'Perfect for small teams getting started.',
2133
+ features: [
2134
+ 'Up to 5 team members',
2135
+ '10GB storage',
2136
+ 'Basic analytics',
2137
+ 'Email support',
2138
+ 'Mobile app access',
2139
+ ],
2140
+ buttonText: 'Start free trial',
2141
+ icon: <Users className="h-6 w-6 text-primary" />,
2142
+ },
2143
+ {
2144
+ name: 'Professional',
2145
+ price: 99,
2146
+ yearlyPrice: 990,
2147
+ period: 'month',
2148
+ description: 'Advanced features for growing businesses.',
2149
+ features: [
2150
+ 'Up to 25 team members',
2151
+ '100GB storage',
2152
+ 'Advanced analytics & reporting',
2153
+ 'Priority support',
2154
+ 'API access',
2155
+ 'Custom integrations',
2156
+ 'Advanced security',
2157
+ ],
2158
+ popular: true,
2159
+ buttonText: 'Get started',
2160
+ badge: 'Most Popular',
2161
+ icon: <Building className="h-6 w-6 text-primary" />,
2162
+ },
2163
+ ];
2164
+
2165
+ // Example 2: Custom Three-Tier Pricing for E-commerce
2166
+ const ecommercePlans: PricingPlan[] = [
2167
+ {
2168
+ name: 'Basic Store',
2169
+ price: 0,
2170
+ period: 'month',
2171
+ description: 'Start selling with essential features.',
2172
+ features: [
2173
+ 'Up to 10 products',
2174
+ 'Basic templates',
2175
+ 'Standard checkout',
2176
+ 'Community support',
2177
+ ],
2178
+ buttonText: 'Start for free',
2179
+ icon: <Sparkles className="h-6 w-6 text-primary" />,
2180
+ },
2181
+ {
2182
+ name: 'Professional',
2183
+ price: 79,
2184
+ yearlyPrice: 790,
2185
+ period: 'month',
2186
+ description: 'Everything you need to grow your business.',
2187
+ features: [
2188
+ 'Unlimited products',
2189
+ 'Custom themes',
2190
+ 'Advanced analytics',
2191
+ 'Abandoned cart recovery',
2192
+ 'SEO tools',
2193
+ 'Priority support',
2194
+ ],
2195
+ popular: true,
2196
+ buttonText: 'Start trial',
2197
+ icon: <Zap className="h-6 w-6 text-primary" />,
2198
+ },
2199
+ {
2200
+ name: 'Enterprise',
2201
+ price: 299,
2202
+ yearlyPrice: 2990,
2203
+ period: 'month',
2204
+ description: 'Advanced features for large-scale operations.',
2205
+ features: [
2206
+ 'Everything in Professional',
2207
+ 'Multi-store management',
2208
+ 'Advanced reporting',
2209
+ 'Custom integrations',
2210
+ 'Dedicated account manager',
2211
+ 'SLA guarantee',
2212
+ ],
2213
+ buttonText: 'Contact sales',
2214
+ icon: <Crown className="h-6 w-6 text-primary" />,
2215
+ },
2216
+ ];
2217
+
2218
+ // Example 3: Custom Feature Comparison
2219
+ const designToolPlans: PricingPlan[] = [
2220
+ {
2221
+ name: 'Free',
2222
+ price: 0,
2223
+ period: 'month',
2224
+ description: 'For individual designers',
2225
+ buttonText: 'Get started',
2226
+ },
2227
+ {
2228
+ name: 'Pro',
2229
+ price: 15,
2230
+ period: 'month',
2231
+ description: 'For professional designers',
2232
+ popular: true,
2233
+ buttonText: 'Upgrade now',
2234
+ },
2235
+ {
2236
+ name: 'Team',
2237
+ price: 45,
2238
+ period: 'month',
2239
+ description: 'For design teams',
2240
+ buttonText: 'Contact sales',
2241
+ },
2242
+ ];
2243
+
2244
+ const designToolFeatures: ComparisonFeature[] = [
2245
+ {
2246
+ name: 'Projects',
2247
+ plans: { 'Free': '3', 'Pro': 'Unlimited', 'Team': 'Unlimited' }
2248
+ },
2249
+ {
2250
+ name: 'Cloud storage',
2251
+ plans: { 'Free': '2GB', 'Pro': '100GB', 'Team': '1TB' }
2252
+ },
2253
+ {
2254
+ name: 'Team collaboration',
2255
+ plans: { 'Free': false, 'Pro': false, 'Team': true }
2256
+ },
2257
+ {
2258
+ name: 'Advanced export',
2259
+ plans: { 'Free': false, 'Pro': true, 'Team': true }
2260
+ },
2261
+ {
2262
+ name: 'Priority support',
2263
+ plans: { 'Free': false, 'Pro': true, 'Team': true }
2264
+ },
2265
+ ];
2266
+
2267
+ return (
2268
+ <div className="space-y-16">
2269
+ {/* Example 1: SaaS Two-Tier Pricing */}
2270
+ <div>
2271
+ <div className="text-center mb-8">
2272
+ <h2 className="text-2xl font-bold text-foreground mb-2">Example 1: SaaS Two-Tier Pricing</h2>
2273
+ <p className="text-muted-foreground">Custom plans with yearly pricing toggle</p>
2274
+ </div>
2275
+ <PricingTwoTiers
2276
+ title="Choose Your Plan"
2277
+ subtitle="Scale your business with our powerful platform"
2278
+ plans={saasPlans}
2279
+ showYearlyToggle={true}
2280
+ />
2281
+ </div>
2282
+
2283
+ {/* Example 2: E-commerce Three-Tier Pricing */}
2284
+ <div>
2285
+ <div className="text-center mb-8">
2286
+ <h2 className="text-2xl font-bold text-foreground mb-2">Example 2: E-commerce Three-Tier Pricing</h2>
2287
+ <p className="text-muted-foreground">Including a free tier with upgrade path</p>
2288
+ </div>
2289
+ <PricingThreeTiers
2290
+ title="Store Plans"
2291
+ subtitle="Start free, upgrade as you grow"
2292
+ plans={ecommercePlans}
2293
+ showYearlyToggle={true}
2294
+ />
2295
+ </div>
2296
+
2297
+ {/* Example 3: Simple Grid without yearly toggle */}
2298
+ <div>
2299
+ <div className="text-center mb-8">
2300
+ <h2 className="text-2xl font-bold text-foreground mb-2">Example 3: Simple Grid Layout</h2>
2301
+ <p className="text-muted-foreground">Clean layout without yearly pricing</p>
2302
+ </div>
2303
+ <PricingSimple
2304
+ title="Flexible Pricing"
2305
+ subtitle="Pay only for what you need"
2306
+ plans={defaultSimpleGridPlans}
2307
+ />
2308
+ </div>
2309
+
2310
+ {/* Example 4: Feature Comparison Table */}
2311
+ <div>
2312
+ <div className="text-center mb-8">
2313
+ <h2 className="text-2xl font-bold text-foreground mb-2">Example 4: Feature Comparison</h2>
2314
+ <p className="text-muted-foreground">Detailed feature breakdown for informed decisions</p>
2315
+ </div>
2316
+ <PricingFeatureComp
2317
+ title="Compare Features"
2318
+ subtitle="See what's included in each plan"
2319
+ plans={designToolPlans}
2320
+ features={designToolFeatures}
2321
+ />
2322
+ </div>
2323
+ </div>
2324
+ );
2325
+ }`,
2326
+ usagePath: null,
2327
+ desc: null,
2328
+ customize: null
2329
+ },
2330
+ {
2331
+ name: "Stats",
2332
+ value: "stats",
2333
+ path: "/components/catalyst-ui/marketing/sections/stats.tsx",
2334
+ source: null,
2335
+ files: {
2336
+ "Stats": "/components/catalyst-ui/marketing/sections/stats.tsx",
2337
+ },
2338
+ premium: true,
2339
+ category: "Marketing: Sections",
2340
+ tags: ["sections", "marketing"],
2341
+ features: ["Responsive", "TypeScript", "Accessible"],
2342
+ dependencies: ["lucide-react"],
2343
+ usage: `
2344
+
2345
+
2346
+
2347
+
2348
+ export default function StatsDemo555() {
2349
+ const defaultStats = [
2350
+ {
2351
+ value: "10,000+",
2352
+ label: "Developers",
2353
+ icon: <Users className="h-6 w-6" />,
2354
+ change: "12%",
2355
+ changeType: "positive",
2356
+ },
2357
+ {
2358
+ value: "4.9/5",
2359
+ label: "Average Rating",
2360
+ icon: <BarChart2 className="h-6 w-6" />,
2361
+ },
2362
+ {
2363
+ value: "99.9%",
2364
+ label: "Uptime",
2365
+ icon: <Clock className="h-6 w-6" />,
2366
+ },
2367
+ {
2368
+ value: "50+",
2369
+ label: "Countries",
2370
+ icon: <Globe className="h-6 w-6" />,
2371
+ change: "5%",
2372
+ changeType: "positive",
2373
+ },
2374
+ ];
2375
+
2376
+ return (
2377
+ // Example 1: Default variant
2378
+ <div className="flex flex-col justify-center gap-5">
2379
+ <Stats
2380
+ title="Project Stats"
2381
+ description="Overview of your project metrics"
2382
+ stats={[
2383
+ { name: "Total Subscribers", value: "71,897", change: "12%", changeType: "increase" },
2384
+ { name: "Avg. Open Rate", value: "58.16%", change: "2.4%", changeType: "increase" },
2385
+ { name: "Avg. Click Rate", value: "24.57%", change: "4.3%", changeType: "decrease" },
2386
+ ]}
2387
+ primaryAction={{ text: "View all", url: "/stats" }}
2388
+ />
2389
+
2390
+ <Stats
2391
+ variant="with-icon"
2392
+ stats={[
2393
+ { name: "Total Users", value: "2,543", icon: Users },
2394
+ { name: "Avg. Time", value: "3.2 mins", icon: Clock },
2395
+ { name: "Active Now", value: "142", icon: Activity },
2396
+ ]}
2397
+ />
2398
+
2399
+ <Stats
2400
+ variant="card"
2401
+ stats={[
2402
+ { name: "Revenue", value: "$405,091", change: "+4.75%", changeType: "increase" },
2403
+ { name: "Overdue Invoices", value: "$12,787", change: "+54.02%", changeType: "increase" },
2404
+ { name: "Outstanding", value: "$245,988", change: "-1.39%", changeType: "decrease" },
2405
+ ]}
2406
+ />
2407
+ </div>
2408
+ );
2409
+ }
2410
+ /** Basic usage with defaults
2411
+ <StatsSection
2412
+ stats={[
2413
+ {
2414
+ value: "10K+",
2415
+ label: "Downloads",
2416
+ change: "20%",
2417
+ changeType: "positive"
2418
+ }
2419
+ ]}
2420
+ />
2421
+
2422
+ // Card variant with custom icons
2423
+ <StatsSection
2424
+ title="Our Metrics"
2425
+ variant="card"
2426
+ stats={[
2427
+ {
2428
+ value: "99%",
2429
+ label: "Satisfaction",
2430
+ icon: <Heart className="h-6 w-6" />
2431
+ }
2432
+ ]}
2433
+ />
2434
+
2435
+ // Dark variant with CTA
2436
+ <StatsSection
2437
+ title="Performance Stats"
2438
+ variant="dark"
2439
+ stats={statsData}
2440
+ cta={{ text: "View details", url: "/stats" }}
2441
+ className="my-custom-class"
2442
+ /> */
2443
+ `,
2444
+ usagePath: null,
2445
+ desc: null,
2446
+ customize: null
2447
+ },
2448
+ {
2449
+ name: "Testimonial",
2450
+ value: "testimonial",
2451
+ path: "/components/catalyst-ui/marketing/sections/testimonial.tsx",
2452
+ source: null,
2453
+ files: {
2454
+ "Testimonial": "/components/catalyst-ui/marketing/sections/testimonial.tsx",
2455
+ },
2456
+ premium: true,
2457
+ category: "Marketing: Sections",
2458
+ tags: ["sections", "marketing"],
2459
+ features: ["Responsive", "TypeScript", "Accessible"],
2460
+ dependencies: ["lucide-react"],
2461
+ usage: `
2462
+
2463
+
2464
+ export default function TestimonialsPageDemo() {
2465
+ const testimonials = [
2466
+ {
2467
+ name: "Sarah Johnson",
2468
+ role: "Marketing Director",
2469
+ image: "/images/avatar1.jpg",
2470
+ content: "This product has completely transformed our workflow. The team is more productive and we're seeing better results than ever before.",
2471
+ rating: 5,
2472
+ },
2473
+ {
2474
+ name: "Michael Chen",
2475
+ role: "CTO",
2476
+ image: "/images/avatar2.jpg",
2477
+ content: "Incredible service and support. The implementation was seamless and our engineers love working with the platform.",
2478
+ rating: 4,
2479
+ },
2480
+ ];
2481
+
2482
+ return (
2483
+ <Testimonials
2484
+ testimonials={testimonials}
2485
+ style="with-rating"
2486
+ title="Trusted by developers worldwide"
2487
+ description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
2488
+ primaryButtonText="Get started"
2489
+ secondaryButtonText="Learn more"
2490
+ primaryButtonUrl="/signup"
2491
+ secondaryButtonUrl="/about"
2492
+ />
2493
+ );
2494
+ }
2495
+ `,
2496
+ usagePath: null,
2497
+ desc: null,
2498
+ customize: null
2499
+ },
2500
+ ];
2501
+ const demoComponent = [
2502
+ {
2503
+ name: "Auth System",
2504
+ value: "auth-system",
2505
+ importPath: "~/components/catalyst-ui/components/utility/auth-system",
2506
+ multiImport: null,
2507
+ basicusage: null,
2508
+ path: "/components/catalyst-ui/components/utility/auth-system.tsx",
2509
+ source: null,
2510
+ usagePath: "/components/catalyst-ui/components/utility/auth-system.tsx",
2511
+ usage: null,
2512
+ files: {
2513
+ "team-large-grid": "/components/catalyst-ui/marketing/pages/team-large-grid.tsx",
2514
+ },
2515
+ premium: true,
2516
+ category: "Core: Components",
2517
+ tags: ["ui", "components", "interactive"],
2518
+ features: ["Responsive", "TypeScript", "Accessible"],
2519
+ dependencies: ["lucide-react"],
2520
+ props: {
2521
+ "Tabs": [
2522
+ { name: "className", type: "string", default: "null" },
2523
+ { name: "defaultValue", type: "string", default: "null" },
2524
+ { name: "value", type: "string", default: "null" },
2525
+ { name: "onValueChange", type: "(value: string) => void", default: "null" },
2526
+ ],
2527
+ "TabsList": [
2528
+ { name: "className", type: "string", default: "null" },
2529
+ { name: "variant", type: "default | underline", default: "default" },
2530
+ ],
2531
+ "TabsTrigger": [
2532
+ { name: "className", type: "string", default: "null" },
2533
+ { name: "variant", type: "default | underline", default: "default" },
2534
+ { name: "value", type: "string", default: "null" },
2535
+ { name: "disabled", type: "boolean", default: "false" },
2536
+ ],
2537
+ "TabsContent": [
2538
+ { name: "className", type: "string", default: "null" },
2539
+ { name: "value", type: "string", default: "null" },
2540
+ ],
2541
+ },
2542
+ desc: null,
2543
+ status: null,
2544
+ lastUpdated: null
2545
+ },
2546
+ ];