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,1214 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { MinimizeIcon } from "."
5
+
6
+ const meta: Meta<typeof MinimizeIcon> = {
7
+ title: "Icons/MinimizeIcon",
8
+ component: MinimizeIcon,
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-orange-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-orange-500/10 via-transparent to-amber-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-orange-500/30 bg-gradient-to-br from-orange-500/20 to-amber-500/20">
90
+ <MinimizeIcon className="h-12 w-12 text-orange-400" />
91
+ </div>
92
+ <h1 className="text-5xl font-bold !text-white">
93
+ MinimizeIcon
94
+ </h1>
95
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
+ A compact and exit fullscreen control icon for reducing
97
+ interface elements. Features diagonal arrows pointing
98
+ inward, essential for media players, modal dialogs, window
99
+ controls, and any interface where users need to exit
100
+ fullscreen or minimize content.
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-orange-300">
107
+ Exit Fullscreen
108
+ </div>
109
+ <div className="text-sm text-white/60">
110
+ Compact content
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-amber-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-yellow-300">
125
+ Universal
126
+ </div>
127
+ <div className="text-sm text-white/60">
128
+ Standard minimize 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-orange-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 { MinimizeIcon } from "@icons/minimize-icon"
151
+
152
+ function VideoPlayer() {
153
+ return (
154
+ <button
155
+ onClick={exitFullscreen}
156
+ className="p-2 hover:bg-white/10 rounded-lg"
157
+ aria-label="Exit fullscreen mode"
158
+ >
159
+ <MinimizeIcon className="h-6 w-6 text-orange-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-orange-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-orange-500/20 bg-orange-500/10 p-3 transition-colors hover:bg-orange-500/20">
173
+ <MinimizeIcon className="h-6 w-6 text-orange-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-orange-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-orange-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-orange-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-orange-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-orange-300">
262
+ strokeLinecap
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">
268
+ square
269
+ </td>
270
+ <td className="px-6 py-4 text-sm !text-white/70">
271
+ Style of line endings (square for crisp corners)
272
+ </td>
273
+ </tr>
274
+ <tr className="border-b border-white/5 !bg-black/10">
275
+ <td className="px-6 py-4 font-mono text-sm !text-orange-300">
276
+ className
277
+ </td>
278
+ <td className="px-6 py-4 text-sm !text-white/70">
279
+ string
280
+ </td>
281
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
282
+ <td className="px-6 py-4 text-sm !text-white/70">
283
+ CSS classes for styling (use for overrides)
284
+ </td>
285
+ </tr>
286
+ <tr className="!bg-black/10">
287
+ <td className="px-6 py-4 font-mono text-sm !text-orange-300">
288
+ ...svgProps
289
+ </td>
290
+ <td className="px-6 py-4 text-sm !text-white/70">
291
+ SVGProps
292
+ </td>
293
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
294
+ <td className="px-6 py-4 text-sm !text-white/70">
295
+ All standard SVG element props
296
+ </td>
297
+ </tr>
298
+ </tbody>
299
+ </table>
300
+ </div>
301
+ </div>
302
+
303
+ {/* Size Variations */}
304
+ <div className="!space-y-8">
305
+ <h2 className="text-center text-3xl font-bold !text-white">
306
+ Size Variations
307
+ </h2>
308
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
309
+ <div className="!space-y-6">
310
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
311
+ <div className="!space-y-4">
312
+ <h3 className="text-lg font-semibold !text-orange-300">
313
+ Standard Sizes
314
+ </h3>
315
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
316
+ <div className="text-center">
317
+ <MinimizeIcon className="!mx-auto mb-2 h-3 w-3 text-orange-400" />
318
+ <span className="text-xs text-white/60">12px</span>
319
+ </div>
320
+ <div className="text-center">
321
+ <MinimizeIcon className="!mx-auto mb-2 h-4 w-4 text-orange-400" />
322
+ <span className="text-xs text-white/60">16px</span>
323
+ </div>
324
+ <div className="text-center">
325
+ <MinimizeIcon className="!mx-auto mb-2 h-5 w-5 text-orange-400" />
326
+ <span className="text-xs text-white/60">20px</span>
327
+ </div>
328
+ <div className="text-center">
329
+ <MinimizeIcon className="!mx-auto mb-2 h-6 w-6 text-orange-400" />
330
+ <span className="text-xs text-white/60">24px</span>
331
+ </div>
332
+ <div className="text-center">
333
+ <MinimizeIcon className="!mx-auto mb-2 h-8 w-8 text-orange-400" />
334
+ <span className="text-xs text-white/60">32px</span>
335
+ </div>
336
+ <div className="text-center">
337
+ <MinimizeIcon className="!mx-auto mb-2 h-12 w-12 text-orange-400" />
338
+ <span className="text-xs text-white/60">48px</span>
339
+ </div>
340
+ </div>
341
+ </div>
342
+
343
+ <div className="!space-y-4">
344
+ <h3 className="text-lg font-semibold !text-orange-300">
345
+ Code Example
346
+ </h3>
347
+ <div className="rounded-lg bg-black/40 p-4">
348
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
349
+ {`// Small (16px) - compact controls
350
+ <MinimizeIcon className="h-4 w-4" />
351
+
352
+ // Medium (24px) - standard interface
353
+ <MinimizeIcon className="h-6 w-6" />
354
+
355
+ // Large (32px) - prominent displays
356
+ <MinimizeIcon className="h-8 w-8" />
357
+
358
+ // Custom size
359
+ <MinimizeIcon width={40} height={40} />`}
360
+ </pre>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ </div>
365
+ </div>
366
+ </div>
367
+
368
+ {/* Color Variations */}
369
+ <div className="!space-y-8">
370
+ <h2 className="text-center text-3xl font-bold !text-white">
371
+ Color Variations
372
+ </h2>
373
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
374
+ <div className="!space-y-4">
375
+ <h3 className="text-lg font-semibold !text-orange-300">
376
+ Semantic Colors
377
+ </h3>
378
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
379
+ <div className="flex items-center gap-4">
380
+ <MinimizeIcon className="h-6 w-6 text-orange-400" />
381
+ <div>
382
+ <div className="text-sm font-medium text-white">
383
+ Exit Fullscreen
384
+ </div>
385
+ <div className="text-xs text-white/60">
386
+ text-orange-400
387
+ </div>
388
+ </div>
389
+ </div>
390
+ <div className="flex items-center gap-4">
391
+ <MinimizeIcon className="h-6 w-6 text-amber-400" />
392
+ <div>
393
+ <div className="text-sm font-medium text-white">
394
+ Compact View
395
+ </div>
396
+ <div className="text-xs text-white/60">
397
+ text-amber-400
398
+ </div>
399
+ </div>
400
+ </div>
401
+ <div className="flex items-center gap-4">
402
+ <MinimizeIcon className="h-6 w-6 text-yellow-400" />
403
+ <div>
404
+ <div className="text-sm font-medium text-white">
405
+ Window Minimize
406
+ </div>
407
+ <div className="text-xs text-white/60">
408
+ text-yellow-400
409
+ </div>
410
+ </div>
411
+ </div>
412
+ <div className="flex items-center gap-4">
413
+ <MinimizeIcon className="h-6 w-6 text-red-400" />
414
+ <div>
415
+ <div className="text-sm font-medium text-white">
416
+ Close/Dismiss
417
+ </div>
418
+ <div className="text-xs text-white/60">
419
+ text-red-400
420
+ </div>
421
+ </div>
422
+ </div>
423
+ </div>
424
+ </div>
425
+
426
+ <div className="!space-y-4">
427
+ <h3 className="text-lg font-semibold !text-orange-300">
428
+ Custom Colors
429
+ </h3>
430
+ <div className="rounded-lg bg-black/40 p-4">
431
+ <pre className="overflow-x-auto text-sm !text-green-300">
432
+ {`// Using Tailwind classes
433
+ <MinimizeIcon className="h-6 w-6 text-orange-400" />
434
+ <MinimizeIcon className="h-6 w-6 text-amber-500" />
435
+
436
+ // Using CSS custom properties
437
+ <MinimizeIcon
438
+ className="h-6 w-6"
439
+ style={{ color: 'var(--color-minimize)' }}
440
+ />
441
+
442
+ // Direct stroke prop
443
+ <MinimizeIcon
444
+ width={24}
445
+ height={24}
446
+ stroke="#f97316"
447
+ />`}
448
+ </pre>
449
+ </div>
450
+ </div>
451
+ </div>
452
+ </div>
453
+
454
+ {/* Usage Examples */}
455
+ <div className="!space-y-8">
456
+ <h2 className="text-center text-3xl font-bold !text-white">
457
+ Usage Examples
458
+ </h2>
459
+
460
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
461
+ {/* Video Player Fullscreen */}
462
+ <div className="!space-y-4">
463
+ <h3 className="text-lg font-semibold !text-orange-300">
464
+ Video Player Fullscreen
465
+ </h3>
466
+ <div className="!space-y-4">
467
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
468
+ <div className="relative mb-4 aspect-video overflow-hidden rounded-lg bg-black">
469
+ <div className="absolute inset-0 flex items-center justify-center bg-gradient-to-br from-gray-800 to-gray-900">
470
+ <div className="flex h-16 w-16 items-center justify-center rounded-full bg-white/20">
471
+ <div className="ml-1 h-0 w-0 border-y-[8px] border-l-[12px] border-y-transparent border-l-white" />
472
+ </div>
473
+ </div>
474
+ <div className="absolute top-4 right-4">
475
+ <button className="rounded border border-orange-500/30 bg-black/60 p-3 transition-colors hover:bg-orange-500/20">
476
+ <MinimizeIcon className="h-5 w-5 text-orange-400" />
477
+ </button>
478
+ </div>
479
+ <div className="absolute right-0 bottom-0 left-0 bg-gradient-to-t from-black/80 to-transparent p-4">
480
+ <div className="flex items-center justify-between">
481
+ <div className="flex items-center gap-3">
482
+ <button className="rounded p-2 transition-colors hover:bg-white/20">
483
+ <div className="h-0 w-0 border-y-[6px] border-l-[8px] border-y-transparent border-l-white" />
484
+ </button>
485
+ <span className="text-sm text-white">
486
+ 1:23 / 2:18
487
+ </span>
488
+ </div>
489
+ <div className="flex items-center gap-2">
490
+ <span className="text-xs text-white/60">
491
+ Fullscreen Mode
492
+ </span>
493
+ <kbd className="rounded bg-white/10 px-2 py-1 text-xs text-white">
494
+ ESC
495
+ </kbd>
496
+ </div>
497
+ </div>
498
+ </div>
499
+ </div>
500
+ <div className="text-center">
501
+ <div className="text-sm font-medium text-white">
502
+ "Space Documentary - Full Experience"
503
+ </div>
504
+ <div className="text-xs text-white/60">
505
+ Click minimize to exit fullscreen mode
506
+ </div>
507
+ </div>
508
+ </div>
509
+ <div className="rounded-lg bg-black/40 p-4">
510
+ <pre className="overflow-x-auto text-sm !text-green-300">
511
+ {`// Fullscreen video player with exit control
512
+ <div className="fullscreen-video-player">
513
+ <video ref={videoRef} className="fullscreen-video" />
514
+ <div className="fullscreen-controls">
515
+ <button
516
+ onClick={exitFullscreen}
517
+ className="exit-fullscreen-btn"
518
+ aria-label="Exit fullscreen mode"
519
+ >
520
+ <MinimizeIcon className="h-5 w-5 text-orange-400" />
521
+ </button>
522
+ </div>
523
+ <div className="video-overlay-controls">
524
+ <PlayPauseButton />
525
+ <ProgressBar />
526
+ <div className="fullscreen-hint">
527
+ <span>Fullscreen Mode</span>
528
+ <kbd>ESC</kbd>
529
+ </div>
530
+ </div>
531
+ </div>`}
532
+ </pre>
533
+ </div>
534
+ </div>
535
+ </div>
536
+
537
+ {/* Window Controls */}
538
+ <div className="!space-y-4">
539
+ <h3 className="text-lg font-semibold !text-orange-300">
540
+ Window Controls
541
+ </h3>
542
+ <div className="!space-y-4">
543
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
544
+ <div className="overflow-hidden rounded-lg border border-white/20 bg-black/50">
545
+ <div className="flex items-center justify-between border-b border-white/10 bg-white/5 p-3">
546
+ <div className="flex items-center gap-3">
547
+ <div className="flex gap-2">
548
+ <div className="h-3 w-3 rounded-full bg-red-400"></div>
549
+ <div className="h-3 w-3 rounded-full bg-yellow-400"></div>
550
+ <div className="h-3 w-3 rounded-full bg-green-400"></div>
551
+ </div>
552
+ <span className="text-sm text-white">
553
+ Application Window
554
+ </span>
555
+ </div>
556
+ <div className="flex items-center gap-1">
557
+ <button className="rounded border border-orange-500/30 bg-orange-500/10 p-1.5 transition-colors hover:bg-orange-500/20">
558
+ <MinimizeIcon className="h-3 w-3 text-orange-400" />
559
+ </button>
560
+ <button className="rounded p-1.5 transition-colors hover:bg-white/20">
561
+ <div className="h-3 w-3 rounded-sm border border-white"></div>
562
+ </button>
563
+ <button className="rounded p-1.5 transition-colors hover:bg-red-500/20">
564
+ <div className="relative h-3 w-3">
565
+ <div className="absolute inset-0 rotate-45 border border-white"></div>
566
+ <div className="absolute inset-0 -rotate-45 border border-white"></div>
567
+ </div>
568
+ </button>
569
+ </div>
570
+ </div>
571
+ <div className="p-6">
572
+ <div className="text-center">
573
+ <div className="mx-auto mb-4 flex h-24 w-24 items-center justify-center rounded-lg bg-white/10">
574
+ <span className="text-2xl">📄</span>
575
+ </div>
576
+ <div className="text-sm font-medium text-white">
577
+ Document Editor
578
+ </div>
579
+ <div className="text-xs text-white/60">
580
+ Unsaved changes
581
+ </div>
582
+ </div>
583
+ </div>
584
+ </div>
585
+ </div>
586
+ <div className="rounded-lg bg-black/40 p-4">
587
+ <pre className="overflow-x-auto text-sm !text-green-300">
588
+ {`// Desktop application window controls
589
+ <div className="window">
590
+ <div className="window-titlebar">
591
+ <div className="window-controls-left">
592
+ <TrafficLights />
593
+ <WindowTitle title={document.name} />
594
+ </div>
595
+ <div className="window-controls-right">
596
+ <button
597
+ onClick={minimizeWindow}
598
+ className="window-control-btn minimize"
599
+ aria-label="Minimize window"
600
+ >
601
+ <MinimizeIcon className="h-3 w-3 text-orange-400" />
602
+ </button>
603
+ <MaximizeButton />
604
+ <CloseButton />
605
+ </div>
606
+ </div>
607
+ <div className="window-content">
608
+ <DocumentEditor />
609
+ </div>
610
+ </div>`}
611
+ </pre>
612
+ </div>
613
+ </div>
614
+ </div>
615
+
616
+ {/* Modal Collapse */}
617
+ <div className="!space-y-4">
618
+ <h3 className="text-lg font-semibold !text-orange-300">
619
+ Modal Collapse
620
+ </h3>
621
+ <div className="!space-y-4">
622
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
623
+ <div className="rounded-lg border border-white/20 bg-black/50 p-6">
624
+ <div className="mb-4 flex items-start justify-between">
625
+ <div>
626
+ <h4 className="text-lg font-semibold text-white">
627
+ Settings Panel
628
+ </h4>
629
+ <p className="text-sm text-white/60">
630
+ Customize your preferences
631
+ </p>
632
+ </div>
633
+ <div className="flex items-center gap-2">
634
+ <button className="rounded border border-orange-500/30 bg-orange-500/10 p-2 transition-colors hover:bg-orange-500/20">
635
+ <MinimizeIcon className="h-4 w-4 text-orange-400" />
636
+ </button>
637
+ <button className="rounded p-2 transition-colors hover:bg-white/20">
638
+ <div className="relative h-4 w-4">
639
+ <div className="absolute inset-0 rotate-45 border border-white"></div>
640
+ <div className="absolute inset-0 -rotate-45 border border-white"></div>
641
+ </div>
642
+ </button>
643
+ </div>
644
+ </div>
645
+ <div className="space-y-4">
646
+ <div className="flex items-center justify-between">
647
+ <span className="text-sm text-white">
648
+ Dark Mode
649
+ </span>
650
+ <div className="relative h-6 w-10 rounded-full bg-orange-500">
651
+ <div className="absolute top-1 right-1 h-4 w-4 rounded-full bg-white"></div>
652
+ </div>
653
+ </div>
654
+ <div className="flex items-center justify-between">
655
+ <span className="text-sm text-white">
656
+ Notifications
657
+ </span>
658
+ <div className="relative h-6 w-10 rounded-full bg-white/20">
659
+ <div className="absolute top-1 left-1 h-4 w-4 rounded-full bg-white"></div>
660
+ </div>
661
+ </div>
662
+ <div className="flex items-center justify-between">
663
+ <span className="text-sm text-white">
664
+ Auto-save
665
+ </span>
666
+ <div className="relative h-6 w-10 rounded-full bg-orange-500">
667
+ <div className="absolute top-1 right-1 h-4 w-4 rounded-full bg-white"></div>
668
+ </div>
669
+ </div>
670
+ </div>
671
+ </div>
672
+ </div>
673
+ <div className="rounded-lg bg-black/40 p-4">
674
+ <pre className="overflow-x-auto text-sm !text-green-300">
675
+ {`// Modal with minimize/collapse option
676
+ <Modal isOpen={isSettingsOpen} onClose={closeSettings}>
677
+ <div className="modal-header">
678
+ <div className="modal-title">
679
+ <h3>Settings Panel</h3>
680
+ <p>Customize your preferences</p>
681
+ </div>
682
+ <div className="modal-actions">
683
+ <button
684
+ onClick={minimizeSettings}
685
+ className="minimize-btn"
686
+ aria-label="Minimize settings panel"
687
+ >
688
+ <MinimizeIcon className="h-4 w-4 text-orange-400" />
689
+ </button>
690
+ <CloseButton onClick={closeSettings} />
691
+ </div>
692
+ </div>
693
+ <div className="modal-content">
694
+ <SettingsForm />
695
+ </div>
696
+ </Modal>`}
697
+ </pre>
698
+ </div>
699
+ </div>
700
+ </div>
701
+
702
+ {/* Sidebar Collapse */}
703
+ <div className="!space-y-4">
704
+ <h3 className="text-lg font-semibold !text-orange-300">
705
+ Sidebar Collapse
706
+ </h3>
707
+ <div className="!space-y-4">
708
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
709
+ <div className="flex overflow-hidden rounded-lg border border-white/10 bg-black/30">
710
+ <div className="w-64 border-r border-white/10 bg-white/5 p-4">
711
+ <div className="mb-4 flex items-center justify-between">
712
+ <h4 className="text-sm font-semibold text-white">
713
+ Navigation
714
+ </h4>
715
+ <button className="rounded border border-orange-500/30 bg-orange-500/10 p-1 transition-colors hover:bg-orange-500/20">
716
+ <MinimizeIcon className="h-3 w-3 text-orange-400" />
717
+ </button>
718
+ </div>
719
+ <nav className="space-y-2">
720
+ <a
721
+ href="#"
722
+ className="block rounded bg-orange-500/20 px-3 py-2 text-sm text-white"
723
+ >
724
+ Dashboard
725
+ </a>
726
+ <a
727
+ href="#"
728
+ className="block rounded px-3 py-2 text-sm text-white/70 transition-colors hover:bg-white/10"
729
+ >
730
+ Projects
731
+ </a>
732
+ <a
733
+ href="#"
734
+ className="block rounded px-3 py-2 text-sm text-white/70 transition-colors hover:bg-white/10"
735
+ >
736
+ Team
737
+ </a>
738
+ <a
739
+ href="#"
740
+ className="block rounded px-3 py-2 text-sm text-white/70 transition-colors hover:bg-white/10"
741
+ >
742
+ Settings
743
+ </a>
744
+ </nav>
745
+ </div>
746
+ <div className="flex-1 p-6">
747
+ <div className="text-center">
748
+ <div className="mx-auto mb-4 flex h-20 w-32 items-center justify-center rounded-lg bg-white/10">
749
+ <span className="text-3xl">📊</span>
750
+ </div>
751
+ <div className="text-lg font-medium text-white">
752
+ Main Content Area
753
+ </div>
754
+ <div className="text-sm text-white/60">
755
+ Your dashboard content goes here
756
+ </div>
757
+ </div>
758
+ </div>
759
+ </div>
760
+ </div>
761
+ <div className="rounded-lg bg-black/40 p-4">
762
+ <pre className="overflow-x-auto text-sm !text-green-300">
763
+ {`// Collapsible sidebar navigation
764
+ <div className="app-layout">
765
+ <aside className="sidebar">
766
+ <div className="sidebar-header">
767
+ <h3>Navigation</h3>
768
+ <button
769
+ onClick={collapseSidebar}
770
+ className="collapse-sidebar-btn"
771
+ aria-label="Collapse navigation sidebar"
772
+ >
773
+ <MinimizeIcon className="h-3 w-3 text-orange-400" />
774
+ </button>
775
+ </div>
776
+ <nav className="sidebar-nav">
777
+ <NavLink to="/dashboard">Dashboard</NavLink>
778
+ <NavLink to="/projects">Projects</NavLink>
779
+ <NavLink to="/team">Team</NavLink>
780
+ <NavLink to="/settings">Settings</NavLink>
781
+ </nav>
782
+ </aside>
783
+ <main className="main-content">
784
+ <DashboardContent />
785
+ </main>
786
+ </div>`}
787
+ </pre>
788
+ </div>
789
+ </div>
790
+ </div>
791
+ </div>
792
+ </div>
793
+
794
+ {/* Accessibility */}
795
+ <div className="!space-y-8">
796
+ <h2 className="text-center text-3xl font-bold !text-white">
797
+ Accessibility Features
798
+ </h2>
799
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
800
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
801
+ <h3 className="text-lg font-semibold !text-green-300">
802
+ ✅ Built-in Features
803
+ </h3>
804
+ <ul className="!space-y-2 text-sm !text-white/70">
805
+ <li className="!text-white/70">
806
+ Uses Radix UI AccessibleIcon wrapper
807
+ </li>
808
+ <li className="!text-white/70">
809
+ Provides screen reader label "Minimize icon"
810
+ </li>
811
+ <li className="!text-white/70">
812
+ Supports keyboard navigation when interactive
813
+ </li>
814
+ <li className="!text-white/70">
815
+ Maintains proper color contrast ratios
816
+ </li>
817
+ <li className="!text-white/70">
818
+ Uses square strokeLinecap for crisp visual clarity
819
+ </li>
820
+ </ul>
821
+ </div>
822
+
823
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
824
+ <h3 className="text-lg font-semibold !text-orange-300">
825
+ 💡 Best Practices
826
+ </h3>
827
+ <ul className="!space-y-2 text-sm text-white/70">
828
+ <li className="!text-white/70">
829
+ Always provide descriptive aria-labels for minimize
830
+ actions
831
+ </li>
832
+ <li className="!text-white/70">
833
+ Use consistent placement in window control groups
834
+ </li>
835
+ <li className="!text-white/70">
836
+ Ensure sufficient touch target size (44px minimum)
837
+ </li>
838
+ <li className="!text-white/70">
839
+ Provide visible focus states for keyboard users
840
+ </li>
841
+ <li className="!text-white/70">
842
+ Consider Escape key handling for fullscreen exit
843
+ </li>
844
+ </ul>
845
+ </div>
846
+ </div>
847
+
848
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
849
+ <h3 className="mb-4 text-lg font-semibold !text-blue-300">
850
+ Proper ARIA Implementation
851
+ </h3>
852
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
853
+ <div className="rounded-lg bg-black/40 p-4">
854
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
855
+ {`// Fullscreen video exit control
856
+ <div className="fullscreen-controls">
857
+ <button
858
+ aria-label="Exit fullscreen mode"
859
+ onClick={exitFullscreen}
860
+ onKeyDown={handleEscapeKey}
861
+ >
862
+ <MinimizeIcon className="h-5 w-5 text-orange-400" />
863
+ </button>
864
+ </div>
865
+
866
+ // Window minimize button
867
+ <button
868
+ aria-label="Minimize window"
869
+ onClick={minimizeWindow}
870
+ aria-describedby="minimize-hint"
871
+ >
872
+ <MinimizeIcon className="h-3 w-3" />
873
+ </button>
874
+ <div id="minimize-hint" className="sr-only">
875
+ Minimizes window to taskbar
876
+ </div>
877
+
878
+ // Modal collapse control
879
+ <button
880
+ aria-label="Minimize settings panel"
881
+ aria-expanded={!isMinimized}
882
+ onClick={toggleMinimize}
883
+ >
884
+ <MinimizeIcon className="h-4 w-4 text-orange-400" />
885
+ </button>
886
+
887
+ // Sidebar collapse
888
+ <button
889
+ aria-label="Collapse navigation sidebar"
890
+ aria-controls="sidebar-nav"
891
+ aria-expanded={!sidebarCollapsed}
892
+ onClick={toggleSidebar}
893
+ >
894
+ <MinimizeIcon className="h-3 w-3" />
895
+ </button>`}
896
+ </pre>
897
+ </div>
898
+ <div className="!space-y-4">
899
+ <p className="text-sm !text-white/70">
900
+ When using MinimizeIcon for fullscreen or window
901
+ controls, always provide clear context about what will
902
+ be minimized and how users can restore the content.
903
+ </p>
904
+ <div className="rounded-lg border border-orange-500/20 bg-orange-500/10 p-4">
905
+ <div className="flex items-center gap-2 text-sm text-orange-200">
906
+ <MinimizeIcon className="h-4 w-4" />
907
+ <span>
908
+ Include keyboard shortcuts (Escape, Alt+F9) in
909
+ tooltips
910
+ </span>
911
+ </div>
912
+ </div>
913
+ </div>
914
+ </div>
915
+ </div>
916
+ </div>
917
+
918
+ {/* Related Icons */}
919
+ <div className="!space-y-8">
920
+ <h2 className="text-center text-3xl font-bold !text-white">
921
+ Related Icons
922
+ </h2>
923
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
924
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
925
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-emerald-500/20">
926
+ <span className="!text-2xl !text-white">⤢</span>
927
+ </div>
928
+ <div>
929
+ <div className="font-medium text-white">ExpandIcon</div>
930
+ <div className="text-xs text-white/60">
931
+ Enter fullscreen
932
+ </div>
933
+ </div>
934
+ </div>
935
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
936
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
937
+ <span className="!text-2xl !text-white">⊞</span>
938
+ </div>
939
+ <div>
940
+ <div className="font-medium text-white">MaximizeIcon</div>
941
+ <div className="text-xs text-white/60">
942
+ Window maximize
943
+ </div>
944
+ </div>
945
+ </div>
946
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
947
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
948
+ <span className="!text-2xl !text-white">✕</span>
949
+ </div>
950
+ <div>
951
+ <div className="font-medium text-white">CloseIcon</div>
952
+ <div className="text-xs text-white/60">Close window</div>
953
+ </div>
954
+ </div>
955
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
956
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
957
+ <span className="!text-2xl !text-white">⤴</span>
958
+ </div>
959
+ <div>
960
+ <div className="font-medium text-white">CollapseIcon</div>
961
+ <div className="text-xs text-white/60">
962
+ Collapse panel
963
+ </div>
964
+ </div>
965
+ </div>
966
+ </div>
967
+ </div>
968
+ </div>
969
+
970
+ {/* Footer */}
971
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
972
+ <div className="!mx-auto max-w-7xl px-6 py-8">
973
+ <div className="!space-y-4 text-center">
974
+ <p className="!text-white/60">
975
+ MinimizeIcon is part of the Aural UI icon library, built
976
+ with accessibility and window management best practices in
977
+ mind.
978
+ </p>
979
+ <p className="text-sm !text-white/40">
980
+ All icons use Radix UI's AccessibleIcon for screen reader
981
+ compatibility and follow WCAG guidelines for interactive
982
+ elements and keyboard navigation.
983
+ </p>
984
+ </div>
985
+ </div>
986
+ </div>
987
+ </div>
988
+ </>
989
+ ),
990
+ },
991
+ },
992
+ tags: ["autodocs"],
993
+ argTypes: {
994
+ width: {
995
+ control: { type: "range", min: 8, max: 96, step: 2 },
996
+ description: "Width of the icon in pixels",
997
+ },
998
+ height: {
999
+ control: { type: "range", min: 8, max: 96, step: 2 },
1000
+ description: "Height of the icon in pixels",
1001
+ },
1002
+ stroke: {
1003
+ control: "color",
1004
+ description: "Stroke color of the icon",
1005
+ },
1006
+ strokeWidth: {
1007
+ control: { type: "range", min: 0.5, max: 4, step: 0.5 },
1008
+ description: "Width of the stroke",
1009
+ },
1010
+ strokeLinecap: {
1011
+ control: { type: "select" },
1012
+ options: ["round", "square", "butt"],
1013
+ description: "Style of line endings",
1014
+ },
1015
+ className: {
1016
+ control: "text",
1017
+ description: "CSS classes for styling (use for overrides)",
1018
+ },
1019
+ onClick: {
1020
+ action: "clicked",
1021
+ description: "Click handler for interactive use",
1022
+ },
1023
+ },
1024
+ }
1025
+
1026
+ export default meta
1027
+ type Story = StoryObj<typeof MinimizeIcon>
1028
+
1029
+ // Story parameters for consistent dark theme
1030
+ const storyParameters = {
1031
+ backgrounds: {
1032
+ default: "dark",
1033
+ values: [
1034
+ { name: "dark", value: "#0a0a0a" },
1035
+ { name: "darker", value: "#000000" },
1036
+ ],
1037
+ },
1038
+ }
1039
+
1040
+ export const Default: Story = {
1041
+ args: {
1042
+ className: "h-8 w-8 text-orange-400",
1043
+ },
1044
+ parameters: storyParameters,
1045
+ render: (args) => (
1046
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1047
+ <MinimizeIcon {...args} />
1048
+ </div>
1049
+ ),
1050
+ }
1051
+
1052
+ export const SizeVariations: Story = {
1053
+ parameters: {
1054
+ ...storyParameters,
1055
+ docs: {
1056
+ description: {
1057
+ story:
1058
+ "MinimizeIcon in different sizes, from small window controls to large fullscreen exit buttons.",
1059
+ },
1060
+ },
1061
+ },
1062
+ render: () => (
1063
+ <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">
1064
+ <div className="text-center">
1065
+ <MinimizeIcon className="!mx-auto mb-2 h-3 w-3 text-orange-400" />
1066
+ <span className="text-xs text-white/60">12px</span>
1067
+ </div>
1068
+ <div className="text-center">
1069
+ <MinimizeIcon className="!mx-auto mb-2 h-4 w-4 text-orange-400" />
1070
+ <span className="text-xs text-white/60">16px</span>
1071
+ </div>
1072
+ <div className="text-center">
1073
+ <MinimizeIcon className="!mx-auto mb-2 h-5 w-5 text-orange-400" />
1074
+ <span className="text-xs text-white/60">20px</span>
1075
+ </div>
1076
+ <div className="text-center">
1077
+ <MinimizeIcon className="!mx-auto mb-2 h-6 w-6 text-orange-400" />
1078
+ <span className="text-xs text-white/60">24px</span>
1079
+ </div>
1080
+ <div className="text-center">
1081
+ <MinimizeIcon className="!mx-auto mb-2 h-8 w-8 text-orange-400" />
1082
+ <span className="text-xs text-white/60">32px</span>
1083
+ </div>
1084
+ <div className="text-center">
1085
+ <MinimizeIcon className="!mx-auto mb-2 h-12 w-12 text-orange-400" />
1086
+ <span className="text-xs text-white/60">48px</span>
1087
+ </div>
1088
+ </div>
1089
+ ),
1090
+ }
1091
+
1092
+ export const ColorVariations: Story = {
1093
+ parameters: {
1094
+ ...storyParameters,
1095
+ docs: {
1096
+ description: {
1097
+ story:
1098
+ "MinimizeIcon in different semantic colors for various minimize and exit applications.",
1099
+ },
1100
+ },
1101
+ },
1102
+ render: () => (
1103
+ <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">
1104
+ <div className="text-center">
1105
+ <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">
1106
+ <MinimizeIcon className="h-8 w-8 text-orange-400" />
1107
+ </div>
1108
+ <div className="text-sm font-medium text-white">Exit Fullscreen</div>
1109
+ <div className="text-xs text-orange-400">text-orange-400</div>
1110
+ </div>
1111
+ <div className="text-center">
1112
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-amber-500/30 bg-amber-500/20">
1113
+ <MinimizeIcon className="h-8 w-8 text-amber-400" />
1114
+ </div>
1115
+ <div className="text-sm font-medium text-white">Compact View</div>
1116
+ <div className="text-xs text-amber-400">text-amber-400</div>
1117
+ </div>
1118
+ <div className="text-center">
1119
+ <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">
1120
+ <MinimizeIcon className="h-8 w-8 text-yellow-400" />
1121
+ </div>
1122
+ <div className="text-sm font-medium text-white">Window Minimize</div>
1123
+ <div className="text-xs text-yellow-400">text-yellow-400</div>
1124
+ </div>
1125
+ <div className="text-center">
1126
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-red-500/30 bg-red-500/20">
1127
+ <MinimizeIcon className="h-8 w-8 text-red-400" />
1128
+ </div>
1129
+ <div className="text-sm font-medium text-white">Close/Dismiss</div>
1130
+ <div className="text-xs text-red-400">text-red-400</div>
1131
+ </div>
1132
+ </div>
1133
+ ),
1134
+ }
1135
+
1136
+ export const UsageExamples: Story = {
1137
+ parameters: {
1138
+ ...storyParameters,
1139
+ docs: {
1140
+ description: {
1141
+ story:
1142
+ "Real-world usage examples showing MinimizeIcon in different window control and fullscreen exit contexts.",
1143
+ },
1144
+ },
1145
+ },
1146
+ render: () => (
1147
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1148
+ {/* Fullscreen Video */}
1149
+ <div className="!space-y-2">
1150
+ <h3 className="text-sm font-medium text-white">
1151
+ Fullscreen Video Player
1152
+ </h3>
1153
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1154
+ <div className="relative aspect-video rounded-lg bg-black">
1155
+ <div className="absolute top-4 right-4">
1156
+ <button className="rounded border border-orange-500/30 bg-black/60 p-3 transition-colors hover:bg-orange-500/20">
1157
+ <MinimizeIcon className="h-5 w-5 text-orange-400" />
1158
+ </button>
1159
+ </div>
1160
+ </div>
1161
+ </div>
1162
+ </div>
1163
+
1164
+ {/* Window Controls */}
1165
+ <div className="!space-y-2">
1166
+ <h3 className="text-sm font-medium text-white">Window Controls</h3>
1167
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1168
+ <div className="flex items-center justify-between rounded bg-white/5 p-3">
1169
+ <span className="text-sm text-white">Application Window</span>
1170
+ <div className="flex items-center gap-1">
1171
+ <button className="rounded border border-orange-500/30 bg-orange-500/10 p-1.5 transition-colors hover:bg-orange-500/20">
1172
+ <MinimizeIcon className="h-3 w-3 text-orange-400" />
1173
+ </button>
1174
+ <button className="rounded p-1.5 transition-colors hover:bg-white/20">
1175
+ <div className="h-3 w-3 rounded-sm border border-white"></div>
1176
+ </button>
1177
+ <button className="rounded p-1.5 transition-colors hover:bg-red-500/20">
1178
+ <div className="relative h-3 w-3">
1179
+ <div className="absolute inset-0 rotate-45 border border-white"></div>
1180
+ <div className="absolute inset-0 -rotate-45 border border-white"></div>
1181
+ </div>
1182
+ </button>
1183
+ </div>
1184
+ </div>
1185
+ </div>
1186
+ </div>
1187
+ </div>
1188
+ ),
1189
+ }
1190
+
1191
+ export const Playground: Story = {
1192
+ parameters: {
1193
+ ...storyParameters,
1194
+ docs: {
1195
+ description: {
1196
+ story:
1197
+ "Interactive playground to experiment with different MinimizeIcon configurations.",
1198
+ },
1199
+ },
1200
+ },
1201
+ args: {
1202
+ width: 24,
1203
+ height: 24,
1204
+ className: "text-orange-400",
1205
+ strokeLinecap: "square",
1206
+ },
1207
+ render: (args) => (
1208
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1209
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1210
+ <MinimizeIcon {...args} />
1211
+ </div>
1212
+ </div>
1213
+ ),
1214
+ }