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.
Files changed (74) hide show
  1. package/dist/components/badge/Badge.stories.tsx +7 -0
  2. package/dist/components/banner/Banner.stories.tsx +7 -0
  3. package/dist/components/button/Button.stories.tsx +7 -0
  4. package/dist/components/char-count/CharCount.stories.tsx +7 -0
  5. package/dist/components/checkbox/Checkbox.stories.tsx +7 -0
  6. package/dist/components/chip/Chip.stories.tsx +10 -0
  7. package/dist/components/collapsible/Collapsible.stories.tsx +7 -0
  8. package/dist/components/dropdown/index.tsx +18 -7
  9. package/dist/components/form/Form.stories.tsx +7 -0
  10. package/dist/components/helper-text/HelperText.stories.tsx +7 -0
  11. package/dist/components/icon-button/IconButton.stories.tsx +4 -0
  12. package/dist/components/if-else/if-else.stories.tsx +7 -0
  13. package/dist/components/input/Input.stories.tsx +7 -0
  14. package/dist/components/label/Label.stories.tsx +7 -0
  15. package/dist/components/overlay/index.tsx +1 -1
  16. package/dist/components/pagination/Pagination.stories.tsx +7 -0
  17. package/dist/components/radio/Radio.stories.tsx +7 -0
  18. package/dist/components/scroll-area/index.tsx +18 -5
  19. package/dist/components/select/Select.stories.tsx +7 -0
  20. package/dist/components/sheet/index.tsx +5 -2
  21. package/dist/components/stepper/Stepper.stories.tsx +7 -0
  22. package/dist/components/switch/Switch.stories.tsx +7 -0
  23. package/dist/components/switch-case/SwitchCase.stories.tsx +7 -0
  24. package/dist/components/tag/Tag.stories.tsx +7 -0
  25. package/dist/components/textarea/TextArea.stories.tsx +7 -0
  26. package/dist/components/textarea/index.tsx +2 -0
  27. package/dist/components/toast/Toast.stories.tsx +7 -0
  28. package/dist/components/typography/Typography.stories.tsx +7 -0
  29. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +1101 -0
  30. package/dist/icons/ai-avatar-icon/index.tsx +36 -0
  31. package/dist/icons/ai-avatar-icon/meta.ts +8 -0
  32. package/dist/icons/all-icons.tsx +155 -79
  33. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +1013 -0
  34. package/dist/icons/arrow-corner-up-left-icon/index.tsx +24 -0
  35. package/dist/icons/arrow-corner-up-left-icon/meta.ts +8 -0
  36. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +1056 -0
  37. package/dist/icons/arrow-corner-up-right-icon/index.tsx +24 -0
  38. package/dist/icons/arrow-corner-up-right-icon/meta.ts +8 -0
  39. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +992 -0
  40. package/dist/icons/capital-a-letter-icon/index.tsx +32 -0
  41. package/dist/icons/capital-a-letter-icon/meta.ts +8 -0
  42. package/dist/icons/head-icon/HeadIcon.stories.tsx +981 -0
  43. package/dist/icons/head-icon/index.tsx +26 -0
  44. package/dist/icons/head-icon/meta.ts +8 -0
  45. package/dist/icons/index.ts +40 -25
  46. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +1027 -0
  47. package/dist/icons/layout-column-icon/index.tsx +23 -0
  48. package/dist/icons/layout-column-icon/meta.ts +8 -0
  49. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +1007 -0
  50. package/dist/icons/layout-left-icon/index.tsx +26 -0
  51. package/dist/icons/layout-left-icon/meta.ts +8 -0
  52. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +1001 -0
  53. package/dist/icons/layout-right-icon/index.tsx +26 -0
  54. package/dist/icons/layout-right-icon/meta.ts +8 -0
  55. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +1032 -0
  56. package/dist/icons/musical-note-icon/index.tsx +25 -0
  57. package/dist/icons/musical-note-icon/meta.ts +8 -0
  58. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +1010 -0
  59. package/dist/icons/paint-roll-icon/index.tsx +24 -0
  60. package/dist/icons/paint-roll-icon/meta.ts +8 -0
  61. package/dist/icons/setting-icon/SettingIcon.stories.tsx +1024 -0
  62. package/dist/icons/setting-icon/index.tsx +30 -0
  63. package/dist/icons/setting-icon/meta.ts +8 -0
  64. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +1018 -0
  65. package/dist/icons/sparkles-soft-icon/index.tsx +29 -0
  66. package/dist/icons/sparkles-soft-icon/meta.ts +8 -0
  67. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +1006 -0
  68. package/dist/icons/text-color-icon/index.tsx +35 -0
  69. package/dist/icons/text-color-icon/meta.ts +8 -0
  70. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +1039 -0
  71. package/dist/icons/text-indicator-icon/index.tsx +24 -0
  72. package/dist/icons/text-indicator-icon/meta.ts +8 -0
  73. package/dist/index.js +124 -99
  74. 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
+ }