aural-ui 2.1.0 → 2.1.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 (90) hide show
  1. package/dist/components/slider/Slider.stories.tsx +23 -22
  2. package/dist/components/slider/index.tsx +9 -3
  3. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +952 -0
  4. package/dist/icons/apple-logo-icon/index.tsx +26 -0
  5. package/dist/icons/apple-logo-icon/meta.ts +8 -0
  6. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +1008 -0
  7. package/dist/icons/arrow-left-icon/index.tsx +24 -0
  8. package/dist/icons/arrow-left-icon/meta.ts +8 -0
  9. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +1050 -0
  10. package/dist/icons/backward-ten-seconds-icon/index.tsx +35 -0
  11. package/dist/icons/backward-ten-seconds-icon/meta.ts +8 -0
  12. package/dist/icons/camera-icon/CameraIcon.stories.tsx +1271 -0
  13. package/dist/icons/camera-icon/index.tsx +22 -0
  14. package/dist/icons/camera-icon/meta.ts +8 -0
  15. package/dist/icons/coin-icon/CoinIcon.stories.tsx +1382 -0
  16. package/dist/icons/coin-icon/index.tsx +36 -0
  17. package/dist/icons/coin-icon/meta.ts +8 -0
  18. package/dist/icons/email-icon/EmailIcon.stories.tsx +995 -0
  19. package/dist/icons/email-icon/index.tsx +22 -0
  20. package/dist/icons/email-icon/meta.ts +8 -0
  21. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +1167 -0
  22. package/dist/icons/expand-icon/index.tsx +22 -0
  23. package/dist/icons/expand-icon/meta.ts +8 -0
  24. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +1054 -0
  25. package/dist/icons/forward-ten-seconds-icon/index.tsx +33 -0
  26. package/dist/icons/forward-ten-seconds-icon/meta.ts +8 -0
  27. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +1004 -0
  28. package/dist/icons/google-logo-icon/index.tsx +34 -0
  29. package/dist/icons/google-logo-icon/meta.ts +8 -0
  30. package/dist/icons/heart-icon/HeartIcon.stories.tsx +1080 -0
  31. package/dist/icons/heart-icon/index.tsx +21 -0
  32. package/dist/icons/heart-icon/meta.ts +8 -0
  33. package/dist/icons/index.ts +32 -4
  34. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +1020 -0
  35. package/dist/icons/indian-flag-icon/index.tsx +46 -0
  36. package/dist/icons/indian-flag-icon/meta.ts +8 -0
  37. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +1449 -0
  38. package/dist/icons/instagram-icon/index.tsx +17 -0
  39. package/dist/icons/instagram-icon/meta.ts +8 -0
  40. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +1582 -0
  41. package/dist/icons/linked-in-icon/index.tsx +17 -0
  42. package/dist/icons/linked-in-icon/meta.ts +8 -0
  43. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +1214 -0
  44. package/dist/icons/minimize-icon/index.tsx +22 -0
  45. package/dist/icons/minimize-icon/meta.ts +8 -0
  46. package/dist/icons/pause-icon/PauseIcon.stories.tsx +1060 -0
  47. package/dist/icons/pause-icon/index.tsx +30 -0
  48. package/dist/icons/pause-icon/meta.ts +8 -0
  49. package/dist/icons/share-icon/ShareIcon.stories.tsx +1081 -0
  50. package/dist/icons/share-icon/index.tsx +22 -0
  51. package/dist/icons/share-icon/meta.ts +8 -0
  52. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +1047 -0
  53. package/dist/icons/skip-backward-icon/index.tsx +29 -0
  54. package/dist/icons/skip-backward-icon/meta.ts +8 -0
  55. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +1049 -0
  56. package/dist/icons/skip-forward-icon/index.tsx +29 -0
  57. package/dist/icons/skip-forward-icon/meta.ts +8 -0
  58. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +1020 -0
  59. package/dist/icons/store-coin-icon/index.tsx +35 -0
  60. package/dist/icons/store-coin-icon/meta.ts +8 -0
  61. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +1489 -0
  62. package/dist/icons/threads-icon/index.tsx +17 -0
  63. package/dist/icons/threads-icon/meta.ts +8 -0
  64. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +1463 -0
  65. package/dist/icons/twitter-x-icon/index.tsx +17 -0
  66. package/dist/icons/twitter-x-icon/meta.ts +8 -0
  67. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +1105 -0
  68. package/dist/icons/video-play-list-icon/index.tsx +22 -0
  69. package/dist/icons/video-play-list-icon/meta.ts +8 -0
  70. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +1416 -0
  71. package/dist/icons/voice-playing-icon/index.tsx +24 -0
  72. package/dist/icons/voice-playing-icon/meta.ts +8 -0
  73. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +1230 -0
  74. package/dist/icons/volume-full-icon/index.tsx +25 -0
  75. package/dist/icons/volume-full-icon/meta.ts +8 -0
  76. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +1153 -0
  77. package/dist/icons/volume-half-icon/index.tsx +25 -0
  78. package/dist/icons/volume-half-icon/meta.ts +8 -0
  79. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +1144 -0
  80. package/dist/icons/volume-off-icon/index.tsx +26 -0
  81. package/dist/icons/volume-off-icon/meta.ts +8 -0
  82. package/dist/icons/warning-icon/WarningIcon.stories.tsx +1106 -0
  83. package/dist/icons/warning-icon/index.tsx +27 -0
  84. package/dist/icons/warning-icon/meta.ts +8 -0
  85. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +996 -0
  86. package/dist/icons/youtube-icon/index.tsx +24 -0
  87. package/dist/icons/youtube-icon/meta.ts +8 -0
  88. package/dist/index.js +1 -1
  89. package/dist/styles/aural-theme.css +9 -0
  90. package/package.json +1 -1
@@ -0,0 +1,1230 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { VolumeFullIcon } from "."
5
+
6
+ const meta: Meta<typeof VolumeFullIcon> = {
7
+ title: "Icons/VolumeFullIcon",
8
+ component: VolumeFullIcon,
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-indigo-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-indigo-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-indigo-500/30 bg-gradient-to-br from-indigo-500/20 to-blue-500/20">
90
+ <VolumeFullIcon className="h-12 w-12 text-indigo-400" />
91
+ </div>
92
+ <h1 className="text-5xl font-bold !text-white">
93
+ VolumeFullIcon
94
+ </h1>
95
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
+ A maximum volume audio control icon for media interfaces.
97
+ Features the classic speaker with full sound waves design,
98
+ essential for music players, video platforms, audio systems,
99
+ and any media interface where users need to control high
100
+ volume levels.
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-indigo-300">
107
+ Maximum Volume
108
+ </div>
109
+ <div className="text-sm text-white/60">
110
+ Full audio power
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-blue-300">
116
+ Accessible
117
+ </div>
118
+ <div className="text-sm text-white/60">
119
+ Screen reader friendly
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-purple-300">
125
+ Universal
126
+ </div>
127
+ <div className="text-sm text-white/60">
128
+ Standard volume symbol
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-indigo-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 { VolumeFullIcon } from "@icons/volume-full-icon"
151
+
152
+ function VolumeControl() {
153
+ return (
154
+ <button
155
+ onClick={setMaxVolume}
156
+ className="p-2 hover:bg-white/10 rounded-lg"
157
+ aria-label="Set maximum volume"
158
+ >
159
+ <VolumeFullIcon className="h-6 w-6 text-indigo-400" />
160
+ </button>
161
+ )
162
+ }`}
163
+ </pre>
164
+ </div>
165
+ </div>
166
+
167
+ <div className="!space-y-4">
168
+ <h3 className="text-xl font-semibold !text-indigo-300">
169
+ Live Preview
170
+ </h3>
171
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
172
+ <button className="rounded-lg border border-indigo-500/20 bg-indigo-500/10 p-3 transition-colors hover:bg-indigo-500/20">
173
+ <VolumeFullIcon className="h-6 w-6 text-indigo-400" />
174
+ </button>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ </div>
179
+
180
+ {/* Props Documentation */}
181
+ <div className="!space-y-8">
182
+ <h2 className="text-center text-3xl font-bold !text-white">
183
+ Props & Configuration
184
+ </h2>
185
+
186
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
187
+ <div className="bg-white/5 p-4">
188
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
189
+ </div>
190
+ <table className="!my-0 w-full">
191
+ <thead className="bg-white/5">
192
+ <tr className="border-b border-white/10">
193
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
194
+ Prop
195
+ </th>
196
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
197
+ Type
198
+ </th>
199
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
200
+ Default
201
+ </th>
202
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
203
+ Description
204
+ </th>
205
+ </tr>
206
+ </thead>
207
+ <tbody>
208
+ <tr className="border-b border-white/5">
209
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
210
+ width
211
+ </td>
212
+ <td className="px-6 py-4 text-sm !text-white/70">
213
+ number | string
214
+ </td>
215
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
216
+ <td className="px-6 py-4 text-sm !text-white/70">
217
+ Width of the icon in pixels
218
+ </td>
219
+ </tr>
220
+ <tr className="border-b border-white/5 !bg-black/10">
221
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
222
+ height
223
+ </td>
224
+ <td className="px-6 py-4 text-sm !text-white/70">
225
+ number | string
226
+ </td>
227
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
228
+ <td className="px-6 py-4 text-sm !text-white/70">
229
+ Height of the icon in pixels
230
+ </td>
231
+ </tr>
232
+ <tr className="border-b border-white/5">
233
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
234
+ stroke
235
+ </td>
236
+ <td className="px-6 py-4 text-sm !text-white/70">
237
+ string
238
+ </td>
239
+ <td className="px-6 py-4 text-sm !text-white/50">
240
+ currentColor
241
+ </td>
242
+ <td className="px-6 py-4 text-sm !text-white/70">
243
+ Stroke color of the icon
244
+ </td>
245
+ </tr>
246
+ <tr className="border-b border-white/5 !bg-black/10">
247
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
248
+ strokeWidth
249
+ </td>
250
+ <td className="px-6 py-4 text-sm !text-white/70">
251
+ string | number
252
+ </td>
253
+ <td className="px-6 py-4 text-sm !text-white/50">
254
+ 1.5
255
+ </td>
256
+ <td className="px-6 py-4 text-sm !text-white/70">
257
+ Width of the stroke
258
+ </td>
259
+ </tr>
260
+ <tr className="border-b border-white/5">
261
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
262
+ className
263
+ </td>
264
+ <td className="px-6 py-4 text-sm !text-white/70">
265
+ string
266
+ </td>
267
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
268
+ <td className="px-6 py-4 text-sm !text-white/70">
269
+ CSS classes for styling (use for overrides)
270
+ </td>
271
+ </tr>
272
+ <tr className="!bg-black/10">
273
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
274
+ ...svgProps
275
+ </td>
276
+ <td className="px-6 py-4 text-sm !text-white/70">
277
+ SVGProps
278
+ </td>
279
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
280
+ <td className="px-6 py-4 text-sm !text-white/70">
281
+ All standard SVG element props
282
+ </td>
283
+ </tr>
284
+ </tbody>
285
+ </table>
286
+ </div>
287
+ </div>
288
+
289
+ {/* Size Variations */}
290
+ <div className="!space-y-8">
291
+ <h2 className="text-center text-3xl font-bold !text-white">
292
+ Size Variations
293
+ </h2>
294
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
295
+ <div className="!space-y-6">
296
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
297
+ <div className="!space-y-4">
298
+ <h3 className="text-lg font-semibold !text-indigo-300">
299
+ Standard Sizes
300
+ </h3>
301
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
302
+ <div className="text-center">
303
+ <VolumeFullIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
304
+ <span className="text-xs text-white/60">12px</span>
305
+ </div>
306
+ <div className="text-center">
307
+ <VolumeFullIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
308
+ <span className="text-xs text-white/60">16px</span>
309
+ </div>
310
+ <div className="text-center">
311
+ <VolumeFullIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
312
+ <span className="text-xs text-white/60">20px</span>
313
+ </div>
314
+ <div className="text-center">
315
+ <VolumeFullIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
316
+ <span className="text-xs text-white/60">24px</span>
317
+ </div>
318
+ <div className="text-center">
319
+ <VolumeFullIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
320
+ <span className="text-xs text-white/60">32px</span>
321
+ </div>
322
+ <div className="text-center">
323
+ <VolumeFullIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
324
+ <span className="text-xs text-white/60">48px</span>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <div className="!space-y-4">
330
+ <h3 className="text-lg font-semibold !text-indigo-300">
331
+ Code Example
332
+ </h3>
333
+ <div className="rounded-lg bg-black/40 p-4">
334
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
335
+ {`// Small (16px) - compact controls
336
+ <VolumeFullIcon className="h-4 w-4" />
337
+
338
+ // Medium (24px) - standard interface
339
+ <VolumeFullIcon className="h-6 w-6" />
340
+
341
+ // Large (32px) - prominent displays
342
+ <VolumeFullIcon className="h-8 w-8" />
343
+
344
+ // Custom size
345
+ <VolumeFullIcon width={40} height={40} />`}
346
+ </pre>
347
+ </div>
348
+ </div>
349
+ </div>
350
+ </div>
351
+ </div>
352
+ </div>
353
+
354
+ {/* Color Variations */}
355
+ <div className="!space-y-8">
356
+ <h2 className="text-center text-3xl font-bold !text-white">
357
+ Color Variations
358
+ </h2>
359
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
360
+ <div className="!space-y-4">
361
+ <h3 className="text-lg font-semibold !text-indigo-300">
362
+ Semantic Colors
363
+ </h3>
364
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
365
+ <div className="flex items-center gap-4">
366
+ <VolumeFullIcon className="h-6 w-6 text-indigo-400" />
367
+ <div>
368
+ <div className="text-sm font-medium text-white">
369
+ Maximum Volume
370
+ </div>
371
+ <div className="text-xs text-white/60">
372
+ text-indigo-400
373
+ </div>
374
+ </div>
375
+ </div>
376
+ <div className="flex items-center gap-4">
377
+ <VolumeFullIcon className="h-6 w-6 text-blue-400" />
378
+ <div>
379
+ <div className="text-sm font-medium text-white">
380
+ High Power
381
+ </div>
382
+ <div className="text-xs text-white/60">
383
+ text-blue-400
384
+ </div>
385
+ </div>
386
+ </div>
387
+ <div className="flex items-center gap-4">
388
+ <VolumeFullIcon className="h-6 w-6 text-purple-400" />
389
+ <div>
390
+ <div className="text-sm font-medium text-white">
391
+ Enhanced
392
+ </div>
393
+ <div className="text-xs text-white/60">
394
+ text-purple-400
395
+ </div>
396
+ </div>
397
+ </div>
398
+ <div className="flex items-center gap-4">
399
+ <VolumeFullIcon className="h-6 w-6 text-violet-400" />
400
+ <div>
401
+ <div className="text-sm font-medium text-white">
402
+ Premium
403
+ </div>
404
+ <div className="text-xs text-white/60">
405
+ text-violet-400
406
+ </div>
407
+ </div>
408
+ </div>
409
+ </div>
410
+ </div>
411
+
412
+ <div className="!space-y-4">
413
+ <h3 className="text-lg font-semibold !text-indigo-300">
414
+ Custom Colors
415
+ </h3>
416
+ <div className="rounded-lg bg-black/40 p-4">
417
+ <pre className="overflow-x-auto text-sm !text-green-300">
418
+ {`// Using Tailwind classes
419
+ <VolumeFullIcon className="h-6 w-6 text-indigo-400" />
420
+ <VolumeFullIcon className="h-6 w-6 text-blue-500" />
421
+
422
+ // Using CSS custom properties
423
+ <VolumeFullIcon
424
+ className="h-6 w-6"
425
+ style={{ color: 'var(--color-volume-max)' }}
426
+ />
427
+
428
+ // Direct stroke prop
429
+ <VolumeFullIcon
430
+ width={24}
431
+ height={24}
432
+ stroke="#6366f1"
433
+ />`}
434
+ </pre>
435
+ </div>
436
+ </div>
437
+ </div>
438
+ </div>
439
+
440
+ {/* Usage Examples */}
441
+ <div className="!space-y-8">
442
+ <h2 className="text-center text-3xl font-bold !text-white">
443
+ Usage Examples
444
+ </h2>
445
+
446
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
447
+ {/* Home Theater System */}
448
+ <div className="!space-y-4">
449
+ <h3 className="text-lg font-semibold !text-indigo-300">
450
+ Home Theater System
451
+ </h3>
452
+ <div className="!space-y-4">
453
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
454
+ <div className="mb-4">
455
+ <div className="text-sm font-medium !text-white">
456
+ Surround Sound System
457
+ </div>
458
+ <div className="text-xs !text-white/60">
459
+ 7.1 Channel Audio
460
+ </div>
461
+ </div>
462
+ <div className="mb-4 grid grid-cols-2 gap-4">
463
+ <div className="rounded-lg bg-black/20 p-3">
464
+ <div className="mb-2 text-xs text-white/60">
465
+ Master Volume
466
+ </div>
467
+ <div className="flex items-center gap-2">
468
+ <VolumeFullIcon className="h-5 w-5 text-indigo-400" />
469
+ <div className="h-2 flex-1 rounded-full bg-white/20">
470
+ <div className="h-full w-4/5 rounded-full bg-indigo-400" />
471
+ </div>
472
+ <span className="text-xs text-white">80%</span>
473
+ </div>
474
+ </div>
475
+ <div className="rounded-lg bg-black/20 p-3">
476
+ <div className="mb-2 text-xs text-white/60">
477
+ Subwoofer
478
+ </div>
479
+ <div className="flex items-center gap-2">
480
+ <VolumeFullIcon className="h-5 w-5 text-blue-400" />
481
+ <div className="h-2 flex-1 rounded-full bg-white/20">
482
+ <div className="h-full w-full rounded-full bg-blue-400" />
483
+ </div>
484
+ <span className="text-xs text-white">100%</span>
485
+ </div>
486
+ </div>
487
+ </div>
488
+ <div className="flex justify-center gap-4">
489
+ <button className="rounded-lg border border-indigo-500/30 bg-indigo-500/20 px-4 py-2 text-sm text-indigo-200">
490
+ Movie Mode
491
+ </button>
492
+ <button className="rounded-lg border border-white/20 bg-white/10 px-4 py-2 text-sm text-white">
493
+ Music Mode
494
+ </button>
495
+ </div>
496
+ </div>
497
+ <div className="rounded-lg bg-black/40 p-4">
498
+ <pre className="overflow-x-auto text-sm !text-green-300">
499
+ {`// Home theater volume control
500
+ <div className="theater-system">
501
+ <div className="volume-channel">
502
+ <div className="channel-label">Master Volume</div>
503
+ <div className="volume-control">
504
+ <VolumeFullIcon className="h-5 w-5 text-indigo-400" />
505
+ <VolumeSlider
506
+ value={masterVolume}
507
+ max={100}
508
+ onChange={setMasterVolume}
509
+ />
510
+ <span>{masterVolume}%</span>
511
+ </div>
512
+ </div>
513
+ <AudioModeSelector />
514
+ </div>`}
515
+ </pre>
516
+ </div>
517
+ </div>
518
+ </div>
519
+
520
+ {/* Gaming Setup */}
521
+ <div className="!space-y-4">
522
+ <h3 className="text-lg font-semibold !text-indigo-300">
523
+ Gaming Setup
524
+ </h3>
525
+ <div className="!space-y-4">
526
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
527
+ <div className="mb-4">
528
+ <div className="text-sm font-medium !text-white">
529
+ Gaming Audio
530
+ </div>
531
+ <div className="text-xs !text-white/60">
532
+ Enhanced for competitive play
533
+ </div>
534
+ </div>
535
+ <div className="mb-4 space-y-3">
536
+ <div className="flex items-center justify-between">
537
+ <div className="flex items-center gap-3">
538
+ <VolumeFullIcon className="h-5 w-5 text-indigo-400" />
539
+ <div>
540
+ <div className="text-sm text-white">
541
+ Game Audio
542
+ </div>
543
+ <div className="text-xs text-white/60">
544
+ Explosions & Effects
545
+ </div>
546
+ </div>
547
+ </div>
548
+ <div className="h-2 w-20 rounded-full bg-white/20">
549
+ <div className="h-full w-full rounded-full bg-indigo-400" />
550
+ </div>
551
+ </div>
552
+ <div className="flex items-center justify-between">
553
+ <div className="flex items-center gap-3">
554
+ <VolumeFullIcon className="h-5 w-5 text-blue-400" />
555
+ <div>
556
+ <div className="text-sm text-white">
557
+ Voice Chat
558
+ </div>
559
+ <div className="text-xs text-white/60">
560
+ Team Communication
561
+ </div>
562
+ </div>
563
+ </div>
564
+ <div className="h-2 w-20 rounded-full bg-white/20">
565
+ <div className="h-full w-4/5 rounded-full bg-blue-400" />
566
+ </div>
567
+ </div>
568
+ <div className="flex items-center justify-between">
569
+ <div className="flex items-center gap-3">
570
+ <VolumeFullIcon className="h-5 w-5 text-purple-400" />
571
+ <div>
572
+ <div className="text-sm text-white">Music</div>
573
+ <div className="text-xs text-white/60">
574
+ Background Tracks
575
+ </div>
576
+ </div>
577
+ </div>
578
+ <div className="h-2 w-20 rounded-full bg-white/20">
579
+ <div className="h-full w-3/5 rounded-full bg-purple-400" />
580
+ </div>
581
+ </div>
582
+ </div>
583
+ <div className="flex justify-center">
584
+ <button className="rounded-lg bg-indigo-500 px-4 py-2 text-sm font-medium text-white">
585
+ Apply Gaming Profile
586
+ </button>
587
+ </div>
588
+ </div>
589
+ <div className="rounded-lg bg-black/40 p-4">
590
+ <pre className="overflow-x-auto text-sm !text-green-300">
591
+ {`// Gaming audio mixer
592
+ <div className="gaming-audio-mixer">
593
+ {audioChannels.map(channel => (
594
+ <div key={channel.id} className="audio-channel">
595
+ <div className="channel-header">
596
+ <VolumeFullIcon
597
+ className="h-5 w-5"
598
+ style={{ color: channel.color }}
599
+ />
600
+ <div>
601
+ <div className="channel-name">{channel.name}</div>
602
+ <div className="channel-desc">{channel.description}</div>
603
+ </div>
604
+ </div>
605
+ <VolumeSlider
606
+ value={channel.volume}
607
+ max={channel.maxVolume}
608
+ onChange={(val) => setChannelVolume(channel.id, val)}
609
+ />
610
+ </div>
611
+ ))}
612
+ </div>`}
613
+ </pre>
614
+ </div>
615
+ </div>
616
+ </div>
617
+
618
+ {/* Live Streaming */}
619
+ <div className="!space-y-4">
620
+ <h3 className="text-lg font-semibold !text-indigo-300">
621
+ Live Streaming
622
+ </h3>
623
+ <div className="!space-y-4">
624
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
625
+ <div className="mb-4">
626
+ <div className="text-sm font-medium !text-white">
627
+ Streaming Setup
628
+ </div>
629
+ <div className="text-xs !text-white/60">
630
+ Professional broadcast quality
631
+ </div>
632
+ </div>
633
+ <div className="mb-4 grid grid-cols-1 gap-3">
634
+ <div className="flex items-center justify-between rounded-lg bg-black/20 p-3">
635
+ <div className="flex items-center gap-3">
636
+ <VolumeFullIcon className="h-4 w-4 text-indigo-400" />
637
+ <span className="text-sm text-white">
638
+ Microphone
639
+ </span>
640
+ </div>
641
+ <div className="flex items-center gap-2">
642
+ <div className="h-1 w-16 rounded-full bg-white/20">
643
+ <div className="h-full w-4/5 rounded-full bg-indigo-400" />
644
+ </div>
645
+ <span className="text-xs text-white/60">85%</span>
646
+ </div>
647
+ </div>
648
+ <div className="flex items-center justify-between rounded-lg bg-black/20 p-3">
649
+ <div className="flex items-center gap-3">
650
+ <VolumeFullIcon className="h-4 w-4 text-blue-400" />
651
+ <span className="text-sm text-white">
652
+ Desktop Audio
653
+ </span>
654
+ </div>
655
+ <div className="flex items-center gap-2">
656
+ <div className="h-1 w-16 rounded-full bg-white/20">
657
+ <div className="h-full w-full rounded-full bg-blue-400" />
658
+ </div>
659
+ <span className="text-xs text-white/60">
660
+ 100%
661
+ </span>
662
+ </div>
663
+ </div>
664
+ <div className="flex items-center justify-between rounded-lg bg-black/20 p-3">
665
+ <div className="flex items-center gap-3">
666
+ <VolumeFullIcon className="h-4 w-4 text-purple-400" />
667
+ <span className="text-sm text-white">
668
+ Alert Sounds
669
+ </span>
670
+ </div>
671
+ <div className="flex items-center gap-2">
672
+ <div className="h-1 w-16 rounded-full bg-white/20">
673
+ <div className="h-full w-3/4 rounded-full bg-purple-400" />
674
+ </div>
675
+ <span className="text-xs text-white/60">75%</span>
676
+ </div>
677
+ </div>
678
+ </div>
679
+ <div className="flex items-center justify-between">
680
+ <span className="text-xs text-white/60">
681
+ Live: 1,234 viewers
682
+ </span>
683
+ <div className="flex gap-2">
684
+ <div className="h-2 w-2 animate-pulse rounded-full bg-red-400" />
685
+ <span className="text-xs text-red-400">
686
+ Recording
687
+ </span>
688
+ </div>
689
+ </div>
690
+ </div>
691
+ <div className="rounded-lg bg-black/40 p-4">
692
+ <pre className="overflow-x-auto text-sm !text-green-300">
693
+ {`// Live streaming audio control
694
+ <div className="streaming-console">
695
+ <div className="audio-sources">
696
+ {audioSources.map(source => (
697
+ <div key={source.id} className="audio-source">
698
+ <div className="source-info">
699
+ <VolumeFullIcon className="h-4 w-4" />
700
+ <span>{source.name}</span>
701
+ </div>
702
+ <div className="source-controls">
703
+ <VolumeSlider
704
+ value={source.volume}
705
+ max={source.maxGain}
706
+ onChange={(val) => setSourceVolume(source.id, val)}
707
+ />
708
+ <span className="volume-value">{source.volume}%</span>
709
+ </div>
710
+ </div>
711
+ ))}
712
+ </div>
713
+ <StreamingStatus isLive={isStreaming} />
714
+ </div>`}
715
+ </pre>
716
+ </div>
717
+ </div>
718
+ </div>
719
+
720
+ {/* Music Production */}
721
+ <div className="!space-y-4">
722
+ <h3 className="text-lg font-semibold !text-indigo-300">
723
+ Music Production
724
+ </h3>
725
+ <div className="!space-y-4">
726
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
727
+ <div className="mb-4">
728
+ <div className="text-sm font-medium !text-white">
729
+ Digital Audio Workstation
730
+ </div>
731
+ <div className="text-xs !text-white/60">
732
+ Professional mixing console
733
+ </div>
734
+ </div>
735
+ <div className="mb-4 grid grid-cols-3 gap-3">
736
+ {["Vocals", "Instruments", "Effects"].map(
737
+ (track, i) => (
738
+ <div
739
+ key={track}
740
+ className="rounded-lg bg-black/20 p-3"
741
+ >
742
+ <div className="mb-2 text-xs text-white/60">
743
+ {track}
744
+ </div>
745
+ <div className="flex flex-col items-center gap-2">
746
+ <VolumeFullIcon
747
+ className={`h-4 w-4 ${
748
+ i === 0
749
+ ? "text-indigo-400"
750
+ : i === 1
751
+ ? "text-blue-400"
752
+ : "text-purple-400"
753
+ }`}
754
+ />
755
+ <div className="relative h-16 w-2 rounded-full bg-white/20">
756
+ <div
757
+ className={`absolute bottom-0 w-full rounded-full ${
758
+ i === 0
759
+ ? "h-4/5 bg-indigo-400"
760
+ : i === 1
761
+ ? "h-full bg-blue-400"
762
+ : "h-3/5 bg-purple-400"
763
+ }`}
764
+ />
765
+ </div>
766
+ <span className="text-xs text-white">
767
+ {i === 0 ? "85" : i === 1 ? "100" : "60"}%
768
+ </span>
769
+ </div>
770
+ </div>
771
+ )
772
+ )}
773
+ </div>
774
+ <div className="flex justify-center gap-3">
775
+ <button className="rounded bg-red-500 px-3 py-1.5 text-xs text-white">
776
+ ● REC
777
+ </button>
778
+ <button className="rounded bg-green-500 px-3 py-1.5 text-xs text-white">
779
+ ▶ PLAY
780
+ </button>
781
+ <button className="rounded bg-yellow-500 px-3 py-1.5 text-xs text-black">
782
+ ■ STOP
783
+ </button>
784
+ </div>
785
+ </div>
786
+ <div className="rounded-lg bg-black/40 p-4">
787
+ <pre className="overflow-x-auto text-sm !text-green-300">
788
+ {`// Digital audio workstation mixer
789
+ <div className="daw-mixer">
790
+ {tracks.map((track, index) => (
791
+ <div key={track.id} className="mixer-channel">
792
+ <div className="channel-header">
793
+ <VolumeFullIcon className="h-4 w-4" />
794
+ <span>{track.name}</span>
795
+ </div>
796
+ <div className="fader-section">
797
+ <VerticalSlider
798
+ value={track.volume}
799
+ max={track.maxGain}
800
+ onChange={(val) => setTrackVolume(track.id, val)}
801
+ className="volume-fader"
802
+ />
803
+ <div className="volume-display">
804
+ {track.volume}%
805
+ </div>
806
+ </div>
807
+ </div>
808
+ ))}
809
+ <MasterSection />
810
+ </div>`}
811
+ </pre>
812
+ </div>
813
+ </div>
814
+ </div>
815
+ </div>
816
+ </div>
817
+
818
+ {/* Accessibility */}
819
+ <div className="!space-y-8">
820
+ <h2 className="text-center text-3xl font-bold !text-white">
821
+ Accessibility Features
822
+ </h2>
823
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
824
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
825
+ <h3 className="text-lg font-semibold !text-green-300">
826
+ ✅ Built-in Features
827
+ </h3>
828
+ <ul className="!space-y-2 text-sm !text-white/70">
829
+ <li className="!text-white/70">
830
+ Uses Radix UI AccessibleIcon wrapper
831
+ </li>
832
+ <li className="!text-white/70">
833
+ Provides screen reader label "Volume full icon"
834
+ </li>
835
+ <li className="!text-white/70">
836
+ Supports keyboard navigation when interactive
837
+ </li>
838
+ <li className="!text-white/70">
839
+ Maintains proper color contrast ratios
840
+ </li>
841
+ <li className="!text-white/70">
842
+ Scales with user's font size preferences
843
+ </li>
844
+ </ul>
845
+ </div>
846
+
847
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
848
+ <h3 className="text-lg font-semibold !text-indigo-300">
849
+ 💡 Best Practices
850
+ </h3>
851
+ <ul className="!space-y-2 text-sm text-white/70">
852
+ <li className="!text-white/70">
853
+ Always provide descriptive aria-labels for maximum
854
+ volume controls
855
+ </li>
856
+ <li className="!text-white/70">
857
+ Use consistent placement in audio control groups
858
+ </li>
859
+ <li className="!text-white/70">
860
+ Ensure sufficient touch target size (44px minimum)
861
+ </li>
862
+ <li className="!text-white/70">
863
+ Provide visible focus states for keyboard users
864
+ </li>
865
+ <li className="!text-white/70">
866
+ Consider volume limits for hearing protection
867
+ </li>
868
+ </ul>
869
+ </div>
870
+ </div>
871
+
872
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
873
+ <h3 className="mb-4 text-lg font-semibold !text-blue-300">
874
+ Proper ARIA Implementation
875
+ </h3>
876
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
877
+ <div className="rounded-lg bg-black/40 p-4">
878
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
879
+ {`// Maximum volume control with proper ARIA
880
+ <div className="volume-control">
881
+ <button
882
+ aria-label="Set maximum volume"
883
+ onClick={setMaxVolume}
884
+ aria-describedby="volume-warning"
885
+ >
886
+ <VolumeFullIcon className="h-6 w-6 text-indigo-400" />
887
+ </button>
888
+ <div id="volume-warning" className="sr-only">
889
+ Warning: Maximum volume may damage hearing
890
+ </div>
891
+ </div>
892
+
893
+ // Volume slider with maximum indicator
894
+ <div className="volume-slider">
895
+ <VolumeFullIcon
896
+ className="h-5 w-5"
897
+ aria-describedby="max-volume-label"
898
+ />
899
+ <div
900
+ role="slider"
901
+ aria-label="Volume"
902
+ aria-valuemin="0"
903
+ aria-valuemax="100"
904
+ aria-valuenow={100}
905
+ aria-valuetext="Maximum volume, 100 percent"
906
+ />
907
+ <div id="max-volume-label" className="sr-only">
908
+ Volume at maximum level
909
+ </div>
910
+ </div>
911
+
912
+ // Professional audio with gain control
913
+ <button
914
+ aria-label="Set track gain to maximum"
915
+ aria-pressed={gain === maxGain}
916
+ onClick={() => setGain(maxGain)}
917
+ >
918
+ <VolumeFullIcon className="h-4 w-4" />
919
+ <span>Max Gain</span>
920
+ </button>`}
921
+ </pre>
922
+ </div>
923
+ <div className="!space-y-4">
924
+ <p className="text-sm !text-white/70">
925
+ When using VolumeFullIcon for maximum volume controls,
926
+ always provide clear warnings about potential hearing
927
+ damage and context about the high volume level.
928
+ </p>
929
+ <div className="rounded-lg border border-indigo-500/20 bg-indigo-500/10 p-4">
930
+ <div className="flex items-center gap-2 text-sm text-indigo-200">
931
+ <VolumeFullIcon className="h-4 w-4" />
932
+ <span>
933
+ Maximum volume controls need hearing protection
934
+ warnings
935
+ </span>
936
+ </div>
937
+ </div>
938
+ </div>
939
+ </div>
940
+ </div>
941
+ </div>
942
+
943
+ {/* Related Icons */}
944
+ <div className="!space-y-8">
945
+ <h2 className="text-center text-3xl font-bold !text-white">
946
+ Related Icons
947
+ </h2>
948
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
949
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
950
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-emerald-500/20">
951
+ <span className="!text-2xl !text-white">🔉</span>
952
+ </div>
953
+ <div>
954
+ <div className="font-medium text-white">
955
+ VolumeHalfIcon
956
+ </div>
957
+ <div className="text-xs text-white/60">Medium volume</div>
958
+ </div>
959
+ </div>
960
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
961
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-yellow-500/20">
962
+ <span className="!text-2xl !text-white">🔈</span>
963
+ </div>
964
+ <div>
965
+ <div className="font-medium text-white">
966
+ VolumeLowIcon
967
+ </div>
968
+ <div className="text-xs text-white/60">Low volume</div>
969
+ </div>
970
+ </div>
971
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
972
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-gray-500/20">
973
+ <span className="!text-2xl !text-white">🔇</span>
974
+ </div>
975
+ <div>
976
+ <div className="font-medium text-white">
977
+ VolumeOffIcon
978
+ </div>
979
+ <div className="text-xs text-white/60">Muted</div>
980
+ </div>
981
+ </div>
982
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
983
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
984
+ <span className="!text-2xl !text-white">⚠️</span>
985
+ </div>
986
+ <div>
987
+ <div className="font-medium text-white">
988
+ VolumeWarningIcon
989
+ </div>
990
+ <div className="text-xs text-white/60">Volume alert</div>
991
+ </div>
992
+ </div>
993
+ </div>
994
+ </div>
995
+ </div>
996
+
997
+ {/* Footer */}
998
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
999
+ <div className="!mx-auto max-w-7xl px-6 py-8">
1000
+ <div className="!space-y-4 text-center">
1001
+ <p className="!text-white/60">
1002
+ VolumeFullIcon is part of the Aural UI icon library, built
1003
+ with accessibility and professional audio control best
1004
+ practices in mind.
1005
+ </p>
1006
+ <p className="text-sm !text-white/40">
1007
+ All icons use Radix UI's AccessibleIcon for screen reader
1008
+ compatibility and follow WCAG guidelines for media controls
1009
+ and hearing protection.
1010
+ </p>
1011
+ </div>
1012
+ </div>
1013
+ </div>
1014
+ </div>
1015
+ </>
1016
+ ),
1017
+ },
1018
+ },
1019
+ tags: ["autodocs"],
1020
+ argTypes: {
1021
+ width: {
1022
+ control: { type: "range", min: 8, max: 96, step: 2 },
1023
+ description: "Width of the icon in pixels",
1024
+ },
1025
+ height: {
1026
+ control: { type: "range", min: 8, max: 96, step: 2 },
1027
+ description: "Height of the icon in pixels",
1028
+ },
1029
+ stroke: {
1030
+ control: "color",
1031
+ description: "Stroke color of the icon",
1032
+ },
1033
+ strokeWidth: {
1034
+ control: { type: "range", min: 0.5, max: 4, step: 0.5 },
1035
+ description: "Width of the stroke",
1036
+ },
1037
+ className: {
1038
+ control: "text",
1039
+ description: "CSS classes for styling (use for overrides)",
1040
+ },
1041
+ onClick: {
1042
+ action: "clicked",
1043
+ description: "Click handler for interactive use",
1044
+ },
1045
+ },
1046
+ }
1047
+
1048
+ export default meta
1049
+ type Story = StoryObj<typeof VolumeFullIcon>
1050
+
1051
+ // Story parameters for consistent dark theme
1052
+ const storyParameters = {
1053
+ backgrounds: {
1054
+ default: "dark",
1055
+ values: [
1056
+ { name: "dark", value: "#0a0a0a" },
1057
+ { name: "darker", value: "#000000" },
1058
+ ],
1059
+ },
1060
+ }
1061
+
1062
+ export const Default: Story = {
1063
+ args: {
1064
+ className: "h-8 w-8 text-indigo-400",
1065
+ },
1066
+ parameters: storyParameters,
1067
+ render: (args) => (
1068
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1069
+ <VolumeFullIcon {...args} />
1070
+ </div>
1071
+ ),
1072
+ }
1073
+
1074
+ export const SizeVariations: Story = {
1075
+ parameters: {
1076
+ ...storyParameters,
1077
+ docs: {
1078
+ description: {
1079
+ story:
1080
+ "VolumeFullIcon in different sizes, from small interface elements to large professional audio displays.",
1081
+ },
1082
+ },
1083
+ },
1084
+ render: () => (
1085
+ <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">
1086
+ <div className="text-center">
1087
+ <VolumeFullIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
1088
+ <span className="text-xs text-white/60">12px</span>
1089
+ </div>
1090
+ <div className="text-center">
1091
+ <VolumeFullIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
1092
+ <span className="text-xs text-white/60">16px</span>
1093
+ </div>
1094
+ <div className="text-center">
1095
+ <VolumeFullIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
1096
+ <span className="text-xs text-white/60">20px</span>
1097
+ </div>
1098
+ <div className="text-center">
1099
+ <VolumeFullIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
1100
+ <span className="text-xs text-white/60">24px</span>
1101
+ </div>
1102
+ <div className="text-center">
1103
+ <VolumeFullIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
1104
+ <span className="text-xs text-white/60">32px</span>
1105
+ </div>
1106
+ <div className="text-center">
1107
+ <VolumeFullIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
1108
+ <span className="text-xs text-white/60">48px</span>
1109
+ </div>
1110
+ </div>
1111
+ ),
1112
+ }
1113
+
1114
+ export const ColorVariations: Story = {
1115
+ parameters: {
1116
+ ...storyParameters,
1117
+ docs: {
1118
+ description: {
1119
+ story:
1120
+ "VolumeFullIcon in different semantic colors for various maximum volume applications.",
1121
+ },
1122
+ },
1123
+ },
1124
+ render: () => (
1125
+ <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">
1126
+ <div className="text-center">
1127
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-indigo-500/30 bg-indigo-500/20">
1128
+ <VolumeFullIcon className="h-8 w-8 text-indigo-400" />
1129
+ </div>
1130
+ <div className="text-sm font-medium text-white">Maximum</div>
1131
+ <div className="text-xs text-indigo-400">text-indigo-400</div>
1132
+ </div>
1133
+ <div className="text-center">
1134
+ <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">
1135
+ <VolumeFullIcon className="h-8 w-8 text-blue-400" />
1136
+ </div>
1137
+ <div className="text-sm font-medium text-white">High Power</div>
1138
+ <div className="text-xs text-blue-400">text-blue-400</div>
1139
+ </div>
1140
+ <div className="text-center">
1141
+ <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">
1142
+ <VolumeFullIcon className="h-8 w-8 text-purple-400" />
1143
+ </div>
1144
+ <div className="text-sm font-medium text-white">Enhanced</div>
1145
+ <div className="text-xs text-purple-400">text-purple-400</div>
1146
+ </div>
1147
+ <div className="text-center">
1148
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-violet-500/30 bg-violet-500/20">
1149
+ <VolumeFullIcon className="h-8 w-8 text-violet-400" />
1150
+ </div>
1151
+ <div className="text-sm font-medium text-white">Premium</div>
1152
+ <div className="text-xs text-violet-400">text-violet-400</div>
1153
+ </div>
1154
+ </div>
1155
+ ),
1156
+ }
1157
+
1158
+ export const UsageExamples: Story = {
1159
+ parameters: {
1160
+ ...storyParameters,
1161
+ docs: {
1162
+ description: {
1163
+ story:
1164
+ "Real-world usage examples showing VolumeFullIcon in different professional audio contexts.",
1165
+ },
1166
+ },
1167
+ },
1168
+ render: () => (
1169
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1170
+ {/* Home Theater */}
1171
+ <div className="!space-y-2">
1172
+ <h3 className="text-sm font-medium text-white">Home Theater System</h3>
1173
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
1174
+ <div className="flex items-center justify-between">
1175
+ <div className="flex items-center gap-3">
1176
+ <VolumeFullIcon className="h-5 w-5 text-indigo-400" />
1177
+ <div>
1178
+ <div className="text-sm text-white">Master Volume</div>
1179
+ <div className="text-xs text-white/60">80%</div>
1180
+ </div>
1181
+ </div>
1182
+ <div className="h-2 w-24 rounded-full bg-white/20">
1183
+ <div className="h-full w-4/5 rounded-full bg-indigo-400" />
1184
+ </div>
1185
+ </div>
1186
+ </div>
1187
+ </div>
1188
+
1189
+ {/* Gaming Setup */}
1190
+ <div className="!space-y-2">
1191
+ <h3 className="text-sm font-medium text-white">Gaming Audio</h3>
1192
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1193
+ <div className="flex items-center justify-between">
1194
+ <div className="flex items-center gap-3">
1195
+ <VolumeFullIcon className="h-5 w-5 text-blue-400" />
1196
+ <span className="text-sm text-white">Game Audio</span>
1197
+ </div>
1198
+ <div className="h-2 w-20 rounded-full bg-white/20">
1199
+ <div className="h-full w-full rounded-full bg-blue-400" />
1200
+ </div>
1201
+ </div>
1202
+ </div>
1203
+ </div>
1204
+ </div>
1205
+ ),
1206
+ }
1207
+
1208
+ export const Playground: Story = {
1209
+ parameters: {
1210
+ ...storyParameters,
1211
+ docs: {
1212
+ description: {
1213
+ story:
1214
+ "Interactive playground to experiment with different VolumeFullIcon configurations.",
1215
+ },
1216
+ },
1217
+ },
1218
+ args: {
1219
+ width: 24,
1220
+ height: 24,
1221
+ className: "text-indigo-400",
1222
+ },
1223
+ render: (args) => (
1224
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1225
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1226
+ <VolumeFullIcon {...args} />
1227
+ </div>
1228
+ </div>
1229
+ ),
1230
+ }