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,1045 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { VerticalMenuIcon } from "."
5
+
6
+ const meta: Meta<typeof VerticalMenuIcon> = {
7
+ title: "Icons/VerticalMenuIcon",
8
+ component: VerticalMenuIcon,
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 !important;
27
+ max-width: none !important;
28
+ background: transparent !important;
29
+ }
30
+ .sbdocs-content {
31
+ max-width: none !important;
32
+ padding: 0 !important;
33
+ margin: 0 !important;
34
+ background: transparent !important;
35
+ }
36
+ .docs-story {
37
+ background: transparent !important;
38
+ }
39
+ .sbdocs {
40
+ background: transparent !important;
41
+ }
42
+ body {
43
+ background: #0a0a0a !important;
44
+ }
45
+ #storybook-docs {
46
+ background: #0a0a0a !important;
47
+ }
48
+ .sbdocs-preview {
49
+ background: transparent !important;
50
+ border: none !important;
51
+ }
52
+ .sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
53
+ color: white !important;
54
+ }
55
+ .sbdocs-p, .sbdocs-li {
56
+ color: rgba(255, 255, 255, 0.7) !important;
57
+ }
58
+ .sbdocs-code {
59
+ background: rgba(255, 255, 255, 0.1) !important;
60
+ color: rgba(168, 85, 247, 1) !important;
61
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
62
+ }
63
+ .sbdocs-pre {
64
+ background: rgba(0, 0, 0, 0.4) !important;
65
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
66
+ }
67
+ .sbdocs-table {
68
+ background: rgba(255, 255, 255, 0.05) !important;
69
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
70
+ }
71
+ .sbdocs-table th {
72
+ background: rgba(255, 255, 255, 0.05) !important;
73
+ color: white !important;
74
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
75
+ }
76
+ .sbdocs-table td {
77
+ color: rgba(255, 255, 255, 0.7) !important;
78
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
79
+ }
80
+ `}
81
+ </style>
82
+
83
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-blue-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-blue-500/10 via-transparent to-purple-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-blue-500/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20">
90
+ <VerticalMenuIcon className="h-12 w-12 text-blue-400" />
91
+ </div>
92
+ <h1 className="!text-fm-primary text-5xl font-bold">
93
+ VerticalMenuIcon
94
+ </h1>
95
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
+ A clean vertical menu icon for dropdown menus, action lists,
97
+ and navigation controls. Built with accessibility in mind
98
+ using Radix UI's AccessibleIcon wrapper.
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-blue-300">
105
+ Accessible
106
+ </div>
107
+ <div className="text-sm text-white/60">
108
+ Screen reader friendly
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
+ Scalable
115
+ </div>
116
+ <div className="text-sm text-white/60">
117
+ Any size needed
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-cyan-300">
123
+ Flexible
124
+ </div>
125
+ <div className="text-sm text-white/60">
126
+ Customizable styling
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-blue-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 { VerticalMenuIcon } from "@icons/vertical-menu-icon"
149
+
150
+ function MyComponent() {
151
+ return (
152
+ <button className="p-2 rounded-lg hover:bg-gray-100">
153
+ <VerticalMenuIcon className="h-5 w-5 text-gray-600" />
154
+ </button>
155
+ )
156
+ }`}
157
+ </pre>
158
+ </div>
159
+ </div>
160
+
161
+ <div className="!space-y-4">
162
+ <h3 className="text-xl font-semibold !text-blue-300">
163
+ Live Preview
164
+ </h3>
165
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
166
+ <button className="rounded-lg border border-blue-500/20 bg-blue-500/10 p-3 transition-colors hover:bg-blue-500/20">
167
+ <VerticalMenuIcon className="h-6 w-6 text-blue-400" />
168
+ </button>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+
174
+ {/* Props Documentation */}
175
+ <div className="!space-y-8">
176
+ <h2 className="text-center text-3xl font-bold !text-white">
177
+ Props & Configuration
178
+ </h2>
179
+
180
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
181
+ <div className="bg-white/5 p-4">
182
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
183
+ </div>
184
+ <table className="!my-0 w-full">
185
+ <thead className="bg-white/5">
186
+ <tr className="border-b border-white/10">
187
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
188
+ Prop
189
+ </th>
190
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
191
+ Type
192
+ </th>
193
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
194
+ Default
195
+ </th>
196
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
197
+ Description
198
+ </th>
199
+ </tr>
200
+ </thead>
201
+ <tbody>
202
+ <tr className="border-b border-white/5">
203
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
204
+ width
205
+ </td>
206
+ <td className="px-6 py-4 text-sm !text-white/70">
207
+ number | string
208
+ </td>
209
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
210
+ <td className="px-6 py-4 text-sm !text-white/70">
211
+ Width of the icon in pixels
212
+ </td>
213
+ </tr>
214
+ <tr className="border-b border-white/5 !bg-black/10">
215
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
216
+ height
217
+ </td>
218
+ <td className="px-6 py-4 text-sm !text-white/70">
219
+ number | string
220
+ </td>
221
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
222
+ <td className="px-6 py-4 text-sm !text-white/70">
223
+ Height of the icon in pixels
224
+ </td>
225
+ </tr>
226
+ <tr className="border-b border-white/5">
227
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
228
+ fill
229
+ </td>
230
+ <td className="px-6 py-4 text-sm !text-white/70">
231
+ string
232
+ </td>
233
+ <td className="px-6 py-4 text-sm !text-white/50">
234
+ currentColor
235
+ </td>
236
+ <td className="px-6 py-4 text-sm !text-white/70">
237
+ Fill color of the icon
238
+ </td>
239
+ </tr>
240
+ <tr className="border-b border-white/5 !bg-black/10">
241
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
242
+ className
243
+ </td>
244
+ <td className="px-6 py-4 text-sm !text-white/70">
245
+ string
246
+ </td>
247
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
248
+ <td className="px-6 py-4 text-sm !text-white/70">
249
+ CSS classes for styling
250
+ </td>
251
+ </tr>
252
+ <tr className="!bg-black/10">
253
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
254
+ ...svgProps
255
+ </td>
256
+ <td className="px-6 py-4 text-sm !text-white/70">
257
+ SVGProps
258
+ </td>
259
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
260
+ <td className="px-6 py-4 text-sm !text-white/70">
261
+ All standard SVG element props
262
+ </td>
263
+ </tr>
264
+ </tbody>
265
+ </table>
266
+ </div>
267
+ </div>
268
+
269
+ {/* Size Variations */}
270
+ <div className="!space-y-8">
271
+ <h2 className="text-center text-3xl font-bold !text-white">
272
+ Size Variations
273
+ </h2>
274
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
275
+ <div className="!space-y-6">
276
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
277
+ <div className="!space-y-4">
278
+ <h3 className="text-lg font-semibold !text-blue-300">
279
+ Standard Sizes
280
+ </h3>
281
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
282
+ <div className="text-center">
283
+ <VerticalMenuIcon className="!mx-auto mb-2 h-3 w-3 text-blue-400" />
284
+ <span className="text-xs text-white/60">12px</span>
285
+ </div>
286
+ <div className="text-center">
287
+ <VerticalMenuIcon className="!mx-auto mb-2 h-4 w-4 text-blue-400" />
288
+ <span className="text-xs text-white/60">16px</span>
289
+ </div>
290
+ <div className="text-center">
291
+ <VerticalMenuIcon className="!mx-auto mb-2 h-5 w-5 text-blue-400" />
292
+ <span className="text-xs text-white/60">20px</span>
293
+ </div>
294
+ <div className="text-center">
295
+ <VerticalMenuIcon className="!mx-auto mb-2 h-6 w-6 text-blue-400" />
296
+ <span className="text-xs text-white/60">24px</span>
297
+ </div>
298
+ <div className="text-center">
299
+ <VerticalMenuIcon className="!mx-auto mb-2 h-8 w-8 text-blue-400" />
300
+ <span className="text-xs text-white/60">32px</span>
301
+ </div>
302
+ <div className="text-center">
303
+ <VerticalMenuIcon className="!mx-auto mb-2 h-12 w-12 text-blue-400" />
304
+ <span className="text-xs text-white/60">48px</span>
305
+ </div>
306
+ </div>
307
+ </div>
308
+
309
+ <div className="!space-y-4">
310
+ <h3 className="text-lg font-semibold !text-blue-300">
311
+ Code Example
312
+ </h3>
313
+ <div className="rounded-lg bg-black/40 p-4">
314
+ <pre className="overflow-x-auto text-sm !text-blue-300">
315
+ {`// Small (16px)
316
+ <VerticalMenuIcon className="h-4 w-4" />
317
+
318
+ // Medium (24px)
319
+ <VerticalMenuIcon className="h-6 w-6" />
320
+
321
+ // Large (32px)
322
+ <VerticalMenuIcon className="h-8 w-8" />
323
+
324
+ // Custom size
325
+ <VerticalMenuIcon width={40} height={40} />`}
326
+ </pre>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </div>
332
+ </div>
333
+
334
+ {/* Color Variations */}
335
+ <div className="!space-y-8">
336
+ <h2 className="text-center text-3xl font-bold !text-white">
337
+ Color Variations
338
+ </h2>
339
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
340
+ <div className="!space-y-4">
341
+ <h3 className="text-lg font-semibold !text-blue-300">
342
+ Common Colors
343
+ </h3>
344
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
345
+ <div className="flex items-center gap-4">
346
+ <VerticalMenuIcon className="h-6 w-6 text-gray-400" />
347
+ <div>
348
+ <div className="text-sm font-medium text-white">
349
+ Default
350
+ </div>
351
+ <div className="text-xs text-white/60">
352
+ text-gray-400
353
+ </div>
354
+ </div>
355
+ </div>
356
+ <div className="flex items-center gap-4">
357
+ <VerticalMenuIcon className="h-6 w-6 text-blue-400" />
358
+ <div>
359
+ <div className="text-sm font-medium text-white">
360
+ Primary
361
+ </div>
362
+ <div className="text-xs text-white/60">
363
+ text-blue-400
364
+ </div>
365
+ </div>
366
+ </div>
367
+ <div className="flex items-center gap-4">
368
+ <VerticalMenuIcon className="h-6 w-6 text-purple-400" />
369
+ <div>
370
+ <div className="text-sm font-medium text-white">
371
+ Secondary
372
+ </div>
373
+ <div className="text-xs text-white/60">
374
+ text-purple-400
375
+ </div>
376
+ </div>
377
+ </div>
378
+ <div className="flex items-center gap-4">
379
+ <VerticalMenuIcon className="h-6 w-6 text-white/40" />
380
+ <div>
381
+ <div className="text-sm font-medium text-white">
382
+ Disabled
383
+ </div>
384
+ <div className="text-xs text-white/60">
385
+ text-white/40
386
+ </div>
387
+ </div>
388
+ </div>
389
+ </div>
390
+ </div>
391
+
392
+ <div className="!space-y-4">
393
+ <h3 className="text-lg font-semibold !text-blue-300">
394
+ Custom Colors
395
+ </h3>
396
+ <div className="rounded-lg bg-black/40 p-4">
397
+ <pre className="overflow-x-auto text-sm !text-green-300">
398
+ {`// Using Tailwind classes
399
+ <VerticalMenuIcon className="h-6 w-6 text-blue-400" />
400
+ <VerticalMenuIcon className="h-6 w-6 text-purple-500" />
401
+
402
+ // Using CSS custom properties
403
+ <VerticalMenuIcon
404
+ className="h-6 w-6"
405
+ style={{ color: 'var(--color-primary)' }}
406
+ />
407
+
408
+ // Direct fill prop
409
+ <VerticalMenuIcon
410
+ width={24}
411
+ height={24}
412
+ fill="#3b82f6"
413
+ />`}
414
+ </pre>
415
+ </div>
416
+ </div>
417
+ </div>
418
+ </div>
419
+
420
+ {/* Usage Examples */}
421
+ <div className="!space-y-8">
422
+ <h2 className="text-center text-3xl font-bold !text-white">
423
+ Usage Examples
424
+ </h2>
425
+
426
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
427
+ {/* Dropdown Menu */}
428
+ <div className="!space-y-4">
429
+ <h3 className="text-lg font-semibold !text-blue-300">
430
+ Dropdown Menu
431
+ </h3>
432
+ <div className="!space-y-4">
433
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
434
+ <div className="flex items-center justify-between">
435
+ <div className="flex items-center gap-3">
436
+ <div className="h-10 w-10 rounded-lg bg-gradient-to-br from-blue-500 to-purple-600"></div>
437
+ <div>
438
+ <div className="text-sm font-medium text-white">
439
+ John Smith
440
+ </div>
441
+ <div className="text-xs text-white/60">
442
+ john@example.com
443
+ </div>
444
+ </div>
445
+ </div>
446
+ <button className="rounded-lg p-2 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
447
+ <VerticalMenuIcon className="h-5 w-5" />
448
+ </button>
449
+ </div>
450
+ </div>
451
+ <div className="rounded-lg bg-black/40 p-4">
452
+ <pre className="overflow-x-auto text-sm !text-green-300">
453
+ {`<div className="flex items-center justify-between">
454
+ <div className="flex items-center gap-3">
455
+ {/* User info */}
456
+ </div>
457
+ <button className="p-2 rounded-lg text-gray-400 hover:bg-white/10 hover:text-blue-400 transition-colors">
458
+ <VerticalMenuIcon className="h-5 w-5" />
459
+ </button>
460
+ </div>`}
461
+ </pre>
462
+ </div>
463
+ </div>
464
+ </div>
465
+
466
+ {/* Card Actions */}
467
+ <div className="!space-y-4">
468
+ <h3 className="text-lg font-semibold !text-blue-300">
469
+ Card Actions
470
+ </h3>
471
+ <div className="!space-y-4">
472
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
473
+ <div className="flex items-start justify-between">
474
+ <div className="!space-y-2">
475
+ <h4 className="font-medium !text-white">
476
+ Project Alpha
477
+ </h4>
478
+ <p className="text-sm !text-white/70">
479
+ A new approach to user interface design that
480
+ focuses on accessibility.
481
+ </p>
482
+ <div className="flex items-center gap-2 text-xs text-white/60">
483
+ <span>Updated 2 hours ago</span>
484
+ </div>
485
+ </div>
486
+ <button className="rounded-lg p-2 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
487
+ <VerticalMenuIcon className="h-4 w-4" />
488
+ </button>
489
+ </div>
490
+ </div>
491
+ <div className="rounded-lg bg-black/40 p-4">
492
+ <pre className="overflow-x-auto text-sm !text-green-300">
493
+ {`<div className="flex items-start justify-between">
494
+ <div className="space-y-2">
495
+ <h4 className="font-medium text-white">Project Alpha</h4>
496
+ <p className="text-sm text-white/70">Description...</p>
497
+ </div>
498
+ <button className="p-2 rounded-lg text-gray-400 hover:bg-white/10 hover:text-blue-400 transition-colors">
499
+ <VerticalMenuIcon className="h-4 w-4" />
500
+ </button>
501
+ </div>`}
502
+ </pre>
503
+ </div>
504
+ </div>
505
+ </div>
506
+
507
+ {/* Navigation Menu */}
508
+ <div className="!space-y-4">
509
+ <h3 className="text-lg font-semibold !text-blue-300">
510
+ Navigation Menu
511
+ </h3>
512
+ <div className="!space-y-4">
513
+ <div className="rounded-lg border border-white/10 bg-white/5 p-2">
514
+ <div className="flex items-center justify-between px-3 py-2">
515
+ <div className="flex items-center gap-2 font-medium text-white">
516
+ <span>Dashboard</span>
517
+ </div>
518
+ <VerticalMenuIcon className="h-4 w-4 text-gray-400" />
519
+ </div>
520
+ <div className="mx-2 my-1 h-px bg-white/10"></div>
521
+ <div className="flex items-center gap-3 rounded px-3 py-2 text-sm text-white hover:bg-white/10">
522
+ <span className="text-blue-400">📊</span>
523
+ <span>Analytics</span>
524
+ </div>
525
+ <div className="flex items-center gap-3 rounded px-3 py-2 text-sm text-white hover:bg-white/10">
526
+ <span className="text-green-400">👥</span>
527
+ <span>Users</span>
528
+ </div>
529
+ <div className="flex items-center gap-3 rounded px-3 py-2 text-sm text-white hover:bg-white/10">
530
+ <span className="text-purple-400">⚙️</span>
531
+ <span>Settings</span>
532
+ </div>
533
+ </div>
534
+ <div className="rounded-lg bg-black/40 p-4">
535
+ <pre className="overflow-x-auto text-sm !text-green-300">
536
+ {`// Navigation header with menu indicator
537
+ <div className="flex items-center justify-between px-3 py-2">
538
+ <div className="flex items-center gap-2 font-medium text-white">
539
+ <span>Dashboard</span>
540
+ </div>
541
+ <VerticalMenuIcon className="h-4 w-4 text-gray-400" />
542
+ </div>`}
543
+ </pre>
544
+ </div>
545
+ </div>
546
+ </div>
547
+
548
+ {/* Table Row Actions */}
549
+ <div className="!space-y-4">
550
+ <h3 className="text-lg font-semibold !text-blue-300">
551
+ Table Row Actions
552
+ </h3>
553
+ <div className="!space-y-4">
554
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
555
+ <table className="!my-0 w-full">
556
+ <thead className="bg-white/5">
557
+ <tr>
558
+ <th className="px-4 py-3 text-left text-sm font-medium !text-white">
559
+ Name
560
+ </th>
561
+ <th className="px-4 py-3 text-left text-sm font-medium !text-white">
562
+ Status
563
+ </th>
564
+ <th className="px-4 py-3 text-left text-sm font-medium !text-white">
565
+ Actions
566
+ </th>
567
+ </tr>
568
+ </thead>
569
+ <tbody>
570
+ <tr className="border-t border-white/5">
571
+ <td className="px-4 py-3 text-sm !text-white">
572
+ Project Alpha
573
+ </td>
574
+ <td className="px-4 py-3 text-sm">
575
+ <span className="rounded-full bg-green-500/20 px-2 py-1 text-xs text-green-400">
576
+ Active
577
+ </span>
578
+ </td>
579
+ <td className="px-4 py-3">
580
+ <button className="rounded p-1 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
581
+ <VerticalMenuIcon className="h-4 w-4" />
582
+ </button>
583
+ </td>
584
+ </tr>
585
+ <tr className="border-t border-white/5 !bg-black/10">
586
+ <td className="px-4 py-3 text-sm !text-white">
587
+ Project Beta
588
+ </td>
589
+ <td className="px-4 py-3 text-sm">
590
+ <span className="rounded-full bg-yellow-500/20 px-2 py-1 text-xs text-yellow-400">
591
+ Pending
592
+ </span>
593
+ </td>
594
+ <td className="px-4 py-3">
595
+ <button className="rounded p-1 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
596
+ <VerticalMenuIcon className="h-4 w-4" />
597
+ </button>
598
+ </td>
599
+ </tr>
600
+ </tbody>
601
+ </table>
602
+ </div>
603
+ <div className="rounded-lg bg-black/40 p-4">
604
+ <pre className="overflow-x-auto text-sm !text-green-300">
605
+ {`// Table row with actions menu
606
+ <tr className="border-t border-white/5">
607
+ <td className="px-4 py-3 text-sm text-white">Project Alpha</td>
608
+ <td className="px-4 py-3 text-sm">
609
+ <span className="bg-green-500/20 text-green-400 px-2 py-1 rounded-full text-xs">Active</span>
610
+ </td>
611
+ <td className="px-4 py-3">
612
+ <button className="p-1 rounded text-gray-400 hover:bg-white/10 hover:text-blue-400 transition-colors">
613
+ <VerticalMenuIcon className="h-4 w-4" />
614
+ </button>
615
+ </td>
616
+ </tr>`}
617
+ </pre>
618
+ </div>
619
+ </div>
620
+ </div>
621
+ </div>
622
+ </div>
623
+
624
+ {/* Accessibility */}
625
+ <div className="!space-y-8">
626
+ <h2 className="text-center text-3xl font-bold !text-white">
627
+ Accessibility Features
628
+ </h2>
629
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
630
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
631
+ <h3 className="text-lg font-semibold !text-green-300">
632
+ ✅ Built-in Features
633
+ </h3>
634
+ <ul className="!space-y-2 text-sm !text-white/70">
635
+ <li className="!text-white/70">
636
+ Uses Radix UI AccessibleIcon wrapper
637
+ </li>
638
+ <li className="!text-white/70">
639
+ Provides screen reader label "Vertical Menu icon"
640
+ </li>
641
+ <li className="!text-white/70">
642
+ Supports keyboard navigation when interactive
643
+ </li>
644
+ <li className="!text-white/70">
645
+ Maintains proper color contrast ratios
646
+ </li>
647
+ <li className="!text-white/70">
648
+ Scales with user's font size preferences
649
+ </li>
650
+ </ul>
651
+ </div>
652
+
653
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
654
+ <h3 className="text-lg font-semibold !text-blue-300">
655
+ 💡 Best Practices
656
+ </h3>
657
+ <ul className="!space-y-2 text-sm text-white/70">
658
+ <li className="!text-white/70">
659
+ Always provide focus states for interactive buttons
660
+ </li>
661
+ <li className="!text-white/70">
662
+ Use aria-expanded for dropdown states
663
+ </li>
664
+ <li className="!text-white/70">
665
+ Ensure sufficient click/touch target size (44x44px
666
+ minimum)
667
+ </li>
668
+ <li className="!text-white/70">
669
+ Add keyboard shortcuts for menu navigation
670
+ </li>
671
+ <li className="!text-white/70">
672
+ Consider reduced motion preferences
673
+ </li>
674
+ </ul>
675
+ </div>
676
+ </div>
677
+
678
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
679
+ <h3 className="mb-4 text-lg font-semibold !text-purple-300">
680
+ Custom Accessibility Label
681
+ </h3>
682
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
683
+ <div className="rounded-lg bg-black/40 p-4">
684
+ <pre className="overflow-x-auto text-sm !text-blue-300">
685
+ {`// Custom implementation with specific label
686
+ import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
687
+
688
+ function CustomMenuIcon({ label = "Menu options", ...props }) {
689
+ return (
690
+ <AccessibleIcon label={label}>
691
+ <VerticalMenuIcon {...props} />
692
+ </AccessibleIcon>
693
+ )
694
+ }
695
+
696
+ // Usage with specific context
697
+ <CustomMenuIcon
698
+ label="User account options"
699
+ className="h-5 w-5 text-blue-400"
700
+ />`}
701
+ </pre>
702
+ </div>
703
+ <div className="!space-y-4">
704
+ <p className="text-sm !text-white/70">
705
+ For specific contexts, you can wrap the VerticalMenuIcon
706
+ with a custom AccessibleIcon component that provides
707
+ more descriptive labels.
708
+ </p>
709
+ <div className="rounded-lg border border-blue-500/20 bg-blue-500/10 p-4">
710
+ <div className="flex items-center gap-2 text-sm text-blue-200">
711
+ <VerticalMenuIcon className="h-4 w-4" />
712
+ <span>
713
+ This approach gives screen readers more context
714
+ </span>
715
+ </div>
716
+ </div>
717
+ </div>
718
+ </div>
719
+ </div>
720
+ </div>
721
+
722
+ {/* Related Icons */}
723
+ <div className="!space-y-8">
724
+ <h2 className="text-center text-3xl font-bold !text-white">
725
+ Related Icons
726
+ </h2>
727
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
728
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
729
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
730
+ <span className="!text-2xl !text-white">☰</span>
731
+ </div>
732
+ <div>
733
+ <div className="font-medium text-white">
734
+ HamburgerIcon
735
+ </div>
736
+ <div className="text-xs text-white/60">
737
+ Main navigation
738
+ </div>
739
+ </div>
740
+ </div>
741
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
742
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
743
+ <span className="!text-2xl !text-white">⋯</span>
744
+ </div>
745
+ <div>
746
+ <div className="font-medium text-white">
747
+ HorizontalMenuIcon
748
+ </div>
749
+ <div className="text-xs text-white/60">
750
+ Horizontal menu
751
+ </div>
752
+ </div>
753
+ </div>
754
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
755
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
756
+ <span className="!text-2xl !text-white">⚙️</span>
757
+ </div>
758
+ <div>
759
+ <div className="font-medium text-white">SettingsIcon</div>
760
+ <div className="text-xs text-white/60">Configuration</div>
761
+ </div>
762
+ </div>
763
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
764
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
765
+ <span className="!text-2xl !text-white">▼</span>
766
+ </div>
767
+ <div>
768
+ <div className="font-medium text-white">DropdownIcon</div>
769
+ <div className="text-xs text-white/60">
770
+ Dropdown states
771
+ </div>
772
+ </div>
773
+ </div>
774
+ </div>
775
+ </div>
776
+ </div>
777
+
778
+ {/* Footer */}
779
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
780
+ <div className="!mx-auto max-w-7xl px-6 py-8">
781
+ <div className="!space-y-4 text-center">
782
+ <p className="!text-white/60">
783
+ VerticalMenuIcon is part of the Aural UI icon library, built
784
+ with accessibility and consistency in mind.
785
+ </p>
786
+ <p className="text-sm !text-white/40">
787
+ All icons use Radix UI's AccessibleIcon for screen reader
788
+ compatibility and follow WCAG guidelines.
789
+ </p>
790
+ </div>
791
+ </div>
792
+ </div>
793
+ </div>
794
+ </>
795
+ ),
796
+ },
797
+ },
798
+ tags: ["autodocs"],
799
+ argTypes: {
800
+ width: {
801
+ control: { type: "range", min: 8, max: 96, step: 2 },
802
+ description: "Width of the icon in pixels",
803
+ },
804
+ height: {
805
+ control: { type: "range", min: 8, max: 96, step: 2 },
806
+ description: "Height of the icon in pixels",
807
+ },
808
+ fill: {
809
+ control: "color",
810
+ description: "Fill color of the icon",
811
+ },
812
+ className: {
813
+ control: "text",
814
+ description: "CSS classes for styling",
815
+ },
816
+ },
817
+ }
818
+
819
+ export default meta
820
+ type Story = StoryObj<typeof VerticalMenuIcon>
821
+
822
+ // Story parameters for consistent dark theme
823
+ const storyParameters = {
824
+ backgrounds: {
825
+ default: "dark",
826
+ values: [
827
+ { name: "dark", value: "#0a0a0a" },
828
+ { name: "darker", value: "#000000" },
829
+ ],
830
+ },
831
+ }
832
+
833
+ export const Default: Story = {
834
+ args: {
835
+ width: 24,
836
+ height: 24,
837
+ className: "text-blue-400",
838
+ },
839
+ parameters: storyParameters,
840
+ render: (args) => (
841
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
842
+ <VerticalMenuIcon {...args} />
843
+ </div>
844
+ ),
845
+ }
846
+
847
+ export const SizeVariations: Story = {
848
+ parameters: {
849
+ ...storyParameters,
850
+ docs: {
851
+ description: {
852
+ story:
853
+ "VerticalMenuIcon in different sizes, from small UI elements to large displays.",
854
+ },
855
+ },
856
+ },
857
+ render: () => (
858
+ <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">
859
+ <div className="text-center">
860
+ <VerticalMenuIcon className="!mx-auto mb-2 h-3 w-3 text-blue-400" />
861
+ <span className="text-xs text-white/60">12px</span>
862
+ </div>
863
+ <div className="text-center">
864
+ <VerticalMenuIcon className="!mx-auto mb-2 h-4 w-4 text-blue-400" />
865
+ <span className="text-xs text-white/60">16px</span>
866
+ </div>
867
+ <div className="text-center">
868
+ <VerticalMenuIcon className="!mx-auto mb-2 h-5 w-5 text-blue-400" />
869
+ <span className="text-xs text-white/60">20px</span>
870
+ </div>
871
+ <div className="text-center">
872
+ <VerticalMenuIcon className="!mx-auto mb-2 h-6 w-6 text-blue-400" />
873
+ <span className="text-xs text-white/60">24px</span>
874
+ </div>
875
+ <div className="text-center">
876
+ <VerticalMenuIcon className="!mx-auto mb-2 h-8 w-8 text-blue-400" />
877
+ <span className="text-xs text-white/60">32px</span>
878
+ </div>
879
+ <div className="text-center">
880
+ <VerticalMenuIcon className="!mx-auto mb-2 h-12 w-12 text-blue-400" />
881
+ <span className="text-xs text-white/60">48px</span>
882
+ </div>
883
+ </div>
884
+ ),
885
+ }
886
+
887
+ export const ColorVariations: Story = {
888
+ parameters: {
889
+ ...storyParameters,
890
+ docs: {
891
+ description: {
892
+ story: "VerticalMenuIcon in different colors for various UI contexts.",
893
+ },
894
+ },
895
+ },
896
+ render: () => (
897
+ <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-4">
898
+ <div className="text-center">
899
+ <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">
900
+ <VerticalMenuIcon className="h-8 w-8 text-gray-400" />
901
+ </div>
902
+ <div className="text-sm font-medium text-white">Default</div>
903
+ <div className="text-xs text-gray-400">text-gray-400</div>
904
+ </div>
905
+ <div className="text-center">
906
+ <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">
907
+ <VerticalMenuIcon className="h-8 w-8 text-blue-400" />
908
+ </div>
909
+ <div className="text-sm font-medium text-white">Primary</div>
910
+ <div className="text-xs text-blue-400">text-blue-400</div>
911
+ </div>
912
+ <div className="text-center">
913
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-purple-500/30 bg-purple-500/20">
914
+ <VerticalMenuIcon className="h-8 w-8 text-purple-400" />
915
+ </div>
916
+ <div className="text-sm font-medium text-white">Secondary</div>
917
+ <div className="text-xs text-purple-400">text-purple-400</div>
918
+ </div>
919
+ <div className="text-center">
920
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-white/20 bg-white/5">
921
+ <VerticalMenuIcon className="h-8 w-8 text-white/40" />
922
+ </div>
923
+ <div className="text-sm font-medium text-white">Disabled</div>
924
+ <div className="text-xs text-white/40">text-white/40</div>
925
+ </div>
926
+ </div>
927
+ ),
928
+ }
929
+
930
+ export const UsageExamples: Story = {
931
+ parameters: {
932
+ ...storyParameters,
933
+ docs: {
934
+ description: {
935
+ story:
936
+ "Real-world usage examples showing VerticalMenuIcon in different UI contexts.",
937
+ },
938
+ },
939
+ },
940
+ render: () => (
941
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
942
+ {/* Dropdown Menu */}
943
+ <div className="!space-y-2">
944
+ <h3 className="text-sm font-medium text-white">Dropdown Menu</h3>
945
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
946
+ <div className="flex items-center justify-between">
947
+ <div className="flex items-center gap-3">
948
+ <div className="h-10 w-10 rounded-lg bg-gradient-to-br from-blue-500 to-purple-600"></div>
949
+ <div>
950
+ <div className="text-sm font-medium text-white">John Smith</div>
951
+ <div className="text-xs text-white/60">john@example.com</div>
952
+ </div>
953
+ </div>
954
+ <button className="rounded-lg p-2 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
955
+ <VerticalMenuIcon className="h-5 w-5" />
956
+ </button>
957
+ </div>
958
+ </div>
959
+ </div>
960
+
961
+ {/* Card Actions */}
962
+ <div className="!space-y-2">
963
+ <h3 className="text-sm font-medium text-white">Card Actions</h3>
964
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
965
+ <div className="flex items-start justify-between">
966
+ <div className="!space-y-2">
967
+ <h4 className="font-medium text-white">Project Alpha</h4>
968
+ <p className="text-sm text-white/70">
969
+ A new approach to user interface design that focuses on
970
+ accessibility.
971
+ </p>
972
+ <div className="flex items-center gap-2 text-xs text-white/60">
973
+ <span>Updated 2 hours ago</span>
974
+ </div>
975
+ </div>
976
+ <button className="rounded-lg p-2 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
977
+ <VerticalMenuIcon className="h-4 w-4" />
978
+ </button>
979
+ </div>
980
+ </div>
981
+ </div>
982
+
983
+ {/* Table Row */}
984
+ <div className="!space-y-2">
985
+ <h3 className="text-sm font-medium text-white">Table Row Actions</h3>
986
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
987
+ <table className="w-full">
988
+ <thead className="bg-white/5">
989
+ <tr>
990
+ <th className="px-4 py-3 text-left text-sm font-medium text-white">
991
+ Name
992
+ </th>
993
+ <th className="px-4 py-3 text-left text-sm font-medium text-white">
994
+ Status
995
+ </th>
996
+ <th className="px-4 py-3 text-left text-sm font-medium text-white">
997
+ Actions
998
+ </th>
999
+ </tr>
1000
+ </thead>
1001
+ <tbody>
1002
+ <tr className="border-t border-white/5">
1003
+ <td className="px-4 py-3 text-sm text-white">Project Alpha</td>
1004
+ <td className="px-4 py-3 text-sm">
1005
+ <span className="rounded-full bg-green-500/20 px-2 py-1 text-xs text-green-400">
1006
+ Active
1007
+ </span>
1008
+ </td>
1009
+ <td className="px-4 py-3">
1010
+ <button className="rounded p-1 text-gray-400 transition-colors hover:bg-white/10 hover:text-blue-400">
1011
+ <VerticalMenuIcon className="h-4 w-4" />
1012
+ </button>
1013
+ </td>
1014
+ </tr>
1015
+ </tbody>
1016
+ </table>
1017
+ </div>
1018
+ </div>
1019
+ </div>
1020
+ ),
1021
+ }
1022
+
1023
+ export const Playground: Story = {
1024
+ parameters: {
1025
+ ...storyParameters,
1026
+ docs: {
1027
+ description: {
1028
+ story:
1029
+ "Interactive playground to experiment with different VerticalMenuIcon configurations.",
1030
+ },
1031
+ },
1032
+ },
1033
+ args: {
1034
+ width: 32,
1035
+ height: 32,
1036
+ className: "text-blue-400",
1037
+ },
1038
+ render: (args) => (
1039
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1040
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1041
+ <VerticalMenuIcon {...args} />
1042
+ </div>
1043
+ </div>
1044
+ ),
1045
+ }