aural-ui 2.0.0 → 2.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.
- package/dist/components/badge/Badge.stories.tsx +7 -0
- package/dist/components/banner/Banner.stories.tsx +7 -0
- package/dist/components/button/Button.stories.tsx +7 -0
- package/dist/components/char-count/CharCount.stories.tsx +7 -0
- package/dist/components/checkbox/Checkbox.stories.tsx +7 -0
- package/dist/components/chip/Chip.stories.tsx +10 -0
- package/dist/components/collapsible/Collapsible.stories.tsx +7 -0
- package/dist/components/dropdown/index.tsx +18 -7
- package/dist/components/form/Form.stories.tsx +7 -0
- package/dist/components/helper-text/HelperText.stories.tsx +7 -0
- package/dist/components/icon-button/IconButton.stories.tsx +4 -0
- package/dist/components/if-else/if-else.stories.tsx +7 -0
- package/dist/components/input/Input.stories.tsx +7 -0
- package/dist/components/label/Label.stories.tsx +7 -0
- package/dist/components/overlay/index.tsx +1 -1
- package/dist/components/pagination/Pagination.stories.tsx +7 -0
- package/dist/components/radio/Radio.stories.tsx +7 -0
- package/dist/components/scroll-area/index.tsx +18 -5
- package/dist/components/select/Select.stories.tsx +7 -0
- package/dist/components/sheet/index.tsx +5 -2
- package/dist/components/stepper/Stepper.stories.tsx +7 -0
- package/dist/components/switch/Switch.stories.tsx +7 -0
- package/dist/components/switch-case/SwitchCase.stories.tsx +7 -0
- package/dist/components/tag/Tag.stories.tsx +7 -0
- package/dist/components/textarea/TextArea.stories.tsx +7 -0
- package/dist/components/textarea/index.tsx +2 -0
- package/dist/components/toast/Toast.stories.tsx +7 -0
- package/dist/components/typography/Typography.stories.tsx +7 -0
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +1101 -0
- package/dist/icons/ai-avatar-icon/index.tsx +36 -0
- package/dist/icons/ai-avatar-icon/meta.ts +8 -0
- package/dist/icons/all-icons.tsx +155 -79
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +1013 -0
- package/dist/icons/arrow-corner-up-left-icon/index.tsx +24 -0
- package/dist/icons/arrow-corner-up-left-icon/meta.ts +8 -0
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +1056 -0
- package/dist/icons/arrow-corner-up-right-icon/index.tsx +24 -0
- package/dist/icons/arrow-corner-up-right-icon/meta.ts +8 -0
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +992 -0
- package/dist/icons/capital-a-letter-icon/index.tsx +32 -0
- package/dist/icons/capital-a-letter-icon/meta.ts +8 -0
- package/dist/icons/head-icon/HeadIcon.stories.tsx +981 -0
- package/dist/icons/head-icon/index.tsx +26 -0
- package/dist/icons/head-icon/meta.ts +8 -0
- package/dist/icons/index.ts +40 -25
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +1027 -0
- package/dist/icons/layout-column-icon/index.tsx +23 -0
- package/dist/icons/layout-column-icon/meta.ts +8 -0
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +1007 -0
- package/dist/icons/layout-left-icon/index.tsx +26 -0
- package/dist/icons/layout-left-icon/meta.ts +8 -0
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +1001 -0
- package/dist/icons/layout-right-icon/index.tsx +26 -0
- package/dist/icons/layout-right-icon/meta.ts +8 -0
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +1032 -0
- package/dist/icons/musical-note-icon/index.tsx +25 -0
- package/dist/icons/musical-note-icon/meta.ts +8 -0
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +1010 -0
- package/dist/icons/paint-roll-icon/index.tsx +24 -0
- package/dist/icons/paint-roll-icon/meta.ts +8 -0
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +1024 -0
- package/dist/icons/setting-icon/index.tsx +30 -0
- package/dist/icons/setting-icon/meta.ts +8 -0
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +1018 -0
- package/dist/icons/sparkles-soft-icon/index.tsx +29 -0
- package/dist/icons/sparkles-soft-icon/meta.ts +8 -0
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +1006 -0
- package/dist/icons/text-color-icon/index.tsx +35 -0
- package/dist/icons/text-color-icon/meta.ts +8 -0
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +1039 -0
- package/dist/icons/text-indicator-icon/index.tsx +24 -0
- package/dist/icons/text-indicator-icon/meta.ts +8 -0
- package/dist/index.js +124 -99
- package/package.json +1 -1
|
@@ -0,0 +1,1018 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
|
|
4
|
+
import { SparklesSoftIcon } from "."
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof SparklesSoftIcon> = {
|
|
7
|
+
title: "Icons/SparklesSoftIcon",
|
|
8
|
+
component: SparklesSoftIcon,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: "fullscreen",
|
|
11
|
+
backgrounds: {
|
|
12
|
+
default: "dark",
|
|
13
|
+
values: [
|
|
14
|
+
{ name: "dark", value: "#0a0a0a" },
|
|
15
|
+
{ name: "darker", value: "#000000" },
|
|
16
|
+
{ name: "light", value: "#ffffff" },
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
docs: {
|
|
20
|
+
page: () => (
|
|
21
|
+
<>
|
|
22
|
+
{/* Override default docs styling */}
|
|
23
|
+
<style>
|
|
24
|
+
{`
|
|
25
|
+
.sbdocs-wrapper {
|
|
26
|
+
padding: 0 ;
|
|
27
|
+
max-width: none ;
|
|
28
|
+
background: transparent ;
|
|
29
|
+
}
|
|
30
|
+
.sbdocs-content {
|
|
31
|
+
max-width: none ;
|
|
32
|
+
padding: 0 ;
|
|
33
|
+
margin: 0 ;
|
|
34
|
+
background: transparent ;
|
|
35
|
+
}
|
|
36
|
+
.docs-story {
|
|
37
|
+
background: transparent ;
|
|
38
|
+
}
|
|
39
|
+
.sbdocs {
|
|
40
|
+
background: transparent ;
|
|
41
|
+
}
|
|
42
|
+
body {
|
|
43
|
+
background: #0a0a0a ;
|
|
44
|
+
}
|
|
45
|
+
#storybook-docs {
|
|
46
|
+
background: #0a0a0a ;
|
|
47
|
+
}
|
|
48
|
+
.sbdocs-preview {
|
|
49
|
+
background: transparent ;
|
|
50
|
+
border: none ;
|
|
51
|
+
}
|
|
52
|
+
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
+
color: white ;
|
|
54
|
+
}
|
|
55
|
+
.sbdocs-p, .sbdocs-li {
|
|
56
|
+
color: rgba(255, 255, 255, 0.7) ;
|
|
57
|
+
}
|
|
58
|
+
.sbdocs-code {
|
|
59
|
+
background: rgba(255, 255, 255, 0.1) ;
|
|
60
|
+
color: rgba(168, 85, 247, 1) ;
|
|
61
|
+
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
62
|
+
}
|
|
63
|
+
.sbdocs-pre {
|
|
64
|
+
background: rgba(0, 0, 0, 0.4) ;
|
|
65
|
+
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
66
|
+
}
|
|
67
|
+
.sbdocs-table {
|
|
68
|
+
background: rgba(255, 255, 255, 0.05) ;
|
|
69
|
+
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
70
|
+
}
|
|
71
|
+
.sbdocs-table th {
|
|
72
|
+
background: rgba(255, 255, 255, 0.05) ;
|
|
73
|
+
color: white ;
|
|
74
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
75
|
+
}
|
|
76
|
+
.sbdocs-table td {
|
|
77
|
+
color: rgba(255, 255, 255, 0.7) ;
|
|
78
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.05) ;
|
|
79
|
+
}
|
|
80
|
+
`}
|
|
81
|
+
</style>
|
|
82
|
+
|
|
83
|
+
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900/20 to-gray-900">
|
|
84
|
+
{/* Header */}
|
|
85
|
+
<div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
|
|
86
|
+
<div className="absolute inset-0 bg-gradient-to-r from-yellow-500/10 via-transparent to-purple-500/10" />
|
|
87
|
+
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
|
+
<div className="!space-y-6 text-center">
|
|
89
|
+
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-yellow-500/30 bg-gradient-to-br from-yellow-500/20 to-purple-500/20">
|
|
90
|
+
<SparklesSoftIcon className="h-12 w-12 text-yellow-400" />
|
|
91
|
+
</div>
|
|
92
|
+
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
|
+
SparklesSoftIcon
|
|
94
|
+
</h1>
|
|
95
|
+
<p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
|
|
96
|
+
A magical sparkles icon perfect for AI features, premium
|
|
97
|
+
content, special effects, and celebratory moments. Built
|
|
98
|
+
with accessibility in mind using Radix UI's AccessibleIcon
|
|
99
|
+
wrapper.
|
|
100
|
+
</p>
|
|
101
|
+
|
|
102
|
+
{/* Stats */}
|
|
103
|
+
<div className="flex items-center justify-center gap-8 pt-8">
|
|
104
|
+
<div className="text-center">
|
|
105
|
+
<div className="text-3xl font-bold text-yellow-300">
|
|
106
|
+
Accessible
|
|
107
|
+
</div>
|
|
108
|
+
<div className="text-sm text-white/60">
|
|
109
|
+
Screen reader friendly
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
<div className="h-8 w-px bg-white/20" />
|
|
113
|
+
<div className="text-center">
|
|
114
|
+
<div className="text-3xl font-bold text-purple-300">
|
|
115
|
+
Scalable
|
|
116
|
+
</div>
|
|
117
|
+
<div className="text-sm text-white/60">
|
|
118
|
+
Any size needed
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
<div className="h-8 w-px bg-white/20" />
|
|
122
|
+
<div className="text-center">
|
|
123
|
+
<div className="text-3xl font-bold text-pink-300">
|
|
124
|
+
Magical
|
|
125
|
+
</div>
|
|
126
|
+
<div className="text-sm text-white/60">Premium feel</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
{/* Content */}
|
|
134
|
+
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
135
|
+
{/* Quick Usage */}
|
|
136
|
+
<div className="!space-y-8">
|
|
137
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
138
|
+
Quick Start
|
|
139
|
+
</h2>
|
|
140
|
+
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
141
|
+
<div className="!space-y-4">
|
|
142
|
+
<h3 className="text-xl font-semibold !text-yellow-300">
|
|
143
|
+
Basic Usage
|
|
144
|
+
</h3>
|
|
145
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
146
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
147
|
+
{`import { SparklesSoftIcon } from "@icons/sparkles-soft-icon"
|
|
148
|
+
|
|
149
|
+
function MyComponent() {
|
|
150
|
+
return (
|
|
151
|
+
<div className="flex items-center gap-2">
|
|
152
|
+
<SparklesSoftIcon className="h-5 w-5 text-yellow-500" />
|
|
153
|
+
<span>AI Enhanced</span>
|
|
154
|
+
</div>
|
|
155
|
+
)
|
|
156
|
+
}`}
|
|
157
|
+
</pre>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
<div className="!space-y-4">
|
|
162
|
+
<h3 className="text-xl font-semibold !text-yellow-300">
|
|
163
|
+
Live Preview
|
|
164
|
+
</h3>
|
|
165
|
+
<div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
|
|
166
|
+
<div className="flex items-center gap-3 rounded-lg border border-yellow-500/20 bg-yellow-500/10 px-4 py-2">
|
|
167
|
+
<SparklesSoftIcon className="h-5 w-5 text-yellow-400" />
|
|
168
|
+
<span className="text-white">AI Enhanced</span>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
{/* Props Documentation */}
|
|
176
|
+
<div className="!space-y-8">
|
|
177
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
178
|
+
Props & Configuration
|
|
179
|
+
</h2>
|
|
180
|
+
|
|
181
|
+
<div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
|
|
182
|
+
<div className="bg-white/5 p-4">
|
|
183
|
+
<h3 className="text-xl font-semibold !text-white">Props</h3>
|
|
184
|
+
</div>
|
|
185
|
+
<table className="!my-0 w-full">
|
|
186
|
+
<thead className="bg-white/5">
|
|
187
|
+
<tr className="border-b border-white/10">
|
|
188
|
+
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
189
|
+
Prop
|
|
190
|
+
</th>
|
|
191
|
+
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
192
|
+
Type
|
|
193
|
+
</th>
|
|
194
|
+
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
195
|
+
Default
|
|
196
|
+
</th>
|
|
197
|
+
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
198
|
+
Description
|
|
199
|
+
</th>
|
|
200
|
+
</tr>
|
|
201
|
+
</thead>
|
|
202
|
+
<tbody>
|
|
203
|
+
<tr className="border-b border-white/5">
|
|
204
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
205
|
+
width
|
|
206
|
+
</td>
|
|
207
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
208
|
+
number | string
|
|
209
|
+
</td>
|
|
210
|
+
<td className="px-6 py-4 text-sm !text-white/50">20</td>
|
|
211
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
212
|
+
Width of the icon in pixels
|
|
213
|
+
</td>
|
|
214
|
+
</tr>
|
|
215
|
+
<tr className="border-b border-white/5 !bg-black/10">
|
|
216
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
217
|
+
height
|
|
218
|
+
</td>
|
|
219
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
220
|
+
number | string
|
|
221
|
+
</td>
|
|
222
|
+
<td className="px-6 py-4 text-sm !text-white/50">20</td>
|
|
223
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
224
|
+
Height of the icon in pixels
|
|
225
|
+
</td>
|
|
226
|
+
</tr>
|
|
227
|
+
<tr className="border-b border-white/5">
|
|
228
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
229
|
+
stroke
|
|
230
|
+
</td>
|
|
231
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
232
|
+
string
|
|
233
|
+
</td>
|
|
234
|
+
<td className="px-6 py-4 text-sm !text-white/50">
|
|
235
|
+
currentColor
|
|
236
|
+
</td>
|
|
237
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
238
|
+
Stroke color of the icon
|
|
239
|
+
</td>
|
|
240
|
+
</tr>
|
|
241
|
+
<tr className="border-b border-white/5 !bg-black/10">
|
|
242
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
243
|
+
strokeWidth
|
|
244
|
+
</td>
|
|
245
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
246
|
+
number | string
|
|
247
|
+
</td>
|
|
248
|
+
<td className="px-6 py-4 text-sm !text-white/50">
|
|
249
|
+
1.5
|
|
250
|
+
</td>
|
|
251
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
252
|
+
Stroke width of the icon
|
|
253
|
+
</td>
|
|
254
|
+
</tr>
|
|
255
|
+
<tr className="border-b border-white/5">
|
|
256
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
257
|
+
fill
|
|
258
|
+
</td>
|
|
259
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
260
|
+
string
|
|
261
|
+
</td>
|
|
262
|
+
<td className="px-6 py-4 text-sm !text-white/50">
|
|
263
|
+
currentColor
|
|
264
|
+
</td>
|
|
265
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
266
|
+
Fill color for small sparkle
|
|
267
|
+
</td>
|
|
268
|
+
</tr>
|
|
269
|
+
<tr className="border-b border-white/5 !bg-black/10">
|
|
270
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
271
|
+
className
|
|
272
|
+
</td>
|
|
273
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
274
|
+
string
|
|
275
|
+
</td>
|
|
276
|
+
<td className="px-6 py-4 text-sm !text-white/50">-</td>
|
|
277
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
278
|
+
CSS classes for styling
|
|
279
|
+
</td>
|
|
280
|
+
</tr>
|
|
281
|
+
<tr className="!bg-black/10">
|
|
282
|
+
<td className="px-6 py-4 font-mono text-sm !text-yellow-300">
|
|
283
|
+
...svgProps
|
|
284
|
+
</td>
|
|
285
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
286
|
+
SVGProps
|
|
287
|
+
</td>
|
|
288
|
+
<td className="px-6 py-4 text-sm !text-white/50">-</td>
|
|
289
|
+
<td className="px-6 py-4 text-sm !text-white/70">
|
|
290
|
+
All standard SVG element props
|
|
291
|
+
</td>
|
|
292
|
+
</tr>
|
|
293
|
+
</tbody>
|
|
294
|
+
</table>
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
|
|
298
|
+
{/* Size Variations */}
|
|
299
|
+
<div className="!space-y-8">
|
|
300
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
301
|
+
Size Variations
|
|
302
|
+
</h2>
|
|
303
|
+
<div className="rounded-lg border border-white/10 bg-white/5 p-8">
|
|
304
|
+
<div className="!space-y-6">
|
|
305
|
+
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
306
|
+
<div className="!space-y-4">
|
|
307
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
308
|
+
Standard Sizes
|
|
309
|
+
</h3>
|
|
310
|
+
<div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
|
|
311
|
+
<div className="text-center">
|
|
312
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-3 w-3 text-yellow-400" />
|
|
313
|
+
<span className="text-xs text-white/60">12px</span>
|
|
314
|
+
</div>
|
|
315
|
+
<div className="text-center">
|
|
316
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-4 w-4 text-yellow-400" />
|
|
317
|
+
<span className="text-xs text-white/60">16px</span>
|
|
318
|
+
</div>
|
|
319
|
+
<div className="text-center">
|
|
320
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-5 w-5 text-yellow-400" />
|
|
321
|
+
<span className="text-xs text-white/60">20px</span>
|
|
322
|
+
</div>
|
|
323
|
+
<div className="text-center">
|
|
324
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-6 w-6 text-yellow-400" />
|
|
325
|
+
<span className="text-xs text-white/60">24px</span>
|
|
326
|
+
</div>
|
|
327
|
+
<div className="text-center">
|
|
328
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-8 w-8 text-yellow-400" />
|
|
329
|
+
<span className="text-xs text-white/60">32px</span>
|
|
330
|
+
</div>
|
|
331
|
+
<div className="text-center">
|
|
332
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-12 w-12 text-yellow-400" />
|
|
333
|
+
<span className="text-xs text-white/60">48px</span>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
<div className="!space-y-4">
|
|
339
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
340
|
+
Code Example
|
|
341
|
+
</h3>
|
|
342
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
343
|
+
<pre className="overflow-x-auto text-sm !text-blue-300">
|
|
344
|
+
{`// Small (16px)
|
|
345
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
346
|
+
|
|
347
|
+
// Medium (24px)
|
|
348
|
+
<SparklesSoftIcon className="h-6 w-6" />
|
|
349
|
+
|
|
350
|
+
// Large (32px)
|
|
351
|
+
<SparklesSoftIcon className="h-8 w-8" />
|
|
352
|
+
|
|
353
|
+
// Custom size
|
|
354
|
+
<SparklesSoftIcon width={40} height={40} />`}
|
|
355
|
+
</pre>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
|
|
363
|
+
{/* Color Variations */}
|
|
364
|
+
<div className="!space-y-8">
|
|
365
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
366
|
+
Color Variations
|
|
367
|
+
</h2>
|
|
368
|
+
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
369
|
+
<div className="!space-y-4">
|
|
370
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
371
|
+
Premium & AI Colors
|
|
372
|
+
</h3>
|
|
373
|
+
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
374
|
+
<div className="flex items-center gap-4">
|
|
375
|
+
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
376
|
+
<div>
|
|
377
|
+
<div className="text-sm font-medium text-white">
|
|
378
|
+
Premium Gold
|
|
379
|
+
</div>
|
|
380
|
+
<div className="text-xs text-white/60">
|
|
381
|
+
text-yellow-400
|
|
382
|
+
</div>
|
|
383
|
+
</div>
|
|
384
|
+
</div>
|
|
385
|
+
<div className="flex items-center gap-4">
|
|
386
|
+
<SparklesSoftIcon className="h-6 w-6 text-purple-400" />
|
|
387
|
+
<div>
|
|
388
|
+
<div className="text-sm font-medium text-white">
|
|
389
|
+
AI Magic
|
|
390
|
+
</div>
|
|
391
|
+
<div className="text-xs text-white/60">
|
|
392
|
+
text-purple-400
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
395
|
+
</div>
|
|
396
|
+
<div className="flex items-center gap-4">
|
|
397
|
+
<SparklesSoftIcon className="h-6 w-6 text-pink-400" />
|
|
398
|
+
<div>
|
|
399
|
+
<div className="text-sm font-medium text-white">
|
|
400
|
+
Celebration
|
|
401
|
+
</div>
|
|
402
|
+
<div className="text-xs text-white/60">
|
|
403
|
+
text-pink-400
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
</div>
|
|
407
|
+
<div className="flex items-center gap-4">
|
|
408
|
+
<SparklesSoftIcon className="h-6 w-6 text-blue-400" />
|
|
409
|
+
<div>
|
|
410
|
+
<div className="text-sm font-medium text-white">
|
|
411
|
+
Special
|
|
412
|
+
</div>
|
|
413
|
+
<div className="text-xs text-white/60">
|
|
414
|
+
text-blue-400
|
|
415
|
+
</div>
|
|
416
|
+
</div>
|
|
417
|
+
</div>
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
|
|
421
|
+
<div className="!space-y-4">
|
|
422
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
423
|
+
Custom Colors
|
|
424
|
+
</h3>
|
|
425
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
426
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
427
|
+
{`// Using Tailwind classes
|
|
428
|
+
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
429
|
+
<SparklesSoftIcon className="h-6 w-6 text-purple-500" />
|
|
430
|
+
|
|
431
|
+
// Using CSS custom properties
|
|
432
|
+
<SparklesSoftIcon
|
|
433
|
+
className="h-6 w-6"
|
|
434
|
+
style={{ color: 'var(--color-premium)' }}
|
|
435
|
+
/>
|
|
436
|
+
|
|
437
|
+
// Direct stroke and fill props
|
|
438
|
+
<SparklesSoftIcon
|
|
439
|
+
width={24}
|
|
440
|
+
height={24}
|
|
441
|
+
stroke="#fbbf24"
|
|
442
|
+
fill="#fbbf24"
|
|
443
|
+
/>`}
|
|
444
|
+
</pre>
|
|
445
|
+
</div>
|
|
446
|
+
</div>
|
|
447
|
+
</div>
|
|
448
|
+
</div>
|
|
449
|
+
|
|
450
|
+
{/* Usage Examples */}
|
|
451
|
+
<div className="!space-y-8">
|
|
452
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
453
|
+
Usage Examples
|
|
454
|
+
</h2>
|
|
455
|
+
|
|
456
|
+
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
457
|
+
{/* AI Feature Badge */}
|
|
458
|
+
<div className="!space-y-4">
|
|
459
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
460
|
+
AI Feature Badge
|
|
461
|
+
</h3>
|
|
462
|
+
<div className="!space-y-4">
|
|
463
|
+
<div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-4">
|
|
464
|
+
<div className="flex items-center gap-3">
|
|
465
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-purple-500/20">
|
|
466
|
+
<SparklesSoftIcon className="h-4 w-4 text-purple-400" />
|
|
467
|
+
</div>
|
|
468
|
+
<div>
|
|
469
|
+
<h4 className="font-medium !text-purple-200">
|
|
470
|
+
AI Enhanced
|
|
471
|
+
</h4>
|
|
472
|
+
<p className="text-sm !text-purple-300/80">
|
|
473
|
+
This feature is powered by artificial intelligence
|
|
474
|
+
</p>
|
|
475
|
+
</div>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
479
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
480
|
+
{`<div className="border border-purple-500/20 bg-purple-500/10 p-4 rounded-lg">
|
|
481
|
+
<div className="flex items-center gap-3">
|
|
482
|
+
<div className="h-8 w-8 bg-purple-500/20 rounded-full flex items-center justify-center">
|
|
483
|
+
<SparklesSoftIcon className="h-4 w-4 text-purple-400" />
|
|
484
|
+
</div>
|
|
485
|
+
<div>
|
|
486
|
+
<h4 className="font-medium text-purple-200">AI Enhanced</h4>
|
|
487
|
+
<p className="text-sm text-purple-300/80">
|
|
488
|
+
This feature is powered by artificial intelligence
|
|
489
|
+
</p>
|
|
490
|
+
</div>
|
|
491
|
+
</div>
|
|
492
|
+
</div>`}
|
|
493
|
+
</pre>
|
|
494
|
+
</div>
|
|
495
|
+
</div>
|
|
496
|
+
</div>
|
|
497
|
+
|
|
498
|
+
{/* Premium Feature */}
|
|
499
|
+
<div className="!space-y-4">
|
|
500
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
501
|
+
Premium Feature
|
|
502
|
+
</h3>
|
|
503
|
+
<div className="!space-y-4">
|
|
504
|
+
<div className="rounded-lg border border-yellow-500/20 bg-gradient-to-r from-yellow-500/10 to-orange-500/10 p-4">
|
|
505
|
+
<div className="flex items-center justify-between">
|
|
506
|
+
<div className="flex items-center gap-2">
|
|
507
|
+
<SparklesSoftIcon className="h-5 w-5 text-yellow-400" />
|
|
508
|
+
<span className="font-medium text-white">
|
|
509
|
+
Pro Feature
|
|
510
|
+
</span>
|
|
511
|
+
</div>
|
|
512
|
+
<button className="rounded-full bg-gradient-to-r from-yellow-400 to-orange-400 px-3 py-1 text-sm font-medium text-black">
|
|
513
|
+
Upgrade
|
|
514
|
+
</button>
|
|
515
|
+
</div>
|
|
516
|
+
</div>
|
|
517
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
518
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
519
|
+
{`<div className="border border-yellow-500/20 bg-gradient-to-r from-yellow-500/10 to-orange-500/10 p-4 rounded-lg">
|
|
520
|
+
<div className="flex items-center justify-between">
|
|
521
|
+
<div className="flex items-center gap-2">
|
|
522
|
+
<SparklesSoftIcon className="h-5 w-5 text-yellow-400" />
|
|
523
|
+
<span className="font-medium text-white">Pro Feature</span>
|
|
524
|
+
</div>
|
|
525
|
+
<button className="bg-gradient-to-r from-yellow-400 to-orange-400 px-3 py-1 rounded-full text-sm font-medium text-black">
|
|
526
|
+
Upgrade
|
|
527
|
+
</button>
|
|
528
|
+
</div>
|
|
529
|
+
</div>`}
|
|
530
|
+
</pre>
|
|
531
|
+
</div>
|
|
532
|
+
</div>
|
|
533
|
+
</div>
|
|
534
|
+
|
|
535
|
+
{/* Button Integration */}
|
|
536
|
+
<div className="!space-y-4">
|
|
537
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
538
|
+
Button Integration
|
|
539
|
+
</h3>
|
|
540
|
+
<div className="!space-y-4">
|
|
541
|
+
<div className="flex gap-4">
|
|
542
|
+
<button className="flex items-center gap-2 rounded-lg border border-purple-500/30 bg-purple-500/20 px-4 py-2 text-purple-200 transition-colors hover:bg-purple-500/30">
|
|
543
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
544
|
+
Generate with AI
|
|
545
|
+
</button>
|
|
546
|
+
<button className="flex items-center gap-2 rounded-lg bg-gradient-to-r from-yellow-400 to-orange-400 px-4 py-2 text-black transition-all hover:from-yellow-500 hover:to-orange-500">
|
|
547
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
548
|
+
Upgrade to Pro
|
|
549
|
+
</button>
|
|
550
|
+
</div>
|
|
551
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
552
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
553
|
+
{`// AI action button
|
|
554
|
+
<button className="flex items-center gap-2 bg-purple-500/20 border border-purple-500/30 px-4 py-2 rounded-lg">
|
|
555
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
556
|
+
Generate with AI
|
|
557
|
+
</button>
|
|
558
|
+
|
|
559
|
+
// Premium upgrade button
|
|
560
|
+
<button className="flex items-center gap-2 bg-gradient-to-r from-yellow-400 to-orange-400 px-4 py-2 rounded-lg text-black">
|
|
561
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
562
|
+
Upgrade to Pro
|
|
563
|
+
</button>`}
|
|
564
|
+
</pre>
|
|
565
|
+
</div>
|
|
566
|
+
</div>
|
|
567
|
+
</div>
|
|
568
|
+
|
|
569
|
+
{/* Success State */}
|
|
570
|
+
<div className="!space-y-4">
|
|
571
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
572
|
+
Success Celebration
|
|
573
|
+
</h3>
|
|
574
|
+
<div className="!space-y-4">
|
|
575
|
+
<div className="rounded-lg border border-green-500/20 bg-green-500/10 p-4">
|
|
576
|
+
<div className="flex items-center gap-3">
|
|
577
|
+
<div className="relative">
|
|
578
|
+
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
579
|
+
<SparklesSoftIcon className="absolute -top-1 -right-1 h-3 w-3 text-pink-400" />
|
|
580
|
+
</div>
|
|
581
|
+
<div>
|
|
582
|
+
<h4 className="font-medium !text-green-200">
|
|
583
|
+
Congratulations!
|
|
584
|
+
</h4>
|
|
585
|
+
<p className="text-sm !text-green-300/80">
|
|
586
|
+
Your project has been successfully deployed
|
|
587
|
+
</p>
|
|
588
|
+
</div>
|
|
589
|
+
</div>
|
|
590
|
+
</div>
|
|
591
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
592
|
+
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
593
|
+
{`<div className="border border-green-500/20 bg-green-500/10 p-4 rounded-lg">
|
|
594
|
+
<div className="flex items-center gap-3">
|
|
595
|
+
<div className="relative">
|
|
596
|
+
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
597
|
+
<SparklesSoftIcon className="absolute -top-1 -right-1 h-3 w-3 text-pink-400" />
|
|
598
|
+
</div>
|
|
599
|
+
<div>
|
|
600
|
+
<h4 className="font-medium text-green-200">Congratulations!</h4>
|
|
601
|
+
<p className="text-sm text-green-300/80">
|
|
602
|
+
Your project has been successfully deployed
|
|
603
|
+
</p>
|
|
604
|
+
</div>
|
|
605
|
+
</div>
|
|
606
|
+
</div>`}
|
|
607
|
+
</pre>
|
|
608
|
+
</div>
|
|
609
|
+
</div>
|
|
610
|
+
</div>
|
|
611
|
+
</div>
|
|
612
|
+
</div>
|
|
613
|
+
|
|
614
|
+
{/* Accessibility */}
|
|
615
|
+
<div className="!space-y-8">
|
|
616
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
617
|
+
Accessibility Features
|
|
618
|
+
</h2>
|
|
619
|
+
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
620
|
+
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
621
|
+
<h3 className="text-lg font-semibold !text-green-300">
|
|
622
|
+
✅ Built-in Features
|
|
623
|
+
</h3>
|
|
624
|
+
<ul className="!space-y-2 text-sm !text-white/70">
|
|
625
|
+
<li className="!text-white/70">
|
|
626
|
+
Uses Radix UI AccessibleIcon wrapper
|
|
627
|
+
</li>
|
|
628
|
+
<li className="!text-white/70">
|
|
629
|
+
Provides screen reader label "Sparkles Soft Icon"
|
|
630
|
+
</li>
|
|
631
|
+
<li className="!text-white/70">
|
|
632
|
+
Supports keyboard navigation when interactive
|
|
633
|
+
</li>
|
|
634
|
+
<li className="!text-white/70">
|
|
635
|
+
Maintains proper color contrast ratios
|
|
636
|
+
</li>
|
|
637
|
+
<li className="!text-white/70">
|
|
638
|
+
Scales with user's font size preferences
|
|
639
|
+
</li>
|
|
640
|
+
</ul>
|
|
641
|
+
</div>
|
|
642
|
+
|
|
643
|
+
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
644
|
+
<h3 className="text-lg font-semibold !text-yellow-300">
|
|
645
|
+
💡 Best Practices
|
|
646
|
+
</h3>
|
|
647
|
+
<ul className="!space-y-2 text-sm text-white/70">
|
|
648
|
+
<li className="!text-white/70">
|
|
649
|
+
Always pair with descriptive text or labels
|
|
650
|
+
</li>
|
|
651
|
+
<li className="!text-white/70">
|
|
652
|
+
Use consistent colors for premium features
|
|
653
|
+
</li>
|
|
654
|
+
<li className="!text-white/70">
|
|
655
|
+
Ensure sufficient color contrast
|
|
656
|
+
</li>
|
|
657
|
+
<li className="!text-white/70">
|
|
658
|
+
Add focus states for interactive elements
|
|
659
|
+
</li>
|
|
660
|
+
<li className="!text-white/70">
|
|
661
|
+
Consider motion sensitivity for animations
|
|
662
|
+
</li>
|
|
663
|
+
</ul>
|
|
664
|
+
</div>
|
|
665
|
+
</div>
|
|
666
|
+
|
|
667
|
+
<div className="rounded-lg border border-white/10 bg-white/5 p-6">
|
|
668
|
+
<h3 className="mb-4 text-lg font-semibold !text-purple-300">
|
|
669
|
+
Custom Accessibility Label
|
|
670
|
+
</h3>
|
|
671
|
+
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
672
|
+
<div className="rounded-lg bg-black/40 p-4">
|
|
673
|
+
<pre className="overflow-x-auto text-sm !text-blue-300">
|
|
674
|
+
{`// Custom implementation with specific label
|
|
675
|
+
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
676
|
+
|
|
677
|
+
function CustomSparklesIcon({ label = "Sparkles", ...props }) {
|
|
678
|
+
return (
|
|
679
|
+
<AccessibleIcon label={label}>
|
|
680
|
+
<SparklesSoftIcon {...props} />
|
|
681
|
+
</AccessibleIcon>
|
|
682
|
+
)
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
// Usage with specific context
|
|
686
|
+
<CustomSparklesIcon
|
|
687
|
+
label="AI powered feature"
|
|
688
|
+
className="h-4 w-4 text-purple-400"
|
|
689
|
+
/>`}
|
|
690
|
+
</pre>
|
|
691
|
+
</div>
|
|
692
|
+
<div className="!space-y-4">
|
|
693
|
+
<p className="text-sm !text-white/70">
|
|
694
|
+
For specific contexts, you can wrap the SparklesSoftIcon
|
|
695
|
+
with a custom AccessibleIcon component that provides
|
|
696
|
+
more descriptive labels for AI features or premium
|
|
697
|
+
content.
|
|
698
|
+
</p>
|
|
699
|
+
<div className="rounded-lg border border-yellow-500/20 bg-yellow-500/10 p-4">
|
|
700
|
+
<div className="flex items-center gap-2 text-sm text-yellow-200">
|
|
701
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
702
|
+
<span>
|
|
703
|
+
This approach gives screen readers more context
|
|
704
|
+
about premium features
|
|
705
|
+
</span>
|
|
706
|
+
</div>
|
|
707
|
+
</div>
|
|
708
|
+
</div>
|
|
709
|
+
</div>
|
|
710
|
+
</div>
|
|
711
|
+
</div>
|
|
712
|
+
|
|
713
|
+
{/* Related Icons */}
|
|
714
|
+
<div className="!space-y-8">
|
|
715
|
+
<h2 className="text-center text-3xl font-bold !text-white">
|
|
716
|
+
Related Icons
|
|
717
|
+
</h2>
|
|
718
|
+
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
719
|
+
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
720
|
+
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
|
|
721
|
+
<span className="text-2xl">🤖</span>
|
|
722
|
+
</div>
|
|
723
|
+
<div>
|
|
724
|
+
<div className="font-medium text-white">AIIcon</div>
|
|
725
|
+
<div className="text-xs text-white/60">AI features</div>
|
|
726
|
+
</div>
|
|
727
|
+
</div>
|
|
728
|
+
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
729
|
+
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-yellow-500/20">
|
|
730
|
+
<span className="text-2xl">⭐</span>
|
|
731
|
+
</div>
|
|
732
|
+
<div>
|
|
733
|
+
<div className="font-medium text-white">StarIcon</div>
|
|
734
|
+
<div className="text-xs text-white/60">
|
|
735
|
+
Premium content
|
|
736
|
+
</div>
|
|
737
|
+
</div>
|
|
738
|
+
</div>
|
|
739
|
+
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
740
|
+
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-pink-500/20">
|
|
741
|
+
<span className="text-2xl">🎉</span>
|
|
742
|
+
</div>
|
|
743
|
+
<div>
|
|
744
|
+
<div className="font-medium text-white">
|
|
745
|
+
CelebrationIcon
|
|
746
|
+
</div>
|
|
747
|
+
<div className="text-xs text-white/60">
|
|
748
|
+
Success states
|
|
749
|
+
</div>
|
|
750
|
+
</div>
|
|
751
|
+
</div>
|
|
752
|
+
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
753
|
+
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
|
|
754
|
+
<span className="text-2xl">💎</span>
|
|
755
|
+
</div>
|
|
756
|
+
<div>
|
|
757
|
+
<div className="font-medium text-white">PremiumIcon</div>
|
|
758
|
+
<div className="text-xs text-white/60">
|
|
759
|
+
Premium features
|
|
760
|
+
</div>
|
|
761
|
+
</div>
|
|
762
|
+
</div>
|
|
763
|
+
</div>
|
|
764
|
+
</div>
|
|
765
|
+
</div>
|
|
766
|
+
|
|
767
|
+
{/* Footer */}
|
|
768
|
+
<div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
|
|
769
|
+
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
770
|
+
<div className="!space-y-4 text-center">
|
|
771
|
+
<p className="!text-white/60">
|
|
772
|
+
SparklesSoftIcon is part of the Aural UI icon library,
|
|
773
|
+
designed specifically for AI features, premium content, and
|
|
774
|
+
magical user experiences with accessibility in mind.
|
|
775
|
+
</p>
|
|
776
|
+
<p className="text-sm !text-white/40">
|
|
777
|
+
Perfect for AI-powered features, premium upgrades,
|
|
778
|
+
celebration moments, and special effects. Follows WCAG
|
|
779
|
+
guidelines for accessibility and provides clear visual
|
|
780
|
+
hierarchy.
|
|
781
|
+
</p>
|
|
782
|
+
</div>
|
|
783
|
+
</div>
|
|
784
|
+
</div>
|
|
785
|
+
</div>
|
|
786
|
+
</>
|
|
787
|
+
),
|
|
788
|
+
},
|
|
789
|
+
},
|
|
790
|
+
tags: ["autodocs"],
|
|
791
|
+
argTypes: {
|
|
792
|
+
width: {
|
|
793
|
+
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
794
|
+
description: "Width of the icon in pixels",
|
|
795
|
+
},
|
|
796
|
+
height: {
|
|
797
|
+
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
798
|
+
description: "Height of the icon in pixels",
|
|
799
|
+
},
|
|
800
|
+
stroke: {
|
|
801
|
+
control: "color",
|
|
802
|
+
description: "Stroke color of the icon",
|
|
803
|
+
},
|
|
804
|
+
strokeWidth: {
|
|
805
|
+
control: { type: "range", min: 0.5, max: 4, step: 0.5 },
|
|
806
|
+
description: "Stroke width of the icon",
|
|
807
|
+
},
|
|
808
|
+
fill: {
|
|
809
|
+
control: "color",
|
|
810
|
+
description: "Fill color for small sparkle",
|
|
811
|
+
},
|
|
812
|
+
className: {
|
|
813
|
+
control: "text",
|
|
814
|
+
description: "CSS classes for styling",
|
|
815
|
+
},
|
|
816
|
+
},
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
export default meta
|
|
820
|
+
type Story = StoryObj<typeof SparklesSoftIcon>
|
|
821
|
+
|
|
822
|
+
// Story parameters for consistent dark theme
|
|
823
|
+
const storyParameters = {
|
|
824
|
+
backgrounds: {
|
|
825
|
+
default: "dark",
|
|
826
|
+
values: [
|
|
827
|
+
{ name: "dark", value: "#0a0a0a" },
|
|
828
|
+
{ name: "darker", value: "#000000" },
|
|
829
|
+
],
|
|
830
|
+
},
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
export const Default: Story = {
|
|
834
|
+
args: {
|
|
835
|
+
width: 24,
|
|
836
|
+
height: 24,
|
|
837
|
+
className: "text-yellow-400",
|
|
838
|
+
},
|
|
839
|
+
parameters: storyParameters,
|
|
840
|
+
render: (args) => (
|
|
841
|
+
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
|
|
842
|
+
<SparklesSoftIcon {...args} />
|
|
843
|
+
</div>
|
|
844
|
+
),
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
export const SizeVariations: Story = {
|
|
848
|
+
parameters: {
|
|
849
|
+
...storyParameters,
|
|
850
|
+
docs: {
|
|
851
|
+
description: {
|
|
852
|
+
story:
|
|
853
|
+
"SparklesSoftIcon in different sizes, from small UI elements to large premium displays.",
|
|
854
|
+
},
|
|
855
|
+
},
|
|
856
|
+
},
|
|
857
|
+
render: () => (
|
|
858
|
+
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
|
|
859
|
+
<div className="text-center">
|
|
860
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-3 w-3 text-yellow-400" />
|
|
861
|
+
<span className="text-xs text-white/60">12px</span>
|
|
862
|
+
</div>
|
|
863
|
+
<div className="text-center">
|
|
864
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-4 w-4 text-yellow-400" />
|
|
865
|
+
<span className="text-xs text-white/60">16px</span>
|
|
866
|
+
</div>
|
|
867
|
+
<div className="text-center">
|
|
868
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-5 w-5 text-yellow-400" />
|
|
869
|
+
<span className="text-xs text-white/60">20px</span>
|
|
870
|
+
</div>
|
|
871
|
+
<div className="text-center">
|
|
872
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-6 w-6 text-yellow-400" />
|
|
873
|
+
<span className="text-xs text-white/60">24px</span>
|
|
874
|
+
</div>
|
|
875
|
+
<div className="text-center">
|
|
876
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-8 w-8 text-yellow-400" />
|
|
877
|
+
<span className="text-xs text-white/60">32px</span>
|
|
878
|
+
</div>
|
|
879
|
+
<div className="text-center">
|
|
880
|
+
<SparklesSoftIcon className="!mx-auto mb-2 h-12 w-12 text-yellow-400" />
|
|
881
|
+
<span className="text-xs text-white/60">48px</span>
|
|
882
|
+
</div>
|
|
883
|
+
</div>
|
|
884
|
+
),
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
export const ColorVariations: Story = {
|
|
888
|
+
parameters: {
|
|
889
|
+
...storyParameters,
|
|
890
|
+
docs: {
|
|
891
|
+
description: {
|
|
892
|
+
story:
|
|
893
|
+
"SparklesSoftIcon in different colors suitable for AI features, premium content, and celebrations.",
|
|
894
|
+
},
|
|
895
|
+
},
|
|
896
|
+
},
|
|
897
|
+
render: () => (
|
|
898
|
+
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8 md:grid-cols-4">
|
|
899
|
+
<div className="text-center">
|
|
900
|
+
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-yellow-500/30 bg-yellow-500/20">
|
|
901
|
+
<SparklesSoftIcon className="h-8 w-8 text-yellow-400" />
|
|
902
|
+
</div>
|
|
903
|
+
<div className="text-sm font-medium text-white">Premium Gold</div>
|
|
904
|
+
<div className="text-xs text-yellow-400">text-yellow-400</div>
|
|
905
|
+
</div>
|
|
906
|
+
<div className="text-center">
|
|
907
|
+
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-purple-500/30 bg-purple-500/20">
|
|
908
|
+
<SparklesSoftIcon className="h-8 w-8 text-purple-400" />
|
|
909
|
+
</div>
|
|
910
|
+
<div className="text-sm font-medium text-white">AI Magic</div>
|
|
911
|
+
<div className="text-xs text-purple-400">text-purple-400</div>
|
|
912
|
+
</div>
|
|
913
|
+
<div className="text-center">
|
|
914
|
+
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-pink-500/30 bg-pink-500/20">
|
|
915
|
+
<SparklesSoftIcon className="h-8 w-8 text-pink-400" />
|
|
916
|
+
</div>
|
|
917
|
+
<div className="text-sm font-medium text-white">Celebration</div>
|
|
918
|
+
<div className="text-xs text-pink-400">text-pink-400</div>
|
|
919
|
+
</div>
|
|
920
|
+
<div className="text-center">
|
|
921
|
+
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-blue-500/30 bg-blue-500/20">
|
|
922
|
+
<SparklesSoftIcon className="h-8 w-8 text-blue-400" />
|
|
923
|
+
</div>
|
|
924
|
+
<div className="text-sm font-medium text-white">Special</div>
|
|
925
|
+
<div className="text-xs text-blue-400">text-blue-400</div>
|
|
926
|
+
</div>
|
|
927
|
+
</div>
|
|
928
|
+
),
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
export const UsageExamples: Story = {
|
|
932
|
+
parameters: {
|
|
933
|
+
...storyParameters,
|
|
934
|
+
docs: {
|
|
935
|
+
description: {
|
|
936
|
+
story:
|
|
937
|
+
"Real-world usage examples showing SparklesSoftIcon in different AI and premium contexts.",
|
|
938
|
+
},
|
|
939
|
+
},
|
|
940
|
+
},
|
|
941
|
+
render: () => (
|
|
942
|
+
<div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
|
|
943
|
+
{/* AI Feature Badge */}
|
|
944
|
+
<div className="!space-y-2">
|
|
945
|
+
<h3 className="text-sm font-medium text-white">AI Feature Badge</h3>
|
|
946
|
+
<div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-4">
|
|
947
|
+
<div className="flex items-center gap-3">
|
|
948
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-purple-500/20">
|
|
949
|
+
<SparklesSoftIcon className="h-4 w-4 text-purple-400" />
|
|
950
|
+
</div>
|
|
951
|
+
<div>
|
|
952
|
+
<h4 className="font-medium text-purple-200">AI Enhanced</h4>
|
|
953
|
+
<p className="text-sm text-purple-300/80">
|
|
954
|
+
This feature is powered by artificial intelligence
|
|
955
|
+
</p>
|
|
956
|
+
</div>
|
|
957
|
+
</div>
|
|
958
|
+
</div>
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
{/* Premium Feature */}
|
|
962
|
+
<div className="!space-y-2">
|
|
963
|
+
<h3 className="text-sm font-medium text-white">Premium Feature</h3>
|
|
964
|
+
<div className="rounded-lg border border-yellow-500/20 bg-gradient-to-r from-yellow-500/10 to-orange-500/10 p-4">
|
|
965
|
+
<div className="flex items-center justify-between">
|
|
966
|
+
<div className="flex items-center gap-2">
|
|
967
|
+
<SparklesSoftIcon className="h-5 w-5 text-yellow-400" />
|
|
968
|
+
<span className="font-medium text-white">Pro Feature</span>
|
|
969
|
+
</div>
|
|
970
|
+
<button className="rounded-full bg-gradient-to-r from-yellow-400 to-orange-400 px-3 py-1 text-sm font-medium text-black">
|
|
971
|
+
Upgrade
|
|
972
|
+
</button>
|
|
973
|
+
</div>
|
|
974
|
+
</div>
|
|
975
|
+
</div>
|
|
976
|
+
|
|
977
|
+
{/* Button Integration */}
|
|
978
|
+
<div className="!space-y-2">
|
|
979
|
+
<h3 className="text-sm font-medium text-white">Button Integration</h3>
|
|
980
|
+
<div className="flex gap-4">
|
|
981
|
+
<button className="flex items-center gap-2 rounded-lg border border-purple-500/30 bg-purple-500/20 px-4 py-2 text-purple-200 transition-colors hover:bg-purple-500/30">
|
|
982
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
983
|
+
Generate with AI
|
|
984
|
+
</button>
|
|
985
|
+
<button className="flex items-center gap-2 rounded-lg bg-gradient-to-r from-yellow-400 to-orange-400 px-4 py-2 text-black transition-all hover:from-yellow-500 hover:to-orange-500">
|
|
986
|
+
<SparklesSoftIcon className="h-4 w-4" />
|
|
987
|
+
Upgrade to Pro
|
|
988
|
+
</button>
|
|
989
|
+
</div>
|
|
990
|
+
</div>
|
|
991
|
+
</div>
|
|
992
|
+
),
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
export const Playground: Story = {
|
|
996
|
+
parameters: {
|
|
997
|
+
...storyParameters,
|
|
998
|
+
docs: {
|
|
999
|
+
description: {
|
|
1000
|
+
story:
|
|
1001
|
+
"Interactive playground to experiment with different SparklesSoftIcon configurations.",
|
|
1002
|
+
},
|
|
1003
|
+
},
|
|
1004
|
+
},
|
|
1005
|
+
args: {
|
|
1006
|
+
width: 32,
|
|
1007
|
+
height: 32,
|
|
1008
|
+
className: "text-yellow-400",
|
|
1009
|
+
strokeWidth: 1.5,
|
|
1010
|
+
},
|
|
1011
|
+
render: (args) => (
|
|
1012
|
+
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
|
|
1013
|
+
<div className="rounded-lg border border-white/10 bg-white/5 p-8">
|
|
1014
|
+
<SparklesSoftIcon {...args} />
|
|
1015
|
+
</div>
|
|
1016
|
+
</div>
|
|
1017
|
+
),
|
|
1018
|
+
}
|