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.
Files changed (183) hide show
  1. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1199
  2. package/dist/components/avatar/Avatar.stories.tsx +235 -237
  3. package/dist/components/badge/Badge.stories.tsx +379 -116
  4. package/dist/components/banner/Banner.stories.tsx +445 -391
  5. package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
  6. package/dist/components/button/Button.stories.tsx +585 -230
  7. package/dist/components/button/index.tsx +7 -7
  8. package/dist/components/card/Card.stories.tsx +619 -301
  9. package/dist/components/char-count/CharCount.stories.tsx +350 -248
  10. package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
  11. package/dist/components/chip/Chip.stories.tsx +362 -168
  12. package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -620
  13. package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
  14. package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
  15. package/dist/components/command/Command.stories.tsx +533 -856
  16. package/dist/components/dialog/Dialog.stories.tsx +505 -949
  17. package/dist/components/divider/Divider.stories.tsx +265 -502
  18. package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
  19. package/dist/components/drawer/Drawer.stories.tsx +659 -993
  20. package/dist/components/drawer/index.tsx +3 -3
  21. package/dist/components/dropdown/Dropdown.stories.tsx +643 -1018
  22. package/dist/components/form/Form.stories.tsx +560 -274
  23. package/dist/components/helper-text/HelperText.stories.tsx +199 -200
  24. package/dist/components/hover-card/HoverCard.stories.tsx +318 -1221
  25. package/dist/components/icon-button/IconButton.stories.tsx +837 -194
  26. package/dist/components/if-else/if-else.stories.tsx +370 -83
  27. package/dist/components/input/Input.stories.tsx +436 -368
  28. package/dist/components/label/Label.stories.tsx +156 -154
  29. package/dist/components/list/List.stories.tsx +485 -822
  30. package/dist/components/marquee/Marquee.stories.tsx +356 -694
  31. package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -410
  32. package/dist/components/overlay/Overlay.stories.tsx +452 -818
  33. package/dist/components/overlay/index.tsx +4 -4
  34. package/dist/components/pagination/Pagination.stories.tsx +721 -210
  35. package/dist/components/popover/Popover.stories.tsx +484 -873
  36. package/dist/components/radio/Radio.stories.tsx +432 -124
  37. package/dist/components/resizable/Resizable.stories.tsx +496 -752
  38. package/dist/components/scroll-area/ScrollArea.stories.tsx +384 -1006
  39. package/dist/components/search/Search.stories.tsx +314 -575
  40. package/dist/components/select/Select.stories.tsx +684 -787
  41. package/dist/components/sheet/Sheet.stories.tsx +671 -936
  42. package/dist/components/skelton/Skelton.stories.tsx +230 -764
  43. package/dist/components/slider/Slider.stories.tsx +384 -737
  44. package/dist/components/stepper/Stepper.stories.tsx +371 -514
  45. package/dist/components/switch/Switch.stories.tsx +461 -208
  46. package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
  47. package/dist/components/table/Table.stories.tsx +770 -914
  48. package/dist/components/tabs/Tabs.stories.tsx +459 -1400
  49. package/dist/components/tag/Tag.stories.tsx +714 -542
  50. package/dist/components/textarea/TextArea.stories.tsx +621 -562
  51. package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -148
  52. package/dist/components/toast/Toast.stories.tsx +452 -1333
  53. package/dist/components/toggle/Toggle.stories.tsx +488 -909
  54. package/dist/components/tooltip/Tooltip.stories.tsx +344 -1372
  55. package/dist/components/typography/Typography.stories.tsx +406 -89
  56. package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
  57. package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
  58. package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
  59. package/dist/icons/Icons.stories.tsx +0 -12
  60. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +226 -1013
  61. package/dist/icons/alert-icon/AlertIcon.stories.tsx +109 -929
  62. package/dist/icons/all-icons.tsx +124 -87
  63. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +140 -971
  64. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +148 -888
  65. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +135 -1019
  66. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +137 -953
  67. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +138 -997
  68. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +136 -942
  69. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +148 -1092
  70. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +146 -1211
  71. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +126 -615
  72. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +144 -1164
  73. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +167 -985
  74. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +122 -1179
  75. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +124 -1168
  76. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +119 -850
  77. package/dist/icons/camera-icon/CameraIcon.stories.tsx +112 -1213
  78. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +117 -934
  79. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +160 -961
  80. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +163 -961
  81. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +144 -942
  82. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +129 -966
  83. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +147 -964
  84. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +145 -975
  85. package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +150 -1142
  86. package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +114 -461
  87. package/dist/icons/coin-icon/CoinIcon.stories.tsx +124 -1322
  88. package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +117 -1318
  89. package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +114 -903
  90. package/dist/icons/command-icon/CommandIcon.stories.tsx +127 -1042
  91. package/dist/icons/copy-icon/CopyIcon.stories.tsx +123 -962
  92. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +147 -999
  93. package/dist/icons/cross-icon/CrossIcon.stories.tsx +139 -960
  94. package/dist/icons/download-icon/DownloadIcon.stories.tsx +126 -820
  95. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +124 -1031
  96. package/dist/icons/email-icon/EmailIcon.stories.tsx +115 -936
  97. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +112 -1111
  98. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +144 -1025
  99. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +143 -1036
  100. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +127 -1011
  101. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +126 -1056
  102. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +125 -614
  103. package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +119 -1050
  104. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +169 -989
  105. package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +115 -1145
  106. package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +115 -1122
  107. package/dist/icons/globe-icon/GlobeIcon.stories.tsx +130 -313
  108. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +145 -940
  109. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +119 -1174
  110. package/dist/icons/head-icon/HeadIcon.stories.tsx +111 -916
  111. package/dist/icons/heart-icon/HeartIcon.stories.tsx +120 -1019
  112. package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +119 -683
  113. package/dist/icons/image-icon/ImageIcon.stories.tsx +105 -1121
  114. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +111 -1192
  115. package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +136 -1256
  116. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +159 -962
  117. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +161 -1385
  118. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +124 -972
  119. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +119 -948
  120. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +119 -942
  121. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +108 -1215
  122. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +154 -1517
  123. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +110 -1188
  124. package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +119 -678
  125. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +123 -1184
  126. package/dist/icons/message-icon/MessageIcon.stories.tsx +114 -538
  127. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +116 -1158
  128. package/dist/icons/moon-icon/MoonIcon.stories.tsx +120 -536
  129. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +109 -1184
  130. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +115 -1134
  131. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +119 -971
  132. package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +111 -1100
  133. package/dist/icons/notes-icon/NotesIcon.stories.tsx +119 -1101
  134. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +109 -1111
  135. package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +122 -684
  136. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +113 -954
  137. package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +112 -877
  138. package/dist/icons/pause-icon/PauseIcon.stories.tsx +113 -1000
  139. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +115 -1070
  140. package/dist/icons/phone-icon/PhoneIcon.stories.tsx +115 -978
  141. package/dist/icons/plus-icon/PlusIcon.stories.tsx +106 -1093
  142. package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +107 -829
  143. package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +102 -469
  144. package/dist/icons/search-icon/SearchIcon.stories.tsx +111 -1124
  145. package/dist/icons/setting-icon/SettingIcon.stories.tsx +107 -970
  146. package/dist/icons/share-icon/ShareIcon.stories.tsx +120 -1025
  147. package/dist/icons/shield-icon/ShieldIcon.stories.tsx +117 -931
  148. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +137 -1104
  149. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +172 -982
  150. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +164 -983
  151. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +105 -958
  152. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +158 -580
  153. package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
  154. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +158 -587
  155. package/dist/icons/spinner-solid-icon/index.tsx +6 -1
  156. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +146 -682
  157. package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
  158. package/dist/icons/star-icon/StarIcon.stories.tsx +124 -904
  159. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +112 -964
  160. package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +116 -852
  161. package/dist/icons/sun-icon/SunIcon.stories.tsx +120 -831
  162. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +116 -950
  163. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +123 -980
  164. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +156 -1427
  165. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +146 -1142
  166. package/dist/icons/tick-icon/TickIcon.stories.tsx +145 -1276
  167. package/dist/icons/trash-icon/TrashIcon.stories.tsx +108 -933
  168. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +157 -1402
  169. package/dist/icons/upload-icon/UploadIcon.stories.tsx +115 -889
  170. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +118 -984
  171. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +125 -1049
  172. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +123 -1356
  173. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +110 -1171
  174. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +112 -1093
  175. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +115 -1087
  176. package/dist/icons/warning-icon/WarningIcon.stories.tsx +122 -1046
  177. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +161 -936
  178. package/dist/index.cjs +84 -84
  179. package/dist/index.js +84 -84
  180. package/dist/styles/aural-all-theme.css +1222 -0
  181. package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
  182. package/dist/styles/aural-light-theme.css +1047 -0
  183. 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: "#0a0a0a" },
15
- { name: "darker", value: "#000000" },
16
- { name: "light", value: "#ffffff" },
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
- {/* Override default docs styling */}
23
- <style>
24
- {`
25
- .sbdocs-wrapper {
26
- padding: 0 ;
27
- max-width: none ;
28
- background: transparent ;
29
- }
30
- .sbdocs-content {
31
- max-width: none ;
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-6 w-6 text-violet-400" />
154
- <span>Now Playing</span>
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
- </pre>
861
- </div>
862
- <div className="!space-y-4">
863
- <p className="text-sm !text-white/70">
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
- {/* Related Icons */}
882
- <div className="!space-y-8">
883
- <h2 className="text-center text-3xl font-bold !text-white">
884
- Related Icons
885
- </h2>
886
- <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
887
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
888
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
889
- <span className="text-2xl">🎵</span>
890
- </div>
891
- <div>
892
- <div className="font-medium text-white">MusicIcon</div>
893
- <div className="text-xs text-white/60">
894
- Music & melody
895
- </div>
896
- </div>
897
- </div>
898
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
899
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
900
- <span className="text-2xl">🎤</span>
901
- </div>
902
- <div>
903
- <div className="font-medium text-white">
904
- MicrophoneIcon
905
- </div>
906
- <div className="text-xs text-white/60">Voice input</div>
907
- </div>
908
- </div>
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: 8, max: 96, step: 2 },
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: 8, max: 96, step: 2 },
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 styling",
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: 24,
997
- height: 24,
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
- <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
123
+ <IconDefaultCanvas>
1004
124
  <AudioBarIcon {...args} />
1005
- </div>
125
+ </IconDefaultCanvas>
1006
126
  ),
1007
127
  }
1008
128
 
1009
129
  export const SizeVariations: Story = {
1010
- parameters: {
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
- parameters: {
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
- <div className="grid min-h-dvh grid-cols-1 items-center gap-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8 md:grid-cols-4">
1112
- <div className="text-center">
1113
- <h3 className="mb-4 text-lg font-medium text-white">Pulse</h3>
1114
- <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">
1115
- <AudioBarIcon className="h-8 w-8 animate-pulse text-violet-400" />
1116
- </div>
1117
- <p className="text-xs text-white/60">Active audio</p>
1118
- </div>
1119
-
1120
- <div className="text-center">
1121
- <h3 className="mb-4 text-lg font-medium text-white">Bounce</h3>
1122
- <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">
1123
- <AudioBarIcon className="h-8 w-8 animate-bounce text-green-400" />
1124
- </div>
1125
- <p className="text-xs text-white/60">Recording</p>
1126
- </div>
1127
-
1128
- <div className="text-center">
1129
- <h3 className="mb-4 text-lg font-medium text-white">Spin</h3>
1130
- <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">
1131
- <AudioBarIcon className="h-8 w-8 animate-spin text-blue-400" />
1132
- </div>
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
- <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1159
- {/* Music Player */}
1160
- <div className="!space-y-2">
1161
- <h3 className="text-sm font-medium text-white">Music Player</h3>
1162
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1163
- <div className="flex items-center gap-4">
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
- <h4 className="font-medium text-white">Bohemian Rhapsody</h4>
1169
- <p className="text-sm text-white/60">Queen</p>
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
- </div>
183
+ </IconUsageSection>
1175
184
 
1176
- {/* Voice Recording */}
1177
- <div className="!space-y-2">
1178
- <h3 className="text-sm font-medium text-white">Voice Recording</h3>
1179
- <div className="rounded-lg border border-red-500/20 bg-red-500/10 p-4">
1180
- <div className="flex items-center justify-between">
1181
- <div className="flex items-center gap-3">
1182
- <AudioBarIcon className="h-5 w-5 animate-bounce text-red-400" />
1183
- <span className="text-red-200">Recording...</span>
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
- </div>
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
- {/* Audio Status */}
1206
- <div className="!space-y-2">
1207
- <h3 className="text-sm font-medium text-white">Audio Status</h3>
1208
- <div className="!space-y-2">
1209
- <div className="flex items-center justify-between rounded-lg border border-white/10 bg-white/5 p-3">
1210
- <span className="text-sm text-white">Microphone</span>
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-4 w-4 text-green-400" />
1213
- <span className="text-xs text-green-400">Active</span>
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="flex items-center justify-between rounded-lg border border-white/10 bg-white/5 p-3">
1217
- <span className="text-sm text-white">Speakers</span>
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
- </div>
1225
- </div>
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: 32,
1241
- height: 32,
1242
- className: "text-violet-400",
1243
- fill: "#8b5cf6",
222
+ width: 52,
223
+ height: 12,
224
+ withAccessibility: true,
225
+ className: "text-fm-icon-active animate-pulse",
1244
226
  },
1245
227
  render: (args) => (
1246
- <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1247
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1248
- <AudioBarIcon {...args} />
1249
- </div>
1250
- </div>
228
+ <IconPlaygroundCanvas>
229
+ <AudioBarIcon {...args} />
230
+ </IconPlaygroundCanvas>
1251
231
  ),
1252
232
  }