@xenterprises/nuxt-x-marketing 1.0.3 → 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 (62) 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/package.json +1 -1
  8. package/.claude/settings.local.json +0 -8
  9. package/.nuxtrc +0 -1
  10. package/.playground/app.config.ts +0 -74
  11. package/.playground/app.vue +0 -269
  12. package/.playground/components/AppFooter.vue +0 -103
  13. package/.playground/components/AppHeader.vue +0 -41
  14. package/.playground/components/CodeExample.vue +0 -70
  15. package/.playground/components/ComponentPlayground.vue +0 -117
  16. package/.playground/components/DocsHeader.vue +0 -19
  17. package/.playground/layouts/default.vue +0 -15
  18. package/.playground/layouts/docs-layout.vue +0 -161
  19. package/.playground/layouts/docs.vue +0 -11
  20. package/.playground/nuxt.config.ts +0 -17
  21. package/.playground/pages/blog/author.vue +0 -145
  22. package/.playground/pages/blog/card.vue +0 -149
  23. package/.playground/pages/blog/cta.vue +0 -131
  24. package/.playground/pages/blog/detail.vue +0 -471
  25. package/.playground/pages/blog/list.vue +0 -261
  26. package/.playground/pages/blog/navigation.vue +0 -228
  27. package/.playground/pages/blog/sidebar.vue +0 -279
  28. package/.playground/pages/config.vue +0 -289
  29. package/.playground/pages/content/comparison.vue +0 -253
  30. package/.playground/pages/content/cta.vue +0 -245
  31. package/.playground/pages/content/features.vue +0 -217
  32. package/.playground/pages/content/newsletter-section.vue +0 -260
  33. package/.playground/pages/content/newsletter.vue +0 -200
  34. package/.playground/pages/content/pricing.vue +0 -335
  35. package/.playground/pages/content/testimonials.vue +0 -188
  36. package/.playground/pages/hero.vue +0 -257
  37. package/.playground/pages/index.vue +0 -381
  38. package/.playground/pages/layout/footer.vue +0 -210
  39. package/.playground/pages/layout/legal-footer.vue +0 -121
  40. package/.playground/pages/layout/navbar.vue +0 -285
  41. package/.playground/pages/layout/section.vue +0 -266
  42. package/.playground/pages/layout/x-legal.vue +0 -199
  43. package/.playground/pages/modals/feature-modal.vue +0 -320
  44. package/.playground/pages/modals/image-lightbox.vue +0 -277
  45. package/.playground/pages/modals/video-modal.vue +0 -222
  46. package/.playground/pages/notifications/announcement-bar.vue +0 -164
  47. package/.playground/pages/notifications/cookie-banner.vue +0 -210
  48. package/.playground/pages/notifications/cookie-toast.vue +0 -143
  49. package/.playground/pages/notifications/gdpr.vue +0 -276
  50. package/.playground/pages/notifications/social-proof-toast.vue +0 -515
  51. package/.playground/pages/ui/badge.vue +0 -161
  52. package/.playground/pages/ui/bg-pattern.vue +0 -177
  53. package/.playground/pages/ui/glass-card.vue +0 -179
  54. package/.playground/pages/ui/glow-divider.vue +0 -179
  55. package/.playground/pages/ui/promo-card.vue +0 -259
  56. package/.playground/pages/ui/section-stitch.vue +0 -411
  57. package/.playground/pages/utilities/back-to-top.vue +0 -153
  58. package/.playground/pages/utilities/popup-chat.vue +0 -224
  59. package/componentList.json +0 -2129
  60. package/screenshots/playground-home.png +0 -0
  61. package/tsconfig.json +0 -3
  62. /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>