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
|
@@ -12,9 +12,9 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
12
12
|
backgrounds: {
|
|
13
13
|
default: "dark",
|
|
14
14
|
values: [
|
|
15
|
-
{ name: "dark", value: "
|
|
16
|
-
{ name: "darker", value: "
|
|
17
|
-
{ name: "light", value: "
|
|
15
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
16
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
17
|
+
{ name: "light", value: "var(--color-fm-neutral-1100)" },
|
|
18
18
|
],
|
|
19
19
|
},
|
|
20
20
|
docs: {
|
|
@@ -41,42 +41,42 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
41
41
|
background: transparent !important;
|
|
42
42
|
}
|
|
43
43
|
body {
|
|
44
|
-
background:
|
|
44
|
+
background: var(--color-fm-surface-primary) !important;
|
|
45
45
|
}
|
|
46
46
|
#storybook-docs {
|
|
47
|
-
background:
|
|
47
|
+
background: var(--color-fm-surface-primary) !important;
|
|
48
48
|
}
|
|
49
49
|
.sbdocs-preview {
|
|
50
50
|
background: transparent !important;
|
|
51
51
|
border: none !important;
|
|
52
52
|
}
|
|
53
53
|
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
54
|
-
color:
|
|
54
|
+
color: var(--color-fm-icon-active) !important;
|
|
55
55
|
}
|
|
56
56
|
.sbdocs-p, .sbdocs-li {
|
|
57
|
-
color:
|
|
57
|
+
color: var(--color-fm-secondary) !important;
|
|
58
58
|
}
|
|
59
59
|
.sbdocs-code {
|
|
60
|
-
background:
|
|
61
|
-
color:
|
|
62
|
-
border: 1px solid
|
|
60
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
61
|
+
color: var(--color-fm-secondary-500) !important;
|
|
62
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
63
63
|
}
|
|
64
64
|
.sbdocs-pre {
|
|
65
|
-
background:
|
|
66
|
-
border: 1px solid
|
|
65
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
66
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
67
67
|
}
|
|
68
68
|
.sbdocs-table {
|
|
69
|
-
background:
|
|
70
|
-
border: 1px solid
|
|
69
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
70
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
71
71
|
}
|
|
72
72
|
.sbdocs-table th {
|
|
73
|
-
background:
|
|
74
|
-
color:
|
|
75
|
-
border-bottom: 1px solid
|
|
73
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
74
|
+
color: var(--color-fm-icon-active) !important;
|
|
75
|
+
border-bottom: 1px solid var(--color-fm-divider-secondary) !important;
|
|
76
76
|
}
|
|
77
77
|
.sbdocs-table td {
|
|
78
|
-
color:
|
|
79
|
-
border-bottom: 1px solid
|
|
78
|
+
color: var(--color-fm-secondary) !important;
|
|
79
|
+
border-bottom: 1px solid var(--color-fm-divider-tertiary) !important;
|
|
80
80
|
}
|
|
81
81
|
@keyframes spin-neutral {
|
|
82
82
|
from { transform: rotate(0deg); }
|
|
@@ -102,17 +102,19 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
102
102
|
`}
|
|
103
103
|
</style>
|
|
104
104
|
|
|
105
|
-
<div className="
|
|
105
|
+
<div className="from-fm-surface-primary via-fm-surface-primary/20 to-fm-surface-primary min-h-screen bg-linear-to-br">
|
|
106
106
|
{/* Header */}
|
|
107
|
-
<div className="relative overflow-hidden border-b
|
|
108
|
-
<div className="absolute inset-0 bg-
|
|
107
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
108
|
+
<div className="from-fm-surface-secondary/10 to-fm-surface-tertiary/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
109
109
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
110
110
|
<div className="!space-y-6 text-center">
|
|
111
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
111
|
+
<div className="border-fm-divider-primary from-fm-surface-secondary/20 to-fm-surface-tertiary/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
112
112
|
<SpinnerSolidNeutralIcon className="h-12 w-12" />
|
|
113
113
|
</div>
|
|
114
|
-
<h1 className="
|
|
115
|
-
|
|
114
|
+
<h1 className="text-fm-icon-active!">
|
|
115
|
+
SpinnerSolidNeutralIcon
|
|
116
|
+
</h1>
|
|
117
|
+
<p className="text-fm-icon-active! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
116
118
|
A neutral-themed spinner icon with gradient styling for
|
|
117
119
|
loading states, asynchronous actions, and content
|
|
118
120
|
transitions. Features a sophisticated conic gradient design
|
|
@@ -122,26 +124,28 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
122
124
|
{/* Stats */}
|
|
123
125
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
124
126
|
<div className="text-center">
|
|
125
|
-
<div className="text-3xl font-bold
|
|
127
|
+
<div className="text-fm-secondary text-3xl font-bold">
|
|
126
128
|
Gradient
|
|
127
129
|
</div>
|
|
128
|
-
<div className="text-
|
|
130
|
+
<div className="text-fm-icon-active/80 text-sm">
|
|
131
|
+
Conic Design
|
|
132
|
+
</div>
|
|
129
133
|
</div>
|
|
130
|
-
<div className="h-8 w-px
|
|
134
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
131
135
|
<div className="text-center">
|
|
132
|
-
<div className="text-3xl font-bold
|
|
136
|
+
<div className="text-fm-secondary text-3xl font-bold">
|
|
133
137
|
Neutral
|
|
134
138
|
</div>
|
|
135
|
-
<div className="text-
|
|
139
|
+
<div className="text-fm-icon-active/80 text-sm">
|
|
136
140
|
Theme Agnostic
|
|
137
141
|
</div>
|
|
138
142
|
</div>
|
|
139
|
-
<div className="h-8 w-px
|
|
143
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
140
144
|
<div className="text-center">
|
|
141
|
-
<div className="text-3xl font-bold
|
|
145
|
+
<div className="text-fm-icon-active text-3xl font-bold">
|
|
142
146
|
Accessible
|
|
143
147
|
</div>
|
|
144
|
-
<div className="text-
|
|
148
|
+
<div className="text-fm-icon-active/80 text-sm">
|
|
145
149
|
Screen Reader Ready
|
|
146
150
|
</div>
|
|
147
151
|
</div>
|
|
@@ -154,35 +158,35 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
154
158
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
155
159
|
{/* Features */}
|
|
156
160
|
<div className="!space-y-8">
|
|
157
|
-
<h3 className="text-center text-2xl font-bold
|
|
161
|
+
<h3 className="text-fm-icon-active! text-center text-2xl font-bold">
|
|
158
162
|
Key Features
|
|
159
163
|
</h3>
|
|
160
164
|
<div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
|
|
161
|
-
<div className="space-y-4 rounded-lg border
|
|
165
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
|
|
162
166
|
<div className="text-3xl">🌀</div>
|
|
163
|
-
<h4 className="text-lg font-semibold
|
|
167
|
+
<h4 className="text-fm-icon-active! text-lg font-semibold">
|
|
164
168
|
Gradient Design
|
|
165
169
|
</h4>
|
|
166
|
-
<p className="text-
|
|
170
|
+
<p className="text-fm-icon-active!/80 text-sm">
|
|
167
171
|
Sophisticated conic gradient that creates smooth visual
|
|
168
172
|
motion
|
|
169
173
|
</p>
|
|
170
174
|
</div>
|
|
171
|
-
<div className="space-y-4 rounded-lg border
|
|
175
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
|
|
172
176
|
<div className="text-3xl">⚪</div>
|
|
173
|
-
<h4 className="text-lg font-semibold
|
|
177
|
+
<h4 className="text-fm-icon-active! text-lg font-semibold">
|
|
174
178
|
Neutral Theme
|
|
175
179
|
</h4>
|
|
176
|
-
<p className="text-
|
|
180
|
+
<p className="text-fm-icon-active!/80 text-sm">
|
|
177
181
|
Works seamlessly with any color scheme or design system
|
|
178
182
|
</p>
|
|
179
183
|
</div>
|
|
180
|
-
<div className="space-y-4 rounded-lg border
|
|
184
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
|
|
181
185
|
<div className="text-3xl">♿</div>
|
|
182
|
-
<h4 className="text-lg font-semibold
|
|
186
|
+
<h4 className="text-fm-icon-active! text-lg font-semibold">
|
|
183
187
|
Accessibility
|
|
184
188
|
</h4>
|
|
185
|
-
<p className="text-
|
|
189
|
+
<p className="text-fm-icon-active!/80 text-sm">
|
|
186
190
|
Built with Radix UI's AccessibleIcon for screen reader
|
|
187
191
|
support
|
|
188
192
|
</p>
|
|
@@ -192,17 +196,17 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
192
196
|
|
|
193
197
|
{/* API Reference */}
|
|
194
198
|
<div className="!space-y-8">
|
|
195
|
-
<h3 className="text-center text-2xl font-bold
|
|
199
|
+
<h3 className="text-fm-icon-active! text-center text-2xl font-bold">
|
|
196
200
|
API Reference
|
|
197
201
|
</h3>
|
|
198
202
|
|
|
199
203
|
{/* Component Signature */}
|
|
200
|
-
<div className="rounded-lg border
|
|
201
|
-
<h4 className="mb-4 text-lg font-semibold
|
|
204
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
205
|
+
<h4 className="text-fm-secondary! mb-4 text-lg font-semibold">
|
|
202
206
|
Component Signature
|
|
203
207
|
</h4>
|
|
204
|
-
<div className="rounded-lg
|
|
205
|
-
<pre className="text-
|
|
208
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
209
|
+
<pre className="text-fm-icon-positive! text-sm">
|
|
206
210
|
{`import { SpinnerSolidNeutralIcon } from "@/ui/icons/spinner-solid-neutral-icon"
|
|
207
211
|
|
|
208
212
|
<SpinnerSolidNeutralIcon className="h-6 w-6 animate-spin" />`}
|
|
@@ -211,64 +215,70 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
211
215
|
</div>
|
|
212
216
|
|
|
213
217
|
{/* Props Table */}
|
|
214
|
-
<div className="overflow-hidden rounded-lg border
|
|
215
|
-
<div className="bg-
|
|
216
|
-
<h3 className="text-xl font-semibold
|
|
218
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
219
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
220
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
221
|
+
Props
|
|
222
|
+
</h3>
|
|
217
223
|
</div>
|
|
218
224
|
<table className="!my-0 w-full">
|
|
219
|
-
<thead className="bg-
|
|
220
|
-
<tr className="border-
|
|
221
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
225
|
+
<thead className="bg-fm-surface-secondary">
|
|
226
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
227
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
222
228
|
Prop
|
|
223
229
|
</th>
|
|
224
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
230
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
225
231
|
Type
|
|
226
232
|
</th>
|
|
227
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
233
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
228
234
|
Default
|
|
229
235
|
</th>
|
|
230
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
236
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
231
237
|
Description
|
|
232
238
|
</th>
|
|
233
239
|
</tr>
|
|
234
240
|
</thead>
|
|
235
241
|
<tbody>
|
|
236
242
|
{" "}
|
|
237
|
-
<tr className="
|
|
238
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
243
|
+
<tr className="bg-fm-surface-secondary!">
|
|
244
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
239
245
|
withAccessibility
|
|
240
246
|
</td>
|
|
241
|
-
<td className="px-6 py-4 text-sm
|
|
247
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
242
248
|
boolean
|
|
243
249
|
</td>
|
|
244
|
-
<td className="px-6 py-4 text-sm
|
|
250
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
245
251
|
true
|
|
246
252
|
</td>
|
|
247
|
-
<td className="px-6 py-4 text-sm
|
|
253
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
248
254
|
Whether to wrap the icon with accessibility feature
|
|
249
255
|
</td>
|
|
250
256
|
</tr>
|
|
251
|
-
<tr className="border-
|
|
252
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
257
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
258
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
253
259
|
height
|
|
254
260
|
</td>
|
|
255
|
-
<td className="px-6 py-4 text-sm
|
|
261
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
256
262
|
number | string
|
|
257
263
|
</td>
|
|
258
|
-
<td className="px-6 py-4 text-sm
|
|
259
|
-
|
|
264
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
265
|
+
64
|
|
266
|
+
</td>
|
|
267
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
260
268
|
Height of the icon in pixels
|
|
261
269
|
</td>
|
|
262
270
|
</tr>
|
|
263
|
-
<tr className="
|
|
264
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
271
|
+
<tr className="bg-fm-surface-secondary!">
|
|
272
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
265
273
|
className
|
|
266
274
|
</td>
|
|
267
|
-
<td className="px-6 py-4 text-sm
|
|
275
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
268
276
|
string
|
|
269
277
|
</td>
|
|
270
|
-
<td className="px-6 py-4 text-sm
|
|
271
|
-
|
|
278
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
279
|
+
-
|
|
280
|
+
</td>
|
|
281
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
272
282
|
CSS classes for styling
|
|
273
283
|
</td>
|
|
274
284
|
</tr>
|
|
@@ -278,65 +288,65 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
|
|
|
278
288
|
|
|
279
289
|
{/* Accessibility */}
|
|
280
290
|
<div className="!space-y-8">
|
|
281
|
-
<h2 className="text-center text-3xl font-bold
|
|
291
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
282
292
|
Accessibility Features
|
|
283
293
|
</h2>
|
|
284
294
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
285
|
-
<div className="!space-y-4 rounded-lg border
|
|
286
|
-
<h3 className="text-lg font-semibold
|
|
295
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
296
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
287
297
|
✅ Built-in Features
|
|
288
298
|
</h3>
|
|
289
|
-
<ul className="!space-y-2 text-sm
|
|
290
|
-
<li className="
|
|
299
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
300
|
+
<li className="text-fm-secondary!">
|
|
291
301
|
Uses Radix UI AccessibleIcon wrapper
|
|
292
302
|
</li>
|
|
293
|
-
<li className="
|
|
303
|
+
<li className="text-fm-secondary!">
|
|
294
304
|
Provides screen reader label "Spinner Solid Neutral
|
|
295
305
|
Icon"
|
|
296
306
|
</li>
|
|
297
|
-
<li className="
|
|
307
|
+
<li className="text-fm-secondary!">
|
|
298
308
|
Supports keyboard navigation when interactive
|
|
299
309
|
</li>
|
|
300
|
-
<li className="
|
|
310
|
+
<li className="text-fm-secondary!">
|
|
301
311
|
Maintains proper color contrast ratios
|
|
302
312
|
</li>
|
|
303
|
-
<li className="
|
|
313
|
+
<li className="text-fm-secondary!">
|
|
304
314
|
Scales with user's font size preferences
|
|
305
315
|
</li>
|
|
306
316
|
</ul>
|
|
307
317
|
</div>
|
|
308
318
|
|
|
309
|
-
<div className="!space-y-4 rounded-lg border
|
|
310
|
-
<h3 className="text-lg font-semibold
|
|
319
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
320
|
+
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
311
321
|
💡 Best Practices
|
|
312
322
|
</h3>
|
|
313
|
-
<ul className="!space-y-2 text-sm
|
|
314
|
-
<li className="
|
|
323
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
324
|
+
<li className="text-fm-secondary!">
|
|
315
325
|
Always pair with descriptive loading text
|
|
316
326
|
</li>
|
|
317
|
-
<li className="
|
|
327
|
+
<li className="text-fm-secondary!">
|
|
318
328
|
Provide context about what's loading
|
|
319
329
|
</li>
|
|
320
|
-
<li className="
|
|
330
|
+
<li className="text-fm-secondary!">
|
|
321
331
|
Ensure sufficient color contrast on backgrounds
|
|
322
332
|
</li>
|
|
323
|
-
<li className="
|
|
333
|
+
<li className="text-fm-secondary!">
|
|
324
334
|
Respect reduced motion user preferences
|
|
325
335
|
</li>
|
|
326
|
-
<li className="
|
|
336
|
+
<li className="text-fm-secondary!">
|
|
327
337
|
Use appropriate size for the context
|
|
328
338
|
</li>
|
|
329
339
|
</ul>
|
|
330
340
|
</div>
|
|
331
341
|
</div>
|
|
332
342
|
|
|
333
|
-
<div className="rounded-lg border
|
|
334
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
343
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
344
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
335
345
|
Custom Accessibility Label
|
|
336
346
|
</h3>
|
|
337
347
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
338
|
-
<div className="rounded-lg
|
|
339
|
-
<pre className="overflow-x-auto text-sm
|
|
348
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
349
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
340
350
|
{`// Custom implementation with specific label
|
|
341
351
|
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
342
352
|
|
|
@@ -356,13 +366,13 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
|
|
|
356
366
|
</pre>
|
|
357
367
|
</div>
|
|
358
368
|
<div className="!space-y-4">
|
|
359
|
-
<p className="text-
|
|
369
|
+
<p className="text-fm-secondary! text-sm">
|
|
360
370
|
For specific contexts, you can wrap the
|
|
361
371
|
SpinnerSolidNeutralIcon with a custom AccessibleIcon
|
|
362
372
|
component that provides more descriptive labels.
|
|
363
373
|
</p>
|
|
364
|
-
<div className="
|
|
365
|
-
<div className="flex items-center gap-2 text-sm
|
|
374
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
375
|
+
<div className="text-fm-icon-info flex items-center gap-2 text-sm">
|
|
366
376
|
<SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
|
|
367
377
|
<span>
|
|
368
378
|
This approach gives screen readers more context
|
|
@@ -376,52 +386,62 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
|
|
|
376
386
|
|
|
377
387
|
{/* Related Icons */}
|
|
378
388
|
<div className="!space-y-8">
|
|
379
|
-
<h2 className="text-center text-3xl font-bold
|
|
389
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
380
390
|
Related Icons
|
|
381
391
|
</h2>
|
|
382
392
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
383
|
-
<div className="!space-y-3 rounded-lg border
|
|
384
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
385
|
-
<SpinnerSolidIcon className="h-8 w-8 animate-spin
|
|
393
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
394
|
+
<div className="bg-fm-icon-info/10 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
395
|
+
<SpinnerSolidIcon className="text-fm-icon-info h-8 w-8 animate-spin" />
|
|
386
396
|
</div>
|
|
387
397
|
<div>
|
|
388
|
-
<div className="font-medium
|
|
398
|
+
<div className="text-fm-icon-active font-medium">
|
|
389
399
|
Spinner Solid
|
|
390
400
|
</div>
|
|
391
|
-
<div className="text-
|
|
401
|
+
<div className="text-fm-tertiary text-xs">
|
|
392
402
|
Basic solid spinner
|
|
393
403
|
</div>
|
|
394
404
|
</div>
|
|
395
405
|
</div>
|
|
396
|
-
<div className="!space-y-3 rounded-lg border
|
|
397
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
398
|
-
<span className="
|
|
406
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
407
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
408
|
+
<span className="text-fm-icon-active! !text-2xl">
|
|
409
|
+
✓
|
|
410
|
+
</span>
|
|
399
411
|
</div>
|
|
400
412
|
<div>
|
|
401
|
-
<div className="font-medium
|
|
402
|
-
|
|
413
|
+
<div className="text-fm-icon-active font-medium">
|
|
414
|
+
CheckIcon
|
|
415
|
+
</div>
|
|
416
|
+
<div className="text-fm-tertiary text-xs">
|
|
403
417
|
Success states
|
|
404
418
|
</div>
|
|
405
419
|
</div>
|
|
406
420
|
</div>
|
|
407
|
-
<div className="!space-y-3 rounded-lg border
|
|
408
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
421
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
422
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
409
423
|
<span className="text-2xl">⚠️</span>
|
|
410
424
|
</div>
|
|
411
425
|
<div>
|
|
412
|
-
<div className="font-medium
|
|
413
|
-
|
|
426
|
+
<div className="text-fm-icon-active font-medium">
|
|
427
|
+
AlertIcon
|
|
428
|
+
</div>
|
|
429
|
+
<div className="text-fm-tertiary text-xs">
|
|
414
430
|
Warning states
|
|
415
431
|
</div>
|
|
416
432
|
</div>
|
|
417
433
|
</div>
|
|
418
|
-
<div className="!space-y-3 rounded-lg border
|
|
419
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
420
|
-
<span className="
|
|
434
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
435
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
436
|
+
<span className="text-fm-icon-active! !text-2xl">
|
|
437
|
+
✕
|
|
438
|
+
</span>
|
|
421
439
|
</div>
|
|
422
440
|
<div>
|
|
423
|
-
<div className="font-medium
|
|
424
|
-
|
|
441
|
+
<div className="text-fm-icon-active font-medium">
|
|
442
|
+
ErrorIcon
|
|
443
|
+
</div>
|
|
444
|
+
<div className="text-fm-tertiary text-xs">
|
|
425
445
|
Error states
|
|
426
446
|
</div>
|
|
427
447
|
</div>
|
|
@@ -430,15 +450,15 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
|
|
|
430
450
|
</div>
|
|
431
451
|
|
|
432
452
|
{/* Footer */}
|
|
433
|
-
<div className="border-
|
|
453
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
434
454
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
435
455
|
<div className="!space-y-4 text-center">
|
|
436
|
-
<p className="
|
|
456
|
+
<p className="text-fm-tertiary!">
|
|
437
457
|
SpinnerSolidNeutralIcon is part of the Aural UI icon
|
|
438
458
|
library, optimized for accessibility and neutral
|
|
439
459
|
theming.
|
|
440
460
|
</p>
|
|
441
|
-
<p className="text-
|
|
461
|
+
<p className="text-fm-placeholder! text-sm">
|
|
442
462
|
All icons use Radix UI's AccessibleIcon for screen
|
|
443
463
|
reader compatibility and follow WCAG guidelines.
|
|
444
464
|
</p>
|
|
@@ -463,8 +483,8 @@ const storyParameters = {
|
|
|
463
483
|
backgrounds: {
|
|
464
484
|
default: "dark",
|
|
465
485
|
values: [
|
|
466
|
-
{ name: "dark", value: "
|
|
467
|
-
{ name: "darker", value: "
|
|
486
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
487
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
468
488
|
],
|
|
469
489
|
},
|
|
470
490
|
}
|
|
@@ -478,7 +498,7 @@ export const Default: Story = {
|
|
|
478
498
|
},
|
|
479
499
|
parameters: storyParameters,
|
|
480
500
|
render: (args) => (
|
|
481
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
501
|
+
<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">
|
|
482
502
|
<SpinnerSolidNeutralIcon {...args} className="animate-spin" />
|
|
483
503
|
</div>
|
|
484
504
|
),
|
|
@@ -495,30 +515,30 @@ export const SizeVariations: Story = {
|
|
|
495
515
|
},
|
|
496
516
|
},
|
|
497
517
|
render: () => (
|
|
498
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
518
|
+
<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">
|
|
499
519
|
<div className="text-center">
|
|
500
520
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-4 w-4 animate-spin" />
|
|
501
|
-
<span className="text-
|
|
521
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
502
522
|
</div>
|
|
503
523
|
<div className="text-center">
|
|
504
524
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-6 w-6 animate-spin" />
|
|
505
|
-
<span className="text-
|
|
525
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
506
526
|
</div>
|
|
507
527
|
<div className="text-center">
|
|
508
528
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-8 w-8 animate-spin" />
|
|
509
|
-
<span className="text-
|
|
529
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
510
530
|
</div>
|
|
511
531
|
<div className="text-center">
|
|
512
532
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-12 w-12 animate-spin" />
|
|
513
|
-
<span className="text-
|
|
533
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
514
534
|
</div>
|
|
515
535
|
<div className="text-center">
|
|
516
536
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-16 w-16 animate-spin" />
|
|
517
|
-
<span className="text-
|
|
537
|
+
<span className="text-fm-tertiary text-xs">64px</span>
|
|
518
538
|
</div>
|
|
519
539
|
<div className="text-center">
|
|
520
540
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-20 w-20 animate-spin" />
|
|
521
|
-
<span className="text-
|
|
541
|
+
<span className="text-fm-tertiary text-xs">80px</span>
|
|
522
542
|
</div>
|
|
523
543
|
</div>
|
|
524
544
|
),
|
|
@@ -535,27 +555,29 @@ export const AnimationVariations: Story = {
|
|
|
535
555
|
},
|
|
536
556
|
},
|
|
537
557
|
render: () => (
|
|
538
|
-
<div className="grid min-h-dvh grid-cols-1 items-center justify-center gap-8 rounded-lg bg-
|
|
558
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-1 items-center justify-center gap-8 rounded-lg bg-linear-to-br p-8 md:grid-cols-3">
|
|
539
559
|
<div className="text-center">
|
|
540
|
-
<div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border
|
|
560
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
|
|
541
561
|
<SpinnerSolidNeutralIcon className="h-12 w-12 animate-spin" />
|
|
542
562
|
</div>
|
|
543
|
-
<div className="text-sm font-medium
|
|
544
|
-
|
|
563
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
564
|
+
Standard Spin
|
|
565
|
+
</div>
|
|
566
|
+
<div className="text-fm-tertiary text-xs">animate-spin</div>
|
|
545
567
|
</div>
|
|
546
568
|
<div className="text-center">
|
|
547
|
-
<div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border
|
|
569
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
|
|
548
570
|
<SpinnerSolidNeutralIcon className="animate-neutral-pulse h-12 w-12" />
|
|
549
571
|
</div>
|
|
550
|
-
<div className="text-sm font-medium
|
|
551
|
-
<div className="text-
|
|
572
|
+
<div className="text-fm-icon-active text-sm font-medium">Pulse</div>
|
|
573
|
+
<div className="text-fm-tertiary text-xs">animate-neutral-pulse</div>
|
|
552
574
|
</div>
|
|
553
575
|
<div className="text-center">
|
|
554
|
-
<div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border
|
|
576
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
|
|
555
577
|
<SpinnerSolidNeutralIcon className="animate-neutral-glow h-12 w-12" />
|
|
556
578
|
</div>
|
|
557
|
-
<div className="text-sm font-medium
|
|
558
|
-
<div className="text-
|
|
579
|
+
<div className="text-fm-icon-active text-sm font-medium">Glow</div>
|
|
580
|
+
<div className="text-fm-tertiary text-xs">animate-neutral-glow</div>
|
|
559
581
|
</div>
|
|
560
582
|
</div>
|
|
561
583
|
),
|
|
@@ -572,34 +594,38 @@ export const BackgroundVariations: Story = {
|
|
|
572
594
|
},
|
|
573
595
|
},
|
|
574
596
|
render: () => (
|
|
575
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
597
|
+
<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">
|
|
576
598
|
<div className="text-center">
|
|
577
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg
|
|
599
|
+
<div className="bg-fm-surface-primary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
|
|
578
600
|
<SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
|
|
579
601
|
</div>
|
|
580
|
-
<div className="text-sm font-medium
|
|
581
|
-
<div className="text-
|
|
602
|
+
<div className="text-fm-icon-active text-sm font-medium">Black</div>
|
|
603
|
+
<div className="text-fm-tertiary text-xs">bg-fm-surface-primary</div>
|
|
582
604
|
</div>
|
|
583
605
|
<div className="text-center">
|
|
584
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg
|
|
606
|
+
<div className="bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
|
|
585
607
|
<SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
|
|
586
608
|
</div>
|
|
587
|
-
<div className="text-sm font-medium
|
|
588
|
-
<div className="text-
|
|
609
|
+
<div className="text-fm-icon-active text-sm font-medium">Dark Gray</div>
|
|
610
|
+
<div className="text-fm-tertiary text-xs">bg-fm-surface-secondary</div>
|
|
589
611
|
</div>
|
|
590
612
|
<div className="text-center">
|
|
591
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg
|
|
613
|
+
<div className="bg-fm-surface-tertiary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
|
|
592
614
|
<SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
|
|
593
615
|
</div>
|
|
594
|
-
<div className="text-sm font-medium
|
|
595
|
-
|
|
616
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
617
|
+
Medium Gray
|
|
618
|
+
</div>
|
|
619
|
+
<div className="text-fm-tertiary text-xs">bg-fm-surface-tertiary</div>
|
|
596
620
|
</div>
|
|
597
621
|
<div className="text-center">
|
|
598
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg
|
|
622
|
+
<div className="bg-fm-surface-tertiary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
|
|
599
623
|
<SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
|
|
600
624
|
</div>
|
|
601
|
-
<div className="text-sm font-medium
|
|
602
|
-
|
|
625
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
626
|
+
Light Gray
|
|
627
|
+
</div>
|
|
628
|
+
<div className="text-fm-tertiary text-xs">bg-fm-surface-tertiary</div>
|
|
603
629
|
</div>
|
|
604
630
|
</div>
|
|
605
631
|
),
|
|
@@ -616,16 +642,18 @@ export const UsageExamples: Story = {
|
|
|
616
642
|
},
|
|
617
643
|
},
|
|
618
644
|
render: () => (
|
|
619
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
645
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
620
646
|
{/* Loading Button */}
|
|
621
647
|
<div className="!space-y-2">
|
|
622
|
-
<h3 className="text-sm font-medium
|
|
648
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
649
|
+
Loading Button
|
|
650
|
+
</h3>
|
|
623
651
|
<div className="flex gap-4">
|
|
624
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
652
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary/20 text-fm-secondary hover:bg-fm-surface-secondary/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
625
653
|
<SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
|
|
626
654
|
Loading...
|
|
627
655
|
</button>
|
|
628
|
-
<button className="flex h-10 w-10 items-center justify-center rounded-lg border
|
|
656
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary/20 text-fm-secondary hover:bg-fm-surface-secondary/30 flex h-10 w-10 items-center justify-center rounded-lg border transition-colors">
|
|
629
657
|
<SpinnerSolidNeutralIcon className="h-5 w-5 animate-spin" />
|
|
630
658
|
</button>
|
|
631
659
|
</div>
|
|
@@ -633,47 +661,51 @@ export const UsageExamples: Story = {
|
|
|
633
661
|
|
|
634
662
|
{/* Loading State */}
|
|
635
663
|
<div className="!space-y-2">
|
|
636
|
-
<h3 className="text-sm font-medium
|
|
637
|
-
|
|
664
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
665
|
+
Loading State
|
|
666
|
+
</h3>
|
|
667
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
638
668
|
<div className="text-center">
|
|
639
669
|
<SpinnerSolidNeutralIcon className="!mx-auto mb-4 h-16 w-16 animate-spin" />
|
|
640
|
-
<div className="text-
|
|
670
|
+
<div className="text-fm-tertiary text-sm">Loading content...</div>
|
|
641
671
|
</div>
|
|
642
672
|
</div>
|
|
643
673
|
</div>
|
|
644
674
|
|
|
645
675
|
{/* Card Loading */}
|
|
646
676
|
<div className="!space-y-2">
|
|
647
|
-
<h3 className="text-sm font-medium
|
|
677
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
678
|
+
Card Loading
|
|
679
|
+
</h3>
|
|
648
680
|
<div className="grid gap-4 md:grid-cols-3">
|
|
649
|
-
<div className="rounded-lg border
|
|
681
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
650
682
|
<div className="mb-4 flex items-center justify-center">
|
|
651
683
|
<SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
|
|
652
684
|
</div>
|
|
653
685
|
<div className="space-y-2">
|
|
654
|
-
<div className="h-4 rounded
|
|
655
|
-
<div className="h-4 rounded
|
|
656
|
-
<div className="h-4 w-3/4 rounded
|
|
686
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
687
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
688
|
+
<div className="bg-fm-surface-secondary h-4 w-3/4 rounded"></div>
|
|
657
689
|
</div>
|
|
658
690
|
</div>
|
|
659
|
-
<div className="rounded-lg border
|
|
691
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
660
692
|
<div className="mb-4 flex items-center justify-center">
|
|
661
693
|
<SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
|
|
662
694
|
</div>
|
|
663
695
|
<div className="space-y-2">
|
|
664
|
-
<div className="h-4 rounded
|
|
665
|
-
<div className="h-4 rounded
|
|
666
|
-
<div className="h-4 w-2/3 rounded
|
|
696
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
697
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
698
|
+
<div className="bg-fm-surface-secondary h-4 w-2/3 rounded"></div>
|
|
667
699
|
</div>
|
|
668
700
|
</div>
|
|
669
|
-
<div className="rounded-lg border
|
|
701
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
670
702
|
<div className="mb-4 flex items-center justify-center">
|
|
671
703
|
<SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
|
|
672
704
|
</div>
|
|
673
705
|
<div className="space-y-2">
|
|
674
|
-
<div className="h-4 rounded
|
|
675
|
-
<div className="h-4 rounded
|
|
676
|
-
<div className="h-4 w-4/5 rounded
|
|
706
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
707
|
+
<div className="bg-fm-surface-secondary h-4 rounded"></div>
|
|
708
|
+
<div className="bg-fm-surface-secondary h-4 w-4/5 rounded"></div>
|
|
677
709
|
</div>
|
|
678
710
|
</div>
|
|
679
711
|
</div>
|
|
@@ -681,9 +713,11 @@ export const UsageExamples: Story = {
|
|
|
681
713
|
|
|
682
714
|
{/* Inline Loading */}
|
|
683
715
|
<div className="!space-y-2">
|
|
684
|
-
<h3 className="text-sm font-medium
|
|
685
|
-
|
|
686
|
-
|
|
716
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
717
|
+
Inline Loading
|
|
718
|
+
</h3>
|
|
719
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
720
|
+
<div className="text-fm-icon-active/80 flex items-center gap-2">
|
|
687
721
|
<SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
|
|
688
722
|
<span>Saving changes...</span>
|
|
689
723
|
</div>
|
|
@@ -727,15 +761,15 @@ export const Playground: Story = {
|
|
|
727
761
|
},
|
|
728
762
|
},
|
|
729
763
|
render: (args) => (
|
|
730
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
731
|
-
<div className="rounded-lg border
|
|
764
|
+
<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">
|
|
765
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
732
766
|
<div className="mb-4 text-center">
|
|
733
767
|
<SpinnerSolidNeutralIcon
|
|
734
768
|
{...args}
|
|
735
769
|
className={`animate-spin ${args.className || ""}`}
|
|
736
770
|
/>
|
|
737
771
|
</div>
|
|
738
|
-
<div className="text-
|
|
772
|
+
<div className="text-fm-tertiary text-center text-xs">
|
|
739
773
|
{args.width}×{args.height}px
|
|
740
774
|
</div>
|
|
741
775
|
</div>
|