aural-ui 3.0.6 → 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/clamp-lines/ClampLines.stories.tsx +25 -0
- package/dist/components/clamp-lines/index.tsx +6 -1
- 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/input/index.tsx +2 -0
- 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 PauseIcon> = {
|
|
|
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,57 +40,59 @@ const meta: Meta<typeof PauseIcon> = {
|
|
|
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
|
`}
|
|
81
81
|
</style>
|
|
82
82
|
|
|
83
|
-
<div className="
|
|
83
|
+
<div className="from-fm-surface-primary via-fm-icon-negative/5 to-fm-surface-primary min-h-screen bg-linear-to-br">
|
|
84
84
|
{/* Header */}
|
|
85
|
-
<div className="relative overflow-hidden border-b
|
|
86
|
-
<div className="absolute inset-0 bg-
|
|
85
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
86
|
+
<div className="from-fm-icon-negative/10 to-fm-icon-negative/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
87
87
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
88
|
<div className="!space-y-6 text-center">
|
|
89
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
90
|
-
<PauseIcon className="h-12 w-12
|
|
89
|
+
<div className="border-fm-icon-negative/30 from-fm-icon-negative/20 to-fm-icon-negative/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
+
<PauseIcon className="text-fm-icon-negative h-12 w-12" />
|
|
91
91
|
</div>
|
|
92
|
-
<h1 className="text-5xl font-bold
|
|
93
|
-
|
|
92
|
+
<h1 className="text-fm-icon-active! text-5xl font-bold">
|
|
93
|
+
PauseIcon
|
|
94
|
+
</h1>
|
|
95
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
94
96
|
A universal pause control icon for media interfaces.
|
|
95
97
|
Features the classic two-bar pause design, essential for
|
|
96
98
|
music players, video platforms, podcast apps, and any media
|
|
@@ -100,26 +102,28 @@ const meta: Meta<typeof PauseIcon> = {
|
|
|
100
102
|
{/* Stats */}
|
|
101
103
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
102
104
|
<div className="text-center">
|
|
103
|
-
<div className="text-3xl font-bold
|
|
105
|
+
<div className="text-fm-icon-negative text-3xl font-bold">
|
|
104
106
|
Pause Control
|
|
105
107
|
</div>
|
|
106
|
-
<div className="text-
|
|
108
|
+
<div className="text-fm-tertiary text-sm">
|
|
109
|
+
Stop playback
|
|
110
|
+
</div>
|
|
107
111
|
</div>
|
|
108
|
-
<div className="h-8 w-px
|
|
112
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
109
113
|
<div className="text-center">
|
|
110
|
-
<div className="text-3xl font-bold
|
|
114
|
+
<div className="text-fm-icon-negative text-3xl font-bold">
|
|
111
115
|
Accessible
|
|
112
116
|
</div>
|
|
113
|
-
<div className="text-
|
|
117
|
+
<div className="text-fm-tertiary text-sm">
|
|
114
118
|
Screen reader friendly
|
|
115
119
|
</div>
|
|
116
120
|
</div>
|
|
117
|
-
<div className="h-8 w-px
|
|
121
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
118
122
|
<div className="text-center">
|
|
119
|
-
<div className="text-3xl font-bold
|
|
123
|
+
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
120
124
|
Universal
|
|
121
125
|
</div>
|
|
122
|
-
<div className="text-
|
|
126
|
+
<div className="text-fm-tertiary text-sm">
|
|
123
127
|
Standard media control
|
|
124
128
|
</div>
|
|
125
129
|
</div>
|
|
@@ -132,16 +136,16 @@ const meta: Meta<typeof PauseIcon> = {
|
|
|
132
136
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
133
137
|
{/* Quick Usage */}
|
|
134
138
|
<div className="!space-y-8">
|
|
135
|
-
<h2 className="text-center text-3xl font-bold
|
|
139
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
136
140
|
Quick Start
|
|
137
141
|
</h2>
|
|
138
142
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
139
143
|
<div className="!space-y-4">
|
|
140
|
-
<h3 className="text-xl font-semibold
|
|
144
|
+
<h3 className="text-fm-icon-negative! text-xl font-semibold">
|
|
141
145
|
Basic Usage
|
|
142
146
|
</h3>
|
|
143
|
-
<div className="rounded-lg
|
|
144
|
-
<pre className="overflow-x-auto text-sm
|
|
147
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
148
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
145
149
|
{`import { PauseIcon } from "@icons/pause-icon"
|
|
146
150
|
|
|
147
151
|
function MediaPlayer() {
|
|
@@ -159,12 +163,12 @@ function MediaPlayer() {
|
|
|
159
163
|
</div>
|
|
160
164
|
|
|
161
165
|
<div className="!space-y-4">
|
|
162
|
-
<h3 className="text-xl font-semibold
|
|
166
|
+
<h3 className="text-fm-icon-negative! text-xl font-semibold">
|
|
163
167
|
Live Preview
|
|
164
168
|
</h3>
|
|
165
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
166
|
-
<button className="
|
|
167
|
-
<PauseIcon className="h-6 w-6
|
|
169
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
170
|
+
<button className="border-fm-icon-negative/20 bg-fm-icon-negative/10 hover:bg-fm-icon-negative/20 rounded-lg border p-3 transition-colors">
|
|
171
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
168
172
|
</button>
|
|
169
173
|
</div>
|
|
170
174
|
</div>
|
|
@@ -173,108 +177,116 @@ function MediaPlayer() {
|
|
|
173
177
|
|
|
174
178
|
{/* Props Documentation */}
|
|
175
179
|
<div className="!space-y-8">
|
|
176
|
-
<h2 className="text-center text-3xl font-bold
|
|
180
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
177
181
|
Props & Configuration
|
|
178
182
|
</h2>
|
|
179
183
|
|
|
180
|
-
<div className="overflow-hidden rounded-lg border
|
|
181
|
-
<div className="bg-
|
|
182
|
-
<h3 className="text-xl font-semibold
|
|
184
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
185
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
186
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
187
|
+
Props
|
|
188
|
+
</h3>
|
|
183
189
|
</div>
|
|
184
190
|
<table className="!my-0 w-full">
|
|
185
|
-
<thead className="bg-
|
|
186
|
-
<tr className="border-
|
|
187
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
191
|
+
<thead className="bg-fm-surface-secondary">
|
|
192
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
193
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
188
194
|
Prop
|
|
189
195
|
</th>
|
|
190
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
196
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
191
197
|
Type
|
|
192
198
|
</th>
|
|
193
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
199
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
194
200
|
Default
|
|
195
201
|
</th>
|
|
196
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
202
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
197
203
|
Description
|
|
198
204
|
</th>
|
|
199
205
|
</tr>
|
|
200
206
|
</thead>
|
|
201
207
|
<tbody>
|
|
202
208
|
{" "}
|
|
203
|
-
<tr className="
|
|
204
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
209
|
+
<tr className="bg-fm-surface-secondary!">
|
|
210
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
205
211
|
withAccessibility
|
|
206
212
|
</td>
|
|
207
|
-
<td className="px-6 py-4 text-sm
|
|
213
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
208
214
|
boolean
|
|
209
215
|
</td>
|
|
210
|
-
<td className="px-6 py-4 text-sm
|
|
216
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
211
217
|
true
|
|
212
218
|
</td>
|
|
213
|
-
<td className="px-6 py-4 text-sm
|
|
219
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
214
220
|
Whether to wrap the icon with accessibility feature
|
|
215
221
|
</td>
|
|
216
222
|
</tr>
|
|
217
|
-
<tr className="border-
|
|
218
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
223
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
224
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
219
225
|
height
|
|
220
226
|
</td>
|
|
221
|
-
<td className="px-6 py-4 text-sm
|
|
227
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
222
228
|
number | string
|
|
223
229
|
</td>
|
|
224
|
-
<td className="px-6 py-4 text-sm
|
|
225
|
-
|
|
230
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
231
|
+
24
|
|
232
|
+
</td>
|
|
233
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
226
234
|
Height of the icon in pixels
|
|
227
235
|
</td>
|
|
228
236
|
</tr>
|
|
229
|
-
<tr className="border-
|
|
230
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
237
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
238
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
231
239
|
stroke
|
|
232
240
|
</td>
|
|
233
|
-
<td className="px-6 py-4 text-sm
|
|
241
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
234
242
|
string
|
|
235
243
|
</td>
|
|
236
|
-
<td className="px-6 py-4 text-sm
|
|
244
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
237
245
|
currentColor
|
|
238
246
|
</td>
|
|
239
|
-
<td className="px-6 py-4 text-sm
|
|
247
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
240
248
|
Stroke color of the icon
|
|
241
249
|
</td>
|
|
242
250
|
</tr>
|
|
243
|
-
<tr className="border-
|
|
244
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
251
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
252
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
245
253
|
strokeWidth
|
|
246
254
|
</td>
|
|
247
|
-
<td className="px-6 py-4 text-sm
|
|
255
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
248
256
|
string | number
|
|
249
257
|
</td>
|
|
250
|
-
<td className="px-6 py-4 text-sm
|
|
258
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
251
259
|
1.5
|
|
252
260
|
</td>
|
|
253
|
-
<td className="px-6 py-4 text-sm
|
|
261
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
254
262
|
Width of the stroke
|
|
255
263
|
</td>
|
|
256
264
|
</tr>
|
|
257
|
-
<tr className="border-
|
|
258
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
265
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
266
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
259
267
|
className
|
|
260
268
|
</td>
|
|
261
|
-
<td className="px-6 py-4 text-sm
|
|
269
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
262
270
|
string
|
|
263
271
|
</td>
|
|
264
|
-
<td className="px-6 py-4 text-sm
|
|
265
|
-
|
|
272
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
273
|
+
-
|
|
274
|
+
</td>
|
|
275
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
266
276
|
CSS classes for styling (use for overrides)
|
|
267
277
|
</td>
|
|
268
278
|
</tr>
|
|
269
|
-
<tr className="
|
|
270
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
279
|
+
<tr className="bg-fm-surface-secondary!">
|
|
280
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
271
281
|
...svgProps
|
|
272
282
|
</td>
|
|
273
|
-
<td className="px-6 py-4 text-sm
|
|
283
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
274
284
|
SVGProps
|
|
275
285
|
</td>
|
|
276
|
-
<td className="px-6 py-4 text-sm
|
|
277
|
-
|
|
286
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
287
|
+
-
|
|
288
|
+
</td>
|
|
289
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
290
|
All standard SVG element props
|
|
279
291
|
</td>
|
|
280
292
|
</tr>
|
|
@@ -285,50 +297,62 @@ function MediaPlayer() {
|
|
|
285
297
|
|
|
286
298
|
{/* Size Variations */}
|
|
287
299
|
<div className="!space-y-8">
|
|
288
|
-
<h2 className="text-center text-3xl font-bold
|
|
300
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
289
301
|
Size Variations
|
|
290
302
|
</h2>
|
|
291
|
-
<div className="rounded-lg border
|
|
303
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
292
304
|
<div className="!space-y-6">
|
|
293
305
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
294
306
|
<div className="!space-y-4">
|
|
295
|
-
<h3 className="text-lg font-semibold
|
|
307
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
296
308
|
Standard Sizes
|
|
297
309
|
</h3>
|
|
298
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
310
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
299
311
|
<div className="text-center">
|
|
300
|
-
<PauseIcon className="!mx-auto mb-2 h-3 w-3
|
|
301
|
-
<span className="text-
|
|
312
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-3 w-3" />
|
|
313
|
+
<span className="text-fm-tertiary text-xs">
|
|
314
|
+
12px
|
|
315
|
+
</span>
|
|
302
316
|
</div>
|
|
303
317
|
<div className="text-center">
|
|
304
|
-
<PauseIcon className="!mx-auto mb-2 h-4 w-4
|
|
305
|
-
<span className="text-
|
|
318
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-4 w-4" />
|
|
319
|
+
<span className="text-fm-tertiary text-xs">
|
|
320
|
+
16px
|
|
321
|
+
</span>
|
|
306
322
|
</div>
|
|
307
323
|
<div className="text-center">
|
|
308
|
-
<PauseIcon className="!mx-auto mb-2 h-5 w-5
|
|
309
|
-
<span className="text-
|
|
324
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-5 w-5" />
|
|
325
|
+
<span className="text-fm-tertiary text-xs">
|
|
326
|
+
20px
|
|
327
|
+
</span>
|
|
310
328
|
</div>
|
|
311
329
|
<div className="text-center">
|
|
312
|
-
<PauseIcon className="!mx-auto mb-2 h-6 w-6
|
|
313
|
-
<span className="text-
|
|
330
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-6 w-6" />
|
|
331
|
+
<span className="text-fm-tertiary text-xs">
|
|
332
|
+
24px
|
|
333
|
+
</span>
|
|
314
334
|
</div>
|
|
315
335
|
<div className="text-center">
|
|
316
|
-
<PauseIcon className="!mx-auto mb-2 h-8 w-8
|
|
317
|
-
<span className="text-
|
|
336
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-8 w-8" />
|
|
337
|
+
<span className="text-fm-tertiary text-xs">
|
|
338
|
+
32px
|
|
339
|
+
</span>
|
|
318
340
|
</div>
|
|
319
341
|
<div className="text-center">
|
|
320
|
-
<PauseIcon className="!mx-auto mb-2 h-12 w-12
|
|
321
|
-
<span className="text-
|
|
342
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-12 w-12" />
|
|
343
|
+
<span className="text-fm-tertiary text-xs">
|
|
344
|
+
48px
|
|
345
|
+
</span>
|
|
322
346
|
</div>
|
|
323
347
|
</div>
|
|
324
348
|
</div>
|
|
325
349
|
|
|
326
350
|
<div className="!space-y-4">
|
|
327
|
-
<h3 className="text-lg font-semibold
|
|
351
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
328
352
|
Code Example
|
|
329
353
|
</h3>
|
|
330
|
-
<div className="rounded-lg
|
|
331
|
-
<pre className="overflow-x-auto text-sm
|
|
354
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
355
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
332
356
|
{`// Small (16px)
|
|
333
357
|
<PauseIcon className="h-4 w-4" />
|
|
334
358
|
|
|
@@ -350,56 +374,56 @@ function MediaPlayer() {
|
|
|
350
374
|
|
|
351
375
|
{/* Color Variations */}
|
|
352
376
|
<div className="!space-y-8">
|
|
353
|
-
<h2 className="text-center text-3xl font-bold
|
|
377
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
354
378
|
Color Variations
|
|
355
379
|
</h2>
|
|
356
380
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
357
381
|
<div className="!space-y-4">
|
|
358
|
-
<h3 className="text-lg font-semibold
|
|
382
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
359
383
|
Semantic Colors
|
|
360
384
|
</h3>
|
|
361
|
-
<div className="!space-y-4 rounded-lg border
|
|
385
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
362
386
|
<div className="flex items-center gap-4">
|
|
363
|
-
<PauseIcon className="h-6 w-6
|
|
387
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
364
388
|
<div>
|
|
365
|
-
<div className="text-sm font-medium
|
|
389
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
366
390
|
Primary
|
|
367
391
|
</div>
|
|
368
|
-
<div className="text-
|
|
369
|
-
text-
|
|
392
|
+
<div className="text-fm-tertiary text-xs">
|
|
393
|
+
text-fm-icon-negative
|
|
370
394
|
</div>
|
|
371
395
|
</div>
|
|
372
396
|
</div>
|
|
373
397
|
<div className="flex items-center gap-4">
|
|
374
|
-
<PauseIcon className="h-6 w-6
|
|
398
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
375
399
|
<div>
|
|
376
|
-
<div className="text-sm font-medium
|
|
400
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
377
401
|
Secondary
|
|
378
402
|
</div>
|
|
379
|
-
<div className="text-
|
|
380
|
-
text-
|
|
403
|
+
<div className="text-fm-tertiary text-xs">
|
|
404
|
+
text-fm-icon-negative
|
|
381
405
|
</div>
|
|
382
406
|
</div>
|
|
383
407
|
</div>
|
|
384
408
|
<div className="flex items-center gap-4">
|
|
385
|
-
<PauseIcon className="h-6 w-6
|
|
409
|
+
<PauseIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
386
410
|
<div>
|
|
387
|
-
<div className="text-sm font-medium
|
|
411
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
388
412
|
Accent
|
|
389
413
|
</div>
|
|
390
|
-
<div className="text-
|
|
391
|
-
text-
|
|
414
|
+
<div className="text-fm-tertiary text-xs">
|
|
415
|
+
text-fm-secondary-600
|
|
392
416
|
</div>
|
|
393
417
|
</div>
|
|
394
418
|
</div>
|
|
395
419
|
<div className="flex items-center gap-4">
|
|
396
|
-
<PauseIcon className="h-6 w-6
|
|
420
|
+
<PauseIcon className="text-fm-placeholder h-6 w-6" />
|
|
397
421
|
<div>
|
|
398
|
-
<div className="text-sm font-medium
|
|
422
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
399
423
|
Disabled
|
|
400
424
|
</div>
|
|
401
|
-
<div className="text-
|
|
402
|
-
text-
|
|
425
|
+
<div className="text-fm-tertiary text-xs">
|
|
426
|
+
text-fm-placeholder
|
|
403
427
|
</div>
|
|
404
428
|
</div>
|
|
405
429
|
</div>
|
|
@@ -407,11 +431,11 @@ function MediaPlayer() {
|
|
|
407
431
|
</div>
|
|
408
432
|
|
|
409
433
|
<div className="!space-y-4">
|
|
410
|
-
<h3 className="text-lg font-semibold
|
|
434
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
411
435
|
Custom Colors
|
|
412
436
|
</h3>
|
|
413
|
-
<div className="rounded-lg
|
|
414
|
-
<pre className="overflow-x-auto text-sm
|
|
437
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
438
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
415
439
|
{`// Using Tailwind classes
|
|
416
440
|
<PauseIcon className="h-6 w-6 text-red-400" />
|
|
417
441
|
<PauseIcon className="h-6 w-6 text-rose-500" />
|
|
@@ -436,43 +460,43 @@ function MediaPlayer() {
|
|
|
436
460
|
|
|
437
461
|
{/* Usage Examples */}
|
|
438
462
|
<div className="!space-y-8">
|
|
439
|
-
<h2 className="text-center text-3xl font-bold
|
|
463
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
440
464
|
Usage Examples
|
|
441
465
|
</h2>
|
|
442
466
|
|
|
443
467
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
444
468
|
{/* Music Player */}
|
|
445
469
|
<div className="!space-y-4">
|
|
446
|
-
<h3 className="text-lg font-semibold
|
|
470
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
447
471
|
Music Player
|
|
448
472
|
</h3>
|
|
449
473
|
<div className="!space-y-4">
|
|
450
|
-
<div className="rounded-lg border
|
|
474
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
451
475
|
<div className="mb-4 flex items-center gap-3">
|
|
452
|
-
<div className="h-12 w-12 rounded-lg bg-
|
|
476
|
+
<div className="from-fm-icon-negative/20 to-fm-icon-negative/20 h-12 w-12 rounded-lg bg-linear-to-br" />
|
|
453
477
|
<div>
|
|
454
|
-
<div className="text-sm font-medium
|
|
478
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
455
479
|
Current Song
|
|
456
480
|
</div>
|
|
457
|
-
<div className="text-
|
|
481
|
+
<div className="text-fm-tertiary! text-xs">
|
|
458
482
|
Artist Name
|
|
459
483
|
</div>
|
|
460
484
|
</div>
|
|
461
485
|
</div>
|
|
462
486
|
<div className="flex items-center justify-center gap-4">
|
|
463
|
-
<button className="rounded-lg p-2 transition-colors
|
|
464
|
-
<div className="h-6 w-6 rounded-full border
|
|
487
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2 transition-colors">
|
|
488
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-6 w-6 rounded-full border" />
|
|
465
489
|
</button>
|
|
466
|
-
<button className="rounded-lg p-3 transition-colors
|
|
467
|
-
<PauseIcon className="h-8 w-8
|
|
490
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-3 transition-colors">
|
|
491
|
+
<PauseIcon className="text-fm-icon-negative h-8 w-8" />
|
|
468
492
|
</button>
|
|
469
|
-
<button className="rounded-lg p-2 transition-colors
|
|
470
|
-
<div className="h-6 w-6 rounded-full border
|
|
493
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2 transition-colors">
|
|
494
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-6 w-6 rounded-full border" />
|
|
471
495
|
</button>
|
|
472
496
|
</div>
|
|
473
497
|
</div>
|
|
474
|
-
<div className="rounded-lg
|
|
475
|
-
<pre className="overflow-x-auto text-sm
|
|
498
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
499
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
476
500
|
{`// Music player controls
|
|
477
501
|
<div className="flex items-center justify-center gap-4">
|
|
478
502
|
<button onClick={previousTrack}>
|
|
@@ -492,33 +516,33 @@ function MediaPlayer() {
|
|
|
492
516
|
|
|
493
517
|
{/* Video Player */}
|
|
494
518
|
<div className="!space-y-4">
|
|
495
|
-
<h3 className="text-lg font-semibold
|
|
519
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
496
520
|
Video Player
|
|
497
521
|
</h3>
|
|
498
522
|
<div className="!space-y-4">
|
|
499
|
-
<div className="rounded-lg border
|
|
500
|
-
<div className="mb-4 h-32 rounded bg-
|
|
523
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
524
|
+
<div className="from-fm-icon-negative/20 to-fm-icon-negative/20 mb-4 h-32 rounded bg-linear-to-r" />
|
|
501
525
|
<div className="flex items-center justify-between">
|
|
502
526
|
<div className="flex items-center gap-2">
|
|
503
|
-
<button className="rounded-lg p-2
|
|
504
|
-
<PauseIcon className="h-6 w-6
|
|
527
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2">
|
|
528
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
505
529
|
</button>
|
|
506
|
-
<span className="text-
|
|
530
|
+
<span className="text-fm-tertiary text-sm">
|
|
507
531
|
00:42 / 03:28
|
|
508
532
|
</span>
|
|
509
533
|
</div>
|
|
510
534
|
<div className="flex items-center gap-2">
|
|
511
|
-
<button className="rounded p-1.5
|
|
512
|
-
<div className="h-4 w-4 rounded-full border
|
|
535
|
+
<button className="hover:bg-fm-surface-secondary rounded p-1.5">
|
|
536
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-4 w-4 rounded-full border" />
|
|
513
537
|
</button>
|
|
514
|
-
<button className="rounded p-1.5
|
|
515
|
-
<div className="h-4 w-4 rounded-full border
|
|
538
|
+
<button className="hover:bg-fm-surface-secondary rounded p-1.5">
|
|
539
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-4 w-4 rounded-full border" />
|
|
516
540
|
</button>
|
|
517
541
|
</div>
|
|
518
542
|
</div>
|
|
519
543
|
</div>
|
|
520
|
-
<div className="rounded-lg
|
|
521
|
-
<pre className="overflow-x-auto text-sm
|
|
544
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
545
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
522
546
|
{`// Video player controls
|
|
523
547
|
<div className="video-controls">
|
|
524
548
|
<button
|
|
@@ -539,38 +563,40 @@ function MediaPlayer() {
|
|
|
539
563
|
|
|
540
564
|
{/* Podcast Player */}
|
|
541
565
|
<div className="!space-y-4">
|
|
542
|
-
<h3 className="text-lg font-semibold
|
|
566
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
543
567
|
Podcast Player
|
|
544
568
|
</h3>
|
|
545
569
|
<div className="!space-y-4">
|
|
546
|
-
<div className="rounded-lg border
|
|
570
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
547
571
|
<div className="mb-4">
|
|
548
|
-
<div className="text-sm font-medium
|
|
572
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
549
573
|
Episode 42: Tech Trends
|
|
550
574
|
</div>
|
|
551
|
-
<div className="text-
|
|
575
|
+
<div className="text-fm-tertiary! text-xs">
|
|
552
576
|
The Tech Podcast
|
|
553
577
|
</div>
|
|
554
578
|
</div>
|
|
555
579
|
<div className="flex items-center justify-between">
|
|
556
580
|
<div className="flex items-center gap-4">
|
|
557
|
-
<button className="rounded-lg p-2
|
|
558
|
-
<PauseIcon className="h-6 w-6
|
|
581
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2">
|
|
582
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
559
583
|
</button>
|
|
560
|
-
<div className="text-
|
|
584
|
+
<div className="text-fm-tertiary text-sm">
|
|
561
585
|
<div>12:34 / 58:42</div>
|
|
562
|
-
<div className="mt-1 h-1 w-32 rounded-full
|
|
563
|
-
<div className="h-full w-1/4 rounded-full
|
|
586
|
+
<div className="bg-fm-divider-primary mt-1 h-1 w-32 rounded-full">
|
|
587
|
+
<div className="bg-fm-icon-negative h-full w-1/4 rounded-full" />
|
|
564
588
|
</div>
|
|
565
589
|
</div>
|
|
566
590
|
</div>
|
|
567
591
|
<div className="flex items-center gap-2">
|
|
568
|
-
<span className="text-
|
|
592
|
+
<span className="text-fm-tertiary text-sm">
|
|
593
|
+
1.5x
|
|
594
|
+
</span>
|
|
569
595
|
</div>
|
|
570
596
|
</div>
|
|
571
597
|
</div>
|
|
572
|
-
<div className="rounded-lg
|
|
573
|
-
<pre className="overflow-x-auto text-sm
|
|
598
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
599
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
574
600
|
{`// Podcast player with pause
|
|
575
601
|
<div className="podcast-controls">
|
|
576
602
|
<button
|
|
@@ -591,47 +617,47 @@ function MediaPlayer() {
|
|
|
591
617
|
|
|
592
618
|
{/* Audio Recording */}
|
|
593
619
|
<div className="!space-y-4">
|
|
594
|
-
<h3 className="text-lg font-semibold
|
|
620
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
595
621
|
Audio Recording
|
|
596
622
|
</h3>
|
|
597
623
|
<div className="!space-y-4">
|
|
598
|
-
<div className="rounded-lg border
|
|
624
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
599
625
|
<div className="mb-4">
|
|
600
|
-
<div className="text-sm font-medium
|
|
626
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
601
627
|
Recording Session
|
|
602
628
|
</div>
|
|
603
|
-
<div className="text-
|
|
629
|
+
<div className="text-fm-tertiary! text-xs">
|
|
604
630
|
Voice Memo
|
|
605
631
|
</div>
|
|
606
632
|
</div>
|
|
607
633
|
<div className="flex items-center justify-center gap-6">
|
|
608
|
-
<button className="rounded-lg p-1.5
|
|
609
|
-
<div className="h-4 w-4 rounded-full border
|
|
634
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-1.5">
|
|
635
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-4 w-4 rounded-full border" />
|
|
610
636
|
</button>
|
|
611
|
-
<button className="rounded-lg p-3
|
|
612
|
-
<PauseIcon className="h-8 w-8
|
|
637
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-3">
|
|
638
|
+
<PauseIcon className="text-fm-icon-negative h-8 w-8" />
|
|
613
639
|
</button>
|
|
614
|
-
<button className="rounded-lg p-1.5
|
|
615
|
-
<div className="h-4 w-4 rounded-full border
|
|
640
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-1.5">
|
|
641
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-4 w-4 rounded-full border" />
|
|
616
642
|
</button>
|
|
617
643
|
</div>
|
|
618
644
|
<div className="mt-4 text-center">
|
|
619
|
-
<div className="font-mono text-lg
|
|
645
|
+
<div className="text-fm-icon-negative font-mono text-lg">
|
|
620
646
|
00:02:34
|
|
621
647
|
</div>
|
|
622
648
|
<div className="mt-2 flex justify-center gap-1">
|
|
623
649
|
{[...Array(5)].map((_, i) => (
|
|
624
650
|
<div
|
|
625
651
|
key={i}
|
|
626
|
-
className="h-4 w-1 animate-pulse rounded
|
|
652
|
+
className="bg-fm-icon-negative/60 h-4 w-1 animate-pulse rounded"
|
|
627
653
|
style={{ animationDelay: `${i * 100}ms` }}
|
|
628
654
|
/>
|
|
629
655
|
))}
|
|
630
656
|
</div>
|
|
631
657
|
</div>
|
|
632
658
|
</div>
|
|
633
|
-
<div className="rounded-lg
|
|
634
|
-
<pre className="overflow-x-auto text-sm
|
|
659
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
660
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
635
661
|
{`// Audio recording controls
|
|
636
662
|
<div className="recording-controls">
|
|
637
663
|
<button
|
|
@@ -655,64 +681,64 @@ function MediaPlayer() {
|
|
|
655
681
|
|
|
656
682
|
{/* Accessibility */}
|
|
657
683
|
<div className="!space-y-8">
|
|
658
|
-
<h2 className="text-center text-3xl font-bold
|
|
684
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
659
685
|
Accessibility Features
|
|
660
686
|
</h2>
|
|
661
687
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
662
|
-
<div className="!space-y-4 rounded-lg border
|
|
663
|
-
<h3 className="text-lg font-semibold
|
|
688
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
689
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
664
690
|
✅ Built-in Features
|
|
665
691
|
</h3>
|
|
666
|
-
<ul className="!space-y-2 text-sm
|
|
667
|
-
<li className="
|
|
692
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
693
|
+
<li className="text-fm-secondary!">
|
|
668
694
|
Uses Radix UI AccessibleIcon wrapper
|
|
669
695
|
</li>
|
|
670
|
-
<li className="
|
|
696
|
+
<li className="text-fm-secondary!">
|
|
671
697
|
Provides screen reader label "Pause icon"
|
|
672
698
|
</li>
|
|
673
|
-
<li className="
|
|
699
|
+
<li className="text-fm-secondary!">
|
|
674
700
|
Supports keyboard navigation when interactive
|
|
675
701
|
</li>
|
|
676
|
-
<li className="
|
|
702
|
+
<li className="text-fm-secondary!">
|
|
677
703
|
Maintains proper color contrast ratios
|
|
678
704
|
</li>
|
|
679
|
-
<li className="
|
|
705
|
+
<li className="text-fm-secondary!">
|
|
680
706
|
Scales with user's font size preferences
|
|
681
707
|
</li>
|
|
682
708
|
</ul>
|
|
683
709
|
</div>
|
|
684
710
|
|
|
685
|
-
<div className="!space-y-4 rounded-lg border
|
|
686
|
-
<h3 className="text-lg font-semibold
|
|
711
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
712
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
687
713
|
💡 Best Practices
|
|
688
714
|
</h3>
|
|
689
|
-
<ul className="!space-y-2 text-sm
|
|
690
|
-
<li className="
|
|
715
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
716
|
+
<li className="text-fm-secondary!">
|
|
691
717
|
Always provide descriptive aria-labels for buttons
|
|
692
718
|
</li>
|
|
693
|
-
<li className="
|
|
719
|
+
<li className="text-fm-secondary!">
|
|
694
720
|
Use consistent placement in media control groups
|
|
695
721
|
</li>
|
|
696
|
-
<li className="
|
|
722
|
+
<li className="text-fm-secondary!">
|
|
697
723
|
Ensure sufficient touch target size (44px minimum)
|
|
698
724
|
</li>
|
|
699
|
-
<li className="
|
|
725
|
+
<li className="text-fm-secondary!">
|
|
700
726
|
Provide visible focus states for keyboard users
|
|
701
727
|
</li>
|
|
702
|
-
<li className="
|
|
728
|
+
<li className="text-fm-secondary!">
|
|
703
729
|
Consider keyboard shortcuts (e.g., Spacebar)
|
|
704
730
|
</li>
|
|
705
731
|
</ul>
|
|
706
732
|
</div>
|
|
707
733
|
</div>
|
|
708
734
|
|
|
709
|
-
<div className="rounded-lg border
|
|
710
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
735
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
736
|
+
<h3 className="text-fm-icon-negative! mb-4 text-lg font-semibold">
|
|
711
737
|
Proper ARIA Implementation
|
|
712
738
|
</h3>
|
|
713
739
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
714
|
-
<div className="rounded-lg
|
|
715
|
-
<pre className="overflow-x-auto text-sm
|
|
740
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
741
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
716
742
|
{`// Pause button with proper ARIA
|
|
717
743
|
<button
|
|
718
744
|
aria-label="Pause playback"
|
|
@@ -746,13 +772,13 @@ function MediaPlayer() {
|
|
|
746
772
|
</pre>
|
|
747
773
|
</div>
|
|
748
774
|
<div className="!space-y-4">
|
|
749
|
-
<p className="text-
|
|
775
|
+
<p className="text-fm-secondary! text-sm">
|
|
750
776
|
When using PauseIcon for interactive elements, always
|
|
751
777
|
provide clear context about the current playback state
|
|
752
778
|
and what the pause action will do.
|
|
753
779
|
</p>
|
|
754
|
-
<div className="
|
|
755
|
-
<div className="flex items-center gap-2 text-sm
|
|
780
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
781
|
+
<div className="text-fm-icon-negative flex items-center gap-2 text-sm">
|
|
756
782
|
<PauseIcon className="h-4 w-4" />
|
|
757
783
|
<span>
|
|
758
784
|
Screen readers need context about pause vs play
|
|
@@ -767,50 +793,56 @@ function MediaPlayer() {
|
|
|
767
793
|
|
|
768
794
|
{/* Related Icons */}
|
|
769
795
|
<div className="!space-y-8">
|
|
770
|
-
<h2 className="text-center text-3xl font-bold
|
|
796
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
771
797
|
Related Icons
|
|
772
798
|
</h2>
|
|
773
799
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
774
|
-
<div className="!space-y-3 rounded-lg border
|
|
775
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
776
|
-
<span className="
|
|
800
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
801
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
802
|
+
<span className="text-fm-icon-active! !text-2xl">▶</span>
|
|
777
803
|
</div>
|
|
778
804
|
<div>
|
|
779
|
-
<div className="font-medium
|
|
780
|
-
|
|
805
|
+
<div className="text-fm-icon-active font-medium">
|
|
806
|
+
PlayIcon
|
|
807
|
+
</div>
|
|
808
|
+
<div className="text-fm-tertiary text-xs">
|
|
781
809
|
Start playback
|
|
782
810
|
</div>
|
|
783
811
|
</div>
|
|
784
812
|
</div>
|
|
785
|
-
<div className="!space-y-3 rounded-lg border
|
|
786
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
787
|
-
<span className="
|
|
813
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
814
|
+
<div className="bg-fm-surface-tertiary/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
815
|
+
<span className="text-fm-icon-active! !text-2xl">⏹</span>
|
|
788
816
|
</div>
|
|
789
817
|
<div>
|
|
790
|
-
<div className="font-medium
|
|
791
|
-
|
|
818
|
+
<div className="text-fm-icon-active font-medium">
|
|
819
|
+
StopIcon
|
|
820
|
+
</div>
|
|
821
|
+
<div className="text-fm-tertiary text-xs">
|
|
822
|
+
Stop playback
|
|
823
|
+
</div>
|
|
792
824
|
</div>
|
|
793
825
|
</div>
|
|
794
|
-
<div className="!space-y-3 rounded-lg border
|
|
795
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
796
|
-
<span className="
|
|
826
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
827
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
828
|
+
<span className="text-fm-icon-active! !text-2xl">⏭</span>
|
|
797
829
|
</div>
|
|
798
830
|
<div>
|
|
799
|
-
<div className="font-medium
|
|
831
|
+
<div className="text-fm-icon-active font-medium">
|
|
800
832
|
SkipForwardIcon
|
|
801
833
|
</div>
|
|
802
|
-
<div className="text-
|
|
834
|
+
<div className="text-fm-tertiary text-xs">Next track</div>
|
|
803
835
|
</div>
|
|
804
836
|
</div>
|
|
805
|
-
<div className="!space-y-3 rounded-lg border
|
|
806
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
807
|
-
<span className="
|
|
837
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
838
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
839
|
+
<span className="text-fm-icon-active! !text-2xl">⏮</span>
|
|
808
840
|
</div>
|
|
809
841
|
<div>
|
|
810
|
-
<div className="font-medium
|
|
842
|
+
<div className="text-fm-icon-active font-medium">
|
|
811
843
|
SkipBackwardIcon
|
|
812
844
|
</div>
|
|
813
|
-
<div className="text-
|
|
845
|
+
<div className="text-fm-tertiary text-xs">
|
|
814
846
|
Previous track
|
|
815
847
|
</div>
|
|
816
848
|
</div>
|
|
@@ -820,14 +852,14 @@ function MediaPlayer() {
|
|
|
820
852
|
</div>
|
|
821
853
|
|
|
822
854
|
{/* Footer */}
|
|
823
|
-
<div className="border-
|
|
855
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
824
856
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
825
857
|
<div className="!space-y-4 text-center">
|
|
826
|
-
<p className="
|
|
858
|
+
<p className="text-fm-tertiary!">
|
|
827
859
|
PauseIcon is part of the Aural UI icon library, built with
|
|
828
860
|
accessibility and media control best practices in mind.
|
|
829
861
|
</p>
|
|
830
|
-
<p className="text-
|
|
862
|
+
<p className="text-fm-placeholder! text-sm">
|
|
831
863
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
832
864
|
compatibility and follow WCAG guidelines.
|
|
833
865
|
</p>
|
|
@@ -880,20 +912,20 @@ const storyParameters = {
|
|
|
880
912
|
backgrounds: {
|
|
881
913
|
default: "dark",
|
|
882
914
|
values: [
|
|
883
|
-
{ name: "dark", value: "
|
|
884
|
-
{ name: "darker", value: "
|
|
915
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
916
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
885
917
|
],
|
|
886
918
|
},
|
|
887
919
|
}
|
|
888
920
|
|
|
889
921
|
export const Default: Story = {
|
|
890
922
|
args: {
|
|
891
|
-
className: "h-8 w-8 text-
|
|
923
|
+
className: "h-8 w-8 text-fm-icon-negative",
|
|
892
924
|
withAccessibility: true,
|
|
893
925
|
},
|
|
894
926
|
parameters: storyParameters,
|
|
895
927
|
render: (args) => (
|
|
896
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
928
|
+
<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">
|
|
897
929
|
<PauseIcon {...args} />
|
|
898
930
|
</div>
|
|
899
931
|
),
|
|
@@ -910,30 +942,30 @@ export const SizeVariations: Story = {
|
|
|
910
942
|
},
|
|
911
943
|
},
|
|
912
944
|
render: () => (
|
|
913
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
945
|
+
<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">
|
|
914
946
|
<div className="text-center">
|
|
915
|
-
<PauseIcon className="!mx-auto mb-2 h-3 w-3
|
|
916
|
-
<span className="text-
|
|
947
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-3 w-3" />
|
|
948
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
917
949
|
</div>
|
|
918
950
|
<div className="text-center">
|
|
919
|
-
<PauseIcon className="!mx-auto mb-2 h-4 w-4
|
|
920
|
-
<span className="text-
|
|
951
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-4 w-4" />
|
|
952
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
921
953
|
</div>
|
|
922
954
|
<div className="text-center">
|
|
923
|
-
<PauseIcon className="!mx-auto mb-2 h-5 w-5
|
|
924
|
-
<span className="text-
|
|
955
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-5 w-5" />
|
|
956
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
925
957
|
</div>
|
|
926
958
|
<div className="text-center">
|
|
927
|
-
<PauseIcon className="!mx-auto mb-2 h-6 w-6
|
|
928
|
-
<span className="text-
|
|
959
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-6 w-6" />
|
|
960
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
929
961
|
</div>
|
|
930
962
|
<div className="text-center">
|
|
931
|
-
<PauseIcon className="!mx-auto mb-2 h-8 w-8
|
|
932
|
-
<span className="text-
|
|
963
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-8 w-8" />
|
|
964
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
933
965
|
</div>
|
|
934
966
|
<div className="text-center">
|
|
935
|
-
<PauseIcon className="!mx-auto mb-2 h-12 w-12
|
|
936
|
-
<span className="text-
|
|
967
|
+
<PauseIcon className="text-fm-icon-negative !mx-auto mb-2 h-12 w-12" />
|
|
968
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
937
969
|
</div>
|
|
938
970
|
</div>
|
|
939
971
|
),
|
|
@@ -949,34 +981,40 @@ export const ColorVariations: Story = {
|
|
|
949
981
|
},
|
|
950
982
|
},
|
|
951
983
|
render: () => (
|
|
952
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
984
|
+
<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">
|
|
953
985
|
<div className="text-center">
|
|
954
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
955
|
-
<PauseIcon className="h-8 w-8
|
|
986
|
+
<div className="border-fm-icon-negative/30 bg-fm-icon-negative/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
987
|
+
<PauseIcon className="text-fm-icon-negative h-8 w-8" />
|
|
988
|
+
</div>
|
|
989
|
+
<div className="text-fm-icon-active text-sm font-medium">Primary</div>
|
|
990
|
+
<div className="text-fm-icon-negative text-xs">
|
|
991
|
+
text-fm-icon-negative
|
|
956
992
|
</div>
|
|
957
|
-
<div className="text-sm font-medium text-white">Primary</div>
|
|
958
|
-
<div className="text-xs text-red-400">text-red-400</div>
|
|
959
993
|
</div>
|
|
960
994
|
<div className="text-center">
|
|
961
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
962
|
-
<PauseIcon className="h-8 w-8
|
|
995
|
+
<div className="border-fm-icon-negative/30 bg-fm-icon-negative/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
996
|
+
<PauseIcon className="text-fm-icon-negative h-8 w-8" />
|
|
997
|
+
</div>
|
|
998
|
+
<div className="text-fm-icon-active text-sm font-medium">Secondary</div>
|
|
999
|
+
<div className="text-fm-icon-negative text-xs">
|
|
1000
|
+
text-fm-icon-negative
|
|
963
1001
|
</div>
|
|
964
|
-
<div className="text-sm font-medium text-white">Secondary</div>
|
|
965
|
-
<div className="text-xs text-rose-400">text-rose-400</div>
|
|
966
1002
|
</div>
|
|
967
1003
|
<div className="text-center">
|
|
968
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
969
|
-
<PauseIcon className="h-8 w-8
|
|
1004
|
+
<div className="border-fm-secondary-500/30 bg-fm-secondary-500/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1005
|
+
<PauseIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
1006
|
+
</div>
|
|
1007
|
+
<div className="text-fm-icon-active text-sm font-medium">Accent</div>
|
|
1008
|
+
<div className="text-fm-secondary-600 text-xs">
|
|
1009
|
+
text-fm-secondary-600
|
|
970
1010
|
</div>
|
|
971
|
-
<div className="text-sm font-medium text-white">Accent</div>
|
|
972
|
-
<div className="text-xs text-pink-400">text-pink-400</div>
|
|
973
1011
|
</div>
|
|
974
1012
|
<div className="text-center">
|
|
975
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
976
|
-
<PauseIcon className="h-8 w-8
|
|
1013
|
+
<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">
|
|
1014
|
+
<PauseIcon className="text-fm-placeholder h-8 w-8" />
|
|
977
1015
|
</div>
|
|
978
|
-
<div className="text-sm font-medium
|
|
979
|
-
<div className="text-
|
|
1016
|
+
<div className="text-fm-icon-active text-sm font-medium">Disabled</div>
|
|
1017
|
+
<div className="text-fm-placeholder text-xs">text-fm-placeholder</div>
|
|
980
1018
|
</div>
|
|
981
1019
|
</div>
|
|
982
1020
|
),
|
|
@@ -993,27 +1031,31 @@ export const UsageExamples: Story = {
|
|
|
993
1031
|
},
|
|
994
1032
|
},
|
|
995
1033
|
render: () => (
|
|
996
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1034
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
997
1035
|
{/* Music Player */}
|
|
998
1036
|
<div className="!space-y-2">
|
|
999
|
-
<h3 className="text-sm font-medium
|
|
1000
|
-
|
|
1037
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1038
|
+
Music Player
|
|
1039
|
+
</h3>
|
|
1040
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
1001
1041
|
<div className="mb-4 flex items-center gap-3">
|
|
1002
|
-
<div className="h-12 w-12 rounded-lg bg-
|
|
1042
|
+
<div className="from-fm-icon-negative/20 to-fm-icon-negative/20 h-12 w-12 rounded-lg bg-linear-to-br" />
|
|
1003
1043
|
<div>
|
|
1004
|
-
<div className="text-sm font-medium
|
|
1005
|
-
|
|
1044
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1045
|
+
Current Song
|
|
1046
|
+
</div>
|
|
1047
|
+
<div className="text-fm-tertiary text-xs">Artist Name</div>
|
|
1006
1048
|
</div>
|
|
1007
1049
|
</div>
|
|
1008
1050
|
<div className="flex items-center justify-center gap-4">
|
|
1009
|
-
<button className="rounded-lg p-2 transition-colors
|
|
1010
|
-
<div className="h-6 w-6 rounded-full border
|
|
1051
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2 transition-colors">
|
|
1052
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-6 w-6 rounded-full border" />
|
|
1011
1053
|
</button>
|
|
1012
|
-
<button className="rounded-lg p-3 transition-colors
|
|
1013
|
-
<PauseIcon className="h-8 w-8
|
|
1054
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-3 transition-colors">
|
|
1055
|
+
<PauseIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1014
1056
|
</button>
|
|
1015
|
-
<button className="rounded-lg p-2 transition-colors
|
|
1016
|
-
<div className="h-6 w-6 rounded-full border
|
|
1057
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2 transition-colors">
|
|
1058
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-6 w-6 rounded-full border" />
|
|
1017
1059
|
</button>
|
|
1018
1060
|
</div>
|
|
1019
1061
|
</div>
|
|
@@ -1021,19 +1063,21 @@ export const UsageExamples: Story = {
|
|
|
1021
1063
|
|
|
1022
1064
|
{/* Video Player */}
|
|
1023
1065
|
<div className="!space-y-2">
|
|
1024
|
-
<h3 className="text-sm font-medium
|
|
1025
|
-
|
|
1026
|
-
|
|
1066
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1067
|
+
Video Player
|
|
1068
|
+
</h3>
|
|
1069
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1070
|
+
<div className="from-fm-icon-negative/20 to-fm-icon-negative/20 mb-4 h-32 rounded bg-linear-to-r" />
|
|
1027
1071
|
<div className="flex items-center justify-between">
|
|
1028
1072
|
<div className="flex items-center gap-2">
|
|
1029
|
-
<button className="rounded-lg p-2
|
|
1030
|
-
<PauseIcon className="h-6 w-6
|
|
1073
|
+
<button className="hover:bg-fm-surface-secondary rounded-lg p-2">
|
|
1074
|
+
<PauseIcon className="text-fm-icon-negative h-6 w-6" />
|
|
1031
1075
|
</button>
|
|
1032
|
-
<span className="text-
|
|
1076
|
+
<span className="text-fm-tertiary text-sm">00:42 / 03:28</span>
|
|
1033
1077
|
</div>
|
|
1034
1078
|
<div className="flex items-center gap-2">
|
|
1035
|
-
<button className="rounded p-1.5
|
|
1036
|
-
<div className="h-4 w-4 rounded-full border
|
|
1079
|
+
<button className="hover:bg-fm-surface-secondary rounded p-1.5">
|
|
1080
|
+
<div className="border-fm-divider-contrast bg-fm-divider-primary h-4 w-4 rounded-full border" />
|
|
1037
1081
|
</button>
|
|
1038
1082
|
</div>
|
|
1039
1083
|
</div>
|
|
@@ -1056,11 +1100,11 @@ export const Playground: Story = {
|
|
|
1056
1100
|
args: {
|
|
1057
1101
|
width: 24,
|
|
1058
1102
|
height: 24,
|
|
1059
|
-
className: "text-
|
|
1103
|
+
className: "text-fm-icon-negative",
|
|
1060
1104
|
},
|
|
1061
1105
|
render: (args) => (
|
|
1062
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1063
|
-
<div className="rounded-lg border
|
|
1106
|
+
<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">
|
|
1107
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1064
1108
|
<PauseIcon {...args} />
|
|
1065
1109
|
</div>
|
|
1066
1110
|
</div>
|