aural-ui 3.0.7 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +271 -242
- package/dist/components/avatar/Avatar.stories.tsx +84 -70
- package/dist/components/button/Button.stories.tsx +7 -7
- package/dist/components/button/index.tsx +7 -7
- package/dist/components/card/Card.stories.tsx +3 -3
- package/dist/components/char-count/CharCount.stories.tsx +9 -9
- package/dist/components/circular-loader/CircularLoader.stories.tsx +109 -93
- package/dist/components/collapsible/Collapsible.stories.tsx +1 -1
- package/dist/components/command/Command.stories.tsx +52 -38
- package/dist/components/dialog/Dialog.stories.tsx +89 -84
- package/dist/components/divider/Divider.stories.tsx +86 -60
- package/dist/components/dot-loader/DotLoader.stories.tsx +12 -12
- package/dist/components/drawer/Drawer.stories.tsx +74 -44
- package/dist/components/drawer/index.tsx +3 -3
- package/dist/components/dropdown/Dropdown.stories.tsx +42 -32
- package/dist/components/helper-text/HelperText.stories.tsx +2 -2
- package/dist/components/hover-card/HoverCard.stories.tsx +211 -178
- package/dist/components/input/Input.stories.tsx +2 -2
- package/dist/components/label/Label.stories.tsx +10 -10
- package/dist/components/list/List.stories.tsx +58 -44
- package/dist/components/marquee/Marquee.stories.tsx +131 -113
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +47 -35
- package/dist/components/overlay/Overlay.stories.tsx +98 -92
- package/dist/components/overlay/index.tsx +4 -4
- package/dist/components/popover/Popover.stories.tsx +132 -106
- package/dist/components/radio/Radio.stories.tsx +2 -2
- package/dist/components/resizable/Resizable.stories.tsx +186 -138
- package/dist/components/scroll-area/ScrollArea.stories.tsx +174 -120
- package/dist/components/search/Search.stories.tsx +81 -59
- package/dist/components/select/Select.stories.tsx +3 -1
- package/dist/components/sheet/Sheet.stories.tsx +68 -54
- package/dist/components/slider/Slider.stories.tsx +71 -47
- package/dist/components/stepper/Stepper.stories.tsx +16 -16
- package/dist/components/switch/Switch.stories.tsx +12 -12
- package/dist/components/table/Table.stories.tsx +8 -6
- package/dist/components/tabs/Tabs.stories.tsx +324 -268
- package/dist/components/textarea/TextArea.stories.tsx +1 -1
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +16 -10
- package/dist/components/toast/Toast.stories.tsx +51 -45
- package/dist/components/toggle/Toggle.stories.tsx +111 -89
- package/dist/components/tooltip/Tooltip.stories.tsx +160 -144
- package/dist/icons/Icons.stories.tsx +2 -2
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +287 -237
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +290 -248
- package/dist/icons/all-icons.tsx +97 -81
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +312 -270
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +294 -244
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +309 -279
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +294 -258
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +289 -255
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +288 -256
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +322 -288
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +340 -296
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +197 -177
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +390 -328
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +313 -277
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +367 -309
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +356 -308
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +280 -234
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +370 -326
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +300 -256
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +298 -262
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +294 -260
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +291 -259
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +286 -256
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +282 -256
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +292 -256
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +338 -290
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +167 -148
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +342 -296
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +342 -296
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +280 -238
- package/dist/icons/command-icon/CommandIcon.stories.tsx +328 -280
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +294 -256
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +285 -235
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +308 -266
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +271 -231
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +330 -278
- package/dist/icons/email-icon/EmailIcon.stories.tsx +303 -257
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +324 -286
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +317 -271
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +320 -272
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +322 -280
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +315 -277
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +199 -177
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +304 -264
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +311 -277
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +327 -287
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +314 -278
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +113 -98
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +274 -226
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +349 -303
- package/dist/icons/head-icon/HeadIcon.stories.tsx +286 -246
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +312 -268
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +246 -210
- package/dist/icons/image-icon/ImageIcon.stories.tsx +330 -284
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +326 -282
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +330 -294
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +288 -234
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +386 -330
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +305 -263
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +295 -259
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +296 -256
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +322 -282
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +399 -359
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +314 -272
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +238 -206
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +322 -276
- package/dist/icons/message-icon/MessageIcon.stories.tsx +192 -170
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +348 -304
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +191 -167
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +380 -326
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +345 -291
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +310 -266
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +311 -271
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +311 -271
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +309 -271
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +248 -210
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +310 -262
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +274 -236
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +324 -280
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +323 -281
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +288 -240
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +315 -273
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +278 -234
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +161 -151
- package/dist/icons/search-icon/SearchIcon.stories.tsx +324 -284
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +306 -264
- package/dist/icons/share-icon/ShareIcon.stories.tsx +314 -272
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +281 -235
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +309 -250
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +317 -279
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +315 -279
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +299 -253
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +185 -169
- package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +192 -168
- package/dist/icons/spinner-solid-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +212 -178
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
- package/dist/icons/star-icon/StarIcon.stories.tsx +290 -244
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +286 -234
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +272 -230
- package/dist/icons/sun-icon/SunIcon.stories.tsx +262 -226
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +321 -279
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +332 -282
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +394 -342
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +338 -290
- package/dist/icons/tick-icon/TickIcon.stories.tsx +364 -315
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +293 -253
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +396 -338
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +291 -247
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +309 -271
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +336 -290
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +382 -334
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +349 -305
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +327 -295
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +336 -296
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +314 -274
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +311 -261
- package/dist/index.cjs +84 -84
- package/dist/index.js +84 -84
- package/dist/styles/aural-all-theme.css +1222 -0
- package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
- package/dist/styles/aural-light-theme.css +1047 -0
- package/package.json +1 -1
|
@@ -11,9 +11,9 @@ const meta: Meta<typeof ImageIcon> = {
|
|
|
11
11
|
backgrounds: {
|
|
12
12
|
default: "dark",
|
|
13
13
|
values: [
|
|
14
|
-
{ name: "dark", value: "
|
|
15
|
-
{ name: "darker", value: "
|
|
16
|
-
{ name: "light", value: "
|
|
14
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
15
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
16
|
+
{ name: "light", value: "var(--color-fm-neutral-1100)" },
|
|
17
17
|
],
|
|
18
18
|
},
|
|
19
19
|
docs: {
|
|
@@ -40,42 +40,42 @@ const meta: Meta<typeof ImageIcon> = {
|
|
|
40
40
|
background: transparent ;
|
|
41
41
|
}
|
|
42
42
|
body {
|
|
43
|
-
background:
|
|
43
|
+
background: var(--color-fm-surface-primary) ;
|
|
44
44
|
}
|
|
45
45
|
#storybook-docs {
|
|
46
|
-
background:
|
|
46
|
+
background: var(--color-fm-surface-primary) ;
|
|
47
47
|
}
|
|
48
48
|
.sbdocs-preview {
|
|
49
49
|
background: transparent ;
|
|
50
50
|
border: none ;
|
|
51
51
|
}
|
|
52
52
|
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
-
color:
|
|
53
|
+
color: var(--color-fm-icon-active) ;
|
|
54
54
|
}
|
|
55
55
|
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color:
|
|
56
|
+
color: var(--color-fm-secondary) ;
|
|
57
57
|
}
|
|
58
58
|
.sbdocs-code {
|
|
59
|
-
background:
|
|
60
|
-
color:
|
|
61
|
-
border: 1px solid
|
|
59
|
+
background: var(--color-fm-surface-secondary) ;
|
|
60
|
+
color: var(--color-fm-secondary-500) ;
|
|
61
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
62
62
|
}
|
|
63
63
|
.sbdocs-pre {
|
|
64
|
-
background:
|
|
65
|
-
border: 1px solid
|
|
64
|
+
background: var(--color-fm-surface-secondary) ;
|
|
65
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
66
66
|
}
|
|
67
67
|
.sbdocs-table {
|
|
68
|
-
background:
|
|
69
|
-
border: 1px solid
|
|
68
|
+
background: var(--color-fm-surface-secondary) ;
|
|
69
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
70
70
|
}
|
|
71
71
|
.sbdocs-table th {
|
|
72
|
-
background:
|
|
73
|
-
color:
|
|
74
|
-
border-bottom: 1px solid
|
|
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
75
|
}
|
|
76
76
|
.sbdocs-table td {
|
|
77
|
-
color:
|
|
78
|
-
border-bottom: 1px solid
|
|
77
|
+
color: var(--color-fm-secondary) ;
|
|
78
|
+
border-bottom: 1px solid var(--color-fm-divider-tertiary) ;
|
|
79
79
|
}
|
|
80
80
|
@keyframes shimmer {
|
|
81
81
|
0% { transform: translateX(-100%); }
|
|
@@ -87,19 +87,19 @@ const meta: Meta<typeof ImageIcon> = {
|
|
|
87
87
|
`}
|
|
88
88
|
</style>
|
|
89
89
|
|
|
90
|
-
<div className="
|
|
90
|
+
<div className="bg-fm-surface-primary min-h-screen">
|
|
91
91
|
{/* Header */}
|
|
92
|
-
<div className="relative overflow-hidden border-b
|
|
93
|
-
<div className="absolute inset-0 bg-
|
|
92
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
93
|
+
<div className="from-fm-icon-info/10 to-fm-icon-positive/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
94
94
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
95
95
|
<div className="!space-y-6 text-center">
|
|
96
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
97
|
-
<ImageIcon className="h-12 w-12
|
|
96
|
+
<div className="border-fm-icon-info/30 from-fm-icon-info/20 to-fm-icon-positive/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
97
|
+
<ImageIcon className="text-fm-icon-info h-12 w-12" />
|
|
98
98
|
</div>
|
|
99
99
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
100
100
|
ImageIcon
|
|
101
101
|
</h1>
|
|
102
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed
|
|
102
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
103
103
|
A versatile image icon for media representations,
|
|
104
104
|
placeholders, and visual content indicators. Features a
|
|
105
105
|
clean design with a mountain landscape silhouette and a sun
|
|
@@ -110,28 +110,28 @@ const meta: Meta<typeof ImageIcon> = {
|
|
|
110
110
|
{/* Stats */}
|
|
111
111
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
112
112
|
<div className="text-center">
|
|
113
|
-
<div className="text-3xl font-bold
|
|
113
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
114
114
|
Visual
|
|
115
115
|
</div>
|
|
116
|
-
<div className="text-
|
|
116
|
+
<div className="text-fm-tertiary text-sm">
|
|
117
117
|
Media representation
|
|
118
118
|
</div>
|
|
119
119
|
</div>
|
|
120
|
-
<div className="h-8 w-px
|
|
120
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
121
121
|
<div className="text-center">
|
|
122
|
-
<div className="text-3xl font-bold
|
|
122
|
+
<div className="text-fm-icon-positive text-3xl font-bold">
|
|
123
123
|
Flexible
|
|
124
124
|
</div>
|
|
125
|
-
<div className="text-
|
|
125
|
+
<div className="text-fm-tertiary text-sm">
|
|
126
126
|
Gallery & uploads
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
129
|
-
<div className="h-8 w-px
|
|
129
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
130
130
|
<div className="text-center">
|
|
131
|
-
<div className="text-3xl font-bold
|
|
131
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
132
132
|
Intuitive
|
|
133
133
|
</div>
|
|
134
|
-
<div className="text-
|
|
134
|
+
<div className="text-fm-tertiary text-sm">
|
|
135
135
|
Universal recognition
|
|
136
136
|
</div>
|
|
137
137
|
</div>
|
|
@@ -144,16 +144,16 @@ const meta: Meta<typeof ImageIcon> = {
|
|
|
144
144
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
145
145
|
{/* Quick Usage */}
|
|
146
146
|
<div className="!space-y-8">
|
|
147
|
-
<h2 className="text-center text-3xl font-bold
|
|
147
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
148
148
|
Quick Start
|
|
149
149
|
</h2>
|
|
150
150
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
151
151
|
<div className="!space-y-4">
|
|
152
|
-
<h3 className="text-xl font-semibold
|
|
152
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
153
153
|
Basic Usage
|
|
154
154
|
</h3>
|
|
155
|
-
<div className="rounded-lg
|
|
156
|
-
<pre className="overflow-x-auto text-sm
|
|
155
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
156
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
157
157
|
{`import { ImageIcon } from "@icons/image-icon"
|
|
158
158
|
|
|
159
159
|
function MediaUpload() {
|
|
@@ -169,13 +169,15 @@ function MediaUpload() {
|
|
|
169
169
|
</div>
|
|
170
170
|
|
|
171
171
|
<div className="!space-y-4">
|
|
172
|
-
<h3 className="text-xl font-semibold
|
|
172
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
173
173
|
Live Preview
|
|
174
174
|
</h3>
|
|
175
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
176
|
-
<div className="flex items-center gap-3 rounded-lg border
|
|
177
|
-
<ImageIcon className="h-6 w-6
|
|
178
|
-
<span className="text-
|
|
175
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
176
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 flex items-center gap-3 rounded-lg border px-4 py-3">
|
|
177
|
+
<ImageIcon className="text-fm-icon-info h-6 w-6" />
|
|
178
|
+
<span className="text-fm-icon-active">
|
|
179
|
+
Upload Images
|
|
180
|
+
</span>
|
|
179
181
|
</div>
|
|
180
182
|
</div>
|
|
181
183
|
</div>
|
|
@@ -184,122 +186,130 @@ function MediaUpload() {
|
|
|
184
186
|
|
|
185
187
|
{/* Props Documentation */}
|
|
186
188
|
<div className="!space-y-8">
|
|
187
|
-
<h2 className="text-center text-3xl font-bold
|
|
189
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
188
190
|
Props & Configuration
|
|
189
191
|
</h2>
|
|
190
192
|
|
|
191
|
-
<div className="overflow-hidden rounded-lg border
|
|
192
|
-
<div className="bg-
|
|
193
|
-
<h3 className="text-xl font-semibold
|
|
193
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
194
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
195
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
196
|
+
Props
|
|
197
|
+
</h3>
|
|
194
198
|
</div>
|
|
195
199
|
<table className="!my-0 w-full">
|
|
196
|
-
<thead className="bg-
|
|
197
|
-
<tr className="border-
|
|
198
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
200
|
+
<thead className="bg-fm-surface-secondary">
|
|
201
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
202
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
199
203
|
Prop
|
|
200
204
|
</th>
|
|
201
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
205
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
202
206
|
Type
|
|
203
207
|
</th>
|
|
204
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
208
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
205
209
|
Default
|
|
206
210
|
</th>
|
|
207
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
211
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
208
212
|
Description
|
|
209
213
|
</th>
|
|
210
214
|
</tr>
|
|
211
215
|
</thead>
|
|
212
216
|
<tbody>
|
|
213
217
|
{" "}
|
|
214
|
-
<tr className="
|
|
215
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
218
|
+
<tr className="bg-fm-surface-secondary!">
|
|
219
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
216
220
|
withAccessibility
|
|
217
221
|
</td>
|
|
218
|
-
<td className="px-6 py-4 text-sm
|
|
222
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
219
223
|
boolean
|
|
220
224
|
</td>
|
|
221
|
-
<td className="px-6 py-4 text-sm
|
|
225
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
222
226
|
true
|
|
223
227
|
</td>
|
|
224
|
-
<td className="px-6 py-4 text-sm
|
|
228
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
225
229
|
Whether to wrap the icon with accessibility feature
|
|
226
230
|
</td>
|
|
227
231
|
</tr>
|
|
228
|
-
<tr className="border-
|
|
229
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
232
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
233
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
230
234
|
height
|
|
231
235
|
</td>
|
|
232
|
-
<td className="px-6 py-4 text-sm
|
|
236
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
233
237
|
number | string
|
|
234
238
|
</td>
|
|
235
|
-
<td className="px-6 py-4 text-sm
|
|
236
|
-
|
|
239
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
240
|
+
24
|
|
241
|
+
</td>
|
|
242
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
237
243
|
Height of the icon in pixels
|
|
238
244
|
</td>
|
|
239
245
|
</tr>
|
|
240
|
-
<tr className="border-
|
|
241
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
246
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
247
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
242
248
|
stroke
|
|
243
249
|
</td>
|
|
244
|
-
<td className="px-6 py-4 text-sm
|
|
250
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
245
251
|
string
|
|
246
252
|
</td>
|
|
247
|
-
<td className="px-6 py-4 text-sm
|
|
253
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
248
254
|
currentColor
|
|
249
255
|
</td>
|
|
250
|
-
<td className="px-6 py-4 text-sm
|
|
256
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
251
257
|
Stroke color of the image outline
|
|
252
258
|
</td>
|
|
253
259
|
</tr>
|
|
254
|
-
<tr className="border-
|
|
255
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
260
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
261
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
256
262
|
strokeWidth
|
|
257
263
|
</td>
|
|
258
|
-
<td className="px-6 py-4 text-sm
|
|
264
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
259
265
|
string | number
|
|
260
266
|
</td>
|
|
261
|
-
<td className="px-6 py-4 text-sm
|
|
267
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
262
268
|
1.5
|
|
263
269
|
</td>
|
|
264
|
-
<td className="px-6 py-4 text-sm
|
|
270
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
265
271
|
Stroke width of the outline
|
|
266
272
|
</td>
|
|
267
273
|
</tr>
|
|
268
|
-
<tr className="border-
|
|
269
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
274
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
275
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
270
276
|
fill
|
|
271
277
|
</td>
|
|
272
|
-
<td className="px-6 py-4 text-sm
|
|
278
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
273
279
|
string
|
|
274
280
|
</td>
|
|
275
|
-
<td className="px-6 py-4 text-sm
|
|
281
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
276
282
|
none
|
|
277
283
|
</td>
|
|
278
|
-
<td className="px-6 py-4 text-sm
|
|
284
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
279
285
|
Fill color of the icon
|
|
280
286
|
</td>
|
|
281
287
|
</tr>
|
|
282
|
-
<tr className="border-
|
|
283
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
288
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
289
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
284
290
|
className
|
|
285
291
|
</td>
|
|
286
|
-
<td className="px-6 py-4 text-sm
|
|
292
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
287
293
|
string
|
|
288
294
|
</td>
|
|
289
|
-
<td className="px-6 py-4 text-sm
|
|
290
|
-
|
|
295
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
296
|
+
-
|
|
297
|
+
</td>
|
|
298
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
291
299
|
CSS classes for styling (use for overrides)
|
|
292
300
|
</td>
|
|
293
301
|
</tr>
|
|
294
|
-
<tr className="
|
|
295
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
302
|
+
<tr className="bg-fm-surface-secondary!">
|
|
303
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
296
304
|
...svgProps
|
|
297
305
|
</td>
|
|
298
|
-
<td className="px-6 py-4 text-sm
|
|
306
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
299
307
|
SVGProps
|
|
300
308
|
</td>
|
|
301
|
-
<td className="px-6 py-4 text-sm
|
|
302
|
-
|
|
309
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
310
|
+
-
|
|
311
|
+
</td>
|
|
312
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
303
313
|
All standard SVG element props
|
|
304
314
|
</td>
|
|
305
315
|
</tr>
|
|
@@ -310,50 +320,62 @@ function MediaUpload() {
|
|
|
310
320
|
|
|
311
321
|
{/* Size Variations */}
|
|
312
322
|
<div className="!space-y-8">
|
|
313
|
-
<h2 className="text-center text-3xl font-bold
|
|
323
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
314
324
|
Size Variations
|
|
315
325
|
</h2>
|
|
316
|
-
<div className="rounded-lg border
|
|
326
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
317
327
|
<div className="!space-y-6">
|
|
318
328
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
319
329
|
<div className="!space-y-4">
|
|
320
|
-
<h3 className="text-lg font-semibold
|
|
330
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
321
331
|
Standard Sizes
|
|
322
332
|
</h3>
|
|
323
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
333
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
324
334
|
<div className="text-center">
|
|
325
|
-
<ImageIcon className="!mx-auto mb-2 h-3 w-3
|
|
326
|
-
<span className="text-
|
|
335
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
336
|
+
<span className="text-fm-tertiary text-xs">
|
|
337
|
+
12px
|
|
338
|
+
</span>
|
|
327
339
|
</div>
|
|
328
340
|
<div className="text-center">
|
|
329
|
-
<ImageIcon className="!mx-auto mb-2 h-4 w-4
|
|
330
|
-
<span className="text-
|
|
341
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
342
|
+
<span className="text-fm-tertiary text-xs">
|
|
343
|
+
16px
|
|
344
|
+
</span>
|
|
331
345
|
</div>
|
|
332
346
|
<div className="text-center">
|
|
333
|
-
<ImageIcon className="!mx-auto mb-2 h-5 w-5
|
|
334
|
-
<span className="text-
|
|
347
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
348
|
+
<span className="text-fm-tertiary text-xs">
|
|
349
|
+
20px
|
|
350
|
+
</span>
|
|
335
351
|
</div>
|
|
336
352
|
<div className="text-center">
|
|
337
|
-
<ImageIcon className="!mx-auto mb-2 h-6 w-6
|
|
338
|
-
<span className="text-
|
|
353
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
354
|
+
<span className="text-fm-tertiary text-xs">
|
|
355
|
+
24px
|
|
356
|
+
</span>
|
|
339
357
|
</div>
|
|
340
358
|
<div className="text-center">
|
|
341
|
-
<ImageIcon className="!mx-auto mb-2 h-8 w-8
|
|
342
|
-
<span className="text-
|
|
359
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
360
|
+
<span className="text-fm-tertiary text-xs">
|
|
361
|
+
32px
|
|
362
|
+
</span>
|
|
343
363
|
</div>
|
|
344
364
|
<div className="text-center">
|
|
345
|
-
<ImageIcon className="!mx-auto mb-2 h-12 w-12
|
|
346
|
-
<span className="text-
|
|
365
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
366
|
+
<span className="text-fm-tertiary text-xs">
|
|
367
|
+
48px
|
|
368
|
+
</span>
|
|
347
369
|
</div>
|
|
348
370
|
</div>
|
|
349
371
|
</div>
|
|
350
372
|
|
|
351
373
|
<div className="!space-y-4">
|
|
352
|
-
<h3 className="text-lg font-semibold
|
|
374
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
353
375
|
Code Example
|
|
354
376
|
</h3>
|
|
355
|
-
<div className="rounded-lg
|
|
356
|
-
<pre className="overflow-x-auto text-sm
|
|
377
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
378
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
357
379
|
{`// Small (16px)
|
|
358
380
|
<ImageIcon className="h-4 w-4 " />
|
|
359
381
|
|
|
@@ -379,56 +401,56 @@ function MediaUpload() {
|
|
|
379
401
|
|
|
380
402
|
{/* Color Variations */}
|
|
381
403
|
<div className="!space-y-8">
|
|
382
|
-
<h2 className="text-center text-3xl font-bold
|
|
404
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
383
405
|
Color Variations
|
|
384
406
|
</h2>
|
|
385
407
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
386
408
|
<div className="!space-y-4">
|
|
387
|
-
<h3 className="text-lg font-semibold
|
|
409
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
388
410
|
Semantic Colors
|
|
389
411
|
</h3>
|
|
390
|
-
<div className="!space-y-4 rounded-lg border
|
|
412
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
391
413
|
<div className="flex items-center gap-4">
|
|
392
|
-
<ImageIcon className="h-6 w-6
|
|
414
|
+
<ImageIcon className="text-fm-icon-info h-6 w-6" />
|
|
393
415
|
<div>
|
|
394
|
-
<div className="text-sm font-medium
|
|
416
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
395
417
|
Primary
|
|
396
418
|
</div>
|
|
397
|
-
<div className="text-
|
|
398
|
-
text-
|
|
419
|
+
<div className="text-fm-tertiary text-xs">
|
|
420
|
+
text-fm-icon-info
|
|
399
421
|
</div>
|
|
400
422
|
</div>
|
|
401
423
|
</div>
|
|
402
424
|
<div className="flex items-center gap-4">
|
|
403
|
-
<ImageIcon className="h-6 w-6
|
|
425
|
+
<ImageIcon className="text-fm-icon-positive h-6 w-6" />
|
|
404
426
|
<div>
|
|
405
|
-
<div className="text-sm font-medium
|
|
427
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
406
428
|
Success
|
|
407
429
|
</div>
|
|
408
|
-
<div className="text-
|
|
409
|
-
text-
|
|
430
|
+
<div className="text-fm-tertiary text-xs">
|
|
431
|
+
text-fm-icon-positive
|
|
410
432
|
</div>
|
|
411
433
|
</div>
|
|
412
434
|
</div>
|
|
413
435
|
<div className="flex items-center gap-4">
|
|
414
|
-
<ImageIcon className="h-6 w-6
|
|
436
|
+
<ImageIcon className="text-fm-placeholder h-6 w-6" />
|
|
415
437
|
<div>
|
|
416
|
-
<div className="text-sm font-medium
|
|
438
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
417
439
|
Muted
|
|
418
440
|
</div>
|
|
419
|
-
<div className="text-
|
|
420
|
-
text-
|
|
441
|
+
<div className="text-fm-tertiary text-xs">
|
|
442
|
+
text-fm-placeholder
|
|
421
443
|
</div>
|
|
422
444
|
</div>
|
|
423
445
|
</div>
|
|
424
446
|
<div className="flex items-center gap-4">
|
|
425
|
-
<ImageIcon className="h-6 w-6
|
|
447
|
+
<ImageIcon className="text-fm-icon-active/30 h-6 w-6" />
|
|
426
448
|
<div>
|
|
427
|
-
<div className="text-sm font-medium
|
|
449
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
428
450
|
Disabled
|
|
429
451
|
</div>
|
|
430
|
-
<div className="text-
|
|
431
|
-
text-
|
|
452
|
+
<div className="text-fm-tertiary text-xs">
|
|
453
|
+
text-fm-icon-active/30
|
|
432
454
|
</div>
|
|
433
455
|
</div>
|
|
434
456
|
</div>
|
|
@@ -436,11 +458,11 @@ function MediaUpload() {
|
|
|
436
458
|
</div>
|
|
437
459
|
|
|
438
460
|
<div className="!space-y-4">
|
|
439
|
-
<h3 className="text-lg font-semibold
|
|
461
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
440
462
|
Custom Colors
|
|
441
463
|
</h3>
|
|
442
|
-
<div className="rounded-lg
|
|
443
|
-
<pre className="overflow-x-auto text-sm
|
|
464
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
465
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
444
466
|
{`// Using Tailwind classes with
|
|
445
467
|
<ImageIcon className="h-6 w-6 text-blue-400 " />
|
|
446
468
|
<ImageIcon className="h-6 w-6 text-green-500 " />
|
|
@@ -465,31 +487,31 @@ function MediaUpload() {
|
|
|
465
487
|
|
|
466
488
|
{/* Usage Examples */}
|
|
467
489
|
<div className="!space-y-8">
|
|
468
|
-
<h2 className="text-center text-3xl font-bold
|
|
490
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
469
491
|
Usage Examples
|
|
470
492
|
</h2>
|
|
471
493
|
|
|
472
494
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
473
495
|
{/* Image Upload */}
|
|
474
496
|
<div className="!space-y-4">
|
|
475
|
-
<h3 className="text-lg font-semibold
|
|
497
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
476
498
|
Image Upload
|
|
477
499
|
</h3>
|
|
478
500
|
<div className="!space-y-4">
|
|
479
|
-
<div className="relative rounded-lg border-2 border-dashed
|
|
480
|
-
<ImageIcon className="!mx-auto h-12 w-12
|
|
481
|
-
<h4 className="mt-4 text-lg font-medium
|
|
501
|
+
<div className="border-fm-divider-primary bg-fm-surface-secondary hover:border-fm-icon-info/50 hover:bg-fm-icon-info/10 relative rounded-lg border-2 border-dashed p-8 text-center transition-colors">
|
|
502
|
+
<ImageIcon className="text-fm-placeholder !mx-auto h-12 w-12" />
|
|
503
|
+
<h4 className="text-fm-icon-active! mt-4 text-lg font-medium">
|
|
482
504
|
Upload Images
|
|
483
505
|
</h4>
|
|
484
|
-
<p className="mt-2 text-sm
|
|
506
|
+
<p className="text-fm-tertiary! mt-2 text-sm">
|
|
485
507
|
Drag and drop your images here, or click to browse
|
|
486
508
|
</p>
|
|
487
|
-
<button className="
|
|
509
|
+
<button className="bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 mt-4 rounded-lg px-4 py-2 transition-colors">
|
|
488
510
|
Browse Files
|
|
489
511
|
</button>
|
|
490
512
|
</div>
|
|
491
|
-
<div className="rounded-lg
|
|
492
|
-
<pre className="overflow-x-auto text-sm
|
|
513
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
514
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
493
515
|
{`<div className="relative border-2 border-dashed border-white/20 bg-white/5 p-8 text-center rounded-lg hover:border-blue-400/50 hover:bg-blue-500/10 transition-colors">
|
|
494
516
|
<ImageIcon className="mx-auto h-12 w-12 text-white/40 " />
|
|
495
517
|
<h4 className="mt-4 text-lg font-medium text-white">Upload Images</h4>
|
|
@@ -507,7 +529,7 @@ function MediaUpload() {
|
|
|
507
529
|
|
|
508
530
|
{/* Gallery Placeholder */}
|
|
509
531
|
<div className="!space-y-4">
|
|
510
|
-
<h3 className="text-lg font-semibold
|
|
532
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
511
533
|
Gallery Placeholder
|
|
512
534
|
</h3>
|
|
513
535
|
<div className="!space-y-4">
|
|
@@ -515,14 +537,14 @@ function MediaUpload() {
|
|
|
515
537
|
{[1, 2, 3, 4, 5, 6].map((item) => (
|
|
516
538
|
<div
|
|
517
539
|
key={item}
|
|
518
|
-
className="flex aspect-square items-center justify-center rounded-lg border
|
|
540
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex aspect-square items-center justify-center rounded-lg border p-4 transition-colors"
|
|
519
541
|
>
|
|
520
|
-
<ImageIcon className="h-8 w-8
|
|
542
|
+
<ImageIcon className="text-fm-icon-active/30 h-8 w-8" />
|
|
521
543
|
</div>
|
|
522
544
|
))}
|
|
523
545
|
</div>
|
|
524
|
-
<div className="rounded-lg
|
|
525
|
-
<pre className="overflow-x-auto text-sm
|
|
546
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
547
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
526
548
|
{`// Gallery grid with placeholders
|
|
527
549
|
<div className="grid grid-cols-3 gap-4">
|
|
528
550
|
{placeholders.map((item) => (
|
|
@@ -541,7 +563,7 @@ function MediaUpload() {
|
|
|
541
563
|
|
|
542
564
|
{/* Media Card */}
|
|
543
565
|
<div className="!space-y-4">
|
|
544
|
-
<h3 className="text-lg font-semibold
|
|
566
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
545
567
|
Media Cards
|
|
546
568
|
</h3>
|
|
547
569
|
<div className="!space-y-4">
|
|
@@ -553,27 +575,27 @@ function MediaUpload() {
|
|
|
553
575
|
].map((title, index) => (
|
|
554
576
|
<div
|
|
555
577
|
key={index}
|
|
556
|
-
className="flex items-start gap-4 rounded-lg border
|
|
578
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex items-start gap-4 rounded-lg border p-4 transition-colors"
|
|
557
579
|
>
|
|
558
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-lg
|
|
559
|
-
<ImageIcon className="h-6 w-6
|
|
580
|
+
<div className="bg-fm-icon-info/20 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
581
|
+
<ImageIcon className="text-fm-icon-info h-6 w-6" />
|
|
560
582
|
</div>
|
|
561
583
|
<div className="flex-1">
|
|
562
|
-
<h4 className="font-medium
|
|
584
|
+
<h4 className="text-fm-icon-active! font-medium">
|
|
563
585
|
{title}
|
|
564
586
|
</h4>
|
|
565
|
-
<p className="text-
|
|
587
|
+
<p className="text-fm-tertiary! text-sm">
|
|
566
588
|
{Math.floor(Math.random() * 50) + 10} items
|
|
567
589
|
</p>
|
|
568
590
|
</div>
|
|
569
|
-
<div className="text-
|
|
591
|
+
<div className="text-fm-placeholder text-xs">
|
|
570
592
|
{new Date().toLocaleDateString()}
|
|
571
593
|
</div>
|
|
572
594
|
</div>
|
|
573
595
|
))}
|
|
574
596
|
</div>
|
|
575
|
-
<div className="rounded-lg
|
|
576
|
-
<pre className="overflow-x-auto text-sm
|
|
597
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
598
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
577
599
|
{`// Media collection card
|
|
578
600
|
<div className="flex items-center gap-4 border border-white/10 bg-white/5 p-4 rounded-lg hover:bg-white/10 transition-colors">
|
|
579
601
|
<div className="flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
|
|
@@ -594,26 +616,26 @@ function MediaUpload() {
|
|
|
594
616
|
|
|
595
617
|
{/* Button Integration */}
|
|
596
618
|
<div className="!space-y-4">
|
|
597
|
-
<h3 className="text-lg font-semibold
|
|
619
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
598
620
|
Button Integration
|
|
599
621
|
</h3>
|
|
600
622
|
<div className="!space-y-4">
|
|
601
623
|
<div className="flex flex-wrap gap-4">
|
|
602
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
624
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
603
625
|
<ImageIcon className="h-4 w-4" />
|
|
604
626
|
Add Photo
|
|
605
627
|
</button>
|
|
606
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
628
|
+
<button className="border-fm-icon-positive/30 bg-fm-icon-positive/20 text-fm-icon-positive hover:bg-fm-icon-positive/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
607
629
|
<ImageIcon className="h-4 w-4" />
|
|
608
630
|
Gallery
|
|
609
631
|
</button>
|
|
610
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
632
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary text-fm-secondary hover:bg-fm-surface-secondary flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
611
633
|
<ImageIcon className="h-4 w-4" />
|
|
612
634
|
Media Library
|
|
613
635
|
</button>
|
|
614
636
|
</div>
|
|
615
|
-
<div className="rounded-lg
|
|
616
|
-
<pre className="overflow-x-auto text-sm
|
|
637
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
638
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
617
639
|
{`// Primary action button
|
|
618
640
|
<button className="flex items-center gap-2 bg-blue-500/20 border border-blue-500/30 px-4 py-2 rounded-lg">
|
|
619
641
|
<ImageIcon className="h-4 w-4 " />
|
|
@@ -634,47 +656,47 @@ function MediaUpload() {
|
|
|
634
656
|
|
|
635
657
|
{/* Interactive States */}
|
|
636
658
|
<div className="!space-y-8">
|
|
637
|
-
<h2 className="text-center text-3xl font-bold
|
|
659
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
638
660
|
Interactive States & Animations
|
|
639
661
|
</h2>
|
|
640
662
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
641
663
|
<div className="!space-y-4">
|
|
642
|
-
<h3 className="text-lg font-semibold
|
|
664
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
643
665
|
Hover & Loading States
|
|
644
666
|
</h3>
|
|
645
|
-
<div className="!space-y-4 rounded-lg border
|
|
667
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
646
668
|
<div className="flex items-center gap-4">
|
|
647
|
-
<ImageIcon className="h-6 w-6
|
|
669
|
+
<ImageIcon className="text-fm-tertiary hover:text-fm-icon-info h-6 w-6 transition-colors" />
|
|
648
670
|
<div>
|
|
649
|
-
<div className="text-sm font-medium
|
|
671
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
650
672
|
Color Change
|
|
651
673
|
</div>
|
|
652
|
-
<div className="text-
|
|
653
|
-
hover:text-
|
|
674
|
+
<div className="text-fm-tertiary text-xs">
|
|
675
|
+
hover:text-fm-icon-info
|
|
654
676
|
</div>
|
|
655
677
|
</div>
|
|
656
678
|
</div>
|
|
657
679
|
<div className="flex items-center gap-4">
|
|
658
|
-
<ImageIcon className="h-6 w-6
|
|
680
|
+
<ImageIcon className="text-fm-icon-active h-6 w-6 transition-transform hover:scale-110" />
|
|
659
681
|
<div>
|
|
660
|
-
<div className="text-sm font-medium
|
|
682
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
661
683
|
Scale Effect
|
|
662
684
|
</div>
|
|
663
|
-
<div className="text-
|
|
685
|
+
<div className="text-fm-tertiary text-xs">
|
|
664
686
|
hover:scale-110
|
|
665
687
|
</div>
|
|
666
688
|
</div>
|
|
667
689
|
</div>
|
|
668
690
|
<div className="flex items-center gap-4">
|
|
669
691
|
<div className="relative overflow-hidden">
|
|
670
|
-
<ImageIcon className="h-6 w-6
|
|
671
|
-
<div className="animate-shimmer absolute inset-0 bg-
|
|
692
|
+
<ImageIcon className="text-fm-icon-info h-6 w-6" />
|
|
693
|
+
<div className="animate-shimmer absolute inset-0 bg-linear-to-r from-transparent via-transparent to-transparent"></div>
|
|
672
694
|
</div>
|
|
673
695
|
<div>
|
|
674
|
-
<div className="text-sm font-medium
|
|
696
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
675
697
|
Loading Shimmer
|
|
676
698
|
</div>
|
|
677
|
-
<div className="text-
|
|
699
|
+
<div className="text-fm-tertiary text-xs">
|
|
678
700
|
animate-shimmer
|
|
679
701
|
</div>
|
|
680
702
|
</div>
|
|
@@ -684,13 +706,13 @@ function MediaUpload() {
|
|
|
684
706
|
className="rounded p-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
685
707
|
tabIndex={0}
|
|
686
708
|
>
|
|
687
|
-
<ImageIcon className="h-6 w-6
|
|
709
|
+
<ImageIcon className="text-fm-icon-active h-6 w-6" />
|
|
688
710
|
</div>
|
|
689
711
|
<div>
|
|
690
|
-
<div className="text-sm font-medium
|
|
712
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
691
713
|
Focus Ring
|
|
692
714
|
</div>
|
|
693
|
-
<div className="text-
|
|
715
|
+
<div className="text-fm-tertiary text-xs">
|
|
694
716
|
focus:ring-2
|
|
695
717
|
</div>
|
|
696
718
|
</div>
|
|
@@ -699,11 +721,11 @@ function MediaUpload() {
|
|
|
699
721
|
</div>
|
|
700
722
|
|
|
701
723
|
<div className="!space-y-4">
|
|
702
|
-
<h3 className="text-lg font-semibold
|
|
724
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
703
725
|
Animation Examples
|
|
704
726
|
</h3>
|
|
705
|
-
<div className="rounded-lg
|
|
706
|
-
<pre className="overflow-x-auto text-sm
|
|
727
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
728
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
707
729
|
{`// Hover effects
|
|
708
730
|
<ImageIcon className="h-6 w-6 text-white/60 hover:text-blue-400 transition-colors " />
|
|
709
731
|
|
|
@@ -733,64 +755,64 @@ function MediaUpload() {
|
|
|
733
755
|
|
|
734
756
|
{/* Accessibility */}
|
|
735
757
|
<div className="!space-y-8">
|
|
736
|
-
<h2 className="text-center text-3xl font-bold
|
|
758
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
737
759
|
Accessibility Features
|
|
738
760
|
</h2>
|
|
739
761
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
740
|
-
<div className="!space-y-4 rounded-lg border
|
|
741
|
-
<h3 className="text-lg font-semibold
|
|
762
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
763
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
742
764
|
✅ Built-in Features
|
|
743
765
|
</h3>
|
|
744
|
-
<ul className="!space-y-2 text-sm
|
|
745
|
-
<li className="
|
|
766
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
767
|
+
<li className="text-fm-secondary!">
|
|
746
768
|
Uses Radix UI AccessibleIcon wrapper
|
|
747
769
|
</li>
|
|
748
|
-
<li className="
|
|
770
|
+
<li className="text-fm-secondary!">
|
|
749
771
|
Provides screen reader label "Image icon"
|
|
750
772
|
</li>
|
|
751
|
-
<li className="
|
|
773
|
+
<li className="text-fm-secondary!">
|
|
752
774
|
Supports keyboard navigation when interactive
|
|
753
775
|
</li>
|
|
754
|
-
<li className="
|
|
776
|
+
<li className="text-fm-secondary!">
|
|
755
777
|
Maintains proper color contrast ratios
|
|
756
778
|
</li>
|
|
757
|
-
<li className="
|
|
779
|
+
<li className="text-fm-secondary!">
|
|
758
780
|
Scales with user's font size preferences
|
|
759
781
|
</li>
|
|
760
782
|
</ul>
|
|
761
783
|
</div>
|
|
762
784
|
|
|
763
|
-
<div className="!space-y-4 rounded-lg border
|
|
764
|
-
<h3 className="text-lg font-semibold
|
|
785
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
786
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
765
787
|
💡 Best Practices
|
|
766
788
|
</h3>
|
|
767
|
-
<ul className="!space-y-2 text-sm
|
|
768
|
-
<li className="
|
|
789
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
790
|
+
<li className="text-fm-secondary!">
|
|
769
791
|
Always provide alt text for image content
|
|
770
792
|
</li>
|
|
771
|
-
<li className="
|
|
793
|
+
<li className="text-fm-secondary!">
|
|
772
794
|
Use descriptive labels for upload areas
|
|
773
795
|
</li>
|
|
774
|
-
<li className="
|
|
796
|
+
<li className="text-fm-secondary!">
|
|
775
797
|
Ensure sufficient color contrast
|
|
776
798
|
</li>
|
|
777
|
-
<li className="
|
|
799
|
+
<li className="text-fm-secondary!">
|
|
778
800
|
Add focus states for interactive elements
|
|
779
801
|
</li>
|
|
780
|
-
<li className="
|
|
802
|
+
<li className="text-fm-secondary!">
|
|
781
803
|
Consider motion sensitivity for animations
|
|
782
804
|
</li>
|
|
783
805
|
</ul>
|
|
784
806
|
</div>
|
|
785
807
|
</div>
|
|
786
808
|
|
|
787
|
-
<div className="rounded-lg border
|
|
788
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
809
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
810
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
789
811
|
Custom Accessibility Implementation
|
|
790
812
|
</h3>
|
|
791
813
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
792
|
-
<div className="rounded-lg
|
|
793
|
-
<pre className="overflow-x-auto text-sm
|
|
814
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
815
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
794
816
|
{`// Upload area with proper ARIA labels
|
|
795
817
|
<div
|
|
796
818
|
role="button"
|
|
@@ -815,13 +837,13 @@ function MediaUpload() {
|
|
|
815
837
|
</pre>
|
|
816
838
|
</div>
|
|
817
839
|
<div className="!space-y-4">
|
|
818
|
-
<p className="text-
|
|
840
|
+
<p className="text-fm-secondary! text-sm">
|
|
819
841
|
When using ImageIcon for interactive elements like
|
|
820
842
|
upload areas or gallery triggers, provide comprehensive
|
|
821
843
|
ARIA labels and keyboard support.
|
|
822
844
|
</p>
|
|
823
|
-
<div className="
|
|
824
|
-
<div className="flex items-center gap-2 text-sm
|
|
845
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
846
|
+
<div className="text-fm-icon-info flex items-center gap-2 text-sm">
|
|
825
847
|
<ImageIcon className="h-4 w-4" />
|
|
826
848
|
<span>
|
|
827
849
|
Screen readers get context about image functionality
|
|
@@ -835,46 +857,60 @@ function MediaUpload() {
|
|
|
835
857
|
|
|
836
858
|
{/* Related Icons */}
|
|
837
859
|
<div className="!space-y-8">
|
|
838
|
-
<h2 className="text-center text-3xl font-bold
|
|
860
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
839
861
|
Related Icons
|
|
840
862
|
</h2>
|
|
841
863
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
842
|
-
<div className="!space-y-3 rounded-lg border
|
|
843
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
864
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
865
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
844
866
|
<span className="text-2xl">📹</span>
|
|
845
867
|
</div>
|
|
846
868
|
<div>
|
|
847
|
-
<div className="font-medium
|
|
848
|
-
|
|
869
|
+
<div className="text-fm-icon-active font-medium">
|
|
870
|
+
VideoIcon
|
|
871
|
+
</div>
|
|
872
|
+
<div className="text-fm-tertiary text-xs">
|
|
873
|
+
Video content
|
|
874
|
+
</div>
|
|
849
875
|
</div>
|
|
850
876
|
</div>
|
|
851
|
-
<div className="!space-y-3 rounded-lg border
|
|
852
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
877
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
878
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
853
879
|
<span className="text-2xl">📁</span>
|
|
854
880
|
</div>
|
|
855
881
|
<div>
|
|
856
|
-
<div className="font-medium
|
|
857
|
-
|
|
882
|
+
<div className="text-fm-icon-active font-medium">
|
|
883
|
+
FolderIcon
|
|
884
|
+
</div>
|
|
885
|
+
<div className="text-fm-tertiary text-xs">
|
|
858
886
|
File organization
|
|
859
887
|
</div>
|
|
860
888
|
</div>
|
|
861
889
|
</div>
|
|
862
|
-
<div className="!space-y-3 rounded-lg border
|
|
863
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
890
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
891
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
864
892
|
<span className="text-2xl">⬆️</span>
|
|
865
893
|
</div>
|
|
866
894
|
<div>
|
|
867
|
-
<div className="font-medium
|
|
868
|
-
|
|
895
|
+
<div className="text-fm-icon-active font-medium">
|
|
896
|
+
UploadIcon
|
|
897
|
+
</div>
|
|
898
|
+
<div className="text-fm-tertiary text-xs">
|
|
899
|
+
File uploads
|
|
900
|
+
</div>
|
|
869
901
|
</div>
|
|
870
902
|
</div>
|
|
871
|
-
<div className="!space-y-3 rounded-lg border
|
|
872
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
903
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
904
|
+
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
873
905
|
<span className="text-2xl">🎨</span>
|
|
874
906
|
</div>
|
|
875
907
|
<div>
|
|
876
|
-
<div className="font-medium
|
|
877
|
-
|
|
908
|
+
<div className="text-fm-icon-active font-medium">
|
|
909
|
+
PaletteIcon
|
|
910
|
+
</div>
|
|
911
|
+
<div className="text-fm-tertiary text-xs">
|
|
912
|
+
Design tools
|
|
913
|
+
</div>
|
|
878
914
|
</div>
|
|
879
915
|
</div>
|
|
880
916
|
</div>
|
|
@@ -882,14 +918,14 @@ function MediaUpload() {
|
|
|
882
918
|
</div>
|
|
883
919
|
|
|
884
920
|
{/* Footer */}
|
|
885
|
-
<div className="border-
|
|
921
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
886
922
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
887
923
|
<div className="!space-y-4 text-center">
|
|
888
|
-
<p className="
|
|
924
|
+
<p className="text-fm-tertiary!">
|
|
889
925
|
ImageIcon is part of the Aural UI icon library, built for
|
|
890
926
|
media-rich applications and visual content management.
|
|
891
927
|
</p>
|
|
892
|
-
<p className="text-
|
|
928
|
+
<p className="text-fm-placeholder! text-sm">
|
|
893
929
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
894
930
|
compatibility and follow WCAG guidelines for media
|
|
895
931
|
accessibility.
|
|
@@ -943,20 +979,20 @@ const storyParameters = {
|
|
|
943
979
|
backgrounds: {
|
|
944
980
|
default: "dark",
|
|
945
981
|
values: [
|
|
946
|
-
{ name: "dark", value: "
|
|
947
|
-
{ name: "darker", value: "
|
|
982
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
983
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
948
984
|
],
|
|
949
985
|
},
|
|
950
986
|
}
|
|
951
987
|
|
|
952
988
|
export const Default: Story = {
|
|
953
989
|
args: {
|
|
954
|
-
className: "h-6 w-6 text-
|
|
990
|
+
className: "h-6 w-6 text-fm-icon-info ",
|
|
955
991
|
withAccessibility: true,
|
|
956
992
|
},
|
|
957
993
|
parameters: storyParameters,
|
|
958
994
|
render: (args) => (
|
|
959
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
995
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary flex h-32 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
|
|
960
996
|
<ImageIcon {...args} />
|
|
961
997
|
</div>
|
|
962
998
|
),
|
|
@@ -973,30 +1009,30 @@ export const SizeVariations: Story = {
|
|
|
973
1009
|
},
|
|
974
1010
|
},
|
|
975
1011
|
render: () => (
|
|
976
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
1012
|
+
<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">
|
|
977
1013
|
<div className="text-center">
|
|
978
|
-
<ImageIcon className="!mx-auto mb-2 h-3 w-3
|
|
979
|
-
<span className="text-
|
|
1014
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
1015
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
980
1016
|
</div>
|
|
981
1017
|
<div className="text-center">
|
|
982
|
-
<ImageIcon className="!mx-auto mb-2 h-4 w-4
|
|
983
|
-
<span className="text-
|
|
1018
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
1019
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
984
1020
|
</div>
|
|
985
1021
|
<div className="text-center">
|
|
986
|
-
<ImageIcon className="!mx-auto mb-2 h-5 w-5
|
|
987
|
-
<span className="text-
|
|
1022
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
1023
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
988
1024
|
</div>
|
|
989
1025
|
<div className="text-center">
|
|
990
|
-
<ImageIcon className="!mx-auto mb-2 h-6 w-6
|
|
991
|
-
<span className="text-
|
|
1026
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
1027
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
992
1028
|
</div>
|
|
993
1029
|
<div className="text-center">
|
|
994
|
-
<ImageIcon className="!mx-auto mb-2 h-8 w-8
|
|
995
|
-
<span className="text-
|
|
1030
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
1031
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
996
1032
|
</div>
|
|
997
1033
|
<div className="text-center">
|
|
998
|
-
<ImageIcon className="!mx-auto mb-2 h-12 w-12
|
|
999
|
-
<span className="text-
|
|
1034
|
+
<ImageIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
1035
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1000
1036
|
</div>
|
|
1001
1037
|
</div>
|
|
1002
1038
|
),
|
|
@@ -1013,34 +1049,38 @@ export const ColorVariations: Story = {
|
|
|
1013
1049
|
},
|
|
1014
1050
|
},
|
|
1015
1051
|
render: () => (
|
|
1016
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1052
|
+
<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">
|
|
1017
1053
|
<div className="text-center">
|
|
1018
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1019
|
-
<ImageIcon className="h-8 w-8
|
|
1054
|
+
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1055
|
+
<ImageIcon className="text-fm-icon-info h-8 w-8" />
|
|
1020
1056
|
</div>
|
|
1021
|
-
<div className="text-sm font-medium
|
|
1022
|
-
<div className="text-
|
|
1057
|
+
<div className="text-fm-icon-active text-sm font-medium">Primary</div>
|
|
1058
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
1023
1059
|
</div>
|
|
1024
1060
|
<div className="text-center">
|
|
1025
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1026
|
-
<ImageIcon className="h-8 w-8
|
|
1061
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1062
|
+
<ImageIcon className="text-fm-icon-positive h-8 w-8" />
|
|
1063
|
+
</div>
|
|
1064
|
+
<div className="text-fm-icon-active text-sm font-medium">Success</div>
|
|
1065
|
+
<div className="text-fm-icon-positive text-xs">
|
|
1066
|
+
text-fm-icon-positive
|
|
1027
1067
|
</div>
|
|
1028
|
-
<div className="text-sm font-medium text-white">Success</div>
|
|
1029
|
-
<div className="text-xs text-green-400">text-green-400</div>
|
|
1030
1068
|
</div>
|
|
1031
1069
|
<div className="text-center">
|
|
1032
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1033
|
-
<ImageIcon className="h-8 w-8
|
|
1070
|
+
<div className="border-fm-divider-primary bg-fm-surface-tertiary/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1071
|
+
<ImageIcon className="text-fm-placeholder h-8 w-8" />
|
|
1034
1072
|
</div>
|
|
1035
|
-
<div className="text-sm font-medium
|
|
1036
|
-
<div className="text-
|
|
1073
|
+
<div className="text-fm-icon-active text-sm font-medium">Muted</div>
|
|
1074
|
+
<div className="text-fm-placeholder text-xs">text-fm-placeholder</div>
|
|
1037
1075
|
</div>
|
|
1038
1076
|
<div className="text-center">
|
|
1039
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1040
|
-
<ImageIcon className="h-8 w-8
|
|
1077
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1078
|
+
<ImageIcon className="text-fm-icon-active/30 h-8 w-8" />
|
|
1079
|
+
</div>
|
|
1080
|
+
<div className="text-fm-icon-active text-sm font-medium">Disabled</div>
|
|
1081
|
+
<div className="text-fm-icon-active/30 text-xs">
|
|
1082
|
+
text-fm-icon-active/30
|
|
1041
1083
|
</div>
|
|
1042
|
-
<div className="text-sm font-medium text-white">Disabled</div>
|
|
1043
|
-
<div className="text-xs text-white/30">text-white/30</div>
|
|
1044
1084
|
</div>
|
|
1045
1085
|
</div>
|
|
1046
1086
|
),
|
|
@@ -1057,19 +1097,21 @@ export const UsageExamples: Story = {
|
|
|
1057
1097
|
},
|
|
1058
1098
|
},
|
|
1059
1099
|
render: () => (
|
|
1060
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1100
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1061
1101
|
{/* Image Upload */}
|
|
1062
1102
|
<div className="!space-y-2">
|
|
1063
|
-
<h3 className="text-sm font-medium
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1103
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1104
|
+
Image Upload
|
|
1105
|
+
</h3>
|
|
1106
|
+
<div className="border-fm-divider-primary bg-fm-surface-secondary hover:border-fm-icon-info/50 hover:bg-fm-icon-info/10 relative rounded-lg border-2 border-dashed p-8 text-center transition-colors">
|
|
1107
|
+
<ImageIcon className="text-fm-placeholder !mx-auto h-12 w-12" />
|
|
1108
|
+
<h4 className="text-fm-icon-active! mt-4 text-lg font-medium">
|
|
1067
1109
|
Upload Images
|
|
1068
1110
|
</h4>
|
|
1069
|
-
<p className="mt-2 text-sm
|
|
1111
|
+
<p className="text-fm-tertiary! mt-2 text-sm">
|
|
1070
1112
|
Drag and drop your images here, or click to browse
|
|
1071
1113
|
</p>
|
|
1072
|
-
<button className="
|
|
1114
|
+
<button className="bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 mt-4 rounded-lg px-4 py-2 transition-colors">
|
|
1073
1115
|
Browse Files
|
|
1074
1116
|
</button>
|
|
1075
1117
|
</div>
|
|
@@ -1077,14 +1119,16 @@ export const UsageExamples: Story = {
|
|
|
1077
1119
|
|
|
1078
1120
|
{/* Gallery Placeholder */}
|
|
1079
1121
|
<div className="!space-y-2">
|
|
1080
|
-
<h3 className="text-sm font-medium
|
|
1122
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1123
|
+
Gallery Placeholder
|
|
1124
|
+
</h3>
|
|
1081
1125
|
<div className="grid grid-cols-6 gap-4">
|
|
1082
1126
|
{[1, 2, 3, 4, 5, 6].map((item) => (
|
|
1083
1127
|
<div
|
|
1084
1128
|
key={item}
|
|
1085
|
-
className="flex aspect-square items-center justify-center rounded-lg border
|
|
1129
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex aspect-square items-center justify-center rounded-lg border p-4 transition-colors"
|
|
1086
1130
|
>
|
|
1087
|
-
<ImageIcon className="h-6 w-6
|
|
1131
|
+
<ImageIcon className="text-fm-icon-active/30 h-6 w-6" />
|
|
1088
1132
|
</div>
|
|
1089
1133
|
))}
|
|
1090
1134
|
</div>
|
|
@@ -1092,17 +1136,19 @@ export const UsageExamples: Story = {
|
|
|
1092
1136
|
|
|
1093
1137
|
{/* Button Integration */}
|
|
1094
1138
|
<div className="!space-y-2">
|
|
1095
|
-
<h3 className="text-sm font-medium
|
|
1139
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1140
|
+
Button Integration
|
|
1141
|
+
</h3>
|
|
1096
1142
|
<div className="flex flex-wrap gap-4">
|
|
1097
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
1143
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
1098
1144
|
<ImageIcon className="h-4 w-4" />
|
|
1099
1145
|
Add Photo
|
|
1100
1146
|
</button>
|
|
1101
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
1147
|
+
<button className="border-fm-icon-positive/30 bg-fm-icon-positive/20 text-fm-icon-positive hover:bg-fm-icon-positive/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
1102
1148
|
<ImageIcon className="h-4 w-4" />
|
|
1103
1149
|
Gallery
|
|
1104
1150
|
</button>
|
|
1105
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
1151
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary text-fm-secondary hover:bg-fm-surface-secondary flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
1106
1152
|
<ImageIcon className="h-4 w-4" />
|
|
1107
1153
|
Media Library
|
|
1108
1154
|
</button>
|
|
@@ -1123,39 +1169,39 @@ export const InteractiveStates: Story = {
|
|
|
1123
1169
|
},
|
|
1124
1170
|
},
|
|
1125
1171
|
render: () => (
|
|
1126
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1172
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1127
1173
|
<div className="!space-y-4">
|
|
1128
|
-
<h3 className="text-sm font-medium
|
|
1174
|
+
<h3 className="text-fm-secondary text-sm font-medium">Hover Effects</h3>
|
|
1129
1175
|
<div className="flex gap-8">
|
|
1130
1176
|
<div className="flex flex-col items-center gap-2">
|
|
1131
|
-
<ImageIcon className="h-8 w-8
|
|
1132
|
-
<span className="text-
|
|
1177
|
+
<ImageIcon className="text-fm-tertiary hover:text-fm-icon-info h-8 w-8 transition-colors" />
|
|
1178
|
+
<span className="text-fm-tertiary text-xs">Color Change</span>
|
|
1133
1179
|
</div>
|
|
1134
1180
|
<div className="flex flex-col items-center gap-2">
|
|
1135
|
-
<ImageIcon className="h-8 w-8
|
|
1136
|
-
<span className="text-
|
|
1181
|
+
<ImageIcon className="text-fm-icon-active h-8 w-8 transition-transform hover:scale-110" />
|
|
1182
|
+
<span className="text-fm-tertiary text-xs">Scale Up</span>
|
|
1137
1183
|
</div>
|
|
1138
1184
|
<div className="flex flex-col items-center gap-2">
|
|
1139
1185
|
<div className="relative overflow-hidden">
|
|
1140
|
-
<ImageIcon className="h-8 w-8
|
|
1141
|
-
<div className="animate-shimmer absolute inset-0 bg-
|
|
1186
|
+
<ImageIcon className="text-fm-icon-info h-8 w-8" />
|
|
1187
|
+
<div className="animate-shimmer absolute inset-0 bg-linear-to-r from-transparent via-transparent to-transparent"></div>
|
|
1142
1188
|
</div>
|
|
1143
|
-
<span className="text-
|
|
1189
|
+
<span className="text-fm-tertiary text-xs">Loading Shimmer</span>
|
|
1144
1190
|
</div>
|
|
1145
1191
|
</div>
|
|
1146
1192
|
</div>
|
|
1147
1193
|
|
|
1148
1194
|
<div className="!space-y-4">
|
|
1149
|
-
<h3 className="text-sm font-medium
|
|
1195
|
+
<h3 className="text-fm-secondary text-sm font-medium">Focus States</h3>
|
|
1150
1196
|
<div className="flex gap-8">
|
|
1151
1197
|
<div className="flex flex-col items-center gap-2">
|
|
1152
1198
|
<div
|
|
1153
1199
|
className="rounded p-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
1154
1200
|
tabIndex={0}
|
|
1155
1201
|
>
|
|
1156
|
-
<ImageIcon className="h-8 w-8
|
|
1202
|
+
<ImageIcon className="text-fm-icon-active h-8 w-8" />
|
|
1157
1203
|
</div>
|
|
1158
|
-
<span className="text-
|
|
1204
|
+
<span className="text-fm-tertiary text-xs">Focus Ring</span>
|
|
1159
1205
|
</div>
|
|
1160
1206
|
</div>
|
|
1161
1207
|
</div>
|
|
@@ -1176,12 +1222,12 @@ export const Playground: Story = {
|
|
|
1176
1222
|
args: {
|
|
1177
1223
|
width: 32,
|
|
1178
1224
|
height: 32,
|
|
1179
|
-
className: "text-
|
|
1225
|
+
className: "text-fm-icon-info ",
|
|
1180
1226
|
strokeWidth: 1.5,
|
|
1181
1227
|
},
|
|
1182
1228
|
render: (args) => (
|
|
1183
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1184
|
-
<div className="rounded-lg border
|
|
1229
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
|
|
1230
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1185
1231
|
<ImageIcon {...args} />
|
|
1186
1232
|
</div>
|
|
1187
1233
|
</div>
|