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,1196 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { MoveVerticalIcon } from "."
5
+
6
+ const meta: Meta<typeof MoveVerticalIcon> = {
7
+ title: "Icons/MoveVerticalIcon",
8
+ component: MoveVerticalIcon,
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
+ @keyframes slide-up-down {
81
+ 0%, 100% { transform: translateY(0); }
82
+ 25% { transform: translateY(-4px); }
83
+ 75% { transform: translateY(4px); }
84
+ }
85
+ .animate-slide-vertical {
86
+ animation: slide-up-down 2s ease-in-out infinite;
87
+ }
88
+ @keyframes pulse-bounce {
89
+ 0%, 100% { transform: scale(1) translateY(0); }
90
+ 50% { transform: scale(1.05) translateY(-2px); }
91
+ }
92
+ .animate-pulse-bounce {
93
+ animation: pulse-bounce 2s ease-in-out infinite;
94
+ }
95
+ `}
96
+ </style>
97
+
98
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-blue-900/20 to-gray-900">
99
+ {/* Header */}
100
+ <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
101
+ <div className="absolute inset-0 bg-gradient-to-r from-blue-500/10 via-transparent to-purple-500/10" />
102
+ <div className="relative !mx-auto max-w-7xl px-6 py-16">
103
+ <div className="!space-y-6 text-center">
104
+ <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">
105
+ <MoveVerticalIcon className="h-12 w-12 text-blue-400" />
106
+ </div>
107
+ <h1 className="!text-fm-primary text-5xl font-bold">
108
+ MoveVerticalIcon
109
+ </h1>
110
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
111
+ A vertical movement icon featuring up and down arrows,
112
+ perfect for indicating vertical drag operations, sortable
113
+ lists, up/down navigation, and reordering controls. Built
114
+ with accessibility in mind using Radix UI's AccessibleIcon
115
+ wrapper.
116
+ </p>
117
+
118
+ {/* Stats */}
119
+ <div className="flex items-center justify-center gap-8 pt-8">
120
+ <div className="text-center">
121
+ <div className="text-3xl font-bold text-blue-300">
122
+ Sort
123
+ </div>
124
+ <div className="text-sm text-white/60">List ordering</div>
125
+ </div>
126
+ <div className="h-8 w-px bg-white/20" />
127
+ <div className="text-center">
128
+ <div className="text-3xl font-bold text-purple-300">
129
+ Navigate
130
+ </div>
131
+ <div className="text-sm text-white/60">
132
+ Up/down movement
133
+ </div>
134
+ </div>
135
+ <div className="h-8 w-px bg-white/20" />
136
+ <div className="text-center">
137
+ <div className="text-3xl font-bold text-cyan-300">
138
+ Reorder
139
+ </div>
140
+ <div className="text-sm text-white/60">
141
+ Interactive handles
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+
149
+ {/* Content */}
150
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
151
+ {/* Quick Usage */}
152
+ <div className="!space-y-8">
153
+ <h2 className="text-center text-3xl font-bold !text-white">
154
+ Quick Start
155
+ </h2>
156
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
157
+ <div className="!space-y-4">
158
+ <h3 className="text-xl font-semibold !text-blue-300">
159
+ Basic Usage
160
+ </h3>
161
+ <div className="rounded-lg bg-black/40 p-4">
162
+ <pre className="overflow-x-auto text-sm !text-green-300">
163
+ {`import { MoveVerticalIcon } from "@icons/move-vertical-icon"
164
+
165
+ function SortableItem({ children }) {
166
+ return (
167
+ <div className="flex items-center gap-3">
168
+ <MoveVerticalIcon className="h-4 w-4 text-gray-500 cursor-move " />
169
+ <span>{children}</span>
170
+ </div>
171
+ )
172
+ }`}
173
+ </pre>
174
+ </div>
175
+ </div>
176
+
177
+ <div className="!space-y-4">
178
+ <h3 className="text-xl font-semibold !text-blue-300">
179
+ Live Preview
180
+ </h3>
181
+ <div className="flex items-center justify-center rounded-lg border border-white/10 bg-white/5 p-6">
182
+ <div className="!space-y-2">
183
+ {["First Item", "Second Item", "Third Item"].map(
184
+ (item, index) => (
185
+ <div
186
+ key={index}
187
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-2"
188
+ >
189
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-blue-400 hover:text-blue-300" />
190
+ <span className="text-sm text-white/80">
191
+ {item}
192
+ </span>
193
+ </div>
194
+ )
195
+ )}
196
+ </div>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ </div>
201
+
202
+ {/* Props Documentation */}
203
+ <div className="!space-y-8">
204
+ <h2 className="text-center text-3xl font-bold !text-white">
205
+ Props & Configuration
206
+ </h2>
207
+
208
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
209
+ <div className="bg-white/5 p-4">
210
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
211
+ </div>
212
+ <table className="!my-0 w-full">
213
+ <thead className="bg-white/5">
214
+ <tr className="border-b border-white/10">
215
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
216
+ Prop
217
+ </th>
218
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
219
+ Type
220
+ </th>
221
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
222
+ Default
223
+ </th>
224
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
225
+ Description
226
+ </th>
227
+ </tr>
228
+ </thead>
229
+ <tbody>
230
+ <tr className="border-b border-white/5">
231
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
232
+ width
233
+ </td>
234
+ <td className="px-6 py-4 text-sm !text-white/70">
235
+ number | string
236
+ </td>
237
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
238
+ <td className="px-6 py-4 text-sm !text-white/70">
239
+ Width of the icon in pixels
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-blue-300">
244
+ height
245
+ </td>
246
+ <td className="px-6 py-4 text-sm !text-white/70">
247
+ number | string
248
+ </td>
249
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
250
+ <td className="px-6 py-4 text-sm !text-white/70">
251
+ Height of the icon in pixels
252
+ </td>
253
+ </tr>
254
+ <tr className="border-b border-white/5">
255
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
256
+ stroke
257
+ </td>
258
+ <td className="px-6 py-4 text-sm !text-white/70">
259
+ string
260
+ </td>
261
+ <td className="px-6 py-4 text-sm !text-white/50">
262
+ currentColor
263
+ </td>
264
+ <td className="px-6 py-4 text-sm !text-white/70">
265
+ Stroke color of the icon lines
266
+ </td>
267
+ </tr>
268
+ <tr className="border-b border-white/5 !bg-black/10">
269
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
270
+ strokeWidth
271
+ </td>
272
+ <td className="px-6 py-4 text-sm !text-white/70">
273
+ string | number
274
+ </td>
275
+ <td className="px-6 py-4 text-sm !text-white/50">2</td>
276
+ <td className="px-6 py-4 text-sm !text-white/70">
277
+ Width of the stroke lines
278
+ </td>
279
+ </tr>
280
+ <tr className="border-b border-white/5">
281
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
282
+ className
283
+ </td>
284
+ <td className="px-6 py-4 text-sm !text-white/70">
285
+ string
286
+ </td>
287
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
288
+ <td className="px-6 py-4 text-sm !text-white/70">
289
+ CSS classes for styling (use for overrides)
290
+ </td>
291
+ </tr>
292
+ <tr className="!bg-black/10">
293
+ <td className="px-6 py-4 font-mono text-sm !text-blue-300">
294
+ ...svgProps
295
+ </td>
296
+ <td className="px-6 py-4 text-sm !text-white/70">
297
+ SVGProps
298
+ </td>
299
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
300
+ <td className="px-6 py-4 text-sm !text-white/70">
301
+ All standard SVG element props
302
+ </td>
303
+ </tr>
304
+ </tbody>
305
+ </table>
306
+ </div>
307
+ </div>
308
+
309
+ {/* Size Variations */}
310
+ <div className="!space-y-8">
311
+ <h2 className="text-center text-3xl font-bold !text-white">
312
+ Size Variations
313
+ </h2>
314
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
315
+ <div className="!space-y-6">
316
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
317
+ <div className="!space-y-4">
318
+ <h3 className="text-lg font-semibold !text-blue-300">
319
+ Standard Sizes
320
+ </h3>
321
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
322
+ <div className="text-center">
323
+ <MoveVerticalIcon className="!mx-auto mb-2 h-3 w-3 text-blue-400" />
324
+ <span className="text-xs text-white/60">12px</span>
325
+ </div>
326
+ <div className="text-center">
327
+ <MoveVerticalIcon className="!mx-auto mb-2 h-4 w-4 text-blue-400" />
328
+ <span className="text-xs text-white/60">16px</span>
329
+ </div>
330
+ <div className="text-center">
331
+ <MoveVerticalIcon className="!mx-auto mb-2 h-5 w-5 text-blue-400" />
332
+ <span className="text-xs text-white/60">20px</span>
333
+ </div>
334
+ <div className="text-center">
335
+ <MoveVerticalIcon className="!mx-auto mb-2 h-6 w-6 text-blue-400" />
336
+ <span className="text-xs text-white/60">24px</span>
337
+ </div>
338
+ <div className="text-center">
339
+ <MoveVerticalIcon className="!mx-auto mb-2 h-8 w-8 text-blue-400" />
340
+ <span className="text-xs text-white/60">32px</span>
341
+ </div>
342
+ <div className="text-center">
343
+ <MoveVerticalIcon className="!mx-auto mb-2 h-12 w-12 text-blue-400" />
344
+ <span className="text-xs text-white/60">48px</span>
345
+ </div>
346
+ </div>
347
+ </div>
348
+
349
+ <div className="!space-y-4">
350
+ <h3 className="text-lg font-semibold !text-blue-300">
351
+ Code Example
352
+ </h3>
353
+ <div className="rounded-lg bg-black/40 p-4">
354
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
355
+ {`// Small (16px)
356
+ <MoveVerticalIcon className="h-4 w-4 " />
357
+
358
+ // Medium (24px)
359
+ <MoveVerticalIcon className="h-6 w-6 " />
360
+
361
+ // Large (32px)
362
+ <MoveVerticalIcon className="h-8 w-8 " />
363
+
364
+ // Custom size with props
365
+ <MoveVerticalIcon width={40} height={40} />`}
366
+ </pre>
367
+ </div>
368
+ </div>
369
+ </div>
370
+ </div>
371
+ </div>
372
+ </div>
373
+
374
+ {/* Color Variations */}
375
+ <div className="!space-y-8">
376
+ <h2 className="text-center text-3xl font-bold !text-white">
377
+ Color Variations
378
+ </h2>
379
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
380
+ <div className="!space-y-4">
381
+ <h3 className="text-lg font-semibold !text-blue-300">
382
+ Semantic Colors
383
+ </h3>
384
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
385
+ <div className="flex items-center gap-4">
386
+ <MoveVerticalIcon className="h-6 w-6 text-blue-400" />
387
+ <div>
388
+ <div className="text-sm font-medium text-white">
389
+ Primary
390
+ </div>
391
+ <div className="text-xs text-white/60">
392
+ text-blue-400
393
+ </div>
394
+ </div>
395
+ </div>
396
+ <div className="flex items-center gap-4">
397
+ <MoveVerticalIcon className="h-6 w-6 text-purple-400" />
398
+ <div>
399
+ <div className="text-sm font-medium text-white">
400
+ Interactive
401
+ </div>
402
+ <div className="text-xs text-white/60">
403
+ text-purple-400
404
+ </div>
405
+ </div>
406
+ </div>
407
+ <div className="flex items-center gap-4">
408
+ <MoveVerticalIcon className="h-6 w-6 text-gray-400" />
409
+ <div>
410
+ <div className="text-sm font-medium text-white">
411
+ Disabled
412
+ </div>
413
+ <div className="text-xs text-white/60">
414
+ text-gray-400
415
+ </div>
416
+ </div>
417
+ </div>
418
+ <div className="flex items-center gap-4">
419
+ <MoveVerticalIcon className="h-6 w-6 text-cyan-400" />
420
+ <div>
421
+ <div className="text-sm font-medium text-white">
422
+ Accent
423
+ </div>
424
+ <div className="text-xs text-white/60">
425
+ text-cyan-400
426
+ </div>
427
+ </div>
428
+ </div>
429
+ </div>
430
+ </div>
431
+
432
+ <div className="!space-y-4">
433
+ <h3 className="text-lg font-semibold !text-blue-300">
434
+ Custom Colors
435
+ </h3>
436
+ <div className="rounded-lg bg-black/40 p-4">
437
+ <pre className="overflow-x-auto text-sm !text-green-300">
438
+ {`// Using Tailwind classes with
439
+ <MoveVerticalIcon className="h-6 w-6 text-blue-400 " />
440
+ <MoveVerticalIcon className="h-6 w-6 text-purple-500 " />
441
+
442
+ // Using CSS custom properties
443
+ <MoveVerticalIcon
444
+ className="h-6 w-6 "
445
+ style={{ color: 'var(--color-primary)' }}
446
+ />
447
+
448
+ // Direct stroke prop
449
+ <MoveVerticalIcon
450
+ width={24}
451
+ height={24}
452
+ stroke="#3b82f6"
453
+ />`}
454
+ </pre>
455
+ </div>
456
+ </div>
457
+ </div>
458
+ </div>
459
+
460
+ {/* Usage Examples */}
461
+ <div className="!space-y-8">
462
+ <h2 className="text-center text-3xl font-bold !text-white">
463
+ Usage Examples
464
+ </h2>
465
+
466
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
467
+ {/* Sortable List */}
468
+ <div className="!space-y-4">
469
+ <h3 className="text-lg font-semibold !text-blue-300">
470
+ Sortable List
471
+ </h3>
472
+ <div className="!space-y-4">
473
+ <div className="!space-y-2 rounded-lg border border-white/10 bg-white/5 p-4">
474
+ {["First Item", "Second Item", "Third Item"].map(
475
+ (item, index) => (
476
+ <div
477
+ key={index}
478
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3"
479
+ >
480
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-blue-400 hover:text-blue-300" />
481
+ <span className="text-sm text-white">{item}</span>
482
+ </div>
483
+ )
484
+ )}
485
+ </div>
486
+ <div className="rounded-lg bg-black/40 p-4">
487
+ <pre className="overflow-x-auto text-sm !text-green-300">
488
+ {`{items.map((item, index) => (
489
+ <div key={index} className="flex items-center gap-3 p-3">
490
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-blue-400 hover:text-blue-300 " />
491
+ <span>{item}</span>
492
+ </div>
493
+ ))}`}
494
+ </pre>
495
+ </div>
496
+ </div>
497
+ </div>
498
+
499
+ {/* Up/Down Navigation */}
500
+ <div className="!space-y-4">
501
+ <h3 className="text-lg font-semibold !text-blue-300">
502
+ Up/Down Navigation
503
+ </h3>
504
+ <div className="!space-y-4">
505
+ <div className="flex justify-center">
506
+ <div className="flex flex-col gap-2">
507
+ <button className="rounded-lg border border-white/20 bg-white/5 p-3 transition-colors hover:bg-white/10">
508
+ <MoveVerticalIcon className="h-5 w-5 rotate-180 text-white" />
509
+ </button>
510
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
511
+ <span className="text-sm text-white/70">
512
+ Content Item
513
+ </span>
514
+ </div>
515
+ <button className="rounded-lg border border-white/20 bg-white/5 p-3 transition-colors hover:bg-white/10">
516
+ <MoveVerticalIcon className="h-5 w-5 text-white" />
517
+ </button>
518
+ </div>
519
+ </div>
520
+ <div className="rounded-lg bg-black/40 p-4">
521
+ <pre className="overflow-x-auto text-sm !text-green-300">
522
+ {`// Up button (rotated)
523
+ <button onClick={moveUp}>
524
+ <MoveVerticalIcon className="h-5 w-5 rotate-180 text-white " />
525
+ </button>
526
+
527
+ // Down button
528
+ <button onClick={moveDown}>
529
+ <MoveVerticalIcon className="h-5 w-5 text-white " />
530
+ </button>`}
531
+ </pre>
532
+ </div>
533
+ </div>
534
+ </div>
535
+
536
+ {/* Table Row Reorder */}
537
+ <div className="!space-y-4">
538
+ <h3 className="text-lg font-semibold !text-blue-300">
539
+ Table Row Reorder
540
+ </h3>
541
+ <div className="!space-y-4">
542
+ <div className="rounded-lg border border-white/10 bg-white/5">
543
+ <div className="flex border-b border-white/10 bg-white/5 p-3">
544
+ <div className="w-8"></div>
545
+ <div className="flex-1 text-sm font-medium text-white">
546
+ Name
547
+ </div>
548
+ <div className="flex-1 text-sm font-medium text-white">
549
+ Email
550
+ </div>
551
+ <div className="w-20 text-sm font-medium text-white">
552
+ Status
553
+ </div>
554
+ </div>
555
+ {[
556
+ {
557
+ name: "John Doe",
558
+ email: "john@example.com",
559
+ status: "Active",
560
+ },
561
+ {
562
+ name: "Jane Smith",
563
+ email: "jane@example.com",
564
+ status: "Inactive",
565
+ },
566
+ ].map((row, index) => (
567
+ <div
568
+ key={index}
569
+ className="flex items-center border-b border-white/10 p-3 last:border-b-0"
570
+ >
571
+ <div className="w-8">
572
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-white/30 hover:text-white/60" />
573
+ </div>
574
+ <div className="flex-1 text-sm text-white/70">
575
+ {row.name}
576
+ </div>
577
+ <div className="flex-1 text-sm text-white/70">
578
+ {row.email}
579
+ </div>
580
+ <div className="w-20">
581
+ <span
582
+ className={`rounded-full px-2 py-1 text-xs ${
583
+ row.status === "Active"
584
+ ? "bg-green-500/20 text-green-300"
585
+ : "bg-gray-500/20 text-gray-300"
586
+ }`}
587
+ >
588
+ {row.status}
589
+ </span>
590
+ </div>
591
+ </div>
592
+ ))}
593
+ </div>
594
+ <div className="rounded-lg bg-black/40 p-4">
595
+ <pre className="overflow-x-auto text-sm !text-green-300">
596
+ {`<td className="w-8">
597
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-white/30 hover:text-white/60 " />
598
+ </td>`}
599
+ </pre>
600
+ </div>
601
+ </div>
602
+ </div>
603
+
604
+ {/* Card Reordering */}
605
+ <div className="!space-y-4">
606
+ <h3 className="text-lg font-semibold !text-blue-300">
607
+ Card Reordering
608
+ </h3>
609
+ <div className="!space-y-4">
610
+ <div className="!space-y-3">
611
+ {["Task A", "Task B", "Task C"].map((task, index) => (
612
+ <div
613
+ key={index}
614
+ className="relative rounded-lg border border-white/10 bg-white/5 p-4"
615
+ >
616
+ <div className="absolute top-3 right-3">
617
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-white/30 hover:text-white/60" />
618
+ </div>
619
+ <div>
620
+ <h4 className="text-sm font-medium !text-white">
621
+ {task}
622
+ </h4>
623
+ <p className="text-xs !text-white/50">
624
+ Task description goes here
625
+ </p>
626
+ </div>
627
+ </div>
628
+ ))}
629
+ </div>
630
+ <div className="rounded-lg bg-black/40 p-4">
631
+ <pre className="overflow-x-auto text-sm !text-green-300">
632
+ {`<div className="relative rounded-lg p-4">
633
+ <div className="absolute top-3 right-3">
634
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-white/30 hover:text-white/60 " />
635
+ </div>
636
+ <div>{content}</div>
637
+ </div>`}
638
+ </pre>
639
+ </div>
640
+ </div>
641
+ </div>
642
+ </div>
643
+ </div>
644
+
645
+ {/* Interactive States */}
646
+ <div className="!space-y-8">
647
+ <h2 className="text-center text-3xl font-bold !text-white">
648
+ Interactive States & Animations
649
+ </h2>
650
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
651
+ <div className="!space-y-4">
652
+ <h3 className="text-lg font-semibold !text-blue-300">
653
+ Hover & Animation Effects
654
+ </h3>
655
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
656
+ <div className="flex items-center gap-4">
657
+ <MoveVerticalIcon className="h-6 w-6 text-white/60 transition-colors hover:text-blue-400" />
658
+ <div>
659
+ <div className="text-sm font-medium text-white">
660
+ Color Change
661
+ </div>
662
+ <div className="text-xs text-white/60">
663
+ Hover to see effect
664
+ </div>
665
+ </div>
666
+ </div>
667
+ <div className="flex items-center gap-4">
668
+ <MoveVerticalIcon className="h-6 w-6 text-white transition-transform hover:scale-110" />
669
+ <div>
670
+ <div className="text-sm font-medium text-white">
671
+ Scale Up
672
+ </div>
673
+ <div className="text-xs text-white/60">
674
+ Scale on hover
675
+ </div>
676
+ </div>
677
+ </div>
678
+ <div className="flex items-center gap-4">
679
+ <MoveVerticalIcon className="animate-slide-vertical h-6 w-6 text-blue-400" />
680
+ <div>
681
+ <div className="text-sm font-medium text-white">
682
+ Vertical Slide
683
+ </div>
684
+ <div className="text-xs text-white/60">
685
+ Continuous animation
686
+ </div>
687
+ </div>
688
+ </div>
689
+ <div className="flex items-center gap-4">
690
+ <MoveVerticalIcon className="animate-pulse-bounce h-6 w-6 text-purple-400" />
691
+ <div>
692
+ <div className="text-sm font-medium text-white">
693
+ Pulse Bounce
694
+ </div>
695
+ <div className="text-xs text-white/60">
696
+ Bounce effect
697
+ </div>
698
+ </div>
699
+ </div>
700
+ </div>
701
+ </div>
702
+
703
+ <div className="!space-y-4">
704
+ <h3 className="text-lg font-semibold !text-blue-300">
705
+ Cursor & State Examples
706
+ </h3>
707
+ <div className="rounded-lg bg-black/40 p-4">
708
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
709
+ {`// Color change on hover
710
+ <MoveVerticalIcon className="h-6 w-6 text-white/60 transition-colors hover:text-blue-400 " />
711
+
712
+ // Scale up on hover
713
+ <MoveVerticalIcon className="h-6 w-6 text-white transition-transform hover:scale-110 " />
714
+
715
+ // Cursor for drag operations
716
+ <MoveVerticalIcon className="h-6 w-6 cursor-move text-blue-400 " />
717
+
718
+ // Cursor for grab operations
719
+ <MoveVerticalIcon className="h-6 w-6 cursor-grab hover:cursor-grabbing text-blue-400 " />
720
+
721
+ // With focus states
722
+ <MoveVerticalIcon className="h-6 w-6 focus:ring-2 focus:ring-blue-500 focus:outline-none " />`}
723
+ </pre>
724
+ </div>
725
+ </div>
726
+ </div>
727
+ </div>
728
+
729
+ {/* Accessibility */}
730
+ <div className="!space-y-8">
731
+ <h2 className="text-center text-3xl font-bold !text-white">
732
+ Accessibility Features
733
+ </h2>
734
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
735
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
736
+ <h3 className="text-lg font-semibold !text-green-300">
737
+ ✅ Built-in Features
738
+ </h3>
739
+ <ul className="!space-y-2 text-sm !text-white/70">
740
+ <li className="!text-white/70">
741
+ Uses Radix UI AccessibleIcon wrapper
742
+ </li>
743
+ <li className="!text-white/70">
744
+ Provides screen reader label "Move Vertical icon"
745
+ </li>
746
+ <li className="!text-white/70">
747
+ Supports keyboard navigation when interactive
748
+ </li>
749
+ <li className="!text-white/70">
750
+ Maintains proper color contrast ratios
751
+ </li>
752
+ <li className="!text-white/70">
753
+ Scales with user's font size preferences
754
+ </li>
755
+ </ul>
756
+ </div>
757
+
758
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
759
+ <h3 className="text-lg font-semibold !text-blue-300">
760
+ 💡 Best Practices
761
+ </h3>
762
+ <ul className="!space-y-2 text-sm text-white/70">
763
+ <li className="!text-white/70">
764
+ Always provide descriptive ARIA labels for interactive
765
+ elements
766
+ </li>
767
+ <li className="!text-white/70">
768
+ Use appropriate cursor styles for different interactions
769
+ </li>
770
+ <li className="!text-white/70">
771
+ Ensure sufficient click/touch target sizes
772
+ </li>
773
+ <li className="!text-white/70">
774
+ Add focus states for keyboard navigation
775
+ </li>
776
+ <li className="!text-white/70">
777
+ Consider motion sensitivity for animations
778
+ </li>
779
+ </ul>
780
+ </div>
781
+ </div>
782
+
783
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
784
+ <h3 className="mb-4 text-lg font-semibold !text-blue-300">
785
+ Interactive Element Accessibility
786
+ </h3>
787
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
788
+ <div className="rounded-lg bg-black/40 p-4">
789
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
790
+ {`// Sortable list item with proper ARIA
791
+ <div
792
+ role="listitem"
793
+ aria-label="Sortable item for"
794
+ className="flex items-center gap-3"
795
+ >
796
+ <button
797
+ aria-label="Move item up"
798
+ className="p-1 rounded focus:ring-2 focus:ring-blue-500"
799
+ >
800
+ <MoveVerticalIcon className="h-4 w-4 text-blue-400 " />
801
+ </button>
802
+ <span>{item.name}</span>
803
+ </div>
804
+
805
+ // Navigation buttons
806
+ <button aria-label="Move up">
807
+ <MoveVerticalIcon className="h-5 w-5 rotate-180 " />
808
+ </button>
809
+ <button aria-label="Move down">
810
+ <MoveVerticalIcon className="h-5 w-5 " />
811
+ </button>`}
812
+ </pre>
813
+ </div>
814
+ <div className="!space-y-4">
815
+ <p className="text-sm !text-white/70">
816
+ When using MoveVerticalIcon for interactive controls,
817
+ provide clear context about the action being performed
818
+ and the current state.
819
+ </p>
820
+ <div className="rounded-lg border border-blue-500/20 bg-blue-500/10 p-4">
821
+ <div className="flex items-center gap-2 text-sm text-blue-200">
822
+ <MoveVerticalIcon className="h-4 w-4" />
823
+ <span>
824
+ This approach gives screen readers more context
825
+ about the movement direction and purpose
826
+ </span>
827
+ </div>
828
+ </div>
829
+ </div>
830
+ </div>
831
+ </div>
832
+ </div>
833
+
834
+ {/* Related Icons */}
835
+ <div className="!space-y-8">
836
+ <h2 className="text-center text-3xl font-bold !text-white">
837
+ Related Icons
838
+ </h2>
839
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
840
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
841
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
842
+ <span className="text-2xl">↔️</span>
843
+ </div>
844
+ <div>
845
+ <div className="font-medium text-white">
846
+ MoveHorizontalIcon
847
+ </div>
848
+ <div className="text-xs text-white/60">
849
+ Horizontal movement
850
+ </div>
851
+ </div>
852
+ </div>
853
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
854
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
855
+ <span className="text-2xl">🎯</span>
856
+ </div>
857
+ <div>
858
+ <div className="font-medium text-white">DragIcon</div>
859
+ <div className="text-xs text-white/60">Drag & drop</div>
860
+ </div>
861
+ </div>
862
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
863
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-cyan-500/20">
864
+ <span className="text-2xl">📋</span>
865
+ </div>
866
+ <div>
867
+ <div className="font-medium text-white">SortIcon</div>
868
+ <div className="text-xs text-white/60">Sort controls</div>
869
+ </div>
870
+ </div>
871
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
872
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
873
+ <span className="text-2xl">🔄</span>
874
+ </div>
875
+ <div>
876
+ <div className="font-medium text-white">ReorderIcon</div>
877
+ <div className="text-xs text-white/60">
878
+ Reorder controls
879
+ </div>
880
+ </div>
881
+ </div>
882
+ </div>
883
+ </div>
884
+ </div>
885
+
886
+ {/* Footer */}
887
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
888
+ <div className="!mx-auto max-w-7xl px-6 py-8">
889
+ <div className="!space-y-4 text-center">
890
+ <p className="!text-white/60">
891
+ MoveVerticalIcon is part of the Aural UI icon library, built
892
+ for representing vertical movement, sorting, and reordering
893
+ operations.
894
+ </p>
895
+ <p className="text-sm !text-white/40">
896
+ All icons use Radix UI's AccessibleIcon for screen reader
897
+ compatibility and follow WCAG guidelines for interactive
898
+ controls.
899
+ </p>
900
+ </div>
901
+ </div>
902
+ </div>
903
+ </div>
904
+ </>
905
+ ),
906
+ },
907
+ },
908
+ tags: ["autodocs"],
909
+ argTypes: {
910
+ width: {
911
+ control: { type: "range", min: 8, max: 96, step: 2 },
912
+ description: "Width of the icon in pixels",
913
+ },
914
+ height: {
915
+ control: { type: "range", min: 8, max: 96, step: 2 },
916
+ description: "Height of the icon in pixels",
917
+ },
918
+ stroke: {
919
+ control: "color",
920
+ description: "Stroke color of the icon lines",
921
+ },
922
+ strokeWidth: {
923
+ control: { type: "range", min: 0.5, max: 4, step: 0.5 },
924
+ description: "Width of the stroke lines",
925
+ },
926
+ className: {
927
+ control: "text",
928
+ description: "CSS classes for styling (use for overrides)",
929
+ },
930
+ },
931
+ }
932
+
933
+ export default meta
934
+ type Story = StoryObj<typeof MoveVerticalIcon>
935
+
936
+ // Story parameters for consistent dark theme
937
+ const storyParameters = {
938
+ backgrounds: {
939
+ default: "dark",
940
+ values: [
941
+ { name: "dark", value: "#0a0a0a" },
942
+ { name: "darker", value: "#000000" },
943
+ ],
944
+ },
945
+ }
946
+
947
+ export const Default: Story = {
948
+ args: {
949
+ className: "h-6 w-6 text-blue-400 ",
950
+ },
951
+ parameters: storyParameters,
952
+ render: (args) => (
953
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
954
+ <MoveVerticalIcon {...args} />
955
+ </div>
956
+ ),
957
+ }
958
+
959
+ export const SizeVariations: Story = {
960
+ parameters: {
961
+ ...storyParameters,
962
+ docs: {
963
+ description: {
964
+ story:
965
+ "MoveVerticalIcon in different sizes, from small drag handles to large sorting controls.",
966
+ },
967
+ },
968
+ },
969
+ render: () => (
970
+ <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">
971
+ <div className="text-center">
972
+ <MoveVerticalIcon className="!mx-auto mb-2 h-3 w-3 text-blue-400" />
973
+ <span className="text-xs text-white/60">12px</span>
974
+ </div>
975
+ <div className="text-center">
976
+ <MoveVerticalIcon className="!mx-auto mb-2 h-4 w-4 text-blue-400" />
977
+ <span className="text-xs text-white/60">16px</span>
978
+ </div>
979
+ <div className="text-center">
980
+ <MoveVerticalIcon className="!mx-auto mb-2 h-5 w-5 text-blue-400" />
981
+ <span className="text-xs text-white/60">20px</span>
982
+ </div>
983
+ <div className="text-center">
984
+ <MoveVerticalIcon className="!mx-auto mb-2 h-6 w-6 text-blue-400" />
985
+ <span className="text-xs text-white/60">24px</span>
986
+ </div>
987
+ <div className="text-center">
988
+ <MoveVerticalIcon className="!mx-auto mb-2 h-8 w-8 text-blue-400" />
989
+ <span className="text-xs text-white/60">32px</span>
990
+ </div>
991
+ <div className="text-center">
992
+ <MoveVerticalIcon className="!mx-auto mb-2 h-12 w-12 text-blue-400" />
993
+ <span className="text-xs text-white/60">48px</span>
994
+ </div>
995
+ </div>
996
+ ),
997
+ }
998
+
999
+ export const ColorVariations: Story = {
1000
+ parameters: {
1001
+ ...storyParameters,
1002
+ docs: {
1003
+ description: {
1004
+ story:
1005
+ "MoveVerticalIcon in different colors for various interaction states and UI contexts.",
1006
+ },
1007
+ },
1008
+ },
1009
+ render: () => (
1010
+ <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">
1011
+ <div className="text-center">
1012
+ <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">
1013
+ <MoveVerticalIcon className="h-8 w-8 text-blue-400" />
1014
+ </div>
1015
+ <div className="text-sm font-medium text-white">Primary</div>
1016
+ <div className="text-xs text-blue-400">text-blue-400</div>
1017
+ </div>
1018
+ <div className="text-center">
1019
+ <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">
1020
+ <MoveVerticalIcon className="h-8 w-8 text-purple-400" />
1021
+ </div>
1022
+ <div className="text-sm font-medium text-white">Interactive</div>
1023
+ <div className="text-xs text-purple-400">text-purple-400</div>
1024
+ </div>
1025
+ <div className="text-center">
1026
+ <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">
1027
+ <MoveVerticalIcon className="h-8 w-8 text-gray-400" />
1028
+ </div>
1029
+ <div className="text-sm font-medium text-white">Disabled</div>
1030
+ <div className="text-xs text-gray-400">text-gray-400</div>
1031
+ </div>
1032
+ <div className="text-center">
1033
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-cyan-500/30 bg-cyan-500/20">
1034
+ <MoveVerticalIcon className="h-8 w-8 text-cyan-400" />
1035
+ </div>
1036
+ <div className="text-sm font-medium text-white">Accent</div>
1037
+ <div className="text-xs text-cyan-400">text-cyan-400</div>
1038
+ </div>
1039
+ </div>
1040
+ ),
1041
+ }
1042
+
1043
+ export const UsageExamples: Story = {
1044
+ parameters: {
1045
+ ...storyParameters,
1046
+ docs: {
1047
+ description: {
1048
+ story:
1049
+ "Real-world usage examples showing MoveVerticalIcon in different layout and interaction contexts.",
1050
+ },
1051
+ },
1052
+ },
1053
+ render: () => (
1054
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1055
+ {/* Sortable List */}
1056
+ <div className="!space-y-2">
1057
+ <h3 className="text-sm font-medium text-white">Sortable List</h3>
1058
+ <div className="!space-y-2 rounded-lg border border-white/10 bg-white/5 p-4">
1059
+ {["First Item", "Second Item", "Third Item"].map((item, index) => (
1060
+ <div
1061
+ key={index}
1062
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3"
1063
+ >
1064
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-blue-400 hover:text-blue-300" />
1065
+ <span className="text-sm text-white">{item}</span>
1066
+ </div>
1067
+ ))}
1068
+ </div>
1069
+ </div>
1070
+
1071
+ {/* Up/Down Navigation */}
1072
+ <div className="!space-y-2">
1073
+ <h3 className="text-sm font-medium text-white">Up/Down Navigation</h3>
1074
+ <div className="flex justify-center">
1075
+ <div className="flex flex-col gap-2">
1076
+ <button className="rounded-lg border border-white/20 bg-white/5 p-3 hover:bg-white/10">
1077
+ <MoveVerticalIcon className="h-5 w-5 rotate-180 text-white" />
1078
+ </button>
1079
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1080
+ <span className="text-sm text-white/70">Content Item</span>
1081
+ </div>
1082
+ <button className="rounded-lg border border-white/20 bg-white/5 p-3 hover:bg-white/10">
1083
+ <MoveVerticalIcon className="h-5 w-5 text-white" />
1084
+ </button>
1085
+ </div>
1086
+ </div>
1087
+ </div>
1088
+
1089
+ {/* Table Row Reorder */}
1090
+ <div className="!space-y-2">
1091
+ <h3 className="text-sm font-medium text-white">Table Row Reorder</h3>
1092
+ <div className="rounded-lg border border-white/10 bg-white/5">
1093
+ <div className="flex border-b border-white/10 bg-white/5 p-3">
1094
+ <div className="w-8"></div>
1095
+ <div className="flex-1 text-sm font-medium text-white">Name</div>
1096
+ <div className="flex-1 text-sm font-medium text-white">Email</div>
1097
+ <div className="w-20 text-sm font-medium text-white">Status</div>
1098
+ </div>
1099
+ {[
1100
+ { name: "John Doe", email: "john@example.com", status: "Active" },
1101
+ {
1102
+ name: "Jane Smith",
1103
+ email: "jane@example.com",
1104
+ status: "Inactive",
1105
+ },
1106
+ ].map((row, index) => (
1107
+ <div
1108
+ key={index}
1109
+ className="flex items-center border-b border-white/10 p-3 last:border-b-0"
1110
+ >
1111
+ <div className="w-8">
1112
+ <MoveVerticalIcon className="h-4 w-4 cursor-move text-white/30 hover:text-white/60" />
1113
+ </div>
1114
+ <div className="flex-1 text-sm text-white/70">{row.name}</div>
1115
+ <div className="flex-1 text-sm text-white/70">{row.email}</div>
1116
+ <div className="w-20">
1117
+ <span
1118
+ className={`rounded-full px-2 py-1 text-xs ${
1119
+ row.status === "Active"
1120
+ ? "bg-green-500/20 text-green-300"
1121
+ : "bg-gray-500/20 text-gray-300"
1122
+ }`}
1123
+ >
1124
+ {row.status}
1125
+ </span>
1126
+ </div>
1127
+ </div>
1128
+ ))}
1129
+ </div>
1130
+ </div>
1131
+ </div>
1132
+ ),
1133
+ }
1134
+
1135
+ export const InteractiveStates: Story = {
1136
+ parameters: {
1137
+ ...storyParameters,
1138
+ docs: {
1139
+ description: {
1140
+ story:
1141
+ "Interactive states showing hover effects, animations, and cursor styles for the vertical move icon.",
1142
+ },
1143
+ },
1144
+ },
1145
+ render: () => (
1146
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1147
+ <div className="!space-y-4">
1148
+ <h3 className="text-sm font-medium text-white/70">
1149
+ Hover & Animation Effects
1150
+ </h3>
1151
+ <div className="flex gap-8">
1152
+ <div className="flex flex-col items-center gap-2">
1153
+ <MoveVerticalIcon className="h-8 w-8 text-white/60 transition-colors hover:text-blue-400" />
1154
+ <span className="text-xs text-white/60">Color Change</span>
1155
+ </div>
1156
+ <div className="flex flex-col items-center gap-2">
1157
+ <MoveVerticalIcon className="h-8 w-8 text-white transition-transform hover:scale-110" />
1158
+ <span className="text-xs text-white/60">Scale Up</span>
1159
+ </div>
1160
+ <div className="flex flex-col items-center gap-2">
1161
+ <MoveVerticalIcon className="animate-slide-vertical h-8 w-8 text-blue-400" />
1162
+ <span className="text-xs text-white/60">Slide</span>
1163
+ </div>
1164
+ <div className="flex flex-col items-center gap-2">
1165
+ <MoveVerticalIcon className="animate-pulse-bounce h-8 w-8 text-purple-400" />
1166
+ <span className="text-xs text-white/60">Bounce</span>
1167
+ </div>
1168
+ </div>
1169
+ </div>
1170
+ </div>
1171
+ ),
1172
+ }
1173
+
1174
+ export const Playground: Story = {
1175
+ parameters: {
1176
+ ...storyParameters,
1177
+ docs: {
1178
+ description: {
1179
+ story:
1180
+ "Interactive playground to experiment with different MoveVerticalIcon configurations.",
1181
+ },
1182
+ },
1183
+ },
1184
+ args: {
1185
+ width: 32,
1186
+ height: 32,
1187
+ className: "text-blue-400 ",
1188
+ },
1189
+ render: (args) => (
1190
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1191
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1192
+ <MoveVerticalIcon {...args} />
1193
+ </div>
1194
+ </div>
1195
+ ),
1196
+ }