@xenterprises/nuxt-x-marketing 1.0.2 → 1.1.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 (64) hide show
  1. package/README.md +130 -11
  2. package/app/components/X/Mark/CodeBlock/index.vue +19 -7
  3. package/app/components/X/Mark/Divider/Glow.vue +25 -19
  4. package/app/components/X/Mark/Section/Stitch.vue +45 -31
  5. package/app/composables/{useParallax.ts → useParallax.js} +6 -7
  6. package/app/composables/{useScrollReveal.ts → useScrollReveal.js} +4 -4
  7. package/nuxt.config.ts +1 -11
  8. package/package.json +1 -1
  9. package/.claude/settings.local.json +0 -23
  10. package/.nuxtrc +0 -1
  11. package/.playground/app.config.ts +0 -74
  12. package/.playground/app.vue +0 -269
  13. package/.playground/components/AppFooter.vue +0 -103
  14. package/.playground/components/AppHeader.vue +0 -41
  15. package/.playground/components/CodeExample.vue +0 -70
  16. package/.playground/components/ComponentPlayground.vue +0 -117
  17. package/.playground/components/DocsHeader.vue +0 -19
  18. package/.playground/layouts/default.vue +0 -15
  19. package/.playground/layouts/docs-layout.vue +0 -161
  20. package/.playground/layouts/docs.vue +0 -11
  21. package/.playground/nuxt.config.ts +0 -5
  22. package/.playground/package-lock.json +0 -6
  23. package/.playground/pages/blog/author.vue +0 -145
  24. package/.playground/pages/blog/card.vue +0 -149
  25. package/.playground/pages/blog/cta.vue +0 -131
  26. package/.playground/pages/blog/detail.vue +0 -471
  27. package/.playground/pages/blog/list.vue +0 -261
  28. package/.playground/pages/blog/navigation.vue +0 -228
  29. package/.playground/pages/blog/sidebar.vue +0 -279
  30. package/.playground/pages/config.vue +0 -289
  31. package/.playground/pages/content/comparison.vue +0 -253
  32. package/.playground/pages/content/cta.vue +0 -245
  33. package/.playground/pages/content/features.vue +0 -217
  34. package/.playground/pages/content/newsletter-section.vue +0 -260
  35. package/.playground/pages/content/newsletter.vue +0 -200
  36. package/.playground/pages/content/pricing.vue +0 -335
  37. package/.playground/pages/content/testimonials.vue +0 -188
  38. package/.playground/pages/hero.vue +0 -257
  39. package/.playground/pages/index.vue +0 -381
  40. package/.playground/pages/layout/footer.vue +0 -210
  41. package/.playground/pages/layout/legal-footer.vue +0 -121
  42. package/.playground/pages/layout/navbar.vue +0 -285
  43. package/.playground/pages/layout/section.vue +0 -266
  44. package/.playground/pages/layout/x-legal.vue +0 -199
  45. package/.playground/pages/modals/feature-modal.vue +0 -320
  46. package/.playground/pages/modals/image-lightbox.vue +0 -277
  47. package/.playground/pages/modals/video-modal.vue +0 -222
  48. package/.playground/pages/notifications/announcement-bar.vue +0 -164
  49. package/.playground/pages/notifications/cookie-banner.vue +0 -210
  50. package/.playground/pages/notifications/cookie-toast.vue +0 -143
  51. package/.playground/pages/notifications/gdpr.vue +0 -276
  52. package/.playground/pages/notifications/social-proof-toast.vue +0 -515
  53. package/.playground/pages/ui/badge.vue +0 -161
  54. package/.playground/pages/ui/bg-pattern.vue +0 -177
  55. package/.playground/pages/ui/glass-card.vue +0 -179
  56. package/.playground/pages/ui/glow-divider.vue +0 -179
  57. package/.playground/pages/ui/promo-card.vue +0 -259
  58. package/.playground/pages/ui/section-stitch.vue +0 -411
  59. package/.playground/pages/utilities/back-to-top.vue +0 -153
  60. package/.playground/pages/utilities/popup-chat.vue +0 -224
  61. package/componentList.json +0 -2129
  62. package/screenshots/playground-home.png +0 -0
  63. package/tsconfig.json +0 -3
  64. /package/app/composables/{useXBlog.ts → useXBlog.js} +0 -0
@@ -1,335 +0,0 @@
1
- <template>
2
- <div class="min-h-screen">
3
- <!-- Page Header -->
4
- <div class="bg-white dark:bg-neutral-900 border-b border-neutral-200 dark:border-neutral-800 px-8 py-6">
5
- <h1 class="text-2xl font-bold text-neutral-900 dark:text-white">Pricing Plans</h1>
6
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">
7
- Pricing cards with monthly/yearly toggle, social proof badges, and highlighted plans.
8
- </p>
9
- </div>
10
-
11
- <!-- Demo Content -->
12
- <div class="space-y-0">
13
- <!-- Scaled Center Plan -->
14
- <XMarkSection bg="default">
15
- <div class="text-center mb-12">
16
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">Scale</span>
17
- <h2 class="xText-headline">Scaled Center Plan</h2>
18
- <p class="mt-4 text-neutral-600 dark:text-neutral-400">Center plan is scaled up to draw attention (scale and compact are mutually exclusive)</p>
19
- </div>
20
-
21
- <XMarkPricingPlans
22
- :plans="computedPlans"
23
- :has-billing-toggle="true"
24
- :yearly-discount="20"
25
- :badges="['no-credit-card', 'cancel-anytime', 'money-back']"
26
- scale
27
- />
28
- </XMarkSection>
29
-
30
- <!-- Scaled with Badges at Top -->
31
- <XMarkSection bg="subtle">
32
- <div class="text-center mb-12">
33
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">Badges Top</span>
34
- <h2 class="xText-headline">Scaled with Badges Above</h2>
35
- <p class="mt-4 text-neutral-600 dark:text-neutral-400">Highlighted plan is scaled with badges positioned above</p>
36
- </div>
37
-
38
- <XMarkPricingPlans
39
- :plans="simplePlans"
40
- highlighted="Professional"
41
- :badges="['free-trial', 'secure']"
42
- badges-position="top"
43
- scale
44
- />
45
- </XMarkSection>
46
-
47
- <!-- Two Plans - Scaled -->
48
- <XMarkSection bg="default">
49
- <div class="text-center mb-12">
50
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">Two Plans</span>
51
- <h2 class="xText-headline">Scaled Two-Plan Layout</h2>
52
- </div>
53
-
54
- <XMarkPricingPlans
55
- :plans="twoPlans"
56
- highlighted="Premium"
57
- :badges="['setup', 'support']"
58
- scale
59
- />
60
- </XMarkSection>
61
-
62
- <!-- Props Documentation -->
63
- <XMarkSection bg="subtle">
64
- <h2 class="text-lg font-semibold mb-6">XMarkPricingPlans Props</h2>
65
- <div class="overflow-x-auto">
66
- <table class="w-full text-sm">
67
- <thead>
68
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
69
- <th class="text-left py-3 px-4 font-medium">Prop</th>
70
- <th class="text-left py-3 px-4 font-medium">Type</th>
71
- <th class="text-left py-3 px-4 font-medium">Default</th>
72
- <th class="text-left py-3 px-4 font-medium">Description</th>
73
- </tr>
74
- </thead>
75
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
76
- <tr>
77
- <td class="py-3 px-4 font-mono text-xs">plans</td>
78
- <td class="py-3 px-4">Array</td>
79
- <td class="py-3 px-4">required</td>
80
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Array of plan objects</td>
81
- </tr>
82
- <tr>
83
- <td class="py-3 px-4 font-mono text-xs">highlighted</td>
84
- <td class="py-3 px-4">String</td>
85
- <td class="py-3 px-4">''</td>
86
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Plan name to highlight</td>
87
- </tr>
88
- <tr>
89
- <td class="py-3 px-4 font-mono text-xs">hasBillingToggle</td>
90
- <td class="py-3 px-4">Boolean</td>
91
- <td class="py-3 px-4">false</td>
92
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Has monthly/yearly toggle</td>
93
- </tr>
94
- <tr>
95
- <td class="py-3 px-4 font-mono text-xs">yearlyDiscount</td>
96
- <td class="py-3 px-4">Number</td>
97
- <td class="py-3 px-4">20</td>
98
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Yearly discount percentage</td>
99
- </tr>
100
- <tr>
101
- <td class="py-3 px-4 font-mono text-xs">scale</td>
102
- <td class="py-3 px-4">Boolean</td>
103
- <td class="py-3 px-4">false</td>
104
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Scale highlighted plan (mutually exclusive with compact)</td>
105
- </tr>
106
- <tr>
107
- <td class="py-3 px-4 font-mono text-xs">compact</td>
108
- <td class="py-3 px-4">Boolean</td>
109
- <td class="py-3 px-4">true</td>
110
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">No gap between plans (mutually exclusive with scale)</td>
111
- </tr>
112
- <tr>
113
- <td class="py-3 px-4 font-mono text-xs">badges</td>
114
- <td class="py-3 px-4">Array</td>
115
- <td class="py-3 px-4">[]</td>
116
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Social proof badge presets or custom</td>
117
- </tr>
118
- <tr>
119
- <td class="py-3 px-4 font-mono text-xs">badgesPosition</td>
120
- <td class="py-3 px-4">String</td>
121
- <td class="py-3 px-4">'bottom'</td>
122
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">'top' or 'bottom'</td>
123
- </tr>
124
- <tr>
125
- <td class="py-3 px-4 font-mono text-xs">badgesAlign</td>
126
- <td class="py-3 px-4">String</td>
127
- <td class="py-3 px-4">'center'</td>
128
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">'left', 'center', or 'right'</td>
129
- </tr>
130
- </tbody>
131
- </table>
132
- </div>
133
- </XMarkSection>
134
-
135
- <!-- Badge Presets -->
136
- <XMarkSection bg="default">
137
- <h2 class="text-lg font-semibold mb-4">Available Badge Presets</h2>
138
- <div class="grid md:grid-cols-4 gap-4">
139
- <div v-for="preset in badgePresets" :key="preset" class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-4">
140
- <XMarkSocialProofBadge :preset="preset" variant="text" />
141
- <code class="block mt-2 text-xs text-neutral-500">'{{ preset }}'</code>
142
- </div>
143
- </div>
144
- </XMarkSection>
145
-
146
- <!-- Plan Structure -->
147
- <XMarkSection bg="subtle">
148
- <h2 class="text-lg font-semibold mb-4">Plan Data Structure</h2>
149
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-4 text-sm font-mono overflow-x-auto">
150
- <pre>{
151
- name: "Pro",
152
- description: "For professional teams",
153
- price: "$29" | { monthly: "$29", yearly: "$279" },
154
- period: "/month", // Optional, defaults to billing period
155
- popular: true, // Shows "Most Popular" badge
156
- features: [
157
- "All features",
158
- "Priority support",
159
- "Custom integrations"
160
- ],
161
- button: {
162
- label: "Get Pro"
163
- }
164
- }</pre>
165
- </div>
166
- </XMarkSection>
167
-
168
- <!-- Code Example -->
169
- <XMarkSection bg="default">
170
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
171
- <CodeExample title="Pricing Usage" :code="codeExample" />
172
- </XMarkSection>
173
- </div>
174
- </div>
175
- </template>
176
-
177
- <script setup>
178
- import { highlight } from '#ui/utils/fuse'
179
-
180
- // Initialize scroll reveal animations
181
- useScrollReveal()
182
-
183
- const badgePresets = [
184
- 'no-credit-card',
185
- 'cancel-anytime',
186
- 'free-trial',
187
- 'secure',
188
- 'money-back',
189
- 'support',
190
- 'setup',
191
- 'gdpr'
192
- ]
193
-
194
- const codeExample = `<!-- Scaled center plan (scale enlarges the highlighted plan) -->
195
- <XMarkPricingPlans
196
- :plans="plans"
197
- :has-billing-toggle="true"
198
- :yearly-discount="20"
199
- :badges="['no-credit-card', 'cancel-anytime', 'money-back']"
200
- scale
201
- @select="handleSelect"
202
- />
203
-
204
- <!-- Compact layout (no gaps between plans) -->
205
- <XMarkPricingPlans
206
- :plans="plans"
207
- highlighted="Pro"
208
- :badges="['free-trial', 'secure']"
209
- badges-position="top"
210
- compact
211
- />
212
-
213
- <!-- Note: scale and compact are mutually exclusive -->
214
-
215
- <!-- Plan data structure -->
216
- const plans = [
217
- {
218
- name: 'Starter',
219
- description: 'For personal projects',
220
- price: { monthly: '$0', yearly: '$0' },
221
- features: ['10 components', 'Basic support'],
222
- button: { label: 'Get Started' }
223
- },
224
- {
225
- name: 'Pro',
226
- description: 'For professional teams',
227
- price: { monthly: '$29', yearly: '$279' },
228
- popular: true,
229
- features: ['All components', 'Priority support'],
230
- button: { label: 'Get Pro' }
231
- }
232
- ]`
233
-
234
- const plansData = [
235
- {
236
- name: 'Starter',
237
- description: 'For personal projects',
238
- price: { monthly: '$0', yearly: '$0' },
239
- features: [
240
- '10 components',
241
- 'Basic support',
242
- 'Community access',
243
- 'MIT license'
244
- ],
245
- button: {
246
- label: 'Get Started'
247
- }
248
- },
249
- {
250
- name: 'Pro',
251
- description: 'For professional teams',
252
- price: { monthly: '$29', yearly: '$279' },
253
- popular: true,
254
- scale: true,
255
- highlight: true,
256
- features: [
257
- 'All 33 components',
258
- 'Priority support',
259
- 'Figma files',
260
- 'Updates for 1 year',
261
- 'Private Discord'
262
- ],
263
- button: {
264
- label: 'Get Pro'
265
- }
266
- },
267
- {
268
- name: 'Enterprise',
269
- description: 'For large organizations',
270
- price: { monthly: '$99', yearly: '$949' },
271
- features: [
272
- 'Everything in Pro',
273
- 'Custom components',
274
- 'Dedicated support',
275
- 'SLA guarantee',
276
- 'White-label license'
277
- ],
278
- button: {
279
- label: 'Contact Sales'
280
- }
281
- }
282
- ]
283
-
284
- const computedPlans = computed(() => {
285
- return plansData
286
- })
287
-
288
- const simplePlans = [
289
- {
290
- name: 'Basic',
291
- description: 'Essential features',
292
- price: '$9',
293
- period: '/month',
294
- features: ['5 projects', 'Basic analytics', 'Email support'],
295
- button: { label: 'Start Free Trial' }
296
- },
297
- {
298
- name: 'Professional',
299
- description: 'Advanced features',
300
- price: '$29',
301
- period: '/month',
302
- popular: true,
303
- features: ['Unlimited projects', 'Advanced analytics', 'Priority support', 'API access'],
304
- button: { label: 'Get Started' }
305
- },
306
- {
307
- name: 'Business',
308
- description: 'Enterprise scale',
309
- price: '$99',
310
- period: '/month',
311
- features: ['Everything in Pro', 'Custom integrations', 'Dedicated manager', 'SLA'],
312
- button: { label: 'Contact Us' }
313
- }
314
- ]
315
-
316
- const twoPlans = [
317
- {
318
- name: 'Free',
319
- description: 'Get started',
320
- price: '$0',
321
- period: '/forever',
322
- features: ['Basic features', 'Community support', '1 project'],
323
- button: { label: 'Sign Up Free' }
324
- },
325
- {
326
- name: 'Premium',
327
- description: 'Full access',
328
- price: '$49',
329
- period: '/month',
330
- popular: true,
331
- features: ['All features', 'Priority support', 'Unlimited projects', 'Custom branding'],
332
- button: { label: 'Go Premium' }
333
- }
334
- ]
335
- </script>
@@ -1,188 +0,0 @@
1
- <template>
2
- <div class="min-h-screen">
3
- <!-- Page Header -->
4
- <div class="bg-white dark:bg-neutral-900 border-b border-neutral-200 dark:border-neutral-800 px-8 py-6">
5
- <h1 class="text-2xl font-bold text-neutral-900 dark:text-white">Testimonials</h1>
6
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">
7
- Customer testimonials in featured, grid, and carousel layouts.
8
- </p>
9
- </div>
10
-
11
- <!-- Demo Content -->
12
- <div class="space-y-0">
13
- <!-- Featured Layout -->
14
- <XMarkSection bg="default">
15
- <div class="text-center mb-12">
16
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">layout="featured"</span>
17
- <h2 class="xText-headline">Featured Testimonial</h2>
18
- <p class="mt-4 text-neutral-600 dark:text-neutral-400">Single prominent testimonial with navigation dots</p>
19
- </div>
20
- <XMarkSocialProofTestimonials
21
- :testimonials="testimonials"
22
- layout="featured"
23
- :has-stars="true"
24
- />
25
- </XMarkSection>
26
-
27
- <!-- Grid Layout -->
28
- <XMarkSection bg="subtle">
29
- <div class="text-center mb-12">
30
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">layout="grid"</span>
31
- <h2 class="xText-headline">Grid Layout</h2>
32
- <p class="mt-4 text-neutral-600 dark:text-neutral-400">Multiple testimonials in a responsive grid</p>
33
- </div>
34
- <XMarkSocialProofTestimonials
35
- :testimonials="testimonials"
36
- layout="grid"
37
- :has-stars="true"
38
- />
39
- </XMarkSection>
40
-
41
- <!-- Without Stars -->
42
- <XMarkSection bg="default">
43
- <div class="text-center mb-12">
44
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">hasStars="false"</span>
45
- <h2 class="xText-headline">Without Star Ratings</h2>
46
- </div>
47
- <XMarkSocialProofTestimonials
48
- :testimonials="testimonials"
49
- layout="grid"
50
- :has-stars="false"
51
- />
52
- </XMarkSection>
53
-
54
- <!-- Props Documentation -->
55
- <XMarkSection bg="subtle">
56
- <h2 class="text-lg font-semibold mb-6">Props</h2>
57
- <div class="overflow-x-auto">
58
- <table class="w-full text-sm">
59
- <thead>
60
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
61
- <th class="text-left py-3 px-4 font-medium">Prop</th>
62
- <th class="text-left py-3 px-4 font-medium">Type</th>
63
- <th class="text-left py-3 px-4 font-medium">Default</th>
64
- <th class="text-left py-3 px-4 font-medium">Description</th>
65
- </tr>
66
- </thead>
67
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
68
- <tr>
69
- <td class="py-3 px-4 font-mono text-xs">testimonials</td>
70
- <td class="py-3 px-4">Array</td>
71
- <td class="py-3 px-4">required</td>
72
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Array of { quote, name, title, company, avatar, logo, rating }</td>
73
- </tr>
74
- <tr>
75
- <td class="py-3 px-4 font-mono text-xs">layout</td>
76
- <td class="py-3 px-4">String</td>
77
- <td class="py-3 px-4">'featured'</td>
78
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">featured, grid, carousel</td>
79
- </tr>
80
- <tr>
81
- <td class="py-3 px-4 font-mono text-xs">hasStars</td>
82
- <td class="py-3 px-4">Boolean</td>
83
- <td class="py-3 px-4">true</td>
84
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Show star rating</td>
85
- </tr>
86
- <tr>
87
- <td class="py-3 px-4 font-mono text-xs">autoplay</td>
88
- <td class="py-3 px-4">Boolean</td>
89
- <td class="py-3 px-4">true</td>
90
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Auto-rotate (featured/carousel layouts)</td>
91
- </tr>
92
- <tr>
93
- <td class="py-3 px-4 font-mono text-xs">interval</td>
94
- <td class="py-3 px-4">Number</td>
95
- <td class="py-3 px-4">5000</td>
96
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Autoplay interval in ms</td>
97
- </tr>
98
- </tbody>
99
- </table>
100
- </div>
101
- </XMarkSection>
102
-
103
- <!-- Data Structure -->
104
- <XMarkSection bg="default">
105
- <h2 class="text-lg font-semibold mb-4">Data Structure</h2>
106
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-4 text-sm font-mono overflow-x-auto">
107
- <pre>{
108
- quote: "This is the testimonial text...",
109
- name: "John Doe",
110
- title: "CEO",
111
- company: "Acme Inc",
112
- avatar: "https://...",
113
- logo: "https://...", // Optional company logo
114
- rating: 5 // 1-5 for star rating
115
- }</pre>
116
- </div>
117
- </XMarkSection>
118
-
119
- <!-- Code Example -->
120
- <XMarkSection bg="subtle">
121
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
122
- <CodeExample title="Testimonials Usage" :code="codeExample" />
123
- </XMarkSection>
124
- </div>
125
- </div>
126
- </template>
127
-
128
- <script setup>
129
- // Initialize scroll reveal animations
130
- useScrollReveal()
131
-
132
- const codeExample = `<XMarkSocialProofTestimonials
133
- :testimonials="[
134
- {
135
- quote: 'These components saved us weeks of development.',
136
- name: 'Sarah Chen',
137
- title: 'CTO',
138
- company: 'TechCorp',
139
- avatar: 'https://...',
140
- rating: 5
141
- },
142
- {
143
- quote: 'The best marketing component library.',
144
- name: 'Michael Torres',
145
- title: 'Lead Developer',
146
- company: 'StartupXYZ',
147
- avatar: 'https://...',
148
- rating: 5
149
- }
150
- ]"
151
- layout="featured"
152
- :has-stars="true"
153
- />
154
-
155
- <!-- Grid layout -->
156
- <XMarkSocialProofTestimonials
157
- :testimonials="testimonials"
158
- layout="grid"
159
- :has-stars="false"
160
- />`
161
-
162
- const testimonials = [
163
- {
164
- quote: 'These components saved us weeks of development time. The quality and attention to detail is outstanding. Highly recommended for any marketing project.',
165
- name: 'Sarah Chen',
166
- title: 'CTO',
167
- company: 'TechCorp',
168
- avatar: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop',
169
- rating: 5
170
- },
171
- {
172
- quote: 'The best marketing component library I\'ve used. Beautifully designed and easy to customize. Our team was able to launch our new site in record time.',
173
- name: 'Michael Torres',
174
- title: 'Lead Developer',
175
- company: 'StartupXYZ',
176
- avatar: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=100&h=100&fit=crop',
177
- rating: 5
178
- },
179
- {
180
- quote: 'Perfect for building marketing sites quickly. The dark mode support is excellent and the accessibility features are top-notch.',
181
- name: 'Emma Williams',
182
- title: 'Designer',
183
- company: 'Creative Agency',
184
- avatar: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop',
185
- rating: 5
186
- }
187
- ]
188
- </script>