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.
- package/dist/components/slider/Slider.stories.tsx +23 -22
- package/dist/components/slider/index.tsx +9 -3
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +952 -0
- package/dist/icons/apple-logo-icon/index.tsx +26 -0
- package/dist/icons/apple-logo-icon/meta.ts +8 -0
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +1008 -0
- package/dist/icons/arrow-left-icon/index.tsx +24 -0
- package/dist/icons/arrow-left-icon/meta.ts +8 -0
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +1050 -0
- package/dist/icons/backward-ten-seconds-icon/index.tsx +35 -0
- package/dist/icons/backward-ten-seconds-icon/meta.ts +8 -0
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +1271 -0
- package/dist/icons/camera-icon/index.tsx +22 -0
- package/dist/icons/camera-icon/meta.ts +8 -0
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +1382 -0
- package/dist/icons/coin-icon/index.tsx +36 -0
- package/dist/icons/coin-icon/meta.ts +8 -0
- package/dist/icons/email-icon/EmailIcon.stories.tsx +995 -0
- package/dist/icons/email-icon/index.tsx +22 -0
- package/dist/icons/email-icon/meta.ts +8 -0
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +1167 -0
- package/dist/icons/expand-icon/index.tsx +22 -0
- package/dist/icons/expand-icon/meta.ts +8 -0
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +1054 -0
- package/dist/icons/forward-ten-seconds-icon/index.tsx +33 -0
- package/dist/icons/forward-ten-seconds-icon/meta.ts +8 -0
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +1004 -0
- package/dist/icons/google-logo-icon/index.tsx +34 -0
- package/dist/icons/google-logo-icon/meta.ts +8 -0
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +1080 -0
- package/dist/icons/heart-icon/index.tsx +21 -0
- package/dist/icons/heart-icon/meta.ts +8 -0
- package/dist/icons/index.ts +32 -4
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +1020 -0
- package/dist/icons/indian-flag-icon/index.tsx +46 -0
- package/dist/icons/indian-flag-icon/meta.ts +8 -0
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +1449 -0
- package/dist/icons/instagram-icon/index.tsx +17 -0
- package/dist/icons/instagram-icon/meta.ts +8 -0
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +1582 -0
- package/dist/icons/linked-in-icon/index.tsx +17 -0
- package/dist/icons/linked-in-icon/meta.ts +8 -0
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +1214 -0
- package/dist/icons/minimize-icon/index.tsx +22 -0
- package/dist/icons/minimize-icon/meta.ts +8 -0
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +1060 -0
- package/dist/icons/pause-icon/index.tsx +30 -0
- package/dist/icons/pause-icon/meta.ts +8 -0
- package/dist/icons/share-icon/ShareIcon.stories.tsx +1081 -0
- package/dist/icons/share-icon/index.tsx +22 -0
- package/dist/icons/share-icon/meta.ts +8 -0
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +1047 -0
- package/dist/icons/skip-backward-icon/index.tsx +29 -0
- package/dist/icons/skip-backward-icon/meta.ts +8 -0
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +1049 -0
- package/dist/icons/skip-forward-icon/index.tsx +29 -0
- package/dist/icons/skip-forward-icon/meta.ts +8 -0
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +1020 -0
- package/dist/icons/store-coin-icon/index.tsx +35 -0
- package/dist/icons/store-coin-icon/meta.ts +8 -0
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +1489 -0
- package/dist/icons/threads-icon/index.tsx +17 -0
- package/dist/icons/threads-icon/meta.ts +8 -0
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +1463 -0
- package/dist/icons/twitter-x-icon/index.tsx +17 -0
- package/dist/icons/twitter-x-icon/meta.ts +8 -0
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +1105 -0
- package/dist/icons/video-play-list-icon/index.tsx +22 -0
- package/dist/icons/video-play-list-icon/meta.ts +8 -0
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +1416 -0
- package/dist/icons/voice-playing-icon/index.tsx +24 -0
- package/dist/icons/voice-playing-icon/meta.ts +8 -0
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +1230 -0
- package/dist/icons/volume-full-icon/index.tsx +25 -0
- package/dist/icons/volume-full-icon/meta.ts +8 -0
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +1153 -0
- package/dist/icons/volume-half-icon/index.tsx +25 -0
- package/dist/icons/volume-half-icon/meta.ts +8 -0
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +1144 -0
- package/dist/icons/volume-off-icon/index.tsx +26 -0
- package/dist/icons/volume-off-icon/meta.ts +8 -0
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +1106 -0
- package/dist/icons/warning-icon/index.tsx +27 -0
- package/dist/icons/warning-icon/meta.ts +8 -0
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +996 -0
- package/dist/icons/youtube-icon/index.tsx +24 -0
- package/dist/icons/youtube-icon/meta.ts +8 -0
- package/dist/index.js +1 -1
- package/dist/styles/aural-theme.css +9 -0
- 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
|
+
}
|