aural-ui 2.0.0 → 2.0.1

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 (59) 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 +16 -0
  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/stepper/Stepper.stories.tsx +7 -0
  21. package/dist/components/switch/Switch.stories.tsx +7 -0
  22. package/dist/components/switch-case/SwitchCase.stories.tsx +7 -0
  23. package/dist/components/tag/Tag.stories.tsx +7 -0
  24. package/dist/components/textarea/TextArea.stories.tsx +7 -0
  25. package/dist/components/textarea/index.tsx +2 -0
  26. package/dist/components/toast/Toast.stories.tsx +7 -0
  27. package/dist/components/typography/Typography.stories.tsx +7 -0
  28. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +1101 -0
  29. package/dist/icons/ai-avatar-icon/index.tsx +36 -0
  30. package/dist/icons/ai-avatar-icon/meta.ts +8 -0
  31. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +1013 -0
  32. package/dist/icons/arrow-corner-up-left-icon/index.tsx +24 -0
  33. package/dist/icons/arrow-corner-up-left-icon/meta.ts +8 -0
  34. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +1056 -0
  35. package/dist/icons/arrow-corner-up-right-icon/index.tsx +24 -0
  36. package/dist/icons/arrow-corner-up-right-icon/meta.ts +8 -0
  37. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +1027 -0
  38. package/dist/icons/layout-column-icon/index.tsx +23 -0
  39. package/dist/icons/layout-column-icon/meta.ts +8 -0
  40. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +1007 -0
  41. package/dist/icons/layout-left-icon/index.tsx +26 -0
  42. package/dist/icons/layout-left-icon/meta.ts +8 -0
  43. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +1001 -0
  44. package/dist/icons/layout-right-icon/index.tsx +26 -0
  45. package/dist/icons/layout-right-icon/meta.ts +8 -0
  46. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +1010 -0
  47. package/dist/icons/paint-roll-icon/index.tsx +24 -0
  48. package/dist/icons/paint-roll-icon/meta.ts +8 -0
  49. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +1018 -0
  50. package/dist/icons/sparkles-soft-icon/index.tsx +29 -0
  51. package/dist/icons/sparkles-soft-icon/meta.ts +8 -0
  52. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +1006 -0
  53. package/dist/icons/text-color-icon/index.tsx +35 -0
  54. package/dist/icons/text-color-icon/meta.ts +8 -0
  55. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +1039 -0
  56. package/dist/icons/text-indicator-icon/index.tsx +24 -0
  57. package/dist/icons/text-indicator-icon/meta.ts +8 -0
  58. package/dist/index.js +124 -99
  59. package/package.json +1 -1
@@ -0,0 +1,1101 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { AiAvatarIcon } from "."
5
+
6
+ const meta: Meta<typeof AiAvatarIcon> = {
7
+ title: "Icons/AiAvatarIcon",
8
+ component: AiAvatarIcon,
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-purple-500/10 via-transparent to-blue-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-purple-500/30 bg-gradient-to-br from-purple-500/20 to-pink-500/20">
90
+ <AiAvatarIcon className="h-12 w-12" />
91
+ </div>
92
+ <h1 className="!text-fm-primary text-5xl font-bold">
93
+ AiAvatarIcon
94
+ </h1>
95
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
+ A sophisticated AI avatar icon featuring sparkle elements
97
+ and a distinct purple theme. Perfect for AI assistants,
98
+ chatbots, virtual agents, and machine learning interfaces.
99
+ Built with accessibility in mind using Radix UI's
100
+ AccessibleIcon wrapper.
101
+ </p>
102
+
103
+ {/* Stats */}
104
+ <div className="flex items-center justify-center gap-8 pt-8">
105
+ <div className="text-center">
106
+ <div className="text-3xl font-bold text-purple-300">
107
+ Accessible
108
+ </div>
109
+ <div className="text-sm text-white/60">
110
+ Screen reader friendly
111
+ </div>
112
+ </div>
113
+ <div className="h-8 w-px bg-white/20" />
114
+ <div className="text-center">
115
+ <div className="text-3xl font-bold text-pink-300">
116
+ Scalable
117
+ </div>
118
+ <div className="text-sm text-white/60">
119
+ Any size needed
120
+ </div>
121
+ </div>
122
+ <div className="h-8 w-px bg-white/20" />
123
+ <div className="text-center">
124
+ <div className="text-3xl font-bold text-blue-300">
125
+ Customizable
126
+ </div>
127
+ <div className="text-sm text-white/60">
128
+ Independent styling
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+
136
+ {/* Content */}
137
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
138
+ {/* Quick Usage */}
139
+ <div className="!space-y-8">
140
+ <h2 className="text-center text-3xl font-bold !text-white">
141
+ Quick Start
142
+ </h2>
143
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
144
+ <div className="!space-y-4">
145
+ <h3 className="text-xl font-semibold !text-purple-300">
146
+ Basic Usage
147
+ </h3>
148
+ <div className="rounded-lg bg-black/40 p-4">
149
+ <pre className="overflow-x-auto text-sm !text-green-300">
150
+ {`import { AiAvatarIcon } from "@icons/ai-avatar-icon"
151
+
152
+ function MyComponent() {
153
+ return (
154
+ <div className="flex items-center gap-3">
155
+ <AiAvatarIcon className="h-8 w-8" />
156
+ <span>AI Assistant</span>
157
+ </div>
158
+ )
159
+ }`}
160
+ </pre>
161
+ </div>
162
+ </div>
163
+
164
+ <div className="!space-y-4">
165
+ <h3 className="text-xl font-semibold !text-purple-300">
166
+ Live Preview
167
+ </h3>
168
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
169
+ <div className="flex items-center gap-3 rounded-lg border border-purple-500/20 bg-purple-500/10 px-4 py-2">
170
+ <AiAvatarIcon className="h-8 w-8" />
171
+ <span className="text-white">AI Assistant</span>
172
+ </div>
173
+ </div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+
178
+ {/* Props Documentation */}
179
+ <div className="!space-y-8">
180
+ <h2 className="text-center text-3xl font-bold !text-white">
181
+ Props & Configuration
182
+ </h2>
183
+
184
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
185
+ <div className="bg-white/5 p-4">
186
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
187
+ </div>
188
+ <table className="!my-0 w-full">
189
+ <thead className="bg-white/5">
190
+ <tr className="border-b border-white/10">
191
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
192
+ Prop
193
+ </th>
194
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
195
+ Type
196
+ </th>
197
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
198
+ Default
199
+ </th>
200
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
201
+ Description
202
+ </th>
203
+ </tr>
204
+ </thead>
205
+ <tbody>
206
+ <tr className="border-b border-white/5">
207
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
208
+ width
209
+ </td>
210
+ <td className="px-6 py-4 text-sm !text-white/70">
211
+ number | string
212
+ </td>
213
+ <td className="px-6 py-4 text-sm !text-white/50">40</td>
214
+ <td className="px-6 py-4 text-sm !text-white/70">
215
+ Width of the icon in pixels
216
+ </td>
217
+ </tr>
218
+ <tr className="border-b border-white/5 !bg-black/10">
219
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
220
+ height
221
+ </td>
222
+ <td className="px-6 py-4 text-sm !text-white/70">
223
+ number | string
224
+ </td>
225
+ <td className="px-6 py-4 text-sm !text-white/50">40</td>
226
+ <td className="px-6 py-4 text-sm !text-white/70">
227
+ Height of the icon in pixels
228
+ </td>
229
+ </tr>
230
+ <tr className="border-b border-white/5">
231
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
232
+ classes
233
+ </td>
234
+ <td className="px-6 py-4 text-sm !text-white/70">
235
+ object
236
+ </td>
237
+ <td className="px-6 py-4 text-sm !text-white/50">{}</td>
238
+ <td className="px-6 py-4 text-sm !text-white/70">
239
+ Custom classes for circle and path elements
240
+ </td>
241
+ </tr>
242
+ <tr className="border-b border-white/5 !bg-black/10">
243
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
244
+ classes.circle
245
+ </td>
246
+ <td className="px-6 py-4 text-sm !text-white/70">
247
+ string
248
+ </td>
249
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
250
+ <td className="px-6 py-4 text-sm !text-white/70">
251
+ CSS classes for the background circle
252
+ </td>
253
+ </tr>
254
+ <tr className="border-b border-white/5">
255
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
256
+ classes.path
257
+ </td>
258
+ <td className="px-6 py-4 text-sm !text-white/70">
259
+ string
260
+ </td>
261
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
262
+ <td className="px-6 py-4 text-sm !text-white/70">
263
+ CSS classes for the sparkle elements
264
+ </td>
265
+ </tr>
266
+ <tr className="border-b border-white/5 !bg-black/10">
267
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
268
+ className
269
+ </td>
270
+ <td className="px-6 py-4 text-sm !text-white/70">
271
+ string
272
+ </td>
273
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
274
+ <td className="px-6 py-4 text-sm !text-white/70">
275
+ CSS classes for the entire SVG element
276
+ </td>
277
+ </tr>
278
+ <tr className="!bg-black/10">
279
+ <td className="px-6 py-4 font-mono text-sm !text-purple-300">
280
+ ...svgProps
281
+ </td>
282
+ <td className="px-6 py-4 text-sm !text-white/70">
283
+ SVGProps
284
+ </td>
285
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
286
+ <td className="px-6 py-4 text-sm !text-white/70">
287
+ All standard SVG element props
288
+ </td>
289
+ </tr>
290
+ </tbody>
291
+ </table>
292
+ </div>
293
+ </div>
294
+
295
+ {/* Size Variations */}
296
+ <div className="!space-y-8">
297
+ <h2 className="text-center text-3xl font-bold !text-white">
298
+ Size Variations
299
+ </h2>
300
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
301
+ <div className="!space-y-6">
302
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
303
+ <div className="!space-y-4">
304
+ <h3 className="text-lg font-semibold !text-purple-300">
305
+ Standard Sizes
306
+ </h3>
307
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
308
+ <div className="text-center">
309
+ <AiAvatarIcon className="!mx-auto mb-2 h-6 w-6" />
310
+ <span className="text-xs text-white/60">24px</span>
311
+ </div>
312
+ <div className="text-center">
313
+ <AiAvatarIcon className="!mx-auto mb-2 h-8 w-8" />
314
+ <span className="text-xs text-white/60">32px</span>
315
+ </div>
316
+ <div className="text-center">
317
+ <AiAvatarIcon className="!mx-auto mb-2 h-10 w-10" />
318
+ <span className="text-xs text-white/60">40px</span>
319
+ </div>
320
+ <div className="text-center">
321
+ <AiAvatarIcon className="!mx-auto mb-2 h-12 w-12" />
322
+ <span className="text-xs text-white/60">48px</span>
323
+ </div>
324
+ <div className="text-center">
325
+ <AiAvatarIcon className="!mx-auto mb-2 h-16 w-16" />
326
+ <span className="text-xs text-white/60">64px</span>
327
+ </div>
328
+ <div className="text-center">
329
+ <AiAvatarIcon className="!mx-auto mb-2 h-20 w-20" />
330
+ <span className="text-xs text-white/60">80px</span>
331
+ </div>
332
+ </div>
333
+ </div>
334
+
335
+ <div className="!space-y-4">
336
+ <h3 className="text-lg font-semibold !text-purple-300">
337
+ Code Example
338
+ </h3>
339
+ <div className="rounded-lg bg-black/40 p-4">
340
+ <pre className="overflow-x-auto text-sm !text-blue-300">
341
+ {`// Small (32px)
342
+ <AiAvatarIcon className="h-8 w-8" />
343
+
344
+ // Medium (40px) - Default
345
+ <AiAvatarIcon className="h-10 w-10" />
346
+
347
+ // Large (64px)
348
+ <AiAvatarIcon className="h-16 w-16" />
349
+
350
+ // Custom size
351
+ <AiAvatarIcon width={80} height={80} />`}
352
+ </pre>
353
+ </div>
354
+ </div>
355
+ </div>
356
+ </div>
357
+ </div>
358
+ </div>
359
+
360
+ {/* Color Customization */}
361
+ <div className="!space-y-8">
362
+ <h2 className="text-center text-3xl font-bold !text-white">
363
+ Color Customization
364
+ </h2>
365
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
366
+ <div className="!space-y-4">
367
+ <h3 className="text-lg font-semibold !text-purple-300">
368
+ Theme Variations
369
+ </h3>
370
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
371
+ <div className="flex items-center gap-4">
372
+ <AiAvatarIcon className="h-10 w-10" />
373
+ <div>
374
+ <div className="text-sm font-medium text-white">
375
+ Default Theme
376
+ </div>
377
+ <div className="text-xs text-white/60">
378
+ Purple & Pink sparkles
379
+ </div>
380
+ </div>
381
+ </div>
382
+ <div className="flex items-center gap-4">
383
+ <AiAvatarIcon
384
+ className="h-10 w-10"
385
+ classes={{
386
+ circle: "fill-blue-800",
387
+ path: "fill-blue-300",
388
+ }}
389
+ />
390
+ <div>
391
+ <div className="text-sm font-medium text-white">
392
+ Blue Theme
393
+ </div>
394
+ <div className="text-xs text-white/60">
395
+ Blue background & sparkles
396
+ </div>
397
+ </div>
398
+ </div>
399
+ <div className="flex items-center gap-4">
400
+ <AiAvatarIcon
401
+ className="h-10 w-10"
402
+ classes={{
403
+ circle: "fill-green-800",
404
+ path: "fill-green-300",
405
+ }}
406
+ />
407
+ <div>
408
+ <div className="text-sm font-medium text-white">
409
+ Green Theme
410
+ </div>
411
+ <div className="text-xs text-white/60">
412
+ Green background & sparkles
413
+ </div>
414
+ </div>
415
+ </div>
416
+ <div className="flex items-center gap-4">
417
+ <AiAvatarIcon
418
+ className="h-10 w-10"
419
+ classes={{
420
+ circle: "fill-orange-800",
421
+ path: "fill-orange-300",
422
+ }}
423
+ />
424
+ <div>
425
+ <div className="text-sm font-medium text-white">
426
+ Orange Theme
427
+ </div>
428
+ <div className="text-xs text-white/60">
429
+ Orange background & sparkles
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </div>
435
+
436
+ <div className="!space-y-4">
437
+ <h3 className="text-lg font-semibold !text-purple-300">
438
+ Custom Styling
439
+ </h3>
440
+ <div className="rounded-lg bg-black/40 p-4">
441
+ <pre className="overflow-x-auto text-sm !text-green-300">
442
+ {`// Using classes prop for custom colors
443
+ <AiAvatarIcon
444
+ classes={{
445
+ circle: "fill-blue-800",
446
+ path: "fill-blue-300"
447
+ }}
448
+ />
449
+
450
+ // Using Tailwind CSS modifiers
451
+ <AiAvatarIcon
452
+ classes={{
453
+ circle: "fill-gradient-to-br from-purple-800 to-pink-800",
454
+ path: "fill-purple-200"
455
+ }}
456
+ />
457
+
458
+ // CSS custom properties
459
+ <AiAvatarIcon
460
+ classes={{
461
+ circle: "fill-[var(--ai-bg-color)]",
462
+ path: "fill-[var(--ai-accent-color)]"
463
+ }}
464
+ />`}
465
+ </pre>
466
+ </div>
467
+ </div>
468
+ </div>
469
+ </div>
470
+
471
+ {/* Usage Examples */}
472
+ <div className="!space-y-8">
473
+ <h2 className="text-center text-3xl font-bold !text-white">
474
+ Usage Examples
475
+ </h2>
476
+
477
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
478
+ {/* Chat Interface */}
479
+ <div className="!space-y-4">
480
+ <h3 className="text-lg font-semibold !text-purple-300">
481
+ Chat Interface
482
+ </h3>
483
+ <div className="!space-y-4">
484
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-4">
485
+ <div className="flex items-start gap-3">
486
+ <AiAvatarIcon className="h-8 w-8 flex-shrink-0" />
487
+ <div className="flex-1">
488
+ <div className="flex items-center gap-2">
489
+ <span className="text-sm font-medium text-purple-300">
490
+ AI Assistant
491
+ </span>
492
+ <span className="text-xs text-white/50">now</span>
493
+ </div>
494
+ <p className="mt-1 text-sm !text-white/80">
495
+ Hello! I'm here to help you with any questions you
496
+ might have.
497
+ </p>
498
+ </div>
499
+ </div>
500
+ <div className="flex items-start gap-3">
501
+ <div className="h-8 w-8 flex-shrink-0 rounded-full bg-gray-600"></div>
502
+ <div className="flex-1">
503
+ <div className="flex items-center gap-2">
504
+ <span className="text-sm font-medium text-white">
505
+ You
506
+ </span>
507
+ <span className="text-xs text-white/50">now</span>
508
+ </div>
509
+ <p className="mt-1 text-sm !text-white/80">
510
+ Can you help me understand AI avatars?
511
+ </p>
512
+ </div>
513
+ </div>
514
+ </div>
515
+ <div className="rounded-lg bg-black/40 p-4">
516
+ <pre className="overflow-x-auto text-sm !text-green-300">
517
+ {`<div className="flex items-start gap-3">
518
+ <AiAvatarIcon className="h-8 w-8 flex-shrink-0" />
519
+ <div className="flex-1">
520
+ <div className="flex items-center gap-2">
521
+ <span className="text-sm font-medium text-purple-300">AI Assistant</span>
522
+ <span className="text-xs text-white/50">now</span>
523
+ </div>
524
+ <p className="mt-1 text-sm !text-white/80">
525
+ Hello! I'm here to help you with any questions you might have.
526
+ </p>
527
+ </div>
528
+ </div>`}
529
+ </pre>
530
+ </div>
531
+ </div>
532
+ </div>
533
+
534
+ {/* Profile Card */}
535
+ <div className="!space-y-4">
536
+ <h3 className="text-lg font-semibold !text-purple-300">
537
+ AI Profile Card
538
+ </h3>
539
+ <div className="!space-y-4">
540
+ <div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-6">
541
+ <div className="!space-y-4 text-center">
542
+ <AiAvatarIcon className="!mx-auto h-16 w-16" />
543
+ <div>
544
+ <h4 className="font-medium !text-white">
545
+ Claude AI
546
+ </h4>
547
+ <p className="text-sm !text-purple-300/80">
548
+ Your intelligent assistant
549
+ </p>
550
+ </div>
551
+ <div className="flex items-center justify-center gap-2 text-xs text-purple-400">
552
+ <div className="h-2 w-2 rounded-full bg-green-400"></div>
553
+ <span>Online & Ready</span>
554
+ </div>
555
+ </div>
556
+ </div>
557
+ <div className="rounded-lg bg-black/40 p-4">
558
+ <pre className="overflow-x-auto text-sm !text-green-300">
559
+ {`<div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-6">
560
+ <div className="space-y-4 text-center">
561
+ <AiAvatarIcon className="mx-auto h-16 w-16" />
562
+ <div>
563
+ <h4 className="font-medium !text-white">Claude AI</h4>
564
+ <p className="text-sm !text-purple-300/80">Your intelligent assistant</p>
565
+ </div>
566
+ <div className="flex items-center justify-center gap-2 text-xs text-purple-400">
567
+ <div className="h-2 w-2 rounded-full bg-green-400"></div>
568
+ <span>Online & Ready</span>
569
+ </div>
570
+ </div>
571
+ </div>`}
572
+ </pre>
573
+ </div>
574
+ </div>
575
+ </div>
576
+
577
+ {/* Navigation Menu */}
578
+ <div className="!space-y-4">
579
+ <h3 className="text-lg font-semibold !text-purple-300">
580
+ Navigation Menu
581
+ </h3>
582
+ <div className="!space-y-4">
583
+ <div className="!space-y-2">
584
+ <div className="flex items-center gap-3 rounded-lg bg-purple-500/20 px-3 py-2 text-purple-200">
585
+ <AiAvatarIcon className="h-5 w-5" />
586
+ <span className="text-sm font-medium">
587
+ AI Assistant
588
+ </span>
589
+ </div>
590
+ <div className="flex items-center gap-3 rounded-lg px-3 py-2 text-white/60 hover:bg-white/5">
591
+ <div className="h-5 w-5 rounded bg-gray-600"></div>
592
+ <span className="text-sm">Conversations</span>
593
+ </div>
594
+ <div className="flex items-center gap-3 rounded-lg px-3 py-2 text-white/60 hover:bg-white/5">
595
+ <div className="h-5 w-5 rounded bg-gray-600"></div>
596
+ <span className="text-sm">Settings</span>
597
+ </div>
598
+ </div>
599
+ <div className="rounded-lg bg-black/40 p-4">
600
+ <pre className="overflow-x-auto text-sm !text-green-300">
601
+ {`// Active menu item
602
+ <div className="flex items-center gap-3 rounded-lg bg-purple-500/20 px-3 py-2 text-purple-200">
603
+ <AiAvatarIcon className="h-5 w-5" />
604
+ <span className="text-sm font-medium">AI Assistant</span>
605
+ </div>
606
+
607
+ // Regular menu items
608
+ <div className="flex items-center gap-3 rounded-lg px-3 py-2 text-white/60 hover:bg-white/5">
609
+ <div className="h-5 w-5 rounded bg-gray-600"></div>
610
+ <span className="text-sm">Conversations</span>
611
+ </div>`}
612
+ </pre>
613
+ </div>
614
+ </div>
615
+ </div>
616
+
617
+ {/* Feature Card */}
618
+ <div className="!space-y-4">
619
+ <h3 className="text-lg font-semibold !text-purple-300">
620
+ Feature Showcase
621
+ </h3>
622
+ <div className="!space-y-4">
623
+ <div className="grid gap-4">
624
+ <div className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 transition-colors hover:bg-white/10">
625
+ <div className="flex items-center gap-4">
626
+ <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
627
+ <AiAvatarIcon className="h-6 w-6" />
628
+ </div>
629
+ <div>
630
+ <h4 className="font-medium !text-white">
631
+ AI-Powered Chat
632
+ </h4>
633
+ <p className="text-sm !text-white/60">
634
+ Intelligent conversations with context awareness
635
+ </p>
636
+ </div>
637
+ </div>
638
+ </div>
639
+ <div className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 transition-colors hover:bg-white/10">
640
+ <div className="flex items-center gap-4">
641
+ <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
642
+ <AiAvatarIcon
643
+ className="h-6 w-6"
644
+ classes={{
645
+ circle: "fill-blue-800",
646
+ path: "fill-blue-300",
647
+ }}
648
+ />
649
+ </div>
650
+ <div>
651
+ <h4 className="font-medium !text-white">
652
+ Smart Analytics
653
+ </h4>
654
+ <p className="text-sm !text-white/60">
655
+ Data insights powered by machine learning
656
+ </p>
657
+ </div>
658
+ </div>
659
+ </div>
660
+ </div>
661
+ <div className="rounded-lg bg-black/40 p-4">
662
+ <pre className="overflow-x-auto text-sm !text-green-300">
663
+ {`<div className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 transition-colors hover:bg-white/10">
664
+ <div className="flex items-center gap-4">
665
+ <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
666
+ <AiAvatarIcon className="h-6 w-6" />
667
+ </div>
668
+ <div>
669
+ <h4 className="font-medium text-white">AI-Powered Chat</h4>
670
+ <p className="text-sm text-white/60">
671
+ Intelligent conversations with context awareness
672
+ </p>
673
+ </div>
674
+ </div>
675
+ </div>`}
676
+ </pre>
677
+ </div>
678
+ </div>
679
+ </div>
680
+ </div>
681
+ </div>
682
+
683
+ {/* Accessibility */}
684
+ <div className="!space-y-8">
685
+ <h2 className="text-center text-3xl font-bold !text-white">
686
+ Accessibility Features
687
+ </h2>
688
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
689
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
690
+ <h3 className="text-lg font-semibold !text-green-300">
691
+ ✅ Built-in Features
692
+ </h3>
693
+ <ul className="!space-y-2 text-sm !text-white/70">
694
+ <li className="!text-white/70">
695
+ Uses Radix UI AccessibleIcon wrapper
696
+ </li>
697
+ <li className="!text-white/70">
698
+ Provides screen reader label "Ai Avatar icon"
699
+ </li>
700
+ <li className="!text-white/70">
701
+ Supports keyboard navigation when interactive
702
+ </li>
703
+ <li className="!text-white/70">
704
+ Maintains proper color contrast ratios
705
+ </li>
706
+ <li className="!text-white/70">
707
+ Scales proportionally with size changes
708
+ </li>
709
+ </ul>
710
+ </div>
711
+
712
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
713
+ <h3 className="text-lg font-semibold !text-purple-300">
714
+ 💡 Best Practices
715
+ </h3>
716
+ <ul className="!space-y-2 text-sm text-white/70">
717
+ <li className="!text-white/70">
718
+ Always pair with descriptive text or labels
719
+ </li>
720
+ <li className="!text-white/70">
721
+ Use consistent colors for AI-related elements
722
+ </li>
723
+ <li className="!text-white/70">
724
+ Ensure sufficient color contrast for sparkle elements
725
+ </li>
726
+ <li className="!text-white/70">
727
+ Add focus states for interactive elements
728
+ </li>
729
+ <li className="!text-white/70">
730
+ Consider providing alternative text context
731
+ </li>
732
+ </ul>
733
+ </div>
734
+ </div>
735
+
736
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
737
+ <h3 className="mb-4 text-lg font-semibold !text-blue-300">
738
+ Custom Accessibility Label
739
+ </h3>
740
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
741
+ <div className="rounded-lg bg-black/40 p-4">
742
+ <pre className="overflow-x-auto text-sm !text-blue-300">
743
+ {`// Custom implementation with specific label
744
+ import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
745
+
746
+ function CustomAiAvatarIcon({ label = "AI Assistant", ...props }) {
747
+ return (
748
+ <AccessibleIcon label={label}>
749
+ <AiAvatarIcon {...props} />
750
+ </AccessibleIcon>
751
+ )
752
+ }
753
+
754
+ // Usage with specific context
755
+ <CustomAiAvatarIcon
756
+ label="Claude AI Assistant avatar"
757
+ className="h-8 w-8"
758
+ />`}
759
+ </pre>
760
+ </div>
761
+ <div className="!space-y-4">
762
+ <p className="text-sm !text-white/70">
763
+ For specific contexts, you can wrap the AiAvatarIcon
764
+ with a custom AccessibleIcon component that provides
765
+ more descriptive labels for different AI assistants or
766
+ contexts.
767
+ </p>
768
+ <div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-4">
769
+ <div className="flex items-center gap-2 text-sm text-purple-200">
770
+ <AiAvatarIcon className="h-4 w-4" />
771
+ <span>
772
+ This approach gives screen readers specific AI
773
+ context
774
+ </span>
775
+ </div>
776
+ </div>
777
+ </div>
778
+ </div>
779
+ </div>
780
+ </div>
781
+
782
+ {/* Related Icons */}
783
+ <div className="!space-y-8">
784
+ <h2 className="text-center text-3xl font-bold !text-white">
785
+ Related Icons
786
+ </h2>
787
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
788
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
789
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
790
+ <span className="text-2xl">🤖</span>
791
+ </div>
792
+ <div>
793
+ <div className="font-medium text-white">BotIcon</div>
794
+ <div className="text-xs text-white/60">
795
+ Robot assistants
796
+ </div>
797
+ </div>
798
+ </div>
799
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
800
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
801
+ <span className="text-2xl">👤</span>
802
+ </div>
803
+ <div>
804
+ <div className="font-medium text-white">UserIcon</div>
805
+ <div className="text-xs text-white/60">Human users</div>
806
+ </div>
807
+ </div>
808
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
809
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
810
+ <span className="text-2xl">💬</span>
811
+ </div>
812
+ <div>
813
+ <div className="font-medium text-white">ChatIcon</div>
814
+ <div className="text-xs text-white/60">Conversations</div>
815
+ </div>
816
+ </div>
817
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
818
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
819
+ <span className="text-2xl">⚡</span>
820
+ </div>
821
+ <div>
822
+ <div className="font-medium text-white">
823
+ AutomationIcon
824
+ </div>
825
+ <div className="text-xs text-white/60">
826
+ Smart automation
827
+ </div>
828
+ </div>
829
+ </div>
830
+ </div>
831
+ </div>
832
+ </div>
833
+
834
+ {/* Footer */}
835
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
836
+ <div className="!mx-auto max-w-7xl px-6 py-8">
837
+ <div className="!space-y-4 text-center">
838
+ <p className="!text-white/60">
839
+ AiAvatarIcon is part of the Aural UI icon library, designed
840
+ specifically for AI and machine learning interfaces with
841
+ accessibility in mind.
842
+ </p>
843
+ <p className="text-sm !text-white/40">
844
+ Features customizable colors for circle and sparkle
845
+ elements, following WCAG guidelines for accessibility.
846
+ </p>
847
+ </div>
848
+ </div>
849
+ </div>
850
+ </div>
851
+ </>
852
+ ),
853
+ },
854
+ },
855
+ tags: ["autodocs"],
856
+ argTypes: {
857
+ width: {
858
+ control: { type: "range", min: 16, max: 120, step: 4 },
859
+ description: "Width of the icon in pixels",
860
+ },
861
+ height: {
862
+ control: { type: "range", min: 16, max: 120, step: 4 },
863
+ description: "Height of the icon in pixels",
864
+ },
865
+ className: {
866
+ control: "text",
867
+ description: "CSS classes for the entire SVG element",
868
+ },
869
+ },
870
+ }
871
+
872
+ export default meta
873
+ type Story = StoryObj<typeof AiAvatarIcon>
874
+
875
+ // Story parameters for consistent dark theme
876
+ const storyParameters = {
877
+ backgrounds: {
878
+ default: "dark",
879
+ values: [
880
+ { name: "dark", value: "#0a0a0a" },
881
+ { name: "darker", value: "#000000" },
882
+ ],
883
+ },
884
+ }
885
+
886
+ export const Default: Story = {
887
+ args: {
888
+ width: 40,
889
+ height: 40,
890
+ className: "",
891
+ },
892
+ parameters: storyParameters,
893
+ render: (args) => (
894
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
895
+ <AiAvatarIcon {...args} />
896
+ </div>
897
+ ),
898
+ }
899
+
900
+ export const SizeVariations: Story = {
901
+ parameters: {
902
+ ...storyParameters,
903
+ docs: {
904
+ description: {
905
+ story:
906
+ "AiAvatarIcon in different sizes, from small chat indicators to large profile displays.",
907
+ },
908
+ },
909
+ },
910
+ render: () => (
911
+ <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">
912
+ <div className="text-center">
913
+ <AiAvatarIcon className="!mx-auto mb-2 h-6 w-6" />
914
+ <span className="text-xs text-white/60">24px</span>
915
+ </div>
916
+ <div className="text-center">
917
+ <AiAvatarIcon className="!mx-auto mb-2 h-8 w-8" />
918
+ <span className="text-xs text-white/60">32px</span>
919
+ </div>
920
+ <div className="text-center">
921
+ <AiAvatarIcon className="!mx-auto mb-2 h-10 w-10" />
922
+ <span className="text-xs text-white/60">40px</span>
923
+ </div>
924
+ <div className="text-center">
925
+ <AiAvatarIcon className="!mx-auto mb-2 h-12 w-12" />
926
+ <span className="text-xs text-white/60">48px</span>
927
+ </div>
928
+ <div className="text-center">
929
+ <AiAvatarIcon className="!mx-auto mb-2 h-16 w-16" />
930
+ <span className="text-xs text-white/60">64px</span>
931
+ </div>
932
+ <div className="text-center">
933
+ <AiAvatarIcon className="!mx-auto mb-2 h-20 w-20" />
934
+ <span className="text-xs text-white/60">80px</span>
935
+ </div>
936
+ </div>
937
+ ),
938
+ }
939
+
940
+ export const ColorVariations: Story = {
941
+ parameters: {
942
+ ...storyParameters,
943
+ docs: {
944
+ description: {
945
+ story:
946
+ "AiAvatarIcon with different color themes for various AI personalities and brands.",
947
+ },
948
+ },
949
+ },
950
+ render: () => (
951
+ <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">
952
+ <div className="text-center">
953
+ <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">
954
+ <AiAvatarIcon className="h-10 w-10" />
955
+ </div>
956
+ <div className="text-sm font-medium text-white">Default</div>
957
+ <div className="text-xs text-purple-400">Purple & Pink</div>
958
+ </div>
959
+ <div className="text-center">
960
+ <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">
961
+ <AiAvatarIcon
962
+ className="h-10 w-10"
963
+ classes={{
964
+ circle: "fill-blue-800",
965
+ path: "fill-blue-300",
966
+ }}
967
+ />
968
+ </div>
969
+ <div className="text-sm font-medium text-white">Blue</div>
970
+ <div className="text-xs text-blue-400">Tech & Corporate</div>
971
+ </div>
972
+ <div className="text-center">
973
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-green-500/30 bg-green-500/20">
974
+ <AiAvatarIcon
975
+ className="h-10 w-10"
976
+ classes={{
977
+ circle: "fill-green-800",
978
+ path: "fill-green-300",
979
+ }}
980
+ />
981
+ </div>
982
+ <div className="text-sm font-medium text-white">Green</div>
983
+ <div className="text-xs text-green-400">Eco & Health</div>
984
+ </div>
985
+ <div className="text-center">
986
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-orange-500/30 bg-orange-500/20">
987
+ <AiAvatarIcon
988
+ className="h-10 w-10"
989
+ classes={{
990
+ circle: "fill-orange-800",
991
+ path: "fill-orange-300",
992
+ }}
993
+ />
994
+ </div>
995
+ <div className="text-sm font-medium text-white">Orange</div>
996
+ <div className="text-xs text-orange-400">Creative & Warm</div>
997
+ </div>
998
+ </div>
999
+ ),
1000
+ }
1001
+
1002
+ export const UsageExamples: Story = {
1003
+ parameters: {
1004
+ ...storyParameters,
1005
+ docs: {
1006
+ description: {
1007
+ story:
1008
+ "Real-world usage examples showing AiAvatarIcon in different AI interface contexts.",
1009
+ },
1010
+ },
1011
+ },
1012
+ render: () => (
1013
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1014
+ {/* Chat Interface */}
1015
+ <div className="!space-y-2">
1016
+ <h3 className="text-sm font-medium text-white">Chat Interface</h3>
1017
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-4">
1018
+ <div className="flex items-start gap-3">
1019
+ <AiAvatarIcon className="h-8 w-8 flex-shrink-0" />
1020
+ <div className="flex-1">
1021
+ <div className="flex items-center gap-2">
1022
+ <span className="text-sm font-medium text-purple-300">
1023
+ AI Assistant
1024
+ </span>
1025
+ <span className="text-xs text-white/50">now</span>
1026
+ </div>
1027
+ <p className="mt-1 text-sm !text-white/80">
1028
+ Hello! I'm here to help you with any questions you might have.
1029
+ </p>
1030
+ </div>
1031
+ </div>
1032
+ </div>
1033
+ </div>
1034
+
1035
+ {/* Profile Card */}
1036
+ <div className="!space-y-2">
1037
+ <h3 className="text-sm font-medium text-white">AI Profile Card</h3>
1038
+ <div className="rounded-lg border border-purple-500/20 bg-purple-500/10 p-6">
1039
+ <div className="!space-y-4 text-center">
1040
+ <AiAvatarIcon className="!mx-auto h-16 w-16" />
1041
+ <div>
1042
+ <h4 className="font-medium text-white">Claude AI</h4>
1043
+ <p className="text-sm text-purple-300/80">
1044
+ Your intelligent assistant
1045
+ </p>
1046
+ </div>
1047
+ <div className="flex items-center justify-center gap-2 text-xs text-purple-400">
1048
+ <div className="h-2 w-2 rounded-full bg-green-400"></div>
1049
+ <span>Online & Ready</span>
1050
+ </div>
1051
+ </div>
1052
+ </div>
1053
+ </div>
1054
+
1055
+ {/* Feature Showcase */}
1056
+ <div className="!space-y-2">
1057
+ <h3 className="text-sm font-medium text-white">Feature Cards</h3>
1058
+ <div className="grid gap-4">
1059
+ <div className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 transition-colors hover:bg-white/10">
1060
+ <div className="flex items-center gap-4">
1061
+ <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
1062
+ <AiAvatarIcon className="h-6 w-6" />
1063
+ </div>
1064
+ <div>
1065
+ <h4 className="font-medium text-white">AI-Powered Chat</h4>
1066
+ <p className="text-sm text-white/60">
1067
+ Intelligent conversations with context awareness
1068
+ </p>
1069
+ </div>
1070
+ </div>
1071
+ </div>
1072
+ </div>
1073
+ </div>
1074
+ </div>
1075
+ ),
1076
+ }
1077
+
1078
+ export const Playground: Story = {
1079
+ parameters: {
1080
+ ...storyParameters,
1081
+ docs: {
1082
+ description: {
1083
+ story:
1084
+ "Interactive playground to experiment with different AiAvatarIcon configurations and themes.",
1085
+ },
1086
+ },
1087
+ },
1088
+ args: {
1089
+ width: 64,
1090
+ height: 64,
1091
+ className: "",
1092
+ classes: {},
1093
+ },
1094
+ render: (args) => (
1095
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1096
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1097
+ <AiAvatarIcon {...args} />
1098
+ </div>
1099
+ </div>
1100
+ ),
1101
+ }