aural-ui 3.0.7 → 4.1.0
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 +290 -1199
- package/dist/components/avatar/Avatar.stories.tsx +235 -237
- package/dist/components/badge/Badge.stories.tsx +379 -116
- package/dist/components/banner/Banner.stories.tsx +445 -391
- package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
- package/dist/components/button/Button.stories.tsx +585 -230
- package/dist/components/button/index.tsx +7 -7
- package/dist/components/card/Card.stories.tsx +619 -301
- package/dist/components/char-count/CharCount.stories.tsx +350 -248
- package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
- package/dist/components/chip/Chip.stories.tsx +362 -168
- package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -620
- package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
- package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
- package/dist/components/command/Command.stories.tsx +533 -856
- package/dist/components/dialog/Dialog.stories.tsx +505 -949
- package/dist/components/divider/Divider.stories.tsx +265 -502
- package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
- package/dist/components/drawer/Drawer.stories.tsx +659 -993
- package/dist/components/drawer/index.tsx +3 -3
- package/dist/components/dropdown/Dropdown.stories.tsx +643 -1018
- package/dist/components/form/Form.stories.tsx +560 -274
- package/dist/components/helper-text/HelperText.stories.tsx +199 -200
- package/dist/components/hover-card/HoverCard.stories.tsx +318 -1221
- package/dist/components/icon-button/IconButton.stories.tsx +837 -194
- package/dist/components/if-else/if-else.stories.tsx +370 -83
- package/dist/components/input/Input.stories.tsx +436 -368
- package/dist/components/label/Label.stories.tsx +156 -154
- package/dist/components/list/List.stories.tsx +485 -822
- package/dist/components/marquee/Marquee.stories.tsx +356 -694
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -410
- package/dist/components/overlay/Overlay.stories.tsx +452 -818
- package/dist/components/overlay/index.tsx +4 -4
- package/dist/components/pagination/Pagination.stories.tsx +721 -210
- package/dist/components/popover/Popover.stories.tsx +484 -873
- package/dist/components/radio/Radio.stories.tsx +432 -124
- package/dist/components/resizable/Resizable.stories.tsx +496 -752
- package/dist/components/scroll-area/ScrollArea.stories.tsx +384 -1006
- package/dist/components/search/Search.stories.tsx +314 -575
- package/dist/components/select/Select.stories.tsx +684 -787
- package/dist/components/sheet/Sheet.stories.tsx +671 -936
- package/dist/components/skelton/Skelton.stories.tsx +230 -764
- package/dist/components/slider/Slider.stories.tsx +384 -737
- package/dist/components/stepper/Stepper.stories.tsx +371 -514
- package/dist/components/switch/Switch.stories.tsx +461 -208
- package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
- package/dist/components/table/Table.stories.tsx +770 -914
- package/dist/components/tabs/Tabs.stories.tsx +459 -1400
- package/dist/components/tag/Tag.stories.tsx +714 -542
- package/dist/components/textarea/TextArea.stories.tsx +621 -562
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -148
- package/dist/components/toast/Toast.stories.tsx +452 -1333
- package/dist/components/toggle/Toggle.stories.tsx +488 -909
- package/dist/components/tooltip/Tooltip.stories.tsx +344 -1372
- package/dist/components/typography/Typography.stories.tsx +406 -89
- package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
- package/dist/icons/Icons.stories.tsx +0 -12
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +226 -1013
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +109 -929
- package/dist/icons/all-icons.tsx +124 -87
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +140 -971
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +148 -888
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +135 -1019
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +137 -953
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +138 -997
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +136 -942
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +148 -1092
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +146 -1211
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +126 -615
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +144 -1164
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +167 -985
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +122 -1179
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +124 -1168
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +119 -850
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +112 -1213
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +117 -934
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +160 -961
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +163 -961
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +144 -942
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +129 -966
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +147 -964
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +145 -975
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +150 -1142
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +114 -461
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +124 -1322
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +117 -1318
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +114 -903
- package/dist/icons/command-icon/CommandIcon.stories.tsx +127 -1042
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +123 -962
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +147 -999
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +139 -960
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +126 -820
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +124 -1031
- package/dist/icons/email-icon/EmailIcon.stories.tsx +115 -936
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +112 -1111
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +144 -1025
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +143 -1036
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +127 -1011
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +126 -1056
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +125 -614
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +119 -1050
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +169 -989
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +115 -1145
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +115 -1122
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +130 -313
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +145 -940
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +119 -1174
- package/dist/icons/head-icon/HeadIcon.stories.tsx +111 -916
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +120 -1019
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +119 -683
- package/dist/icons/image-icon/ImageIcon.stories.tsx +105 -1121
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +111 -1192
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +136 -1256
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +159 -962
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +161 -1385
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +124 -972
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +119 -948
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +119 -942
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +108 -1215
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +154 -1517
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +110 -1188
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +119 -678
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +123 -1184
- package/dist/icons/message-icon/MessageIcon.stories.tsx +114 -538
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +116 -1158
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +120 -536
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +109 -1184
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +115 -1134
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +119 -971
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +111 -1100
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +119 -1101
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +109 -1111
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +122 -684
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +113 -954
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +112 -877
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +113 -1000
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +115 -1070
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +115 -978
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +106 -1093
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +107 -829
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +102 -469
- package/dist/icons/search-icon/SearchIcon.stories.tsx +111 -1124
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +107 -970
- package/dist/icons/share-icon/ShareIcon.stories.tsx +120 -1025
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +117 -931
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +137 -1104
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +172 -982
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +164 -983
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +105 -958
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +158 -580
- package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +158 -587
- package/dist/icons/spinner-solid-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +146 -682
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
- package/dist/icons/star-icon/StarIcon.stories.tsx +124 -904
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +112 -964
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +116 -852
- package/dist/icons/sun-icon/SunIcon.stories.tsx +120 -831
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +116 -950
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +123 -980
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +156 -1427
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +146 -1142
- package/dist/icons/tick-icon/TickIcon.stories.tsx +145 -1276
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +108 -933
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +157 -1402
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +115 -889
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +118 -984
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +125 -1049
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +123 -1356
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +110 -1171
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +112 -1093
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +115 -1087
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +122 -1046
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +161 -936
- 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
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/react-vite"
|
|
3
3
|
|
|
4
|
+
import { MusicalNoteIcon } from "src/ui/icons/musical-note-icon"
|
|
5
|
+
import { PauseIcon } from "src/ui/icons/pause-icon"
|
|
6
|
+
import { SpinnerGradientIcon } from "src/ui/icons/spinner-gradient-icon"
|
|
7
|
+
import { VoicePlayingIcon } from "src/ui/icons/voice-playing-icon"
|
|
8
|
+
import {
|
|
9
|
+
IconAnimatedStates,
|
|
10
|
+
IconColorVariations,
|
|
11
|
+
IconDefaultCanvas,
|
|
12
|
+
IconPlaygroundCanvas,
|
|
13
|
+
IconSizeVariations,
|
|
14
|
+
IconUsageCanvas,
|
|
15
|
+
IconUsageSection,
|
|
16
|
+
} from "src/ui/story-spec/icons/icon-story-canvas"
|
|
17
|
+
import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
|
|
18
|
+
|
|
4
19
|
import { AudioBarIcon } from "."
|
|
5
20
|
|
|
6
21
|
const meta: Meta<typeof AudioBarIcon> = {
|
|
@@ -11,968 +26,85 @@ const meta: Meta<typeof AudioBarIcon> = {
|
|
|
11
26
|
backgrounds: {
|
|
12
27
|
default: "dark",
|
|
13
28
|
values: [
|
|
14
|
-
{ name: "dark", value: "
|
|
15
|
-
{ name: "darker", value: "
|
|
16
|
-
{ name: "light", value: "
|
|
29
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
30
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
31
|
+
{ name: "light", value: "var(--color-fm-neutral-1100)" },
|
|
17
32
|
],
|
|
18
33
|
},
|
|
19
34
|
docs: {
|
|
20
35
|
page: () => (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
padding: 0 ;
|
|
33
|
-
margin: 0 ;
|
|
34
|
-
background: transparent ;
|
|
35
|
-
}
|
|
36
|
-
.docs-story {
|
|
37
|
-
background: transparent ;
|
|
38
|
-
}
|
|
39
|
-
.sbdocs {
|
|
40
|
-
background: transparent ;
|
|
41
|
-
}
|
|
42
|
-
body {
|
|
43
|
-
background: #0a0a0a ;
|
|
44
|
-
}
|
|
45
|
-
#storybook-docs {
|
|
46
|
-
background: #0a0a0a ;
|
|
47
|
-
}
|
|
48
|
-
.sbdocs-preview {
|
|
49
|
-
background: transparent ;
|
|
50
|
-
border: none ;
|
|
51
|
-
}
|
|
52
|
-
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
-
color: white ;
|
|
54
|
-
}
|
|
55
|
-
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color: rgba(255, 255, 255, 0.7) ;
|
|
57
|
-
}
|
|
58
|
-
.sbdocs-code {
|
|
59
|
-
background: rgba(255, 255, 255, 0.1) ;
|
|
60
|
-
color: rgba(168, 85, 247, 1) ;
|
|
61
|
-
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
62
|
-
}
|
|
63
|
-
.sbdocs-pre {
|
|
64
|
-
background: rgba(0, 0, 0, 0.4) ;
|
|
65
|
-
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
66
|
-
}
|
|
67
|
-
.sbdocs-table {
|
|
68
|
-
background: rgba(255, 255, 255, 0.05) ;
|
|
69
|
-
border: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
70
|
-
}
|
|
71
|
-
.sbdocs-table th {
|
|
72
|
-
background: rgba(255, 255, 255, 0.05) ;
|
|
73
|
-
color: white ;
|
|
74
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.1) ;
|
|
75
|
-
}
|
|
76
|
-
.sbdocs-table td {
|
|
77
|
-
color: rgba(255, 255, 255, 0.7) ;
|
|
78
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.05) ;
|
|
79
|
-
}
|
|
80
|
-
`}
|
|
81
|
-
</style>
|
|
82
|
-
|
|
83
|
-
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900/20 to-gray-900">
|
|
84
|
-
{/* Header */}
|
|
85
|
-
<div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
|
|
86
|
-
<div className="absolute inset-0 bg-gradient-to-r from-purple-500/10 via-transparent to-blue-500/10" />
|
|
87
|
-
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
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 border-violet-500/30 bg-gradient-to-br from-violet-500/20 to-purple-500/20">
|
|
90
|
-
<AudioBarIcon className="h-12 w-12 text-violet-400" />
|
|
91
|
-
</div>
|
|
92
|
-
<h1 className="text-5xl font-bold !text-white">
|
|
93
|
-
AudioBarIcon
|
|
94
|
-
</h1>
|
|
95
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
|
|
96
|
-
A dynamic audio visualizer icon representing sound waves and
|
|
97
|
-
audio activity. Perfect for music players, audio controls,
|
|
98
|
-
voice interfaces, and sound-related features.
|
|
99
|
-
</p>
|
|
100
|
-
|
|
101
|
-
{/* Stats */}
|
|
102
|
-
<div className="flex items-center justify-center gap-8 pt-8">
|
|
103
|
-
<div className="text-center">
|
|
104
|
-
<div className="text-3xl font-bold text-violet-300">
|
|
105
|
-
Audio
|
|
106
|
-
</div>
|
|
107
|
-
<div className="text-sm text-white/60">
|
|
108
|
-
Sound visualization
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
<div className="h-8 w-px bg-white/20" />
|
|
112
|
-
<div className="text-center">
|
|
113
|
-
<div className="text-3xl font-bold text-purple-300">
|
|
114
|
-
Dynamic
|
|
115
|
-
</div>
|
|
116
|
-
<div className="text-sm text-white/60">
|
|
117
|
-
Visual feedback
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
<div className="h-8 w-px bg-white/20" />
|
|
121
|
-
<div className="text-center">
|
|
122
|
-
<div className="text-3xl font-bold text-fuchsia-300">
|
|
123
|
-
Responsive
|
|
124
|
-
</div>
|
|
125
|
-
<div className="text-sm text-white/60">
|
|
126
|
-
Scalable design
|
|
127
|
-
</div>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
{/* Content */}
|
|
135
|
-
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
136
|
-
{/* Quick Usage */}
|
|
137
|
-
<div className="!space-y-8">
|
|
138
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
139
|
-
Quick Start
|
|
140
|
-
</h2>
|
|
141
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
142
|
-
<div className="!space-y-4">
|
|
143
|
-
<h3 className="text-xl font-semibold !text-violet-300">
|
|
144
|
-
Basic Usage
|
|
145
|
-
</h3>
|
|
146
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
147
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
148
|
-
{`import { AudioBarIcon } from "@icons/audio-bar-icon"
|
|
149
|
-
|
|
150
|
-
function AudioPlayer() {
|
|
36
|
+
<AuralIconDocsPage
|
|
37
|
+
accentToken="positive"
|
|
38
|
+
features={[
|
|
39
|
+
{ title: "Audio Bars", description: "Visual audio activity mark" },
|
|
40
|
+
{ title: "currentColor", description: "Responds to text tokens" },
|
|
41
|
+
{ title: "Accessible", description: "ARIA-ready by default" },
|
|
42
|
+
]}
|
|
43
|
+
quickStart={{
|
|
44
|
+
codeExample: `import { AudioBarIcon } from "src/ui/icons/audio-bar-icon"
|
|
45
|
+
|
|
46
|
+
function NowPlaying() {
|
|
151
47
|
return (
|
|
152
48
|
<div className="flex items-center gap-2">
|
|
153
|
-
<AudioBarIcon className="h-
|
|
154
|
-
|
|
155
|
-
</div>
|
|
156
|
-
)
|
|
157
|
-
}`}
|
|
158
|
-
</pre>
|
|
159
|
-
</div>
|
|
160
|
-
</div>
|
|
161
|
-
|
|
162
|
-
<div className="!space-y-4">
|
|
163
|
-
<h3 className="text-xl font-semibold !text-violet-300">
|
|
164
|
-
Live Preview
|
|
165
|
-
</h3>
|
|
166
|
-
<div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
|
|
167
|
-
<div className="flex items-center gap-3 rounded-lg border border-violet-500/20 bg-violet-500/10 px-4 py-2">
|
|
168
|
-
<AudioBarIcon className="h-6 w-6 text-violet-400" />
|
|
169
|
-
<span className="!text-white">Now Playing</span>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
|
|
176
|
-
{/* Props Documentation */}
|
|
177
|
-
<div className="!space-y-8">
|
|
178
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
179
|
-
Props & Configuration
|
|
180
|
-
</h2>
|
|
181
|
-
|
|
182
|
-
<div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
|
|
183
|
-
<div className="bg-white/5 p-4">
|
|
184
|
-
<h3 className="text-xl font-semibold !text-white">Props</h3>
|
|
185
|
-
</div>
|
|
186
|
-
<table className="!my-0 w-full">
|
|
187
|
-
<thead className="bg-white/5">
|
|
188
|
-
<tr className="border-b border-white/10">
|
|
189
|
-
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
190
|
-
Prop
|
|
191
|
-
</th>
|
|
192
|
-
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
193
|
-
Type
|
|
194
|
-
</th>
|
|
195
|
-
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
196
|
-
Default
|
|
197
|
-
</th>
|
|
198
|
-
<th className="px-6 py-4 text-left text-sm font-semibold !text-white">
|
|
199
|
-
Description
|
|
200
|
-
</th>
|
|
201
|
-
</tr>
|
|
202
|
-
</thead>
|
|
203
|
-
<tbody>
|
|
204
|
-
{" "}
|
|
205
|
-
<tr className="!bg-black/10">
|
|
206
|
-
<td className="px-6 py-4 font-mono text-sm !text-blue-300">
|
|
207
|
-
withAccessibility
|
|
208
|
-
</td>
|
|
209
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
210
|
-
boolean
|
|
211
|
-
</td>
|
|
212
|
-
<td className="px-6 py-4 text-sm !text-white/50">
|
|
213
|
-
true
|
|
214
|
-
</td>
|
|
215
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
216
|
-
Whether to wrap the icon with accessibility feature
|
|
217
|
-
</td>
|
|
218
|
-
</tr>
|
|
219
|
-
<tr className="border-b border-white/5 !bg-black/10">
|
|
220
|
-
<td className="px-6 py-4 font-mono text-sm !text-violet-300">
|
|
221
|
-
height
|
|
222
|
-
</td>
|
|
223
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
224
|
-
number | string
|
|
225
|
-
</td>
|
|
226
|
-
<td className="px-6 py-4 text-sm !text-white/50">12</td>
|
|
227
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
228
|
-
Height of the icon in pixels
|
|
229
|
-
</td>
|
|
230
|
-
</tr>
|
|
231
|
-
<tr className="border-b border-white/5">
|
|
232
|
-
<td className="px-6 py-4 font-mono text-sm !text-violet-300">
|
|
233
|
-
fill
|
|
234
|
-
</td>
|
|
235
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
236
|
-
string
|
|
237
|
-
</td>
|
|
238
|
-
<td className="px-6 py-4 text-sm !text-white/50">
|
|
239
|
-
currentColor
|
|
240
|
-
</td>
|
|
241
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
242
|
-
Fill color of the audio bars
|
|
243
|
-
</td>
|
|
244
|
-
</tr>
|
|
245
|
-
<tr className="border-b border-white/5 !bg-black/10">
|
|
246
|
-
<td className="px-6 py-4 font-mono text-sm !text-violet-300">
|
|
247
|
-
color
|
|
248
|
-
</td>
|
|
249
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
250
|
-
string
|
|
251
|
-
</td>
|
|
252
|
-
<td className="px-6 py-4 text-sm !text-white/50">
|
|
253
|
-
currentColor
|
|
254
|
-
</td>
|
|
255
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
256
|
-
Color of the icon (alternative to fill)
|
|
257
|
-
</td>
|
|
258
|
-
</tr>
|
|
259
|
-
<tr className="border-b border-white/5">
|
|
260
|
-
<td className="px-6 py-4 font-mono text-sm !text-violet-300">
|
|
261
|
-
className
|
|
262
|
-
</td>
|
|
263
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
264
|
-
string
|
|
265
|
-
</td>
|
|
266
|
-
<td className="px-6 py-4 text-sm !text-white/50">-</td>
|
|
267
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
268
|
-
CSS classes for styling
|
|
269
|
-
</td>
|
|
270
|
-
</tr>
|
|
271
|
-
<tr className="!bg-black/10">
|
|
272
|
-
<td className="px-6 py-4 font-mono text-sm !text-violet-300">
|
|
273
|
-
...svgProps
|
|
274
|
-
</td>
|
|
275
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
276
|
-
SVGProps
|
|
277
|
-
</td>
|
|
278
|
-
<td className="px-6 py-4 text-sm !text-white/50">-</td>
|
|
279
|
-
<td className="px-6 py-4 text-sm !text-white/70">
|
|
280
|
-
All standard SVG element props
|
|
281
|
-
</td>
|
|
282
|
-
</tr>
|
|
283
|
-
</tbody>
|
|
284
|
-
</table>
|
|
285
|
-
</div>
|
|
286
|
-
</div>
|
|
287
|
-
|
|
288
|
-
{/* Size Variations */}
|
|
289
|
-
<div className="!space-y-8">
|
|
290
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
291
|
-
Size Variations
|
|
292
|
-
</h2>
|
|
293
|
-
<div className="rounded-lg border border-white/10 bg-white/5 p-8">
|
|
294
|
-
<div className="!space-y-6">
|
|
295
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
296
|
-
<div className="!space-y-4">
|
|
297
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
298
|
-
Standard Sizes
|
|
299
|
-
</h3>
|
|
300
|
-
<div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
|
|
301
|
-
<div className="text-center">
|
|
302
|
-
<AudioBarIcon className="!mx-auto mb-2 h-3 w-3 text-violet-400" />
|
|
303
|
-
<span className="text-xs text-white/60">12px</span>
|
|
304
|
-
</div>
|
|
305
|
-
<div className="text-center">
|
|
306
|
-
<AudioBarIcon className="!mx-auto mb-2 h-4 w-4 text-violet-400" />
|
|
307
|
-
<span className="text-xs text-white/60">16px</span>
|
|
308
|
-
</div>
|
|
309
|
-
<div className="text-center">
|
|
310
|
-
<AudioBarIcon className="!mx-auto mb-2 h-5 w-5 text-violet-400" />
|
|
311
|
-
<span className="text-xs text-white/60">20px</span>
|
|
312
|
-
</div>
|
|
313
|
-
<div className="text-center">
|
|
314
|
-
<AudioBarIcon className="!mx-auto mb-2 h-6 w-6 text-violet-400" />
|
|
315
|
-
<span className="text-xs text-white/60">24px</span>
|
|
316
|
-
</div>
|
|
317
|
-
<div className="text-center">
|
|
318
|
-
<AudioBarIcon className="!mx-auto mb-2 h-8 w-8 text-violet-400" />
|
|
319
|
-
<span className="text-xs text-white/60">32px</span>
|
|
320
|
-
</div>
|
|
321
|
-
<div className="text-center">
|
|
322
|
-
<AudioBarIcon className="!mx-auto mb-2 h-12 w-12 text-violet-400" />
|
|
323
|
-
<span className="text-xs text-white/60">48px</span>
|
|
324
|
-
</div>
|
|
325
|
-
</div>
|
|
326
|
-
</div>
|
|
327
|
-
|
|
328
|
-
<div className="!space-y-4">
|
|
329
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
330
|
-
Code Example
|
|
331
|
-
</h3>
|
|
332
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
333
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
334
|
-
{`// Small (16px)
|
|
335
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
336
|
-
|
|
337
|
-
// Medium (24px)
|
|
338
|
-
<AudioBarIcon className="h-6 w-6" />
|
|
339
|
-
|
|
340
|
-
// Large (32px)
|
|
341
|
-
<AudioBarIcon className="h-8 w-8" />
|
|
342
|
-
|
|
343
|
-
// Custom size (maintains aspect ratio)
|
|
344
|
-
<AudioBarIcon width={60} height={14} />`}
|
|
345
|
-
</pre>
|
|
346
|
-
</div>
|
|
347
|
-
</div>
|
|
348
|
-
</div>
|
|
349
|
-
</div>
|
|
350
|
-
</div>
|
|
351
|
-
</div>
|
|
352
|
-
|
|
353
|
-
{/* Color Variations */}
|
|
354
|
-
<div className="!space-y-8">
|
|
355
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
356
|
-
Color Variations
|
|
357
|
-
</h2>
|
|
358
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
359
|
-
<div className="!space-y-4">
|
|
360
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
361
|
-
Audio State Colors
|
|
362
|
-
</h3>
|
|
363
|
-
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
364
|
-
<div className="flex items-center gap-4">
|
|
365
|
-
<AudioBarIcon className="h-6 w-6 text-violet-400" />
|
|
366
|
-
<div>
|
|
367
|
-
<div className="text-sm font-medium text-white">
|
|
368
|
-
Active Audio
|
|
369
|
-
</div>
|
|
370
|
-
<div className="text-xs text-white/60">
|
|
371
|
-
text-violet-400
|
|
372
|
-
</div>
|
|
373
|
-
</div>
|
|
374
|
-
</div>
|
|
375
|
-
<div className="flex items-center gap-4">
|
|
376
|
-
<AudioBarIcon className="h-6 w-6 text-green-400" />
|
|
377
|
-
<div>
|
|
378
|
-
<div className="text-sm font-medium text-white">
|
|
379
|
-
Recording
|
|
380
|
-
</div>
|
|
381
|
-
<div className="text-xs text-white/60">
|
|
382
|
-
text-green-400
|
|
383
|
-
</div>
|
|
384
|
-
</div>
|
|
385
|
-
</div>
|
|
386
|
-
<div className="flex items-center gap-4">
|
|
387
|
-
<AudioBarIcon className="h-6 w-6 text-red-400" />
|
|
388
|
-
<div>
|
|
389
|
-
<div className="text-sm font-medium text-white">
|
|
390
|
-
Live/Streaming
|
|
391
|
-
</div>
|
|
392
|
-
<div className="text-xs text-white/60">
|
|
393
|
-
text-red-400
|
|
394
|
-
</div>
|
|
395
|
-
</div>
|
|
396
|
-
</div>
|
|
397
|
-
<div className="flex items-center gap-4">
|
|
398
|
-
<AudioBarIcon className="h-6 w-6 text-blue-400" />
|
|
399
|
-
<div>
|
|
400
|
-
<div className="text-sm font-medium text-white">
|
|
401
|
-
Analyzing
|
|
402
|
-
</div>
|
|
403
|
-
<div className="text-xs text-white/60">
|
|
404
|
-
text-blue-400
|
|
405
|
-
</div>
|
|
406
|
-
</div>
|
|
407
|
-
</div>
|
|
408
|
-
<div className="flex items-center gap-4">
|
|
409
|
-
<AudioBarIcon className="h-6 w-6 text-gray-400" />
|
|
410
|
-
<div>
|
|
411
|
-
<div className="text-sm font-medium text-white">
|
|
412
|
-
Inactive
|
|
413
|
-
</div>
|
|
414
|
-
<div className="text-xs text-white/60">
|
|
415
|
-
text-gray-400
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
</div>
|
|
419
|
-
</div>
|
|
420
|
-
</div>
|
|
421
|
-
|
|
422
|
-
<div className="!space-y-4">
|
|
423
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
424
|
-
Custom Colors
|
|
425
|
-
</h3>
|
|
426
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
427
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
428
|
-
{`// Using Tailwind classes
|
|
429
|
-
<AudioBarIcon className="h-6 w-6 text-violet-400" />
|
|
430
|
-
<AudioBarIcon className="h-6 w-6 text-green-500" />
|
|
431
|
-
|
|
432
|
-
// Using CSS custom properties
|
|
433
|
-
<AudioBarIcon
|
|
434
|
-
className="h-6 w-6"
|
|
435
|
-
style={{ color: 'var(--color-audio)' }}
|
|
436
|
-
/>
|
|
437
|
-
|
|
438
|
-
// Direct fill prop
|
|
439
|
-
<AudioBarIcon
|
|
440
|
-
width={32}
|
|
441
|
-
height={32}
|
|
442
|
-
fill="#8b5cf6"
|
|
443
|
-
/>
|
|
444
|
-
|
|
445
|
-
// Gradient effect (with CSS)
|
|
446
|
-
<AudioBarIcon className="h-6 w-6 text-gradient" />`}
|
|
447
|
-
</pre>
|
|
448
|
-
</div>
|
|
449
|
-
</div>
|
|
450
|
-
</div>
|
|
451
|
-
</div>
|
|
452
|
-
|
|
453
|
-
{/* Animation Examples */}
|
|
454
|
-
<div className="!space-y-8">
|
|
455
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
456
|
-
Animation & Effects
|
|
457
|
-
</h2>
|
|
458
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
459
|
-
<div className="!space-y-4">
|
|
460
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
461
|
-
Animated States
|
|
462
|
-
</h3>
|
|
463
|
-
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
464
|
-
<div className="grid grid-cols-2 gap-4">
|
|
465
|
-
<div className="flex flex-col items-center gap-2">
|
|
466
|
-
<AudioBarIcon className="h-8 w-8 animate-pulse text-violet-400" />
|
|
467
|
-
<span className="text-xs !text-white/60">
|
|
468
|
-
Pulsing
|
|
469
|
-
</span>
|
|
470
|
-
</div>
|
|
471
|
-
<div className="flex flex-col items-center gap-2">
|
|
472
|
-
<AudioBarIcon className="h-8 w-8 animate-bounce text-green-400" />
|
|
473
|
-
<span className="text-xs !text-white/60">
|
|
474
|
-
Bouncing
|
|
475
|
-
</span>
|
|
476
|
-
</div>
|
|
477
|
-
<div className="flex flex-col items-center gap-2">
|
|
478
|
-
<AudioBarIcon className="h-8 w-8 animate-spin text-blue-400" />
|
|
479
|
-
<span className="text-xs !text-white/60">
|
|
480
|
-
Processing
|
|
481
|
-
</span>
|
|
482
|
-
</div>
|
|
483
|
-
<div className="flex flex-col items-center gap-2">
|
|
484
|
-
<AudioBarIcon className="h-8 w-8 text-red-400 transition-all hover:scale-110" />
|
|
485
|
-
<span className="text-xs !text-white/60">
|
|
486
|
-
Hover Scale
|
|
487
|
-
</span>
|
|
488
|
-
</div>
|
|
489
|
-
</div>
|
|
490
|
-
</div>
|
|
491
|
-
</div>
|
|
492
|
-
|
|
493
|
-
<div className="!space-y-4">
|
|
494
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
495
|
-
Animation Code
|
|
496
|
-
</h3>
|
|
497
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
498
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
499
|
-
{`// Pulse animation for active audio
|
|
500
|
-
<AudioBarIcon className="h-6 w-6 animate-pulse text-violet-400" />
|
|
501
|
-
|
|
502
|
-
// Bounce for recording
|
|
503
|
-
<AudioBarIcon className="h-6 w-6 animate-bounce text-green-400" />
|
|
504
|
-
|
|
505
|
-
// Spin for processing
|
|
506
|
-
<AudioBarIcon className="h-6 w-6 animate-spin text-blue-400" />
|
|
507
|
-
|
|
508
|
-
// Custom keyframe animation
|
|
509
|
-
<AudioBarIcon className="h-6 w-6 animate-audio-wave text-violet-400" />
|
|
510
|
-
|
|
511
|
-
// Hover effects
|
|
512
|
-
<AudioBarIcon className="h-6 w-6 transition-all hover:scale-110 hover:text-violet-300" />`}
|
|
513
|
-
</pre>
|
|
514
|
-
</div>
|
|
515
|
-
</div>
|
|
516
|
-
</div>
|
|
517
|
-
</div>
|
|
518
|
-
|
|
519
|
-
{/* Usage Examples */}
|
|
520
|
-
<div className="!space-y-8">
|
|
521
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
522
|
-
Usage Examples
|
|
523
|
-
</h2>
|
|
524
|
-
|
|
525
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
526
|
-
{/* Audio Player */}
|
|
527
|
-
<div className="!space-y-4">
|
|
528
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
529
|
-
Music Player
|
|
530
|
-
</h3>
|
|
531
|
-
<div className="!space-y-4">
|
|
532
|
-
<div className="rounded-lg border border-white/10 bg-white/5 p-4">
|
|
533
|
-
<div className="flex items-center gap-4">
|
|
534
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-lg bg-violet-500/20">
|
|
535
|
-
<AudioBarIcon className="h-6 w-6 animate-pulse text-violet-400" />
|
|
536
|
-
</div>
|
|
537
|
-
<div className="flex-1">
|
|
538
|
-
<h4 className="font-medium !text-white">
|
|
539
|
-
Bohemian Rhapsody
|
|
540
|
-
</h4>
|
|
541
|
-
<p className="text-sm !text-white/60">Queen</p>
|
|
542
|
-
</div>
|
|
543
|
-
<div className="text-sm !text-white/60">3:42</div>
|
|
544
|
-
</div>
|
|
545
|
-
</div>
|
|
546
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
547
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
548
|
-
{`<div className="flex items-center gap-4 p-4 bg-white/5 border border-white/10 rounded-lg">
|
|
549
|
-
<div className="flex items-center justify-center w-12 h-12 bg-violet-500/20 rounded-lg">
|
|
550
|
-
<AudioBarIcon className="w-6 h-6 text-violet-400 animate-pulse" />
|
|
551
|
-
</div>
|
|
552
|
-
<div className="flex-1">
|
|
553
|
-
<h4 className="font-medium text-white">Bohemian Rhapsody</h4>
|
|
554
|
-
<p className="text-sm text-white/60">Queen</p>
|
|
555
|
-
</div>
|
|
556
|
-
<div className="text-sm text-white/60">3:42</div>
|
|
557
|
-
</div>`}
|
|
558
|
-
</pre>
|
|
559
|
-
</div>
|
|
560
|
-
</div>
|
|
561
|
-
</div>
|
|
562
|
-
|
|
563
|
-
{/* Voice Recording */}
|
|
564
|
-
<div className="!space-y-4">
|
|
565
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
566
|
-
Voice Recording
|
|
567
|
-
</h3>
|
|
568
|
-
<div className="!space-y-4">
|
|
569
|
-
<div className="rounded-lg border border-red-500/20 bg-red-500/10 p-4">
|
|
570
|
-
<div className="flex items-center justify-between">
|
|
571
|
-
<div className="flex items-center gap-3">
|
|
572
|
-
<AudioBarIcon className="h-5 w-5 animate-bounce text-red-400" />
|
|
573
|
-
<span className="!text-red-200">Recording...</span>
|
|
574
|
-
</div>
|
|
575
|
-
<div className="text-sm !text-red-300">00:42</div>
|
|
576
|
-
</div>
|
|
577
|
-
<div className="mt-3 h-2 rounded-full bg-red-500/20">
|
|
578
|
-
<div className="h-full w-1/3 rounded-full bg-red-400"></div>
|
|
579
|
-
</div>
|
|
580
|
-
</div>
|
|
581
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
582
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
583
|
-
{`<div className="p-4 bg-red-500/10 border border-red-500/20 rounded-lg">
|
|
584
|
-
<div className="flex items-center justify-between">
|
|
585
|
-
<div className="flex items-center gap-3">
|
|
586
|
-
<AudioBarIcon className="w-5 h-5 text-red-400 animate-bounce" />
|
|
587
|
-
<span className="text-red-200">Recording...</span>
|
|
49
|
+
<AudioBarIcon className="h-3 w-auto animate-pulse text-fm-icon-positive" />
|
|
50
|
+
Now Playing
|
|
588
51
|
</div>
|
|
589
|
-
<div className="text-sm text-red-300">00:42</div>
|
|
590
|
-
</div>
|
|
591
|
-
<div className="mt-3 h-2 bg-red-500/20 rounded-full">
|
|
592
|
-
<div className="w-1/3 h-full bg-red-400 rounded-full"></div>
|
|
593
|
-
</div>
|
|
594
|
-
</div>`}
|
|
595
|
-
</pre>
|
|
596
|
-
</div>
|
|
597
|
-
</div>
|
|
598
|
-
</div>
|
|
599
|
-
|
|
600
|
-
{/* Audio Controls */}
|
|
601
|
-
<div className="!space-y-4">
|
|
602
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
603
|
-
Audio Controls
|
|
604
|
-
</h3>
|
|
605
|
-
<div className="!space-y-4">
|
|
606
|
-
<div className="flex items-center gap-4 rounded-lg border border-white/10 bg-white/5 p-4">
|
|
607
|
-
<button className="flex items-center gap-2 rounded-lg border border-violet-500/30 bg-violet-500/20 px-3 py-2 text-violet-200 transition-colors hover:bg-violet-500/30">
|
|
608
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
609
|
-
Equalizer
|
|
610
|
-
</button>
|
|
611
|
-
<button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-3 py-2 text-green-200 transition-colors hover:bg-green-500/30">
|
|
612
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
613
|
-
Visualizer
|
|
614
|
-
</button>
|
|
615
|
-
<button className="flex items-center gap-2 rounded-lg border border-blue-500/30 bg-blue-500/20 px-3 py-2 text-blue-200 transition-colors hover:bg-blue-500/30">
|
|
616
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
617
|
-
Spectrum
|
|
618
|
-
</button>
|
|
619
|
-
</div>
|
|
620
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
621
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
622
|
-
{`<div className="flex items-center gap-4">
|
|
623
|
-
<button className="flex items-center gap-2 px-3 py-2 bg-violet-500/20 border border-violet-500/30 rounded-lg">
|
|
624
|
-
<AudioBarIcon className="w-4 h-4" />
|
|
625
|
-
Equalizer
|
|
626
|
-
</button>
|
|
627
|
-
<button className="flex items-center gap-2 px-3 py-2 bg-green-500/20 border border-green-500/30 rounded-lg">
|
|
628
|
-
<AudioBarIcon className="w-4 h-4" />
|
|
629
|
-
Visualizer
|
|
630
|
-
</button>
|
|
631
|
-
</div>`}
|
|
632
|
-
</pre>
|
|
633
|
-
</div>
|
|
634
|
-
</div>
|
|
635
|
-
</div>
|
|
636
|
-
|
|
637
|
-
{/* Audio Status */}
|
|
638
|
-
<div className="!space-y-4">
|
|
639
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
640
|
-
Audio Status Indicator
|
|
641
|
-
</h3>
|
|
642
|
-
<div className="!space-y-4">
|
|
643
|
-
<div className="!space-y-3">
|
|
644
|
-
<div className="flex items-center justify-between rounded-lg border border-white/10 bg-white/5 p-3">
|
|
645
|
-
<span className="text-sm !text-white">
|
|
646
|
-
Microphone
|
|
647
|
-
</span>
|
|
648
|
-
<div className="flex items-center gap-2">
|
|
649
|
-
<AudioBarIcon className="h-4 w-4 text-green-400" />
|
|
650
|
-
<span className="text-xs !text-green-400">
|
|
651
|
-
Active
|
|
652
|
-
</span>
|
|
653
|
-
</div>
|
|
654
|
-
</div>
|
|
655
|
-
<div className="flex items-center justify-between rounded-lg border border-white/10 bg-white/5 p-3">
|
|
656
|
-
<span className="text-sm !text-white">Speakers</span>
|
|
657
|
-
<div className="flex items-center gap-2">
|
|
658
|
-
<AudioBarIcon className="h-4 w-4 animate-pulse text-violet-400" />
|
|
659
|
-
<span className="text-xs !text-violet-400">
|
|
660
|
-
Playing
|
|
661
|
-
</span>
|
|
662
|
-
</div>
|
|
663
|
-
</div>
|
|
664
|
-
<div className="flex items-center justify-between rounded-lg border border-white/10 bg-white/5 p-3">
|
|
665
|
-
<span className="text-sm !text-white">Recording</span>
|
|
666
|
-
<div className="flex items-center gap-2">
|
|
667
|
-
<AudioBarIcon className="h-4 w-4 text-gray-400" />
|
|
668
|
-
<span className="text-xs !text-gray-400">
|
|
669
|
-
Disabled
|
|
670
|
-
</span>
|
|
671
|
-
</div>
|
|
672
|
-
</div>
|
|
673
|
-
</div>
|
|
674
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
675
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
676
|
-
{`// Active microphone
|
|
677
|
-
<div className="flex items-center gap-2">
|
|
678
|
-
<AudioBarIcon className="w-4 h-4 text-green-400" />
|
|
679
|
-
<span className="text-xs text-green-400">Active</span>
|
|
680
|
-
</div>
|
|
681
|
-
|
|
682
|
-
// Playing audio
|
|
683
|
-
<div className="flex items-center gap-2">
|
|
684
|
-
<AudioBarIcon className="w-4 h-4 text-violet-400 animate-pulse" />
|
|
685
|
-
<span className="text-xs text-violet-400">Playing</span>
|
|
686
|
-
</div>
|
|
687
|
-
|
|
688
|
-
// Disabled state
|
|
689
|
-
<div className="flex items-center gap-2">
|
|
690
|
-
<AudioBarIcon className="w-4 h-4 text-gray-400" />
|
|
691
|
-
<span className="text-xs text-gray-400">Disabled</span>
|
|
692
|
-
</div>`}
|
|
693
|
-
</pre>
|
|
694
|
-
</div>
|
|
695
|
-
</div>
|
|
696
|
-
</div>
|
|
697
|
-
|
|
698
|
-
{/* Audio Dashboard */}
|
|
699
|
-
<div className="!space-y-4">
|
|
700
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
701
|
-
Audio Dashboard
|
|
702
|
-
</h3>
|
|
703
|
-
<div className="!space-y-4">
|
|
704
|
-
<div className="grid grid-cols-2 gap-4">
|
|
705
|
-
<div className="rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
706
|
-
<AudioBarIcon className="!mx-auto mb-2 h-8 w-8 text-violet-400" />
|
|
707
|
-
<div className="text-sm font-medium !text-white">
|
|
708
|
-
Audio Quality
|
|
709
|
-
</div>
|
|
710
|
-
<div className="text-xs !text-white/60">HD Audio</div>
|
|
711
|
-
</div>
|
|
712
|
-
<div className="rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
713
|
-
<AudioBarIcon className="!mx-auto mb-2 h-8 w-8 animate-pulse text-green-400" />
|
|
714
|
-
<div className="text-sm font-medium !text-white">
|
|
715
|
-
Live Stream
|
|
716
|
-
</div>
|
|
717
|
-
<div className="text-xs !text-white/60">
|
|
718
|
-
Broadcasting
|
|
719
|
-
</div>
|
|
720
|
-
</div>
|
|
721
|
-
</div>
|
|
722
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
723
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
724
|
-
{`<div className="grid grid-cols-2 gap-4">
|
|
725
|
-
<div className="p-4 bg-white/5 border border-white/10 rounded-lg text-center">
|
|
726
|
-
<AudioBarIcon className="w-8 h-8 mx-auto mb-2 text-violet-400" />
|
|
727
|
-
<div className="text-sm font-medium text-white">Audio Quality</div>
|
|
728
|
-
<div className="text-xs text-white/60">HD Audio</div>
|
|
729
|
-
</div>
|
|
730
|
-
<div className="p-4 bg-white/5 border border-white/10 rounded-lg text-center">
|
|
731
|
-
<AudioBarIcon className="w-8 h-8 mx-auto mb-2 text-green-400 animate-pulse" />
|
|
732
|
-
<div className="text-sm font-medium text-white">Live Stream</div>
|
|
733
|
-
<div className="text-xs text-white/60">Broadcasting</div>
|
|
734
|
-
</div>
|
|
735
|
-
</div>`}
|
|
736
|
-
</pre>
|
|
737
|
-
</div>
|
|
738
|
-
</div>
|
|
739
|
-
</div>
|
|
740
|
-
|
|
741
|
-
{/* Navigation Tab */}
|
|
742
|
-
<div className="!space-y-4">
|
|
743
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
744
|
-
Navigation Tab
|
|
745
|
-
</h3>
|
|
746
|
-
<div className="!space-y-4">
|
|
747
|
-
<div className="flex rounded-lg border border-white/10 bg-white/5 p-1">
|
|
748
|
-
<button className="flex flex-1 items-center justify-center gap-2 rounded-md bg-violet-500/20 px-3 py-2 text-violet-200">
|
|
749
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
750
|
-
<span className="text-sm">Audio</span>
|
|
751
|
-
</button>
|
|
752
|
-
<button className="flex flex-1 items-center justify-center gap-2 rounded-md px-3 py-2 text-white/60 transition-colors hover:bg-white/10">
|
|
753
|
-
<span className="text-sm">Video</span>
|
|
754
|
-
</button>
|
|
755
|
-
<button className="flex flex-1 items-center justify-center gap-2 rounded-md px-3 py-2 text-white/60 transition-colors hover:bg-white/10">
|
|
756
|
-
<span className="text-sm">Settings</span>
|
|
757
|
-
</button>
|
|
758
|
-
</div>
|
|
759
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
760
|
-
<pre className="overflow-x-auto text-sm !text-green-300">
|
|
761
|
-
{`<div className="flex p-1 bg-white/5 border border-white/10 rounded-lg">
|
|
762
|
-
<button className="flex items-center justify-center flex-1 gap-2 px-3 py-2 bg-violet-500/20 rounded-md text-violet-200">
|
|
763
|
-
<AudioBarIcon className="w-4 h-4" />
|
|
764
|
-
<span className="text-sm">Audio</span>
|
|
765
|
-
</button>
|
|
766
|
-
<button className="flex items-center justify-center flex-1 gap-2 px-3 py-2 text-white/60 rounded-md hover:bg-white/10">
|
|
767
|
-
<span className="text-sm">Video</span>
|
|
768
|
-
</button>
|
|
769
|
-
</div>`}
|
|
770
|
-
</pre>
|
|
771
|
-
</div>
|
|
772
|
-
</div>
|
|
773
|
-
</div>
|
|
774
|
-
</div>
|
|
775
|
-
</div>
|
|
776
|
-
|
|
777
|
-
{/* Accessibility */}
|
|
778
|
-
<div className="!space-y-8">
|
|
779
|
-
<h2 className="text-center text-3xl font-bold !text-white">
|
|
780
|
-
Accessibility Features
|
|
781
|
-
</h2>
|
|
782
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
783
|
-
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
784
|
-
<h3 className="text-lg font-semibold !text-green-300">
|
|
785
|
-
✅ Built-in Features
|
|
786
|
-
</h3>
|
|
787
|
-
<ul className="!space-y-2 text-sm !text-white/70">
|
|
788
|
-
<li className="!text-white/70">
|
|
789
|
-
Uses Radix UI AccessibleIcon wrapper
|
|
790
|
-
</li>
|
|
791
|
-
<li className="!text-white/70">
|
|
792
|
-
Provides screen reader label "Audio Bar icon"
|
|
793
|
-
</li>
|
|
794
|
-
<li className="!text-white/70">
|
|
795
|
-
Supports keyboard navigation when interactive
|
|
796
|
-
</li>
|
|
797
|
-
<li className="!text-white/70">
|
|
798
|
-
Maintains proper color contrast ratios
|
|
799
|
-
</li>
|
|
800
|
-
<li className="!text-white/70">
|
|
801
|
-
Respects user's motion preferences for animations
|
|
802
|
-
</li>
|
|
803
|
-
</ul>
|
|
804
|
-
</div>
|
|
805
|
-
|
|
806
|
-
<div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
|
|
807
|
-
<h3 className="text-lg font-semibold !text-violet-300">
|
|
808
|
-
💡 Best Practices
|
|
809
|
-
</h3>
|
|
810
|
-
<ul className="!space-y-2 text-sm text-white/70">
|
|
811
|
-
<li className="!text-white/70">
|
|
812
|
-
Always provide audio context with descriptive text
|
|
813
|
-
</li>
|
|
814
|
-
<li className="!text-white/70">
|
|
815
|
-
Use consistent colors for different audio states
|
|
816
|
-
</li>
|
|
817
|
-
<li className="!text-white/70">
|
|
818
|
-
Provide alternative text indicators for audio states
|
|
819
|
-
</li>
|
|
820
|
-
<li className="!text-white/70">
|
|
821
|
-
Consider users with hearing impairments
|
|
822
|
-
</li>
|
|
823
|
-
<li className="!text-white/70">
|
|
824
|
-
Test with reduced motion preferences
|
|
825
|
-
</li>
|
|
826
|
-
</ul>
|
|
827
|
-
</div>
|
|
828
|
-
</div>
|
|
829
|
-
|
|
830
|
-
<div className="rounded-lg border border-white/10 bg-white/5 p-6">
|
|
831
|
-
<h3 className="mb-4 text-lg font-semibold !text-purple-300">
|
|
832
|
-
Accessible Audio Implementation
|
|
833
|
-
</h3>
|
|
834
|
-
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
835
|
-
<div className="rounded-lg bg-black/40 p-4">
|
|
836
|
-
<pre className="overflow-x-auto text-sm !text-blue-300">
|
|
837
|
-
{`// Custom implementation with audio context
|
|
838
|
-
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
839
|
-
|
|
840
|
-
function AccessibleAudioIcon({
|
|
841
|
-
audioState = "inactive",
|
|
842
|
-
level = 0,
|
|
843
|
-
...props
|
|
844
|
-
}) {
|
|
845
|
-
const getLabel = () => {
|
|
846
|
-
switch(audioState) {
|
|
847
|
-
case 'recording': return \`Recording audio, level \${level}%\`
|
|
848
|
-
case 'playing': return \`Playing audio, level \${level}%\`
|
|
849
|
-
case 'analyzing': return 'Analyzing audio input'
|
|
850
|
-
default: return 'Audio visualizer'
|
|
851
|
-
}
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
return (
|
|
855
|
-
<AccessibleIcon label={getLabel()}>
|
|
856
|
-
<AudioBarIcon {...props} />
|
|
857
|
-
</AccessibleIcon>
|
|
858
52
|
)
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
This implementation provides dynamic accessibility
|
|
865
|
-
labels based on audio state and level, giving screen
|
|
866
|
-
readers meaningful context.
|
|
867
|
-
</p>
|
|
868
|
-
<div className="rounded-lg border border-violet-500/20 bg-violet-500/10 p-4">
|
|
869
|
-
<div className="flex items-center gap-2 text-sm !text-violet-200">
|
|
870
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
871
|
-
<span>
|
|
872
|
-
Dynamic labels help users understand audio activity
|
|
873
|
-
</span>
|
|
874
|
-
</div>
|
|
875
|
-
</div>
|
|
876
|
-
</div>
|
|
877
|
-
</div>
|
|
878
|
-
</div>
|
|
53
|
+
}`,
|
|
54
|
+
livePreview: (
|
|
55
|
+
<div className="text-fm-primary font-fm-text flex items-center gap-2 text-sm">
|
|
56
|
+
<AudioBarIcon className="text-fm-icon-positive h-3 w-auto animate-pulse" />
|
|
57
|
+
Now Playing
|
|
879
58
|
</div>
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
910
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
|
|
911
|
-
<span className="text-2xl">🔊</span>
|
|
912
|
-
</div>
|
|
913
|
-
<div>
|
|
914
|
-
<div className="font-medium text-white">VolumeIcon</div>
|
|
915
|
-
<div className="text-xs text-white/60">Audio output</div>
|
|
916
|
-
</div>
|
|
917
|
-
</div>
|
|
918
|
-
<div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
|
|
919
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
|
|
920
|
-
<span className="text-2xl">📻</span>
|
|
921
|
-
</div>
|
|
922
|
-
<div>
|
|
923
|
-
<div className="font-medium text-white">RadioIcon</div>
|
|
924
|
-
<div className="text-xs text-white/60">Broadcasting</div>
|
|
925
|
-
</div>
|
|
926
|
-
</div>
|
|
927
|
-
</div>
|
|
928
|
-
</div>
|
|
929
|
-
</div>
|
|
930
|
-
|
|
931
|
-
{/* Footer */}
|
|
932
|
-
<div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
|
|
933
|
-
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
934
|
-
<div className="!space-y-4 text-center">
|
|
935
|
-
<p className="!text-white/60">
|
|
936
|
-
AudioBarIcon is part of the Aural UI icon library, designed
|
|
937
|
-
for clear audio visualization and interaction feedback.
|
|
938
|
-
</p>
|
|
939
|
-
<p className="text-sm !text-white/40">
|
|
940
|
-
Perfect for music players, voice interfaces, audio controls,
|
|
941
|
-
and any application requiring audio state visualization.
|
|
942
|
-
</p>
|
|
943
|
-
</div>
|
|
944
|
-
</div>
|
|
945
|
-
</div>
|
|
946
|
-
</div>
|
|
947
|
-
</>
|
|
59
|
+
),
|
|
60
|
+
}}
|
|
61
|
+
relatedIcons={[
|
|
62
|
+
{
|
|
63
|
+
name: "SpinnerGradientIcon",
|
|
64
|
+
description: "Loading spinner",
|
|
65
|
+
icon: SpinnerGradientIcon,
|
|
66
|
+
accentToken: "info",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "VoicePlayingIcon",
|
|
70
|
+
description: "Voice playing state",
|
|
71
|
+
icon: VoicePlayingIcon,
|
|
72
|
+
accentToken: "positive",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "MusicalNoteIcon",
|
|
76
|
+
description: "Music note icon",
|
|
77
|
+
icon: MusicalNoteIcon,
|
|
78
|
+
accentToken: "warning",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "PauseIcon",
|
|
82
|
+
description: "Pause control",
|
|
83
|
+
icon: PauseIcon,
|
|
84
|
+
accentToken: "negative",
|
|
85
|
+
},
|
|
86
|
+
]}
|
|
87
|
+
/>
|
|
948
88
|
),
|
|
949
89
|
},
|
|
950
90
|
},
|
|
951
91
|
tags: ["autodocs"],
|
|
952
92
|
argTypes: {
|
|
953
|
-
color: {
|
|
954
|
-
control: "color",
|
|
955
|
-
description: "Color of the icon",
|
|
956
|
-
},
|
|
957
|
-
withAccessibility: {
|
|
958
|
-
control: "boolean",
|
|
959
|
-
description: "Whether to wrap the icon with accessibility features",
|
|
960
|
-
},
|
|
961
93
|
width: {
|
|
962
|
-
control: { type: "range", min:
|
|
94
|
+
control: { type: "range", min: 16, max: 120, step: 4 },
|
|
963
95
|
description: "Width of the icon in pixels",
|
|
964
96
|
},
|
|
965
97
|
height: {
|
|
966
|
-
control: { type: "range", min:
|
|
98
|
+
control: { type: "range", min: 4, max: 48, step: 2 },
|
|
967
99
|
description: "Height of the icon in pixels",
|
|
968
100
|
},
|
|
969
|
-
fill: {
|
|
970
|
-
control: "color",
|
|
971
|
-
description: "Fill color of the audio bars",
|
|
972
|
-
},
|
|
973
101
|
className: {
|
|
974
102
|
control: "text",
|
|
975
|
-
description: "CSS classes for
|
|
103
|
+
description: "CSS classes for the SVG element",
|
|
104
|
+
},
|
|
105
|
+
withAccessibility: {
|
|
106
|
+
control: "boolean",
|
|
107
|
+
description: "Wrap with accessibility label",
|
|
976
108
|
},
|
|
977
109
|
},
|
|
978
110
|
}
|
|
@@ -980,273 +112,121 @@ function AccessibleAudioIcon({
|
|
|
980
112
|
export default meta
|
|
981
113
|
type Story = StoryObj<typeof AudioBarIcon>
|
|
982
114
|
|
|
983
|
-
// Story parameters for consistent dark theme
|
|
984
|
-
const storyParameters = {
|
|
985
|
-
backgrounds: {
|
|
986
|
-
default: "dark",
|
|
987
|
-
values: [
|
|
988
|
-
{ name: "dark", value: "#0a0a0a" },
|
|
989
|
-
{ name: "darker", value: "#000000" },
|
|
990
|
-
],
|
|
991
|
-
},
|
|
992
|
-
}
|
|
993
|
-
|
|
994
115
|
export const Default: Story = {
|
|
995
116
|
args: {
|
|
996
|
-
width:
|
|
997
|
-
height:
|
|
998
|
-
className: "text-violet-400",
|
|
117
|
+
width: 52,
|
|
118
|
+
height: 12,
|
|
999
119
|
withAccessibility: true,
|
|
120
|
+
className: "text-fm-icon-active",
|
|
1000
121
|
},
|
|
1001
|
-
parameters: storyParameters,
|
|
1002
122
|
render: (args) => (
|
|
1003
|
-
<
|
|
123
|
+
<IconDefaultCanvas>
|
|
1004
124
|
<AudioBarIcon {...args} />
|
|
1005
|
-
</
|
|
125
|
+
</IconDefaultCanvas>
|
|
1006
126
|
),
|
|
1007
127
|
}
|
|
1008
128
|
|
|
1009
129
|
export const SizeVariations: Story = {
|
|
1010
|
-
|
|
1011
|
-
...storyParameters,
|
|
1012
|
-
docs: {
|
|
1013
|
-
description: {
|
|
1014
|
-
story:
|
|
1015
|
-
"AudioBarIcon in different sizes, from small UI indicators to large audio visualizations.",
|
|
1016
|
-
},
|
|
1017
|
-
},
|
|
1018
|
-
},
|
|
1019
|
-
render: () => (
|
|
1020
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
|
|
1021
|
-
<div className="text-center">
|
|
1022
|
-
<AudioBarIcon className="!mx-auto mb-2 h-3 w-3 text-violet-400" />
|
|
1023
|
-
<span className="text-xs text-white/60">12px</span>
|
|
1024
|
-
</div>
|
|
1025
|
-
<div className="text-center">
|
|
1026
|
-
<AudioBarIcon className="!mx-auto mb-2 h-4 w-4 text-violet-400" />
|
|
1027
|
-
<span className="text-xs text-white/60">16px</span>
|
|
1028
|
-
</div>
|
|
1029
|
-
<div className="text-center">
|
|
1030
|
-
<AudioBarIcon className="!mx-auto mb-2 h-5 w-5 text-violet-400" />
|
|
1031
|
-
<span className="text-xs text-white/60">20px</span>
|
|
1032
|
-
</div>
|
|
1033
|
-
<div className="text-center">
|
|
1034
|
-
<AudioBarIcon className="!mx-auto mb-2 h-6 w-6 text-violet-400" />
|
|
1035
|
-
<span className="text-xs text-white/60">24px</span>
|
|
1036
|
-
</div>
|
|
1037
|
-
<div className="text-center">
|
|
1038
|
-
<AudioBarIcon className="!mx-auto mb-2 h-8 w-8 text-violet-400" />
|
|
1039
|
-
<span className="text-xs text-white/60">32px</span>
|
|
1040
|
-
</div>
|
|
1041
|
-
<div className="text-center">
|
|
1042
|
-
<AudioBarIcon className="!mx-auto mb-2 h-12 w-12 text-violet-400" />
|
|
1043
|
-
<span className="text-xs text-white/60">48px</span>
|
|
1044
|
-
</div>
|
|
1045
|
-
</div>
|
|
1046
|
-
),
|
|
130
|
+
render: () => <IconSizeVariations icon={AudioBarIcon} />,
|
|
1047
131
|
}
|
|
1048
132
|
|
|
1049
133
|
export const ColorVariations: Story = {
|
|
1050
|
-
|
|
1051
|
-
...storyParameters,
|
|
1052
|
-
docs: {
|
|
1053
|
-
description: {
|
|
1054
|
-
story:
|
|
1055
|
-
"AudioBarIcon in different colors representing various audio states and contexts.",
|
|
1056
|
-
},
|
|
1057
|
-
},
|
|
1058
|
-
},
|
|
1059
|
-
render: () => (
|
|
1060
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8 md:grid-cols-5">
|
|
1061
|
-
<div className="text-center">
|
|
1062
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-violet-500/30 bg-violet-500/20">
|
|
1063
|
-
<AudioBarIcon className="h-8 w-8 text-violet-400" />
|
|
1064
|
-
</div>
|
|
1065
|
-
<div className="text-sm font-medium text-white">Active</div>
|
|
1066
|
-
<div className="text-xs text-violet-400">text-violet-400</div>
|
|
1067
|
-
</div>
|
|
1068
|
-
<div className="text-center">
|
|
1069
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-green-500/30 bg-green-500/20">
|
|
1070
|
-
<AudioBarIcon className="h-8 w-8 text-green-400" />
|
|
1071
|
-
</div>
|
|
1072
|
-
<div className="text-sm font-medium text-white">Recording</div>
|
|
1073
|
-
<div className="text-xs text-green-400">text-green-400</div>
|
|
1074
|
-
</div>
|
|
1075
|
-
<div className="text-center">
|
|
1076
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-red-500/30 bg-red-500/20">
|
|
1077
|
-
<AudioBarIcon className="h-8 w-8 text-red-400" />
|
|
1078
|
-
</div>
|
|
1079
|
-
<div className="text-sm font-medium text-white">Live</div>
|
|
1080
|
-
<div className="text-xs text-red-400">text-red-400</div>
|
|
1081
|
-
</div>
|
|
1082
|
-
<div className="text-center">
|
|
1083
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-blue-500/30 bg-blue-500/20">
|
|
1084
|
-
<AudioBarIcon className="h-8 w-8 text-blue-400" />
|
|
1085
|
-
</div>
|
|
1086
|
-
<div className="text-sm font-medium text-white">Analyzing</div>
|
|
1087
|
-
<div className="text-xs text-blue-400">text-blue-400</div>
|
|
1088
|
-
</div>
|
|
1089
|
-
<div className="text-center">
|
|
1090
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-gray-500/30 bg-gray-500/20">
|
|
1091
|
-
<AudioBarIcon className="h-8 w-8 text-gray-400" />
|
|
1092
|
-
</div>
|
|
1093
|
-
<div className="text-sm font-medium text-white">Inactive</div>
|
|
1094
|
-
<div className="text-xs text-gray-400">text-gray-400</div>
|
|
1095
|
-
</div>
|
|
1096
|
-
</div>
|
|
1097
|
-
),
|
|
134
|
+
render: () => <IconColorVariations icon={AudioBarIcon} />,
|
|
1098
135
|
}
|
|
1099
136
|
|
|
1100
137
|
export const AnimatedStates: Story = {
|
|
1101
|
-
parameters: {
|
|
1102
|
-
...storyParameters,
|
|
1103
|
-
docs: {
|
|
1104
|
-
description: {
|
|
1105
|
-
story:
|
|
1106
|
-
"AudioBarIcon with different animation states for dynamic audio feedback.",
|
|
1107
|
-
},
|
|
1108
|
-
},
|
|
1109
|
-
},
|
|
1110
138
|
render: () => (
|
|
1111
|
-
<
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
<p className="text-xs text-white/60">Processing</p>
|
|
1134
|
-
</div>
|
|
1135
|
-
|
|
1136
|
-
<div className="text-center">
|
|
1137
|
-
<h3 className="mb-4 text-lg font-medium text-white">Hover Scale</h3>
|
|
1138
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-red-500/30 bg-red-500/20">
|
|
1139
|
-
<AudioBarIcon className="h-8 w-8 text-red-400 transition-all hover:scale-110" />
|
|
1140
|
-
</div>
|
|
1141
|
-
<p className="text-xs text-white/60">Interactive</p>
|
|
1142
|
-
</div>
|
|
1143
|
-
</div>
|
|
139
|
+
<IconAnimatedStates
|
|
140
|
+
icon={AudioBarIcon}
|
|
141
|
+
variants={[
|
|
142
|
+
{
|
|
143
|
+
label: "Static",
|
|
144
|
+
colorToken: "text-fm-icon-active",
|
|
145
|
+
description: "No animation",
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
label: "Pulse",
|
|
149
|
+
animationClass: "animate-pulse",
|
|
150
|
+
colorToken: "text-fm-icon-positive",
|
|
151
|
+
description: "Fade in/out",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
label: "Bounce",
|
|
155
|
+
animationClass: "animate-bounce",
|
|
156
|
+
colorToken: "text-fm-icon-info",
|
|
157
|
+
description: "Bounce motion",
|
|
158
|
+
},
|
|
159
|
+
]}
|
|
160
|
+
/>
|
|
1144
161
|
),
|
|
1145
162
|
}
|
|
1146
163
|
|
|
1147
164
|
export const UsageExamples: Story = {
|
|
1148
|
-
parameters: {
|
|
1149
|
-
...storyParameters,
|
|
1150
|
-
docs: {
|
|
1151
|
-
description: {
|
|
1152
|
-
story:
|
|
1153
|
-
"Real-world usage examples showing AudioBarIcon in different audio interface contexts.",
|
|
1154
|
-
},
|
|
1155
|
-
},
|
|
1156
|
-
},
|
|
1157
165
|
render: () => (
|
|
1158
|
-
<
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-lg bg-violet-500/20">
|
|
1165
|
-
<AudioBarIcon className="h-6 w-6 animate-pulse text-violet-400" />
|
|
166
|
+
<IconUsageCanvas>
|
|
167
|
+
<IconUsageSection title="Now Playing Bar">
|
|
168
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm space-y-3 rounded-xl border p-4">
|
|
169
|
+
<div className="flex items-center gap-3">
|
|
170
|
+
<div className="bg-fm-icon-positive/20 flex h-10 w-10 shrink-0 items-center justify-center rounded-lg">
|
|
171
|
+
<AudioBarIcon className="text-fm-icon-positive h-3 w-auto animate-pulse" />
|
|
1166
172
|
</div>
|
|
1167
173
|
<div className="flex-1">
|
|
1168
|
-
<
|
|
1169
|
-
|
|
174
|
+
<div className="text-fm-primary font-fm-text text-sm font-medium">
|
|
175
|
+
Now Playing
|
|
176
|
+
</div>
|
|
177
|
+
<div className="text-fm-secondary font-fm-text text-xs">
|
|
178
|
+
Track title · Artist name
|
|
179
|
+
</div>
|
|
1170
180
|
</div>
|
|
1171
|
-
<div className="text-sm text-white/60">3:42</div>
|
|
1172
181
|
</div>
|
|
1173
182
|
</div>
|
|
1174
|
-
</
|
|
183
|
+
</IconUsageSection>
|
|
1175
184
|
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
185
|
+
<IconUsageSection title="Voice Message">
|
|
186
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex w-full max-w-sm items-center gap-3 rounded-xl border px-4 py-3">
|
|
187
|
+
<div className="bg-fm-icon-info/20 flex h-8 w-8 shrink-0 items-center justify-center rounded-full">
|
|
188
|
+
<AudioBarIcon className="text-fm-icon-info h-2 w-auto animate-pulse" />
|
|
189
|
+
</div>
|
|
190
|
+
<div className="flex-1">
|
|
191
|
+
<div className="text-fm-primary font-fm-text text-sm">
|
|
192
|
+
Voice message · 0:24
|
|
1184
193
|
</div>
|
|
1185
|
-
<div className="text-sm text-red-300">00:42</div>
|
|
1186
194
|
</div>
|
|
1187
195
|
</div>
|
|
1188
|
-
</
|
|
1189
|
-
|
|
1190
|
-
{/* Audio Controls */}
|
|
1191
|
-
<div className="!space-y-2">
|
|
1192
|
-
<h3 className="text-sm font-medium text-white">Audio Controls</h3>
|
|
1193
|
-
<div className="flex items-center gap-4">
|
|
1194
|
-
<button className="flex items-center gap-2 rounded-lg border border-violet-500/30 bg-violet-500/20 px-3 py-2 text-violet-200 transition-colors hover:bg-violet-500/30">
|
|
1195
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
1196
|
-
Equalizer
|
|
1197
|
-
</button>
|
|
1198
|
-
<button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-3 py-2 text-green-200 transition-colors hover:bg-green-500/30">
|
|
1199
|
-
<AudioBarIcon className="h-4 w-4" />
|
|
1200
|
-
Visualizer
|
|
1201
|
-
</button>
|
|
1202
|
-
</div>
|
|
1203
|
-
</div>
|
|
196
|
+
</IconUsageSection>
|
|
1204
197
|
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
198
|
+
<IconUsageSection title="Podcast Status">
|
|
199
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm space-y-2 rounded-xl border p-4">
|
|
200
|
+
<div className="flex items-center justify-between">
|
|
201
|
+
<span className="text-fm-primary font-fm-text text-sm font-medium">
|
|
202
|
+
Episode 42
|
|
203
|
+
</span>
|
|
1211
204
|
<div className="flex items-center gap-2">
|
|
1212
|
-
<AudioBarIcon className="h-
|
|
1213
|
-
<span className="text-
|
|
205
|
+
<AudioBarIcon className="text-fm-icon-active h-3 w-auto" />
|
|
206
|
+
<span className="text-fm-secondary font-fm-text text-xs">
|
|
207
|
+
Live
|
|
208
|
+
</span>
|
|
1214
209
|
</div>
|
|
1215
210
|
</div>
|
|
1216
|
-
<div className="
|
|
1217
|
-
|
|
1218
|
-
<div className="flex items-center gap-2">
|
|
1219
|
-
<AudioBarIcon className="h-4 w-4 animate-pulse text-violet-400" />
|
|
1220
|
-
<span className="text-xs text-violet-400">Playing</span>
|
|
1221
|
-
</div>
|
|
211
|
+
<div className="text-fm-secondary font-fm-text text-xs">
|
|
212
|
+
The Future of Design Systems
|
|
1222
213
|
</div>
|
|
1223
214
|
</div>
|
|
1224
|
-
</
|
|
1225
|
-
</
|
|
215
|
+
</IconUsageSection>
|
|
216
|
+
</IconUsageCanvas>
|
|
1226
217
|
),
|
|
1227
218
|
}
|
|
1228
219
|
|
|
1229
220
|
export const Playground: Story = {
|
|
1230
|
-
parameters: {
|
|
1231
|
-
...storyParameters,
|
|
1232
|
-
docs: {
|
|
1233
|
-
description: {
|
|
1234
|
-
story:
|
|
1235
|
-
"Interactive playground to experiment with different AudioBarIcon configurations.",
|
|
1236
|
-
},
|
|
1237
|
-
},
|
|
1238
|
-
},
|
|
1239
221
|
args: {
|
|
1240
|
-
width:
|
|
1241
|
-
height:
|
|
1242
|
-
|
|
1243
|
-
|
|
222
|
+
width: 52,
|
|
223
|
+
height: 12,
|
|
224
|
+
withAccessibility: true,
|
|
225
|
+
className: "text-fm-icon-active animate-pulse",
|
|
1244
226
|
},
|
|
1245
227
|
render: (args) => (
|
|
1246
|
-
<
|
|
1247
|
-
<
|
|
1248
|
-
|
|
1249
|
-
</div>
|
|
1250
|
-
</div>
|
|
228
|
+
<IconPlaygroundCanvas>
|
|
229
|
+
<AudioBarIcon {...args} />
|
|
230
|
+
</IconPlaygroundCanvas>
|
|
1251
231
|
),
|
|
1252
232
|
}
|