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 CameraIcon> = {
|
|
|
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 CameraIcon> = {
|
|
|
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-info/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-info/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
|
-
<CameraIcon className="h-12 w-12
|
|
89
|
+
<div className="border-fm-icon-info/30 from-fm-icon-info/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
|
+
<CameraIcon className="text-fm-icon-info 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
|
+
CameraIcon
|
|
94
|
+
</h1>
|
|
95
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
94
96
|
A versatile video camera icon featuring a sleek recording
|
|
95
97
|
device design. Essential for video conferencing
|
|
96
98
|
applications, streaming platforms, content creation tools,
|
|
@@ -101,28 +103,28 @@ const meta: Meta<typeof CameraIcon> = {
|
|
|
101
103
|
{/* Stats */}
|
|
102
104
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
103
105
|
<div className="text-center">
|
|
104
|
-
<div className="text-3xl font-bold
|
|
106
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
105
107
|
Video Recording
|
|
106
108
|
</div>
|
|
107
|
-
<div className="text-
|
|
109
|
+
<div className="text-fm-tertiary text-sm">
|
|
108
110
|
Content creation
|
|
109
111
|
</div>
|
|
110
112
|
</div>
|
|
111
|
-
<div className="h-8 w-px
|
|
113
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
112
114
|
<div className="text-center">
|
|
113
|
-
<div className="text-3xl font-bold
|
|
115
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
114
116
|
Live Streaming
|
|
115
117
|
</div>
|
|
116
|
-
<div className="text-
|
|
118
|
+
<div className="text-fm-tertiary text-sm">
|
|
117
119
|
Broadcasting ready
|
|
118
120
|
</div>
|
|
119
121
|
</div>
|
|
120
|
-
<div className="h-8 w-px
|
|
122
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
121
123
|
<div className="text-center">
|
|
122
|
-
<div className="text-3xl font-bold
|
|
124
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
123
125
|
Professional
|
|
124
126
|
</div>
|
|
125
|
-
<div className="text-
|
|
127
|
+
<div className="text-fm-tertiary text-sm">
|
|
126
128
|
Studio quality design
|
|
127
129
|
</div>
|
|
128
130
|
</div>
|
|
@@ -135,16 +137,16 @@ const meta: Meta<typeof CameraIcon> = {
|
|
|
135
137
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
136
138
|
{/* Quick Usage */}
|
|
137
139
|
<div className="!space-y-8">
|
|
138
|
-
<h2 className="text-center text-3xl font-bold
|
|
140
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
139
141
|
Quick Start
|
|
140
142
|
</h2>
|
|
141
143
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
142
144
|
<div className="!space-y-4">
|
|
143
|
-
<h3 className="text-xl font-semibold
|
|
145
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
144
146
|
Basic Usage
|
|
145
147
|
</h3>
|
|
146
|
-
<div className="rounded-lg
|
|
147
|
-
<pre className="overflow-x-auto text-sm
|
|
148
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
149
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
148
150
|
{`import { CameraIcon } from "@icons/camera-icon"
|
|
149
151
|
|
|
150
152
|
function VideoCall() {
|
|
@@ -163,12 +165,12 @@ function VideoCall() {
|
|
|
163
165
|
</div>
|
|
164
166
|
|
|
165
167
|
<div className="!space-y-4">
|
|
166
|
-
<h3 className="text-xl font-semibold
|
|
168
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
167
169
|
Live Preview
|
|
168
170
|
</h3>
|
|
169
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
170
|
-
<button className="
|
|
171
|
-
<CameraIcon className="h-6 w-6
|
|
171
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
172
|
+
<button className="border-fm-icon-info/20 bg-fm-icon-info/10 hover:bg-fm-icon-info/20 rounded-lg border p-3 transition-colors">
|
|
173
|
+
<CameraIcon className="text-fm-icon-info h-6 w-6" />
|
|
172
174
|
</button>
|
|
173
175
|
</div>
|
|
174
176
|
</div>
|
|
@@ -177,122 +179,130 @@ function VideoCall() {
|
|
|
177
179
|
|
|
178
180
|
{/* Props Documentation */}
|
|
179
181
|
<div className="!space-y-8">
|
|
180
|
-
<h2 className="text-center text-3xl font-bold
|
|
182
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
181
183
|
Props & Configuration
|
|
182
184
|
</h2>
|
|
183
185
|
|
|
184
|
-
<div className="overflow-hidden rounded-lg border
|
|
185
|
-
<div className="bg-
|
|
186
|
-
<h3 className="text-xl font-semibold
|
|
186
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
187
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
188
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
189
|
+
Props
|
|
190
|
+
</h3>
|
|
187
191
|
</div>
|
|
188
192
|
<table className="!my-0 w-full">
|
|
189
|
-
<thead className="bg-
|
|
190
|
-
<tr className="border-
|
|
191
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
193
|
+
<thead className="bg-fm-surface-secondary">
|
|
194
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
195
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
192
196
|
Prop
|
|
193
197
|
</th>
|
|
194
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
198
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
195
199
|
Type
|
|
196
200
|
</th>
|
|
197
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
201
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
198
202
|
Default
|
|
199
203
|
</th>
|
|
200
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
204
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
201
205
|
Description
|
|
202
206
|
</th>
|
|
203
207
|
</tr>
|
|
204
208
|
</thead>
|
|
205
209
|
<tbody>
|
|
206
210
|
{" "}
|
|
207
|
-
<tr className="
|
|
208
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
211
|
+
<tr className="bg-fm-surface-secondary!">
|
|
212
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
209
213
|
withAccessibility
|
|
210
214
|
</td>
|
|
211
|
-
<td className="px-6 py-4 text-sm
|
|
215
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
212
216
|
boolean
|
|
213
217
|
</td>
|
|
214
|
-
<td className="px-6 py-4 text-sm
|
|
218
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
215
219
|
true
|
|
216
220
|
</td>
|
|
217
|
-
<td className="px-6 py-4 text-sm
|
|
221
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
218
222
|
Whether to wrap the icon with accessibility feature
|
|
219
223
|
</td>
|
|
220
224
|
</tr>
|
|
221
|
-
<tr className="border-
|
|
222
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
225
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
226
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
223
227
|
height
|
|
224
228
|
</td>
|
|
225
|
-
<td className="px-6 py-4 text-sm
|
|
229
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
226
230
|
number | string
|
|
227
231
|
</td>
|
|
228
|
-
<td className="px-6 py-4 text-sm
|
|
229
|
-
|
|
232
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
233
|
+
24
|
|
234
|
+
</td>
|
|
235
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
230
236
|
Height of the icon in pixels
|
|
231
237
|
</td>
|
|
232
238
|
</tr>
|
|
233
|
-
<tr className="border-
|
|
234
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
239
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
240
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
235
241
|
stroke
|
|
236
242
|
</td>
|
|
237
|
-
<td className="px-6 py-4 text-sm
|
|
243
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
238
244
|
string
|
|
239
245
|
</td>
|
|
240
|
-
<td className="px-6 py-4 text-sm
|
|
246
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
241
247
|
currentColor
|
|
242
248
|
</td>
|
|
243
|
-
<td className="px-6 py-4 text-sm
|
|
249
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
244
250
|
Stroke color of the icon
|
|
245
251
|
</td>
|
|
246
252
|
</tr>
|
|
247
|
-
<tr className="border-
|
|
248
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
253
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
254
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
249
255
|
strokeWidth
|
|
250
256
|
</td>
|
|
251
|
-
<td className="px-6 py-4 text-sm
|
|
257
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
252
258
|
string | number
|
|
253
259
|
</td>
|
|
254
|
-
<td className="px-6 py-4 text-sm
|
|
260
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
255
261
|
1.5
|
|
256
262
|
</td>
|
|
257
|
-
<td className="px-6 py-4 text-sm
|
|
263
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
258
264
|
Width of the stroke
|
|
259
265
|
</td>
|
|
260
266
|
</tr>
|
|
261
|
-
<tr className="border-
|
|
262
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
267
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
268
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
263
269
|
strokeLinecap
|
|
264
270
|
</td>
|
|
265
|
-
<td className="px-6 py-4 text-sm
|
|
271
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
266
272
|
string
|
|
267
273
|
</td>
|
|
268
|
-
<td className="px-6 py-4 text-sm
|
|
274
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
269
275
|
round
|
|
270
276
|
</td>
|
|
271
|
-
<td className="px-6 py-4 text-sm
|
|
277
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
272
278
|
Style of line endings (round for smooth appearance)
|
|
273
279
|
</td>
|
|
274
280
|
</tr>
|
|
275
|
-
<tr className="border-
|
|
276
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
281
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
282
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
277
283
|
className
|
|
278
284
|
</td>
|
|
279
|
-
<td className="px-6 py-4 text-sm
|
|
285
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
280
286
|
string
|
|
281
287
|
</td>
|
|
282
|
-
<td className="px-6 py-4 text-sm
|
|
283
|
-
|
|
288
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
289
|
+
-
|
|
290
|
+
</td>
|
|
291
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
284
292
|
CSS classes for styling (use for overrides)
|
|
285
293
|
</td>
|
|
286
294
|
</tr>
|
|
287
|
-
<tr className="
|
|
288
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
295
|
+
<tr className="bg-fm-surface-secondary!">
|
|
296
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
289
297
|
...svgProps
|
|
290
298
|
</td>
|
|
291
|
-
<td className="px-6 py-4 text-sm
|
|
299
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
292
300
|
SVGProps
|
|
293
301
|
</td>
|
|
294
|
-
<td className="px-6 py-4 text-sm
|
|
295
|
-
|
|
302
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
303
|
+
-
|
|
304
|
+
</td>
|
|
305
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
296
306
|
All standard SVG element props
|
|
297
307
|
</td>
|
|
298
308
|
</tr>
|
|
@@ -303,50 +313,62 @@ function VideoCall() {
|
|
|
303
313
|
|
|
304
314
|
{/* Size Variations */}
|
|
305
315
|
<div className="!space-y-8">
|
|
306
|
-
<h2 className="text-center text-3xl font-bold
|
|
316
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
307
317
|
Size Variations
|
|
308
318
|
</h2>
|
|
309
|
-
<div className="rounded-lg border
|
|
319
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
310
320
|
<div className="!space-y-6">
|
|
311
321
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
312
322
|
<div className="!space-y-4">
|
|
313
|
-
<h3 className="text-lg font-semibold
|
|
323
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
314
324
|
Standard Sizes
|
|
315
325
|
</h3>
|
|
316
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
326
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
317
327
|
<div className="text-center">
|
|
318
|
-
<CameraIcon className="!mx-auto mb-2 h-3 w-3
|
|
319
|
-
<span className="text-
|
|
328
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
329
|
+
<span className="text-fm-tertiary text-xs">
|
|
330
|
+
12px
|
|
331
|
+
</span>
|
|
320
332
|
</div>
|
|
321
333
|
<div className="text-center">
|
|
322
|
-
<CameraIcon className="!mx-auto mb-2 h-4 w-4
|
|
323
|
-
<span className="text-
|
|
334
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
335
|
+
<span className="text-fm-tertiary text-xs">
|
|
336
|
+
16px
|
|
337
|
+
</span>
|
|
324
338
|
</div>
|
|
325
339
|
<div className="text-center">
|
|
326
|
-
<CameraIcon className="!mx-auto mb-2 h-5 w-5
|
|
327
|
-
<span className="text-
|
|
340
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
341
|
+
<span className="text-fm-tertiary text-xs">
|
|
342
|
+
20px
|
|
343
|
+
</span>
|
|
328
344
|
</div>
|
|
329
345
|
<div className="text-center">
|
|
330
|
-
<CameraIcon className="!mx-auto mb-2 h-6 w-6
|
|
331
|
-
<span className="text-
|
|
346
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
347
|
+
<span className="text-fm-tertiary text-xs">
|
|
348
|
+
24px
|
|
349
|
+
</span>
|
|
332
350
|
</div>
|
|
333
351
|
<div className="text-center">
|
|
334
|
-
<CameraIcon className="!mx-auto mb-2 h-8 w-8
|
|
335
|
-
<span className="text-
|
|
352
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
353
|
+
<span className="text-fm-tertiary text-xs">
|
|
354
|
+
32px
|
|
355
|
+
</span>
|
|
336
356
|
</div>
|
|
337
357
|
<div className="text-center">
|
|
338
|
-
<CameraIcon className="!mx-auto mb-2 h-12 w-12
|
|
339
|
-
<span className="text-
|
|
358
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
359
|
+
<span className="text-fm-tertiary text-xs">
|
|
360
|
+
48px
|
|
361
|
+
</span>
|
|
340
362
|
</div>
|
|
341
363
|
</div>
|
|
342
364
|
</div>
|
|
343
365
|
|
|
344
366
|
<div className="!space-y-4">
|
|
345
|
-
<h3 className="text-lg font-semibold
|
|
367
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
346
368
|
Code Example
|
|
347
369
|
</h3>
|
|
348
|
-
<div className="rounded-lg
|
|
349
|
-
<pre className="overflow-x-auto text-sm
|
|
370
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
371
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
350
372
|
{`// Small (16px) - compact controls
|
|
351
373
|
<CameraIcon className="h-4 w-4" />
|
|
352
374
|
|
|
@@ -368,56 +390,56 @@ function VideoCall() {
|
|
|
368
390
|
|
|
369
391
|
{/* Color Variations */}
|
|
370
392
|
<div className="!space-y-8">
|
|
371
|
-
<h2 className="text-center text-3xl font-bold
|
|
393
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
372
394
|
Color Variations
|
|
373
395
|
</h2>
|
|
374
396
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
375
397
|
<div className="!space-y-4">
|
|
376
|
-
<h3 className="text-lg font-semibold
|
|
398
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
377
399
|
Semantic Colors
|
|
378
400
|
</h3>
|
|
379
|
-
<div className="!space-y-4 rounded-lg border
|
|
401
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
380
402
|
<div className="flex items-center gap-4">
|
|
381
|
-
<CameraIcon className="h-6 w-6
|
|
403
|
+
<CameraIcon className="text-fm-icon-info h-6 w-6" />
|
|
382
404
|
<div>
|
|
383
|
-
<div className="text-sm font-medium
|
|
405
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
384
406
|
Video Call
|
|
385
407
|
</div>
|
|
386
|
-
<div className="text-
|
|
387
|
-
text-
|
|
408
|
+
<div className="text-fm-tertiary text-xs">
|
|
409
|
+
text-fm-icon-info
|
|
388
410
|
</div>
|
|
389
411
|
</div>
|
|
390
412
|
</div>
|
|
391
413
|
<div className="flex items-center gap-4">
|
|
392
|
-
<CameraIcon className="h-6 w-6
|
|
414
|
+
<CameraIcon className="text-fm-icon-info h-6 w-6" />
|
|
393
415
|
<div>
|
|
394
|
-
<div className="text-sm font-medium
|
|
416
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
395
417
|
Live Stream
|
|
396
418
|
</div>
|
|
397
|
-
<div className="text-
|
|
398
|
-
text-
|
|
419
|
+
<div className="text-fm-tertiary text-xs">
|
|
420
|
+
text-fm-icon-info
|
|
399
421
|
</div>
|
|
400
422
|
</div>
|
|
401
423
|
</div>
|
|
402
424
|
<div className="flex items-center gap-4">
|
|
403
|
-
<CameraIcon className="h-6 w-6
|
|
425
|
+
<CameraIcon className="text-fm-icon-positive h-6 w-6" />
|
|
404
426
|
<div>
|
|
405
|
-
<div className="text-sm font-medium
|
|
427
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
406
428
|
Recording Active
|
|
407
429
|
</div>
|
|
408
|
-
<div className="text-
|
|
409
|
-
text-
|
|
430
|
+
<div className="text-fm-tertiary text-xs">
|
|
431
|
+
text-fm-icon-positive
|
|
410
432
|
</div>
|
|
411
433
|
</div>
|
|
412
434
|
</div>
|
|
413
435
|
<div className="flex items-center gap-4">
|
|
414
|
-
<CameraIcon className="h-6 w-6
|
|
436
|
+
<CameraIcon className="text-fm-icon-negative h-6 w-6" />
|
|
415
437
|
<div>
|
|
416
|
-
<div className="text-sm font-medium
|
|
438
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
417
439
|
Camera Off
|
|
418
440
|
</div>
|
|
419
|
-
<div className="text-
|
|
420
|
-
text-
|
|
441
|
+
<div className="text-fm-tertiary text-xs">
|
|
442
|
+
text-fm-icon-negative
|
|
421
443
|
</div>
|
|
422
444
|
</div>
|
|
423
445
|
</div>
|
|
@@ -425,11 +447,11 @@ function VideoCall() {
|
|
|
425
447
|
</div>
|
|
426
448
|
|
|
427
449
|
<div className="!space-y-4">
|
|
428
|
-
<h3 className="text-lg font-semibold
|
|
450
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
429
451
|
Custom Colors
|
|
430
452
|
</h3>
|
|
431
|
-
<div className="rounded-lg
|
|
432
|
-
<pre className="overflow-x-auto text-sm
|
|
453
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
454
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
433
455
|
{`// Using Tailwind classes
|
|
434
456
|
<CameraIcon className="h-6 w-6 text-indigo-400" />
|
|
435
457
|
<CameraIcon className="h-6 w-6 text-blue-500" />
|
|
@@ -454,63 +476,63 @@ function VideoCall() {
|
|
|
454
476
|
|
|
455
477
|
{/* Usage Examples */}
|
|
456
478
|
<div className="!space-y-8">
|
|
457
|
-
<h2 className="text-center text-3xl font-bold
|
|
479
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
458
480
|
Usage Examples
|
|
459
481
|
</h2>
|
|
460
482
|
|
|
461
483
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
462
484
|
{/* Video Call Interface */}
|
|
463
485
|
<div className="!space-y-4">
|
|
464
|
-
<h3 className="text-lg font-semibold
|
|
486
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
465
487
|
Video Call Interface
|
|
466
488
|
</h3>
|
|
467
489
|
<div className="!space-y-4">
|
|
468
|
-
<div className="rounded-lg border
|
|
469
|
-
<div className="relative mb-4 aspect-video overflow-hidden rounded-lg bg-
|
|
470
|
-
<div className="absolute inset-4 rounded-lg border
|
|
490
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
491
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary relative mb-4 aspect-video overflow-hidden rounded-lg bg-linear-to-br">
|
|
492
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary absolute inset-4 rounded-lg border">
|
|
471
493
|
<div className="absolute top-4 left-4 flex items-center gap-2">
|
|
472
|
-
<div className="h-3 w-3 animate-pulse rounded-full
|
|
473
|
-
<span className="text-
|
|
494
|
+
<div className="bg-fm-icon-positive h-3 w-3 animate-pulse rounded-full"></div>
|
|
495
|
+
<span className="text-fm-tertiary text-xs">
|
|
474
496
|
Live
|
|
475
497
|
</span>
|
|
476
498
|
</div>
|
|
477
499
|
<div className="absolute inset-0 flex items-center justify-center">
|
|
478
|
-
<div className="flex h-16 w-16 items-center justify-center rounded-full
|
|
500
|
+
<div className="bg-fm-surface-secondary flex h-16 w-16 items-center justify-center rounded-full">
|
|
479
501
|
<span className="text-2xl">👤</span>
|
|
480
502
|
</div>
|
|
481
503
|
</div>
|
|
482
504
|
</div>
|
|
483
505
|
<div className="absolute bottom-4 left-1/2 -translate-x-1/2">
|
|
484
|
-
<div className="flex items-center gap-3 rounded-lg
|
|
485
|
-
<button className="
|
|
486
|
-
<CameraIcon className="h-5 w-5
|
|
506
|
+
<div className="bg-fm-surface-secondary flex items-center gap-3 rounded-lg p-3">
|
|
507
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 hover:bg-fm-icon-info/30 rounded-lg border p-2 transition-colors">
|
|
508
|
+
<CameraIcon className="text-fm-icon-info h-5 w-5" />
|
|
487
509
|
</button>
|
|
488
|
-
<button className="
|
|
510
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary hover:bg-fm-divider-primary rounded-lg border p-2 transition-colors">
|
|
489
511
|
<div className="relative h-5 w-5">
|
|
490
|
-
<div className="absolute inset-0 rounded-full
|
|
491
|
-
<div className="absolute top-1 left-1 h-3 w-3 rounded-full
|
|
512
|
+
<div className="bg-fm-surface-contrast absolute inset-0 rounded-full"></div>
|
|
513
|
+
<div className="bg-fm-surface-secondary absolute top-1 left-1 h-3 w-3 rounded-full"></div>
|
|
492
514
|
</div>
|
|
493
515
|
</button>
|
|
494
|
-
<button className="
|
|
516
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 hover:bg-fm-icon-negative/30 rounded-lg border p-2 transition-colors">
|
|
495
517
|
<div className="relative h-5 w-5">
|
|
496
|
-
<div className="absolute inset-0 rotate-45 border-2
|
|
497
|
-
<div className="absolute inset-0 -rotate-45 border-2
|
|
518
|
+
<div className="border-fm-icon-negative absolute inset-0 rotate-45 border-2"></div>
|
|
519
|
+
<div className="border-fm-icon-negative absolute inset-0 -rotate-45 border-2"></div>
|
|
498
520
|
</div>
|
|
499
521
|
</button>
|
|
500
522
|
</div>
|
|
501
523
|
</div>
|
|
502
524
|
</div>
|
|
503
525
|
<div className="text-center">
|
|
504
|
-
<div className="text-sm font-medium
|
|
526
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
505
527
|
"Team Standup Meeting"
|
|
506
528
|
</div>
|
|
507
|
-
<div className="text-
|
|
529
|
+
<div className="text-fm-tertiary text-xs">
|
|
508
530
|
Camera enabled for video call
|
|
509
531
|
</div>
|
|
510
532
|
</div>
|
|
511
533
|
</div>
|
|
512
|
-
<div className="rounded-lg
|
|
513
|
-
<pre className="overflow-x-auto text-sm
|
|
534
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
535
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
514
536
|
{`// Video call interface with camera controls
|
|
515
537
|
<div className="video-call-interface">
|
|
516
538
|
<div className="video-container">
|
|
@@ -539,64 +561,68 @@ function VideoCall() {
|
|
|
539
561
|
|
|
540
562
|
{/* Streaming Dashboard */}
|
|
541
563
|
<div className="!space-y-4">
|
|
542
|
-
<h3 className="text-lg font-semibold
|
|
564
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
543
565
|
Live Streaming Dashboard
|
|
544
566
|
</h3>
|
|
545
567
|
<div className="!space-y-4">
|
|
546
|
-
<div className="rounded-lg border
|
|
547
|
-
<div className="overflow-hidden rounded-lg border
|
|
548
|
-
<div className="flex items-center justify-between border-b
|
|
568
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
569
|
+
<div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
570
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between border-b p-4">
|
|
549
571
|
<div className="flex items-center gap-3">
|
|
550
572
|
<div className="flex items-center gap-2">
|
|
551
|
-
<div className="h-3 w-3 animate-pulse rounded-full
|
|
552
|
-
<span className="text-
|
|
573
|
+
<div className="bg-fm-icon-negative h-3 w-3 animate-pulse rounded-full"></div>
|
|
574
|
+
<span className="text-fm-icon-active text-sm">
|
|
575
|
+
LIVE
|
|
576
|
+
</span>
|
|
553
577
|
</div>
|
|
554
|
-
<span className="text-
|
|
555
|
-
|
|
578
|
+
<span className="text-fm-tertiary text-sm">
|
|
579
|
+
•
|
|
580
|
+
</span>
|
|
581
|
+
<span className="text-fm-tertiary text-sm">
|
|
556
582
|
1,247 viewers
|
|
557
583
|
</span>
|
|
558
584
|
</div>
|
|
559
585
|
<div className="flex items-center gap-2">
|
|
560
|
-
<button className="
|
|
561
|
-
<CameraIcon className="h-4 w-4
|
|
586
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 hover:bg-fm-icon-info/30 rounded border p-2 transition-colors">
|
|
587
|
+
<CameraIcon className="text-fm-icon-info h-4 w-4" />
|
|
562
588
|
</button>
|
|
563
|
-
<button className="
|
|
589
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary hover:bg-fm-divider-primary rounded border p-2 transition-colors">
|
|
564
590
|
<span className="text-xs">⚙️</span>
|
|
565
591
|
</button>
|
|
566
592
|
</div>
|
|
567
593
|
</div>
|
|
568
594
|
<div className="p-6">
|
|
569
595
|
<div className="mb-4 grid grid-cols-2 gap-4">
|
|
570
|
-
<div className="rounded-lg
|
|
571
|
-
<div className="text-lg font-bold
|
|
596
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4 text-center">
|
|
597
|
+
<div className="text-fm-icon-positive text-lg font-bold">
|
|
572
598
|
1080p
|
|
573
599
|
</div>
|
|
574
|
-
<div className="text-
|
|
600
|
+
<div className="text-fm-tertiary text-xs">
|
|
575
601
|
Video Quality
|
|
576
602
|
</div>
|
|
577
603
|
</div>
|
|
578
|
-
<div className="rounded-lg
|
|
579
|
-
<div className="text-lg font-bold
|
|
604
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4 text-center">
|
|
605
|
+
<div className="text-fm-icon-info text-lg font-bold">
|
|
580
606
|
60fps
|
|
581
607
|
</div>
|
|
582
|
-
<div className="text-
|
|
608
|
+
<div className="text-fm-tertiary text-xs">
|
|
583
609
|
Frame Rate
|
|
584
610
|
</div>
|
|
585
611
|
</div>
|
|
586
612
|
</div>
|
|
587
613
|
<div className="text-center">
|
|
588
|
-
<div className="text-sm font-medium
|
|
614
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
589
615
|
Stream Status: Active
|
|
590
616
|
</div>
|
|
591
|
-
<div className="text-
|
|
617
|
+
<div className="text-fm-tertiary text-xs">
|
|
592
618
|
Camera feed broadcasting
|
|
593
619
|
</div>
|
|
594
620
|
</div>
|
|
595
621
|
</div>
|
|
596
622
|
</div>
|
|
597
623
|
</div>
|
|
598
|
-
<div className="rounded-lg
|
|
599
|
-
<pre className="overflow-x-auto text-sm
|
|
624
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
625
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
600
626
|
{`// Live streaming dashboard
|
|
601
627
|
<div className="streaming-dashboard">
|
|
602
628
|
<div className="stream-header">
|
|
@@ -628,73 +654,73 @@ function VideoCall() {
|
|
|
628
654
|
|
|
629
655
|
{/* Content Creation Studio */}
|
|
630
656
|
<div className="!space-y-4">
|
|
631
|
-
<h3 className="text-lg font-semibold
|
|
657
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
632
658
|
Content Creation Studio
|
|
633
659
|
</h3>
|
|
634
660
|
<div className="!space-y-4">
|
|
635
|
-
<div className="rounded-lg border
|
|
636
|
-
<div className="rounded-lg border
|
|
661
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
662
|
+
<div className="border-fm-divider-primary bg-fm-surface-secondary rounded-lg border p-6">
|
|
637
663
|
<div className="mb-6 flex items-start justify-between">
|
|
638
664
|
<div>
|
|
639
|
-
<h4 className="text-lg font-semibold
|
|
665
|
+
<h4 className="text-fm-icon-active text-lg font-semibold">
|
|
640
666
|
Recording Studio
|
|
641
667
|
</h4>
|
|
642
|
-
<p className="text-
|
|
668
|
+
<p className="text-fm-tertiary text-sm">
|
|
643
669
|
Professional video production
|
|
644
670
|
</p>
|
|
645
671
|
</div>
|
|
646
672
|
<div className="flex items-center gap-2">
|
|
647
|
-
<span className="
|
|
673
|
+
<span className="border-fm-icon-negative/30 bg-fm-icon-negative/20 text-fm-icon-negative rounded border px-2 py-1 text-xs">
|
|
648
674
|
REC
|
|
649
675
|
</span>
|
|
650
676
|
</div>
|
|
651
677
|
</div>
|
|
652
678
|
<div className="mb-6 grid grid-cols-3 gap-4">
|
|
653
|
-
<div className="rounded-lg
|
|
654
|
-
<CameraIcon className="mx-auto mb-2 h-8 w-8
|
|
655
|
-
<div className="text-sm font-medium
|
|
679
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4 text-center">
|
|
680
|
+
<CameraIcon className="text-fm-icon-info mx-auto mb-2 h-8 w-8" />
|
|
681
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
656
682
|
Main Camera
|
|
657
683
|
</div>
|
|
658
|
-
<div className="text-
|
|
684
|
+
<div className="text-fm-icon-positive text-xs">
|
|
659
685
|
Active
|
|
660
686
|
</div>
|
|
661
687
|
</div>
|
|
662
|
-
<div className="rounded-lg
|
|
663
|
-
<CameraIcon className="mx-auto mb-2 h-8 w-8
|
|
664
|
-
<div className="text-sm font-medium
|
|
688
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4 text-center">
|
|
689
|
+
<CameraIcon className="text-fm-placeholder mx-auto mb-2 h-8 w-8" />
|
|
690
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
665
691
|
Side Angle
|
|
666
692
|
</div>
|
|
667
|
-
<div className="text-
|
|
693
|
+
<div className="text-fm-placeholder text-xs">
|
|
668
694
|
Standby
|
|
669
695
|
</div>
|
|
670
696
|
</div>
|
|
671
|
-
<div className="rounded-lg
|
|
672
|
-
<CameraIcon className="mx-auto mb-2 h-8 w-8
|
|
673
|
-
<div className="text-sm font-medium
|
|
697
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4 text-center">
|
|
698
|
+
<CameraIcon className="text-fm-placeholder mx-auto mb-2 h-8 w-8" />
|
|
699
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
674
700
|
Overhead
|
|
675
701
|
</div>
|
|
676
|
-
<div className="text-
|
|
702
|
+
<div className="text-fm-placeholder text-xs">
|
|
677
703
|
Standby
|
|
678
704
|
</div>
|
|
679
705
|
</div>
|
|
680
706
|
</div>
|
|
681
707
|
<div className="flex items-center justify-between">
|
|
682
708
|
<div className="flex items-center gap-3">
|
|
683
|
-
<button className="
|
|
709
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 text-fm-icon-negative hover:bg-fm-icon-negative/30 rounded border px-4 py-2 transition-colors">
|
|
684
710
|
Stop Recording
|
|
685
711
|
</button>
|
|
686
|
-
<button className="
|
|
712
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary text-fm-icon-active hover:bg-fm-divider-primary rounded border px-4 py-2 transition-colors">
|
|
687
713
|
Pause
|
|
688
714
|
</button>
|
|
689
715
|
</div>
|
|
690
|
-
<div className="text-
|
|
716
|
+
<div className="text-fm-tertiary text-sm">
|
|
691
717
|
Recording: 12:34
|
|
692
718
|
</div>
|
|
693
719
|
</div>
|
|
694
720
|
</div>
|
|
695
721
|
</div>
|
|
696
|
-
<div className="rounded-lg
|
|
697
|
-
<pre className="overflow-x-auto text-sm
|
|
722
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
723
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
698
724
|
{`// Multi-camera content creation studio
|
|
699
725
|
<div className="recording-studio">
|
|
700
726
|
<div className="studio-header">
|
|
@@ -727,72 +753,72 @@ function VideoCall() {
|
|
|
727
753
|
|
|
728
754
|
{/* Security Camera System */}
|
|
729
755
|
<div className="!space-y-4">
|
|
730
|
-
<h3 className="text-lg font-semibold
|
|
756
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
731
757
|
Security Camera System
|
|
732
758
|
</h3>
|
|
733
759
|
<div className="!space-y-4">
|
|
734
|
-
<div className="rounded-lg border
|
|
735
|
-
<div className="rounded-lg
|
|
760
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
761
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
736
762
|
<div className="mb-4 flex items-center justify-between">
|
|
737
|
-
<h4 className="text-sm font-semibold
|
|
763
|
+
<h4 className="text-fm-icon-active text-sm font-semibold">
|
|
738
764
|
Security Monitor
|
|
739
765
|
</h4>
|
|
740
766
|
<div className="flex items-center gap-2">
|
|
741
|
-
<div className="h-2 w-2 animate-pulse rounded-full
|
|
742
|
-
<span className="text-
|
|
767
|
+
<div className="bg-fm-icon-positive h-2 w-2 animate-pulse rounded-full"></div>
|
|
768
|
+
<span className="text-fm-tertiary text-xs">
|
|
743
769
|
All systems operational
|
|
744
770
|
</span>
|
|
745
771
|
</div>
|
|
746
772
|
</div>
|
|
747
773
|
<div className="grid grid-cols-2 gap-3">
|
|
748
|
-
<div className="
|
|
774
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
749
775
|
<div className="mb-2 flex items-center justify-between">
|
|
750
|
-
<span className="text-
|
|
776
|
+
<span className="text-fm-tertiary text-xs">
|
|
751
777
|
Camera 01
|
|
752
778
|
</span>
|
|
753
|
-
<CameraIcon className="h-3 w-3
|
|
779
|
+
<CameraIcon className="text-fm-icon-positive h-3 w-3" />
|
|
754
780
|
</div>
|
|
755
|
-
<div className="flex aspect-video items-center justify-center rounded-sm
|
|
756
|
-
<span className="text-
|
|
781
|
+
<div className="bg-fm-surface-secondary flex aspect-video items-center justify-center rounded-sm">
|
|
782
|
+
<span className="text-fm-placeholder text-xs">
|
|
757
783
|
Front Entrance
|
|
758
784
|
</span>
|
|
759
785
|
</div>
|
|
760
786
|
</div>
|
|
761
|
-
<div className="
|
|
787
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
762
788
|
<div className="mb-2 flex items-center justify-between">
|
|
763
|
-
<span className="text-
|
|
789
|
+
<span className="text-fm-tertiary text-xs">
|
|
764
790
|
Camera 02
|
|
765
791
|
</span>
|
|
766
|
-
<CameraIcon className="h-3 w-3
|
|
792
|
+
<CameraIcon className="text-fm-icon-positive h-3 w-3" />
|
|
767
793
|
</div>
|
|
768
|
-
<div className="flex aspect-video items-center justify-center rounded-sm
|
|
769
|
-
<span className="text-
|
|
794
|
+
<div className="bg-fm-surface-secondary flex aspect-video items-center justify-center rounded-sm">
|
|
795
|
+
<span className="text-fm-placeholder text-xs">
|
|
770
796
|
Parking Lot
|
|
771
797
|
</span>
|
|
772
798
|
</div>
|
|
773
799
|
</div>
|
|
774
|
-
<div className="
|
|
800
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
775
801
|
<div className="mb-2 flex items-center justify-between">
|
|
776
|
-
<span className="text-
|
|
802
|
+
<span className="text-fm-tertiary text-xs">
|
|
777
803
|
Camera 03
|
|
778
804
|
</span>
|
|
779
|
-
<CameraIcon className="h-3 w-3
|
|
805
|
+
<CameraIcon className="text-fm-icon-negative h-3 w-3" />
|
|
780
806
|
</div>
|
|
781
|
-
<div className="flex aspect-video items-center justify-center rounded-sm
|
|
782
|
-
<span className="text-
|
|
807
|
+
<div className="bg-fm-surface-secondary flex aspect-video items-center justify-center rounded-sm">
|
|
808
|
+
<span className="text-fm-icon-negative text-xs">
|
|
783
809
|
Offline
|
|
784
810
|
</span>
|
|
785
811
|
</div>
|
|
786
812
|
</div>
|
|
787
|
-
<div className="
|
|
813
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded border p-3">
|
|
788
814
|
<div className="mb-2 flex items-center justify-between">
|
|
789
|
-
<span className="text-
|
|
815
|
+
<span className="text-fm-tertiary text-xs">
|
|
790
816
|
Camera 04
|
|
791
817
|
</span>
|
|
792
|
-
<CameraIcon className="h-3 w-3
|
|
818
|
+
<CameraIcon className="text-fm-icon-positive h-3 w-3" />
|
|
793
819
|
</div>
|
|
794
|
-
<div className="flex aspect-video items-center justify-center rounded-sm
|
|
795
|
-
<span className="text-
|
|
820
|
+
<div className="bg-fm-surface-secondary flex aspect-video items-center justify-center rounded-sm">
|
|
821
|
+
<span className="text-fm-placeholder text-xs">
|
|
796
822
|
Back Exit
|
|
797
823
|
</span>
|
|
798
824
|
</div>
|
|
@@ -800,8 +826,8 @@ function VideoCall() {
|
|
|
800
826
|
</div>
|
|
801
827
|
</div>
|
|
802
828
|
</div>
|
|
803
|
-
<div className="rounded-lg
|
|
804
|
-
<pre className="overflow-x-auto text-sm
|
|
829
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
830
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
805
831
|
{`// Security camera monitoring system
|
|
806
832
|
<div className="security-monitor">
|
|
807
833
|
<div className="monitor-header">
|
|
@@ -838,66 +864,66 @@ function VideoCall() {
|
|
|
838
864
|
|
|
839
865
|
{/* Accessibility */}
|
|
840
866
|
<div className="!space-y-8">
|
|
841
|
-
<h2 className="text-center text-3xl font-bold
|
|
867
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
842
868
|
Accessibility Features
|
|
843
869
|
</h2>
|
|
844
870
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
845
|
-
<div className="!space-y-4 rounded-lg border
|
|
846
|
-
<h3 className="text-lg font-semibold
|
|
871
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
872
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
847
873
|
✅ Built-in Features
|
|
848
874
|
</h3>
|
|
849
|
-
<ul className="!space-y-2 text-sm
|
|
850
|
-
<li className="
|
|
875
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
876
|
+
<li className="text-fm-secondary!">
|
|
851
877
|
Uses Radix UI AccessibleIcon wrapper
|
|
852
878
|
</li>
|
|
853
|
-
<li className="
|
|
879
|
+
<li className="text-fm-secondary!">
|
|
854
880
|
Provides screen reader label "Camera icon"
|
|
855
881
|
</li>
|
|
856
|
-
<li className="
|
|
882
|
+
<li className="text-fm-secondary!">
|
|
857
883
|
Supports keyboard navigation when interactive
|
|
858
884
|
</li>
|
|
859
|
-
<li className="
|
|
885
|
+
<li className="text-fm-secondary!">
|
|
860
886
|
Maintains proper color contrast ratios
|
|
861
887
|
</li>
|
|
862
|
-
<li className="
|
|
888
|
+
<li className="text-fm-secondary!">
|
|
863
889
|
Uses round strokeLinecap for smooth visual appearance
|
|
864
890
|
</li>
|
|
865
891
|
</ul>
|
|
866
892
|
</div>
|
|
867
893
|
|
|
868
|
-
<div className="!space-y-4 rounded-lg border
|
|
869
|
-
<h3 className="text-lg font-semibold
|
|
894
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
895
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
870
896
|
💡 Best Practices
|
|
871
897
|
</h3>
|
|
872
|
-
<ul className="!space-y-2 text-sm
|
|
873
|
-
<li className="
|
|
898
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
899
|
+
<li className="text-fm-secondary!">
|
|
874
900
|
Always provide descriptive aria-labels for camera
|
|
875
901
|
controls
|
|
876
902
|
</li>
|
|
877
|
-
<li className="
|
|
903
|
+
<li className="text-fm-secondary!">
|
|
878
904
|
Use color coding to indicate camera status (green=on,
|
|
879
905
|
red=off)
|
|
880
906
|
</li>
|
|
881
|
-
<li className="
|
|
907
|
+
<li className="text-fm-secondary!">
|
|
882
908
|
Ensure sufficient touch target size (44px minimum)
|
|
883
909
|
</li>
|
|
884
|
-
<li className="
|
|
910
|
+
<li className="text-fm-secondary!">
|
|
885
911
|
Provide visual feedback for camera state changes
|
|
886
912
|
</li>
|
|
887
|
-
<li className="
|
|
913
|
+
<li className="text-fm-secondary!">
|
|
888
914
|
Consider privacy notifications when camera is active
|
|
889
915
|
</li>
|
|
890
916
|
</ul>
|
|
891
917
|
</div>
|
|
892
918
|
</div>
|
|
893
919
|
|
|
894
|
-
<div className="rounded-lg border
|
|
895
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
920
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
921
|
+
<h3 className="text-fm-icon-info! mb-4 text-lg font-semibold">
|
|
896
922
|
Proper ARIA Implementation
|
|
897
923
|
</h3>
|
|
898
924
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
899
|
-
<div className="rounded-lg
|
|
900
|
-
<pre className="overflow-x-auto text-sm
|
|
925
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
926
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
901
927
|
{`// Video call camera toggle
|
|
902
928
|
<button
|
|
903
929
|
aria-label={cameraEnabled ? 'Turn off camera' : 'Turn on camera'}
|
|
@@ -949,13 +975,13 @@ function VideoCall() {
|
|
|
949
975
|
</pre>
|
|
950
976
|
</div>
|
|
951
977
|
<div className="!space-y-4">
|
|
952
|
-
<p className="text-
|
|
978
|
+
<p className="text-fm-secondary! text-sm">
|
|
953
979
|
When using CameraIcon for video controls, always provide
|
|
954
980
|
clear context about the camera's current state and what
|
|
955
981
|
action the control will perform.
|
|
956
982
|
</p>
|
|
957
|
-
<div className="
|
|
958
|
-
<div className="flex items-center gap-2 text-sm
|
|
983
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
984
|
+
<div className="text-fm-icon-info flex items-center gap-2 text-sm">
|
|
959
985
|
<CameraIcon className="h-4 w-4" />
|
|
960
986
|
<span>
|
|
961
987
|
Consider privacy indicators when camera is active
|
|
@@ -969,52 +995,56 @@ function VideoCall() {
|
|
|
969
995
|
|
|
970
996
|
{/* Related Icons */}
|
|
971
997
|
<div className="!space-y-8">
|
|
972
|
-
<h2 className="text-center text-3xl font-bold
|
|
998
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
973
999
|
Related Icons
|
|
974
1000
|
</h2>
|
|
975
1001
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
976
|
-
<div className="!space-y-3 rounded-lg border
|
|
977
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
978
|
-
<span className="
|
|
1002
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1003
|
+
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1004
|
+
<span className="text-fm-icon-active! !text-2xl">🎙️</span>
|
|
979
1005
|
</div>
|
|
980
1006
|
<div>
|
|
981
|
-
<div className="font-medium
|
|
1007
|
+
<div className="text-fm-icon-active font-medium">
|
|
982
1008
|
MicrophoneIcon
|
|
983
1009
|
</div>
|
|
984
|
-
<div className="text-
|
|
1010
|
+
<div className="text-fm-tertiary text-xs">
|
|
985
1011
|
Audio recording
|
|
986
1012
|
</div>
|
|
987
1013
|
</div>
|
|
988
1014
|
</div>
|
|
989
|
-
<div className="!space-y-3 rounded-lg border
|
|
990
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
991
|
-
<span className="
|
|
1015
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1016
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1017
|
+
<span className="text-fm-icon-active! !text-2xl">⏺️</span>
|
|
992
1018
|
</div>
|
|
993
1019
|
<div>
|
|
994
|
-
<div className="font-medium
|
|
995
|
-
|
|
1020
|
+
<div className="text-fm-icon-active font-medium">
|
|
1021
|
+
RecordIcon
|
|
1022
|
+
</div>
|
|
1023
|
+
<div className="text-fm-tertiary text-xs">
|
|
996
1024
|
Start recording
|
|
997
1025
|
</div>
|
|
998
1026
|
</div>
|
|
999
1027
|
</div>
|
|
1000
|
-
<div className="!space-y-3 rounded-lg border
|
|
1001
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
1002
|
-
<span className="
|
|
1028
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1029
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1030
|
+
<span className="text-fm-icon-active! !text-2xl">📹</span>
|
|
1003
1031
|
</div>
|
|
1004
1032
|
<div>
|
|
1005
|
-
<div className="font-medium
|
|
1006
|
-
|
|
1033
|
+
<div className="text-fm-icon-active font-medium">
|
|
1034
|
+
VideoIcon
|
|
1035
|
+
</div>
|
|
1036
|
+
<div className="text-fm-tertiary text-xs">Video file</div>
|
|
1007
1037
|
</div>
|
|
1008
1038
|
</div>
|
|
1009
|
-
<div className="!space-y-3 rounded-lg border
|
|
1010
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
1011
|
-
<span className="
|
|
1039
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1040
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1041
|
+
<span className="text-fm-icon-active! !text-2xl">📡</span>
|
|
1012
1042
|
</div>
|
|
1013
1043
|
<div>
|
|
1014
|
-
<div className="font-medium
|
|
1044
|
+
<div className="text-fm-icon-active font-medium">
|
|
1015
1045
|
BroadcastIcon
|
|
1016
1046
|
</div>
|
|
1017
|
-
<div className="text-
|
|
1047
|
+
<div className="text-fm-tertiary text-xs">
|
|
1018
1048
|
Live streaming
|
|
1019
1049
|
</div>
|
|
1020
1050
|
</div>
|
|
@@ -1024,14 +1054,14 @@ function VideoCall() {
|
|
|
1024
1054
|
</div>
|
|
1025
1055
|
|
|
1026
1056
|
{/* Footer */}
|
|
1027
|
-
<div className="border-
|
|
1057
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
1028
1058
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
1029
1059
|
<div className="!space-y-4 text-center">
|
|
1030
|
-
<p className="
|
|
1060
|
+
<p className="text-fm-tertiary!">
|
|
1031
1061
|
CameraIcon is part of the Aural UI icon library, built with
|
|
1032
1062
|
accessibility and video production best practices in mind.
|
|
1033
1063
|
</p>
|
|
1034
|
-
<p className="text-
|
|
1064
|
+
<p className="text-fm-placeholder! text-sm">
|
|
1035
1065
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
1036
1066
|
compatibility and follow WCAG guidelines for media controls
|
|
1037
1067
|
and privacy considerations.
|
|
@@ -1090,20 +1120,20 @@ const storyParameters = {
|
|
|
1090
1120
|
backgrounds: {
|
|
1091
1121
|
default: "dark",
|
|
1092
1122
|
values: [
|
|
1093
|
-
{ name: "dark", value: "
|
|
1094
|
-
{ name: "darker", value: "
|
|
1123
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
1124
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
1095
1125
|
],
|
|
1096
1126
|
},
|
|
1097
1127
|
}
|
|
1098
1128
|
|
|
1099
1129
|
export const Default: Story = {
|
|
1100
1130
|
args: {
|
|
1101
|
-
className: "h-8 w-8 text-
|
|
1131
|
+
className: "h-8 w-8 text-fm-icon-info",
|
|
1102
1132
|
withAccessibility: true,
|
|
1103
1133
|
},
|
|
1104
1134
|
parameters: storyParameters,
|
|
1105
1135
|
render: (args) => (
|
|
1106
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1136
|
+
<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">
|
|
1107
1137
|
<CameraIcon {...args} />
|
|
1108
1138
|
</div>
|
|
1109
1139
|
),
|
|
@@ -1120,30 +1150,30 @@ export const SizeVariations: Story = {
|
|
|
1120
1150
|
},
|
|
1121
1151
|
},
|
|
1122
1152
|
render: () => (
|
|
1123
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
1153
|
+
<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">
|
|
1124
1154
|
<div className="text-center">
|
|
1125
|
-
<CameraIcon className="!mx-auto mb-2 h-3 w-3
|
|
1126
|
-
<span className="text-
|
|
1155
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
1156
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
1127
1157
|
</div>
|
|
1128
1158
|
<div className="text-center">
|
|
1129
|
-
<CameraIcon className="!mx-auto mb-2 h-4 w-4
|
|
1130
|
-
<span className="text-
|
|
1159
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
1160
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
1131
1161
|
</div>
|
|
1132
1162
|
<div className="text-center">
|
|
1133
|
-
<CameraIcon className="!mx-auto mb-2 h-5 w-5
|
|
1134
|
-
<span className="text-
|
|
1163
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
1164
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
1135
1165
|
</div>
|
|
1136
1166
|
<div className="text-center">
|
|
1137
|
-
<CameraIcon className="!mx-auto mb-2 h-6 w-6
|
|
1138
|
-
<span className="text-
|
|
1167
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
1168
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
1139
1169
|
</div>
|
|
1140
1170
|
<div className="text-center">
|
|
1141
|
-
<CameraIcon className="!mx-auto mb-2 h-8 w-8
|
|
1142
|
-
<span className="text-
|
|
1171
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
1172
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
1143
1173
|
</div>
|
|
1144
1174
|
<div className="text-center">
|
|
1145
|
-
<CameraIcon className="!mx-auto mb-2 h-12 w-12
|
|
1146
|
-
<span className="text-
|
|
1175
|
+
<CameraIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
1176
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1147
1177
|
</div>
|
|
1148
1178
|
</div>
|
|
1149
1179
|
),
|
|
@@ -1160,34 +1190,46 @@ export const ColorVariations: Story = {
|
|
|
1160
1190
|
},
|
|
1161
1191
|
},
|
|
1162
1192
|
render: () => (
|
|
1163
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1193
|
+
<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">
|
|
1164
1194
|
<div className="text-center">
|
|
1165
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1166
|
-
<CameraIcon className="h-8 w-8
|
|
1195
|
+
<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">
|
|
1196
|
+
<CameraIcon className="text-fm-icon-info h-8 w-8" />
|
|
1167
1197
|
</div>
|
|
1168
|
-
<div className="text-sm font-medium
|
|
1169
|
-
|
|
1198
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1199
|
+
Video Call
|
|
1200
|
+
</div>
|
|
1201
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
1170
1202
|
</div>
|
|
1171
1203
|
<div className="text-center">
|
|
1172
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1173
|
-
<CameraIcon className="h-8 w-8
|
|
1204
|
+
<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">
|
|
1205
|
+
<CameraIcon className="text-fm-icon-info h-8 w-8" />
|
|
1206
|
+
</div>
|
|
1207
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1208
|
+
Live Stream
|
|
1174
1209
|
</div>
|
|
1175
|
-
<div className="text-
|
|
1176
|
-
<div className="text-xs text-blue-400">text-blue-400</div>
|
|
1210
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
1177
1211
|
</div>
|
|
1178
1212
|
<div className="text-center">
|
|
1179
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1180
|
-
<CameraIcon className="h-8 w-8
|
|
1213
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1214
|
+
<CameraIcon className="text-fm-icon-positive h-8 w-8" />
|
|
1215
|
+
</div>
|
|
1216
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1217
|
+
Recording Active
|
|
1218
|
+
</div>
|
|
1219
|
+
<div className="text-fm-icon-positive text-xs">
|
|
1220
|
+
text-fm-icon-positive
|
|
1181
1221
|
</div>
|
|
1182
|
-
<div className="text-sm font-medium text-white">Recording Active</div>
|
|
1183
|
-
<div className="text-xs text-emerald-400">text-emerald-400</div>
|
|
1184
1222
|
</div>
|
|
1185
1223
|
<div className="text-center">
|
|
1186
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1187
|
-
<CameraIcon className="h-8 w-8
|
|
1224
|
+
<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">
|
|
1225
|
+
<CameraIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1226
|
+
</div>
|
|
1227
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1228
|
+
Camera Off
|
|
1229
|
+
</div>
|
|
1230
|
+
<div className="text-fm-icon-negative text-xs">
|
|
1231
|
+
text-fm-icon-negative
|
|
1188
1232
|
</div>
|
|
1189
|
-
<div className="text-sm font-medium text-white">Camera Off</div>
|
|
1190
|
-
<div className="text-xs text-red-400">text-red-400</div>
|
|
1191
1233
|
</div>
|
|
1192
1234
|
</div>
|
|
1193
1235
|
),
|
|
@@ -1204,25 +1246,27 @@ export const UsageExamples: Story = {
|
|
|
1204
1246
|
},
|
|
1205
1247
|
},
|
|
1206
1248
|
render: () => (
|
|
1207
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1249
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1208
1250
|
{/* Video Call */}
|
|
1209
1251
|
<div className="!space-y-2">
|
|
1210
|
-
<h3 className="text-sm font-medium
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1252
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1253
|
+
Video Call Interface
|
|
1254
|
+
</h3>
|
|
1255
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1256
|
+
<div className="bg-fm-surface-secondary flex items-center gap-3 rounded-lg p-3">
|
|
1257
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 hover:bg-fm-icon-info/30 rounded-lg border p-2 transition-colors">
|
|
1258
|
+
<CameraIcon className="text-fm-icon-info h-5 w-5" />
|
|
1215
1259
|
</button>
|
|
1216
|
-
<button className="
|
|
1260
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary hover:bg-fm-divider-primary rounded-lg border p-2 transition-colors">
|
|
1217
1261
|
<div className="relative h-5 w-5">
|
|
1218
|
-
<div className="absolute inset-0 rounded-full
|
|
1219
|
-
<div className="absolute top-1 left-1 h-3 w-3 rounded-full
|
|
1262
|
+
<div className="bg-fm-surface-contrast absolute inset-0 rounded-full"></div>
|
|
1263
|
+
<div className="bg-fm-surface-secondary absolute top-1 left-1 h-3 w-3 rounded-full"></div>
|
|
1220
1264
|
</div>
|
|
1221
1265
|
</button>
|
|
1222
|
-
<button className="
|
|
1266
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 hover:bg-fm-icon-negative/30 rounded-lg border p-2 transition-colors">
|
|
1223
1267
|
<div className="relative h-5 w-5">
|
|
1224
|
-
<div className="absolute inset-0 rotate-45 border-2
|
|
1225
|
-
<div className="absolute inset-0 -rotate-45 border-2
|
|
1268
|
+
<div className="border-fm-icon-negative absolute inset-0 rotate-45 border-2"></div>
|
|
1269
|
+
<div className="border-fm-icon-negative absolute inset-0 -rotate-45 border-2"></div>
|
|
1226
1270
|
</div>
|
|
1227
1271
|
</button>
|
|
1228
1272
|
</div>
|
|
@@ -1231,19 +1275,19 @@ export const UsageExamples: Story = {
|
|
|
1231
1275
|
|
|
1232
1276
|
{/* Streaming Dashboard */}
|
|
1233
1277
|
<div className="!space-y-2">
|
|
1234
|
-
<h3 className="text-sm font-medium
|
|
1278
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1235
1279
|
Live Streaming Dashboard
|
|
1236
1280
|
</h3>
|
|
1237
|
-
<div className="rounded-lg border
|
|
1238
|
-
<div className="flex items-center justify-between rounded
|
|
1281
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1282
|
+
<div className="bg-fm-surface-secondary flex items-center justify-between rounded p-3">
|
|
1239
1283
|
<div className="flex items-center gap-3">
|
|
1240
|
-
<div className="h-3 w-3 animate-pulse rounded-full
|
|
1241
|
-
<span className="text-
|
|
1242
|
-
<span className="text-
|
|
1284
|
+
<div className="bg-fm-icon-negative h-3 w-3 animate-pulse rounded-full"></div>
|
|
1285
|
+
<span className="text-fm-icon-active text-sm">LIVE</span>
|
|
1286
|
+
<span className="text-fm-tertiary text-sm">1,247 viewers</span>
|
|
1243
1287
|
</div>
|
|
1244
1288
|
<div className="flex items-center gap-2">
|
|
1245
|
-
<button className="
|
|
1246
|
-
<CameraIcon className="h-4 w-4
|
|
1289
|
+
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 hover:bg-fm-icon-info/30 rounded border p-2 transition-colors">
|
|
1290
|
+
<CameraIcon className="text-fm-icon-info h-4 w-4" />
|
|
1247
1291
|
</button>
|
|
1248
1292
|
</div>
|
|
1249
1293
|
</div>
|
|
@@ -1266,12 +1310,12 @@ export const Playground: Story = {
|
|
|
1266
1310
|
args: {
|
|
1267
1311
|
width: 24,
|
|
1268
1312
|
height: 24,
|
|
1269
|
-
className: "text-
|
|
1313
|
+
className: "text-fm-icon-info",
|
|
1270
1314
|
strokeLinecap: "round",
|
|
1271
1315
|
},
|
|
1272
1316
|
render: (args) => (
|
|
1273
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1274
|
-
<div className="rounded-lg border
|
|
1317
|
+
<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">
|
|
1318
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1275
1319
|
<CameraIcon {...args} />
|
|
1276
1320
|
</div>
|
|
1277
1321
|
</div>
|