@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,253 +0,0 @@
1
- <template>
2
- <div class="min-h-screen">
3
- <!-- Page Header -->
4
- <div class="bg-white dark:bg-neutral-900 border-b border-neutral-200 dark:border-neutral-800 px-8 py-6">
5
- <h1 class="text-2xl font-bold text-neutral-900 dark:text-white">Pricing Comparison</h1>
6
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">
7
- Feature comparison table with social proof badges for pricing plans.
8
- </p>
9
- </div>
10
-
11
- <!-- Demo Content -->
12
- <div class="space-y-0">
13
- <!-- Basic Comparison with Badges -->
14
- <XMarkSection bg="default">
15
- <div class="text-center mb-12">
16
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">Feature Comparison</span>
17
- <h2 class="xText-headline">Compare Plans</h2>
18
- <p class="mt-4 text-neutral-600 dark:text-neutral-400">Feature comparison with trust badges below</p>
19
- </div>
20
-
21
- <XMarkPricingComparison
22
- :plans="plans"
23
- :feature-groups="featureGroups"
24
- :badges="['no-credit-card', 'cancel-anytime', 'money-back']"
25
- />
26
- </XMarkSection>
27
-
28
- <!-- With Highlighted Plan and Badges at Top -->
29
- <XMarkSection bg="subtle">
30
- <div class="text-center mb-12">
31
- <span class="inline-block px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 text-xs font-medium mb-4">Badges Top</span>
32
- <h2 class="xText-headline">With Badges Above</h2>
33
- </div>
34
-
35
- <XMarkPricingComparison
36
- :plans="plansHighlighted"
37
- :feature-groups="featureGroups"
38
- :badges="['free-trial', 'secure']"
39
- badges-position="top"
40
- />
41
- </XMarkSection>
42
-
43
- <!-- Props Documentation -->
44
- <XMarkSection bg="default">
45
- <h2 class="text-lg font-semibold mb-6">XMarkPricingComparison Props</h2>
46
- <div class="overflow-x-auto">
47
- <table class="w-full text-sm">
48
- <thead>
49
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
50
- <th class="text-left py-3 px-4 font-medium">Prop</th>
51
- <th class="text-left py-3 px-4 font-medium">Type</th>
52
- <th class="text-left py-3 px-4 font-medium">Default</th>
53
- <th class="text-left py-3 px-4 font-medium">Description</th>
54
- </tr>
55
- </thead>
56
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
57
- <tr>
58
- <td class="py-3 px-4 font-mono text-xs">plans</td>
59
- <td class="py-3 px-4">Array</td>
60
- <td class="py-3 px-4">required</td>
61
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Array of { id, name, price?, highlighted?, button? }</td>
62
- </tr>
63
- <tr>
64
- <td class="py-3 px-4 font-mono text-xs">featureGroups</td>
65
- <td class="py-3 px-4">Array</td>
66
- <td class="py-3 px-4">required</td>
67
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Array of feature groups with features</td>
68
- </tr>
69
- <tr>
70
- <td class="py-3 px-4 font-mono text-xs">caption</td>
71
- <td class="py-3 px-4">String</td>
72
- <td class="py-3 px-4">undefined</td>
73
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Caption displayed above the table</td>
74
- </tr>
75
- <tr>
76
- <td class="py-3 px-4 font-mono text-xs">badges</td>
77
- <td class="py-3 px-4">Array</td>
78
- <td class="py-3 px-4">[]</td>
79
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Social proof badge presets or custom</td>
80
- </tr>
81
- <tr>
82
- <td class="py-3 px-4 font-mono text-xs">badgesPosition</td>
83
- <td class="py-3 px-4">String</td>
84
- <td class="py-3 px-4">'bottom'</td>
85
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">'top' or 'bottom'</td>
86
- </tr>
87
- <tr>
88
- <td class="py-3 px-4 font-mono text-xs">badgesAlign</td>
89
- <td class="py-3 px-4">String</td>
90
- <td class="py-3 px-4">'center'</td>
91
- <td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">'left', 'center', or 'right'</td>
92
- </tr>
93
- </tbody>
94
- </table>
95
- </div>
96
- </XMarkSection>
97
-
98
- <!-- Data Structure -->
99
- <XMarkSection bg="subtle">
100
- <h2 class="text-lg font-semibold mb-4">Data Structure</h2>
101
- <div class="bg-neutral-100 dark:bg-neutral-800 rounded-lg p-4 text-sm font-mono overflow-x-auto">
102
- <pre>// Plans
103
- [
104
- {
105
- id: 'free',
106
- name: 'Free',
107
- price: '$0',
108
- highlighted: false,
109
- button: { label: 'Get Started' }
110
- },
111
- {
112
- id: 'pro',
113
- name: 'Pro',
114
- price: '$29',
115
- highlighted: true,
116
- button: { label: 'Buy Now' }
117
- }
118
- ]
119
-
120
- // Feature Groups
121
- [
122
- {
123
- name: 'Features',
124
- features: [
125
- {
126
- name: 'Projects',
127
- values: { free: '3', pro: 'Unlimited' }
128
- },
129
- {
130
- name: 'API Access',
131
- values: { free: false, pro: true }
132
- }
133
- ]
134
- }
135
- ]</pre>
136
- </div>
137
- </XMarkSection>
138
-
139
- <!-- Code Example -->
140
- <XMarkSection bg="default">
141
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
142
- <CodeExample title="Comparison Table Usage" :code="codeExample" />
143
- </XMarkSection>
144
- </div>
145
- </div>
146
- </template>
147
-
148
- <script setup>
149
- // Initialize scroll reveal animations
150
- useScrollReveal()
151
-
152
- const codeExample = `<XMarkPricingComparison
153
- :plans="[
154
- { id: 'free', name: 'Free', price: '$0', button: { label: 'Get Started' } },
155
- { id: 'pro', name: 'Pro', price: '$29', highlighted: true, button: { label: 'Buy Now' } },
156
- { id: 'enterprise', name: 'Enterprise', price: 'Custom', button: { label: 'Contact' } }
157
- ]"
158
- :feature-groups="[
159
- {
160
- name: 'Features',
161
- features: [
162
- { name: 'Projects', values: { free: '3', pro: 'Unlimited', enterprise: 'Unlimited' } },
163
- { name: 'Storage', values: { free: '1 GB', pro: '50 GB', enterprise: 'Unlimited' } },
164
- { name: 'API Access', values: { free: false, pro: true, enterprise: true } }
165
- ]
166
- }
167
- ]"
168
- :badges="['no-credit-card', 'cancel-anytime']"
169
- @select="handlePlanSelect"
170
- />`
171
-
172
- const plans = [
173
- {
174
- id: 'free',
175
- name: 'Free',
176
- price: '$0',
177
- button: { label: 'Get Started' }
178
- },
179
- {
180
- id: 'pro',
181
- name: 'Pro',
182
- price: '$29',
183
- button: { label: 'Buy Now' }
184
- },
185
- {
186
- id: 'enterprise',
187
- name: 'Enterprise',
188
- price: 'Custom',
189
- button: { label: 'Contact Sales' }
190
- }
191
- ]
192
-
193
- const plansHighlighted = [
194
- {
195
- id: 'free',
196
- name: 'Free',
197
- price: '$0',
198
- button: { label: 'Get Started' }
199
- },
200
- {
201
- id: 'pro',
202
- name: 'Pro',
203
- price: '$29',
204
- highlighted: true,
205
- button: { label: 'Buy Now' }
206
- },
207
- {
208
- id: 'enterprise',
209
- name: 'Enterprise',
210
- price: 'Custom',
211
- button: { label: 'Contact Sales' }
212
- }
213
- ]
214
-
215
- const featureGroups = [
216
- {
217
- name: 'Features',
218
- features: [
219
- { name: 'Projects', values: { free: '3', pro: 'Unlimited', enterprise: 'Unlimited' } },
220
- { name: 'Storage', values: { free: '1 GB', pro: '50 GB', enterprise: 'Unlimited' } },
221
- { name: 'Team Members', values: { free: '1', pro: '10', enterprise: 'Unlimited' } },
222
- { name: 'GitHub repository access', values: { free: true, pro: true, enterprise: true } },
223
- { name: 'Updates', values: { free: 'Patch & minor', pro: 'All updates', enterprise: 'All updates' } }
224
- ]
225
- },
226
- {
227
- name: 'Collaboration',
228
- features: [
229
- { name: 'Real-time Editing', values: { free: false, pro: true, enterprise: true } },
230
- { name: 'Comments', values: { free: true, pro: true, enterprise: true } },
231
- { name: 'Version History', values: { free: '7 days', pro: '90 days', enterprise: 'Unlimited' } }
232
- ]
233
- },
234
- {
235
- name: 'Support',
236
- features: [
237
- { name: 'Email Support', values: { free: true, pro: true, enterprise: true } },
238
- { name: 'Priority Support', values: { free: false, pro: true, enterprise: true } },
239
- { name: 'Dedicated Manager', values: { free: false, pro: false, enterprise: true } },
240
- { name: '24/7 Support', values: { free: false, pro: false, enterprise: true } }
241
- ]
242
- },
243
- {
244
- name: 'Security',
245
- features: [
246
- { name: 'API Access', values: { free: false, pro: true, enterprise: true } },
247
- { name: 'Custom Integrations', values: { free: false, pro: false, enterprise: true } },
248
- { name: 'SSO/SAML', values: { free: false, pro: false, enterprise: true } },
249
- { name: 'Audit logs', values: { free: false, pro: true, enterprise: true } }
250
- ]
251
- }
252
- ]
253
- </script>
@@ -1,245 +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">CTA</h1>
5
- <p class="mt-2 text-neutral-600 dark:text-neutral-400">Flexible call-to-action component for promotions and conversions.</p>
6
- </div>
7
-
8
- <div class="p-8 space-y-16">
9
- <div class="space-y-12">
10
- <!-- Default Layout -->
11
- <section>
12
- <h3 class="text-lg font-semibold mb-4">Default Layout (Side by Side)</h3>
13
- <XMarkCTA
14
- title="Ready to get started?"
15
- description="Join thousands of developers building with our components."
16
- :buttons="[
17
- { label: 'Get Started Free', to: '#' },
18
- { label: 'Learn More', to: '#' }
19
- ]"
20
- />
21
- </section>
22
-
23
- <!-- Centered Layout - Bold -->
24
- <section>
25
- <h3 class="text-lg font-semibold mb-4">Centered Layout (Bold)</h3>
26
- <XMarkCTA
27
- eyebrow="Limited Time Offer"
28
- title="Get 50% off your first year"
29
- description="Use code LAUNCH50 at checkout. Offer ends soon."
30
- variant="centered"
31
- bg="bold"
32
- size="lg"
33
- :buttons="[
34
- { label: 'Claim Discount', variant: 'solid' },
35
- { label: 'View Plans', variant: 'outline' }
36
- ]"
37
- />
38
- </section>
39
-
40
- <!-- With Icon -->
41
- <section>
42
- <h3 class="text-lg font-semibold mb-4">With Icon</h3>
43
- <XMarkCTA
44
- icon="i-lucide-rocket"
45
- title="Launch your project today"
46
- description="Everything you need to build, deploy, and scale."
47
- :buttons="[{ label: 'Start Building', to: '#' }]"
48
- />
49
- </section>
50
-
51
- <!-- Gradient Background -->
52
- <section>
53
- <h3 class="text-lg font-semibold mb-4">Gradient Background</h3>
54
- <XMarkCTA
55
- icon="i-lucide-sparkles"
56
- title="Introducing AI-powered features"
57
- description="Supercharge your workflow with intelligent automation."
58
- variant="stacked"
59
- bg="gradient"
60
- :buttons="[
61
- { label: 'Try AI Features' },
62
- { label: 'Watch Demo', variant: 'ghost' }
63
- ]"
64
- />
65
- </section>
66
-
67
- <!-- With Pattern -->
68
- <section>
69
- <h3 class="text-lg font-semibold mb-4">With Pattern</h3>
70
- <XMarkCTA
71
- title="Join our community"
72
- description="Connect with thousands of developers worldwide."
73
- variant="centered"
74
- :bg="{ variant: 'bold', pattern: 'dots', patternOpacity: 0.1 }"
75
- :buttons="[
76
- { label: 'Join Now' },
77
- { label: 'Learn More', variant: 'outline' }
78
- ]"
79
- />
80
- </section>
81
-
82
- <!-- With Background Image -->
83
- <section>
84
- <h3 class="text-lg font-semibold mb-4">With Background Image</h3>
85
- <XMarkCTA
86
- eyebrow="New Feature"
87
- title="Take your business global"
88
- description="Expand to new markets with our international tools."
89
- variant="centered"
90
- size="lg"
91
- :bg="{
92
- image: 'https://images.unsplash.com/photo-1557683316-973673baf926?w=1200&h=400&fit=crop',
93
- imageOverlay: 'heavy'
94
- }"
95
- :buttons="[
96
- { label: 'Get Started' },
97
- { label: 'See Demo', variant: 'outline' }
98
- ]"
99
- />
100
- </section>
101
-
102
- <!-- Inline Layout -->
103
- <section>
104
- <h3 class="text-lg font-semibold mb-4">Inline Layout</h3>
105
- <XMarkCTA
106
- title="Need help getting started?"
107
- variant="inline"
108
- :buttons="[{ label: 'Contact Sales', to: '#' }]"
109
- />
110
- </section>
111
-
112
- <!-- Custom Color -->
113
- <section>
114
- <h3 class="text-lg font-semibold mb-4">Custom Color</h3>
115
- <XMarkCTA
116
- title="Special announcement"
117
- description="We're launching something exciting very soon."
118
- variant="centered"
119
- :bg="{ color: 'bg-emerald-600', variant: 'bold' }"
120
- :buttons="[
121
- { label: 'Notify Me' },
122
- { label: 'Learn More', variant: 'outline' }
123
- ]"
124
- />
125
- </section>
126
- </div>
127
-
128
- <!-- Props Documentation -->
129
- <div class="border-t border-neutral-200 dark:border-neutral-800 pt-16">
130
- <h2 class="text-lg font-semibold mb-6">Props</h2>
131
- <div class="overflow-x-auto">
132
- <table class="w-full text-sm">
133
- <thead>
134
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
135
- <th class="text-left py-3 px-4 font-medium">Prop</th>
136
- <th class="text-left py-3 px-4 font-medium">Type</th>
137
- <th class="text-left py-3 px-4 font-medium">Default</th>
138
- <th class="text-left py-3 px-4 font-medium">Description</th>
139
- </tr>
140
- </thead>
141
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
142
- <tr><td class="py-3 px-4 font-mono text-xs">title</td><td class="py-3 px-4">String</td><td class="py-3 px-4">required</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">CTA heading</td></tr>
143
- <tr><td class="py-3 px-4 font-mono text-xs">description</td><td class="py-3 px-4">String</td><td class="py-3 px-4">''</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Supporting text</td></tr>
144
- <tr><td class="py-3 px-4 font-mono text-xs">eyebrow</td><td class="py-3 px-4">String</td><td class="py-3 px-4">''</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Small text above title</td></tr>
145
- <tr><td class="py-3 px-4 font-mono text-xs">icon</td><td class="py-3 px-4">String</td><td class="py-3 px-4">''</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Icon name (Lucide)</td></tr>
146
- <tr><td class="py-3 px-4 font-mono text-xs">buttons</td><td class="py-3 px-4">Array</td><td class="py-3 px-4">[]</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">[{ label, to?, variant?, icon? }]</td></tr>
147
- <tr><td class="py-3 px-4 font-mono text-xs">variant</td><td class="py-3 px-4">String</td><td class="py-3 px-4">'default'</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">default, centered, inline, stacked</td></tr>
148
- <tr><td class="py-3 px-4 font-mono text-xs">bg</td><td class="py-3 px-4">String | Object</td><td class="py-3 px-4">'subtle'</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Background config (see below)</td></tr>
149
- <tr><td class="py-3 px-4 font-mono text-xs">size</td><td class="py-3 px-4">String</td><td class="py-3 px-4">'md'</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">sm, md, lg</td></tr>
150
- </tbody>
151
- </table>
152
- </div>
153
-
154
- <h2 class="text-lg font-semibold mt-12 mb-4">Background Options (bg prop)</h2>
155
- <div class="overflow-x-auto">
156
- <table class="w-full text-sm">
157
- <thead>
158
- <tr class="border-b border-neutral-200 dark:border-neutral-700">
159
- <th class="text-left py-3 px-4 font-medium">Property</th>
160
- <th class="text-left py-3 px-4 font-medium">Type</th>
161
- <th class="text-left py-3 px-4 font-medium">Description</th>
162
- </tr>
163
- </thead>
164
- <tbody class="divide-y divide-neutral-200 dark:divide-neutral-700">
165
- <tr><td class="py-3 px-4 font-mono text-xs">variant</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">subtle, bold, gradient, none</td></tr>
166
- <tr><td class="py-3 px-4 font-mono text-xs">color</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Custom Tailwind classes (overrides variant)</td></tr>
167
- <tr><td class="py-3 px-4 font-mono text-xs">image</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Background image URL</td></tr>
168
- <tr><td class="py-3 px-4 font-mono text-xs">imageAlt</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Background image alt text</td></tr>
169
- <tr><td class="py-3 px-4 font-mono text-xs">imageOverlay</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">light, heavy, gradient</td></tr>
170
- <tr><td class="py-3 px-4 font-mono text-xs">imagePosition</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Tailwind object-position class</td></tr>
171
- <tr><td class="py-3 px-4 font-mono text-xs">pattern</td><td class="py-3 px-4">String</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">dots, grid, diagonal, topography, circuit, waves</td></tr>
172
- <tr><td class="py-3 px-4 font-mono text-xs">patternOpacity</td><td class="py-3 px-4">Number</td><td class="py-3 px-4 text-neutral-600 dark:text-neutral-400">Pattern opacity (0-1)</td></tr>
173
- </tbody>
174
- </table>
175
- </div>
176
-
177
- <h2 class="text-lg font-semibold mt-12 mb-4">Button Styling</h2>
178
- <div class="p-4 bg-neutral-50 dark:bg-neutral-800/50 rounded-lg space-y-2">
179
- <p class="text-sm text-neutral-600 dark:text-neutral-400">
180
- Buttons are automatically styled based on the <code class="text-primary-500">bg</code> prop:
181
- </p>
182
- <ul class="text-sm text-neutral-600 dark:text-neutral-400 list-disc list-inside space-y-1">
183
- <li><strong>subtle/none:</strong> Primary color for first button, neutral for others</li>
184
- <li><strong>bold/gradient/image:</strong> White solid button for primary, transparent outline/ghost for secondary</li>
185
- </ul>
186
- </div>
187
- </div>
188
-
189
- <!-- Code Example -->
190
- <section>
191
- <h2 class="text-lg font-semibold mb-4">Code Example</h2>
192
- <CodeExample title="CTA Usage" :code="codeExample" />
193
- </section>
194
- </div>
195
- </div>
196
- </template>
197
-
198
- <script setup>
199
- const codeExample = `<!-- Simple string shorthand -->
200
- <XMarkCTA
201
- title="Ready to get started?"
202
- description="Join thousands of developers."
203
- bg="subtle"
204
- :buttons="[{ label: 'Get Started' }]"
205
- />
206
-
207
- <!-- Bold centered CTA -->
208
- <XMarkCTA
209
- eyebrow="Limited Offer"
210
- title="Get 50% off"
211
- variant="centered"
212
- bg="bold"
213
- size="lg"
214
- :buttons="[
215
- { label: 'Claim Now' },
216
- { label: 'View Plans', variant: 'outline' }
217
- ]"
218
- />
219
-
220
- <!-- With pattern -->
221
- <XMarkCTA
222
- title="Join our community"
223
- variant="centered"
224
- :bg="{ variant: 'bold', pattern: 'dots', patternOpacity: 0.1 }"
225
- :buttons="[{ label: 'Join Now' }]"
226
- />
227
-
228
- <!-- With background image -->
229
- <XMarkCTA
230
- title="Take your business global"
231
- variant="centered"
232
- :bg="{
233
- image: '/images/bg.jpg',
234
- imageOverlay: 'heavy'
235
- }"
236
- :buttons="[{ label: 'Get Started' }]"
237
- />
238
-
239
- <!-- Custom color -->
240
- <XMarkCTA
241
- title="Special announcement"
242
- :bg="{ color: 'bg-emerald-600', variant: 'bold' }"
243
- :buttons="[{ label: 'Learn More' }]"
244
- />`
245
- </script>