@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,515 +0,0 @@
1
- <template>
2
- <div class="min-h-screen">
3
- <div
4
- class="bg-white dark:bg-neutral-900 border-b border-neutral-200 dark:border-neutral-800 px-8 py-6"
5
- >
6
- <h1 class="text-2xl font-bold text-neutral-900 dark:text-white">
7
- Social Proof Toast
8
- </h1>
9
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">
10
- Automated notifications showing recent customer activity.
11
- </p>
12
- </div>
13
-
14
- <div class="p-8 space-y-12">
15
- <!-- Demo -->
16
- <section>
17
- <h2 class="text-lg font-semibold mb-4">Live Demo</h2>
18
- <p class="text-sm text-neutral-500 mb-4">
19
- The social proof notifications will cycle through automatically.
20
- Select placement, type, and click Start Demo.
21
- </p>
22
- <div class="flex flex-wrap items-center gap-3">
23
- <UButton @click="startDemo">Start Demo</UButton>
24
- <UButton color="neutral" variant="outline" @click="stopDemo"
25
- >Stop Demo</UButton
26
- >
27
- <div class="flex items-center gap-2 ml-4">
28
- <span class="text-sm text-neutral-500">Placement:</span>
29
- <UButtonGroup>
30
- <UButton
31
- size="sm"
32
- :variant="demoPlacement === 'bottomLeft' ? 'solid' : 'outline'"
33
- @click="demoPlacement = 'bottomLeft'"
34
- >Bottom Left</UButton
35
- >
36
- <UButton
37
- size="sm"
38
- :variant="demoPlacement === 'bottomRight' ? 'solid' : 'outline'"
39
- @click="demoPlacement = 'bottomRight'"
40
- >Bottom Right</UButton
41
- >
42
- <UButton
43
- size="sm"
44
- :variant="demoPlacement === 'topLeft' ? 'solid' : 'outline'"
45
- @click="demoPlacement = 'topLeft'"
46
- >Top Left</UButton
47
- >
48
- <UButton
49
- size="sm"
50
- :variant="demoPlacement === 'topRight' ? 'solid' : 'outline'"
51
- @click="demoPlacement = 'topRight'"
52
- >Top Right</UButton
53
- >
54
- </UButtonGroup>
55
- </div>
56
- <div class="flex items-center gap-2 ml-4">
57
- <span class="text-sm text-neutral-500">Type:</span>
58
- <UButtonGroup>
59
- <UButton
60
- size="sm"
61
- :variant="demoType === 'success' ? 'solid' : 'outline'"
62
- @click="demoType = 'success'"
63
- >Success</UButton
64
- >
65
- <UButton
66
- size="sm"
67
- :variant="demoType === 'error' ? 'solid' : 'outline'"
68
- @click="demoType = 'error'"
69
- >Error</UButton
70
- >
71
- <UButton
72
- size="sm"
73
- :variant="demoType === 'warning' ? 'solid' : 'outline'"
74
- @click="demoType = 'warning'"
75
- >Warning</UButton
76
- >
77
- <UButton
78
- size="sm"
79
- :variant="demoType === 'info' ? 'solid' : 'outline'"
80
- @click="demoType = 'info'"
81
- >Info</UButton
82
- >
83
- </UButtonGroup>
84
- </div>
85
- </div>
86
- </section>
87
-
88
- <!-- Type Examples -->
89
- <section>
90
- <h2 class="text-lg font-semibold mb-4">Toast Types</h2>
91
- <div class="grid md:grid-cols-2 gap-4">
92
- <!-- Success -->
93
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-6">
94
- <h3 class="font-medium mb-4 text-green-600 dark:text-green-400">
95
- Success
96
- </h3>
97
- <div
98
- class="bg-white dark:bg-neutral-900 rounded-xl shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 flex items-center gap-3"
99
- >
100
- <img
101
- src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop"
102
- alt="Customer"
103
- class="w-10 h-10 rounded-full object-cover"
104
- />
105
- <div class="flex-1">
106
- <p class="text-sm text-neutral-900 dark:text-white">
107
- <span class="font-medium">Sarah M.</span>
108
- just purchased Pro Plan
109
- </p>
110
- <p class="text-xs text-neutral-500 mt-0.5">2 minutes ago</p>
111
- </div>
112
- <UIcon
113
- name="i-lucide-badge-check"
114
- class="w-5 h-5 text-green-500 flex-shrink-0"
115
- />
116
- </div>
117
- </div>
118
-
119
- <!-- Error -->
120
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-6">
121
- <h3 class="font-medium mb-4 text-red-600 dark:text-red-400">
122
- Error
123
- </h3>
124
- <div
125
- class="bg-white dark:bg-neutral-900 rounded-xl shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 flex items-center gap-3"
126
- >
127
- <div
128
- class="w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"
129
- >
130
- <span class="text-primary-600 dark:text-primary-400 font-medium"
131
- >J</span
132
- >
133
- </div>
134
- <div class="flex-1">
135
- <p class="text-sm text-neutral-900 dark:text-white">
136
- <span class="font-medium">John D.</span>
137
- payment failed
138
- </p>
139
- <p class="text-xs text-neutral-500 mt-0.5">5 minutes ago</p>
140
- </div>
141
- <UIcon
142
- name="i-lucide-x-circle"
143
- class="w-5 h-5 text-red-500 flex-shrink-0"
144
- />
145
- </div>
146
- </div>
147
-
148
- <!-- Warning -->
149
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-6">
150
- <h3 class="font-medium mb-4 text-yellow-600 dark:text-yellow-400">
151
- Warning
152
- </h3>
153
- <div
154
- class="bg-white dark:bg-neutral-900 rounded-xl shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 flex items-center gap-3"
155
- >
156
- <div
157
- class="w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"
158
- >
159
- <span class="text-primary-600 dark:text-primary-400 font-medium"
160
- >E</span
161
- >
162
- </div>
163
- <div class="flex-1">
164
- <p class="text-sm text-neutral-900 dark:text-white">
165
- <span class="font-medium">Emily R.</span>
166
- subscription expiring soon
167
- </p>
168
- <p class="text-xs text-neutral-500 mt-0.5">10 minutes ago</p>
169
- </div>
170
- <UIcon
171
- name="i-lucide-alert-triangle"
172
- class="w-5 h-5 text-yellow-500 flex-shrink-0"
173
- />
174
- </div>
175
- </div>
176
-
177
- <!-- Info -->
178
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-6">
179
- <h3 class="font-medium mb-4 text-blue-600 dark:text-blue-400">
180
- Info
181
- </h3>
182
- <div
183
- class="bg-white dark:bg-neutral-900 rounded-xl shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 flex items-center gap-3"
184
- >
185
- <img
186
- src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop"
187
- alt="Customer"
188
- class="w-10 h-10 rounded-full object-cover"
189
- />
190
- <div class="flex-1">
191
- <p class="text-sm text-neutral-900 dark:text-white">
192
- <span class="font-medium">James W.</span>
193
- viewed pricing page
194
- </p>
195
- <p class="text-xs text-neutral-500 mt-0.5">1 minute ago</p>
196
- </div>
197
- <UIcon
198
- name="i-lucide-info"
199
- class="w-5 h-5 text-blue-500 flex-shrink-0"
200
- />
201
- </div>
202
- </div>
203
- </div>
204
- </section>
205
-
206
- <!-- Configuration -->
207
- <section>
208
- <h2 class="text-lg font-semibold mb-4">Timing Configuration</h2>
209
- <div class="grid md:grid-cols-3 gap-4">
210
- <div class="p-4 rounded-lg bg-neutral-100 dark:bg-neutral-800">
211
- <h3 class="font-medium mb-1">Initial Delay</h3>
212
- <p class="text-sm text-neutral-500">
213
- Wait before first notification
214
- </p>
215
- <p class="mt-2 font-mono text-sm">5000ms (5 seconds)</p>
216
- </div>
217
- <div class="p-4 rounded-lg bg-neutral-100 dark:bg-neutral-800">
218
- <h3 class="font-medium mb-1">Display Duration</h3>
219
- <p class="text-sm text-neutral-500">How long each shows</p>
220
- <p class="mt-2 font-mono text-sm">3000ms (3 seconds)</p>
221
- </div>
222
- <div class="p-4 rounded-lg bg-neutral-100 dark:bg-neutral-800">
223
- <h3 class="font-medium mb-1">Interval</h3>
224
- <p class="text-sm text-neutral-500">Time between notifications</p>
225
- <p class="mt-2 font-mono text-sm">4000ms (4 seconds)</p>
226
- </div>
227
- </div>
228
- </section>
229
-
230
- <!-- Props -->
231
- <section>
232
- <h2 class="text-lg font-semibold mb-4">Props</h2>
233
- <table class="w-full text-sm">
234
- <thead>
235
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
236
- <th class="text-left py-3 px-4">Prop</th>
237
- <th class="text-left py-3 px-4">Type</th>
238
- <th class="text-left py-3 px-4">Default</th>
239
- <th class="text-left py-3 px-4">Description</th>
240
- </tr>
241
- </thead>
242
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
243
- <tr>
244
- <td class="py-3 px-4 font-mono text-xs">notifications</td>
245
- <td class="py-3 px-4">Array</td>
246
- <td class="py-3 px-4">required</td>
247
- <td class="py-3 px-4">Array of notification objects</td>
248
- </tr>
249
- <tr>
250
- <td class="py-3 px-4 font-mono text-xs">interval</td>
251
- <td class="py-3 px-4">Number</td>
252
- <td class="py-3 px-4">4000</td>
253
- <td class="py-3 px-4">Time between notifications (ms)</td>
254
- </tr>
255
- <tr>
256
- <td class="py-3 px-4 font-mono text-xs">initialDelay</td>
257
- <td class="py-3 px-4">Number</td>
258
- <td class="py-3 px-4">5000</td>
259
- <td class="py-3 px-4">Delay before first notification (ms)</td>
260
- </tr>
261
- <tr>
262
- <td class="py-3 px-4 font-mono text-xs">displayDuration</td>
263
- <td class="py-3 px-4">Number</td>
264
- <td class="py-3 px-4">3000</td>
265
- <td class="py-3 px-4">How long each notification shows (ms)</td>
266
- </tr>
267
- <tr>
268
- <td class="py-3 px-4 font-mono text-xs">placement</td>
269
- <td class="py-3 px-4">String</td>
270
- <td class="py-3 px-4">topRight</td>
271
- <td class="py-3 px-4">
272
- topLeft, topRight, bottomLeft, bottomRight
273
- </td>
274
- </tr>
275
- <tr>
276
- <td class="py-3 px-4 font-mono text-xs">type</td>
277
- <td class="py-3 px-4">String</td>
278
- <td class="py-3 px-4">success</td>
279
- <td class="py-3 px-4">success, error, warning, info</td>
280
- </tr>
281
- <tr>
282
- <td class="py-3 px-4 font-mono text-xs">showIcon</td>
283
- <td class="py-3 px-4">Boolean</td>
284
- <td class="py-3 px-4">true</td>
285
- <td class="py-3 px-4">Whether to show the status icon</td>
286
- </tr>
287
- </tbody>
288
- </table>
289
- </section>
290
-
291
- <!-- Notification Structure -->
292
- <section>
293
- <h2 class="text-lg font-semibold mb-4">
294
- Notification Object Structure
295
- </h2>
296
- <pre
297
- class="bg-neutral-100 dark:bg-neutral-800 p-4 rounded-lg text-sm overflow-x-auto"
298
- ><code>notifications: [
299
- {
300
- name: 'Sarah M.', // Customer name (required)
301
- action: 'just purchased Pro Plan', // Action text (required)
302
- time: '2 minutes ago', // Time string (required)
303
- avatar: 'https://...' // Optional avatar URL
304
- },
305
- // ... more notifications
306
- ]</code></pre>
307
- </section>
308
-
309
- <!-- Sample Data -->
310
- <section>
311
- <h2 class="text-lg font-semibold mb-4">Sample Notifications</h2>
312
- <div class="grid md:grid-cols-2 gap-4">
313
- <div
314
- v-for="notification in notifications"
315
- :key="notification.name"
316
- class="p-4 rounded-lg border border-neutral-200 dark:border-neutral-700 flex items-center gap-3"
317
- >
318
- <img
319
- v-if="notification.avatar"
320
- :src="notification.avatar"
321
- :alt="notification.name"
322
- class="w-10 h-10 rounded-full object-cover"
323
- />
324
- <div
325
- v-else
326
- class="w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"
327
- >
328
- <span class="text-primary-600 dark:text-primary-400 font-medium">
329
- {{ notification.name.charAt(0) }}
330
- </span>
331
- </div>
332
- <div class="flex-1">
333
- <p class="text-sm">
334
- <span class="font-medium">{{ notification.name }}</span>
335
- {{ notification.action }}
336
- </p>
337
- <p class="text-xs text-neutral-500">{{ notification.time }}</p>
338
- </div>
339
- </div>
340
- </div>
341
- </section>
342
-
343
- <!-- Usage Tips -->
344
- <section>
345
- <h2 class="text-lg font-semibold mb-4">Usage Tips</h2>
346
- <ul class="space-y-3 text-neutral-600 dark:text-neutral-400">
347
- <li class="flex gap-2">
348
- <UIcon
349
- name="i-lucide-lightbulb"
350
- class="w-5 h-5 text-yellow-500 flex-shrink-0"
351
- />
352
- <span
353
- >Use real customer data or realistic fake data for
354
- authenticity</span
355
- >
356
- </li>
357
- <li class="flex gap-2">
358
- <UIcon
359
- name="i-lucide-lightbulb"
360
- class="w-5 h-5 text-yellow-500 flex-shrink-0"
361
- />
362
- <span>Keep action text short and focused on conversions</span>
363
- </li>
364
- <li class="flex gap-2">
365
- <UIcon
366
- name="i-lucide-lightbulb"
367
- class="w-5 h-5 text-yellow-500 flex-shrink-0"
368
- />
369
- <span>Use recent-sounding times ("2 minutes ago") for urgency</span>
370
- </li>
371
- <li class="flex gap-2">
372
- <UIcon
373
- name="i-lucide-lightbulb"
374
- class="w-5 h-5 text-yellow-500 flex-shrink-0"
375
- />
376
- <span>Include diverse customer names and avatars</span>
377
- </li>
378
- </ul>
379
- </section>
380
-
381
- <!-- Code Example -->
382
- <section>
383
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
384
- <CodeExample title="Social Proof Toast Usage" :code="codeExample" />
385
- </section>
386
-
387
- <!-- Type Examples Code -->
388
- <section>
389
- <h2 class="text-lg font-semibold mb-4">Type Examples</h2>
390
- <CodeExample title="Different Toast Types" :code="typeExamplesCode" />
391
- </section>
392
- </div>
393
-
394
- <!-- Actual Component -->
395
- <XMarkSocialProofToast
396
- v-if="demoActive"
397
- :notifications="notifications"
398
- :interval="4000"
399
- :initial-delay="1000"
400
- :display-duration="3000"
401
- :placement="demoPlacement"
402
- :type="demoType"
403
- />
404
- </div>
405
- </template>
406
-
407
- <script setup>
408
- const codeExample = `<XMarkSocialProofToast
409
- :notifications="notifications"
410
- :interval="4000"
411
- :initial-delay="5000"
412
- :display-duration="3000"
413
- type="success"
414
- />
415
-
416
- <script setup>
417
- const notifications = [
418
- {
419
- name: 'Sarah M.',
420
- action: 'just purchased Pro Plan',
421
- time: '2 minutes ago',
422
- avatar: 'https://...'
423
- },
424
- {
425
- name: 'James W.',
426
- action: 'signed up for a free trial',
427
- time: '5 minutes ago',
428
- avatar: 'https://...'
429
- },
430
- {
431
- name: 'Emily R.',
432
- action: 'upgraded to Enterprise',
433
- time: '8 minutes ago'
434
- }
435
- ]
436
- <\/script>`;
437
-
438
- const typeExamplesCode = `<!-- Success (default) -->
439
- <XMarkSocialProofToast
440
- :notifications="notifications"
441
- type="success"
442
- />
443
-
444
- <!-- Error -->
445
- <XMarkSocialProofToast
446
- :notifications="notifications"
447
- type="error"
448
- />
449
-
450
- <!-- Warning -->
451
- <XMarkSocialProofToast
452
- :notifications="notifications"
453
- type="warning"
454
- />
455
-
456
- <!-- Info -->
457
- <XMarkSocialProofToast
458
- :notifications="notifications"
459
- type="info"
460
- />
461
-
462
- <!-- Hide icon -->
463
- <XMarkSocialProofToast
464
- :notifications="notifications"
465
- :show-icon="false"
466
- />`;
467
-
468
- const demoActive = ref(false);
469
- const demoPlacement = ref("bottomLeft");
470
- const demoType = ref("success");
471
-
472
- const notifications = [
473
- {
474
- name: "Sarah M.",
475
- action: "just purchased Pro Plan",
476
- time: "2 minutes ago",
477
- avatar:
478
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop",
479
- },
480
- {
481
- name: "James W.",
482
- action: "signed up for a free trial",
483
- time: "5 minutes ago",
484
- avatar:
485
- "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop",
486
- },
487
- {
488
- name: "Emily R.",
489
- action: "upgraded to Enterprise",
490
- time: "8 minutes ago",
491
- avatar:
492
- "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop",
493
- },
494
- {
495
- name: "Michael T.",
496
- action: "just made a purchase",
497
- time: "12 minutes ago",
498
- },
499
- {
500
- name: "Lisa K.",
501
- action: "joined the newsletter",
502
- time: "15 minutes ago",
503
- avatar:
504
- "https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=100&h=100&fit=crop",
505
- },
506
- ];
507
-
508
- const startDemo = () => {
509
- demoActive.value = true;
510
- };
511
-
512
- const stopDemo = () => {
513
- demoActive.value = false;
514
- };
515
- </script>
@@ -1,161 +0,0 @@
1
- <template>
2
- <div class="min-h-screen">
3
- <div class="bg-white dark:bg-neutral-900 border-b border-neutral-200 dark:border-neutral-800 px-8 py-6">
4
- <h1 class="text-2xl font-bold text-neutral-900 dark:text-white">Badge</h1>
5
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">Trust indicators and feature badges with preset icons.</p>
6
- </div>
7
-
8
- <div class="p-8 space-y-12">
9
- <!-- Presets -->
10
- <section>
11
- <h2 class="text-lg font-semibold mb-4">Preset Badges</h2>
12
- <p class="text-sm text-neutral-500 mb-4">Built-in presets for common trust indicators</p>
13
- <div class="flex flex-wrap gap-4">
14
- <XMarkSocialProofBadge preset="no-credit-card" />
15
- <XMarkSocialProofBadge preset="cancel-anytime" />
16
- <XMarkSocialProofBadge preset="free-trial" />
17
- <XMarkSocialProofBadge preset="secure" />
18
- <XMarkSocialProofBadge preset="support" />
19
- <XMarkSocialProofBadge preset="setup" />
20
- <XMarkSocialProofBadge preset="gdpr" />
21
- <XMarkSocialProofBadge preset="money-back" />
22
- </div>
23
- </section>
24
-
25
- <!-- Variants -->
26
- <section>
27
- <h2 class="text-lg font-semibold mb-4">Style Variants</h2>
28
- <p class="text-sm text-neutral-500 mb-4">Default, subtle, outline, text, and text-muted styles</p>
29
- <div class="flex flex-wrap items-center gap-4">
30
- <XMarkSocialProofBadge preset="secure" variant="default" />
31
- <XMarkSocialProofBadge preset="secure" variant="subtle" />
32
- <XMarkSocialProofBadge preset="secure" variant="outline" />
33
- <XMarkSocialProofBadge preset="secure" variant="text" />
34
- <XMarkSocialProofBadge preset="secure" variant="text-muted" />
35
- </div>
36
- </section>
37
-
38
- <!-- Custom Badges -->
39
- <section>
40
- <h2 class="text-lg font-semibold mb-4">Custom Badges</h2>
41
- <p class="text-sm text-neutral-500 mb-4">Create custom badges with any icon and label</p>
42
- <div class="flex flex-wrap gap-4">
43
- <XMarkSocialProofBadge icon="i-lucide-sparkles" label="AI-Powered" />
44
- <XMarkSocialProofBadge icon="i-lucide-globe" label="Available Worldwide" variant="subtle" />
45
- <XMarkSocialProofBadge icon="i-lucide-rocket" label="Fast Setup" variant="outline" />
46
- </div>
47
- </section>
48
-
49
- <!-- Usage Example -->
50
- <section>
51
- <h2 class="text-lg font-semibold mb-4">Usage in Hero</h2>
52
- <p class="text-sm text-neutral-500 mb-4">Common placement below CTA buttons</p>
53
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-8">
54
- <div class="text-center space-y-6">
55
- <h3 class="text-2xl font-bold">Start Your Free Trial</h3>
56
- <UButton size="lg" color="primary">Get Started</UButton>
57
- <div class="flex justify-center gap-4 flex-wrap">
58
- <XMarkSocialProofBadge preset="no-credit-card" variant="subtle" />
59
- <XMarkSocialProofBadge preset="cancel-anytime" variant="subtle" />
60
- </div>
61
- </div>
62
- </div>
63
- </section>
64
-
65
- <!-- Props -->
66
- <section>
67
- <h2 class="text-lg font-semibold mb-4">Props</h2>
68
- <div class="overflow-x-auto">
69
- <table class="w-full text-sm">
70
- <thead>
71
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
72
- <th class="text-left py-3 px-4 font-medium">Prop</th>
73
- <th class="text-left py-3 px-4 font-medium">Type</th>
74
- <th class="text-left py-3 px-4 font-medium">Default</th>
75
- <th class="text-left py-3 px-4 font-medium">Description</th>
76
- </tr>
77
- </thead>
78
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
79
- <tr>
80
- <td class="py-3 px-4 font-mono text-xs">preset</td>
81
- <td class="py-3 px-4">String</td>
82
- <td class="py-3 px-4">''</td>
83
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">no-credit-card, cancel-anytime, free-trial, secure, support, setup, gdpr, money-back</td>
84
- </tr>
85
- <tr>
86
- <td class="py-3 px-4 font-mono text-xs">icon</td>
87
- <td class="py-3 px-4">String</td>
88
- <td class="py-3 px-4">''</td>
89
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Custom icon name (if not using preset)</td>
90
- </tr>
91
- <tr>
92
- <td class="py-3 px-4 font-mono text-xs">label</td>
93
- <td class="py-3 px-4">String</td>
94
- <td class="py-3 px-4">''</td>
95
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Custom label text (if not using preset)</td>
96
- </tr>
97
- <tr>
98
- <td class="py-3 px-4 font-mono text-xs">variant</td>
99
- <td class="py-3 px-4">String</td>
100
- <td class="py-3 px-4">'default'</td>
101
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">default, subtle, outline, text, text-muted</td>
102
- </tr>
103
- </tbody>
104
- </table>
105
- </div>
106
- </section>
107
-
108
- <!-- Available Presets -->
109
- <section>
110
- <h2 class="text-lg font-semibold mb-4">Available Presets</h2>
111
- <table class="w-full text-sm">
112
- <thead>
113
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
114
- <th class="text-left py-3 px-4">Preset</th>
115
- <th class="text-left py-3 px-4">Icon</th>
116
- <th class="text-left py-3 px-4">Label</th>
117
- </tr>
118
- </thead>
119
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
120
- <tr><td class="py-3 px-4 font-mono text-xs">no-credit-card</td><td class="py-3 px-4">i-lucide-credit-card</td><td class="py-3 px-4">No credit card required</td></tr>
121
- <tr><td class="py-3 px-4 font-mono text-xs">cancel-anytime</td><td class="py-3 px-4">i-lucide-x-circle</td><td class="py-3 px-4">Cancel anytime</td></tr>
122
- <tr><td class="py-3 px-4 font-mono text-xs">free-trial</td><td class="py-3 px-4">i-lucide-gift</td><td class="py-3 px-4">Free 14-day trial</td></tr>
123
- <tr><td class="py-3 px-4 font-mono text-xs">secure</td><td class="py-3 px-4">i-lucide-shield-check</td><td class="py-3 px-4">Bank-level security</td></tr>
124
- <tr><td class="py-3 px-4 font-mono text-xs">support</td><td class="py-3 px-4">i-lucide-message-circle</td><td class="py-3 px-4">24/7 support</td></tr>
125
- <tr><td class="py-3 px-4 font-mono text-xs">setup</td><td class="py-3 px-4">i-lucide-zap</td><td class="py-3 px-4">Setup in minutes</td></tr>
126
- <tr><td class="py-3 px-4 font-mono text-xs">gdpr</td><td class="py-3 px-4">i-lucide-lock</td><td class="py-3 px-4">GDPR compliant</td></tr>
127
- <tr><td class="py-3 px-4 font-mono text-xs">money-back</td><td class="py-3 px-4">i-lucide-undo-2</td><td class="py-3 px-4">30-day money back</td></tr>
128
- </tbody>
129
- </table>
130
- </section>
131
-
132
- <!-- Code Example -->
133
- <section>
134
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
135
- <CodeExample title="Badge Usage" :code="codeExample" />
136
- </section>
137
- </div>
138
- </div>
139
- </template>
140
-
141
- <script setup>
142
- const codeExample = `<!-- Using presets -->
143
- <XMarkSocialProofBadge preset="no-credit-card" />
144
- <XMarkSocialProofBadge preset="secure" variant="subtle" />
145
-
146
- <!-- Custom badge -->
147
- <XMarkSocialProofBadge
148
- icon="i-lucide-sparkles"
149
- label="AI-Powered"
150
- variant="outline"
151
- />
152
-
153
- <!-- Text variant (minimal) -->
154
- <XMarkSocialProofBadge preset="gdpr" variant="text" />
155
-
156
- <!-- Common usage below CTA -->
157
- <div class="flex justify-center gap-4">
158
- <XMarkSocialProofBadge preset="no-credit-card" variant="subtle" />
159
- <XMarkSocialProofBadge preset="cancel-anytime" variant="subtle" />
160
- </div>`
161
- </script>