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