@aspect-ops/exon-ui 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +0 -45
  2. package/dist/components/BottomNav/BottomNavItem.svelte +4 -3
  3. package/dist/components/BottomNav/BottomNavItem.svelte.d.ts +2 -1
  4. package/dist/components/CTASection/CTASection.svelte +298 -0
  5. package/dist/components/CTASection/CTASection.svelte.d.ts +15 -0
  6. package/dist/components/CTASection/index.d.ts +2 -0
  7. package/dist/components/CTASection/index.js +1 -0
  8. package/dist/components/DoughnutChart/DoughnutChart.svelte +4 -4
  9. package/dist/components/FlexibleGrid/FlexibleGrid.svelte +118 -0
  10. package/dist/components/FlexibleGrid/FlexibleGrid.svelte.d.ts +7 -0
  11. package/dist/components/FlexibleGrid/README.md +212 -0
  12. package/dist/components/FlexibleGrid/index.d.ts +2 -0
  13. package/dist/components/FlexibleGrid/index.js +1 -0
  14. package/dist/components/GlobalHeader/GlobalHeader.svelte +806 -0
  15. package/dist/components/GlobalHeader/GlobalHeader.svelte.d.ts +3 -0
  16. package/dist/components/GlobalHeader/index.d.ts +2 -0
  17. package/dist/components/GlobalHeader/index.js +1 -0
  18. package/dist/components/Hero/Hero.svelte +306 -0
  19. package/dist/components/Hero/Hero.svelte.d.ts +18 -0
  20. package/dist/components/Hero/index.d.ts +2 -0
  21. package/dist/components/Hero/index.js +1 -0
  22. package/dist/components/HeroLeftAligned/HeroLeftAligned.svelte +182 -0
  23. package/dist/components/HeroLeftAligned/HeroLeftAligned.svelte.d.ts +8 -0
  24. package/dist/components/HeroLeftAligned/README.md +168 -0
  25. package/dist/components/HeroLeftAligned/index.d.ts +2 -0
  26. package/dist/components/HeroLeftAligned/index.js +1 -0
  27. package/dist/components/IconFeatureCard/IconFeatureCard.svelte +173 -0
  28. package/dist/components/IconFeatureCard/IconFeatureCard.svelte.d.ts +4 -0
  29. package/dist/components/IconFeatureCard/README.md +234 -0
  30. package/dist/components/IconFeatureCard/index.d.ts +2 -0
  31. package/dist/components/IconFeatureCard/index.js +1 -0
  32. package/dist/components/ImageTextCard/ImageTextCard.svelte +149 -0
  33. package/dist/components/ImageTextCard/ImageTextCard.svelte.d.ts +22 -0
  34. package/dist/components/ImageTextCard/README.md +177 -0
  35. package/dist/components/ImageTextCard/index.d.ts +2 -0
  36. package/dist/components/ImageTextCard/index.js +1 -0
  37. package/dist/components/LogoCloud/LogoCloud.svelte +333 -0
  38. package/dist/components/LogoCloud/LogoCloud.svelte.d.ts +20 -0
  39. package/dist/components/LogoCloud/index.d.ts +2 -0
  40. package/dist/components/LogoCloud/index.js +1 -0
  41. package/dist/components/ServiceCard/ServiceCard.svelte +359 -0
  42. package/dist/components/ServiceCard/ServiceCard.svelte.d.ts +16 -0
  43. package/dist/components/ServiceCard/index.d.ts +1 -0
  44. package/dist/components/ServiceCard/index.js +1 -0
  45. package/dist/components/Sidebar/SidebarGroup.svelte +1 -4
  46. package/dist/components/SplitSection/SplitSection.svelte +194 -0
  47. package/dist/components/SplitSection/SplitSection.svelte.d.ts +15 -0
  48. package/dist/components/SplitSection/index.d.ts +1 -0
  49. package/dist/components/SplitSection/index.js +1 -0
  50. package/dist/components/TestimonialCard/TestimonialCard.svelte +290 -0
  51. package/dist/components/TestimonialCard/TestimonialCard.svelte.d.ts +14 -0
  52. package/dist/components/TestimonialCard/index.d.ts +1 -0
  53. package/dist/components/TestimonialCard/index.js +1 -0
  54. package/dist/components/Timeline/Timeline.svelte +444 -0
  55. package/dist/components/Timeline/Timeline.svelte.d.ts +19 -0
  56. package/dist/components/Timeline/index.d.ts +2 -0
  57. package/dist/components/Timeline/index.js +1 -0
  58. package/dist/index.d.ts +23 -1
  59. package/dist/index.js +13 -1
  60. package/dist/types/index.d.ts +49 -1
  61. package/dist/types/layout.d.ts +20 -0
  62. package/package.json +9 -2
  63. package/dist/components/Mermaid/Mermaid.svelte +0 -320
  64. package/dist/components/Mermaid/Mermaid.svelte.d.ts +0 -38
  65. package/dist/components/Mermaid/index.d.ts +0 -1
  66. package/dist/components/Mermaid/index.js +0 -1
  67. package/dist/components/Mermaid/mermaid.d.ts +0 -21
@@ -0,0 +1,177 @@
1
+ # ImageTextCard
2
+
3
+ A horizontal card component featuring an icon/image on the left and title/description text on the right, all on a colored background. Perfect for showcasing features, services, or benefits with visual icons.
4
+
5
+ ## Features
6
+
7
+ - Horizontal layout with icon and text content
8
+ - Three image shape options (circle, square, rounded)
9
+ - Reverse layout support (image on right)
10
+ - Fully customizable colors and sizing
11
+ - Responsive design (stacks vertically on mobile)
12
+ - Hover effects with smooth transitions
13
+ - Accessibility support
14
+
15
+ ## Usage
16
+
17
+ ### Basic Example
18
+
19
+ ```svelte
20
+ <script>
21
+ import { ImageTextCard } from '@aspect-ops/exon-ui';
22
+ </script>
23
+
24
+ <ImageTextCard
25
+ image="/icon-process.svg"
26
+ imageAlt="Process icon"
27
+ title="Process Harmonization"
28
+ description="Align processes across your organization for improved efficiency and consistency."
29
+ bgColor="#B85C5C"
30
+ />
31
+ ```
32
+
33
+ ### With Custom Colors
34
+
35
+ ```svelte
36
+ <ImageTextCard
37
+ image="/icon-digital.svg"
38
+ imageAlt="Digital transformation icon"
39
+ title="Digital Transformation"
40
+ description="Drive seamless digital transformation with expert solutions and strategic guidance."
41
+ bgColor="#3B5998"
42
+ textColor="white"
43
+ />
44
+ ```
45
+
46
+ ### Rounded Image
47
+
48
+ ```svelte
49
+ <ImageTextCard
50
+ image="/product-photo.jpg"
51
+ imageAlt="Product"
52
+ title="Our Product"
53
+ description="Discover the features that make our product stand out."
54
+ imageShape="rounded"
55
+ bgColor="#10B981"
56
+ />
57
+ ```
58
+
59
+ ### Reverse Layout
60
+
61
+ ```svelte
62
+ <ImageTextCard
63
+ image="/icon-support.svg"
64
+ imageAlt="Support icon"
65
+ title="24/7 Support"
66
+ description="Get help whenever you need it with our round-the-clock support team."
67
+ reverseLayout={true}
68
+ bgColor="#6366F1"
69
+ />
70
+ ```
71
+
72
+ ## Props
73
+
74
+ | Prop | Type | Default | Description |
75
+ | --------------- | ----------------------------------- | ------------- | --------------------------------------- |
76
+ | `image` | `string` | **required** | Image URL or path |
77
+ | `imageAlt` | `string` | `''` | Alt text for accessibility |
78
+ | `title` | `string` | **required** | Card title |
79
+ | `description` | `string` | **required** | Card description text |
80
+ | `bgColor` | `string` | `'#B85C5C'` | Background color |
81
+ | `textColor` | `string` | `'white'` | Default text color |
82
+ | `titleColor` | `string` | `undefined` | Title color (overrides textColor) |
83
+ | `descColor` | `string` | `undefined` | Description color (overrides textColor) |
84
+ | `imageSize` | `string` | `'140px'` | Size of the image (width and height) |
85
+ | `imageShape` | `'circle' \| 'square' \| 'rounded'` | `'circle'` | Image shape style |
86
+ | `reverseLayout` | `boolean` | `false` | Flip image and text positions |
87
+ | `cardHeight` | `string` | `'auto'` | Card height |
88
+ | `padding` | `string` | `'3rem 4rem'` | Card padding |
89
+ | `gap` | `string` | `'2.5rem'` | Gap between image and text |
90
+ | `titleFontSize` | `string` | `'2.25rem'` | Title font size |
91
+ | `descFontSize` | `string` | `'1.25rem'` | Description font size |
92
+ | `class` | `string` | `''` | Additional CSS classes |
93
+
94
+ ## Styling
95
+
96
+ The component uses inline styles for theming but also responds to the parent's font-family.
97
+
98
+ ### Hover Effect
99
+
100
+ The card has a built-in hover effect that lifts the card slightly and enhances the shadow:
101
+
102
+ - Transform: `translateY(-2px)`
103
+ - Shadow increases from `0 4px 6px` to `0 8px 12px`
104
+
105
+ ## Accessibility
106
+
107
+ - Image `alt` text supported via `imageAlt` prop
108
+ - Semantic HTML with `<h3>` for title and `<p>` for description
109
+ - Sufficient color contrast (white text on colored backgrounds)
110
+ - Inherits font-family for consistent typography
111
+
112
+ ## Responsive Design
113
+
114
+ - **Desktop (769px+):** Horizontal layout with image on left/right
115
+ - **Tablet & Mobile (≤768px):** Stacks vertically with centered text
116
+ - **Mobile adjustments:** Reduced padding (2rem) and gap (2rem)
117
+
118
+ ## Examples
119
+
120
+ ### Feature Showcase
121
+
122
+ ```svelte
123
+ <div class="features-grid">
124
+ <ImageTextCard
125
+ image="/icons/speed.svg"
126
+ imageAlt="Speed icon"
127
+ title="Lightning Fast"
128
+ description="Optimized performance for the best user experience."
129
+ bgColor="#EF4444"
130
+ />
131
+ <ImageTextCard
132
+ image="/icons/secure.svg"
133
+ imageAlt="Security icon"
134
+ title="Secure by Default"
135
+ description="Built-in security features to protect your data."
136
+ bgColor="#3B82F6"
137
+ />
138
+ <ImageTextCard
139
+ image="/icons/scalable.svg"
140
+ imageAlt="Scalability icon"
141
+ title="Infinitely Scalable"
142
+ description="Grows with your business, from startup to enterprise."
143
+ bgColor="#10B981"
144
+ />
145
+ </div>
146
+ ```
147
+
148
+ ### Service Cards
149
+
150
+ ```svelte
151
+ <ImageTextCard
152
+ image="/services/consulting.jpg"
153
+ imageAlt="Consulting"
154
+ title="Expert Consulting"
155
+ description="Get personalized guidance from our team of industry experts."
156
+ imageShape="rounded"
157
+ bgColor="#8B5CF6"
158
+ imageSize="140px"
159
+ padding="2.5rem"
160
+ />
161
+ ```
162
+
163
+ ### Custom Typography
164
+
165
+ ```svelte
166
+ <ImageTextCard
167
+ image="/icon-analytics.svg"
168
+ imageAlt="Analytics icon"
169
+ title="Data Analytics"
170
+ description="Transform raw data into actionable insights with our advanced analytics platform."
171
+ bgColor="#059669"
172
+ titleFontSize="2rem"
173
+ descFontSize="1.25rem"
174
+ titleColor="#F0FDF4"
175
+ descColor="#D1FAE5"
176
+ />
177
+ ```
@@ -0,0 +1,2 @@
1
+ export { default as ImageTextCard } from './ImageTextCard.svelte';
2
+ export type { ImageTextCardProps } from '../../types/index.js';
@@ -0,0 +1 @@
1
+ export { default as ImageTextCard } from './ImageTextCard.svelte';
@@ -0,0 +1,333 @@
1
+ <script lang="ts">
2
+ export interface LogoItem {
3
+ src: string;
4
+ alt: string;
5
+ href?: string;
6
+ }
7
+
8
+ export interface LogoCloudProps {
9
+ logos: LogoItem[];
10
+ columns?: 2 | 3 | 4 | 5 | 6;
11
+ size?: 'sm' | 'md' | 'lg';
12
+ variant?: 'grid' | 'scroll' | 'marquee';
13
+ grayscale?: boolean;
14
+ hoverEffect?: 'scale' | 'lift' | 'glow' | 'color' | 'none';
15
+ gap?: 'sm' | 'md' | 'lg' | 'xl';
16
+ title?: string;
17
+ subtitle?: string;
18
+ class?: string;
19
+ }
20
+
21
+ let {
22
+ logos,
23
+ columns = 4,
24
+ size = 'md',
25
+ variant = 'grid',
26
+ grayscale = false,
27
+ hoverEffect = 'scale',
28
+ gap = 'md',
29
+ title,
30
+ subtitle,
31
+ class: className = ''
32
+ }: LogoCloudProps = $props();
33
+
34
+ const sizeMap = {
35
+ sm: '2rem',
36
+ md: '3rem',
37
+ lg: '4rem'
38
+ };
39
+
40
+ const gapMap = {
41
+ sm: '1rem',
42
+ md: '2rem',
43
+ lg: '3rem',
44
+ xl: '4rem'
45
+ };
46
+
47
+ // For marquee variant, duplicate logos for seamless infinite scroll
48
+ const displayLogos = $derived(variant === 'marquee' ? [...logos, ...logos] : logos);
49
+ </script>
50
+
51
+ <div class="logo-cloud-wrapper {className}">
52
+ {#if title || subtitle}
53
+ <div class="logo-cloud-header">
54
+ {#if title}
55
+ <h2 class="logo-cloud-title">{title}</h2>
56
+ {/if}
57
+ {#if subtitle}
58
+ <p class="logo-cloud-subtitle">{subtitle}</p>
59
+ {/if}
60
+ </div>
61
+ {/if}
62
+
63
+ <div
64
+ class="logo-cloud logo-cloud--{variant} logo-cloud--{size} logo-cloud--gap-{gap} logo-cloud--hover-{hoverEffect}"
65
+ class:logo-cloud--grayscale={grayscale}
66
+ style="--logo-cloud-height: {sizeMap[size]}; --logo-cloud-gap: {gapMap[
67
+ gap
68
+ ]}; --logo-cloud-columns: {columns};"
69
+ aria-label={title || 'Partner logos'}
70
+ role="region"
71
+ >
72
+ <div class="logo-cloud-container">
73
+ {#each displayLogos as logo, index}
74
+ <div class="logo-cloud-item" aria-hidden={variant === 'marquee' && index >= logos.length}>
75
+ {#if logo.href}
76
+ <a href={logo.href} class="logo-cloud-link" target="_blank" rel="noopener noreferrer">
77
+ <img
78
+ src={logo.src}
79
+ alt={logo.alt}
80
+ class="logo-cloud-image"
81
+ loading="lazy"
82
+ decoding="async"
83
+ />
84
+ </a>
85
+ {:else}
86
+ <img
87
+ src={logo.src}
88
+ alt={logo.alt}
89
+ class="logo-cloud-image"
90
+ loading="lazy"
91
+ decoding="async"
92
+ />
93
+ {/if}
94
+ </div>
95
+ {/each}
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <style>
101
+ .logo-cloud-wrapper {
102
+ width: 100%;
103
+ }
104
+
105
+ .logo-cloud-header {
106
+ text-align: center;
107
+ margin-bottom: 3rem;
108
+ }
109
+
110
+ .logo-cloud-title {
111
+ font-size: 2rem;
112
+ font-weight: 700;
113
+ margin: 0 0 0.5rem 0;
114
+ color: var(--logo-cloud-title-color, var(--text-primary, #1a1a1a));
115
+ }
116
+
117
+ .logo-cloud-subtitle {
118
+ font-size: 1rem;
119
+ margin: 0;
120
+ color: var(--logo-cloud-subtitle-color, var(--text-secondary, #666));
121
+ }
122
+
123
+ .logo-cloud {
124
+ width: 100%;
125
+ --logo-cloud-gap: 2rem;
126
+ --logo-cloud-height: 3rem;
127
+ --logo-cloud-columns: 4;
128
+ --logo-cloud-grayscale-opacity: 0.6;
129
+ --logo-cloud-transition: all 0.3s ease;
130
+ }
131
+
132
+ /* Grid variant */
133
+ .logo-cloud--grid .logo-cloud-container {
134
+ display: grid;
135
+ grid-template-columns: repeat(2, 1fr);
136
+ gap: var(--logo-cloud-gap);
137
+ align-items: center;
138
+ justify-items: center;
139
+ }
140
+
141
+ @media (min-width: 768px) {
142
+ .logo-cloud--grid .logo-cloud-container {
143
+ grid-template-columns: repeat(var(--logo-cloud-columns), 1fr);
144
+ }
145
+ }
146
+
147
+ /* Scroll variant */
148
+ .logo-cloud--scroll {
149
+ overflow-x: auto;
150
+ -webkit-overflow-scrolling: touch;
151
+ scrollbar-width: thin;
152
+ scrollbar-color: var(--scrollbar-thumb, #ccc) var(--scrollbar-track, #f0f0f0);
153
+ }
154
+
155
+ .logo-cloud--scroll .logo-cloud-container {
156
+ display: flex;
157
+ gap: var(--logo-cloud-gap);
158
+ padding-bottom: 1rem;
159
+ min-width: min-content;
160
+ }
161
+
162
+ .logo-cloud--scroll::-webkit-scrollbar {
163
+ height: 0.5rem;
164
+ }
165
+
166
+ .logo-cloud--scroll::-webkit-scrollbar-track {
167
+ background: var(--scrollbar-track, #f0f0f0);
168
+ border-radius: 0.25rem;
169
+ }
170
+
171
+ .logo-cloud--scroll::-webkit-scrollbar-thumb {
172
+ background: var(--scrollbar-thumb, #ccc);
173
+ border-radius: 0.25rem;
174
+ }
175
+
176
+ .logo-cloud--scroll::-webkit-scrollbar-thumb:hover {
177
+ background: var(--scrollbar-thumb-hover, #999);
178
+ }
179
+
180
+ /* Marquee variant */
181
+ .logo-cloud--marquee {
182
+ overflow: hidden;
183
+ position: relative;
184
+ }
185
+
186
+ .logo-cloud--marquee .logo-cloud-container {
187
+ display: flex;
188
+ gap: var(--logo-cloud-gap);
189
+ animation: marquee 30s linear infinite;
190
+ width: fit-content;
191
+ }
192
+
193
+ @keyframes marquee {
194
+ 0% {
195
+ transform: translateX(0);
196
+ }
197
+ 100% {
198
+ transform: translateX(-50%);
199
+ }
200
+ }
201
+
202
+ .logo-cloud--marquee:hover .logo-cloud-container,
203
+ .logo-cloud--marquee:focus-within .logo-cloud-container {
204
+ animation-play-state: paused;
205
+ }
206
+
207
+ @media (prefers-reduced-motion: reduce) {
208
+ .logo-cloud--marquee .logo-cloud-container {
209
+ animation: none;
210
+ }
211
+ }
212
+
213
+ /* Logo items */
214
+ .logo-cloud-item {
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ transition: var(--logo-cloud-transition);
219
+ flex-shrink: 0;
220
+ }
221
+
222
+ .logo-cloud--scroll .logo-cloud-item,
223
+ .logo-cloud--marquee .logo-cloud-item {
224
+ min-width: calc(var(--logo-cloud-height) * 2);
225
+ }
226
+
227
+ .logo-cloud-link {
228
+ display: flex;
229
+ align-items: center;
230
+ justify-content: center;
231
+ text-decoration: none;
232
+ width: 100%;
233
+ height: 100%;
234
+ transition: var(--logo-cloud-transition);
235
+ }
236
+
237
+ .logo-cloud-link:focus {
238
+ outline: 2px solid var(--focus-ring-color, #0066ff);
239
+ outline-offset: 0.25rem;
240
+ border-radius: 0.25rem;
241
+ }
242
+
243
+ .logo-cloud-image {
244
+ height: var(--logo-cloud-height);
245
+ width: auto;
246
+ max-width: 100%;
247
+ object-fit: contain;
248
+ transition: var(--logo-cloud-transition);
249
+ }
250
+
251
+ /* Grayscale mode */
252
+ .logo-cloud--grayscale .logo-cloud-image {
253
+ filter: grayscale(100%);
254
+ opacity: var(--logo-cloud-grayscale-opacity);
255
+ }
256
+
257
+ .logo-cloud--grayscale .logo-cloud-item:hover .logo-cloud-image,
258
+ .logo-cloud--grayscale .logo-cloud-link:hover .logo-cloud-image,
259
+ .logo-cloud--grayscale .logo-cloud-link:focus .logo-cloud-image {
260
+ filter: grayscale(0%);
261
+ opacity: 1;
262
+ }
263
+
264
+ /* Hover effects */
265
+ /* Scale effect */
266
+ .logo-cloud--hover-scale .logo-cloud-item:hover .logo-cloud-image,
267
+ .logo-cloud--hover-scale .logo-cloud-link:hover .logo-cloud-image,
268
+ .logo-cloud--hover-scale .logo-cloud-link:focus .logo-cloud-image {
269
+ transform: scale(1.1);
270
+ }
271
+
272
+ /* Lift effect */
273
+ .logo-cloud--hover-lift .logo-cloud-item:hover,
274
+ .logo-cloud--hover-lift .logo-cloud-link:hover,
275
+ .logo-cloud--hover-lift .logo-cloud-link:focus {
276
+ transform: translateY(-0.5rem);
277
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1);
278
+ }
279
+
280
+ /* Glow effect */
281
+ .logo-cloud--hover-glow .logo-cloud-item:hover .logo-cloud-image,
282
+ .logo-cloud--hover-glow .logo-cloud-link:hover .logo-cloud-image,
283
+ .logo-cloud--hover-glow .logo-cloud-link:focus .logo-cloud-image {
284
+ filter: drop-shadow(0 0 1rem rgba(0, 102, 255, 0.3));
285
+ }
286
+
287
+ /* Color effect (similar to grayscale but forces it) */
288
+ .logo-cloud--hover-color .logo-cloud-image {
289
+ filter: grayscale(100%);
290
+ opacity: var(--logo-cloud-grayscale-opacity);
291
+ }
292
+
293
+ .logo-cloud--hover-color .logo-cloud-item:hover .logo-cloud-image,
294
+ .logo-cloud--hover-color .logo-cloud-link:hover .logo-cloud-image,
295
+ .logo-cloud--hover-color .logo-cloud-link:focus .logo-cloud-image {
296
+ filter: grayscale(0%);
297
+ opacity: 1;
298
+ }
299
+
300
+ /* None effect - no additional styles needed */
301
+ .logo-cloud--hover-none .logo-cloud-item:hover,
302
+ .logo-cloud--hover-none .logo-cloud-link:hover {
303
+ transform: none;
304
+ box-shadow: none;
305
+ }
306
+
307
+ /* Dark mode support */
308
+ @media (prefers-color-scheme: dark) {
309
+ .logo-cloud-title {
310
+ color: var(--logo-cloud-title-color, var(--text-primary, #ffffff));
311
+ }
312
+
313
+ .logo-cloud-subtitle {
314
+ color: var(--logo-cloud-subtitle-color, var(--text-secondary, #a0a0a0));
315
+ }
316
+
317
+ .logo-cloud--scroll {
318
+ scrollbar-color: var(--scrollbar-thumb, #555) var(--scrollbar-track, #2a2a2a);
319
+ }
320
+
321
+ .logo-cloud--scroll::-webkit-scrollbar-track {
322
+ background: var(--scrollbar-track, #2a2a2a);
323
+ }
324
+
325
+ .logo-cloud--scroll::-webkit-scrollbar-thumb {
326
+ background: var(--scrollbar-thumb, #555);
327
+ }
328
+
329
+ .logo-cloud--scroll::-webkit-scrollbar-thumb:hover {
330
+ background: var(--scrollbar-thumb-hover, #777);
331
+ }
332
+ }
333
+ </style>
@@ -0,0 +1,20 @@
1
+ export interface LogoItem {
2
+ src: string;
3
+ alt: string;
4
+ href?: string;
5
+ }
6
+ export interface LogoCloudProps {
7
+ logos: LogoItem[];
8
+ columns?: 2 | 3 | 4 | 5 | 6;
9
+ size?: 'sm' | 'md' | 'lg';
10
+ variant?: 'grid' | 'scroll' | 'marquee';
11
+ grayscale?: boolean;
12
+ hoverEffect?: 'scale' | 'lift' | 'glow' | 'color' | 'none';
13
+ gap?: 'sm' | 'md' | 'lg' | 'xl';
14
+ title?: string;
15
+ subtitle?: string;
16
+ class?: string;
17
+ }
18
+ declare const LogoCloud: import("svelte").Component<LogoCloudProps, {}, "">;
19
+ type LogoCloud = ReturnType<typeof LogoCloud>;
20
+ export default LogoCloud;
@@ -0,0 +1,2 @@
1
+ export { default as LogoCloud } from './LogoCloud.svelte';
2
+ export type { LogoItem, LogoCloudProps } from './LogoCloud.svelte';
@@ -0,0 +1 @@
1
+ export { default as LogoCloud } from './LogoCloud.svelte';