@xenterprises/nuxt-x-marketing 1.0.0 → 1.0.2

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 (49) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/.playground/app.vue +12 -6
  3. package/.playground/pages/blog/detail.vue +341 -249
  4. package/.playground/pages/index.vue +2 -2
  5. package/.playground/pages/layout/x-legal.vue +12 -12
  6. package/.playground/pages/notifications/social-proof-toast.vue +330 -70
  7. package/LICENSE +60 -0
  8. package/README.md +210 -64
  9. package/app/app.config.ts +2 -72
  10. package/app/assets/css/x-marketing.css +1 -0
  11. package/app/components/X/Footer/index.vue +3 -4
  12. package/app/components/X/Mark/Affiliate/ComparisonTable.vue +382 -0
  13. package/app/components/X/Mark/Affiliate/Disclosure.vue +138 -0
  14. package/app/components/X/Mark/Affiliate/ProductCard.vue +431 -0
  15. package/app/components/X/Mark/Affiliate/ProductDetail.vue +410 -0
  16. package/app/components/X/Mark/Affiliate/ProductGrid.vue +101 -0
  17. package/app/components/X/Mark/Blog/Author.vue +26 -20
  18. package/app/components/X/Mark/Blog/Card.vue +28 -15
  19. package/app/components/X/Mark/Blog/Detail.vue +82 -127
  20. package/app/components/X/Mark/Blog/List.vue +17 -16
  21. package/app/components/X/Mark/CTA/index.vue +74 -70
  22. package/app/components/X/Mark/Card/Promo.vue +149 -139
  23. package/app/components/X/Mark/CodeBlock/index.vue +69 -0
  24. package/app/components/X/Mark/Directory/CategoryHero.vue +124 -0
  25. package/app/components/X/Mark/Directory/ListingCard.vue +336 -0
  26. package/app/components/X/Mark/Directory/ListingDetail.vue +306 -0
  27. package/app/components/X/Mark/Directory/ListingGrid.vue +190 -0
  28. package/app/components/X/Mark/Directory/SubmitCTA.vue +201 -0
  29. package/app/components/X/Mark/FAQ/index.vue +191 -0
  30. package/app/components/X/Mark/Features/index.vue +87 -35
  31. package/app/components/X/Mark/Hero/index.vue +41 -38
  32. package/app/components/X/Mark/Layout/AnnouncementBar.vue +20 -28
  33. package/app/components/X/Mark/Modal/Chat.vue +124 -124
  34. package/app/components/X/Mark/Modal/Video.vue +46 -36
  35. package/app/components/X/Mark/Pricing/Comparison.vue +76 -21
  36. package/app/components/X/Mark/Pricing/Plans.vue +75 -25
  37. package/app/components/X/Mark/SocialProof/Testimonials.vue +89 -21
  38. package/app/components/X/Mark/SocialProof/Toast.vue +155 -102
  39. package/app/components/X/X/Footer/index.vue +101 -0
  40. package/app/components/X/X/Header/Nav/index.vue +62 -0
  41. package/app/components/X/X/Header/index.vue +72 -0
  42. package/app/components/X/X/Legal/index.vue +94 -0
  43. package/app/composables/useParallax.ts +32 -19
  44. package/app/composables/useScrollReveal.ts +20 -13
  45. package/app/pages/index.vue +230 -28
  46. package/componentList.json +1856 -238
  47. package/nuxt.config.ts +12 -3
  48. package/package.json +5 -2
  49. package/screenshots/playground-home.png +0 -0
@@ -5,8 +5,24 @@
5
5
  "file": "Blog/Author.vue",
6
6
  "category": "Blog",
7
7
  "props": [
8
- { "name": "author", "type": "Object", "default": null, "required": true },
9
- { "name": "variant", "type": "String", "default": "inline", "required": false, "options": ["inline", "sm", "full", "card"] }
8
+ {
9
+ "name": "author",
10
+ "type": "Object",
11
+ "default": "{ name: \"Author Name\", title: \"Contributor\" }",
12
+ "required": false
13
+ },
14
+ {
15
+ "name": "variant",
16
+ "type": "String",
17
+ "default": "inline",
18
+ "required": false,
19
+ "options": [
20
+ "inline",
21
+ "sm",
22
+ "full",
23
+ "card"
24
+ ]
25
+ }
10
26
  ]
11
27
  },
12
28
  {
@@ -14,11 +30,36 @@
14
30
  "file": "Blog/Card.vue",
15
31
  "category": "Blog",
16
32
  "props": [
17
- { "name": "post", "type": "Object", "default": null, "required": true },
18
- { "name": "hasCategory", "type": "Boolean", "default": true, "required": false },
19
- { "name": "hasAuthor", "type": "Boolean", "default": true, "required": false },
20
- { "name": "hasExcerpt", "type": "Boolean", "default": true, "required": false },
21
- { "name": "button", "type": "Object", "default": null, "required": false }
33
+ {
34
+ "name": "post",
35
+ "type": "Object",
36
+ "default": "{ title: \"Blog Post Title\", slug: \"#\", excerpt: \"A short description of this blog post...\", date: new Date().toISOString(), category: \"General\" }",
37
+ "required": false
38
+ },
39
+ {
40
+ "name": "hasCategory",
41
+ "type": "Boolean",
42
+ "default": true,
43
+ "required": false
44
+ },
45
+ {
46
+ "name": "hasAuthor",
47
+ "type": "Boolean",
48
+ "default": true,
49
+ "required": false
50
+ },
51
+ {
52
+ "name": "hasExcerpt",
53
+ "type": "Boolean",
54
+ "default": true,
55
+ "required": false
56
+ },
57
+ {
58
+ "name": "button",
59
+ "type": "Object",
60
+ "default": null,
61
+ "required": false
62
+ }
22
63
  ]
23
64
  },
24
65
  {
@@ -26,18 +67,73 @@
26
67
  "file": "Blog/CTANewsletter.vue",
27
68
  "category": "Blog",
28
69
  "props": [
29
- { "name": "title", "type": "String", "default": "Subscribe to our newsletter", "required": false },
30
- { "name": "description", "type": "String", "default": "Get the latest posts delivered right to your inbox.", "required": false },
31
- { "name": "button", "type": "Object", "default": "{ label: 'Subscribe' }", "required": false },
32
- { "name": "placeholder", "type": "String", "default": "Enter your email", "required": false },
33
- { "name": "variant", "type": "String", "default": "default", "required": false, "options": ["default", "featured", "inline", "compact"] },
34
- { "name": "icon", "type": "String", "default": "i-lucide-mail", "required": false },
35
- { "name": "hasPrivacy", "type": "Boolean", "default": true, "required": false },
36
- { "name": "privacyText", "type": "String", "default": "No spam. Unsubscribe anytime.", "required": false },
37
- { "name": "successMessage", "type": "String", "default": "Thanks for subscribing!", "required": false }
70
+ {
71
+ "name": "title",
72
+ "type": "String",
73
+ "default": "Subscribe to our newsletter",
74
+ "required": false
75
+ },
76
+ {
77
+ "name": "description",
78
+ "type": "String",
79
+ "default": "Get the latest posts delivered right to your inbox.",
80
+ "required": false
81
+ },
82
+ {
83
+ "name": "button",
84
+ "type": "Object",
85
+ "default": "{ label: 'Subscribe' }",
86
+ "required": false
87
+ },
88
+ {
89
+ "name": "placeholder",
90
+ "type": "String",
91
+ "default": "Enter your email",
92
+ "required": false
93
+ },
94
+ {
95
+ "name": "variant",
96
+ "type": "String",
97
+ "default": "default",
98
+ "required": false,
99
+ "options": [
100
+ "default",
101
+ "featured",
102
+ "inline",
103
+ "compact"
104
+ ]
105
+ },
106
+ {
107
+ "name": "icon",
108
+ "type": "String",
109
+ "default": "i-lucide-mail",
110
+ "required": false
111
+ },
112
+ {
113
+ "name": "hasPrivacy",
114
+ "type": "Boolean",
115
+ "default": true,
116
+ "required": false
117
+ },
118
+ {
119
+ "name": "privacyText",
120
+ "type": "String",
121
+ "default": "No spam. Unsubscribe anytime.",
122
+ "required": false
123
+ },
124
+ {
125
+ "name": "successMessage",
126
+ "type": "String",
127
+ "default": "Thanks for subscribing!",
128
+ "required": false
129
+ }
38
130
  ],
39
131
  "events": [
40
- { "name": "submit", "payload": "String", "description": "Emitted with email address when form is submitted" }
132
+ {
133
+ "name": "submit",
134
+ "payload": "String",
135
+ "description": "Emitted with email address when form is submitted"
136
+ }
41
137
  ]
42
138
  },
43
139
  {
@@ -45,10 +141,30 @@
45
141
  "file": "Blog/Detail.vue",
46
142
  "category": "Blog",
47
143
  "props": [
48
- { "name": "post", "type": "Object", "default": null, "required": true },
49
- { "name": "previousPost", "type": "Object", "default": null, "required": false },
50
- { "name": "nextPost", "type": "Object", "default": null, "required": false },
51
- { "name": "toc", "type": "Array", "default": "[]", "required": false }
144
+ {
145
+ "name": "post",
146
+ "type": "Object",
147
+ "default": "{ title: \"Blog Post Title\", slug: \"#\", excerpt: \"A short description of this blog post.\", date: new Date().toISOString(), category: \"General\", body: \"\" }",
148
+ "required": false
149
+ },
150
+ {
151
+ "name": "previousPost",
152
+ "type": "Object",
153
+ "default": null,
154
+ "required": false
155
+ },
156
+ {
157
+ "name": "nextPost",
158
+ "type": "Object",
159
+ "default": null,
160
+ "required": false
161
+ },
162
+ {
163
+ "name": "toc",
164
+ "type": "Array",
165
+ "default": "[]",
166
+ "required": false
167
+ }
52
168
  ]
53
169
  },
54
170
  {
@@ -56,14 +172,59 @@
56
172
  "file": "Blog/List.vue",
57
173
  "category": "Blog",
58
174
  "props": [
59
- { "name": "posts", "type": "Array", "default": null, "required": true },
60
- { "name": "columns", "type": "Number", "default": 3, "required": false, "options": [1, 2, 3] },
61
- { "name": "perPage", "type": "Number", "default": 9, "required": false },
62
- { "name": "hasFilters", "type": "Boolean", "default": false, "required": false },
63
- { "name": "hasCategories", "type": "Boolean", "default": true, "required": false },
64
- { "name": "hasAuthors", "type": "Boolean", "default": true, "required": false },
65
- { "name": "categories", "type": "Array", "default": "[]", "required": false },
66
- { "name": "cardButton", "type": "Object", "default": null, "required": false }
175
+ {
176
+ "name": "posts",
177
+ "type": "Array",
178
+ "default": "[]",
179
+ "required": false
180
+ },
181
+ {
182
+ "name": "columns",
183
+ "type": "Number",
184
+ "default": 3,
185
+ "required": false,
186
+ "options": [
187
+ 1,
188
+ 2,
189
+ 3
190
+ ]
191
+ },
192
+ {
193
+ "name": "perPage",
194
+ "type": "Number",
195
+ "default": 9,
196
+ "required": false
197
+ },
198
+ {
199
+ "name": "hasFilters",
200
+ "type": "Boolean",
201
+ "default": false,
202
+ "required": false
203
+ },
204
+ {
205
+ "name": "hasCategories",
206
+ "type": "Boolean",
207
+ "default": true,
208
+ "required": false
209
+ },
210
+ {
211
+ "name": "hasAuthors",
212
+ "type": "Boolean",
213
+ "default": true,
214
+ "required": false
215
+ },
216
+ {
217
+ "name": "categories",
218
+ "type": "Array",
219
+ "default": "[]",
220
+ "required": false
221
+ },
222
+ {
223
+ "name": "cardButton",
224
+ "type": "Object",
225
+ "default": null,
226
+ "required": false
227
+ }
67
228
  ]
68
229
  },
69
230
  {
@@ -71,11 +232,36 @@
71
232
  "file": "Blog/Navigation.vue",
72
233
  "category": "Blog",
73
234
  "props": [
74
- { "name": "previous", "type": "Object", "default": null, "required": false },
75
- { "name": "next", "type": "Object", "default": null, "required": false },
76
- { "name": "basePath", "type": "String", "default": "/blog", "required": false },
77
- { "name": "previousLabel", "type": "String", "default": "Previous", "required": false },
78
- { "name": "nextLabel", "type": "String", "default": "Next", "required": false }
235
+ {
236
+ "name": "previous",
237
+ "type": "Object",
238
+ "default": null,
239
+ "required": false
240
+ },
241
+ {
242
+ "name": "next",
243
+ "type": "Object",
244
+ "default": null,
245
+ "required": false
246
+ },
247
+ {
248
+ "name": "basePath",
249
+ "type": "String",
250
+ "default": "/blog",
251
+ "required": false
252
+ },
253
+ {
254
+ "name": "previousLabel",
255
+ "type": "String",
256
+ "default": "Previous",
257
+ "required": false
258
+ },
259
+ {
260
+ "name": "nextLabel",
261
+ "type": "String",
262
+ "default": "Next",
263
+ "required": false
264
+ }
79
265
  ]
80
266
  },
81
267
  {
@@ -83,16 +269,55 @@
83
269
  "file": "Blog/Sidebar.vue",
84
270
  "category": "Blog",
85
271
  "props": [
86
- { "name": "hasSearch", "type": "Boolean", "default": true, "required": false },
87
- { "name": "categories", "type": "Array", "default": "[]", "required": false },
88
- { "name": "tags", "type": "Array", "default": "[]", "required": false },
89
- { "name": "recentPosts", "type": "Array", "default": "[]", "required": false },
90
- { "name": "categoryBasePath", "type": "String", "default": "/blog/category", "required": false },
91
- { "name": "tagBasePath", "type": "String", "default": "/blog/tag", "required": false },
92
- { "name": "hasCta", "type": "Boolean", "default": true, "required": false }
272
+ {
273
+ "name": "hasSearch",
274
+ "type": "Boolean",
275
+ "default": true,
276
+ "required": false
277
+ },
278
+ {
279
+ "name": "categories",
280
+ "type": "Array",
281
+ "default": "[]",
282
+ "required": false
283
+ },
284
+ {
285
+ "name": "tags",
286
+ "type": "Array",
287
+ "default": "[]",
288
+ "required": false
289
+ },
290
+ {
291
+ "name": "recentPosts",
292
+ "type": "Array",
293
+ "default": "[]",
294
+ "required": false
295
+ },
296
+ {
297
+ "name": "categoryBasePath",
298
+ "type": "String",
299
+ "default": "/blog/category",
300
+ "required": false
301
+ },
302
+ {
303
+ "name": "tagBasePath",
304
+ "type": "String",
305
+ "default": "/blog/tag",
306
+ "required": false
307
+ },
308
+ {
309
+ "name": "hasCta",
310
+ "type": "Boolean",
311
+ "default": true,
312
+ "required": false
313
+ }
93
314
  ],
94
315
  "events": [
95
- { "name": "search", "payload": "String", "description": "Emitted when user presses Enter in search input" }
316
+ {
317
+ "name": "search",
318
+ "payload": "String",
319
+ "description": "Emitted when user presses Enter in search input"
320
+ }
96
321
  ]
97
322
  },
98
323
  {
@@ -100,12 +325,52 @@
100
325
  "file": "Button/BackToTop.vue",
101
326
  "category": "Button",
102
327
  "props": [
103
- { "name": "threshold", "type": "Number", "default": 400, "required": false },
104
- { "name": "position", "type": "String", "default": "bottom-right", "required": false, "options": ["bottom-right", "bottom-left", "bottom-center"] },
105
- { "name": "variant", "type": "String", "default": "primary", "required": false, "options": ["primary", "neutral", "glass"] },
106
- { "name": "icon", "type": "String", "default": "i-lucide-arrow-up", "required": false },
107
- { "name": "label", "type": "String", "default": "Back to top", "required": false },
108
- { "name": "smooth", "type": "Boolean", "default": true, "required": false }
328
+ {
329
+ "name": "threshold",
330
+ "type": "Number",
331
+ "default": 400,
332
+ "required": false
333
+ },
334
+ {
335
+ "name": "position",
336
+ "type": "String",
337
+ "default": "bottom-right",
338
+ "required": false,
339
+ "options": [
340
+ "bottom-right",
341
+ "bottom-left",
342
+ "bottom-center"
343
+ ]
344
+ },
345
+ {
346
+ "name": "variant",
347
+ "type": "String",
348
+ "default": "primary",
349
+ "required": false,
350
+ "options": [
351
+ "primary",
352
+ "neutral",
353
+ "glass"
354
+ ]
355
+ },
356
+ {
357
+ "name": "icon",
358
+ "type": "String",
359
+ "default": "i-lucide-arrow-up",
360
+ "required": false
361
+ },
362
+ {
363
+ "name": "label",
364
+ "type": "String",
365
+ "default": "Back to top",
366
+ "required": false
367
+ },
368
+ {
369
+ "name": "smooth",
370
+ "type": "Boolean",
371
+ "default": true,
372
+ "required": false
373
+ }
109
374
  ]
110
375
  },
111
376
  {
@@ -113,10 +378,37 @@
113
378
  "file": "Card/Glass.vue",
114
379
  "category": "Card",
115
380
  "props": [
116
- { "name": "title", "type": "String", "default": "", "required": false },
117
- { "name": "subtitle", "type": "String", "default": "", "required": false },
118
- { "name": "size", "type": "String", "default": "md", "required": false, "options": ["xs", "sm", "md", "lg", "xl"] },
119
- { "name": "glow", "type": "Boolean", "default": false, "required": false }
381
+ {
382
+ "name": "title",
383
+ "type": "String",
384
+ "default": "",
385
+ "required": false
386
+ },
387
+ {
388
+ "name": "subtitle",
389
+ "type": "String",
390
+ "default": "",
391
+ "required": false
392
+ },
393
+ {
394
+ "name": "size",
395
+ "type": "String",
396
+ "default": "md",
397
+ "required": false,
398
+ "options": [
399
+ "xs",
400
+ "sm",
401
+ "md",
402
+ "lg",
403
+ "xl"
404
+ ]
405
+ },
406
+ {
407
+ "name": "glow",
408
+ "type": "Boolean",
409
+ "default": false,
410
+ "required": false
411
+ }
120
412
  ]
121
413
  },
122
414
  {
@@ -124,14 +416,65 @@
124
416
  "file": "Card/Promo.vue",
125
417
  "category": "Card",
126
418
  "props": [
127
- { "name": "to", "type": "String", "default": "", "required": false },
128
- { "name": "img", "type": "Object", "default": null, "required": true },
129
- { "name": "title", "type": "String", "default": null, "required": true },
130
- { "name": "badge", "type": "String", "default": "", "required": false },
131
- { "name": "button", "type": "Object", "default": null, "required": false },
132
- { "name": "align", "type": "String", "default": "bottomLeft", "required": false, "options": ["bottomLeft", "bottomRight", "bottomCenter", "topLeft"] },
133
- { "name": "overlay", "type": "String", "default": "gradient", "required": false, "options": ["light", "heavy", "gradient"] },
134
- { "name": "hoverable", "type": "Boolean", "default": true, "required": false }
419
+ {
420
+ "name": "to",
421
+ "type": "String",
422
+ "default": "",
423
+ "required": false
424
+ },
425
+ {
426
+ "name": "img",
427
+ "type": "Object",
428
+ "default": "{ src: \"\", alt: \"Promo image\" }",
429
+ "required": false
430
+ },
431
+ {
432
+ "name": "title",
433
+ "type": "String",
434
+ "default": "Promo Card Title",
435
+ "required": false
436
+ },
437
+ {
438
+ "name": "badge",
439
+ "type": "String",
440
+ "default": "",
441
+ "required": false
442
+ },
443
+ {
444
+ "name": "button",
445
+ "type": "Object",
446
+ "default": null,
447
+ "required": false
448
+ },
449
+ {
450
+ "name": "align",
451
+ "type": "String",
452
+ "default": "bottomLeft",
453
+ "required": false,
454
+ "options": [
455
+ "bottomLeft",
456
+ "bottomRight",
457
+ "bottomCenter",
458
+ "topLeft"
459
+ ]
460
+ },
461
+ {
462
+ "name": "overlay",
463
+ "type": "String",
464
+ "default": "gradient",
465
+ "required": false,
466
+ "options": [
467
+ "light",
468
+ "heavy",
469
+ "gradient"
470
+ ]
471
+ },
472
+ {
473
+ "name": "hoverable",
474
+ "type": "Boolean",
475
+ "default": true,
476
+ "required": false
477
+ }
135
478
  ]
136
479
  },
137
480
  {
@@ -139,14 +482,71 @@
139
482
  "file": "CTA/index.vue",
140
483
  "category": "CTA",
141
484
  "props": [
142
- { "name": "eyebrow", "type": "String", "default": "", "required": false },
143
- { "name": "title", "type": "String", "default": null, "required": true },
144
- { "name": "description", "type": "String", "default": "", "required": false },
145
- { "name": "icon", "type": "String", "default": "", "required": false },
146
- { "name": "buttons", "type": "Array", "default": "[]", "required": false },
147
- { "name": "variant", "type": "String", "default": "default", "required": false, "options": ["default", "centered", "inline", "stacked"] },
148
- { "name": "background", "type": "String", "default": "subtle", "required": false, "options": ["subtle", "bold", "gradient", "none"] },
149
- { "name": "size", "type": "String", "default": "md", "required": false, "options": ["sm", "md", "lg"] }
485
+ {
486
+ "name": "eyebrow",
487
+ "type": "String",
488
+ "default": "",
489
+ "required": false
490
+ },
491
+ {
492
+ "name": "title",
493
+ "type": "String",
494
+ "default": "Ready to get started?",
495
+ "required": false
496
+ },
497
+ {
498
+ "name": "description",
499
+ "type": "String",
500
+ "default": "",
501
+ "required": false
502
+ },
503
+ {
504
+ "name": "icon",
505
+ "type": "String",
506
+ "default": "",
507
+ "required": false
508
+ },
509
+ {
510
+ "name": "buttons",
511
+ "type": "Array",
512
+ "default": "[]",
513
+ "required": false
514
+ },
515
+ {
516
+ "name": "variant",
517
+ "type": "String",
518
+ "default": "default",
519
+ "required": false,
520
+ "options": [
521
+ "default",
522
+ "centered",
523
+ "inline",
524
+ "stacked"
525
+ ]
526
+ },
527
+ {
528
+ "name": "background",
529
+ "type": "String",
530
+ "default": "subtle",
531
+ "required": false,
532
+ "options": [
533
+ "subtle",
534
+ "bold",
535
+ "gradient",
536
+ "none"
537
+ ]
538
+ },
539
+ {
540
+ "name": "size",
541
+ "type": "String",
542
+ "default": "md",
543
+ "required": false,
544
+ "options": [
545
+ "sm",
546
+ "md",
547
+ "lg"
548
+ ]
549
+ }
150
550
  ]
151
551
  },
152
552
  {
@@ -154,11 +554,86 @@
154
554
  "file": "Divider/Glow.vue",
155
555
  "category": "Divider",
156
556
  "props": [
157
- { "name": "glow", "type": "Boolean", "default": true, "required": false },
158
- { "name": "color", "type": "String", "default": "primary", "required": false, "options": ["primary", "neutral", "white"] },
159
- { "name": "intensity", "type": "String", "default": "medium", "required": false, "options": ["subtle", "medium", "strong"] },
160
- { "name": "spacing", "type": "String", "default": "md", "required": false, "options": ["sm", "md", "lg"] },
161
- { "name": "fade", "type": "Boolean", "default": false, "required": false }
557
+ {
558
+ "name": "glow",
559
+ "type": "Boolean",
560
+ "default": true,
561
+ "required": false
562
+ },
563
+ {
564
+ "name": "color",
565
+ "type": "String",
566
+ "default": "primary",
567
+ "required": false,
568
+ "options": [
569
+ "primary",
570
+ "neutral",
571
+ "white"
572
+ ]
573
+ },
574
+ {
575
+ "name": "intensity",
576
+ "type": "String",
577
+ "default": "medium",
578
+ "required": false,
579
+ "options": [
580
+ "subtle",
581
+ "medium",
582
+ "strong"
583
+ ]
584
+ },
585
+ {
586
+ "name": "spacing",
587
+ "type": "String",
588
+ "default": "md",
589
+ "required": false,
590
+ "options": [
591
+ "sm",
592
+ "md",
593
+ "lg"
594
+ ]
595
+ },
596
+ {
597
+ "name": "fade",
598
+ "type": "Boolean",
599
+ "default": false,
600
+ "required": false
601
+ }
602
+ ]
603
+ },
604
+ {
605
+ "name": "XMarkFAQ",
606
+ "file": "FAQ/index.vue",
607
+ "category": "FAQ",
608
+ "props": [
609
+ {
610
+ "name": "items",
611
+ "type": "Array",
612
+ "default": "[{ question: \"What is this?\", answer: \"This is a frequently asked question.\" }]",
613
+ "required": false
614
+ },
615
+ {
616
+ "name": "layout",
617
+ "type": "String",
618
+ "default": "accordion",
619
+ "required": false,
620
+ "options": [
621
+ "accordion",
622
+ "two-column"
623
+ ]
624
+ },
625
+ {
626
+ "name": "openFirst",
627
+ "type": "Boolean",
628
+ "default": false,
629
+ "required": false
630
+ },
631
+ {
632
+ "name": "allowMultiple",
633
+ "type": "Boolean",
634
+ "default": false,
635
+ "required": false
636
+ }
162
637
  ]
163
638
  },
164
639
  {
@@ -166,9 +641,34 @@
166
641
  "file": "Features/index.vue",
167
642
  "category": "Features",
168
643
  "props": [
169
- { "name": "features", "type": "Array", "default": null, "required": true },
170
- { "name": "layout", "type": "String", "default": "grid", "required": false, "options": ["grid", "list", "alternating"] },
171
- { "name": "columns", "type": "Number", "default": 3, "required": false, "options": [2, 3, 4] }
644
+ {
645
+ "name": "features",
646
+ "type": "Array",
647
+ "default": "[{ icon: \"i-lucide-zap\", title: \"Lightning Fast\", description: \"Built for performance from the ground up.\" }, { icon: \"i-lucide-shield\", title: \"Secure by Default\", description: \"Enterprise-grade security out of the box.\" }, { icon: \"i-lucide-layers\", title: \"Fully Customizable\", description: \"Adapt every component to match your brand.\" }]",
648
+ "required": false
649
+ },
650
+ {
651
+ "name": "layout",
652
+ "type": "String",
653
+ "default": "grid",
654
+ "required": false,
655
+ "options": [
656
+ "grid",
657
+ "list",
658
+ "alternating"
659
+ ]
660
+ },
661
+ {
662
+ "name": "columns",
663
+ "type": "Number",
664
+ "default": 3,
665
+ "required": false,
666
+ "options": [
667
+ 2,
668
+ 3,
669
+ 4
670
+ ]
671
+ }
172
672
  ]
173
673
  },
174
674
  {
@@ -176,17 +676,87 @@
176
676
  "file": "Hero/index.vue",
177
677
  "category": "Hero",
178
678
  "props": [
179
- { "name": "img", "type": "Object", "default": null, "required": false },
180
- { "name": "video", "type": "Object", "default": null, "required": false },
181
- { "name": "overlay", "type": "String", "default": "gradient", "required": false, "options": ["light", "heavy", "gradient", "none"] },
182
- { "name": "eyebrow", "type": "String", "default": "", "required": false },
183
- { "name": "title", "type": "String", "default": null, "required": true },
184
- { "name": "subtitle", "type": "String", "default": "", "required": false },
185
- { "name": "buttons", "type": "Array", "default": "[]", "required": false },
186
- { "name": "align", "type": "String", "default": "left", "required": false, "options": ["left", "center", "right"] },
187
- { "name": "verticalAlign", "type": "String", "default": "center", "required": false, "options": ["center", "bottom"] },
188
- { "name": "hasScrollIndicator", "type": "Boolean", "default": true, "required": false },
189
- { "name": "includeNavPadding", "type": "Boolean", "default": false, "required": false }
679
+ {
680
+ "name": "img",
681
+ "type": "Object",
682
+ "default": null,
683
+ "required": false
684
+ },
685
+ {
686
+ "name": "video",
687
+ "type": "Object",
688
+ "default": null,
689
+ "required": false
690
+ },
691
+ {
692
+ "name": "overlay",
693
+ "type": "String",
694
+ "default": "gradient",
695
+ "required": false,
696
+ "options": [
697
+ "light",
698
+ "heavy",
699
+ "gradient",
700
+ "none"
701
+ ]
702
+ },
703
+ {
704
+ "name": "eyebrow",
705
+ "type": "String",
706
+ "default": "",
707
+ "required": false
708
+ },
709
+ {
710
+ "name": "title",
711
+ "type": "String",
712
+ "default": "Your Headline Here",
713
+ "required": false
714
+ },
715
+ {
716
+ "name": "subtitle",
717
+ "type": "String",
718
+ "default": "",
719
+ "required": false
720
+ },
721
+ {
722
+ "name": "buttons",
723
+ "type": "Array",
724
+ "default": "[]",
725
+ "required": false
726
+ },
727
+ {
728
+ "name": "align",
729
+ "type": "String",
730
+ "default": "left",
731
+ "required": false,
732
+ "options": [
733
+ "left",
734
+ "center",
735
+ "right"
736
+ ]
737
+ },
738
+ {
739
+ "name": "verticalAlign",
740
+ "type": "String",
741
+ "default": "center",
742
+ "required": false,
743
+ "options": [
744
+ "center",
745
+ "bottom"
746
+ ]
747
+ },
748
+ {
749
+ "name": "hasScrollIndicator",
750
+ "type": "Boolean",
751
+ "default": true,
752
+ "required": false
753
+ },
754
+ {
755
+ "name": "includeNavPadding",
756
+ "type": "Boolean",
757
+ "default": false,
758
+ "required": false
759
+ }
190
760
  ]
191
761
  },
192
762
  {
@@ -194,14 +764,61 @@
194
764
  "file": "Layout/AnnouncementBar.vue",
195
765
  "category": "Layout",
196
766
  "props": [
197
- { "name": "message", "type": "String", "default": null, "required": true },
198
- { "name": "badge", "type": "String", "default": "", "required": false },
199
- { "name": "icon", "type": "String", "default": "", "required": false },
200
- { "name": "link", "type": "String", "default": "", "required": false },
201
- { "name": "linkText", "type": "String", "default": "Learn more", "required": false },
202
- { "name": "variant", "type": "String", "default": "primary", "required": false, "options": ["primary", "neutral", "success", "warning", "error"] },
203
- { "name": "dismissible", "type": "Boolean", "default": true, "required": false },
204
- { "name": "storageKey", "type": "String", "default": "announcement-dismissed", "required": false }
767
+ {
768
+ "name": "message",
769
+ "type": "String",
770
+ "default": "🎉 New feature available — check it out!",
771
+ "required": false
772
+ },
773
+ {
774
+ "name": "badge",
775
+ "type": "String",
776
+ "default": "",
777
+ "required": false
778
+ },
779
+ {
780
+ "name": "icon",
781
+ "type": "String",
782
+ "default": "",
783
+ "required": false
784
+ },
785
+ {
786
+ "name": "link",
787
+ "type": "String",
788
+ "default": "",
789
+ "required": false
790
+ },
791
+ {
792
+ "name": "linkText",
793
+ "type": "String",
794
+ "default": "Learn more",
795
+ "required": false
796
+ },
797
+ {
798
+ "name": "variant",
799
+ "type": "String",
800
+ "default": "primary",
801
+ "required": false,
802
+ "options": [
803
+ "primary",
804
+ "neutral",
805
+ "success",
806
+ "warning",
807
+ "error"
808
+ ]
809
+ },
810
+ {
811
+ "name": "dismissible",
812
+ "type": "Boolean",
813
+ "default": true,
814
+ "required": false
815
+ },
816
+ {
817
+ "name": "storageKey",
818
+ "type": "String",
819
+ "default": "announcement-dismissed",
820
+ "required": false
821
+ }
205
822
  ]
206
823
  },
207
824
  {
@@ -209,15 +826,60 @@
209
826
  "file": "Layout/Footer.vue",
210
827
  "category": "Layout",
211
828
  "props": [
212
- { "name": "logo", "type": "Object", "default": null, "required": false },
213
- { "name": "description", "type": "String", "default": "", "required": false },
214
- { "name": "social", "type": "Array", "default": "[]", "required": false },
215
- { "name": "columns", "type": "Array", "default": "[]", "required": false },
216
- { "name": "legalLinks", "type": "Array", "default": "[]", "required": false },
217
- { "name": "copyright", "type": "String", "default": "© {year} All rights reserved.", "required": false },
218
- { "name": "hasNewsletter", "type": "Boolean", "default": false, "required": false },
219
- { "name": "newsletterTitle", "type": "String", "default": "Subscribe to our newsletter", "required": false },
220
- { "name": "newsletterDescription", "type": "String", "default": "Get the latest updates and news.", "required": false }
829
+ {
830
+ "name": "logo",
831
+ "type": "Object",
832
+ "default": null,
833
+ "required": false
834
+ },
835
+ {
836
+ "name": "description",
837
+ "type": "String",
838
+ "default": "",
839
+ "required": false
840
+ },
841
+ {
842
+ "name": "social",
843
+ "type": "Array",
844
+ "default": "[]",
845
+ "required": false
846
+ },
847
+ {
848
+ "name": "columns",
849
+ "type": "Array",
850
+ "default": "[]",
851
+ "required": false
852
+ },
853
+ {
854
+ "name": "legalLinks",
855
+ "type": "Array",
856
+ "default": "[]",
857
+ "required": false
858
+ },
859
+ {
860
+ "name": "copyright",
861
+ "type": "String",
862
+ "default": "© {year} All rights reserved.",
863
+ "required": false
864
+ },
865
+ {
866
+ "name": "hasNewsletter",
867
+ "type": "Boolean",
868
+ "default": false,
869
+ "required": false
870
+ },
871
+ {
872
+ "name": "newsletterTitle",
873
+ "type": "String",
874
+ "default": "Subscribe to our newsletter",
875
+ "required": false
876
+ },
877
+ {
878
+ "name": "newsletterDescription",
879
+ "type": "String",
880
+ "default": "Get the latest updates and news.",
881
+ "required": false
882
+ }
221
883
  ]
222
884
  },
223
885
  {
@@ -225,8 +887,18 @@
225
887
  "file": "Layout/FooterLegal.vue",
226
888
  "category": "Layout",
227
889
  "props": [
228
- { "name": "copyright", "type": "String", "default": "© {year} All rights reserved.", "required": false },
229
- { "name": "links", "type": "Array", "default": "[{ label: 'Privacy Policy', to: '/privacy' }, ...]", "required": false }
890
+ {
891
+ "name": "copyright",
892
+ "type": "String",
893
+ "default": "© {year} All rights reserved.",
894
+ "required": false
895
+ },
896
+ {
897
+ "name": "links",
898
+ "type": "Array",
899
+ "default": "[{ label: 'Privacy Policy', to: '/privacy' }, ...]",
900
+ "required": false
901
+ }
230
902
  ]
231
903
  },
232
904
  {
@@ -234,11 +906,36 @@
234
906
  "file": "Layout/Navbar.vue",
235
907
  "category": "Layout",
236
908
  "props": [
237
- { "name": "transparent", "type": "Boolean", "default": true, "required": false },
238
- { "name": "links", "type": "Array", "default": null, "required": false },
239
- { "name": "logo", "type": "Object", "default": null, "required": false },
240
- { "name": "scrollThreshold", "type": "Number", "default": 100, "required": false },
241
- { "name": "buttons", "type": "Array", "default": null, "required": false }
909
+ {
910
+ "name": "transparent",
911
+ "type": "Boolean",
912
+ "default": true,
913
+ "required": false
914
+ },
915
+ {
916
+ "name": "links",
917
+ "type": "Array",
918
+ "default": null,
919
+ "required": false
920
+ },
921
+ {
922
+ "name": "logo",
923
+ "type": "Object",
924
+ "default": null,
925
+ "required": false
926
+ },
927
+ {
928
+ "name": "scrollThreshold",
929
+ "type": "Number",
930
+ "default": 100,
931
+ "required": false
932
+ },
933
+ {
934
+ "name": "buttons",
935
+ "type": "Array",
936
+ "default": null,
937
+ "required": false
938
+ }
242
939
  ]
243
940
  },
244
941
  {
@@ -246,18 +943,66 @@
246
943
  "file": "Modal/Chat.vue",
247
944
  "category": "Modal",
248
945
  "props": [
249
- { "name": "modelValue", "type": "Boolean", "default": false, "required": false },
250
- { "name": "avatar", "type": "String", "default": "", "required": false },
251
- { "name": "name", "type": "String", "default": null, "required": true },
252
- { "name": "message", "type": "String", "default": null, "required": true },
253
- { "name": "online", "type": "Boolean", "default": true, "required": false },
254
- { "name": "actionText", "type": "String", "default": "", "required": false },
255
- { "name": "autoDismiss", "type": "Number", "default": 0, "required": false },
256
- { "name": "delay", "type": "Number", "default": 3000, "required": false }
946
+ {
947
+ "name": "modelValue",
948
+ "type": "Boolean",
949
+ "default": false,
950
+ "required": false
951
+ },
952
+ {
953
+ "name": "avatar",
954
+ "type": "String",
955
+ "default": "",
956
+ "required": false
957
+ },
958
+ {
959
+ "name": "name",
960
+ "type": "String",
961
+ "default": null,
962
+ "required": true
963
+ },
964
+ {
965
+ "name": "message",
966
+ "type": "String",
967
+ "default": null,
968
+ "required": true
969
+ },
970
+ {
971
+ "name": "online",
972
+ "type": "Boolean",
973
+ "default": true,
974
+ "required": false
975
+ },
976
+ {
977
+ "name": "actionText",
978
+ "type": "String",
979
+ "default": "",
980
+ "required": false
981
+ },
982
+ {
983
+ "name": "autoDismiss",
984
+ "type": "Number",
985
+ "default": 0,
986
+ "required": false
987
+ },
988
+ {
989
+ "name": "delay",
990
+ "type": "Number",
991
+ "default": 3000,
992
+ "required": false
993
+ }
257
994
  ],
258
995
  "events": [
259
- { "name": "update:modelValue", "payload": "Boolean", "description": "Emitted when visibility changes" },
260
- { "name": "action", "payload": null, "description": "Emitted when action button is clicked" }
996
+ {
997
+ "name": "update:modelValue",
998
+ "payload": "Boolean",
999
+ "description": "Emitted when visibility changes"
1000
+ },
1001
+ {
1002
+ "name": "action",
1003
+ "payload": null,
1004
+ "description": "Emitted when action button is clicked"
1005
+ }
261
1006
  ]
262
1007
  },
263
1008
  {
@@ -265,13 +1010,37 @@
265
1010
  "file": "Modal/Feature.vue",
266
1011
  "category": "Modal",
267
1012
  "props": [
268
- { "name": "modelValue", "type": "Boolean", "default": false, "required": false },
269
- { "name": "hero", "type": "Object", "default": null, "required": false },
270
- { "name": "blocks", "type": "Array", "default": null, "required": true },
271
- { "name": "cta", "type": "Object", "default": null, "required": false }
1013
+ {
1014
+ "name": "modelValue",
1015
+ "type": "Boolean",
1016
+ "default": false,
1017
+ "required": false
1018
+ },
1019
+ {
1020
+ "name": "hero",
1021
+ "type": "Object",
1022
+ "default": null,
1023
+ "required": false
1024
+ },
1025
+ {
1026
+ "name": "blocks",
1027
+ "type": "Array",
1028
+ "default": null,
1029
+ "required": true
1030
+ },
1031
+ {
1032
+ "name": "cta",
1033
+ "type": "Object",
1034
+ "default": null,
1035
+ "required": false
1036
+ }
272
1037
  ],
273
1038
  "events": [
274
- { "name": "update:modelValue", "payload": "Boolean", "description": "Emitted when modal visibility changes" }
1039
+ {
1040
+ "name": "update:modelValue",
1041
+ "payload": "Boolean",
1042
+ "description": "Emitted when modal visibility changes"
1043
+ }
275
1044
  ]
276
1045
  },
277
1046
  {
@@ -279,14 +1048,43 @@
279
1048
  "file": "Modal/Image.vue",
280
1049
  "category": "Modal",
281
1050
  "props": [
282
- { "name": "modelValue", "type": "Boolean", "default": false, "required": false },
283
- { "name": "images", "type": "Array", "default": "[]", "required": false },
284
- { "name": "startIndex", "type": "Number", "default": 0, "required": false },
285
- { "name": "hasCounter", "type": "Boolean", "default": true, "required": false },
286
- { "name": "hasThumbnails", "type": "Boolean", "default": false, "required": false }
1051
+ {
1052
+ "name": "modelValue",
1053
+ "type": "Boolean",
1054
+ "default": false,
1055
+ "required": false
1056
+ },
1057
+ {
1058
+ "name": "images",
1059
+ "type": "Array",
1060
+ "default": "[]",
1061
+ "required": false
1062
+ },
1063
+ {
1064
+ "name": "startIndex",
1065
+ "type": "Number",
1066
+ "default": 0,
1067
+ "required": false
1068
+ },
1069
+ {
1070
+ "name": "hasCounter",
1071
+ "type": "Boolean",
1072
+ "default": true,
1073
+ "required": false
1074
+ },
1075
+ {
1076
+ "name": "hasThumbnails",
1077
+ "type": "Boolean",
1078
+ "default": false,
1079
+ "required": false
1080
+ }
287
1081
  ],
288
1082
  "events": [
289
- { "name": "update:modelValue", "payload": "Boolean", "description": "Emitted when modal visibility changes" }
1083
+ {
1084
+ "name": "update:modelValue",
1085
+ "payload": "Boolean",
1086
+ "description": "Emitted when modal visibility changes"
1087
+ }
290
1088
  ]
291
1089
  },
292
1090
  {
@@ -294,18 +1092,67 @@
294
1092
  "file": "Modal/Video.vue",
295
1093
  "category": "Modal",
296
1094
  "props": [
297
- { "name": "modelValue", "type": "Boolean", "default": false, "required": false },
298
- { "name": "src", "type": "String", "default": null, "required": true },
299
- { "name": "poster", "type": "String", "default": "", "required": false },
300
- { "name": "title", "type": "String", "default": "", "required": false },
301
- { "name": "description", "type": "String", "default": "", "required": false },
302
- { "name": "autoplay", "type": "Boolean", "default": true, "required": false },
303
- { "name": "captions", "type": "String", "default": "", "required": false },
304
- { "name": "captionsLang", "type": "String", "default": "en", "required": false },
305
- { "name": "captionsLabel", "type": "String", "default": "English", "required": false }
1095
+ {
1096
+ "name": "modelValue",
1097
+ "type": "Boolean",
1098
+ "default": false,
1099
+ "required": false
1100
+ },
1101
+ {
1102
+ "name": "src",
1103
+ "type": "String",
1104
+ "default": null,
1105
+ "required": true
1106
+ },
1107
+ {
1108
+ "name": "poster",
1109
+ "type": "String",
1110
+ "default": "",
1111
+ "required": false
1112
+ },
1113
+ {
1114
+ "name": "title",
1115
+ "type": "String",
1116
+ "default": "",
1117
+ "required": false
1118
+ },
1119
+ {
1120
+ "name": "description",
1121
+ "type": "String",
1122
+ "default": "",
1123
+ "required": false
1124
+ },
1125
+ {
1126
+ "name": "autoplay",
1127
+ "type": "Boolean",
1128
+ "default": true,
1129
+ "required": false
1130
+ },
1131
+ {
1132
+ "name": "captions",
1133
+ "type": "String",
1134
+ "default": "",
1135
+ "required": false
1136
+ },
1137
+ {
1138
+ "name": "captionsLang",
1139
+ "type": "String",
1140
+ "default": "en",
1141
+ "required": false
1142
+ },
1143
+ {
1144
+ "name": "captionsLabel",
1145
+ "type": "String",
1146
+ "default": "English",
1147
+ "required": false
1148
+ }
306
1149
  ],
307
1150
  "events": [
308
- { "name": "update:modelValue", "payload": "Boolean", "description": "Emitted when modal visibility changes" }
1151
+ {
1152
+ "name": "update:modelValue",
1153
+ "payload": "Boolean",
1154
+ "description": "Emitted when modal visibility changes"
1155
+ }
309
1156
  ]
310
1157
  },
311
1158
  {
@@ -313,14 +1160,49 @@
313
1160
  "file": "Newsletter/Form.vue",
314
1161
  "category": "Newsletter",
315
1162
  "props": [
316
- { "name": "title", "type": "String", "default": "Subscribe to our newsletter", "required": false },
317
- { "name": "description", "type": "String", "default": "", "required": false },
318
- { "name": "button", "type": "Object", "default": "{ label: 'Subscribe' }", "required": false },
319
- { "name": "variant", "type": "String", "default": "default", "required": false, "options": ["default", "inline", "card", "compact"] },
320
- { "name": "hasPrivacy", "type": "Boolean", "default": true, "required": false }
1163
+ {
1164
+ "name": "title",
1165
+ "type": "String",
1166
+ "default": "Subscribe to our newsletter",
1167
+ "required": false
1168
+ },
1169
+ {
1170
+ "name": "description",
1171
+ "type": "String",
1172
+ "default": "",
1173
+ "required": false
1174
+ },
1175
+ {
1176
+ "name": "button",
1177
+ "type": "Object",
1178
+ "default": "{ label: 'Subscribe' }",
1179
+ "required": false
1180
+ },
1181
+ {
1182
+ "name": "variant",
1183
+ "type": "String",
1184
+ "default": "default",
1185
+ "required": false,
1186
+ "options": [
1187
+ "default",
1188
+ "inline",
1189
+ "card",
1190
+ "compact"
1191
+ ]
1192
+ },
1193
+ {
1194
+ "name": "hasPrivacy",
1195
+ "type": "Boolean",
1196
+ "default": true,
1197
+ "required": false
1198
+ }
321
1199
  ],
322
1200
  "events": [
323
- { "name": "submit", "payload": "String", "description": "Emitted with email address when form is submitted" }
1201
+ {
1202
+ "name": "submit",
1203
+ "payload": "String",
1204
+ "description": "Emitted with email address when form is submitted"
1205
+ }
324
1206
  ]
325
1207
  },
326
1208
  {
@@ -328,10 +1210,45 @@
328
1210
  "file": "Pattern/Bg.vue",
329
1211
  "category": "Pattern",
330
1212
  "props": [
331
- { "name": "pattern", "type": "String", "default": "dots", "required": false, "options": ["dots", "grid", "diagonal", "topography", "circuit", "waves", "plaid", "diagonalPlaid", "hexagons", "triangles", "crosses", "zigzag", "diamonds"] },
332
- { "name": "opacity", "type": "Number", "default": 0.05, "required": false },
333
- { "name": "color", "type": "String", "default": "auto", "required": false },
334
- { "name": "fade", "type": "Boolean", "default": true, "required": false }
1213
+ {
1214
+ "name": "pattern",
1215
+ "type": "String",
1216
+ "default": "dots",
1217
+ "required": false,
1218
+ "options": [
1219
+ "dots",
1220
+ "grid",
1221
+ "diagonal",
1222
+ "topography",
1223
+ "circuit",
1224
+ "waves",
1225
+ "plaid",
1226
+ "diagonalPlaid",
1227
+ "hexagons",
1228
+ "triangles",
1229
+ "crosses",
1230
+ "zigzag",
1231
+ "diamonds"
1232
+ ]
1233
+ },
1234
+ {
1235
+ "name": "opacity",
1236
+ "type": "Number",
1237
+ "default": 0.05,
1238
+ "required": false
1239
+ },
1240
+ {
1241
+ "name": "color",
1242
+ "type": "String",
1243
+ "default": "auto",
1244
+ "required": false
1245
+ },
1246
+ {
1247
+ "name": "fade",
1248
+ "type": "Boolean",
1249
+ "default": true,
1250
+ "required": false
1251
+ }
335
1252
  ]
336
1253
  },
337
1254
  {
@@ -340,15 +1257,62 @@
340
1257
  "category": "Pricing",
341
1258
  "description": "Wraps UPricingTable with marketing enhancements like social proof badges",
342
1259
  "props": [
343
- { "name": "plans", "type": "Array", "default": null, "required": true, "description": "Array of { id, name, price?, description?, highlighted?, button? }" },
344
- { "name": "featureGroups", "type": "Array", "default": null, "required": true, "description": "Array of { name?, features: [{ name, values: { [planId]: boolean|string } }] }" },
345
- { "name": "caption", "type": "String", "default": null, "required": false, "description": "Caption displayed above the table" },
346
- { "name": "badges", "type": "Array", "default": "[]", "required": false, "description": "Social proof badge presets or custom badges" },
347
- { "name": "badgesPosition", "type": "String", "default": "bottom", "required": false, "options": ["top", "bottom"] },
348
- { "name": "badgesAlign", "type": "String", "default": "center", "required": false, "options": ["left", "center", "right"] }
1260
+ {
1261
+ "name": "plans",
1262
+ "type": "Array",
1263
+ "default": "[{ id: \"starter\", name: \"Starter\", price: \"$9/mo\", button: { label: \"Get Started\" } }, { id: \"pro\", name: \"Pro\", price: \"$29/mo\", highlighted: true, button: { label: \"Get Pro\" } }, { id: \"enterprise\", name: \"Enterprise\", price: \"$99/mo\", button: { label: \"Contact Sales\" } }]",
1264
+ "required": false,
1265
+ "description": "Array of { id, name, price?, description?, highlighted?, button? }"
1266
+ },
1267
+ {
1268
+ "name": "featureGroups",
1269
+ "type": "Array",
1270
+ "default": "[{ name: \"Core Features\", features: [{ name: \"Projects\", values: { starter: \"5\", pro: \"Unlimited\", enterprise: \"Unlimited\" } }] }]",
1271
+ "required": false,
1272
+ "description": "Array of { name?, features: [{ name, values: { [planId]: boolean|string } }] }"
1273
+ },
1274
+ {
1275
+ "name": "caption",
1276
+ "type": "String",
1277
+ "default": null,
1278
+ "required": false,
1279
+ "description": "Caption displayed above the table"
1280
+ },
1281
+ {
1282
+ "name": "badges",
1283
+ "type": "Array",
1284
+ "default": "[]",
1285
+ "required": false,
1286
+ "description": "Social proof badge presets or custom badges"
1287
+ },
1288
+ {
1289
+ "name": "badgesPosition",
1290
+ "type": "String",
1291
+ "default": "bottom",
1292
+ "required": false,
1293
+ "options": [
1294
+ "top",
1295
+ "bottom"
1296
+ ]
1297
+ },
1298
+ {
1299
+ "name": "badgesAlign",
1300
+ "type": "String",
1301
+ "default": "center",
1302
+ "required": false,
1303
+ "options": [
1304
+ "left",
1305
+ "center",
1306
+ "right"
1307
+ ]
1308
+ }
349
1309
  ],
350
1310
  "events": [
351
- { "name": "select", "payload": "Object", "description": "Emitted with plan object when CTA is clicked" }
1311
+ {
1312
+ "name": "select",
1313
+ "payload": "Object",
1314
+ "description": "Emitted with plan object when CTA is clicked"
1315
+ }
352
1316
  ]
353
1317
  },
354
1318
  {
@@ -357,19 +1321,95 @@
357
1321
  "category": "Pricing",
358
1322
  "description": "Wraps UPricingPlans with billing toggle and social proof badges",
359
1323
  "props": [
360
- { "name": "plans", "type": "Array", "default": null, "required": true, "description": "Array of plan objects { name, description, price, features, button, popular? }" },
361
- { "name": "highlighted", "type": "String", "default": "", "required": false, "description": "Plan name to highlight (alternative to popular: true)" },
362
- { "name": "hasBillingToggle", "type": "Boolean", "default": false, "required": false, "description": "Show monthly/yearly toggle" },
363
- { "name": "yearlyDiscount", "type": "Number", "default": 20, "required": false, "description": "Yearly discount percentage to display" },
364
- { "name": "scale", "type": "Boolean", "default": false, "required": false, "description": "Scale effect on highlighted plan" },
365
- { "name": "compact", "type": "Boolean", "default": false, "required": false, "description": "No gap between plans" },
366
- { "name": "variant", "type": "String", "default": null, "required": false, "options": ["soft", "solid", "outline", "subtle"] },
367
- { "name": "badges", "type": "Array", "default": "[]", "required": false, "description": "Social proof badge presets or custom badges" },
368
- { "name": "badgesPosition", "type": "String", "default": "bottom", "required": false, "options": ["top", "bottom"] },
369
- { "name": "badgesAlign", "type": "String", "default": "center", "required": false, "options": ["left", "center", "right"] }
1324
+ {
1325
+ "name": "plans",
1326
+ "type": "Array",
1327
+ "default": "[{ name: \"Starter\", price: \"$9\", period: \"/month\", description: \"Perfect for individuals and small projects.\", features: [\"5 projects\", \"10GB storage\", \"Email support\"], button: { label: \"Get Started\" } }, { name: \"Pro\", price: \"$29\", period: \"/month\", description: \"For growing teams that need more power.\", features: [\"Unlimited projects\", \"100GB storage\", \"Priority support\", \"Advanced analytics\"], button: { label: \"Get Pro\" }, popular: true }, { name: \"Enterprise\", price: \"$99\", period: \"/month\", description: \"For large organizations with custom needs.\", features: [\"Unlimited everything\", \"1TB storage\", \"Dedicated support\", \"Custom integrations\", \"SLA guarantee\"], button: { label: \"Contact Sales\" } }]",
1328
+ "required": false,
1329
+ "description": "Array of plan objects { name, description, price, features, button, popular? }"
1330
+ },
1331
+ {
1332
+ "name": "highlighted",
1333
+ "type": "String",
1334
+ "default": "",
1335
+ "required": false,
1336
+ "description": "Plan name to highlight (alternative to popular: true)"
1337
+ },
1338
+ {
1339
+ "name": "hasBillingToggle",
1340
+ "type": "Boolean",
1341
+ "default": false,
1342
+ "required": false,
1343
+ "description": "Show monthly/yearly toggle"
1344
+ },
1345
+ {
1346
+ "name": "yearlyDiscount",
1347
+ "type": "Number",
1348
+ "default": 20,
1349
+ "required": false,
1350
+ "description": "Yearly discount percentage to display"
1351
+ },
1352
+ {
1353
+ "name": "scale",
1354
+ "type": "Boolean",
1355
+ "default": false,
1356
+ "required": false,
1357
+ "description": "Scale effect on highlighted plan"
1358
+ },
1359
+ {
1360
+ "name": "compact",
1361
+ "type": "Boolean",
1362
+ "default": false,
1363
+ "required": false,
1364
+ "description": "No gap between plans"
1365
+ },
1366
+ {
1367
+ "name": "variant",
1368
+ "type": "String",
1369
+ "default": null,
1370
+ "required": false,
1371
+ "options": [
1372
+ "soft",
1373
+ "solid",
1374
+ "outline",
1375
+ "subtle"
1376
+ ]
1377
+ },
1378
+ {
1379
+ "name": "badges",
1380
+ "type": "Array",
1381
+ "default": "[]",
1382
+ "required": false,
1383
+ "description": "Social proof badge presets or custom badges"
1384
+ },
1385
+ {
1386
+ "name": "badgesPosition",
1387
+ "type": "String",
1388
+ "default": "bottom",
1389
+ "required": false,
1390
+ "options": [
1391
+ "top",
1392
+ "bottom"
1393
+ ]
1394
+ },
1395
+ {
1396
+ "name": "badgesAlign",
1397
+ "type": "String",
1398
+ "default": "center",
1399
+ "required": false,
1400
+ "options": [
1401
+ "left",
1402
+ "center",
1403
+ "right"
1404
+ ]
1405
+ }
370
1406
  ],
371
1407
  "events": [
372
- { "name": "select", "payload": "Object", "description": "Emitted with plan object when CTA is clicked" }
1408
+ {
1409
+ "name": "select",
1410
+ "payload": "Object",
1411
+ "description": "Emitted with plan object when CTA is clicked"
1412
+ }
373
1413
  ]
374
1414
  },
375
1415
  {
@@ -377,18 +1417,65 @@
377
1417
  "file": "Privacy/CookieBanner.vue",
378
1418
  "category": "Privacy",
379
1419
  "props": [
380
- { "name": "title", "type": "String", "default": "We use cookies", "required": false },
381
- { "name": "message", "type": "String", "default": "We use cookies to improve your experience on our site.", "required": false },
382
- { "name": "policyLink", "type": "String", "default": "/privacy", "required": false },
383
- { "name": "policyLabel", "type": "String", "default": "Learn more", "required": false },
384
- { "name": "hasCustomize", "type": "Boolean", "default": false, "required": false },
385
- { "name": "hasReject", "type": "Boolean", "default": true, "required": false },
386
- { "name": "storageKey", "type": "String", "default": "cookie-consent", "required": false }
1420
+ {
1421
+ "name": "title",
1422
+ "type": "String",
1423
+ "default": "We use cookies",
1424
+ "required": false
1425
+ },
1426
+ {
1427
+ "name": "message",
1428
+ "type": "String",
1429
+ "default": "We use cookies to improve your experience on our site.",
1430
+ "required": false
1431
+ },
1432
+ {
1433
+ "name": "policyLink",
1434
+ "type": "String",
1435
+ "default": "/privacy",
1436
+ "required": false
1437
+ },
1438
+ {
1439
+ "name": "policyLabel",
1440
+ "type": "String",
1441
+ "default": "Learn more",
1442
+ "required": false
1443
+ },
1444
+ {
1445
+ "name": "hasCustomize",
1446
+ "type": "Boolean",
1447
+ "default": false,
1448
+ "required": false
1449
+ },
1450
+ {
1451
+ "name": "hasReject",
1452
+ "type": "Boolean",
1453
+ "default": true,
1454
+ "required": false
1455
+ },
1456
+ {
1457
+ "name": "storageKey",
1458
+ "type": "String",
1459
+ "default": "cookie-consent",
1460
+ "required": false
1461
+ }
387
1462
  ],
388
1463
  "events": [
389
- { "name": "accept", "payload": null, "description": "Emitted when user clicks Accept All" },
390
- { "name": "reject", "payload": null, "description": "Emitted when user clicks Reject All" },
391
- { "name": "customize", "payload": null, "description": "Emitted when user clicks Customize" }
1464
+ {
1465
+ "name": "accept",
1466
+ "payload": null,
1467
+ "description": "Emitted when user clicks Accept All"
1468
+ },
1469
+ {
1470
+ "name": "reject",
1471
+ "payload": null,
1472
+ "description": "Emitted when user clicks Reject All"
1473
+ },
1474
+ {
1475
+ "name": "customize",
1476
+ "payload": null,
1477
+ "description": "Emitted when user clicks Customize"
1478
+ }
392
1479
  ]
393
1480
  },
394
1481
  {
@@ -402,19 +1489,70 @@
402
1489
  "file": "Privacy/GDPR.vue",
403
1490
  "category": "Privacy",
404
1491
  "props": [
405
- { "name": "modelValue", "type": "Boolean", "default": false, "required": false },
406
- { "name": "title", "type": "String", "default": "Privacy Preferences", "required": false },
407
- { "name": "description", "type": "String", "default": "We use cookies to enhance your browsing experience. You can choose which categories to allow.", "required": false },
408
- { "name": "categories", "type": "Array", "default": "[{ id, name, description, required }, ...]", "required": false },
409
- { "name": "privacyLink", "type": "String", "default": "/privacy", "required": false },
410
- { "name": "cookieLink", "type": "String", "default": "/cookies", "required": false },
411
- { "name": "storageKey", "type": "String", "default": "gdpr-preferences", "required": false }
1492
+ {
1493
+ "name": "modelValue",
1494
+ "type": "Boolean",
1495
+ "default": false,
1496
+ "required": false
1497
+ },
1498
+ {
1499
+ "name": "title",
1500
+ "type": "String",
1501
+ "default": "Privacy Preferences",
1502
+ "required": false
1503
+ },
1504
+ {
1505
+ "name": "description",
1506
+ "type": "String",
1507
+ "default": "We use cookies to enhance your browsing experience. You can choose which categories to allow.",
1508
+ "required": false
1509
+ },
1510
+ {
1511
+ "name": "categories",
1512
+ "type": "Array",
1513
+ "default": "[{ id, name, description, required }, ...]",
1514
+ "required": false
1515
+ },
1516
+ {
1517
+ "name": "privacyLink",
1518
+ "type": "String",
1519
+ "default": "/privacy",
1520
+ "required": false
1521
+ },
1522
+ {
1523
+ "name": "cookieLink",
1524
+ "type": "String",
1525
+ "default": "/cookies",
1526
+ "required": false
1527
+ },
1528
+ {
1529
+ "name": "storageKey",
1530
+ "type": "String",
1531
+ "default": "gdpr-preferences",
1532
+ "required": false
1533
+ }
412
1534
  ],
413
1535
  "events": [
414
- { "name": "update:modelValue", "payload": "Boolean", "description": "Emitted when modal visibility changes" },
415
- { "name": "accept", "payload": null, "description": "Emitted when user clicks Accept All" },
416
- { "name": "reject", "payload": null, "description": "Emitted when user clicks Reject All" },
417
- { "name": "save", "payload": "Object", "description": "Emitted with preferences { categoryId: boolean, ... }" }
1536
+ {
1537
+ "name": "update:modelValue",
1538
+ "payload": "Boolean",
1539
+ "description": "Emitted when modal visibility changes"
1540
+ },
1541
+ {
1542
+ "name": "accept",
1543
+ "payload": null,
1544
+ "description": "Emitted when user clicks Accept All"
1545
+ },
1546
+ {
1547
+ "name": "reject",
1548
+ "payload": null,
1549
+ "description": "Emitted when user clicks Reject All"
1550
+ },
1551
+ {
1552
+ "name": "save",
1553
+ "payload": "Object",
1554
+ "description": "Emitted with preferences { categoryId: boolean, ... }"
1555
+ }
418
1556
  ]
419
1557
  },
420
1558
  {
@@ -422,19 +1560,122 @@
422
1560
  "file": "Section/index.vue",
423
1561
  "category": "Section",
424
1562
  "props": [
425
- { "name": "bg", "type": "String", "default": "default", "required": false, "options": ["default", "subtle", "elevated", "bold", "transparent"] },
426
- { "name": "background", "type": "String", "default": null, "required": false },
427
- { "name": "color", "type": "String", "default": "", "required": false },
428
- { "name": "bgImage", "type": "String", "default": "", "required": false },
429
- { "name": "bgImageAlt", "type": "String", "default": "", "required": false },
430
- { "name": "bgImageOverlay", "type": "String", "default": "", "required": false, "options": ["", "light", "heavy", "gradient"] },
431
- { "name": "bgImagePosition", "type": "String", "default": "object-center", "required": false },
432
- { "name": "pattern", "type": "String", "default": "", "required": false, "options": ["", "dots", "grid", "diagonal", "topography", "circuit", "waves"] },
433
- { "name": "patternOpacity", "type": "Number", "default": 0.05, "required": false },
434
- { "name": "padding", "type": "String", "default": "lg", "required": false, "options": ["none", "xs", "sm", "md", "lg", "xl"] },
435
- { "name": "container", "type": "String", "default": "lg", "required": false, "options": ["sm", "md", "lg", "xl", "full", "none"] },
436
- { "name": "parallax", "type": "Boolean", "default": false, "required": false },
437
- { "name": "parallaxSpeed", "type": "Number", "default": 0.3, "required": false }
1563
+ {
1564
+ "name": "bg",
1565
+ "type": "String",
1566
+ "default": "default",
1567
+ "required": false,
1568
+ "options": [
1569
+ "default",
1570
+ "subtle",
1571
+ "elevated",
1572
+ "bold",
1573
+ "transparent"
1574
+ ]
1575
+ },
1576
+ {
1577
+ "name": "background",
1578
+ "type": "String",
1579
+ "default": null,
1580
+ "required": false
1581
+ },
1582
+ {
1583
+ "name": "color",
1584
+ "type": "String",
1585
+ "default": "",
1586
+ "required": false
1587
+ },
1588
+ {
1589
+ "name": "bgImage",
1590
+ "type": "String",
1591
+ "default": "",
1592
+ "required": false
1593
+ },
1594
+ {
1595
+ "name": "bgImageAlt",
1596
+ "type": "String",
1597
+ "default": "",
1598
+ "required": false
1599
+ },
1600
+ {
1601
+ "name": "bgImageOverlay",
1602
+ "type": "String",
1603
+ "default": "",
1604
+ "required": false,
1605
+ "options": [
1606
+ "",
1607
+ "light",
1608
+ "heavy",
1609
+ "gradient"
1610
+ ]
1611
+ },
1612
+ {
1613
+ "name": "bgImagePosition",
1614
+ "type": "String",
1615
+ "default": "object-center",
1616
+ "required": false
1617
+ },
1618
+ {
1619
+ "name": "pattern",
1620
+ "type": "String",
1621
+ "default": "",
1622
+ "required": false,
1623
+ "options": [
1624
+ "",
1625
+ "dots",
1626
+ "grid",
1627
+ "diagonal",
1628
+ "topography",
1629
+ "circuit",
1630
+ "waves"
1631
+ ]
1632
+ },
1633
+ {
1634
+ "name": "patternOpacity",
1635
+ "type": "Number",
1636
+ "default": 0.05,
1637
+ "required": false
1638
+ },
1639
+ {
1640
+ "name": "padding",
1641
+ "type": "String",
1642
+ "default": "lg",
1643
+ "required": false,
1644
+ "options": [
1645
+ "none",
1646
+ "xs",
1647
+ "sm",
1648
+ "md",
1649
+ "lg",
1650
+ "xl"
1651
+ ]
1652
+ },
1653
+ {
1654
+ "name": "container",
1655
+ "type": "String",
1656
+ "default": "lg",
1657
+ "required": false,
1658
+ "options": [
1659
+ "sm",
1660
+ "md",
1661
+ "lg",
1662
+ "xl",
1663
+ "full",
1664
+ "none"
1665
+ ]
1666
+ },
1667
+ {
1668
+ "name": "parallax",
1669
+ "type": "Boolean",
1670
+ "default": false,
1671
+ "required": false
1672
+ },
1673
+ {
1674
+ "name": "parallaxSpeed",
1675
+ "type": "Number",
1676
+ "default": 0.3,
1677
+ "required": false
1678
+ }
438
1679
  ]
439
1680
  },
440
1681
  {
@@ -442,20 +1683,91 @@
442
1683
  "file": "Section/Newsletter.vue",
443
1684
  "category": "Section",
444
1685
  "props": [
445
- { "name": "title", "type": "String", "default": "Subscribe to our newsletter", "required": false },
446
- { "name": "description", "type": "String", "default": "Get the latest news and updates.", "required": false },
447
- { "name": "placeholder", "type": "String", "default": "Enter your email", "required": false },
448
- { "name": "button", "type": "Object", "default": "{ label: 'Subscribe' }", "required": false },
449
- { "name": "hasPrivacy", "type": "Boolean", "default": true, "required": false },
450
- { "name": "privacyText", "type": "String", "default": "No spam. Unsubscribe anytime.", "required": false },
451
- { "name": "successMessage", "type": "String", "default": "Thanks for subscribing!", "required": false },
452
- { "name": "variant", "type": "String", "default": "dark", "required": false, "options": ["dark", "light"] },
453
- { "name": "pattern", "type": "String", "default": null, "required": false, "options": ["dots", "grid", "diagonal", "topography", "circuit", "waves"] },
454
- { "name": "patternOpacity", "type": "Number", "default": 0.05, "required": false },
455
- { "name": "resetDelay", "type": "Number", "default": 5000, "required": false }
1686
+ {
1687
+ "name": "title",
1688
+ "type": "String",
1689
+ "default": "Subscribe to our newsletter",
1690
+ "required": false
1691
+ },
1692
+ {
1693
+ "name": "description",
1694
+ "type": "String",
1695
+ "default": "Get the latest news and updates.",
1696
+ "required": false
1697
+ },
1698
+ {
1699
+ "name": "placeholder",
1700
+ "type": "String",
1701
+ "default": "Enter your email",
1702
+ "required": false
1703
+ },
1704
+ {
1705
+ "name": "button",
1706
+ "type": "Object",
1707
+ "default": "{ label: 'Subscribe' }",
1708
+ "required": false
1709
+ },
1710
+ {
1711
+ "name": "hasPrivacy",
1712
+ "type": "Boolean",
1713
+ "default": true,
1714
+ "required": false
1715
+ },
1716
+ {
1717
+ "name": "privacyText",
1718
+ "type": "String",
1719
+ "default": "No spam. Unsubscribe anytime.",
1720
+ "required": false
1721
+ },
1722
+ {
1723
+ "name": "successMessage",
1724
+ "type": "String",
1725
+ "default": "Thanks for subscribing!",
1726
+ "required": false
1727
+ },
1728
+ {
1729
+ "name": "variant",
1730
+ "type": "String",
1731
+ "default": "dark",
1732
+ "required": false,
1733
+ "options": [
1734
+ "dark",
1735
+ "light"
1736
+ ]
1737
+ },
1738
+ {
1739
+ "name": "pattern",
1740
+ "type": "String",
1741
+ "default": null,
1742
+ "required": false,
1743
+ "options": [
1744
+ "dots",
1745
+ "grid",
1746
+ "diagonal",
1747
+ "topography",
1748
+ "circuit",
1749
+ "waves"
1750
+ ]
1751
+ },
1752
+ {
1753
+ "name": "patternOpacity",
1754
+ "type": "Number",
1755
+ "default": 0.05,
1756
+ "required": false
1757
+ },
1758
+ {
1759
+ "name": "resetDelay",
1760
+ "type": "Number",
1761
+ "default": 5000,
1762
+ "required": false
1763
+ }
456
1764
  ],
457
1765
  "events": [
458
- { "name": "submit", "payload": "String", "description": "Emitted with email address when form is submitted" }
1766
+ {
1767
+ "name": "submit",
1768
+ "payload": "String",
1769
+ "description": "Emitted with email address when form is submitted"
1770
+ }
459
1771
  ]
460
1772
  },
461
1773
  {
@@ -463,13 +1775,61 @@
463
1775
  "file": "Section/Stitch.vue",
464
1776
  "category": "Section",
465
1777
  "props": [
466
- { "name": "variant", "type": "String", "default": "angle", "required": false, "options": ["angle", "wave", "curve", "triangle", "zigzag"] },
467
- { "name": "topColor", "type": "String", "default": "rgb(243 244 246)", "required": false },
468
- { "name": "bottomColor", "type": "String", "default": "rgb(249 250 251)", "required": false },
469
- { "name": "height", "type": "String", "default": "md", "required": false, "options": ["sm", "md", "lg", "xl"] },
470
- { "name": "flip", "type": "Boolean", "default": false, "required": false },
471
- { "name": "glow", "type": "Boolean", "default": false, "required": false },
472
- { "name": "glowColor", "type": "String", "default": "rgba(99, 102, 241, 0.5)", "required": false }
1778
+ {
1779
+ "name": "variant",
1780
+ "type": "String",
1781
+ "default": "angle",
1782
+ "required": false,
1783
+ "options": [
1784
+ "angle",
1785
+ "wave",
1786
+ "curve",
1787
+ "triangle",
1788
+ "zigzag"
1789
+ ]
1790
+ },
1791
+ {
1792
+ "name": "topColor",
1793
+ "type": "String",
1794
+ "default": "rgb(243 244 246)",
1795
+ "required": false
1796
+ },
1797
+ {
1798
+ "name": "bottomColor",
1799
+ "type": "String",
1800
+ "default": "rgb(249 250 251)",
1801
+ "required": false
1802
+ },
1803
+ {
1804
+ "name": "height",
1805
+ "type": "String",
1806
+ "default": "md",
1807
+ "required": false,
1808
+ "options": [
1809
+ "sm",
1810
+ "md",
1811
+ "lg",
1812
+ "xl"
1813
+ ]
1814
+ },
1815
+ {
1816
+ "name": "flip",
1817
+ "type": "Boolean",
1818
+ "default": false,
1819
+ "required": false
1820
+ },
1821
+ {
1822
+ "name": "glow",
1823
+ "type": "Boolean",
1824
+ "default": false,
1825
+ "required": false
1826
+ },
1827
+ {
1828
+ "name": "glowColor",
1829
+ "type": "String",
1830
+ "default": "rgba(99, 102, 241, 0.5)",
1831
+ "required": false
1832
+ }
473
1833
  ]
474
1834
  },
475
1835
  {
@@ -477,10 +1837,47 @@
477
1837
  "file": "SocialProof/Badge.vue",
478
1838
  "category": "SocialProof",
479
1839
  "props": [
480
- { "name": "preset", "type": "String", "default": "", "required": false, "options": ["no-credit-card", "cancel-anytime", "free-trial", "secure", "support", "setup", "gdpr", "money-back"] },
481
- { "name": "icon", "type": "String", "default": "", "required": false },
482
- { "name": "label", "type": "String", "default": "", "required": false },
483
- { "name": "variant", "type": "String", "default": "default", "required": false, "options": ["default", "subtle", "outline", "text", "text-muted"] }
1840
+ {
1841
+ "name": "preset",
1842
+ "type": "String",
1843
+ "default": "",
1844
+ "required": false,
1845
+ "options": [
1846
+ "no-credit-card",
1847
+ "cancel-anytime",
1848
+ "free-trial",
1849
+ "secure",
1850
+ "support",
1851
+ "setup",
1852
+ "gdpr",
1853
+ "money-back"
1854
+ ]
1855
+ },
1856
+ {
1857
+ "name": "icon",
1858
+ "type": "String",
1859
+ "default": "",
1860
+ "required": false
1861
+ },
1862
+ {
1863
+ "name": "label",
1864
+ "type": "String",
1865
+ "default": "",
1866
+ "required": false
1867
+ },
1868
+ {
1869
+ "name": "variant",
1870
+ "type": "String",
1871
+ "default": "default",
1872
+ "required": false,
1873
+ "options": [
1874
+ "default",
1875
+ "subtle",
1876
+ "outline",
1877
+ "text",
1878
+ "text-muted"
1879
+ ]
1880
+ }
484
1881
  ]
485
1882
  },
486
1883
  {
@@ -488,11 +1885,41 @@
488
1885
  "file": "SocialProof/Testimonials.vue",
489
1886
  "category": "SocialProof",
490
1887
  "props": [
491
- { "name": "testimonials", "type": "Array", "default": null, "required": true },
492
- { "name": "layout", "type": "String", "default": "featured", "required": false, "options": ["featured", "grid", "carousel"] },
493
- { "name": "hasStars", "type": "Boolean", "default": true, "required": false },
494
- { "name": "autoplay", "type": "Boolean", "default": true, "required": false },
495
- { "name": "interval", "type": "Number", "default": 5000, "required": false }
1888
+ {
1889
+ "name": "testimonials",
1890
+ "type": "Array",
1891
+ "default": "[{ quote: \"This product completely transformed how our team works. Highly recommended.\", name: \"Alex Johnson\", title: \"CEO\", company: \"Acme Inc\", rating: 5 }, { quote: \"The best investment we made this year. Setup was a breeze and results were immediate.\", name: \"Sarah Chen\", title: \"CTO\", company: \"TechCorp\", rating: 5 }, { quote: \"Outstanding support and a product that actually delivers on its promises.\", name: \"Marcus Williams\", title: \"Product Manager\", company: \"StartupXYZ\", rating: 5 }]",
1892
+ "required": false
1893
+ },
1894
+ {
1895
+ "name": "layout",
1896
+ "type": "String",
1897
+ "default": "featured",
1898
+ "required": false,
1899
+ "options": [
1900
+ "featured",
1901
+ "grid",
1902
+ "carousel"
1903
+ ]
1904
+ },
1905
+ {
1906
+ "name": "hasStars",
1907
+ "type": "Boolean",
1908
+ "default": true,
1909
+ "required": false
1910
+ },
1911
+ {
1912
+ "name": "autoplay",
1913
+ "type": "Boolean",
1914
+ "default": true,
1915
+ "required": false
1916
+ },
1917
+ {
1918
+ "name": "interval",
1919
+ "type": "Number",
1920
+ "default": 5000,
1921
+ "required": false
1922
+ }
496
1923
  ]
497
1924
  },
498
1925
  {
@@ -500,12 +1927,203 @@
500
1927
  "file": "SocialProof/Toast.vue",
501
1928
  "category": "SocialProof",
502
1929
  "props": [
503
- { "name": "notifications", "type": "Array", "default": null, "required": true },
504
- { "name": "interval", "type": "Number", "default": 4000, "required": false },
505
- { "name": "initialDelay", "type": "Number", "default": 5000, "required": false },
506
- { "name": "displayDuration", "type": "Number", "default": 3000, "required": false },
507
- { "name": "placement", "type": "String", "default": "bottomLeft", "required": false, "options": ["topLeft", "topRight", "bottomLeft", "bottomRight"] }
1930
+ {
1931
+ "name": "notifications",
1932
+ "type": "Array",
1933
+ "default": "[{ name: \"Alex M.\", action: \"just signed up\", time: \"2 minutes ago\" }, { name: \"Sarah K.\", action: \"upgraded to Pro\", time: \"5 minutes ago\" }, { name: \"James T.\", action: \"started a free trial\", time: \"8 minutes ago\" }]",
1934
+ "required": false
1935
+ },
1936
+ {
1937
+ "name": "interval",
1938
+ "type": "Number",
1939
+ "default": 4000,
1940
+ "required": false
1941
+ },
1942
+ {
1943
+ "name": "initialDelay",
1944
+ "type": "Number",
1945
+ "default": 5000,
1946
+ "required": false
1947
+ },
1948
+ {
1949
+ "name": "displayDuration",
1950
+ "type": "Number",
1951
+ "default": 3000,
1952
+ "required": false
1953
+ },
1954
+ {
1955
+ "name": "placement",
1956
+ "type": "String",
1957
+ "default": "bottomLeft",
1958
+ "required": false,
1959
+ "options": [
1960
+ "topLeft",
1961
+ "topRight",
1962
+ "bottomLeft",
1963
+ "bottomRight"
1964
+ ]
1965
+ }
1966
+ ]
1967
+ },
1968
+ {
1969
+ "name": "XMarkDirectoryListingCard",
1970
+ "file": "Directory/ListingCard.vue",
1971
+ "category": "Directory",
1972
+ "props": [
1973
+ {
1974
+ "name": "listing",
1975
+ "type": "Object",
1976
+ "default": "{ name: \"Listing Name\", description: \"A brief description of this listing.\", category: \"Category\" }",
1977
+ "required": false
1978
+ }
1979
+ ]
1980
+ },
1981
+ {
1982
+ "name": "XMarkDirectoryListingGrid",
1983
+ "file": "Directory/ListingGrid.vue",
1984
+ "category": "Directory",
1985
+ "props": [
1986
+ {
1987
+ "name": "listings",
1988
+ "type": "Array",
1989
+ "default": "[]",
1990
+ "required": false
1991
+ },
1992
+ {
1993
+ "name": "columns",
1994
+ "type": "Number",
1995
+ "default": 3,
1996
+ "required": false
1997
+ }
1998
+ ]
1999
+ },
2000
+ {
2001
+ "name": "XMarkDirectoryCategoryHero",
2002
+ "file": "Directory/CategoryHero.vue",
2003
+ "category": "Directory",
2004
+ "props": [
2005
+ {
2006
+ "name": "category",
2007
+ "type": "Object",
2008
+ "default": "{ name: \"Category Name\", count: 0, description: \"Browse our collection of listings in this category.\" }",
2009
+ "required": false
2010
+ }
2011
+ ]
2012
+ },
2013
+ {
2014
+ "name": "XMarkDirectorySubmitCTA",
2015
+ "file": "Directory/SubmitCTA.vue",
2016
+ "category": "Directory",
2017
+ "props": [
2018
+ {
2019
+ "name": "title",
2020
+ "type": "String",
2021
+ "default": "Submit Your Listing",
2022
+ "required": false
2023
+ },
2024
+ {
2025
+ "name": "description",
2026
+ "type": "String",
2027
+ "default": "Get your product or service listed in our directory.",
2028
+ "required": false
2029
+ },
2030
+ {
2031
+ "name": "button",
2032
+ "type": "Object",
2033
+ "default": "{ label: \"Submit Now\" }",
2034
+ "required": false
2035
+ }
2036
+ ]
2037
+ },
2038
+ {
2039
+ "name": "XMarkDirectoryListingDetail",
2040
+ "file": "Directory/ListingDetail.vue",
2041
+ "category": "Directory",
2042
+ "props": [
2043
+ {
2044
+ "name": "listing",
2045
+ "type": "Object",
2046
+ "default": "{ name: \"Listing Name\", description: \"A detailed description of this listing.\" }",
2047
+ "required": false
2048
+ }
2049
+ ]
2050
+ },
2051
+ {
2052
+ "name": "XMarkAffiliateDisclosure",
2053
+ "file": "Affiliate/Disclosure.vue",
2054
+ "category": "Affiliate",
2055
+ "props": [
2056
+ {
2057
+ "name": "text",
2058
+ "type": "String",
2059
+ "default": "This page contains affiliate links. We may earn a commission at no extra cost to you.",
2060
+ "required": false
2061
+ }
2062
+ ]
2063
+ },
2064
+ {
2065
+ "name": "XMarkAffiliateProductCard",
2066
+ "file": "Affiliate/ProductCard.vue",
2067
+ "category": "Affiliate",
2068
+ "props": [
2069
+ {
2070
+ "name": "product",
2071
+ "type": "Object",
2072
+ "default": "{ name: \"Product Name\", description: \"A brief description of the product.\", price: \"$99\", rating: 4.5 }",
2073
+ "required": false
2074
+ }
2075
+ ]
2076
+ },
2077
+ {
2078
+ "name": "XMarkAffiliateProductGrid",
2079
+ "file": "Affiliate/ProductGrid.vue",
2080
+ "category": "Affiliate",
2081
+ "props": [
2082
+ {
2083
+ "name": "products",
2084
+ "type": "Array",
2085
+ "default": "[]",
2086
+ "required": false
2087
+ },
2088
+ {
2089
+ "name": "columns",
2090
+ "type": "Number",
2091
+ "default": 3,
2092
+ "required": false
2093
+ }
2094
+ ]
2095
+ },
2096
+ {
2097
+ "name": "XMarkAffiliateProductDetail",
2098
+ "file": "Affiliate/ProductDetail.vue",
2099
+ "category": "Affiliate",
2100
+ "props": [
2101
+ {
2102
+ "name": "product",
2103
+ "type": "Object",
2104
+ "default": "{ name: \"Product Name\", description: \"A detailed description of the product.\" }",
2105
+ "required": false
2106
+ }
2107
+ ]
2108
+ },
2109
+ {
2110
+ "name": "XMarkAffiliateComparisonTable",
2111
+ "file": "Affiliate/ComparisonTable.vue",
2112
+ "category": "Affiliate",
2113
+ "props": [
2114
+ {
2115
+ "name": "products",
2116
+ "type": "Array",
2117
+ "default": "[]",
2118
+ "required": false
2119
+ },
2120
+ {
2121
+ "name": "features",
2122
+ "type": "Array",
2123
+ "default": "[]",
2124
+ "required": false
2125
+ }
508
2126
  ]
509
2127
  }
510
2128
  ]
511
- }
2129
+ }