aural-ui 4.0.1 → 4.1.0
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/aspect-ratio/AspectRatio.stories.tsx +290 -1228
- package/dist/components/avatar/Avatar.stories.tsx +219 -235
- package/dist/components/badge/Badge.stories.tsx +379 -116
- package/dist/components/banner/Banner.stories.tsx +445 -391
- package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
- package/dist/components/button/Button.stories.tsx +585 -230
- package/dist/components/card/Card.stories.tsx +619 -301
- package/dist/components/char-count/CharCount.stories.tsx +350 -248
- package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
- package/dist/components/chip/Chip.stories.tsx +362 -168
- package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -636
- package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
- package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
- package/dist/components/command/Command.stories.tsx +530 -867
- package/dist/components/dialog/Dialog.stories.tsx +501 -950
- package/dist/components/divider/Divider.stories.tsx +264 -527
- package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
- package/dist/components/drawer/Drawer.stories.tsx +659 -1023
- package/dist/components/dropdown/Dropdown.stories.tsx +643 -1028
- package/dist/components/form/Form.stories.tsx +560 -274
- package/dist/components/helper-text/HelperText.stories.tsx +199 -200
- package/dist/components/hover-card/HoverCard.stories.tsx +318 -1254
- package/dist/components/icon-button/IconButton.stories.tsx +837 -194
- package/dist/components/if-else/if-else.stories.tsx +370 -83
- package/dist/components/input/Input.stories.tsx +436 -368
- package/dist/components/label/Label.stories.tsx +156 -154
- package/dist/components/list/List.stories.tsx +484 -835
- package/dist/components/marquee/Marquee.stories.tsx +356 -712
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -422
- package/dist/components/overlay/Overlay.stories.tsx +452 -824
- package/dist/components/pagination/Pagination.stories.tsx +721 -210
- package/dist/components/popover/Popover.stories.tsx +481 -896
- package/dist/components/radio/Radio.stories.tsx +432 -124
- package/dist/components/resizable/Resizable.stories.tsx +495 -799
- package/dist/components/scroll-area/ScrollArea.stories.tsx +383 -1059
- package/dist/components/search/Search.stories.tsx +312 -595
- package/dist/components/select/Select.stories.tsx +684 -789
- package/dist/components/sheet/Sheet.stories.tsx +671 -950
- package/dist/components/skelton/Skelton.stories.tsx +230 -764
- package/dist/components/slider/Slider.stories.tsx +383 -760
- package/dist/components/stepper/Stepper.stories.tsx +371 -514
- package/dist/components/switch/Switch.stories.tsx +461 -208
- package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
- package/dist/components/table/Table.stories.tsx +770 -916
- package/dist/components/tabs/Tabs.stories.tsx +458 -1455
- package/dist/components/tag/Tag.stories.tsx +714 -542
- package/dist/components/textarea/TextArea.stories.tsx +621 -562
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -154
- package/dist/components/toast/Toast.stories.tsx +452 -1339
- package/dist/components/toggle/Toggle.stories.tsx +488 -931
- package/dist/components/tooltip/Tooltip.stories.tsx +344 -1388
- package/dist/components/typography/Typography.stories.tsx +406 -89
- package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
- package/dist/icons/Icons.stories.tsx +0 -12
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +223 -1060
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +106 -968
- package/dist/icons/all-icons.tsx +37 -16
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +137 -1010
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +145 -935
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +132 -1046
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +134 -986
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +135 -1028
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +133 -971
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +145 -1123
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +143 -1252
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +123 -632
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +141 -1223
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +164 -1018
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +121 -1236
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +121 -1213
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +116 -893
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +109 -1254
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +114 -975
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +157 -994
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +160 -992
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +140 -970
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +126 -993
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +144 -987
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +141 -1007
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +147 -1187
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +110 -476
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +120 -1364
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +113 -1360
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +111 -942
- package/dist/icons/command-icon/CommandIcon.stories.tsx +124 -1087
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +119 -996
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +144 -1046
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +136 -999
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +123 -857
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +121 -1080
- package/dist/icons/email-icon/EmailIcon.stories.tsx +112 -979
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +109 -1146
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +141 -1068
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +140 -1081
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +124 -1050
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +123 -1091
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +122 -633
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +116 -1087
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +166 -1020
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +112 -1182
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +112 -1155
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +127 -325
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +142 -985
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +116 -1217
- package/dist/icons/head-icon/HeadIcon.stories.tsx +108 -953
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +117 -1060
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +116 -716
- package/dist/icons/image-icon/ImageIcon.stories.tsx +102 -1164
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +108 -1233
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +133 -1289
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +155 -1012
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +158 -1438
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +121 -1011
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +116 -981
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +116 -979
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +105 -1252
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +151 -1554
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +107 -1227
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +116 -707
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +119 -1226
- package/dist/icons/message-icon/MessageIcon.stories.tsx +111 -557
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +112 -1198
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +117 -557
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +106 -1235
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +112 -1185
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +116 -1012
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +108 -1137
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +116 -1138
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +106 -1146
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +119 -719
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +110 -999
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +109 -912
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +110 -1041
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +112 -1109
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +112 -1023
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +103 -1132
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +104 -870
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +99 -476
- package/dist/icons/search-icon/SearchIcon.stories.tsx +108 -1161
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +104 -1009
- package/dist/icons/share-icon/ShareIcon.stories.tsx +117 -1064
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +114 -974
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +134 -1160
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +169 -1017
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +161 -1016
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +102 -1001
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +155 -593
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +155 -608
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +142 -712
- package/dist/icons/star-icon/StarIcon.stories.tsx +120 -946
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +109 -1013
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +113 -891
- package/dist/icons/sun-icon/SunIcon.stories.tsx +117 -864
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +113 -989
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +120 -1027
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +153 -1476
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +143 -1187
- package/dist/icons/tick-icon/TickIcon.stories.tsx +142 -1322
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +105 -970
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +154 -1457
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +112 -930
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +115 -1019
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +122 -1092
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +120 -1401
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +107 -1212
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +109 -1122
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +112 -1124
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +119 -1083
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +158 -983
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/react-vite"
|
|
3
3
|
|
|
4
|
+
import { ExpandIcon } from "src/ui/icons/expand-icon"
|
|
5
|
+
import { LayoutColumnIcon } from "src/ui/icons/layout-column-icon"
|
|
6
|
+
import { LayoutLeftIcon } from "src/ui/icons/layout-left-icon"
|
|
7
|
+
import { LayoutRightIcon } from "src/ui/icons/layout-right-icon"
|
|
8
|
+
import {
|
|
9
|
+
IconColorVariations,
|
|
10
|
+
IconDefaultCanvas,
|
|
11
|
+
IconPlaygroundCanvas,
|
|
12
|
+
IconSizeVariations,
|
|
13
|
+
IconUsageCanvas,
|
|
14
|
+
IconUsageSection,
|
|
15
|
+
} from "src/ui/story-spec/icons/icon-story-canvas"
|
|
16
|
+
import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
|
|
17
|
+
|
|
4
18
|
import { MinimizeIcon } from "."
|
|
5
19
|
|
|
6
20
|
const meta: Meta<typeof MinimizeIcon> = {
|
|
@@ -18,1044 +32,68 @@ const meta: Meta<typeof MinimizeIcon> = {
|
|
|
18
32
|
},
|
|
19
33
|
docs: {
|
|
20
34
|
page: () => (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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: var(--color-fm-surface-primary) ;
|
|
44
|
-
}
|
|
45
|
-
#storybook-docs {
|
|
46
|
-
background: var(--color-fm-surface-primary) ;
|
|
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: var(--color-fm-icon-active) ;
|
|
54
|
-
}
|
|
55
|
-
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color: var(--color-fm-secondary) ;
|
|
57
|
-
}
|
|
58
|
-
.sbdocs-code {
|
|
59
|
-
background: var(--color-fm-surface-secondary) ;
|
|
60
|
-
color: var(--color-fm-secondary-500) ;
|
|
61
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
62
|
-
}
|
|
63
|
-
.sbdocs-pre {
|
|
64
|
-
background: var(--color-fm-surface-secondary) ;
|
|
65
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
66
|
-
}
|
|
67
|
-
.sbdocs-table {
|
|
68
|
-
background: var(--color-fm-surface-secondary) ;
|
|
69
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
70
|
-
}
|
|
71
|
-
.sbdocs-table th {
|
|
72
|
-
background: var(--color-fm-surface-secondary) ;
|
|
73
|
-
color: var(--color-fm-icon-active) ;
|
|
74
|
-
border-bottom: 1px solid var(--color-fm-divider-secondary) ;
|
|
75
|
-
}
|
|
76
|
-
.sbdocs-table td {
|
|
77
|
-
color: var(--color-fm-secondary) ;
|
|
78
|
-
border-bottom: 1px solid var(--color-fm-divider-tertiary) ;
|
|
79
|
-
}
|
|
80
|
-
`}
|
|
81
|
-
</style>
|
|
82
|
-
|
|
83
|
-
<div className="from-fm-surface-primary via-fm-icon-warning/5 to-fm-surface-primary min-h-screen bg-linear-to-br">
|
|
84
|
-
{/* Header */}
|
|
85
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
86
|
-
<div className="from-fm-icon-warning/10 to-fm-icon-warning/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
87
|
-
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
|
-
<div className="!space-y-6 text-center">
|
|
89
|
-
<div className="border-fm-icon-warning/30 from-fm-icon-warning/20 to-fm-icon-warning/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
-
<MinimizeIcon className="text-fm-icon-warning h-12 w-12" />
|
|
91
|
-
</div>
|
|
92
|
-
<h1 className="text-fm-icon-active! text-5xl font-bold">
|
|
93
|
-
MinimizeIcon
|
|
94
|
-
</h1>
|
|
95
|
-
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
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-fm-icon-warning text-3xl font-bold">
|
|
107
|
-
Exit Fullscreen
|
|
108
|
-
</div>
|
|
109
|
-
<div className="text-fm-tertiary text-sm">
|
|
110
|
-
Compact content
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
114
|
-
<div className="text-center">
|
|
115
|
-
<div className="text-fm-icon-warning text-3xl font-bold">
|
|
116
|
-
Accessible
|
|
117
|
-
</div>
|
|
118
|
-
<div className="text-fm-tertiary text-sm">
|
|
119
|
-
Screen reader friendly
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
123
|
-
<div className="text-center">
|
|
124
|
-
<div className="text-fm-icon-warning text-3xl font-bold">
|
|
125
|
-
Universal
|
|
126
|
-
</div>
|
|
127
|
-
<div className="text-fm-tertiary text-sm">
|
|
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-fm-icon-active! text-center text-3xl font-bold">
|
|
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-fm-icon-warning! text-xl font-semibold">
|
|
146
|
-
Basic Usage
|
|
147
|
-
</h3>
|
|
148
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
149
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
150
|
-
{`import { MinimizeIcon } from "@icons/minimize-icon"
|
|
151
|
-
|
|
152
|
-
function VideoPlayer() {
|
|
35
|
+
<AuralIconDocsPage
|
|
36
|
+
accentToken="info"
|
|
37
|
+
features={[
|
|
38
|
+
{ title: "Minimize", description: "Collapse to smaller view" },
|
|
39
|
+
{ title: "Collapse", description: "Hide panel or section" },
|
|
40
|
+
{ title: "Accessible", description: "ARIA-ready by default" },
|
|
41
|
+
]}
|
|
42
|
+
quickStart={{
|
|
43
|
+
codeExample: `import { MinimizeIcon } from "src/ui/icons/minimize-icon"
|
|
44
|
+
|
|
45
|
+
function MinimizeButton() {
|
|
153
46
|
return (
|
|
154
|
-
<button
|
|
155
|
-
|
|
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" />
|
|
47
|
+
<button>
|
|
48
|
+
<MinimizeIcon className="h-5 w-5 text-fm-icon-inactive" />
|
|
160
49
|
</button>
|
|
161
50
|
)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
Prop
|
|
197
|
-
</th>
|
|
198
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
199
|
-
Type
|
|
200
|
-
</th>
|
|
201
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
202
|
-
Default
|
|
203
|
-
</th>
|
|
204
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
205
|
-
Description
|
|
206
|
-
</th>
|
|
207
|
-
</tr>
|
|
208
|
-
</thead>
|
|
209
|
-
<tbody>
|
|
210
|
-
{" "}
|
|
211
|
-
<tr className="bg-fm-surface-secondary!">
|
|
212
|
-
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
213
|
-
withAccessibility
|
|
214
|
-
</td>
|
|
215
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
216
|
-
boolean
|
|
217
|
-
</td>
|
|
218
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
219
|
-
true
|
|
220
|
-
</td>
|
|
221
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
222
|
-
Whether to wrap the icon with accessibility feature
|
|
223
|
-
</td>
|
|
224
|
-
</tr>
|
|
225
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
226
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
227
|
-
height
|
|
228
|
-
</td>
|
|
229
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
230
|
-
number | string
|
|
231
|
-
</td>
|
|
232
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
233
|
-
24
|
|
234
|
-
</td>
|
|
235
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
236
|
-
Height of the icon in pixels
|
|
237
|
-
</td>
|
|
238
|
-
</tr>
|
|
239
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
240
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
241
|
-
stroke
|
|
242
|
-
</td>
|
|
243
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
244
|
-
string
|
|
245
|
-
</td>
|
|
246
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
247
|
-
currentColor
|
|
248
|
-
</td>
|
|
249
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
250
|
-
Stroke color of the icon
|
|
251
|
-
</td>
|
|
252
|
-
</tr>
|
|
253
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
254
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
255
|
-
strokeWidth
|
|
256
|
-
</td>
|
|
257
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
258
|
-
string | number
|
|
259
|
-
</td>
|
|
260
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
261
|
-
1.5
|
|
262
|
-
</td>
|
|
263
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
264
|
-
Width of the stroke
|
|
265
|
-
</td>
|
|
266
|
-
</tr>
|
|
267
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
268
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
269
|
-
strokeLinecap
|
|
270
|
-
</td>
|
|
271
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
272
|
-
string
|
|
273
|
-
</td>
|
|
274
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
275
|
-
square
|
|
276
|
-
</td>
|
|
277
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
|
-
Style of line endings (square for crisp corners)
|
|
279
|
-
</td>
|
|
280
|
-
</tr>
|
|
281
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
282
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
283
|
-
className
|
|
284
|
-
</td>
|
|
285
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
286
|
-
string
|
|
287
|
-
</td>
|
|
288
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
289
|
-
-
|
|
290
|
-
</td>
|
|
291
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
292
|
-
CSS classes for styling (use for overrides)
|
|
293
|
-
</td>
|
|
294
|
-
</tr>
|
|
295
|
-
<tr className="bg-fm-surface-secondary!">
|
|
296
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
297
|
-
...svgProps
|
|
298
|
-
</td>
|
|
299
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
300
|
-
SVGProps
|
|
301
|
-
</td>
|
|
302
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
303
|
-
-
|
|
304
|
-
</td>
|
|
305
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
306
|
-
All standard SVG element props
|
|
307
|
-
</td>
|
|
308
|
-
</tr>
|
|
309
|
-
</tbody>
|
|
310
|
-
</table>
|
|
311
|
-
</div>
|
|
312
|
-
</div>
|
|
313
|
-
|
|
314
|
-
{/* Size Variations */}
|
|
315
|
-
<div className="!space-y-8">
|
|
316
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
317
|
-
Size Variations
|
|
318
|
-
</h2>
|
|
319
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
320
|
-
<div className="!space-y-6">
|
|
321
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
322
|
-
<div className="!space-y-4">
|
|
323
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
324
|
-
Standard Sizes
|
|
325
|
-
</h3>
|
|
326
|
-
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
327
|
-
<div className="text-center">
|
|
328
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-3 w-3" />
|
|
329
|
-
<span className="text-fm-tertiary text-xs">
|
|
330
|
-
12px
|
|
331
|
-
</span>
|
|
332
|
-
</div>
|
|
333
|
-
<div className="text-center">
|
|
334
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-4 w-4" />
|
|
335
|
-
<span className="text-fm-tertiary text-xs">
|
|
336
|
-
16px
|
|
337
|
-
</span>
|
|
338
|
-
</div>
|
|
339
|
-
<div className="text-center">
|
|
340
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-5 w-5" />
|
|
341
|
-
<span className="text-fm-tertiary text-xs">
|
|
342
|
-
20px
|
|
343
|
-
</span>
|
|
344
|
-
</div>
|
|
345
|
-
<div className="text-center">
|
|
346
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-6 w-6" />
|
|
347
|
-
<span className="text-fm-tertiary text-xs">
|
|
348
|
-
24px
|
|
349
|
-
</span>
|
|
350
|
-
</div>
|
|
351
|
-
<div className="text-center">
|
|
352
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-8 w-8" />
|
|
353
|
-
<span className="text-fm-tertiary text-xs">
|
|
354
|
-
32px
|
|
355
|
-
</span>
|
|
356
|
-
</div>
|
|
357
|
-
<div className="text-center">
|
|
358
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-12 w-12" />
|
|
359
|
-
<span className="text-fm-tertiary text-xs">
|
|
360
|
-
48px
|
|
361
|
-
</span>
|
|
362
|
-
</div>
|
|
363
|
-
</div>
|
|
364
|
-
</div>
|
|
365
|
-
|
|
366
|
-
<div className="!space-y-4">
|
|
367
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
368
|
-
Code Example
|
|
369
|
-
</h3>
|
|
370
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
371
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
372
|
-
{`// Small (16px) - compact controls
|
|
373
|
-
<MinimizeIcon className="h-4 w-4" />
|
|
374
|
-
|
|
375
|
-
// Medium (24px) - standard interface
|
|
376
|
-
<MinimizeIcon className="h-6 w-6" />
|
|
377
|
-
|
|
378
|
-
// Large (32px) - prominent displays
|
|
379
|
-
<MinimizeIcon className="h-8 w-8" />
|
|
380
|
-
|
|
381
|
-
// Custom size
|
|
382
|
-
<MinimizeIcon width={40} height={40} />`}
|
|
383
|
-
</pre>
|
|
384
|
-
</div>
|
|
385
|
-
</div>
|
|
386
|
-
</div>
|
|
387
|
-
</div>
|
|
388
|
-
</div>
|
|
389
|
-
</div>
|
|
390
|
-
|
|
391
|
-
{/* Color Variations */}
|
|
392
|
-
<div className="!space-y-8">
|
|
393
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
394
|
-
Color Variations
|
|
395
|
-
</h2>
|
|
396
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
397
|
-
<div className="!space-y-4">
|
|
398
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
399
|
-
Semantic Colors
|
|
400
|
-
</h3>
|
|
401
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
402
|
-
<div className="flex items-center gap-4">
|
|
403
|
-
<MinimizeIcon className="text-fm-icon-warning h-6 w-6" />
|
|
404
|
-
<div>
|
|
405
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
406
|
-
Exit Fullscreen
|
|
407
|
-
</div>
|
|
408
|
-
<div className="text-fm-tertiary text-xs">
|
|
409
|
-
text-fm-icon-warning
|
|
410
|
-
</div>
|
|
411
|
-
</div>
|
|
412
|
-
</div>
|
|
413
|
-
<div className="flex items-center gap-4">
|
|
414
|
-
<MinimizeIcon className="text-fm-icon-warning h-6 w-6" />
|
|
415
|
-
<div>
|
|
416
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
417
|
-
Compact View
|
|
418
|
-
</div>
|
|
419
|
-
<div className="text-fm-tertiary text-xs">
|
|
420
|
-
text-fm-icon-warning
|
|
421
|
-
</div>
|
|
422
|
-
</div>
|
|
423
|
-
</div>
|
|
424
|
-
<div className="flex items-center gap-4">
|
|
425
|
-
<MinimizeIcon className="text-fm-icon-warning h-6 w-6" />
|
|
426
|
-
<div>
|
|
427
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
428
|
-
Window Minimize
|
|
429
|
-
</div>
|
|
430
|
-
<div className="text-fm-tertiary text-xs">
|
|
431
|
-
text-fm-icon-warning
|
|
432
|
-
</div>
|
|
433
|
-
</div>
|
|
434
|
-
</div>
|
|
435
|
-
<div className="flex items-center gap-4">
|
|
436
|
-
<MinimizeIcon className="text-fm-icon-negative h-6 w-6" />
|
|
437
|
-
<div>
|
|
438
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
439
|
-
Close/Dismiss
|
|
440
|
-
</div>
|
|
441
|
-
<div className="text-fm-tertiary text-xs">
|
|
442
|
-
text-fm-icon-negative
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
</div>
|
|
446
|
-
</div>
|
|
447
|
-
</div>
|
|
448
|
-
|
|
449
|
-
<div className="!space-y-4">
|
|
450
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
451
|
-
Custom Colors
|
|
452
|
-
</h3>
|
|
453
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
454
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
455
|
-
{`// Using Tailwind classes
|
|
456
|
-
<MinimizeIcon className="h-6 w-6 text-orange-400" />
|
|
457
|
-
<MinimizeIcon className="h-6 w-6 text-amber-500" />
|
|
458
|
-
|
|
459
|
-
// Using CSS custom properties
|
|
460
|
-
<MinimizeIcon
|
|
461
|
-
className="h-6 w-6"
|
|
462
|
-
style={{ color: 'var(--color-minimize)' }}
|
|
463
|
-
/>
|
|
464
|
-
|
|
465
|
-
// Direct stroke prop
|
|
466
|
-
<MinimizeIcon
|
|
467
|
-
width={24}
|
|
468
|
-
height={24}
|
|
469
|
-
stroke="#f97316"
|
|
470
|
-
/>`}
|
|
471
|
-
</pre>
|
|
472
|
-
</div>
|
|
473
|
-
</div>
|
|
474
|
-
</div>
|
|
475
|
-
</div>
|
|
476
|
-
|
|
477
|
-
{/* Usage Examples */}
|
|
478
|
-
<div className="!space-y-8">
|
|
479
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
480
|
-
Usage Examples
|
|
481
|
-
</h2>
|
|
482
|
-
|
|
483
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
484
|
-
{/* Video Player Fullscreen */}
|
|
485
|
-
<div className="!space-y-4">
|
|
486
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
487
|
-
Video Player Fullscreen
|
|
488
|
-
</h3>
|
|
489
|
-
<div className="!space-y-4">
|
|
490
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
491
|
-
<div className="bg-fm-surface-primary relative mb-4 aspect-video overflow-hidden rounded-lg">
|
|
492
|
-
<div className="from-fm-surface-secondary to-fm-surface-primary absolute inset-0 flex items-center justify-center bg-linear-to-br">
|
|
493
|
-
<div className="bg-fm-divider-primary flex h-16 w-16 items-center justify-center rounded-full">
|
|
494
|
-
<div className="ml-1 h-0 w-0 border-y-[8px] border-l-[12px] border-y-transparent border-l-white" />
|
|
495
|
-
</div>
|
|
496
|
-
</div>
|
|
497
|
-
<div className="absolute top-4 right-4">
|
|
498
|
-
<button className="border-fm-icon-warning/30 bg-fm-surface-secondary hover:bg-fm-icon-warning/20 rounded border p-3 transition-colors">
|
|
499
|
-
<MinimizeIcon className="text-fm-icon-warning h-5 w-5" />
|
|
500
|
-
</button>
|
|
501
|
-
</div>
|
|
502
|
-
<div className="from-fm-surface-primary/80 absolute right-0 bottom-0 left-0 bg-linear-to-t to-transparent p-4">
|
|
503
|
-
<div className="flex items-center justify-between">
|
|
504
|
-
<div className="flex items-center gap-3">
|
|
505
|
-
<button className="hover:bg-fm-divider-primary rounded p-2 transition-colors">
|
|
506
|
-
<div className="h-0 w-0 border-y-[6px] border-l-[8px] border-y-transparent border-l-white" />
|
|
507
|
-
</button>
|
|
508
|
-
<span className="text-fm-icon-active text-sm">
|
|
509
|
-
1:23 / 2:18
|
|
510
|
-
</span>
|
|
511
|
-
</div>
|
|
512
|
-
<div className="flex items-center gap-2">
|
|
513
|
-
<span className="text-fm-tertiary text-xs">
|
|
514
|
-
Fullscreen Mode
|
|
515
|
-
</span>
|
|
516
|
-
<kbd className="bg-fm-surface-secondary text-fm-icon-active rounded px-2 py-1 text-xs">
|
|
517
|
-
ESC
|
|
518
|
-
</kbd>
|
|
519
|
-
</div>
|
|
520
|
-
</div>
|
|
521
|
-
</div>
|
|
522
|
-
</div>
|
|
523
|
-
<div className="text-center">
|
|
524
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
525
|
-
"Space Documentary - Full Experience"
|
|
526
|
-
</div>
|
|
527
|
-
<div className="text-fm-tertiary text-xs">
|
|
528
|
-
Click minimize to exit fullscreen mode
|
|
529
|
-
</div>
|
|
530
|
-
</div>
|
|
531
|
-
</div>
|
|
532
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
533
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
534
|
-
{`// Fullscreen video player with exit control
|
|
535
|
-
<div className="fullscreen-video-player">
|
|
536
|
-
<video ref={videoRef} className="fullscreen-video" />
|
|
537
|
-
<div className="fullscreen-controls">
|
|
538
|
-
<button
|
|
539
|
-
onClick={exitFullscreen}
|
|
540
|
-
className="exit-fullscreen-btn"
|
|
541
|
-
aria-label="Exit fullscreen mode"
|
|
542
|
-
>
|
|
543
|
-
<MinimizeIcon className="h-5 w-5 text-orange-400" />
|
|
544
|
-
</button>
|
|
545
|
-
</div>
|
|
546
|
-
<div className="video-overlay-controls">
|
|
547
|
-
<PlayPauseButton />
|
|
548
|
-
<ProgressBar />
|
|
549
|
-
<div className="fullscreen-hint">
|
|
550
|
-
<span>Fullscreen Mode</span>
|
|
551
|
-
<kbd>ESC</kbd>
|
|
552
|
-
</div>
|
|
553
|
-
</div>
|
|
554
|
-
</div>`}
|
|
555
|
-
</pre>
|
|
556
|
-
</div>
|
|
557
|
-
</div>
|
|
558
|
-
</div>
|
|
559
|
-
|
|
560
|
-
{/* Window Controls */}
|
|
561
|
-
<div className="!space-y-4">
|
|
562
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
563
|
-
Window Controls
|
|
564
|
-
</h3>
|
|
565
|
-
<div className="!space-y-4">
|
|
566
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
567
|
-
<div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
568
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between border-b p-3">
|
|
569
|
-
<div className="flex items-center gap-3">
|
|
570
|
-
<div className="flex gap-2">
|
|
571
|
-
<div className="bg-fm-icon-negative h-3 w-3 rounded-full"></div>
|
|
572
|
-
<div className="bg-fm-icon-warning h-3 w-3 rounded-full"></div>
|
|
573
|
-
<div className="bg-fm-icon-positive h-3 w-3 rounded-full"></div>
|
|
574
|
-
</div>
|
|
575
|
-
<span className="text-fm-icon-active text-sm">
|
|
576
|
-
Application Window
|
|
577
|
-
</span>
|
|
578
|
-
</div>
|
|
579
|
-
<div className="flex items-center gap-1">
|
|
580
|
-
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/10 hover:bg-fm-icon-warning/20 rounded border p-1.5 transition-colors">
|
|
581
|
-
<MinimizeIcon className="text-fm-icon-warning h-3 w-3" />
|
|
582
|
-
</button>
|
|
583
|
-
<button className="hover:bg-fm-divider-primary rounded p-1.5 transition-colors">
|
|
584
|
-
<div className="border-fm-divider-contrast h-3 w-3 rounded-sm border"></div>
|
|
585
|
-
</button>
|
|
586
|
-
<button className="hover:bg-fm-icon-negative/20 rounded p-1.5 transition-colors">
|
|
587
|
-
<div className="relative h-3 w-3">
|
|
588
|
-
<div className="border-fm-divider-contrast absolute inset-0 rotate-45 border"></div>
|
|
589
|
-
<div className="border-fm-divider-contrast absolute inset-0 -rotate-45 border"></div>
|
|
590
|
-
</div>
|
|
591
|
-
</button>
|
|
592
|
-
</div>
|
|
593
|
-
</div>
|
|
594
|
-
<div className="p-6">
|
|
595
|
-
<div className="text-center">
|
|
596
|
-
<div className="bg-fm-surface-secondary mx-auto mb-4 flex h-24 w-24 items-center justify-center rounded-lg">
|
|
597
|
-
<span className="text-2xl">📄</span>
|
|
598
|
-
</div>
|
|
599
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
600
|
-
Document Editor
|
|
601
|
-
</div>
|
|
602
|
-
<div className="text-fm-tertiary text-xs">
|
|
603
|
-
Unsaved changes
|
|
604
|
-
</div>
|
|
605
|
-
</div>
|
|
606
|
-
</div>
|
|
607
|
-
</div>
|
|
608
|
-
</div>
|
|
609
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
610
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
611
|
-
{`// Desktop application window controls
|
|
612
|
-
<div className="window">
|
|
613
|
-
<div className="window-titlebar">
|
|
614
|
-
<div className="window-controls-left">
|
|
615
|
-
<TrafficLights />
|
|
616
|
-
<WindowTitle title={document.name} />
|
|
617
|
-
</div>
|
|
618
|
-
<div className="window-controls-right">
|
|
619
|
-
<button
|
|
620
|
-
onClick={minimizeWindow}
|
|
621
|
-
className="window-control-btn minimize"
|
|
622
|
-
aria-label="Minimize window"
|
|
623
|
-
>
|
|
624
|
-
<MinimizeIcon className="h-3 w-3 text-orange-400" />
|
|
625
|
-
</button>
|
|
626
|
-
<MaximizeButton />
|
|
627
|
-
<CloseButton />
|
|
628
|
-
</div>
|
|
629
|
-
</div>
|
|
630
|
-
<div className="window-content">
|
|
631
|
-
<DocumentEditor />
|
|
632
|
-
</div>
|
|
633
|
-
</div>`}
|
|
634
|
-
</pre>
|
|
635
|
-
</div>
|
|
636
|
-
</div>
|
|
637
|
-
</div>
|
|
638
|
-
|
|
639
|
-
{/* Modal Collapse */}
|
|
640
|
-
<div className="!space-y-4">
|
|
641
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
642
|
-
Modal Collapse
|
|
643
|
-
</h3>
|
|
644
|
-
<div className="!space-y-4">
|
|
645
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
646
|
-
<div className="border-fm-divider-primary bg-fm-surface-secondary rounded-lg border p-6">
|
|
647
|
-
<div className="mb-4 flex items-start justify-between">
|
|
648
|
-
<div>
|
|
649
|
-
<h4 className="text-fm-icon-active text-lg font-semibold">
|
|
650
|
-
Settings Panel
|
|
651
|
-
</h4>
|
|
652
|
-
<p className="text-fm-tertiary text-sm">
|
|
653
|
-
Customize your preferences
|
|
654
|
-
</p>
|
|
655
|
-
</div>
|
|
656
|
-
<div className="flex items-center gap-2">
|
|
657
|
-
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/10 hover:bg-fm-icon-warning/20 rounded border p-2 transition-colors">
|
|
658
|
-
<MinimizeIcon className="text-fm-icon-warning h-4 w-4" />
|
|
659
|
-
</button>
|
|
660
|
-
<button className="hover:bg-fm-divider-primary rounded p-2 transition-colors">
|
|
661
|
-
<div className="relative h-4 w-4">
|
|
662
|
-
<div className="border-fm-divider-contrast absolute inset-0 rotate-45 border"></div>
|
|
663
|
-
<div className="border-fm-divider-contrast absolute inset-0 -rotate-45 border"></div>
|
|
664
|
-
</div>
|
|
665
|
-
</button>
|
|
666
|
-
</div>
|
|
667
|
-
</div>
|
|
668
|
-
<div className="space-y-4">
|
|
669
|
-
<div className="flex items-center justify-between">
|
|
670
|
-
<span className="text-fm-icon-active text-sm">
|
|
671
|
-
Dark Mode
|
|
672
|
-
</span>
|
|
673
|
-
<div className="bg-fm-icon-warning relative h-6 w-10 rounded-full">
|
|
674
|
-
<div className="bg-fm-surface-contrast absolute top-1 right-1 h-4 w-4 rounded-full"></div>
|
|
675
|
-
</div>
|
|
676
|
-
</div>
|
|
677
|
-
<div className="flex items-center justify-between">
|
|
678
|
-
<span className="text-fm-icon-active text-sm">
|
|
679
|
-
Notifications
|
|
680
|
-
</span>
|
|
681
|
-
<div className="bg-fm-divider-primary relative h-6 w-10 rounded-full">
|
|
682
|
-
<div className="bg-fm-surface-contrast absolute top-1 left-1 h-4 w-4 rounded-full"></div>
|
|
683
|
-
</div>
|
|
684
|
-
</div>
|
|
685
|
-
<div className="flex items-center justify-between">
|
|
686
|
-
<span className="text-fm-icon-active text-sm">
|
|
687
|
-
Auto-save
|
|
688
|
-
</span>
|
|
689
|
-
<div className="bg-fm-icon-warning relative h-6 w-10 rounded-full">
|
|
690
|
-
<div className="bg-fm-surface-contrast absolute top-1 right-1 h-4 w-4 rounded-full"></div>
|
|
691
|
-
</div>
|
|
692
|
-
</div>
|
|
693
|
-
</div>
|
|
694
|
-
</div>
|
|
695
|
-
</div>
|
|
696
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
697
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
698
|
-
{`// Modal with minimize/collapse option
|
|
699
|
-
<Modal isOpen={isSettingsOpen} onClose={closeSettings}>
|
|
700
|
-
<div className="modal-header">
|
|
701
|
-
<div className="modal-title">
|
|
702
|
-
<h3>Settings Panel</h3>
|
|
703
|
-
<p>Customize your preferences</p>
|
|
704
|
-
</div>
|
|
705
|
-
<div className="modal-actions">
|
|
706
|
-
<button
|
|
707
|
-
onClick={minimizeSettings}
|
|
708
|
-
className="minimize-btn"
|
|
709
|
-
aria-label="Minimize settings panel"
|
|
710
|
-
>
|
|
711
|
-
<MinimizeIcon className="h-4 w-4 text-orange-400" />
|
|
712
|
-
</button>
|
|
713
|
-
<CloseButton onClick={closeSettings} />
|
|
714
|
-
</div>
|
|
715
|
-
</div>
|
|
716
|
-
<div className="modal-content">
|
|
717
|
-
<SettingsForm />
|
|
718
|
-
</div>
|
|
719
|
-
</Modal>`}
|
|
720
|
-
</pre>
|
|
721
|
-
</div>
|
|
722
|
-
</div>
|
|
723
|
-
</div>
|
|
724
|
-
|
|
725
|
-
{/* Sidebar Collapse */}
|
|
726
|
-
<div className="!space-y-4">
|
|
727
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
728
|
-
Sidebar Collapse
|
|
729
|
-
</h3>
|
|
730
|
-
<div className="!space-y-4">
|
|
731
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
732
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex overflow-hidden rounded-lg border">
|
|
733
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary w-64 border-r p-4">
|
|
734
|
-
<div className="mb-4 flex items-center justify-between">
|
|
735
|
-
<h4 className="text-fm-icon-active text-sm font-semibold">
|
|
736
|
-
Navigation
|
|
737
|
-
</h4>
|
|
738
|
-
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/10 hover:bg-fm-icon-warning/20 rounded border p-1 transition-colors">
|
|
739
|
-
<MinimizeIcon className="text-fm-icon-warning h-3 w-3" />
|
|
740
|
-
</button>
|
|
741
|
-
</div>
|
|
742
|
-
<nav className="space-y-2">
|
|
743
|
-
<a
|
|
744
|
-
href="#"
|
|
745
|
-
className="bg-fm-icon-warning/20 text-fm-icon-active block rounded px-3 py-2 text-sm"
|
|
746
|
-
>
|
|
747
|
-
Dashboard
|
|
748
|
-
</a>
|
|
749
|
-
<a
|
|
750
|
-
href="#"
|
|
751
|
-
className="text-fm-secondary hover:bg-fm-surface-secondary block rounded px-3 py-2 text-sm transition-colors"
|
|
752
|
-
>
|
|
753
|
-
Projects
|
|
754
|
-
</a>
|
|
755
|
-
<a
|
|
756
|
-
href="#"
|
|
757
|
-
className="text-fm-secondary hover:bg-fm-surface-secondary block rounded px-3 py-2 text-sm transition-colors"
|
|
758
|
-
>
|
|
759
|
-
Team
|
|
760
|
-
</a>
|
|
761
|
-
<a
|
|
762
|
-
href="#"
|
|
763
|
-
className="text-fm-secondary hover:bg-fm-surface-secondary block rounded px-3 py-2 text-sm transition-colors"
|
|
764
|
-
>
|
|
765
|
-
Settings
|
|
766
|
-
</a>
|
|
767
|
-
</nav>
|
|
768
|
-
</div>
|
|
769
|
-
<div className="flex-1 p-6">
|
|
770
|
-
<div className="text-center">
|
|
771
|
-
<div className="bg-fm-surface-secondary mx-auto mb-4 flex h-20 w-32 items-center justify-center rounded-lg">
|
|
772
|
-
<span className="text-3xl">📊</span>
|
|
773
|
-
</div>
|
|
774
|
-
<div className="text-fm-icon-active text-lg font-medium">
|
|
775
|
-
Main Content Area
|
|
776
|
-
</div>
|
|
777
|
-
<div className="text-fm-tertiary text-sm">
|
|
778
|
-
Your dashboard content goes here
|
|
779
|
-
</div>
|
|
780
|
-
</div>
|
|
781
|
-
</div>
|
|
782
|
-
</div>
|
|
783
|
-
</div>
|
|
784
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
785
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
786
|
-
{`// Collapsible sidebar navigation
|
|
787
|
-
<div className="app-layout">
|
|
788
|
-
<aside className="sidebar">
|
|
789
|
-
<div className="sidebar-header">
|
|
790
|
-
<h3>Navigation</h3>
|
|
791
|
-
<button
|
|
792
|
-
onClick={collapseSidebar}
|
|
793
|
-
className="collapse-sidebar-btn"
|
|
794
|
-
aria-label="Collapse navigation sidebar"
|
|
795
|
-
>
|
|
796
|
-
<MinimizeIcon className="h-3 w-3 text-orange-400" />
|
|
797
|
-
</button>
|
|
798
|
-
</div>
|
|
799
|
-
<nav className="sidebar-nav">
|
|
800
|
-
<NavLink to="/dashboard">Dashboard</NavLink>
|
|
801
|
-
<NavLink to="/projects">Projects</NavLink>
|
|
802
|
-
<NavLink to="/team">Team</NavLink>
|
|
803
|
-
<NavLink to="/settings">Settings</NavLink>
|
|
804
|
-
</nav>
|
|
805
|
-
</aside>
|
|
806
|
-
<main className="main-content">
|
|
807
|
-
<DashboardContent />
|
|
808
|
-
</main>
|
|
809
|
-
</div>`}
|
|
810
|
-
</pre>
|
|
811
|
-
</div>
|
|
812
|
-
</div>
|
|
813
|
-
</div>
|
|
814
|
-
</div>
|
|
815
|
-
</div>
|
|
816
|
-
|
|
817
|
-
{/* Accessibility */}
|
|
818
|
-
<div className="!space-y-8">
|
|
819
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
820
|
-
Accessibility Features
|
|
821
|
-
</h2>
|
|
822
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
823
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
824
|
-
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
825
|
-
✅ Built-in Features
|
|
826
|
-
</h3>
|
|
827
|
-
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
828
|
-
<li className="text-fm-secondary!">
|
|
829
|
-
Uses Radix UI AccessibleIcon wrapper
|
|
830
|
-
</li>
|
|
831
|
-
<li className="text-fm-secondary!">
|
|
832
|
-
Provides screen reader label "Minimize icon"
|
|
833
|
-
</li>
|
|
834
|
-
<li className="text-fm-secondary!">
|
|
835
|
-
Supports keyboard navigation when interactive
|
|
836
|
-
</li>
|
|
837
|
-
<li className="text-fm-secondary!">
|
|
838
|
-
Maintains proper color contrast ratios
|
|
839
|
-
</li>
|
|
840
|
-
<li className="text-fm-secondary!">
|
|
841
|
-
Uses square strokeLinecap for crisp visual clarity
|
|
842
|
-
</li>
|
|
843
|
-
</ul>
|
|
844
|
-
</div>
|
|
845
|
-
|
|
846
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
847
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
848
|
-
💡 Best Practices
|
|
849
|
-
</h3>
|
|
850
|
-
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
851
|
-
<li className="text-fm-secondary!">
|
|
852
|
-
Always provide descriptive aria-labels for minimize
|
|
853
|
-
actions
|
|
854
|
-
</li>
|
|
855
|
-
<li className="text-fm-secondary!">
|
|
856
|
-
Use consistent placement in window control groups
|
|
857
|
-
</li>
|
|
858
|
-
<li className="text-fm-secondary!">
|
|
859
|
-
Ensure sufficient touch target size (44px minimum)
|
|
860
|
-
</li>
|
|
861
|
-
<li className="text-fm-secondary!">
|
|
862
|
-
Provide visible focus states for keyboard users
|
|
863
|
-
</li>
|
|
864
|
-
<li className="text-fm-secondary!">
|
|
865
|
-
Consider Escape key handling for fullscreen exit
|
|
866
|
-
</li>
|
|
867
|
-
</ul>
|
|
868
|
-
</div>
|
|
869
|
-
</div>
|
|
870
|
-
|
|
871
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
872
|
-
<h3 className="text-fm-icon-info! mb-4 text-lg font-semibold">
|
|
873
|
-
Proper ARIA Implementation
|
|
874
|
-
</h3>
|
|
875
|
-
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
876
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
877
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
878
|
-
{`// Fullscreen video exit control
|
|
879
|
-
<div className="fullscreen-controls">
|
|
880
|
-
<button
|
|
881
|
-
aria-label="Exit fullscreen mode"
|
|
882
|
-
onClick={exitFullscreen}
|
|
883
|
-
onKeyDown={handleEscapeKey}
|
|
884
|
-
>
|
|
885
|
-
<MinimizeIcon className="h-5 w-5 text-orange-400" />
|
|
886
|
-
</button>
|
|
887
|
-
</div>
|
|
888
|
-
|
|
889
|
-
// Window minimize button
|
|
890
|
-
<button
|
|
891
|
-
aria-label="Minimize window"
|
|
892
|
-
onClick={minimizeWindow}
|
|
893
|
-
aria-describedby="minimize-hint"
|
|
894
|
-
>
|
|
895
|
-
<MinimizeIcon className="h-3 w-3" />
|
|
896
|
-
</button>
|
|
897
|
-
<div id="minimize-hint" className="sr-only">
|
|
898
|
-
Minimizes window to taskbar
|
|
899
|
-
</div>
|
|
900
|
-
|
|
901
|
-
// Modal collapse control
|
|
902
|
-
<button
|
|
903
|
-
aria-label="Minimize settings panel"
|
|
904
|
-
aria-expanded={!isMinimized}
|
|
905
|
-
onClick={toggleMinimize}
|
|
906
|
-
>
|
|
907
|
-
<MinimizeIcon className="h-4 w-4 text-orange-400" />
|
|
908
|
-
</button>
|
|
909
|
-
|
|
910
|
-
// Sidebar collapse
|
|
911
|
-
<button
|
|
912
|
-
aria-label="Collapse navigation sidebar"
|
|
913
|
-
aria-controls="sidebar-nav"
|
|
914
|
-
aria-expanded={!sidebarCollapsed}
|
|
915
|
-
onClick={toggleSidebar}
|
|
916
|
-
>
|
|
917
|
-
<MinimizeIcon className="h-3 w-3" />
|
|
918
|
-
</button>`}
|
|
919
|
-
</pre>
|
|
920
|
-
</div>
|
|
921
|
-
<div className="!space-y-4">
|
|
922
|
-
<p className="text-fm-secondary! text-sm">
|
|
923
|
-
When using MinimizeIcon for fullscreen or window
|
|
924
|
-
controls, always provide clear context about what will
|
|
925
|
-
be minimized and how users can restore the content.
|
|
926
|
-
</p>
|
|
927
|
-
<div className="border-fm-icon-warning/20 bg-fm-icon-warning/10 rounded-lg border p-4">
|
|
928
|
-
<div className="text-fm-icon-warning flex items-center gap-2 text-sm">
|
|
929
|
-
<MinimizeIcon className="h-4 w-4" />
|
|
930
|
-
<span>
|
|
931
|
-
Include keyboard shortcuts (Escape, Alt+F9) in
|
|
932
|
-
tooltips
|
|
933
|
-
</span>
|
|
934
|
-
</div>
|
|
935
|
-
</div>
|
|
936
|
-
</div>
|
|
937
|
-
</div>
|
|
938
|
-
</div>
|
|
939
|
-
</div>
|
|
940
|
-
|
|
941
|
-
{/* Related Icons */}
|
|
942
|
-
<div className="!space-y-8">
|
|
943
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
944
|
-
Related Icons
|
|
945
|
-
</h2>
|
|
946
|
-
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
947
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
948
|
-
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
949
|
-
<span className="text-fm-icon-active! !text-2xl">⤢</span>
|
|
950
|
-
</div>
|
|
951
|
-
<div>
|
|
952
|
-
<div className="text-fm-icon-active font-medium">
|
|
953
|
-
ExpandIcon
|
|
954
|
-
</div>
|
|
955
|
-
<div className="text-fm-tertiary text-xs">
|
|
956
|
-
Enter fullscreen
|
|
957
|
-
</div>
|
|
958
|
-
</div>
|
|
959
|
-
</div>
|
|
960
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
961
|
-
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
962
|
-
<span className="text-fm-icon-active! !text-2xl">⊞</span>
|
|
963
|
-
</div>
|
|
964
|
-
<div>
|
|
965
|
-
<div className="text-fm-icon-active font-medium">
|
|
966
|
-
MaximizeIcon
|
|
967
|
-
</div>
|
|
968
|
-
<div className="text-fm-tertiary text-xs">
|
|
969
|
-
Window maximize
|
|
970
|
-
</div>
|
|
971
|
-
</div>
|
|
972
|
-
</div>
|
|
973
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
974
|
-
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
975
|
-
<span className="text-fm-icon-active! !text-2xl">✕</span>
|
|
976
|
-
</div>
|
|
977
|
-
<div>
|
|
978
|
-
<div className="text-fm-icon-active font-medium">
|
|
979
|
-
CloseIcon
|
|
980
|
-
</div>
|
|
981
|
-
<div className="text-fm-tertiary text-xs">
|
|
982
|
-
Close window
|
|
983
|
-
</div>
|
|
984
|
-
</div>
|
|
985
|
-
</div>
|
|
986
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
987
|
-
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
988
|
-
<span className="text-fm-icon-active! !text-2xl">⤴</span>
|
|
989
|
-
</div>
|
|
990
|
-
<div>
|
|
991
|
-
<div className="text-fm-icon-active font-medium">
|
|
992
|
-
CollapseIcon
|
|
993
|
-
</div>
|
|
994
|
-
<div className="text-fm-tertiary text-xs">
|
|
995
|
-
Collapse panel
|
|
996
|
-
</div>
|
|
997
|
-
</div>
|
|
998
|
-
</div>
|
|
999
|
-
</div>
|
|
1000
|
-
</div>
|
|
1001
|
-
</div>
|
|
1002
|
-
|
|
1003
|
-
{/* Footer */}
|
|
1004
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
1005
|
-
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
1006
|
-
<div className="!space-y-4 text-center">
|
|
1007
|
-
<p className="text-fm-tertiary!">
|
|
1008
|
-
MinimizeIcon is part of the Aural UI icon library, built
|
|
1009
|
-
with accessibility and window management best practices in
|
|
1010
|
-
mind.
|
|
1011
|
-
</p>
|
|
1012
|
-
<p className="text-fm-placeholder! text-sm">
|
|
1013
|
-
All icons use Radix UI's AccessibleIcon for screen reader
|
|
1014
|
-
compatibility and follow WCAG guidelines for interactive
|
|
1015
|
-
elements and keyboard navigation.
|
|
1016
|
-
</p>
|
|
1017
|
-
</div>
|
|
1018
|
-
</div>
|
|
1019
|
-
</div>
|
|
1020
|
-
</div>
|
|
1021
|
-
</>
|
|
51
|
+
}`,
|
|
52
|
+
livePreview: (
|
|
53
|
+
<button>
|
|
54
|
+
<MinimizeIcon className="text-fm-icon-inactive h-6 w-6" />
|
|
55
|
+
</button>
|
|
56
|
+
),
|
|
57
|
+
}}
|
|
58
|
+
relatedIcons={[
|
|
59
|
+
{
|
|
60
|
+
name: "ExpandIcon",
|
|
61
|
+
description: "Expand / fullscreen icon",
|
|
62
|
+
icon: ExpandIcon,
|
|
63
|
+
accentToken: "info",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "LayoutColumnIcon",
|
|
67
|
+
description: "Column layout toggle icon",
|
|
68
|
+
icon: LayoutColumnIcon,
|
|
69
|
+
accentToken: "positive",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "LayoutLeftIcon",
|
|
73
|
+
description: "Left panel layout icon",
|
|
74
|
+
icon: LayoutLeftIcon,
|
|
75
|
+
accentToken: "warning",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "LayoutRightIcon",
|
|
79
|
+
description: "Right panel layout icon",
|
|
80
|
+
icon: LayoutRightIcon,
|
|
81
|
+
accentToken: "negative",
|
|
82
|
+
},
|
|
83
|
+
]}
|
|
84
|
+
/>
|
|
1022
85
|
),
|
|
1023
86
|
},
|
|
1024
87
|
},
|
|
1025
88
|
tags: ["autodocs"],
|
|
1026
89
|
argTypes: {
|
|
1027
|
-
width: {
|
|
1028
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
1029
|
-
description: "Width of the icon in pixels",
|
|
1030
|
-
},
|
|
1031
|
-
withAccessibility: {
|
|
1032
|
-
control: "boolean",
|
|
1033
|
-
description: "Whether to wrap the icon with accessibility features",
|
|
1034
|
-
},
|
|
1035
|
-
height: {
|
|
1036
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
1037
|
-
description: "Height of the icon in pixels",
|
|
1038
|
-
},
|
|
1039
|
-
stroke: {
|
|
1040
|
-
control: "color",
|
|
1041
|
-
description: "Stroke color of the icon",
|
|
1042
|
-
},
|
|
1043
|
-
strokeWidth: {
|
|
1044
|
-
control: { type: "range", min: 0.5, max: 4, step: 0.5 },
|
|
1045
|
-
description: "Width of the stroke",
|
|
1046
|
-
},
|
|
1047
|
-
strokeLinecap: {
|
|
1048
|
-
control: { type: "select" },
|
|
1049
|
-
options: ["round", "square", "butt"],
|
|
1050
|
-
description: "Style of line endings",
|
|
1051
|
-
},
|
|
1052
90
|
className: {
|
|
1053
91
|
control: "text",
|
|
1054
|
-
description: "CSS classes
|
|
92
|
+
description: "CSS classes including color token",
|
|
1055
93
|
},
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
description: "
|
|
94
|
+
withAccessibility: {
|
|
95
|
+
control: "boolean",
|
|
96
|
+
description: "Wrap with accessibility label",
|
|
1059
97
|
},
|
|
1060
98
|
},
|
|
1061
99
|
}
|
|
@@ -1063,204 +101,80 @@ function VideoPlayer() {
|
|
|
1063
101
|
export default meta
|
|
1064
102
|
type Story = StoryObj<typeof MinimizeIcon>
|
|
1065
103
|
|
|
1066
|
-
// Story parameters for consistent dark theme
|
|
1067
|
-
const storyParameters = {
|
|
1068
|
-
backgrounds: {
|
|
1069
|
-
default: "dark",
|
|
1070
|
-
values: [
|
|
1071
|
-
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
1072
|
-
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
1073
|
-
],
|
|
1074
|
-
},
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
104
|
export const Default: Story = {
|
|
1078
105
|
args: {
|
|
1079
|
-
className: "h-
|
|
106
|
+
className: "h-6 w-6 text-fm-icon-inactive",
|
|
1080
107
|
withAccessibility: true,
|
|
1081
108
|
},
|
|
1082
|
-
parameters: storyParameters,
|
|
1083
109
|
render: (args) => (
|
|
1084
|
-
<
|
|
110
|
+
<IconDefaultCanvas>
|
|
1085
111
|
<MinimizeIcon {...args} />
|
|
1086
|
-
</
|
|
112
|
+
</IconDefaultCanvas>
|
|
1087
113
|
),
|
|
1088
114
|
}
|
|
1089
115
|
|
|
1090
116
|
export const SizeVariations: Story = {
|
|
1091
|
-
|
|
1092
|
-
...storyParameters,
|
|
1093
|
-
docs: {
|
|
1094
|
-
description: {
|
|
1095
|
-
story:
|
|
1096
|
-
"MinimizeIcon in different sizes, from small window controls to large fullscreen exit buttons.",
|
|
1097
|
-
},
|
|
1098
|
-
},
|
|
1099
|
-
},
|
|
1100
|
-
render: () => (
|
|
1101
|
-
<div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-linear-to-br p-8">
|
|
1102
|
-
<div className="text-center">
|
|
1103
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-3 w-3" />
|
|
1104
|
-
<span className="text-fm-tertiary text-xs">12px</span>
|
|
1105
|
-
</div>
|
|
1106
|
-
<div className="text-center">
|
|
1107
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-4 w-4" />
|
|
1108
|
-
<span className="text-fm-tertiary text-xs">16px</span>
|
|
1109
|
-
</div>
|
|
1110
|
-
<div className="text-center">
|
|
1111
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-5 w-5" />
|
|
1112
|
-
<span className="text-fm-tertiary text-xs">20px</span>
|
|
1113
|
-
</div>
|
|
1114
|
-
<div className="text-center">
|
|
1115
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-6 w-6" />
|
|
1116
|
-
<span className="text-fm-tertiary text-xs">24px</span>
|
|
1117
|
-
</div>
|
|
1118
|
-
<div className="text-center">
|
|
1119
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-8 w-8" />
|
|
1120
|
-
<span className="text-fm-tertiary text-xs">32px</span>
|
|
1121
|
-
</div>
|
|
1122
|
-
<div className="text-center">
|
|
1123
|
-
<MinimizeIcon className="text-fm-icon-warning !mx-auto mb-2 h-12 w-12" />
|
|
1124
|
-
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1125
|
-
</div>
|
|
1126
|
-
</div>
|
|
1127
|
-
),
|
|
117
|
+
render: () => <IconSizeVariations icon={MinimizeIcon} />,
|
|
1128
118
|
}
|
|
1129
119
|
|
|
1130
120
|
export const ColorVariations: Story = {
|
|
1131
|
-
|
|
1132
|
-
...storyParameters,
|
|
1133
|
-
docs: {
|
|
1134
|
-
description: {
|
|
1135
|
-
story:
|
|
1136
|
-
"MinimizeIcon in different semantic colors for various minimize and exit applications.",
|
|
1137
|
-
},
|
|
1138
|
-
},
|
|
1139
|
-
},
|
|
1140
|
-
render: () => (
|
|
1141
|
-
<div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-linear-to-br p-8 md:grid-cols-4">
|
|
1142
|
-
<div className="text-center">
|
|
1143
|
-
<div className="border-fm-icon-warning/30 bg-fm-icon-warning/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1144
|
-
<MinimizeIcon className="text-fm-icon-warning h-8 w-8" />
|
|
1145
|
-
</div>
|
|
1146
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
1147
|
-
Exit Fullscreen
|
|
1148
|
-
</div>
|
|
1149
|
-
<div className="text-fm-icon-warning text-xs">text-fm-icon-warning</div>
|
|
1150
|
-
</div>
|
|
1151
|
-
<div className="text-center">
|
|
1152
|
-
<div className="border-fm-icon-warning/30 bg-fm-icon-warning/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1153
|
-
<MinimizeIcon className="text-fm-icon-warning h-8 w-8" />
|
|
1154
|
-
</div>
|
|
1155
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
1156
|
-
Compact View
|
|
1157
|
-
</div>
|
|
1158
|
-
<div className="text-fm-icon-warning text-xs">text-fm-icon-warning</div>
|
|
1159
|
-
</div>
|
|
1160
|
-
<div className="text-center">
|
|
1161
|
-
<div className="border-fm-icon-warning/30 bg-fm-icon-warning/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1162
|
-
<MinimizeIcon className="text-fm-icon-warning h-8 w-8" />
|
|
1163
|
-
</div>
|
|
1164
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
1165
|
-
Window Minimize
|
|
1166
|
-
</div>
|
|
1167
|
-
<div className="text-fm-icon-warning text-xs">text-fm-icon-warning</div>
|
|
1168
|
-
</div>
|
|
1169
|
-
<div className="text-center">
|
|
1170
|
-
<div className="border-fm-icon-negative/30 bg-fm-icon-negative/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1171
|
-
<MinimizeIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1172
|
-
</div>
|
|
1173
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
1174
|
-
Close/Dismiss
|
|
1175
|
-
</div>
|
|
1176
|
-
<div className="text-fm-icon-negative text-xs">
|
|
1177
|
-
text-fm-icon-negative
|
|
1178
|
-
</div>
|
|
1179
|
-
</div>
|
|
1180
|
-
</div>
|
|
1181
|
-
),
|
|
121
|
+
render: () => <IconColorVariations icon={MinimizeIcon} />,
|
|
1182
122
|
}
|
|
1183
123
|
|
|
1184
124
|
export const UsageExamples: Story = {
|
|
1185
|
-
parameters: {
|
|
1186
|
-
...storyParameters,
|
|
1187
|
-
docs: {
|
|
1188
|
-
description: {
|
|
1189
|
-
story:
|
|
1190
|
-
"Real-world usage examples showing MinimizeIcon in different window control and fullscreen exit contexts.",
|
|
1191
|
-
},
|
|
1192
|
-
},
|
|
1193
|
-
},
|
|
1194
125
|
render: () => (
|
|
1195
|
-
<
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
</div>
|
|
1208
|
-
</div>
|
|
126
|
+
<IconUsageCanvas>
|
|
127
|
+
<IconUsageSection title="Window Controls">
|
|
128
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-2 rounded-xl border px-4 py-3">
|
|
129
|
+
<span className="text-fm-primary font-fm-text flex-1 text-sm font-medium">
|
|
130
|
+
Preview
|
|
131
|
+
</span>
|
|
132
|
+
<button>
|
|
133
|
+
<MinimizeIcon className="text-fm-icon-inactive h-4 w-4" />
|
|
134
|
+
</button>
|
|
135
|
+
<button>
|
|
136
|
+
<ExpandIcon className="text-fm-icon-inactive h-4 w-4" />
|
|
137
|
+
</button>
|
|
1209
138
|
</div>
|
|
1210
|
-
</
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
139
|
+
</IconUsageSection>
|
|
140
|
+
|
|
141
|
+
<IconUsageSection title="Expand / Minimize Pair">
|
|
142
|
+
<div className="flex gap-4">
|
|
143
|
+
<div className="flex flex-col items-center gap-1">
|
|
144
|
+
<MinimizeIcon className="text-fm-icon-inactive h-6 w-6" />
|
|
145
|
+
<span className="text-fm-secondary font-fm-text text-xs">
|
|
146
|
+
Minimize
|
|
147
|
+
</span>
|
|
148
|
+
</div>
|
|
149
|
+
<div className="flex flex-col items-center gap-1">
|
|
150
|
+
<ExpandIcon className="text-fm-icon-active h-6 w-6" />
|
|
151
|
+
<span className="text-fm-secondary font-fm-text text-xs">
|
|
152
|
+
Expand
|
|
1221
153
|
</span>
|
|
1222
|
-
<div className="flex items-center gap-1">
|
|
1223
|
-
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/10 hover:bg-fm-icon-warning/20 rounded border p-1.5 transition-colors">
|
|
1224
|
-
<MinimizeIcon className="text-fm-icon-warning h-3 w-3" />
|
|
1225
|
-
</button>
|
|
1226
|
-
<button className="hover:bg-fm-divider-primary rounded p-1.5 transition-colors">
|
|
1227
|
-
<div className="border-fm-divider-contrast h-3 w-3 rounded-sm border"></div>
|
|
1228
|
-
</button>
|
|
1229
|
-
<button className="hover:bg-fm-icon-negative/20 rounded p-1.5 transition-colors">
|
|
1230
|
-
<div className="relative h-3 w-3">
|
|
1231
|
-
<div className="border-fm-divider-contrast absolute inset-0 rotate-45 border"></div>
|
|
1232
|
-
<div className="border-fm-divider-contrast absolute inset-0 -rotate-45 border"></div>
|
|
1233
|
-
</div>
|
|
1234
|
-
</button>
|
|
1235
|
-
</div>
|
|
1236
154
|
</div>
|
|
1237
155
|
</div>
|
|
1238
|
-
</
|
|
1239
|
-
|
|
156
|
+
</IconUsageSection>
|
|
157
|
+
|
|
158
|
+
<IconUsageSection title="Player Controls">
|
|
159
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-2 rounded-full border px-4 py-2">
|
|
160
|
+
<MinimizeIcon className="text-fm-icon-inactive h-4 w-4" />
|
|
161
|
+
<span className="text-fm-secondary font-fm-text text-xs">
|
|
162
|
+
Collapse player
|
|
163
|
+
</span>
|
|
164
|
+
</div>
|
|
165
|
+
</IconUsageSection>
|
|
166
|
+
</IconUsageCanvas>
|
|
1240
167
|
),
|
|
1241
168
|
}
|
|
1242
169
|
|
|
1243
170
|
export const Playground: Story = {
|
|
1244
|
-
parameters: {
|
|
1245
|
-
...storyParameters,
|
|
1246
|
-
docs: {
|
|
1247
|
-
description: {
|
|
1248
|
-
story:
|
|
1249
|
-
"Interactive playground to experiment with different MinimizeIcon configurations.",
|
|
1250
|
-
},
|
|
1251
|
-
},
|
|
1252
|
-
},
|
|
1253
171
|
args: {
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
className: "text-fm-icon-warning",
|
|
1257
|
-
strokeLinecap: "square",
|
|
172
|
+
className: "h-8 w-8 text-fm-icon-inactive",
|
|
173
|
+
withAccessibility: true,
|
|
1258
174
|
},
|
|
1259
175
|
render: (args) => (
|
|
1260
|
-
<
|
|
1261
|
-
<
|
|
1262
|
-
|
|
1263
|
-
</div>
|
|
1264
|
-
</div>
|
|
176
|
+
<IconPlaygroundCanvas>
|
|
177
|
+
<MinimizeIcon {...args} />
|
|
178
|
+
</IconPlaygroundCanvas>
|
|
1265
179
|
),
|
|
1266
180
|
}
|