@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,290 @@
1
+ <script lang="ts">
2
+ import { Rating } from '../Rating/index.js';
3
+
4
+ interface Props {
5
+ quote: string;
6
+ author: string;
7
+ position?: string;
8
+ company?: string;
9
+ rating?: number;
10
+ avatar?: string;
11
+ variant?: 'default' | 'minimal' | 'featured' | 'compact';
12
+ showQuoteMarks?: boolean;
13
+ class?: string;
14
+ }
15
+
16
+ let {
17
+ quote,
18
+ author,
19
+ position,
20
+ company,
21
+ rating,
22
+ avatar,
23
+ variant = 'default',
24
+ showQuoteMarks = false,
25
+ class: className = ''
26
+ }: Props = $props();
27
+
28
+ // Generate initials from author name
29
+ const initials = $derived(author.charAt(0).toUpperCase());
30
+
31
+ // Construct author title (position + company)
32
+ const authorTitle = $derived(() => {
33
+ if (position && company) return `${position} at ${company}`;
34
+ if (position) return position;
35
+ if (company) return company;
36
+ return '';
37
+ });
38
+ </script>
39
+
40
+ <article class="testimonial testimonial--{variant} {className}">
41
+ {#if variant === 'featured' && showQuoteMarks}
42
+ <div class="testimonial-quote-mark" aria-hidden="true">&ldquo;</div>
43
+ {/if}
44
+
45
+ {#if rating !== undefined}
46
+ <div class="testimonial-rating">
47
+ <Rating value={rating} readonly size="sm" />
48
+ </div>
49
+ {/if}
50
+
51
+ <blockquote class="testimonial-quote">
52
+ {quote}
53
+ </blockquote>
54
+
55
+ <div class="testimonial-author">
56
+ {#if avatar || variant !== 'minimal'}
57
+ <div class="testimonial-author-content">
58
+ {#if avatar || variant === 'default' || variant === 'featured' || variant === 'compact'}
59
+ <div class="testimonial-avatar">
60
+ {#if avatar}
61
+ <img src={avatar} alt={author} />
62
+ {:else}
63
+ <span class="testimonial-avatar-initials" aria-hidden="true">{initials}</span>
64
+ {/if}
65
+ </div>
66
+ {/if}
67
+ <div class="testimonial-author-info">
68
+ <cite class="testimonial-author-name">{author}</cite>
69
+ {#if authorTitle()}
70
+ <div class="testimonial-author-title">{authorTitle()}</div>
71
+ {/if}
72
+ </div>
73
+ </div>
74
+ {:else}
75
+ <cite class="testimonial-author-name">{author}</cite>
76
+ {/if}
77
+ </div>
78
+ </article>
79
+
80
+ <style>
81
+ .testimonial {
82
+ display: flex;
83
+ flex-direction: column;
84
+ background: var(--testimonial-bg, var(--color-bg-card, #ffffff));
85
+ border-radius: var(--radius-lg, 0.5rem);
86
+ padding: var(--space-lg, 1.5rem);
87
+ font-family: inherit;
88
+ position: relative;
89
+ transition: transform var(--transition-normal, 200ms ease);
90
+ }
91
+
92
+ /* Default variant - gradient background */
93
+ .testimonial--default {
94
+ background: linear-gradient(
95
+ 135deg,
96
+ var(--testimonial-gradient-from, var(--color-bg-card, #ffffff)),
97
+ var(--testimonial-gradient-to, var(--color-bg-muted, #f9fafb))
98
+ );
99
+ box-shadow: var(
100
+ --shadow-md,
101
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
102
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06)
103
+ );
104
+ }
105
+
106
+ .testimonial--default:hover {
107
+ transform: translateY(-4px);
108
+ box-shadow: var(
109
+ --shadow-lg,
110
+ 0 10px 15px -3px rgba(0, 0, 0, 0.1),
111
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05)
112
+ );
113
+ }
114
+
115
+ /* Minimal variant - simple styling */
116
+ .testimonial--minimal {
117
+ padding: var(--space-md, 1rem);
118
+ border-left: 3px solid var(--testimonial-border-color, var(--color-primary, #3b82f6));
119
+ background: transparent;
120
+ }
121
+
122
+ /* Featured variant - larger, emphasized */
123
+ .testimonial--featured {
124
+ padding: var(--space-xl, 2rem);
125
+ background: linear-gradient(
126
+ 135deg,
127
+ var(--testimonial-gradient-from, var(--color-primary-light, #dbeafe)),
128
+ var(--testimonial-gradient-to, var(--color-bg-card, #ffffff))
129
+ );
130
+ box-shadow: var(
131
+ --shadow-xl,
132
+ 0 20px 25px -5px rgba(0, 0, 0, 0.1),
133
+ 0 10px 10px -5px rgba(0, 0, 0, 0.04)
134
+ );
135
+ }
136
+
137
+ .testimonial--featured:hover {
138
+ transform: translateY(-6px);
139
+ box-shadow: var(--shadow-2xl, 0 25px 50px -12px rgba(0, 0, 0, 0.25));
140
+ }
141
+
142
+ /* Compact variant - horizontal layout */
143
+ .testimonial--compact {
144
+ padding: var(--space-md, 1rem);
145
+ gap: var(--space-md, 1rem);
146
+ }
147
+
148
+ .testimonial--compact .testimonial-quote {
149
+ font-size: var(--text-sm, 0.875rem);
150
+ }
151
+
152
+ /* Quote mark decoration for featured variant */
153
+ .testimonial-quote-mark {
154
+ position: absolute;
155
+ top: 0.5rem;
156
+ left: 0.5rem;
157
+ font-size: 4rem;
158
+ line-height: 1;
159
+ color: var(--testimonial-border-color, var(--color-primary, #3b82f6));
160
+ opacity: 0.1;
161
+ font-family: Georgia, serif;
162
+ pointer-events: none;
163
+ user-select: none;
164
+ }
165
+
166
+ /* Rating section */
167
+ .testimonial-rating {
168
+ margin-bottom: var(--space-sm, 0.75rem);
169
+ }
170
+
171
+ /* Quote */
172
+ .testimonial-quote {
173
+ flex: 1;
174
+ margin: 0 0 var(--space-lg, 1.5rem) 0;
175
+ font-size: var(--text-base, 1rem);
176
+ line-height: var(--leading-relaxed, 1.625);
177
+ color: var(--testimonial-quote-color, var(--color-text, #1f2937));
178
+ font-style: italic;
179
+ }
180
+
181
+ .testimonial--featured .testimonial-quote {
182
+ font-size: var(--text-lg, 1.125rem);
183
+ line-height: var(--leading-relaxed, 1.625);
184
+ }
185
+
186
+ .testimonial--minimal .testimonial-quote {
187
+ margin-bottom: var(--space-md, 1rem);
188
+ }
189
+
190
+ /* Author section */
191
+ .testimonial-author {
192
+ padding-top: var(--space-md, 1rem);
193
+ border-top: 1px solid var(--testimonial-border-color, var(--color-border, #e5e7eb));
194
+ }
195
+
196
+ .testimonial--minimal .testimonial-author {
197
+ padding-top: var(--space-sm, 0.75rem);
198
+ border-top: none;
199
+ }
200
+
201
+ .testimonial-author-content {
202
+ display: flex;
203
+ align-items: center;
204
+ gap: var(--space-md, 1rem);
205
+ }
206
+
207
+ /* Avatar */
208
+ .testimonial-avatar {
209
+ flex-shrink: 0;
210
+ width: 3rem;
211
+ height: 3rem;
212
+ border-radius: var(--radius-full, 9999px);
213
+ overflow: hidden;
214
+ background: var(--color-bg-muted, #f3f4f6);
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ }
219
+
220
+ .testimonial--compact .testimonial-avatar {
221
+ width: 2.5rem;
222
+ height: 2.5rem;
223
+ }
224
+
225
+ .testimonial-avatar img {
226
+ width: 100%;
227
+ height: 100%;
228
+ object-fit: cover;
229
+ }
230
+
231
+ .testimonial-avatar-initials {
232
+ font-size: var(--text-lg, 1.125rem);
233
+ font-weight: var(--font-semibold, 600);
234
+ color: var(--color-primary, #3b82f6);
235
+ user-select: none;
236
+ }
237
+
238
+ /* Author info */
239
+ .testimonial-author-info {
240
+ min-width: 0;
241
+ flex: 1;
242
+ }
243
+
244
+ .testimonial-author-name {
245
+ display: block;
246
+ font-size: var(--text-base, 1rem);
247
+ font-weight: var(--font-semibold, 600);
248
+ font-style: normal;
249
+ color: var(--testimonial-author-color, var(--color-text, #1f2937));
250
+ line-height: var(--leading-tight, 1.25);
251
+ margin-bottom: var(--space-xs, 0.25rem);
252
+ }
253
+
254
+ .testimonial--minimal .testimonial-author-name {
255
+ font-size: var(--text-sm, 0.875rem);
256
+ }
257
+
258
+ .testimonial-author-title {
259
+ font-size: var(--text-sm, 0.875rem);
260
+ color: var(--color-text-secondary, #6b7280);
261
+ line-height: var(--leading-tight, 1.25);
262
+ }
263
+
264
+ .testimonial--compact .testimonial-author-title {
265
+ font-size: var(--text-xs, 0.75rem);
266
+ }
267
+
268
+ /* Mobile-first responsive adjustments */
269
+ @media (max-width: 640px) {
270
+ .testimonial--featured {
271
+ padding: var(--space-lg, 1.5rem);
272
+ }
273
+
274
+ .testimonial--featured .testimonial-quote {
275
+ font-size: var(--text-base, 1rem);
276
+ }
277
+ }
278
+
279
+ /* Dark mode support */
280
+ @media (prefers-color-scheme: dark) {
281
+ .testimonial--default,
282
+ .testimonial--featured {
283
+ background: linear-gradient(
284
+ 135deg,
285
+ var(--testimonial-gradient-from, var(--color-bg-card, #1f2937)),
286
+ var(--testimonial-gradient-to, var(--color-bg-muted, #111827))
287
+ );
288
+ }
289
+ }
290
+ </style>
@@ -0,0 +1,14 @@
1
+ interface Props {
2
+ quote: string;
3
+ author: string;
4
+ position?: string;
5
+ company?: string;
6
+ rating?: number;
7
+ avatar?: string;
8
+ variant?: 'default' | 'minimal' | 'featured' | 'compact';
9
+ showQuoteMarks?: boolean;
10
+ class?: string;
11
+ }
12
+ declare const TestimonialCard: import("svelte").Component<Props, {}, "">;
13
+ type TestimonialCard = ReturnType<typeof TestimonialCard>;
14
+ export default TestimonialCard;
@@ -0,0 +1 @@
1
+ export { default as TestimonialCard } from './TestimonialCard.svelte';
@@ -0,0 +1 @@
1
+ export { default as TestimonialCard } from './TestimonialCard.svelte';