@catalystsoftware/ui 1.0.5 → 1.0.6

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 (155) hide show
  1. package/dist/data/data.tsx +29 -29
  2. package/dist/data/tailwind.config.js +3821 -261
  3. package/dist/data.tsx +29 -29
  4. package/package.json +4 -3
  5. package/components/catalyst-ui/buttons/burger.tsx +0 -207
  6. package/components/catalyst-ui/core/data-display/timeline.tsx +0 -210
  7. package/components/catalyst-ui/core/feedback/alert.tsx +0 -491
  8. package/components/catalyst-ui/core/feedback/spinner-1.tsx +0 -65
  9. package/components/catalyst-ui/core/feedback/toast.tsx +0 -1857
  10. package/components/catalyst-ui/core/navigation/menu.tsx +0 -164
  11. package/components/catalyst-ui/forms/toggle-class.tsx +0 -176
  12. package/components/catalyst-ui/hooks/use-copy-to-clipboard.tsx +0 -419
  13. package/components/catalyst-ui/hooks/use-counter.tsx +0 -13
  14. package/components/catalyst-ui/hooks/use-event-listener.tsx +0 -23
  15. package/components/catalyst-ui/hooks/use-export-markdown.tsx +0 -47
  16. package/components/catalyst-ui/hooks/use-focus.tsx +0 -17
  17. package/components/catalyst-ui/hooks/use-interval.tsx +0 -23
  18. package/components/catalyst-ui/hooks/use-is-client.tsx +0 -16
  19. package/components/catalyst-ui/hooks/use-media-query.tsx +0 -19
  20. package/components/catalyst-ui/hooks/use-mobile.tsx +0 -19
  21. package/components/catalyst-ui/hooks/use-resize-observer.tsx +0 -81
  22. package/components/catalyst-ui/hooks/use-timeout.tsx +0 -21
  23. package/components/catalyst-ui/hooks/use-timer.tsx +0 -209
  24. package/components/catalyst-ui/hooks/use-toggle.tsx +0 -12
  25. package/components/catalyst-ui/media/image.tsx +0 -13
  26. package/components/catalyst-ui/overlays/dual-sidebar.tsx +0 -4142
  27. package/components/catalyst-ui/overlays/sidebar-original.tsx +0 -726
  28. package/components/catalyst-ui/primitives/accordion.tsx +0 -250
  29. package/components/catalyst-ui/primitives/alert-dialog.tsx +0 -126
  30. package/components/catalyst-ui/primitives/aspect-ratio.tsx +0 -9
  31. package/components/catalyst-ui/primitives/avatar.tsx +0 -296
  32. package/components/catalyst-ui/primitives/badge.tsx +0 -57
  33. package/components/catalyst-ui/primitives/breadcrumb.tsx +0 -101
  34. package/components/catalyst-ui/primitives/button.tsx +0 -265
  35. package/components/catalyst-ui/primitives/calendar-v4.tsx +0 -208
  36. package/components/catalyst-ui/primitives/calendar.tsx +0 -295
  37. package/components/catalyst-ui/primitives/card.tsx +0 -618
  38. package/components/catalyst-ui/primitives/carousel.tsx +0 -238
  39. package/components/catalyst-ui/primitives/chart.tsx +0 -347
  40. package/components/catalyst-ui/primitives/checkbox.tsx +0 -225
  41. package/components/catalyst-ui/primitives/collapsible.tsx +0 -212
  42. package/components/catalyst-ui/primitives/command.tsx +0 -393
  43. package/components/catalyst-ui/primitives/context-menu.tsx +0 -236
  44. package/components/catalyst-ui/primitives/dialog.tsx +0 -471
  45. package/components/catalyst-ui/primitives/drawer.tsx +0 -761
  46. package/components/catalyst-ui/primitives/dropdown-menu.tsx +0 -290
  47. package/components/catalyst-ui/primitives/empty.tsx +0 -104
  48. package/components/catalyst-ui/primitives/field.tsx +0 -244
  49. package/components/catalyst-ui/primitives/hover-card.tsx +0 -124
  50. package/components/catalyst-ui/primitives/input-otp.tsx +0 -76
  51. package/components/catalyst-ui/primitives/input.tsx +0 -64
  52. package/components/catalyst-ui/primitives/item.tsx +0 -196
  53. package/components/catalyst-ui/primitives/kbd.tsx +0 -75
  54. package/components/catalyst-ui/primitives/label.tsx +0 -24
  55. package/components/catalyst-ui/primitives/navigation-menu.tsx +0 -150
  56. package/components/catalyst-ui/primitives/pagination.tsx +0 -198
  57. package/components/catalyst-ui/primitives/popover.tsx +0 -232
  58. package/components/catalyst-ui/primitives/progress.tsx +0 -34
  59. package/components/catalyst-ui/primitives/radio-group.tsx +0 -43
  60. package/components/catalyst-ui/primitives/resizable.tsx +0 -56
  61. package/components/catalyst-ui/primitives/select.tsx +0 -155
  62. package/components/catalyst-ui/primitives/separator.tsx +0 -74
  63. package/components/catalyst-ui/primitives/sheet.tsx +0 -126
  64. package/components/catalyst-ui/primitives/skeleton.tsx +0 -15
  65. package/components/catalyst-ui/primitives/slider.tsx +0 -27
  66. package/components/catalyst-ui/primitives/switch.tsx +0 -187
  67. package/components/catalyst-ui/primitives/tabs.tsx +0 -335
  68. package/components/catalyst-ui/primitives/textarea.tsx +0 -24
  69. package/components/catalyst-ui/primitives/toggle-group.tsx +0 -55
  70. package/components/catalyst-ui/primitives/toggle.tsx +0 -42
  71. package/components/catalyst-ui/primitives/tooltip.tsx +0 -116
  72. package/components/catalyst-ui/utils/basic-auth.tsx +0 -40
  73. package/components/catalyst-ui/utils/context-storage.tsx +0 -19
  74. package/components/catalyst-ui/utils/cors-middleware.tsx +0 -71
  75. package/components/catalyst-ui/utils/deferred-content.tsx +0 -595
  76. package/components/catalyst-ui/utils/honeypot-middleware.tsx +0 -38
  77. package/components/catalyst-ui/utils/incId.tsx +0 -75
  78. package/components/catalyst-ui/utils/jwk-auth.tsx +0 -36
  79. package/components/catalyst-ui/utils/request-id.tsx +0 -14
  80. package/components/catalyst-ui/utils/secure-headers.tsx +0 -37
  81. package/components/catalyst-ui/utils/server-timing.tsx +0 -23
  82. package/components/catalyst-ui/utils/utils.ts +0 -43
  83. package/components/catalyst-ui/utils/with-cookie.tsx +0 -43
  84. package/components/catalyst-ui/x/accordian-x.tsx +0 -428
  85. package/components/catalyst-ui/x/alert-x.tsx +0 -413
  86. package/components/catalyst-ui/x/animated-text-x.tsx +0 -2242
  87. package/components/catalyst-ui/x/avatar-x.tsx +0 -515
  88. package/components/catalyst-ui/x/badge-x.tsx +0 -670
  89. package/components/catalyst-ui/x/button-X.tsx +0 -2857
  90. package/components/catalyst-ui/x/button-group-x.tsx +0 -847
  91. package/components/catalyst-ui/x/calendar-x.tsx +0 -1910
  92. package/components/catalyst-ui/x/card-x.tsx +0 -2597
  93. package/components/catalyst-ui/x/checkbox-x.tsx +0 -656
  94. package/components/catalyst-ui/x/collapsible-x.tsx +0 -1360
  95. package/components/catalyst-ui/x/combobox-x.tsx +0 -911
  96. package/components/catalyst-ui/x/data-table-x.tsx +0 -1753
  97. package/components/catalyst-ui/x/date-picker-x.tsx +0 -648
  98. package/components/catalyst-ui/x/dialog-x.tsx +0 -659
  99. package/components/catalyst-ui/x/dropdown-menu-x.tsx +0 -612
  100. package/components/catalyst-ui/x/hover-card-x.tsx +0 -375
  101. package/components/catalyst-ui/x/icon-x.tsx +0 -840
  102. package/components/catalyst-ui/x/input-mask-x.tsx +0 -981
  103. package/components/catalyst-ui/x/input-otp-x.tsx +0 -659
  104. package/components/catalyst-ui/x/loader-x.tsx +0 -1757
  105. package/components/catalyst-ui/x/pagination-x.tsx +0 -622
  106. package/components/catalyst-ui/x/popover-x.tsx +0 -744
  107. package/components/catalyst-ui/x/radio-group-x.tsx +0 -499
  108. package/components/catalyst-ui/x/select-x.tsx +0 -1127
  109. package/components/catalyst-ui/x/sheet-x.tsx +0 -668
  110. package/components/catalyst-ui/x/switch-x.tsx +0 -681
  111. package/components/catalyst-ui/x/table-x.tsx +0 -574
  112. package/components/catalyst-ui/x/tabs-x.tsx +0 -839
  113. package/components/catalyst-ui/x/textarea-x.tsx +0 -1263
  114. package/components/catalyst-ui/x/tooltip-x.tsx +0 -396
  115. package/components/catalyst-ui/x/tracker-x.tsx +0 -560
  116. package/data/bg-data.tsx +0 -901
  117. package/data/buttons-data.tsx +0 -2327
  118. package/data/charts-data.tsx +0 -102
  119. package/data/chat-data.tsx +0 -83
  120. package/data/code-data.tsx +0 -1040
  121. package/data/comboboxes-data.tsx +0 -1843
  122. package/data/command-data.tsx +0 -1381
  123. package/data/core-data.tsx +0 -15953
  124. package/data/crm-data.tsx +0 -47
  125. package/data/data.tsx +0 -159
  126. package/data/date-and-time-data.tsx +0 -554
  127. package/data/dependencies.tsx +0 -7
  128. package/data/ecommerce-data.tsx +0 -1387
  129. package/data/forms-data.tsx +0 -7890
  130. package/data/hooks-data.tsx +0 -5487
  131. package/data/index.ts +0 -34
  132. package/data/inputs-data.tsx +0 -557
  133. package/data/interactive-data.tsx +0 -5394
  134. package/data/lofi-data.tsx +0 -18295
  135. package/data/marketing-data.tsx +0 -2546
  136. package/data/media-data.tsx +0 -1510
  137. package/data/motion-data.tsx +0 -5801
  138. package/data/overlay-data.tsx +0 -4136
  139. package/data/pdf-data.tsx +0 -124
  140. package/data/pos-data.tsx +0 -213
  141. package/data/postcss.config.js +0 -6
  142. package/data/primitive-data.tsx +0 -5170
  143. package/data/prompt-data.tsx +0 -1226
  144. package/data/requiredLibs.ts +0 -4
  145. package/data/sandbox-data.tsx +0 -1
  146. package/data/sidebars-data.tsx +0 -5421
  147. package/data/stacks-data.tsx +0 -32
  148. package/data/table-data.tsx +0 -706
  149. package/data/tailwind.config.js +0 -270
  150. package/data/tailwind.config.ngin.js +0 -3830
  151. package/data/tailwind.css +0 -431
  152. package/data/tools-data.tsx +0 -6910
  153. package/data/typography-data.tsx +0 -2050
  154. package/data/utils-data.tsx +0 -6500
  155. package/data/x-data.tsx +0 -1171
@@ -1,1510 +0,0 @@
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
- ];