@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,1510 @@
1
+ export const componentsMedia = [
2
+ {
3
+ name: "Parallax Scroll",
4
+ value: "parallax-scroll",
5
+ importPath: "~/components/catalyst-ui/media/parallax-scroll",
6
+ multiImport: null,
7
+ basicusage: `
8
+ <ParallaxScroll images={images} />
9
+
10
+ <ParallaxScroll
11
+ images={imageUrls}
12
+ className="custom-height"
13
+ />`,
14
+ path: "/components/catalyst-ui/media/parallax-scroll.tsx",
15
+ source: null,
16
+ usagePath: "/components/catalyst-ui/media/parallax-scroll.tsx",
17
+ usage: null,
18
+ premium: true,
19
+ category: "Media",
20
+ tags: ["parallax", "scroll", "gallery", "animation"],
21
+ features: ["Scroll-triggered", "Parallax Effect", "Responsive", "TypeScript"],
22
+ dependencies: ["framer-motion", "react"],
23
+ props: {
24
+ "ParallaxScroll": [
25
+ { name: "images", type: "string[]", default: "required" },
26
+ { name: "className", type: "string", default: "null" },
27
+ ],
28
+ },
29
+ desc: null,
30
+ status: null,
31
+ lastUpdated: null
32
+ },
33
+ {
34
+ name: "Carousel 2",
35
+ value: "carousel-2",
36
+ importPath: "~/components/catalyst-ui/media/carousel-2",
37
+ multiImport: "Carousel2, CarouselItem2, carouselVariants, carouselContentVariants, carouselItemVariants",
38
+ basicusage: `
39
+ <Carousel2>
40
+ <div>Slide 1</div>
41
+ <div>Slide 2</div>
42
+ <div>Slide 3</div>
43
+ </Carousel2>
44
+
45
+ <Carousel2
46
+ variant="default"
47
+ autoPlay={false}
48
+ autoPlayInterval={3000}
49
+ showControls={true}
50
+ showIndicators={true}
51
+ loop={true}
52
+ className=""
53
+ >
54
+ <div>Slide 1</div>
55
+ <div>Slide 2</div>
56
+ <div>Slide 3</div>
57
+ </Carousel2>`,
58
+ path: "/components/catalyst-ui/media/carousel-2.tsx",
59
+ source: null,
60
+ usagePath: "/components/catalyst-ui/media/carousel-2.tsx",
61
+ usage: null,
62
+ premium: true,
63
+ category: "Media",
64
+ tags: ["media", "carousel", "slider", "slideshow", "gallery", "images"],
65
+ features: ["Responsive", "TypeScript", "Accessible", "Auto-Play", "Navigation Controls", "Indicators", "Loop Mode", "Hover Pause"],
66
+ dependencies: ["react", "class-variance-authority"],
67
+ props: {
68
+ "Carousel2": [
69
+ { name: "variant", type: "default | contained", default: "default" },
70
+ { name: "autoPlay", type: "boolean", default: "false" },
71
+ { name: "autoPlayInterval", type: "number", default: "3000" },
72
+ { name: "showControls", type: "boolean", default: "true" },
73
+ { name: "showIndicators", type: "boolean", default: "true" },
74
+ { name: "loop", type: "boolean", default: "true" },
75
+ { name: "className", type: "string", default: "null" },
76
+ { name: "children", type: "ReactNode", default: "null" },
77
+ ],
78
+ "CarouselItem2": [
79
+ { name: "size", type: "sm | md | lg | full | auto", default: "md" },
80
+ { name: "className", type: "string", default: "null" },
81
+ { name: "children", type: "ReactNode", default: "null" },
82
+ ],
83
+ },
84
+ desc: null,
85
+ status: null,
86
+ lastUpdated: null
87
+ },
88
+ {
89
+ name: 'Interactive Icon Cloud',
90
+ value: 'interactive-icon-cloud',
91
+ importPath: '~/components/catalyst-ui/media/interactive-icon-cloud',
92
+ multiImport: 'InteractiveIconCloud, cloudProps, renderCustomIcon',
93
+ basicusage: `
94
+ <InteractiveIconCloud iconSlugs={["typescript", "javascript", "react"]} />`,
95
+ path: '/components/catalyst-ui/media/icon-cloud.tsx',
96
+ source: null,
97
+ usagePath: '/components/catalyst-ui/media/interactive-icon-cloud.tsx',
98
+ usage: null,
99
+ premium: true,
100
+ category: 'Media',
101
+ tags: ['icon', 'cloud', '3d', 'interactive', 'animation', 'tech-stack'],
102
+ features: ['Responsive', 'TypeScript', 'Accessible', 'Interactive'],
103
+ dependencies: ['react', 'react-icon-cloud'],
104
+ props: {
105
+ InteractiveIconCloud: [
106
+ { name: 'iconSlugs', type: 'string[]', default: 'null' },
107
+ ],
108
+ },
109
+ desc: null,
110
+ status: null,
111
+ lastUpdated: null
112
+ },
113
+ {
114
+ name: 'Icon Cloud',
115
+ value: 'icon-cloud',
116
+ importPath: '~/components/catalyst-ui/media/icon-cloud',
117
+ multiImport: null,
118
+ basicusage: `
119
+ <IconCloud images={["url1.png", "url2.png"]} />
120
+
121
+ <IconCloud
122
+ icons={[<Icon1 />, <Icon2 />]}
123
+ images={["url1.png", "url2.png"]}
124
+ />`,
125
+ path: '/components/catalyst-ui/media/icon-cloud.tsx',
126
+ source: null,
127
+ usagePath: '/components/catalyst-ui/media/icon-cloud.tsx',
128
+ usage: null,
129
+ premium: true,
130
+ category: 'Media',
131
+ tags: ['icon', 'cloud', '3d', 'interactive', 'canvas', 'animation'],
132
+ features: ['Responsive', 'TypeScript', 'Accessible', 'Interactive'],
133
+ dependencies: ['react', 'react-dom'],
134
+ props: {
135
+ IconCloud: [
136
+ { name: 'icons', type: 'React.ReactNode[]', default: 'null' },
137
+ { name: 'images', type: 'string[]', default: 'null' },
138
+ ],
139
+ },
140
+ desc: null,
141
+ status: null,
142
+ lastUpdated: null
143
+ },
144
+ {
145
+ name: "Marquee1",
146
+ value: "marquee1",
147
+ importPath: "~/components/catalyst-ui/media/marquee1",
148
+ multiImport: null,
149
+ basicusage: `
150
+ <Marquee1>
151
+ <div>Content 1</div>
152
+ <div>Content 2</div>
153
+ </Marquee1>
154
+
155
+ <Marquee1
156
+ reverse={false}
157
+ pauseOnHover={false}
158
+ vertical={false}
159
+ repeat={4}
160
+ className=""
161
+ >
162
+ <div>Custom Content 1</div>
163
+ <div>Custom Content 2</div>
164
+ </Marquee1>`,
165
+ path: "/components/catalyst-ui/media/marquee1.tsx",
166
+ source: null,
167
+ usagePath: "/components/catalyst-ui/media/marquee1.tsx",
168
+ usage: null,
169
+ premium: true,
170
+ category: "Media",
171
+ tags: ["marquee", "scrolling", "animation", "carousel"],
172
+ features: ["TypeScript", "Responsive", "Customizable"],
173
+ dependencies: ["react"],
174
+ props: {
175
+ "Marquee1": [
176
+ { name: "className", type: "string", default: "null" },
177
+ { name: "reverse", type: "boolean", default: "false" },
178
+ { name: "pauseOnHover", type: "boolean", default: "false" },
179
+ { name: "children", type: "React.ReactNode", default: "null" },
180
+ { name: "vertical", type: "boolean", default: "false" },
181
+ { name: "repeat", type: "number", default: "4" },
182
+ ],
183
+ },
184
+ desc: null,
185
+ status: null,
186
+ lastUpdated: null
187
+ },
188
+ {
189
+ name: "Pixel Image",
190
+ value: "pixel-image",
191
+ importPath: "~/components/catalyst-ui/media/pixel-image",
192
+ multiImport: null,
193
+ basicusage: null,
194
+ path: "/components/catalyst-ui/media/pixel-image.tsx",
195
+ source: null,
196
+ usagePath: "/components/catalyst-ui/media/pixel-image.tsx",
197
+ usage: null,
198
+ premium: true,
199
+ category: "Media",
200
+ tags: ["image", "pixel", "animation", "reveal", "interactive"],
201
+ features: ["Grid-based Animation", "Grayscale Transition", "Customizable Timing", "Replay Functionality"],
202
+ dependencies: ["react"],
203
+ props: {
204
+ "PixelImage": [
205
+ { name: "src", type: "string", default: "null" },
206
+ { name: "grid", type: "PredefinedGridKey", default: "6x4" },
207
+ { name: "customGrid", type: "Grid", default: "null" },
208
+ { name: "grayscaleAnimation", type: "boolean", default: "true" },
209
+ { name: "pixelFadeInDuration", type: "number", default: "1000" },
210
+ { name: "maxAnimationDelay", type: "number", default: "1200" },
211
+ { name: "colorRevealDelay", type: "number", default: "1300" },
212
+ { name: "showReplayButton", type: "boolean", default: "false" }
213
+ ]
214
+ },
215
+ desc: null,
216
+ status: null,
217
+ lastUpdated: null
218
+ },
219
+ {
220
+ name: "Marquee",
221
+ value: "marquee",
222
+ importPath: "~/components/catalyst-ui/media/marquee",
223
+ multiImport: null,
224
+ basicusage: null,
225
+ path: "/components/catalyst-ui/media/marquee.tsx",
226
+ source: null,
227
+ usagePath: "/components/catalyst-ui/media/marquee.tsx",
228
+ usage: null,
229
+ premium: true,
230
+ category: "Media",
231
+ tags: ["marquee", "scrolling", "animation", "content", "loop"],
232
+ features: ["Auto-fill", "Pause on Hover", "Custom Speed", "Fade Effects"],
233
+ dependencies: ["react-fast-marquee", "react"],
234
+ props: {
235
+ "Marquee": [
236
+ { name: "content", type: "ReactNode[]", default: "null" },
237
+ { name: "loop", type: "number", default: "0" },
238
+ { name: "autoFill", type: "boolean", default: "true" },
239
+ { name: "pauseOnHover", type: "boolean", default: "true" },
240
+ { name: "speed", type: "number", default: "50" },
241
+ { name: "showFade", type: "boolean", default: "true" },
242
+ { name: "className", type: "string", default: "null" },
243
+ { name: "fadeClassName", type: "string", default: "null" },
244
+ { name: "itemClassName", type: "string", default: "null" },
245
+ { name: "marqueeProps", type: "Omit<FastMarqueeProps, 'children' | 'loop' | 'autoFill' | 'pauseOnHover' | 'speed'>", default: "null" }
246
+ ]
247
+ },
248
+ desc: null,
249
+ status: null,
250
+ lastUpdated: null
251
+ },
252
+ {
253
+ name: "Image Crop",
254
+ value: "image-crop",
255
+ importPath: "~/components/catalyst-ui/media/image-crop",
256
+ multiImport: "ImageCrop, ImageCropContent, ImageCropApply, ImageCropReset, Cropper",
257
+ basicusage: null,
258
+ path: "/components/catalyst-ui/media/image-crop.tsx",
259
+ source: null,
260
+ usagePath: "/components/catalyst-ui/media/image-crop.tsx",
261
+ usage: null,
262
+ premium: true,
263
+ category: "Media",
264
+ tags: ["image", "crop", "editor", "interactive", "upload"],
265
+ features: ["Aspect Ratio Control", "File Size Optimization", "Real-time Preview", "Reset Functionality"],
266
+ dependencies: ["react-image-crop", "lucide-react", "@radix-ui/react-slot", "react"],
267
+ props: {
268
+ "ImageCrop": [
269
+ { name: "file", type: "File", default: "null" },
270
+ { name: "maxImageSize", type: "number", default: "1024 * 1024 * 5" },
271
+ { name: "onCrop", type: "(croppedImage: string) => void", default: "null" },
272
+ { name: "children", type: "ReactNode", default: "null" },
273
+ { name: "onChange", type: "ReactCropProps['onChange']", default: "null" },
274
+ { name: "onComplete", type: "ReactCropProps['onComplete']", default: "null" },
275
+ { name: "aspect", type: "number", default: "null" },
276
+ { name: "minWidth", type: "number", default: "null" },
277
+ { name: "minHeight", type: "number", default: "null" }
278
+ ],
279
+ "ImageCropContent": [
280
+ { name: "style", type: "CSSProperties", default: "null" },
281
+ { name: "className", type: "string", default: "null" }
282
+ ],
283
+ "ImageCropApply": [
284
+ { name: "asChild", type: "boolean", default: "false" },
285
+ { name: "children", type: "ReactNode", default: "null" },
286
+ { name: "onClick", type: "MouseEventHandler<HTMLButtonElement>", default: "null" }
287
+ ],
288
+ "ImageCropReset": [
289
+ { name: "asChild", type: "boolean", default: "false" },
290
+ { name: "children", type: "ReactNode", default: "null" },
291
+ { name: "onClick", type: "MouseEventHandler<HTMLButtonElement>", default: "null" }
292
+ ],
293
+ "Cropper": [
294
+ { name: "file", type: "File", default: "null" },
295
+ { name: "maxImageSize", type: "number", default: "null" },
296
+ { name: "onCrop", type: "(croppedImage: string) => void", default: "null" },
297
+ { name: "onChange", type: "ReactCropProps['onChange']", default: "null" },
298
+ { name: "onComplete", type: "ReactCropProps['onComplete']", default: "null" },
299
+ { name: "style", type: "CSSProperties", default: "null" },
300
+ { name: "className", type: "string", default: "null" },
301
+ { name: "aspect", type: "number", default: "null" },
302
+ { name: "minWidth", type: "number", default: "null" },
303
+ { name: "minHeight", type: "number", default: "null" }
304
+ ]
305
+ },
306
+ desc: null,
307
+ status: null,
308
+ lastUpdated: null
309
+ },
310
+ {
311
+ name: "Image Zoom",
312
+ value: "image-zoom",
313
+ importPath: "~/components/catalyst-ui/media/image-zoom",
314
+ multiImport: null,
315
+ basicusage: null,
316
+ path: "/components/catalyst-ui/media/image-zoom.tsx",
317
+ source: null,
318
+ usagePath: "/components/catalyst-ui/media/image-zoom.tsx",
319
+ usage: null,
320
+ premium: true,
321
+ category: "Media",
322
+ tags: ["image", "zoom", "interactive", "modal", "accessibility"],
323
+ features: ["Smooth Zooming", "Backdrop Blur", "Keyboard Navigation", "Responsive"],
324
+ dependencies: ["react-medium-image-zoom", "react"],
325
+ props: {
326
+ "ImageZoom": [
327
+ { name: "className", type: "string", default: "null" },
328
+ { name: "backdropClassName", type: "string", default: "null" },
329
+ { name: "isZoomed", type: "boolean", default: "null" },
330
+ { name: "onZoomChange", type: "(isZoomed: boolean) => void", default: "null" },
331
+ { name: "children", type: "ReactNode", default: "null" },
332
+ { name: "zoomMargin", type: "number", default: "null" },
333
+ { name: "zoomZIndex", type: "number", default: "null" },
334
+ { name: "IconZoom", type: "ReactNode", default: "null" },
335
+ { name: "IconUnzoom", type: "ReactNode", default: "null" }
336
+ ]
337
+ },
338
+ desc: null,
339
+ status: null,
340
+ lastUpdated: null
341
+ },
342
+ {
343
+ name: "Image Comparison",
344
+ value: "image-comparison",
345
+ importPath: "~/components/catalyst-ui/media/image-comparison",
346
+ multiImport: "Comparison, ComparisonItem, ComparisonHandle",
347
+ basicusage: null,
348
+ path: "/components/catalyst-ui/media/image-comparison.tsx",
349
+ source: null,
350
+ usagePath: "/components/catalyst-ui/media/image-comparison.tsx",
351
+ usage: null,
352
+ premium: true,
353
+ category: "Media",
354
+ tags: ["image", "comparison", "slider", "interactive", "drag"],
355
+ features: ["Drag & Hover Modes", "Smooth Animations", "Touch Support", "Accessible"],
356
+ dependencies: ["motion/react", "lucide-react", "react"],
357
+ props: {
358
+ "Comparison": [
359
+ { name: "className", type: "string", default: "null" },
360
+ { name: "mode", type: "hover | drag", default: "drag" },
361
+ { name: "onDragStart", type: "() => void", default: "null" },
362
+ { name: "onDragEnd", type: "() => void", default: "null" }
363
+ ],
364
+ "ComparisonItem": [
365
+ { name: "className", type: "string", default: "null" },
366
+ { name: "position", type: "left | right", default: "null" }
367
+ ],
368
+ "ComparisonHandle": [
369
+ { name: "className", type: "string", default: "null" },
370
+ { name: "children", type: "ReactNode", default: "null" }
371
+ ]
372
+ },
373
+ desc: null,
374
+ status: null,
375
+ lastUpdated: null
376
+ },
377
+ {
378
+ name: "Carousel",
379
+ value: "carousel",
380
+ importPath: "~/components/catalyst-ui/media/carousel",
381
+ multiImport: "Carousel, CarouselItem",
382
+ basicusage: null,
383
+ path: "/components/catalyst-ui/media/carousel.tsx",
384
+ source: null,
385
+ usagePath: "/components/catalyst-ui/media/carousel.tsx",
386
+ usage: null,
387
+ premium: true,
388
+ category: "Media",
389
+ tags: ["carousel", "slider", "images", "auto-play", "navigation"],
390
+ features: ["Auto-Play", "Responsive", "Customizable Controls", "Loop Mode"],
391
+ dependencies: ["class-variance-authority", "react"],
392
+ props: {
393
+ "Carousel": [
394
+ { name: "children", type: "React.ReactNode", default: "null" },
395
+ { name: "className", type: "string", default: "null" },
396
+ { name: "variant", type: "default | contained", default: "default" },
397
+ { name: "autoPlay", type: "boolean", default: "false" },
398
+ { name: "autoPlayInterval", type: "number", default: "3000" },
399
+ { name: "showControls", type: "boolean", default: "true" },
400
+ { name: "showIndicators", type: "boolean", default: "true" },
401
+ { name: "loop", type: "boolean", default: "true" }
402
+ ],
403
+ "CarouselItem": [
404
+ { name: "children", type: "React.ReactNode", default: "null" },
405
+ { name: "className", type: "string", default: "null" },
406
+ { name: "size", type: "sm | md | lg | full | auto", default: "md" }
407
+ ]
408
+ },
409
+ desc: null,
410
+ status: null,
411
+ lastUpdated: null
412
+ },
413
+ {
414
+ name: "Three D Marquee",
415
+ value: "three-d-marquee",
416
+ importPath: "~/components/catalyst-ui/media/three-d-marquee",
417
+ multiImport: "ThreeDMarquee, GridLineHorizontal, GridLineVertical",
418
+ basicusage: null,
419
+ path: "/components/catalyst-ui/media/three-d-marquee.tsx",
420
+ source: null,
421
+ usagePath: "/components/catalyst-ui/media/three-d-marquee.tsx",
422
+ usage: null,
423
+ premium: true,
424
+ category: "Media",
425
+ tags: ["3d", "animation", "marquee", "grid", "images"],
426
+ features: ["3D Transformation", "Infinite Animation", "Hover Effects", "Responsive Grid"],
427
+ dependencies: ["motion/react", "react"],
428
+ props: {
429
+ "ThreeDMarquee": [
430
+ { name: "images", type: "string[]", default: "null" },
431
+ { name: "className", type: "string", default: "null" }
432
+ ],
433
+ "GridLineHorizontal": [
434
+ { name: "className", type: "string", default: "null" },
435
+ { name: "offset", type: "string", default: "200px" }
436
+ ],
437
+ "GridLineVertical": [
438
+ { name: "className", type: "string", default: "null" },
439
+ { name: "offset", type: "string", default: "150px" }
440
+ ]
441
+ },
442
+ desc: null,
443
+ status: null,
444
+ lastUpdated: null
445
+ },
446
+ {
447
+ name: "Logo",
448
+ value: "logo",
449
+ importPath: "~/components/catalyst-ui/media/logo",
450
+ multiImport: "Logo, LogoImage, LogoText",
451
+ basicusage: `
452
+ <Logo url="/">
453
+ <LogoImage
454
+ src="/logo.svg"
455
+ alt="Company Logo"
456
+ title="Company Name"
457
+ />
458
+ <LogoText>Company Name</LogoText>
459
+ </Logo>
460
+
461
+ <Logo url="/" className="">
462
+ <LogoImage
463
+ src="/logo.svg"
464
+ alt="Company Logo"
465
+ title="Company Name"
466
+ className="h-10"
467
+ />
468
+ <LogoText className="text-xl">Company Name</LogoText>
469
+ </Logo>`,
470
+ path: "/components/catalyst-ui/media/logo.tsx",
471
+ source: null,
472
+ usagePath: "/components/catalyst-ui/media/logo.tsx",
473
+ usage: null,
474
+ premium: true,
475
+ category: "Media",
476
+ tags: ["components", "logo", "branding", "navigation"],
477
+ features: ["Responsive", "TypeScript", "Accessible", "Customizable"],
478
+ dependencies: ["react", "@remix-run/react"],
479
+ props: {
480
+ "Logo": [
481
+ { name: "children", type: "React.ReactNode", default: "null" },
482
+ { name: "url", type: "string", default: "/" },
483
+ { name: "className", type: "string", default: "null" },
484
+ ],
485
+ "LogoImage": [
486
+ { name: "src", type: "string", default: "null" },
487
+ { name: "alt", type: "string", default: "null" },
488
+ { name: "title", type: "string", default: "null" },
489
+ { name: "className", type: "string", default: "null" },
490
+ ],
491
+ "LogoText": [
492
+ { name: "children", type: "React.ReactNode", default: "null" },
493
+ { name: "className", type: "string", default: "null" },
494
+ ],
495
+ },
496
+ desc: null,
497
+ status: null,
498
+ lastUpdated: null
499
+ },
500
+ {
501
+ name: "Iframe",
502
+ value: "iframe",
503
+ importPath: "~/components/catalyst-ui/core/components/iframe",
504
+ multiImport: 'Iframe, iframeVariants',
505
+ path: "/components/catlyst-ui/core/components/iframe.tsx",
506
+ premium: false,
507
+ basicusage: `
508
+ <Iframe src="https://example.com" title="My iframe" />
509
+ `,
510
+ usage: `
511
+ // With variants
512
+ <Iframe
513
+ variant="elevated"
514
+ size="lg"
515
+ rounded="xl"
516
+ src="https://youtube.com/embed/..."
517
+ title="Video"
518
+ />
519
+
520
+ // Custom styling
521
+ <Iframe
522
+ className="my-custom-class"
523
+ variant="ghost"
524
+ loading="eager"
525
+ />
526
+
527
+ // Default
528
+ <Iframe
529
+ src="https://www.example.com"
530
+ title="Default iframe"
531
+ className="w-full"
532
+ />
533
+
534
+ // Bordered
535
+ <Iframe
536
+ variant="bordered"
537
+ src="https://www.example.com"
538
+ title="Bordered iframe"
539
+ className="w-full"
540
+ />
541
+
542
+ // Shadow
543
+ <Iframe
544
+ variant="shadow"
545
+ src="https://www.example.com"
546
+ title="Shadow iframe"
547
+ className="w-full"
548
+ />
549
+
550
+ // Elevated
551
+ <Iframe
552
+ variant="elevated"
553
+ src="https://www.example.com"
554
+ title="Elevated iframe"
555
+ className="w-full"
556
+ />
557
+
558
+ // Size Variants
559
+ // Extra Small (xs)
560
+ <Iframe
561
+ variant="bordered"
562
+ size="xs"
563
+ src="https://www.example.com"
564
+ title="XS iframe"
565
+ />
566
+
567
+ // Small (sm)
568
+ <Iframe
569
+ variant="bordered"
570
+ size="sm"
571
+ src="https://www.example.com"
572
+ title="Small iframe"
573
+ />
574
+
575
+ // Large (lg)
576
+ <Iframe
577
+ variant="elevated"
578
+ size="lg"
579
+ rounded="lg"
580
+ src="https://www.example.com"
581
+ title="Large iframe"
582
+ />
583
+
584
+ // Custom Usage Examples
585
+ <Iframe
586
+ variant="elevated"
587
+ size="md"
588
+ rounded="xl"
589
+ src="https://www.youtube.com/embed/dQw4w9WgXcQ"
590
+ title="YouTube Video"
591
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
592
+ allowFullScreen
593
+ />
594
+
595
+ <Iframe
596
+ variant="ghost"
597
+ size="md"
598
+ src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3048.4"
599
+ title="Google Maps"
600
+ loading="lazy"
601
+ referrerPolicy="no-referrer-when-downgrade"
602
+ />
603
+ // Basic usage
604
+ <Iframe src="https://example.com" title="My iframe" />
605
+
606
+ // With variants
607
+ <Iframe
608
+ variant="elevated"
609
+ size="lg"
610
+ rounded="xl"
611
+ src="https://youtube.com/embed/..."
612
+ title="Video"
613
+ />
614
+
615
+ // Custom styling
616
+ <Iframe
617
+ className="my-custom-class"
618
+ variant="ghost"
619
+ loading="eager"
620
+ />`,
621
+ usagePath: null,
622
+ category: "Core: Components",
623
+ tags: ["ui", "components", "interactive"],
624
+ features: ["Responsive", "TypeScript", "Accessible"],
625
+ dependencies: ["@radix-ui/react-aspect-ratio"],
626
+ props: [
627
+ { "name": "variant", "type": "'default' | 'bordered' | 'shadow' | 'elevated' | 'ghost'", "default": "'default'" },
628
+ { "name": "size", "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'auto'", "default": "'md'" },
629
+ { "name": "rounded", "type": "'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'", "default": "'md'" },
630
+ { "name": "loading", "type": "'lazy' | 'eager'", "default": "'lazy'" },
631
+ { "name": "className", "type": "string", "default": "undefined" }
632
+ ],
633
+ props2: [],
634
+ desc: null,
635
+ status: null,
636
+ lastUpdated: null
637
+ },
638
+ {
639
+ name: "embed",
640
+ value: "embed",
641
+ importPath: "~/components/catalyst-ui/media/embed",
642
+ path: "/components/catalyst-ui/media/embed.tsx",
643
+ premium: true,
644
+ source: ``,
645
+ usage: `
646
+
647
+
648
+ `,
649
+ usagePath: null,
650
+ category: "Media",
651
+ tags: ["ui", "components", "interactive"],
652
+ features: ["Responsive", "TypeScript", "Accessible"],
653
+ dependencies: ["@radix-ui/react-aspect-ratio"],
654
+ props: [
655
+ { name: "className", type: "string", default: "null" },
656
+ { name: "size", type: "sm | md | lg | xl", default: "md" },
657
+ ],
658
+ props2: [],
659
+ desc: null,
660
+ status: null,
661
+ lastUpdated: null
662
+ },
663
+ {
664
+ name: "Hero Video Dialog",
665
+ value: "hero-video-dialog",
666
+ importPath: "~/components/catalyst-ui/media/hero-video-dialog",
667
+ multiImport: null,
668
+ basicusage: `
669
+ <HeroVideoDialog
670
+ videoSrc="https://www.youtube.com/embed/example"
671
+ thumbnailSrc="/thumbnail.jpg"
672
+ />
673
+
674
+ <HeroVideoDialog
675
+ videoSrc="https://www.youtube.com/embed/example"
676
+ thumbnailSrc="/thumbnail.jpg"
677
+ thumbnailAlt="Product demo video"
678
+ animationStyle="from-center"
679
+ className="max-w-2xl mx-auto"
680
+ />`,
681
+ path: "/components/catalyst-ui/media/hero-video-dialog.tsx",
682
+ source: null,
683
+ usagePath: null,
684
+ usage: `
685
+ export function HeroVideoDialogDemo() {
686
+ return (
687
+
688
+ <div className="relative">
689
+ <HeroVideoDialog
690
+ className="block dark:hidden"
691
+ animationStyle="from-center"
692
+ videoSrc="https://www.youtube.com/embed/qh3NGpYRG3I?si=4rb-zSdDkVK9qxxb"
693
+ thumbnailSrc="https://startup-template-sage.vercel.app/hero-light.png"
694
+ thumbnailAlt="Hero Video"
695
+ />
696
+ <HeroVideoDialog
697
+ className="hidden dark:block"
698
+ animationStyle="from-center"
699
+ videoSrc="https://www.youtube.com/embed/qh3NGpYRG3I?si=4rb-zSdDkVK9qxxb"
700
+ thumbnailSrc="https://startup-template-sage.vercel.app/hero-dark.png"
701
+ thumbnailAlt="Hero Video"
702
+ />
703
+ </div>
704
+ )
705
+ }
706
+ `,
707
+ premium: true,
708
+ category: "Media",
709
+ tags: ["video", "modal", "animation", "youtube"],
710
+ features: ["Animated Modal", "Responsive", "Accessible", "TypeScript"],
711
+ dependencies: ["lucide-react", "motion", "react"],
712
+ props: {
713
+ "HeroVideoDialog": [
714
+ { name: "className", type: "string", default: "null" },
715
+ { name: "videoSrc", type: "string", default: "null" },
716
+ { name: "thumbnailSrc", type: "string", default: "null" },
717
+ { name: "thumbnailAlt", type: "string", default: "Video thumbnail" },
718
+ { name: "animationStyle", type: "AnimationStyle", default: "from-center" }
719
+ ]
720
+ },
721
+ desc: null,
722
+ status: null,
723
+ lastUpdated: null
724
+ },
725
+ {
726
+ name: "Globe",
727
+ value: "globe",
728
+ importPath: "~/components/catalyst-ui/media/globe",
729
+ multiImport: null,
730
+ basicusage: `
731
+ <Globe />
732
+
733
+ <Globe
734
+ className="w-full h-96"
735
+ config={{
736
+ markers: [
737
+ { location: [40.7128, -74.006], size: 0.1 }
738
+ ],
739
+ baseColor: [0.5, 0.5, 0.8]
740
+ }}
741
+ />`,
742
+ path: "/components/catalyst-ui/media/globe.tsx",
743
+ source: null,
744
+ usagePath: "/components/catalyst-ui/media/globe.tsx",
745
+ usage: null,
746
+ premium: true,
747
+ category: "Media",
748
+ tags: ["3d", "globe", "interactive", "world"],
749
+ features: ["3D Interactive", "Smooth Animation", "Customizable", "TypeScript"],
750
+ dependencies: ["cobe", "motion", "react"],
751
+ props: {
752
+ "Globe": [
753
+ { name: "className", type: "string", default: "null" },
754
+ { name: "config", type: "COBEOptions", default: "GLOBE_CONFIG" }
755
+ ]
756
+ },
757
+ desc: null,
758
+ status: null,
759
+ lastUpdated: null
760
+ },
761
+ {
762
+ name: "Blur Fade",
763
+ value: "blur-fade",
764
+ importPath: "~/components/catalyst-ui/media/blur-fade",
765
+ multiImport: null,
766
+ basicusage: `
767
+ <BlurFade>
768
+ <div>Content</div>
769
+ </BlurFade>
770
+
771
+ <BlurFade
772
+ delay={0.2}
773
+ duration={0.6}
774
+ direction="up"
775
+ offset={10}
776
+ blur="4px"
777
+ inView={true}
778
+ className="p-4"
779
+ >
780
+ <div>Animated content</div>
781
+ </BlurFade>`,
782
+ path: "/components/catalyst-ui/media/blur-fade.tsx",
783
+ source: null,
784
+ usagePath: null,
785
+ usage: `
786
+ const images = Array.from({ length: 9 }, (_, i) => {
787
+ const isLandscape = i % 2 === 0
788
+ const width = isLandscape ? 800 : 600
789
+ const height = isLandscape ? 600 : 800
790
+ return \`https://picsum.photos/seed/\${i + 1}/\${width}/\${height}\`
791
+ })
792
+
793
+ export function BlurFadeDemo() {
794
+ return (
795
+ <section id="photos">
796
+ <div className="columns-2 gap-4 sm:columns-3">
797
+ {images.map((imageUrl, idx) => (
798
+ <BlurFade key={imageUrl} delay={0.25 + idx * 0.05} inView>
799
+ <img
800
+ className="mb-4 size-full rounded-lg object-contain"
801
+ src={imageUrl}
802
+ alt={\`Random stock image \${idx + 1}\`}
803
+ />
804
+ </BlurFade>
805
+ ))}
806
+ </div>
807
+ </section>
808
+ )
809
+ }
810
+ `,
811
+ premium: true,
812
+ category: "Media",
813
+ tags: ["animation", "fade", "scroll", "motion"],
814
+ features: ["Smooth Animation", "Scroll Triggered", "Customizable", "TypeScript"],
815
+ dependencies: ["motion", "react"],
816
+ props: {
817
+ "BlurFade": [
818
+ { name: "className", type: "string", default: "null" },
819
+ { name: "duration", type: "number", default: "0.4" },
820
+ { name: "delay", type: "number", default: "0" },
821
+ { name: "offset", type: "number", default: "6" },
822
+ { name: "direction", type: "up | down | left | right", default: "down" },
823
+ { name: "inView", type: "boolean", default: "false" },
824
+ { name: "inViewMargin", type: "string", default: "-50px" },
825
+ { name: "blur", type: "string", default: "6px" },
826
+ { name: "variant", type: "Variants", default: "null" }
827
+ ]
828
+ },
829
+ desc: null,
830
+ status: null,
831
+ lastUpdated: null
832
+ },
833
+ {
834
+ name: "Avatar Circles",
835
+ value: "avatar-circles",
836
+ importPath: "~/components/catalyst-ui/media/avatar-circles",
837
+ multiImport: null,
838
+ basicusage: `
839
+ <AvatarCircles avatarUrls={avatars} />
840
+
841
+ <AvatarCircles
842
+ avatarUrls={avatars}
843
+ numPeople={5}
844
+ className="justify-center"
845
+ />`,
846
+ path: "/components/catalyst-ui/media/avatar-circles.tsx",
847
+ source: null,
848
+ usagePath: "/components/catalyst-ui/media/avatar-circles.tsx",
849
+ usage: null,
850
+ premium: true,
851
+ category: "Media",
852
+ tags: ["avatars", "profile", "team", "overlap"],
853
+ features: ["Responsive", "Accessible", "TypeScript", "Interactive"],
854
+ dependencies: ["react"],
855
+ props: {
856
+ "AvatarCircles": [
857
+ { name: "className", type: "string", default: "null" },
858
+ { name: "numPeople", type: "number", default: "null" },
859
+ { name: "avatarUrls", type: "Avatar[]", default: "[]" }
860
+ ]
861
+ },
862
+ desc: null,
863
+ status: null,
864
+ lastUpdated: null
865
+ },
866
+ {
867
+ name: "Google Map",
868
+ value: "google-map",
869
+ importPath: "~/components/catalyst-ui/media/google-map",
870
+ multiImport: "GoogleMap, MapMarker",
871
+ basicusage: `<GoogleMap
872
+ apiKey="YOUR_GOOGLE_MAPS_API_KEY"
873
+ center={{ lat: 51.0447, lng: -114.0719 }}
874
+ zoom={12}
875
+ searchable={true}
876
+ />
877
+
878
+ <GoogleMap
879
+ apiKey="YOUR_GOOGLE_MAPS_API_KEY"
880
+ variant="rounded"
881
+ size="lg"
882
+ center={{ lat: 51.0447, lng: -114.0719 }}
883
+ zoom={12}
884
+ markers={[
885
+ {
886
+ id: "1",
887
+ position: { lat: 51.0447, lng: -114.0719 },
888
+ title: "Calgary Tower",
889
+ description: "Iconic landmark"
890
+ }
891
+ ]}
892
+ searchable={true}
893
+ showControls={true}
894
+ mapTypeControl={true}
895
+ streetViewControl={true}
896
+ fullscreenControl={true}
897
+ mapTypeId="roadmap"
898
+ gestureHandling="auto"
899
+ styles={[]}
900
+ className=""
901
+ onMarkerClick={(marker) => console.log(marker)}
902
+ onMapClick={(event) => console.log(event)}
903
+ />`,
904
+ path: "/components/catalyst-ui/media/google-map.tsx",
905
+ source: null,
906
+ usagePath: "/components/catalyst-ui/media/google-map.tsx",
907
+ usage: null,
908
+ premium: true,
909
+ category: "Media",
910
+ tags: ["ui", "components", "maps", "interactive", "google", "location"],
911
+ features: ["Responsive", "TypeScript", "Accessible", "Searchable", "Customizable Markers", "Multiple Map Types", "Custom Styling"],
912
+ dependencies: ["lucide-react", "react", "class-variance-authority", "radix-ui/react-slot"],
913
+ props: {
914
+ "GoogleMap": [
915
+ { name: "apiKey", type: "string", default: "required" },
916
+ { name: "center", type: "{ lat: number; lng: number }", default: "{ lat: 51.0447, lng: -114.0719 }" },
917
+ { name: "zoom", type: "number", default: "10" },
918
+ { name: "markers", type: "MapMarker[]", default: "[]" },
919
+ { name: "searchable", type: "boolean", default: "false" },
920
+ { name: "showControls", type: "boolean", default: "true" },
921
+ { name: "mapTypeControl", type: "boolean", default: "true" },
922
+ { name: "streetViewControl", type: "boolean", default: "true" },
923
+ { name: "fullscreenControl", type: "boolean", default: "true" },
924
+ { name: "onMarkerClick", type: "(marker: MapMarker) => void", default: "null" },
925
+ { name: "onMapClick", type: "(event: any) => void", default: "null" },
926
+ { name: "mapTypeId", type: "roadmap | satellite | hybrid | terrain", default: "roadmap" },
927
+ { name: "gestureHandling", type: "cooperative | greedy | none | auto", default: "auto" },
928
+ { name: "styles", type: "any[]", default: "null" },
929
+ { name: "variant", type: "default | rounded | square | pill", default: "default" },
930
+ { name: "size", type: "sm | default | lg | xl | full", default: "default" },
931
+ { name: "className", type: "string", default: "null" },
932
+ ],
933
+ "MapMarker": [
934
+ { name: "id", type: "string", default: "required" },
935
+ { name: "position", type: "{ lat: number; lng: number }", default: "required" },
936
+ { name: "title", type: "string", default: "null" },
937
+ { name: "description", type: "string", default: "null" },
938
+ { name: "icon", type: "string", default: "null" },
939
+ ],
940
+ },
941
+ desc: null,
942
+ status: null,
943
+ lastUpdated: null
944
+ },
945
+ {
946
+ name: "CarouselV1",
947
+ value: "carousel-1",
948
+ importPath: "~/components/catalyst-ui/media/carousel-1",
949
+ multiImport: null,
950
+ basicusage: `<Carousel items={[]} />
951
+
952
+ <Carousel
953
+ items={[]}
954
+ renderCard={undefined}
955
+ CardComponent={undefined}
956
+ autoRotate={true}
957
+ autoRotateInterval={10000}
958
+ snap={false}
959
+ title=""
960
+ subTitle=""
961
+ className="max-w-2xl"
962
+ cardClassName="w-80 h-64"
963
+ showControls={true}
964
+ controlsClassName=""
965
+ orientation="horizontal"
966
+ />`,
967
+ path: "/components/catalyst-ui/media/carousel-1.tsx",
968
+ source: null,
969
+ usagePath: "/components/catalyst-ui/media/carousel-1.tsx",
970
+ usage: null,
971
+ premium: true,
972
+ category: "Media",
973
+ tags: ["carousel", "slider", "display", "interactive", "3d"],
974
+ features: ["Responsive", "TypeScript", "Accessible", "Drag Support", "Touch Support", "Auto Rotate"],
975
+ dependencies: ["lucide-react", "react"],
976
+ props: {
977
+ "Carousel": [
978
+ { name: "items", type: "T[]", default: "[]" },
979
+ { name: "renderCard", type: "(item: T, index: number) => React.ReactNode", default: "undefined" },
980
+ { name: "CardComponent", type: "React.ComponentType<{ item: T; index: number }>", default: "undefined" },
981
+ { name: "autoRotate", type: "boolean", default: "true" },
982
+ { name: "autoRotateInterval", type: "number", default: "10000" },
983
+ { name: "snap", type: "boolean", default: "false" },
984
+ { name: "title", type: "string", default: "undefined" },
985
+ { name: "subTitle", type: "string", default: "undefined" },
986
+ { name: "className", type: "string", default: "max-w-2xl" },
987
+ { name: "cardClassName", type: "string", default: "w-80 h-64" },
988
+ { name: "showControls", type: "boolean", default: "true" },
989
+ { name: "controlsClassName", type: "string", default: "" },
990
+ { name: "orientation", type: "horizontal | vertical", default: "horizontal" },
991
+ ],
992
+ },
993
+ desc: "This variant contains both veritcal and horizontal options, where you can supply simple images or full card components to be used and displayed in the carousel.",
994
+ status: null,
995
+ lastUpdated: null
996
+ },
997
+ {
998
+ name: "Infinite Scroll",
999
+ value: "infinite-scroll",
1000
+ importPath: "~/components/catalyst-ui/media/infinite-scroll",
1001
+ path: "/components/catalyst-ui/media/infinite-scroll.tsx",
1002
+ source: null,
1003
+ usagePath: null,
1004
+ basicusage: `<InfiniteScroll />`,
1005
+ usage: `
1006
+ export function InfiniteScrollDemo() {
1007
+ const brandItems: ScrollItem[] = [
1008
+ { id: '1', name: 'Trimzales', icon: <Zap className="w-8 h-8" /> },
1009
+ { id: '2', name: 'ZenTrailMs', icon: <Code className="w-8 h-8" /> },
1010
+ { id: '3', name: 'Wavelength', icon: <Globe className="w-8 h-8" /> },
1011
+ { id: '4', name: 'AlphaHex', icon: <Star className="w-8 h-8" /> },
1012
+ { id: '5', name: 'Mistranet', icon: <Shield className="w-8 h-8" /> },
1013
+ { id: '6', name: 'BriteMank', icon: <Rocket className="w-8 h-8" /> },
1014
+ { id: '7', name: 'Limerantz', icon: <Sparkles className="w-8 h-8" /> },
1015
+ { id: '8', name: 'Streamlinz', icon: <Heart className="w-8 h-8" /> },
1016
+ ];
1017
+
1018
+ const cardItems: ScrollItem[] = [
1019
+ {
1020
+ id: '1',
1021
+ name: 'Next.js',
1022
+ icon: <Code className="w-6 h-6" />,
1023
+ description: 'The React Framework for Production'
1024
+ },
1025
+ {
1026
+ id: '2',
1027
+ name: 'TypeScript',
1028
+ icon: <Zap className="w-6 h-6" />,
1029
+ description: 'JavaScript with syntax for types'
1030
+ },
1031
+ {
1032
+ id: '3',
1033
+ name: 'Tailwind CSS',
1034
+ icon: <Sparkles className="w-6 h-6" />,
1035
+ description: 'A utility-first CSS framework'
1036
+ },
1037
+ {
1038
+ id: '4',
1039
+ name: 'Remix',
1040
+ icon: <Globe className="w-6 h-6" />,
1041
+ description: 'Full stack web framework'
1042
+ },
1043
+ {
1044
+ id: '5',
1045
+ name: 'React',
1046
+ icon: <Star className="w-6 h-6" />,
1047
+ description: 'A JavaScript library for building UIs'
1048
+ }
1049
+ ];
1050
+
1051
+ const logoItems: ScrollItem[] = [
1052
+ { id: '1', name: 'Logo 1', icon: <Zap className="w-12 h-12" /> },
1053
+ { id: '2', name: 'Logo 2', icon: <Code className="w-12 h-12" /> },
1054
+ { id: '3', name: 'Logo 3', icon: <Globe className="w-12 h-12" /> },
1055
+ { id: '4', name: 'Logo 4', icon: <Star className="w-12 h-12" /> },
1056
+ { id: '5', name: 'Logo 5', icon: <Shield className="w-12 h-12" /> },
1057
+ { id: '6', name: 'Logo 6', icon: <Rocket className="w-12 h-12" /> },
1058
+ ];
1059
+
1060
+ const minimalItems: ScrollItem[] = [
1061
+ { id: '1', name: 'JavaScript' },
1062
+ { id: '2', name: 'TypeScript' },
1063
+ { id: '3', name: 'React' },
1064
+ { id: '4', name: 'Next.js' },
1065
+ { id: '5', name: 'Tailwind CSS' },
1066
+ { id: '6', name: 'Node.js' },
1067
+ { id: '7', name: 'PostgreSQL' },
1068
+ { id: '8', name: 'MongoDB' },
1069
+ ];
1070
+
1071
+ return (
1072
+ <div className="min-h-screen bg-background p-8 space-y-16">
1073
+ <div className="max-w-6xl mx-auto">
1074
+ <h1 className="text-4xl font-bold text-foreground mb-2">Infinite Scroll Component</h1>
1075
+ <p className="text-muted-foreground mb-16">
1076
+ A versatile infinite scrolling component with multiple variants, directions, and customization options.
1077
+ </p>
1078
+
1079
+ <div className="space-y-16">
1080
+ <section>
1081
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Default Variant</h2>
1082
+ <p className="text-muted-foreground mb-6">Basic brand showcase with icons and names</p>
1083
+ <InfiniteScroll items={brandItems} />
1084
+ </section>
1085
+
1086
+ <section>
1087
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Brands Variant</h2>
1088
+ <p className="text-muted-foreground mb-6">Styled brand display with consistent spacing</p>
1089
+ <InfiniteScroll items={brandItems} variant="brands" speed="slow" />
1090
+ </section>
1091
+
1092
+ <section>
1093
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Logos Only</h2>
1094
+ <p className="text-muted-foreground mb-6">Clean logo display without text</p>
1095
+ <InfiniteScroll items={logoItems} variant="logos" speed="fast" />
1096
+ </section>
1097
+
1098
+ <section>
1099
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Card Variant</h2>
1100
+ <p className="text-muted-foreground mb-6">Card-based layout with descriptions</p>
1101
+ <InfiniteScroll items={cardItems} variant="cards" gap="lg" />
1102
+ </section>
1103
+
1104
+ <section>
1105
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Minimal Text</h2>
1106
+ <p className="text-muted-foreground mb-6">Simple text-only scrolling</p>
1107
+ <InfiniteScroll items={minimalItems} variant="minimal" speed="fast" />
1108
+ </section>
1109
+
1110
+ <section>
1111
+ <h2 className="text-2xl font-semibold text-foreground mb-4">Right Direction</h2>
1112
+ <p className="text-muted-foreground mb-6">Scrolling from right to left</p>
1113
+ <InfiniteScroll items={brandItems} direction="right" />
1114
+ </section>
1115
+
1116
+ <section>
1117
+ <h2 className="text-2xl font-semibold text-foreground mb-4">No Hover Pause</h2>
1118
+ <p className="text-muted-foreground mb-6">Continuous scrolling without pause on hover</p>
1119
+ <InfiniteScroll items={brandItems} pauseOnHover={false} />
1120
+ </section>
1121
+ </div>
1122
+
1123
+ <div className="mt-16 bg-card border rounded-lg p-8">
1124
+ <h3 className="text-xl font-semibold text-foreground mb-4">Component Features</h3>
1125
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4 text-sm text-muted-foreground">
1126
+ <div>• Multiple style variants (default, brands, logos, cards, minimal)</div>
1127
+ <div>• Configurable scroll direction (left/right)</div>
1128
+ <div>• Adjustable scroll speed (slow, normal, fast)</div>
1129
+ <div>• Optional pause on hover</div>
1130
+ <div>• Customizable gap spacing</div>
1131
+ <div>• Smooth gradient mask for seamless loops</div>
1132
+ <div>• TypeScript support with proper interfaces</div>
1133
+ <div>• Responsive design with Tailwind CSS</div>
1134
+ </div>
1135
+ </div>
1136
+ </div>
1137
+ </div>
1138
+ );
1139
+ }
1140
+ `,
1141
+ premium: true,
1142
+ category: "Media",
1143
+ tags: ["media", "scroll", "infinite"],
1144
+ features: ["Responsive", "TypeScript", "Accessible"],
1145
+ dependencies: ["lucide-react"],
1146
+ props: [
1147
+ { name: "items", type: "array", default: "null" },
1148
+ { name: "variant", type: "default | brands | logos | cards | minimal ", default: "default" },
1149
+ { name: "direction", type: "left | right", default: "left" },
1150
+ { name: "speed", type: "slow | normal | fast", default: "false" },
1151
+ { name: "pauseOnHover", type: "boolean", default: "true" },
1152
+ { name: "gap", type: "sm | md | lg | xl", default: "md" },
1153
+ { name: "className", type: "string", default: "null" },
1154
+ ],
1155
+ props2: [],
1156
+ desc: "Infinite scrolling component for loading content dynamically",
1157
+ status: null,
1158
+ lastUpdated: null
1159
+ },
1160
+ {
1161
+ name: "galleria",
1162
+ value: "galleria",
1163
+ importPath: "~/components/catalyst-ui/components/messages/galleria",
1164
+ path: "/components/catalyst-ui/media/galleria.tsx",
1165
+ premium: true,
1166
+ source: null,
1167
+ usage: `
1168
+ // Minimal usage
1169
+ <Galleria images={productImages} />
1170
+
1171
+ // Advanced usage with all props
1172
+ <Galleria
1173
+ images={vacationPhotos}
1174
+ autoPlay={true}
1175
+ autoPlayInterval={5000}
1176
+ showThumbnails={true}
1177
+ showControls={true}
1178
+ showIndicators={true}
1179
+ className="custom-galleria-styles"
1180
+ aspectRatio="4/3"
1181
+ transitionDuration={300}
1182
+ startIndex={2}
1183
+ loop={true}
1184
+ fullscreen={true}
1185
+ />
1186
+ `,
1187
+ usagePath: null,
1188
+ category: "Media",
1189
+ tags: ["ui", "components", "interactive"],
1190
+ features: ["Responsive", "TypeScript", "Accessible"],
1191
+ dependencies: ["@radix-ui/react-aspect-ratio"],
1192
+ props: [
1193
+ { name: "emblaApi", type: "EmblaCarouselType | undefined", default: "undefined" },
1194
+ { name: "className", type: "string", default: "null" },
1195
+ { name: "showIndicators", type: "boolean", default: "true" },
1196
+ { name: "showControls", type: "boolean", default: "true" },
1197
+ { name: "autoPlay", type: "boolean", default: "false" },
1198
+ { name: "loop", type: "boolean", default: "false" }
1199
+ ],
1200
+ props2: [],
1201
+ desc: null,
1202
+ status: null,
1203
+ lastUpdated: null
1204
+ },
1205
+ {
1206
+ name: "Carousel With Indicator",
1207
+ value: "embla-carousel-snap",
1208
+ importPath: "~/components/catalyst-ui/media/embla-carousel-snap",
1209
+ path: "/components/catalyst-ui/media/embla-carousel-snap.tsx",
1210
+ premium: true,
1211
+ source: null,
1212
+ basicusage: `
1213
+
1214
+
1215
+
1216
+
1217
+ const CarouselDemo: React.FC = () => {
1218
+ const [emblaRef, emblaApi] = useEmblaCarousel()
1219
+ const { selectedSnap, snapCount } = useSelectedSnapDisplay(emblaApi)
1220
+
1221
+ return (
1222
+ <div className="embla">
1223
+ <div className="embla__viewport" ref={emblaRef}>
1224
+ <div className="embla__container">
1225
+ <div className="embla__slide">Slide 1</div>
1226
+ <div className="embla__slide">Slide 2</div>
1227
+ <div className="embla__slide">Slide 3</div>
1228
+ <div className="embla__slide">Slide 4</div>
1229
+ </div>
1230
+ </div>
1231
+
1232
+ {/* Display current slide position */}
1233
+ <SelectedSnapDisplay selectedSnap={selectedSnap} snapCount={snapCount} />
1234
+ </div>
1235
+ )
1236
+ }
1237
+
1238
+ export default CarouselDemo`,
1239
+ usage: `
1240
+
1241
+
1242
+
1243
+
1244
+ const CarouselDemo: React.FC = () => {
1245
+ const [emblaRef, emblaApi] = useEmblaCarousel()
1246
+ const { selectedSnap, snapCount } = useSelectedSnapDisplay(emblaApi)
1247
+
1248
+ return (
1249
+ <div className="embla">
1250
+ <div className="embla__viewport" ref={emblaRef}>
1251
+ <div className="embla__container">
1252
+ <div className="embla__slide">Slide 1</div>
1253
+ <div className="embla__slide">Slide 2</div>
1254
+ <div className="embla__slide">Slide 3</div>
1255
+ <div className="embla__slide">Slide 4</div>
1256
+ </div>
1257
+ </div>
1258
+
1259
+ {/* Display current slide position */}
1260
+ <SelectedSnapDisplay selectedSnap={selectedSnap} snapCount={snapCount} />
1261
+ </div>
1262
+ )
1263
+ }
1264
+
1265
+ // Custom styled display
1266
+ const CustomSnapDisplay: React.FC<PropType> = ({ selectedSnap, snapCount }) => (
1267
+ <div className="custom-indicator">
1268
+ <span className="current">{selectedSnap + 1}</span>
1269
+ <span className="separator">of</span>
1270
+ <span className="total">{snapCount}</span>
1271
+ </div>
1272
+ )
1273
+ `,
1274
+ usagePath: null,
1275
+ category: "Media",
1276
+ tags: ["ui", "components", "interactive"],
1277
+ features: ["Responsive", "TypeScript", "Accessible"],
1278
+ dependencies: ['embla-carousel'],
1279
+ props: [
1280
+ { name: "selectedSnap", type: "number", default: "null" },
1281
+ { name: "snapCount", type: "number", default: "null" },
1282
+ ],
1283
+ props2: [],
1284
+ desc: null,
1285
+ status: null,
1286
+ lastUpdated: null
1287
+ },
1288
+ {
1289
+ name: "Embla Carousel",
1290
+ value: "embla-carousel-arrow-buttons",
1291
+ importPath: "~/components/catalyst-ui/media/embla-carousel-arrow-buttons",
1292
+ path: "/components/catalyst-ui/media/embla-carousel-arrow-buttons.tsx",
1293
+ premium: true,
1294
+ source: null,
1295
+ usage: `
1296
+
1297
+ `,
1298
+ usagePath: null,
1299
+ category: "Media",
1300
+ tags: ["ui", "components", "interactive"],
1301
+ features: ["Responsive", "TypeScript", "Accessible"],
1302
+ dependencies: ['embla-carousel'],
1303
+ props: [
1304
+ { name: "selectedSnap", type: "number", default: "null" },
1305
+ { name: "snapCount", type: "number", default: "null" },
1306
+ ],
1307
+ props2: [],
1308
+ desc: null,
1309
+ status: null,
1310
+ lastUpdated: null
1311
+ },
1312
+ {
1313
+ name: "carousel hero",
1314
+ value: "carousel-hero",
1315
+ importPath: "~/components/catalyst-ui/media/carousel-hero",
1316
+ path: "/components/catalyst-ui/media/carousel-hero.tsx",
1317
+ premium: true,
1318
+ source: null,
1319
+ usage: null,
1320
+ usagePath: null,
1321
+ category: "Media",
1322
+ tags: ["ui", "components", "interactive"],
1323
+ features: ["Responsive", "TypeScript", "Accessible"],
1324
+ dependencies: ['lucide-react'],
1325
+ props: [
1326
+ { name: "items", type: "Array<HeroItem>", default: "[]" },
1327
+ { name: "autoPlay", type: "boolean", default: "true" },
1328
+ { name: "autoPlayInterval", type: "number", default: "6000" },
1329
+ { name: "showNavigation", type: "boolean", default: "true" },
1330
+ { name: "showIndicators", type: "boolean", default: "true" },
1331
+ { name: "className", type: "string", default: "''" }
1332
+ ],
1333
+ props2: [],
1334
+ desc: null,
1335
+ status: null,
1336
+ lastUpdated: null
1337
+ },
1338
+ {
1339
+ name: "Image",
1340
+ value: "image",
1341
+ importPath: "~/components/catalyst-ui/media/image",
1342
+ path: "/components/catalyst-ui/media/image.tsx",
1343
+ premium: false,
1344
+ source: `
1345
+
1346
+
1347
+ interface Props
1348
+ extends React.DetailedHTMLProps<
1349
+ React.ImgHTMLAttributes<HTMLImageElement>,
1350
+ HTMLImageElement
1351
+ > {}
1352
+
1353
+ export function Image({ src, alt, className, ...props }: Props) {
1354
+ return (
1355
+ <img src={src} alt={alt} className={cn("rounded", className)} {...props} />
1356
+ );
1357
+ }
1358
+ `,
1359
+ category: "Media",
1360
+ tags: ["ui", "components", "interactive"],
1361
+ features: ["Responsive", "TypeScript", "Accessible"],
1362
+ dependencies: [],
1363
+ usage: `
1364
+
1365
+
1366
+ // Basic image usage
1367
+ <Image
1368
+ src="/images/hero.jpg"
1369
+ alt="A beautiful landscape"
1370
+ />
1371
+
1372
+ // Image with custom size and additional classes
1373
+ <Image
1374
+ src="/images/avatar.png"
1375
+ alt="User profile picture"
1376
+ className="w-24 h-24 object-cover"
1377
+ />
1378
+
1379
+ // Image with responsive sizing and border
1380
+ <Image
1381
+ src="/images/product.jpg"
1382
+ alt="Featured product"
1383
+ className="w-full max-w-md border-4 border-white shadow-lg"
1384
+ />
1385
+
1386
+ // Image with all native HTML image attributes
1387
+ <Image
1388
+ src="/images/banner.png"
1389
+ alt="Website banner"
1390
+ className="w-full h-64 object-contain"
1391
+ width={800}
1392
+ height={400}
1393
+ loading="lazy"
1394
+ />`,
1395
+ usagePath: null,
1396
+ props: [
1397
+ { name: "src", type: "string", default: "''", required: true },
1398
+ { name: "alt", type: "string", default: "''", required: true },
1399
+ { name: "className", type: "string", default: "null" }
1400
+ ],
1401
+ props2: [],
1402
+ desc: null,
1403
+ status: null,
1404
+ lastUpdated: null
1405
+ },
1406
+ {
1407
+ name: "carousel simple",
1408
+ value: "carousel-simple",
1409
+ importPath: "~/components/catalyst-ui/media/carousel-simple",
1410
+ path: "/components/catalyst-ui/components/carousel-simple.tsx",
1411
+ premium: true,
1412
+ source: null,
1413
+ category: "Media",
1414
+ tags: ["ui", "components", "interactive"],
1415
+ features: ["Responsive", "TypeScript", "Accessible"],
1416
+ dependencies: ["lucide-react"],
1417
+ usage: `
1418
+ const sampleSlides = [
1419
+ {
1420
+ image: "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200&h=800&fit=crop",
1421
+ title: "Mountain Adventure",
1422
+ description: "Discover breathtaking views and endless possibilities in the great outdoors"
1423
+ },
1424
+ {
1425
+ image: "https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=1200&h=800&fit=crop",
1426
+ title: "Urban Life",
1427
+ description: "Experience the energy and excitement of city living"
1428
+ },
1429
+ {
1430
+ image: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=1200&h=800&fit=crop",
1431
+ title: "Ocean Dreams",
1432
+ description: "Let the waves wash your worries away"
1433
+ },
1434
+ {
1435
+ image: "https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=1200&h=800&fit=crop",
1436
+ title: "Forest Serenity",
1437
+ description: "Find peace among the ancient trees"
1438
+ }
1439
+ ];
1440
+
1441
+ const imageOnlySlides = [
1442
+ { image: "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200&h=800&fit=crop" },
1443
+ { image: "https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=1200&h=800&fit=crop" },
1444
+ { image: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=1200&h=800&fit=crop" }
1445
+ ]
1446
+ <div>
1447
+ <h2 className="text-xl font-semibold mb-4">Center Text Position (Default)</h2>
1448
+ <SimpleCarousel slides={sampleSlides} />
1449
+ </div>
1450
+
1451
+ {/* Top Text Position */}
1452
+ <div>
1453
+ <h2 className="text-xl font-semibold mb-4">Top Text Position</h2>
1454
+ <SimpleCarousel slides={sampleSlides} textPosition="top" />
1455
+ </div>
1456
+
1457
+ {/* Bottom Text Position */}
1458
+ <div>
1459
+ <h2 className="text-xl font-semibold mb-4">Bottom Text Position</h2>
1460
+ <SimpleCarousel slides={sampleSlides} textPosition="bottom" />
1461
+ </div>
1462
+
1463
+ {/* Left Text Position */}
1464
+ <div>
1465
+ <h2 className="text-xl font-semibold mb-4">Left Text Position</h2>
1466
+ <SimpleCarousel slides={sampleSlides} textPosition="left" />
1467
+ </div>
1468
+
1469
+ {/* Right Text Position */}
1470
+ <div>
1471
+ <h2 className="text-xl font-semibold mb-4">Right Text Position</h2>
1472
+ <SimpleCarousel slides={sampleSlides} textPosition="right" />
1473
+ </div>
1474
+
1475
+ {/* Images Only */}
1476
+ <div>
1477
+ <h2 className="text-xl font-semibold mb-4">Images Only (No Text)</h2>
1478
+ <SimpleCarousel slides={imageOnlySlides} />
1479
+ </div>
1480
+
1481
+ {/* Custom Styling */}
1482
+ <div>
1483
+ <h2 className="text-xl font-semibold mb-4">Custom Height & Fast Transition</h2>
1484
+ <SimpleCarousel
1485
+ slides={sampleSlides}
1486
+ interval={2000}
1487
+ className="h-64 rounded-lg"
1488
+ />
1489
+ </div>
1490
+
1491
+ {/* No Auto Play */}
1492
+ <div>
1493
+ <h2 className="text-xl font-semibold mb-4">No Auto Play</h2>
1494
+ <SimpleCarousel slides={sampleSlides} autoPlay={false} />
1495
+ </div>
1496
+ `,
1497
+ usagePath: null,
1498
+ props: [
1499
+ { name: "slides", type: "Array<CarouselSlide>", default: "[]", required: true },
1500
+ { name: "autoPlay", type: "boolean", default: "true" },
1501
+ { name: "interval", type: "number", default: "5000" },
1502
+ { name: "textPosition", type: "'top' | 'bottom' | 'left' | 'right' | 'center'", default: "'center'" },
1503
+ { name: "className", type: "string", default: "''" }
1504
+ ],
1505
+ props2: [],
1506
+ desc: null,
1507
+ status: null,
1508
+ lastUpdated: null
1509
+ },
1510
+ ];