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 VideoPlaylistIcon> = {
|
|
|
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,59 +40,59 @@ const meta: Meta<typeof VideoPlaylistIcon> = {
|
|
|
40
40
|
background: transparent !important;
|
|
41
41
|
}
|
|
42
42
|
body {
|
|
43
|
-
background:
|
|
43
|
+
background: var(--color-fm-surface-primary) !important;
|
|
44
44
|
}
|
|
45
45
|
#storybook-docs {
|
|
46
|
-
background:
|
|
46
|
+
background: var(--color-fm-surface-primary) !important;
|
|
47
47
|
}
|
|
48
48
|
.sbdocs-preview {
|
|
49
49
|
background: transparent !important;
|
|
50
50
|
border: none !important;
|
|
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) !important;
|
|
54
54
|
}
|
|
55
55
|
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color:
|
|
56
|
+
color: var(--color-fm-secondary) !important;
|
|
57
57
|
}
|
|
58
58
|
.sbdocs-code {
|
|
59
|
-
background:
|
|
60
|
-
color:
|
|
61
|
-
border: 1px solid
|
|
59
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
60
|
+
color: var(--color-fm-secondary-500) !important;
|
|
61
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
62
62
|
}
|
|
63
63
|
.sbdocs-pre {
|
|
64
|
-
background:
|
|
65
|
-
border: 1px solid
|
|
64
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
65
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
66
66
|
}
|
|
67
67
|
.sbdocs-table {
|
|
68
|
-
background:
|
|
69
|
-
border: 1px solid
|
|
68
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
69
|
+
border: 1px solid var(--color-fm-divider-secondary) !important;
|
|
70
70
|
}
|
|
71
71
|
.sbdocs-table th {
|
|
72
|
-
background:
|
|
73
|
-
color:
|
|
74
|
-
border-bottom: 1px solid
|
|
72
|
+
background: var(--color-fm-surface-secondary) !important;
|
|
73
|
+
color: var(--color-fm-icon-active) !important;
|
|
74
|
+
border-bottom: 1px solid var(--color-fm-divider-secondary) !important;
|
|
75
75
|
}
|
|
76
76
|
.sbdocs-table td {
|
|
77
|
-
color:
|
|
78
|
-
border-bottom: 1px solid
|
|
77
|
+
color: var(--color-fm-secondary) !important;
|
|
78
|
+
border-bottom: 1px solid var(--color-fm-divider-tertiary) !important;
|
|
79
79
|
}
|
|
80
80
|
`}
|
|
81
81
|
</style>
|
|
82
82
|
|
|
83
|
-
<div className="
|
|
83
|
+
<div className="bg-fm-surface-primary min-h-screen">
|
|
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-secondary-500/10 to-fm-icon-info/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
|
-
<VideoPlaylistIcon className="h-12 w-12
|
|
89
|
+
<div className="border-fm-secondary-500/30 from-fm-secondary-500/20 to-fm-icon-info/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-12 w-12" />
|
|
91
91
|
</div>
|
|
92
92
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
93
|
VideoPlaylistIcon
|
|
94
94
|
</h1>
|
|
95
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed
|
|
95
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
96
|
A versatile video playlist icon for media libraries, course
|
|
97
97
|
content, and video collections. Built with accessibility in
|
|
98
98
|
mind using Radix UI's AccessibleIcon wrapper.
|
|
@@ -101,28 +101,28 @@ const meta: Meta<typeof VideoPlaylistIcon> = {
|
|
|
101
101
|
{/* Stats */}
|
|
102
102
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
103
103
|
<div className="text-center">
|
|
104
|
-
<div className="text-3xl font-bold
|
|
104
|
+
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
105
105
|
Accessible
|
|
106
106
|
</div>
|
|
107
|
-
<div className="text-
|
|
107
|
+
<div className="text-fm-tertiary text-sm">
|
|
108
108
|
Screen reader friendly
|
|
109
109
|
</div>
|
|
110
110
|
</div>
|
|
111
|
-
<div className="h-8 w-px
|
|
111
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
112
112
|
<div className="text-center">
|
|
113
|
-
<div className="text-3xl font-bold
|
|
113
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
114
114
|
Scalable
|
|
115
115
|
</div>
|
|
116
|
-
<div className="text-
|
|
116
|
+
<div className="text-fm-tertiary text-sm">
|
|
117
117
|
Any size needed
|
|
118
118
|
</div>
|
|
119
119
|
</div>
|
|
120
|
-
<div className="h-8 w-px
|
|
120
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
121
121
|
<div className="text-center">
|
|
122
|
-
<div className="text-3xl font-bold
|
|
122
|
+
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
123
123
|
Flexible
|
|
124
124
|
</div>
|
|
125
|
-
<div className="text-
|
|
125
|
+
<div className="text-fm-tertiary text-sm">
|
|
126
126
|
Customizable styling
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
@@ -135,16 +135,16 @@ const meta: Meta<typeof VideoPlaylistIcon> = {
|
|
|
135
135
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
136
136
|
{/* Quick Usage */}
|
|
137
137
|
<div className="!space-y-8">
|
|
138
|
-
<h2 className="text-center text-3xl font-bold
|
|
138
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
139
139
|
Quick Start
|
|
140
140
|
</h2>
|
|
141
141
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
142
142
|
<div className="!space-y-4">
|
|
143
|
-
<h3 className="text-xl font-semibold
|
|
143
|
+
<h3 className="text-fm-secondary-600! text-xl font-semibold">
|
|
144
144
|
Basic Usage
|
|
145
145
|
</h3>
|
|
146
|
-
<div className="rounded-lg
|
|
147
|
-
<pre className="overflow-x-auto text-sm
|
|
146
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
147
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
148
148
|
{`import { VideoPlaylistIcon } from "@icons/video-play-list-icon"
|
|
149
149
|
|
|
150
150
|
function MyComponent() {
|
|
@@ -157,11 +157,11 @@ function MyComponent() {
|
|
|
157
157
|
</div>
|
|
158
158
|
|
|
159
159
|
<div className="!space-y-4">
|
|
160
|
-
<h3 className="text-xl font-semibold
|
|
160
|
+
<h3 className="text-fm-secondary-600! text-xl font-semibold">
|
|
161
161
|
Live Preview
|
|
162
162
|
</h3>
|
|
163
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
164
|
-
<VideoPlaylistIcon className="h-12 w-12
|
|
163
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
164
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-12 w-12" />
|
|
165
165
|
</div>
|
|
166
166
|
</div>
|
|
167
167
|
</div>
|
|
@@ -169,122 +169,130 @@ function MyComponent() {
|
|
|
169
169
|
|
|
170
170
|
{/* Props Documentation */}
|
|
171
171
|
<div className="!space-y-8">
|
|
172
|
-
<h2 className="text-center text-3xl font-bold
|
|
172
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
173
173
|
Props & Configuration
|
|
174
174
|
</h2>
|
|
175
175
|
|
|
176
|
-
<div className="overflow-hidden rounded-lg border
|
|
177
|
-
<div className="bg-
|
|
178
|
-
<h3 className="text-xl font-semibold
|
|
176
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
177
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
178
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
179
|
+
Props
|
|
180
|
+
</h3>
|
|
179
181
|
</div>
|
|
180
182
|
<table className="!my-0 w-full">
|
|
181
|
-
<thead className="bg-
|
|
182
|
-
<tr className="border-
|
|
183
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
183
|
+
<thead className="bg-fm-surface-secondary">
|
|
184
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
185
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
184
186
|
Prop
|
|
185
187
|
</th>
|
|
186
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
188
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
187
189
|
Type
|
|
188
190
|
</th>
|
|
189
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
191
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
190
192
|
Default
|
|
191
193
|
</th>
|
|
192
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
194
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
193
195
|
Description
|
|
194
196
|
</th>
|
|
195
197
|
</tr>
|
|
196
198
|
</thead>
|
|
197
199
|
<tbody>
|
|
198
200
|
{" "}
|
|
199
|
-
<tr className="
|
|
200
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
201
|
+
<tr className="bg-fm-surface-secondary!">
|
|
202
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
201
203
|
withAccessibility
|
|
202
204
|
</td>
|
|
203
|
-
<td className="px-6 py-4 text-sm
|
|
205
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
204
206
|
boolean
|
|
205
207
|
</td>
|
|
206
|
-
<td className="px-6 py-4 text-sm
|
|
208
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
207
209
|
true
|
|
208
210
|
</td>
|
|
209
|
-
<td className="px-6 py-4 text-sm
|
|
211
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
210
212
|
Whether to wrap the icon with accessibility feature
|
|
211
213
|
</td>
|
|
212
214
|
</tr>
|
|
213
|
-
<tr className="border-
|
|
214
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
215
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
216
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
215
217
|
height
|
|
216
218
|
</td>
|
|
217
|
-
<td className="px-6 py-4 text-sm
|
|
219
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
218
220
|
number | string
|
|
219
221
|
</td>
|
|
220
|
-
<td className="px-6 py-4 text-sm
|
|
221
|
-
|
|
222
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
223
|
+
20
|
|
224
|
+
</td>
|
|
225
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
222
226
|
Height of the icon in pixels
|
|
223
227
|
</td>
|
|
224
228
|
</tr>
|
|
225
|
-
<tr className="border-
|
|
226
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
229
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
230
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
227
231
|
stroke
|
|
228
232
|
</td>
|
|
229
|
-
<td className="px-6 py-4 text-sm
|
|
233
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
230
234
|
string
|
|
231
235
|
</td>
|
|
232
|
-
<td className="px-6 py-4 text-sm
|
|
236
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
233
237
|
currentColor
|
|
234
238
|
</td>
|
|
235
|
-
<td className="px-6 py-4 text-sm
|
|
239
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
236
240
|
Stroke color of the playlist icon
|
|
237
241
|
</td>
|
|
238
242
|
</tr>
|
|
239
|
-
<tr className="border-
|
|
240
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
243
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
244
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
241
245
|
strokeWidth
|
|
242
246
|
</td>
|
|
243
|
-
<td className="px-6 py-4 text-sm
|
|
247
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
244
248
|
number | string
|
|
245
249
|
</td>
|
|
246
|
-
<td className="px-6 py-4 text-sm
|
|
250
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
247
251
|
1.25
|
|
248
252
|
</td>
|
|
249
|
-
<td className="px-6 py-4 text-sm
|
|
253
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
250
254
|
Width of the stroke line
|
|
251
255
|
</td>
|
|
252
256
|
</tr>
|
|
253
|
-
<tr className="border-
|
|
254
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
257
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
258
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
255
259
|
strokeLinecap
|
|
256
260
|
</td>
|
|
257
|
-
<td className="px-6 py-4 text-sm
|
|
261
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
258
262
|
string
|
|
259
263
|
</td>
|
|
260
|
-
<td className="px-6 py-4 text-sm
|
|
264
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
261
265
|
square
|
|
262
266
|
</td>
|
|
263
|
-
<td className="px-6 py-4 text-sm
|
|
267
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
264
268
|
Style of line endings
|
|
265
269
|
</td>
|
|
266
270
|
</tr>
|
|
267
|
-
<tr className="border-
|
|
268
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
271
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
272
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
269
273
|
className
|
|
270
274
|
</td>
|
|
271
|
-
<td className="px-6 py-4 text-sm
|
|
275
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
272
276
|
string
|
|
273
277
|
</td>
|
|
274
|
-
<td className="px-6 py-4 text-sm
|
|
275
|
-
|
|
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">
|
|
276
282
|
CSS classes for styling
|
|
277
283
|
</td>
|
|
278
284
|
</tr>
|
|
279
|
-
<tr className="
|
|
280
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
285
|
+
<tr className="bg-fm-surface-secondary!">
|
|
286
|
+
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
281
287
|
onClick
|
|
282
288
|
</td>
|
|
283
|
-
<td className="px-6 py-4 text-sm
|
|
289
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
284
290
|
function
|
|
285
291
|
</td>
|
|
286
|
-
<td className="px-6 py-4 text-sm
|
|
287
|
-
|
|
292
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
293
|
+
-
|
|
294
|
+
</td>
|
|
295
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
288
296
|
Click handler for interactions
|
|
289
297
|
</td>
|
|
290
298
|
</tr>
|
|
@@ -295,21 +303,21 @@ function MyComponent() {
|
|
|
295
303
|
{/* Styling Options */}
|
|
296
304
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
297
305
|
<div className="!space-y-4">
|
|
298
|
-
<h3 className="text-lg font-semibold
|
|
306
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
299
307
|
Media Player Styles
|
|
300
308
|
</h3>
|
|
301
309
|
<div className="!space-y-4">
|
|
302
310
|
<div className="flex gap-4">
|
|
303
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
311
|
+
<button className="border-fm-secondary-500/30 bg-fm-secondary-500/20 text-fm-secondary-600 flex items-center gap-2 rounded-lg border px-4 py-2">
|
|
304
312
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
305
313
|
Playlist
|
|
306
314
|
</button>
|
|
307
|
-
<button className="
|
|
315
|
+
<button className="text-fm-secondary-600 hover:bg-fm-secondary-500/20 rounded-lg p-2 transition-colors">
|
|
308
316
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
309
317
|
</button>
|
|
310
318
|
</div>
|
|
311
|
-
<div className="rounded-lg
|
|
312
|
-
<pre className="overflow-x-auto text-sm
|
|
319
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
320
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
313
321
|
{`// Button with text
|
|
314
322
|
<button className="flex items-center gap-2 bg-purple-500/20 border border-purple-500/30 px-4 py-2 rounded-lg">
|
|
315
323
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
@@ -326,17 +334,17 @@ function MyComponent() {
|
|
|
326
334
|
</div>
|
|
327
335
|
|
|
328
336
|
<div className="!space-y-4">
|
|
329
|
-
<h3 className="text-lg font-semibold
|
|
337
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
330
338
|
Color Customization
|
|
331
339
|
</h3>
|
|
332
340
|
<div className="!space-y-4">
|
|
333
341
|
<div className="flex gap-4">
|
|
334
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
335
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
336
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
342
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
343
|
+
<VideoPlaylistIcon className="text-fm-icon-info h-6 w-6" />
|
|
344
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
337
345
|
</div>
|
|
338
|
-
<div className="rounded-lg
|
|
339
|
-
<pre className="overflow-x-auto text-sm
|
|
346
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
347
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
340
348
|
{`// Using Tailwind classes
|
|
341
349
|
<VideoPlaylistIcon className="h-6 w-6 text-purple-400" />
|
|
342
350
|
<VideoPlaylistIcon className="h-6 w-6 text-indigo-400" />
|
|
@@ -362,50 +370,62 @@ function MyComponent() {
|
|
|
362
370
|
|
|
363
371
|
{/* Size Variations */}
|
|
364
372
|
<div className="!space-y-8">
|
|
365
|
-
<h2 className="text-center text-3xl font-bold
|
|
373
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
366
374
|
Size Variations
|
|
367
375
|
</h2>
|
|
368
|
-
<div className="rounded-lg border
|
|
376
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
369
377
|
<div className="!space-y-6">
|
|
370
378
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
371
379
|
<div className="!space-y-4">
|
|
372
|
-
<h3 className="text-lg font-semibold
|
|
380
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
373
381
|
Standard Sizes
|
|
374
382
|
</h3>
|
|
375
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
383
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
376
384
|
<div className="text-center">
|
|
377
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-3 w-3
|
|
378
|
-
<span className="text-
|
|
385
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-3 w-3" />
|
|
386
|
+
<span className="text-fm-tertiary text-xs">
|
|
387
|
+
12px
|
|
388
|
+
</span>
|
|
379
389
|
</div>
|
|
380
390
|
<div className="text-center">
|
|
381
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-4 w-4
|
|
382
|
-
<span className="text-
|
|
391
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-4 w-4" />
|
|
392
|
+
<span className="text-fm-tertiary text-xs">
|
|
393
|
+
16px
|
|
394
|
+
</span>
|
|
383
395
|
</div>
|
|
384
396
|
<div className="text-center">
|
|
385
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-5 w-5
|
|
386
|
-
<span className="text-
|
|
397
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-5 w-5" />
|
|
398
|
+
<span className="text-fm-tertiary text-xs">
|
|
399
|
+
20px
|
|
400
|
+
</span>
|
|
387
401
|
</div>
|
|
388
402
|
<div className="text-center">
|
|
389
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-6 w-6
|
|
390
|
-
<span className="text-
|
|
403
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-6 w-6" />
|
|
404
|
+
<span className="text-fm-tertiary text-xs">
|
|
405
|
+
24px
|
|
406
|
+
</span>
|
|
391
407
|
</div>
|
|
392
408
|
<div className="text-center">
|
|
393
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-8 w-8
|
|
394
|
-
<span className="text-
|
|
409
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-8 w-8" />
|
|
410
|
+
<span className="text-fm-tertiary text-xs">
|
|
411
|
+
32px
|
|
412
|
+
</span>
|
|
395
413
|
</div>
|
|
396
414
|
<div className="text-center">
|
|
397
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-12 w-12
|
|
398
|
-
<span className="text-
|
|
415
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-12 w-12" />
|
|
416
|
+
<span className="text-fm-tertiary text-xs">
|
|
417
|
+
48px
|
|
418
|
+
</span>
|
|
399
419
|
</div>
|
|
400
420
|
</div>
|
|
401
421
|
</div>
|
|
402
422
|
|
|
403
423
|
<div className="!space-y-4">
|
|
404
|
-
<h3 className="text-lg font-semibold
|
|
424
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
405
425
|
Code Example
|
|
406
426
|
</h3>
|
|
407
|
-
<div className="rounded-lg
|
|
408
|
-
<pre className="overflow-x-auto text-sm
|
|
427
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
428
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
409
429
|
{`// Small (16px)
|
|
410
430
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
411
431
|
|
|
@@ -427,56 +447,56 @@ function MyComponent() {
|
|
|
427
447
|
|
|
428
448
|
{/* Color Variations */}
|
|
429
449
|
<div className="!space-y-8">
|
|
430
|
-
<h2 className="text-center text-3xl font-bold
|
|
450
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
431
451
|
Color Variations
|
|
432
452
|
</h2>
|
|
433
453
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
434
454
|
<div className="!space-y-4">
|
|
435
|
-
<h3 className="text-lg font-semibold
|
|
455
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
436
456
|
Semantic Colors
|
|
437
457
|
</h3>
|
|
438
|
-
<div className="!space-y-4 rounded-lg border
|
|
458
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
439
459
|
<div className="flex items-center gap-4">
|
|
440
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
460
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
441
461
|
<div>
|
|
442
|
-
<div className="text-sm font-medium
|
|
462
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
443
463
|
Media
|
|
444
464
|
</div>
|
|
445
|
-
<div className="text-
|
|
446
|
-
text-
|
|
465
|
+
<div className="text-fm-tertiary text-xs">
|
|
466
|
+
text-fm-secondary-600
|
|
447
467
|
</div>
|
|
448
468
|
</div>
|
|
449
469
|
</div>
|
|
450
470
|
<div className="flex items-center gap-4">
|
|
451
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
471
|
+
<VideoPlaylistIcon className="text-fm-icon-info h-6 w-6" />
|
|
452
472
|
<div>
|
|
453
|
-
<div className="text-sm font-medium
|
|
473
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
454
474
|
Learning
|
|
455
475
|
</div>
|
|
456
|
-
<div className="text-
|
|
457
|
-
text-
|
|
476
|
+
<div className="text-fm-tertiary text-xs">
|
|
477
|
+
text-fm-icon-info
|
|
458
478
|
</div>
|
|
459
479
|
</div>
|
|
460
480
|
</div>
|
|
461
481
|
<div className="flex items-center gap-4">
|
|
462
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
482
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
463
483
|
<div>
|
|
464
|
-
<div className="text-sm font-medium
|
|
484
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
465
485
|
Creative
|
|
466
486
|
</div>
|
|
467
|
-
<div className="text-
|
|
468
|
-
text-
|
|
487
|
+
<div className="text-fm-tertiary text-xs">
|
|
488
|
+
text-fm-secondary-600
|
|
469
489
|
</div>
|
|
470
490
|
</div>
|
|
471
491
|
</div>
|
|
472
492
|
<div className="flex items-center gap-4">
|
|
473
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
493
|
+
<VideoPlaylistIcon className="text-fm-placeholder h-6 w-6" />
|
|
474
494
|
<div>
|
|
475
|
-
<div className="text-sm font-medium
|
|
495
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
476
496
|
Disabled
|
|
477
497
|
</div>
|
|
478
|
-
<div className="text-
|
|
479
|
-
text-
|
|
498
|
+
<div className="text-fm-tertiary text-xs">
|
|
499
|
+
text-fm-placeholder
|
|
480
500
|
</div>
|
|
481
501
|
</div>
|
|
482
502
|
</div>
|
|
@@ -484,11 +504,11 @@ function MyComponent() {
|
|
|
484
504
|
</div>
|
|
485
505
|
|
|
486
506
|
<div className="!space-y-4">
|
|
487
|
-
<h3 className="text-lg font-semibold
|
|
507
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
488
508
|
Custom Colors
|
|
489
509
|
</h3>
|
|
490
|
-
<div className="rounded-lg
|
|
491
|
-
<pre className="overflow-x-auto text-sm
|
|
510
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
511
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
492
512
|
{`// Using Tailwind classes
|
|
493
513
|
<VideoPlaylistIcon className="h-6 w-6 text-purple-400" />
|
|
494
514
|
<VideoPlaylistIcon className="h-6 w-6 text-indigo-500" />
|
|
@@ -513,47 +533,47 @@ function MyComponent() {
|
|
|
513
533
|
|
|
514
534
|
{/* Usage Examples */}
|
|
515
535
|
<div className="!space-y-8">
|
|
516
|
-
<h2 className="text-center text-3xl font-bold
|
|
536
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
517
537
|
Usage Examples
|
|
518
538
|
</h2>
|
|
519
539
|
|
|
520
540
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
521
541
|
{/* Media Player */}
|
|
522
542
|
<div className="!space-y-4">
|
|
523
|
-
<h3 className="text-lg font-semibold
|
|
543
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
524
544
|
Media Player
|
|
525
545
|
</h3>
|
|
526
546
|
<div className="!space-y-4">
|
|
527
|
-
<div className="rounded-lg border
|
|
547
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
528
548
|
<div className="mb-4 flex items-center justify-between">
|
|
529
|
-
<h4 className="text-sm font-medium
|
|
549
|
+
<h4 className="text-fm-icon-active! text-sm font-medium">
|
|
530
550
|
Video Player
|
|
531
551
|
</h4>
|
|
532
|
-
<button className="
|
|
552
|
+
<button className="text-fm-secondary-600 hover:bg-fm-secondary-500/20 rounded-lg p-2 transition-colors">
|
|
533
553
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
534
554
|
</button>
|
|
535
555
|
</div>
|
|
536
|
-
<div className="mb-3 flex aspect-video items-center justify-center rounded-lg
|
|
556
|
+
<div className="bg-fm-surface-secondary mb-3 flex aspect-video items-center justify-center rounded-lg">
|
|
537
557
|
<div className="text-center">
|
|
538
|
-
<div className="mb-2 flex h-16 w-16 items-center justify-center rounded-full
|
|
558
|
+
<div className="bg-fm-surface-secondary mb-2 flex h-16 w-16 items-center justify-center rounded-full">
|
|
539
559
|
<span className="text-2xl">▶️</span>
|
|
540
560
|
</div>
|
|
541
|
-
<p className="text-
|
|
561
|
+
<p className="text-fm-tertiary text-sm">
|
|
542
562
|
Click to play
|
|
543
563
|
</p>
|
|
544
564
|
</div>
|
|
545
565
|
</div>
|
|
546
566
|
<div className="flex items-center gap-3">
|
|
547
|
-
<span className="text-
|
|
567
|
+
<span className="text-fm-tertiary text-xs">
|
|
548
568
|
0:00 / 10:25
|
|
549
569
|
</span>
|
|
550
|
-
<div className="h-1 flex-1 rounded
|
|
551
|
-
<div className="h-full w-1/4 rounded
|
|
570
|
+
<div className="bg-fm-divider-primary h-1 flex-1 rounded">
|
|
571
|
+
<div className="bg-fm-secondary-500 h-full w-1/4 rounded"></div>
|
|
552
572
|
</div>
|
|
553
573
|
</div>
|
|
554
574
|
</div>
|
|
555
|
-
<div className="rounded-lg
|
|
556
|
-
<pre className="overflow-x-auto text-sm
|
|
575
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
576
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
557
577
|
{`// Media player with playlist button
|
|
558
578
|
<div className="flex items-center justify-between">
|
|
559
579
|
<h4>Video Player</h4>
|
|
@@ -568,37 +588,37 @@ function MyComponent() {
|
|
|
568
588
|
|
|
569
589
|
{/* Course Library */}
|
|
570
590
|
<div className="!space-y-4">
|
|
571
|
-
<h3 className="text-lg font-semibold
|
|
591
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
572
592
|
Course Library
|
|
573
593
|
</h3>
|
|
574
594
|
<div className="!space-y-4">
|
|
575
|
-
<div className="rounded-lg border
|
|
595
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
576
596
|
<div className="mb-3 flex items-center gap-3">
|
|
577
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-lg
|
|
578
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
597
|
+
<div className="bg-fm-secondary-500/20 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
598
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
579
599
|
</div>
|
|
580
600
|
<div className="flex-1">
|
|
581
|
-
<h4 className="text-sm font-medium
|
|
601
|
+
<h4 className="text-fm-icon-active! text-sm font-medium">
|
|
582
602
|
React Fundamentals
|
|
583
603
|
</h4>
|
|
584
|
-
<p className="text-
|
|
604
|
+
<p className="text-fm-tertiary! text-xs">
|
|
585
605
|
12 videos • 3.5 hours
|
|
586
606
|
</p>
|
|
587
607
|
</div>
|
|
588
|
-
<span className="
|
|
608
|
+
<span className="bg-fm-secondary-500/20 text-fm-secondary-600 rounded px-2 py-1 text-xs">
|
|
589
609
|
Course
|
|
590
610
|
</span>
|
|
591
611
|
</div>
|
|
592
|
-
<div className="flex items-center gap-2 text-xs
|
|
612
|
+
<div className="text-fm-tertiary flex items-center gap-2 text-xs">
|
|
593
613
|
<span>Progress:</span>
|
|
594
|
-
<div className="h-1 flex-1 rounded
|
|
595
|
-
<div className="h-full w-2/3 rounded
|
|
614
|
+
<div className="bg-fm-divider-primary h-1 flex-1 rounded">
|
|
615
|
+
<div className="bg-fm-secondary-500 h-full w-2/3 rounded"></div>
|
|
596
616
|
</div>
|
|
597
617
|
<span>67%</span>
|
|
598
618
|
</div>
|
|
599
619
|
</div>
|
|
600
|
-
<div className="rounded-lg
|
|
601
|
-
<pre className="overflow-x-auto text-sm
|
|
620
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
621
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
602
622
|
{`// Course library item
|
|
603
623
|
<div className="flex items-center gap-3">
|
|
604
624
|
<div className="w-12 h-12 bg-purple-500/20 rounded-lg flex items-center justify-center">
|
|
@@ -616,34 +636,36 @@ function MyComponent() {
|
|
|
616
636
|
|
|
617
637
|
{/* Video Collection */}
|
|
618
638
|
<div className="!space-y-4">
|
|
619
|
-
<h3 className="text-lg font-semibold
|
|
639
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
620
640
|
Video Collection
|
|
621
641
|
</h3>
|
|
622
642
|
<div className="!space-y-4">
|
|
623
|
-
<div className="rounded-lg border
|
|
643
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
624
644
|
<div className="grid grid-cols-1 gap-3 md:grid-cols-2">
|
|
625
|
-
<div className="
|
|
645
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
626
646
|
<div className="mb-2 flex items-center gap-2">
|
|
627
|
-
<VideoPlaylistIcon className="h-4 w-4
|
|
628
|
-
<span className="text-sm font-medium
|
|
647
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-4 w-4" />
|
|
648
|
+
<span className="text-fm-icon-active text-sm font-medium">
|
|
629
649
|
My Favorites
|
|
630
650
|
</span>
|
|
631
651
|
</div>
|
|
632
|
-
<p className="text-
|
|
652
|
+
<p className="text-fm-tertiary text-xs">
|
|
653
|
+
24 videos
|
|
654
|
+
</p>
|
|
633
655
|
</div>
|
|
634
|
-
<div className="
|
|
656
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
635
657
|
<div className="mb-2 flex items-center gap-2">
|
|
636
|
-
<VideoPlaylistIcon className="h-4 w-4
|
|
637
|
-
<span className="text-sm font-medium
|
|
658
|
+
<VideoPlaylistIcon className="text-fm-icon-info h-4 w-4" />
|
|
659
|
+
<span className="text-fm-icon-active text-sm font-medium">
|
|
638
660
|
Watch Later
|
|
639
661
|
</span>
|
|
640
662
|
</div>
|
|
641
|
-
<p className="text-
|
|
663
|
+
<p className="text-fm-tertiary text-xs">8 videos</p>
|
|
642
664
|
</div>
|
|
643
665
|
</div>
|
|
644
666
|
</div>
|
|
645
|
-
<div className="rounded-lg
|
|
646
|
-
<pre className="overflow-x-auto text-sm
|
|
667
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
668
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
647
669
|
{`// Video collection grid
|
|
648
670
|
<div className="flex items-center gap-2">
|
|
649
671
|
<VideoPlaylistIcon className="h-4 w-4 text-purple-400" />
|
|
@@ -656,37 +678,37 @@ function MyComponent() {
|
|
|
656
678
|
|
|
657
679
|
{/* Navigation Menu */}
|
|
658
680
|
<div className="!space-y-4">
|
|
659
|
-
<h3 className="text-lg font-semibold
|
|
681
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
660
682
|
Navigation Menu
|
|
661
683
|
</h3>
|
|
662
684
|
<div className="!space-y-4">
|
|
663
|
-
<div className="rounded-lg border
|
|
685
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
664
686
|
<nav className="space-y-1">
|
|
665
687
|
<a
|
|
666
688
|
href="#"
|
|
667
|
-
className="flex items-center gap-3 rounded px-3 py-2 text-sm
|
|
689
|
+
className="text-fm-icon-active hover:bg-fm-surface-secondary flex items-center gap-3 rounded px-3 py-2 text-sm"
|
|
668
690
|
>
|
|
669
|
-
<span className="text-
|
|
691
|
+
<span className="text-fm-icon-info">🏠</span>
|
|
670
692
|
<span>Home</span>
|
|
671
693
|
</a>
|
|
672
694
|
<a
|
|
673
695
|
href="#"
|
|
674
|
-
className="flex items-center gap-3 rounded
|
|
696
|
+
className="bg-fm-secondary-500/10 text-fm-secondary-600 flex items-center gap-3 rounded px-3 py-2 text-sm"
|
|
675
697
|
>
|
|
676
698
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
677
699
|
<span>Playlists</span>
|
|
678
700
|
</a>
|
|
679
701
|
<a
|
|
680
702
|
href="#"
|
|
681
|
-
className="flex items-center gap-3 rounded px-3 py-2 text-sm
|
|
703
|
+
className="text-fm-icon-active hover:bg-fm-surface-secondary flex items-center gap-3 rounded px-3 py-2 text-sm"
|
|
682
704
|
>
|
|
683
|
-
<span className="text-
|
|
705
|
+
<span className="text-fm-icon-positive">📚</span>
|
|
684
706
|
<span>Library</span>
|
|
685
707
|
</a>
|
|
686
708
|
</nav>
|
|
687
709
|
</div>
|
|
688
|
-
<div className="rounded-lg
|
|
689
|
-
<pre className="overflow-x-auto text-sm
|
|
710
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
711
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
690
712
|
{`// Navigation with active state
|
|
691
713
|
<a href="#" className="flex items-center gap-3 px-3 py-2 text-purple-400 bg-purple-500/10 rounded">
|
|
692
714
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
@@ -701,64 +723,64 @@ function MyComponent() {
|
|
|
701
723
|
|
|
702
724
|
{/* Accessibility */}
|
|
703
725
|
<div className="!space-y-8">
|
|
704
|
-
<h2 className="text-center text-3xl font-bold
|
|
726
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
705
727
|
Accessibility Features
|
|
706
728
|
</h2>
|
|
707
729
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
708
|
-
<div className="!space-y-4 rounded-lg border
|
|
709
|
-
<h3 className="text-lg font-semibold
|
|
730
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
731
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
710
732
|
✅ Built-in Features
|
|
711
733
|
</h3>
|
|
712
|
-
<ul className="!space-y-2 text-sm
|
|
713
|
-
<li className="
|
|
734
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
735
|
+
<li className="text-fm-secondary!">
|
|
714
736
|
Uses Radix UI AccessibleIcon wrapper
|
|
715
737
|
</li>
|
|
716
|
-
<li className="
|
|
738
|
+
<li className="text-fm-secondary!">
|
|
717
739
|
Provides screen reader label "Video playlist icon"
|
|
718
740
|
</li>
|
|
719
|
-
<li className="
|
|
741
|
+
<li className="text-fm-secondary!">
|
|
720
742
|
Supports keyboard navigation when interactive
|
|
721
743
|
</li>
|
|
722
|
-
<li className="
|
|
744
|
+
<li className="text-fm-secondary!">
|
|
723
745
|
Maintains proper color contrast ratios
|
|
724
746
|
</li>
|
|
725
|
-
<li className="
|
|
747
|
+
<li className="text-fm-secondary!">
|
|
726
748
|
Scales with user's font size preferences
|
|
727
749
|
</li>
|
|
728
750
|
</ul>
|
|
729
751
|
</div>
|
|
730
752
|
|
|
731
|
-
<div className="!space-y-4 rounded-lg border
|
|
732
|
-
<h3 className="text-lg font-semibold
|
|
753
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
754
|
+
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
733
755
|
💡 Best Practices
|
|
734
756
|
</h3>
|
|
735
|
-
<ul className="!space-y-2 text-sm
|
|
736
|
-
<li className="
|
|
757
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
758
|
+
<li className="text-fm-secondary!">
|
|
737
759
|
Always pair with descriptive labels
|
|
738
760
|
</li>
|
|
739
|
-
<li className="
|
|
761
|
+
<li className="text-fm-secondary!">
|
|
740
762
|
Provide clear context for playlist content
|
|
741
763
|
</li>
|
|
742
|
-
<li className="
|
|
764
|
+
<li className="text-fm-secondary!">
|
|
743
765
|
Ensure sufficient color contrast
|
|
744
766
|
</li>
|
|
745
|
-
<li className="
|
|
767
|
+
<li className="text-fm-secondary!">
|
|
746
768
|
Add focus states for interactive elements
|
|
747
769
|
</li>
|
|
748
|
-
<li className="
|
|
770
|
+
<li className="text-fm-secondary!">
|
|
749
771
|
Consider providing video counts and duration
|
|
750
772
|
</li>
|
|
751
773
|
</ul>
|
|
752
774
|
</div>
|
|
753
775
|
</div>
|
|
754
776
|
|
|
755
|
-
<div className="rounded-lg border
|
|
756
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
777
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
778
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
757
779
|
Custom Accessibility Label
|
|
758
780
|
</h3>
|
|
759
781
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
760
|
-
<div className="rounded-lg
|
|
761
|
-
<pre className="overflow-x-auto text-sm
|
|
782
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
783
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
762
784
|
{`// Custom implementation with specific label
|
|
763
785
|
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
764
786
|
|
|
@@ -778,13 +800,13 @@ function CustomVideoPlaylistIcon({ label = "Playlist", ...props }) {
|
|
|
778
800
|
</pre>
|
|
779
801
|
</div>
|
|
780
802
|
<div className="!space-y-4">
|
|
781
|
-
<p className="text-
|
|
803
|
+
<p className="text-fm-secondary! text-sm">
|
|
782
804
|
For specific contexts, you can wrap the
|
|
783
805
|
VideoPlaylistIcon with a custom AccessibleIcon component
|
|
784
806
|
that provides more descriptive labels.
|
|
785
807
|
</p>
|
|
786
|
-
<div className="
|
|
787
|
-
<div className="flex items-center gap-2 text-sm
|
|
808
|
+
<div className="border-fm-secondary-500/20 bg-fm-secondary-500/10 rounded-lg border p-4">
|
|
809
|
+
<div className="text-fm-secondary-600 flex items-center gap-2 text-sm">
|
|
788
810
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
789
811
|
<span>
|
|
790
812
|
This approach gives screen readers more context
|
|
@@ -798,48 +820,60 @@ function CustomVideoPlaylistIcon({ label = "Playlist", ...props }) {
|
|
|
798
820
|
|
|
799
821
|
{/* Related Icons */}
|
|
800
822
|
<div className="!space-y-8">
|
|
801
|
-
<h2 className="text-center text-3xl font-bold
|
|
823
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
802
824
|
Related Icons
|
|
803
825
|
</h2>
|
|
804
826
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
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
|
|
827
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
828
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
807
829
|
<span className="text-2xl">▶️</span>
|
|
808
830
|
</div>
|
|
809
831
|
<div>
|
|
810
|
-
<div className="font-medium
|
|
811
|
-
|
|
832
|
+
<div className="text-fm-icon-active font-medium">
|
|
833
|
+
PlayIcon
|
|
834
|
+
</div>
|
|
835
|
+
<div className="text-fm-tertiary text-xs">
|
|
812
836
|
Video playback
|
|
813
837
|
</div>
|
|
814
838
|
</div>
|
|
815
839
|
</div>
|
|
816
|
-
<div className="!space-y-3 rounded-lg border
|
|
817
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
818
|
-
<span className="
|
|
840
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
841
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
842
|
+
<span className="text-fm-icon-active! !text-2xl">⏸️</span>
|
|
819
843
|
</div>
|
|
820
844
|
<div>
|
|
821
|
-
<div className="font-medium
|
|
822
|
-
|
|
845
|
+
<div className="text-fm-icon-active font-medium">
|
|
846
|
+
PauseIcon
|
|
847
|
+
</div>
|
|
848
|
+
<div className="text-fm-tertiary text-xs">
|
|
823
849
|
Pause playback
|
|
824
850
|
</div>
|
|
825
851
|
</div>
|
|
826
852
|
</div>
|
|
827
|
-
<div className="!space-y-3 rounded-lg border
|
|
828
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
853
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
854
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
829
855
|
<span className="text-2xl">📹</span>
|
|
830
856
|
</div>
|
|
831
857
|
<div>
|
|
832
|
-
<div className="font-medium
|
|
833
|
-
|
|
858
|
+
<div className="text-fm-icon-active font-medium">
|
|
859
|
+
VideoIcon
|
|
860
|
+
</div>
|
|
861
|
+
<div className="text-fm-tertiary text-xs">
|
|
862
|
+
Video content
|
|
863
|
+
</div>
|
|
834
864
|
</div>
|
|
835
865
|
</div>
|
|
836
|
-
<div className="!space-y-3 rounded-lg border
|
|
837
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
866
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
867
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
838
868
|
<span className="text-2xl">📚</span>
|
|
839
869
|
</div>
|
|
840
870
|
<div>
|
|
841
|
-
<div className="font-medium
|
|
842
|
-
|
|
871
|
+
<div className="text-fm-icon-active font-medium">
|
|
872
|
+
LibraryIcon
|
|
873
|
+
</div>
|
|
874
|
+
<div className="text-fm-tertiary text-xs">
|
|
875
|
+
Media library
|
|
876
|
+
</div>
|
|
843
877
|
</div>
|
|
844
878
|
</div>
|
|
845
879
|
</div>
|
|
@@ -847,14 +881,14 @@ function CustomVideoPlaylistIcon({ label = "Playlist", ...props }) {
|
|
|
847
881
|
</div>
|
|
848
882
|
|
|
849
883
|
{/* Footer */}
|
|
850
|
-
<div className="border-
|
|
884
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
851
885
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
852
886
|
<div className="!space-y-4 text-center">
|
|
853
|
-
<p className="
|
|
887
|
+
<p className="text-fm-tertiary!">
|
|
854
888
|
VideoPlaylistIcon is part of the Aural UI icon library,
|
|
855
889
|
built with accessibility and consistency in mind.
|
|
856
890
|
</p>
|
|
857
|
-
<p className="text-
|
|
891
|
+
<p className="text-fm-placeholder! text-sm">
|
|
858
892
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
859
893
|
compatibility and follow WCAG guidelines.
|
|
860
894
|
</p>
|
|
@@ -899,8 +933,8 @@ const storyParameters = {
|
|
|
899
933
|
backgrounds: {
|
|
900
934
|
default: "dark",
|
|
901
935
|
values: [
|
|
902
|
-
{ name: "dark", value: "
|
|
903
|
-
{ name: "darker", value: "
|
|
936
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
937
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
904
938
|
],
|
|
905
939
|
},
|
|
906
940
|
}
|
|
@@ -909,12 +943,12 @@ export const Default: Story = {
|
|
|
909
943
|
args: {
|
|
910
944
|
width: 20,
|
|
911
945
|
height: 20,
|
|
912
|
-
className: "text-
|
|
946
|
+
className: "text-fm-secondary-600",
|
|
913
947
|
withAccessibility: true,
|
|
914
948
|
},
|
|
915
949
|
parameters: storyParameters,
|
|
916
950
|
render: (args) => (
|
|
917
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
951
|
+
<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">
|
|
918
952
|
<VideoPlaylistIcon {...args} />
|
|
919
953
|
</div>
|
|
920
954
|
),
|
|
@@ -931,30 +965,30 @@ export const SizeVariations: Story = {
|
|
|
931
965
|
},
|
|
932
966
|
},
|
|
933
967
|
render: () => (
|
|
934
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
968
|
+
<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">
|
|
935
969
|
<div className="text-center">
|
|
936
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-3 w-3
|
|
937
|
-
<span className="text-
|
|
970
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-3 w-3" />
|
|
971
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
938
972
|
</div>
|
|
939
973
|
<div className="text-center">
|
|
940
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-4 w-4
|
|
941
|
-
<span className="text-
|
|
974
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-4 w-4" />
|
|
975
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
942
976
|
</div>
|
|
943
977
|
<div className="text-center">
|
|
944
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-5 w-5
|
|
945
|
-
<span className="text-
|
|
978
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-5 w-5" />
|
|
979
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
946
980
|
</div>
|
|
947
981
|
<div className="text-center">
|
|
948
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-6 w-6
|
|
949
|
-
<span className="text-
|
|
982
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-6 w-6" />
|
|
983
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
950
984
|
</div>
|
|
951
985
|
<div className="text-center">
|
|
952
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-8 w-8
|
|
953
|
-
<span className="text-
|
|
986
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-8 w-8" />
|
|
987
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
954
988
|
</div>
|
|
955
989
|
<div className="text-center">
|
|
956
|
-
<VideoPlaylistIcon className="!mx-auto mb-2 h-12 w-12
|
|
957
|
-
<span className="text-
|
|
990
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 !mx-auto mb-2 h-12 w-12" />
|
|
991
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
958
992
|
</div>
|
|
959
993
|
</div>
|
|
960
994
|
),
|
|
@@ -971,34 +1005,38 @@ export const ColorVariations: Story = {
|
|
|
971
1005
|
},
|
|
972
1006
|
},
|
|
973
1007
|
render: () => (
|
|
974
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1008
|
+
<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">
|
|
975
1009
|
<div className="text-center">
|
|
976
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
977
|
-
<VideoPlaylistIcon className="h-8 w-8
|
|
1010
|
+
<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">
|
|
1011
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
1012
|
+
</div>
|
|
1013
|
+
<div className="text-fm-icon-active text-sm font-medium">Media</div>
|
|
1014
|
+
<div className="text-fm-secondary-600 text-xs">
|
|
1015
|
+
text-fm-secondary-600
|
|
978
1016
|
</div>
|
|
979
|
-
<div className="text-sm font-medium text-white">Media</div>
|
|
980
|
-
<div className="text-xs text-purple-400">text-purple-400</div>
|
|
981
1017
|
</div>
|
|
982
1018
|
<div className="text-center">
|
|
983
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
984
|
-
<VideoPlaylistIcon className="h-8 w-8
|
|
1019
|
+
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1020
|
+
<VideoPlaylistIcon className="text-fm-icon-info h-8 w-8" />
|
|
985
1021
|
</div>
|
|
986
|
-
<div className="text-sm font-medium
|
|
987
|
-
<div className="text-
|
|
1022
|
+
<div className="text-fm-icon-active text-sm font-medium">Learning</div>
|
|
1023
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
988
1024
|
</div>
|
|
989
1025
|
<div className="text-center">
|
|
990
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
991
|
-
<VideoPlaylistIcon className="h-8 w-8
|
|
1026
|
+
<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">
|
|
1027
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
1028
|
+
</div>
|
|
1029
|
+
<div className="text-fm-icon-active text-sm font-medium">Creative</div>
|
|
1030
|
+
<div className="text-fm-secondary-600 text-xs">
|
|
1031
|
+
text-fm-secondary-600
|
|
992
1032
|
</div>
|
|
993
|
-
<div className="text-sm font-medium text-white">Creative</div>
|
|
994
|
-
<div className="text-xs text-violet-400">text-violet-400</div>
|
|
995
1033
|
</div>
|
|
996
1034
|
<div className="text-center">
|
|
997
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
998
|
-
<VideoPlaylistIcon className="h-8 w-8
|
|
1035
|
+
<div className="border-fm-divider-primary bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1036
|
+
<VideoPlaylistIcon className="text-fm-placeholder h-8 w-8" />
|
|
999
1037
|
</div>
|
|
1000
|
-
<div className="text-sm font-medium
|
|
1001
|
-
<div className="text-
|
|
1038
|
+
<div className="text-fm-icon-active text-sm font-medium">Disabled</div>
|
|
1039
|
+
<div className="text-fm-placeholder text-xs">text-fm-placeholder</div>
|
|
1002
1040
|
</div>
|
|
1003
1041
|
</div>
|
|
1004
1042
|
),
|
|
@@ -1015,23 +1053,27 @@ export const UsageExamples: Story = {
|
|
|
1015
1053
|
},
|
|
1016
1054
|
},
|
|
1017
1055
|
render: () => (
|
|
1018
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1056
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1019
1057
|
{/* Media Player */}
|
|
1020
1058
|
<div className="!space-y-2">
|
|
1021
|
-
<h3 className="text-sm font-medium
|
|
1022
|
-
|
|
1059
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1060
|
+
Media Player
|
|
1061
|
+
</h3>
|
|
1062
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1023
1063
|
<div className="mb-4 flex items-center justify-between">
|
|
1024
|
-
<h4 className="text-sm font-medium
|
|
1025
|
-
|
|
1064
|
+
<h4 className="text-fm-icon-active! text-sm font-medium">
|
|
1065
|
+
Video Player
|
|
1066
|
+
</h4>
|
|
1067
|
+
<button className="text-fm-secondary-600 hover:bg-fm-secondary-500/20 rounded-lg p-2 transition-colors">
|
|
1026
1068
|
<VideoPlaylistIcon className="h-4 w-4" />
|
|
1027
1069
|
</button>
|
|
1028
1070
|
</div>
|
|
1029
|
-
<div className="mb-3 flex aspect-video items-center justify-center rounded-lg
|
|
1071
|
+
<div className="bg-fm-surface-secondary mb-3 flex aspect-video items-center justify-center rounded-lg">
|
|
1030
1072
|
<div className="text-center">
|
|
1031
|
-
<div className="mb-2 flex h-16 w-16 items-center justify-center rounded-full
|
|
1073
|
+
<div className="bg-fm-surface-secondary mb-2 flex h-16 w-16 items-center justify-center rounded-full">
|
|
1032
1074
|
<span className="text-2xl">▶️</span>
|
|
1033
1075
|
</div>
|
|
1034
|
-
<p className="text-
|
|
1076
|
+
<p className="text-fm-tertiary text-sm">Click to play</p>
|
|
1035
1077
|
</div>
|
|
1036
1078
|
</div>
|
|
1037
1079
|
</div>
|
|
@@ -1039,19 +1081,21 @@ export const UsageExamples: Story = {
|
|
|
1039
1081
|
|
|
1040
1082
|
{/* Course Library */}
|
|
1041
1083
|
<div className="!space-y-2">
|
|
1042
|
-
<h3 className="text-sm font-medium
|
|
1043
|
-
|
|
1084
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1085
|
+
Course Library
|
|
1086
|
+
</h3>
|
|
1087
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1044
1088
|
<div className="mb-3 flex items-center gap-3">
|
|
1045
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-lg
|
|
1046
|
-
<VideoPlaylistIcon className="h-6 w-6
|
|
1089
|
+
<div className="bg-fm-secondary-500/20 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1090
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
1047
1091
|
</div>
|
|
1048
1092
|
<div className="flex-1">
|
|
1049
|
-
<h4 className="text-sm font-medium
|
|
1093
|
+
<h4 className="text-fm-icon-active! text-sm font-medium">
|
|
1050
1094
|
React Fundamentals
|
|
1051
1095
|
</h4>
|
|
1052
|
-
<p className="text-
|
|
1096
|
+
<p className="text-fm-tertiary! text-xs">12 videos • 3.5 hours</p>
|
|
1053
1097
|
</div>
|
|
1054
|
-
<span className="
|
|
1098
|
+
<span className="bg-fm-secondary-500/20 text-fm-secondary-600 rounded px-2 py-1 text-xs">
|
|
1055
1099
|
Course
|
|
1056
1100
|
</span>
|
|
1057
1101
|
</div>
|
|
@@ -1060,26 +1104,28 @@ export const UsageExamples: Story = {
|
|
|
1060
1104
|
|
|
1061
1105
|
{/* Video Collection */}
|
|
1062
1106
|
<div className="!space-y-2">
|
|
1063
|
-
<h3 className="text-sm font-medium
|
|
1064
|
-
|
|
1107
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1108
|
+
Video Collection
|
|
1109
|
+
</h3>
|
|
1110
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1065
1111
|
<div className="grid grid-cols-1 gap-3 md:grid-cols-2">
|
|
1066
|
-
<div className="
|
|
1112
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
1067
1113
|
<div className="mb-2 flex items-center gap-2">
|
|
1068
|
-
<VideoPlaylistIcon className="h-4 w-4
|
|
1069
|
-
<span className="text-sm font-medium
|
|
1114
|
+
<VideoPlaylistIcon className="text-fm-secondary-600 h-4 w-4" />
|
|
1115
|
+
<span className="text-fm-icon-active text-sm font-medium">
|
|
1070
1116
|
My Favorites
|
|
1071
1117
|
</span>
|
|
1072
1118
|
</div>
|
|
1073
|
-
<p className="text-
|
|
1119
|
+
<p className="text-fm-tertiary text-xs">24 videos</p>
|
|
1074
1120
|
</div>
|
|
1075
|
-
<div className="
|
|
1121
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
1076
1122
|
<div className="mb-2 flex items-center gap-2">
|
|
1077
|
-
<VideoPlaylistIcon className="h-4 w-4
|
|
1078
|
-
<span className="text-sm font-medium
|
|
1123
|
+
<VideoPlaylistIcon className="text-fm-icon-info h-4 w-4" />
|
|
1124
|
+
<span className="text-fm-icon-active text-sm font-medium">
|
|
1079
1125
|
Watch Later
|
|
1080
1126
|
</span>
|
|
1081
1127
|
</div>
|
|
1082
|
-
<p className="text-
|
|
1128
|
+
<p className="text-fm-tertiary text-xs">8 videos</p>
|
|
1083
1129
|
</div>
|
|
1084
1130
|
</div>
|
|
1085
1131
|
</div>
|
|
@@ -1101,11 +1147,11 @@ export const Playground: Story = {
|
|
|
1101
1147
|
args: {
|
|
1102
1148
|
width: 32,
|
|
1103
1149
|
height: 32,
|
|
1104
|
-
className: "text-
|
|
1150
|
+
className: "text-fm-secondary-600",
|
|
1105
1151
|
},
|
|
1106
1152
|
render: (args) => (
|
|
1107
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1108
|
-
<div className="rounded-lg border
|
|
1153
|
+
<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">
|
|
1154
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1109
1155
|
<VideoPlaylistIcon {...args} />
|
|
1110
1156
|
</div>
|
|
1111
1157
|
</div>
|