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,1151 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { PlusIcon } from "."
5
+
6
+ const meta: Meta<typeof PlusIcon> = {
7
+ title: "Icons/PlusIcon",
8
+ component: PlusIcon,
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
+ @keyframes plus-pulse {
81
+ 0%, 100% { transform: scale(1); opacity: 1; }
82
+ 50% { transform: scale(1.1); opacity: 0.8; }
83
+ }
84
+ .animate-plus-pulse {
85
+ animation: plus-pulse 2s ease-in-out infinite;
86
+ }
87
+ @keyframes plus-rotate {
88
+ 0% { transform: rotate(0deg); }
89
+ 50% { transform: rotate(45deg); }
90
+ 100% { transform: rotate(0deg); }
91
+ }
92
+ .animate-plus-rotate {
93
+ animation: plus-rotate 3s ease-in-out infinite;
94
+ }
95
+ @keyframes plus-expand {
96
+ 0% { transform: scale(1); }
97
+ 25% { transform: scale(1.2); }
98
+ 50% { transform: scale(1); }
99
+ 75% { transform: scale(0.9); }
100
+ 100% { transform: scale(1); }
101
+ }
102
+ .animate-plus-expand {
103
+ animation: plus-expand 2.5s ease-in-out infinite;
104
+ }
105
+ `}
106
+ </style>
107
+
108
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-green-900/20 to-gray-900">
109
+ {/* Header */}
110
+ <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
111
+ <div className="absolute inset-0 bg-gradient-to-r from-green-500/10 via-transparent to-blue-500/10" />
112
+ <div className="relative !mx-auto max-w-7xl px-6 py-16">
113
+ <div className="!space-y-6 text-center">
114
+ <div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-green-500/30 bg-gradient-to-br from-green-500/20 to-blue-500/20">
115
+ <PlusIcon className="h-12 w-12 text-green-400" />
116
+ </div>
117
+ <h1 className="!text-fm-primary text-5xl font-bold">
118
+ PlusIcon
119
+ </h1>
120
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
121
+ A versatile plus icon for adding content, creating new
122
+ items, and positive actions. Perfect for buttons, forms, and
123
+ CTAs. Built with accessibility in mind using Radix UI's
124
+ AccessibleIcon wrapper.
125
+ </p>
126
+
127
+ {/* Stats */}
128
+ <div className="flex items-center justify-center gap-8 pt-8">
129
+ <div className="text-center">
130
+ <div className="text-3xl font-bold text-green-300">
131
+ Add
132
+ </div>
133
+ <div className="text-sm text-white/60">
134
+ Create new content
135
+ </div>
136
+ </div>
137
+ <div className="h-8 w-px bg-white/20" />
138
+ <div className="text-center">
139
+ <div className="text-3xl font-bold text-blue-300">
140
+ Create
141
+ </div>
142
+ <div className="text-sm text-white/60">
143
+ New items & actions
144
+ </div>
145
+ </div>
146
+ <div className="h-8 w-px bg-white/20" />
147
+ <div className="text-center">
148
+ <div className="text-3xl font-bold text-purple-300">
149
+ Expand
150
+ </div>
151
+ <div className="text-sm text-white/60">
152
+ Growth & addition
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </div>
159
+
160
+ {/* Content */}
161
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
162
+ {/* Quick Usage */}
163
+ <div className="!space-y-8">
164
+ <h2 className="text-center text-3xl font-bold !text-white">
165
+ Quick Start
166
+ </h2>
167
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
168
+ <div className="!space-y-4">
169
+ <h3 className="text-xl font-semibold !text-green-300">
170
+ Basic Usage
171
+ </h3>
172
+ <div className="rounded-lg bg-black/40 p-4">
173
+ <pre className="overflow-x-auto text-sm !text-green-300">
174
+ {`import { PlusIcon } from "@icons/plus-icon"
175
+
176
+ function AddButton() {
177
+ return (
178
+ <button className="flex items-center gap-2">
179
+ <PlusIcon className="h-4 w-4 text-green-500" />
180
+ <span>Add Item</span>
181
+ </button>
182
+ )
183
+ }`}
184
+ </pre>
185
+ </div>
186
+ </div>
187
+
188
+ <div className="!space-y-4">
189
+ <h3 className="text-xl font-semibold !text-green-300">
190
+ Live Preview
191
+ </h3>
192
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
193
+ <button className="flex items-center gap-3 rounded-lg border border-green-500/20 bg-green-500/10 px-4 py-2 transition-colors hover:bg-green-500/20">
194
+ <PlusIcon className="h-5 w-5 text-green-400" />
195
+ <span className="text-white">Add Item</span>
196
+ </button>
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-green-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-green-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-green-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 plus 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-green-300">
270
+ strokeWidth
271
+ </td>
272
+ <td className="px-6 py-4 text-sm !text-white/70">
273
+ number | string
274
+ </td>
275
+ <td className="px-6 py-4 text-sm !text-white/50">
276
+ 1.5
277
+ </td>
278
+ <td className="px-6 py-4 text-sm !text-white/70">
279
+ Thickness of the stroke lines
280
+ </td>
281
+ </tr>
282
+ <tr className="border-b border-white/5">
283
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
284
+ strokeLinecap
285
+ </td>
286
+ <td className="px-6 py-4 text-sm !text-white/70">
287
+ string
288
+ </td>
289
+ <td className="px-6 py-4 text-sm !text-white/50">
290
+ square
291
+ </td>
292
+ <td className="px-6 py-4 text-sm !text-white/70">
293
+ Style of line endings
294
+ </td>
295
+ </tr>
296
+ <tr className="border-b border-white/5 !bg-black/10">
297
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
298
+ className
299
+ </td>
300
+ <td className="px-6 py-4 text-sm !text-white/70">
301
+ string
302
+ </td>
303
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
304
+ <td className="px-6 py-4 text-sm !text-white/70">
305
+ CSS classes for styling
306
+ </td>
307
+ </tr>
308
+ <tr className="!bg-black/10">
309
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
310
+ ...svgProps
311
+ </td>
312
+ <td className="px-6 py-4 text-sm !text-white/70">
313
+ SVGProps
314
+ </td>
315
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
316
+ <td className="px-6 py-4 text-sm !text-white/70">
317
+ All standard SVG element props
318
+ </td>
319
+ </tr>
320
+ </tbody>
321
+ </table>
322
+ </div>
323
+ </div>
324
+
325
+ {/* Size Variations */}
326
+ <div className="!space-y-8">
327
+ <h2 className="text-center text-3xl font-bold !text-white">
328
+ Size Variations
329
+ </h2>
330
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
331
+ <div className="!space-y-6">
332
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
333
+ <div className="!space-y-4">
334
+ <h3 className="text-lg font-semibold !text-green-300">
335
+ Standard Sizes
336
+ </h3>
337
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
338
+ <div className="text-center">
339
+ <PlusIcon className="!mx-auto mb-2 h-3 w-3 text-green-400" />
340
+ <span className="text-xs text-white/60">12px</span>
341
+ </div>
342
+ <div className="text-center">
343
+ <PlusIcon className="!mx-auto mb-2 h-4 w-4 text-green-400" />
344
+ <span className="text-xs text-white/60">16px</span>
345
+ </div>
346
+ <div className="text-center">
347
+ <PlusIcon className="!mx-auto mb-2 h-5 w-5 text-green-400" />
348
+ <span className="text-xs text-white/60">20px</span>
349
+ </div>
350
+ <div className="text-center">
351
+ <PlusIcon className="!mx-auto mb-2 h-6 w-6 text-green-400" />
352
+ <span className="text-xs text-white/60">24px</span>
353
+ </div>
354
+ <div className="text-center">
355
+ <PlusIcon className="!mx-auto mb-2 h-8 w-8 text-green-400" />
356
+ <span className="text-xs text-white/60">32px</span>
357
+ </div>
358
+ <div className="text-center">
359
+ <PlusIcon className="!mx-auto mb-2 h-12 w-12 text-green-400" />
360
+ <span className="text-xs text-white/60">48px</span>
361
+ </div>
362
+ </div>
363
+ </div>
364
+
365
+ <div className="!space-y-4">
366
+ <h3 className="text-lg font-semibold !text-green-300">
367
+ Code Example
368
+ </h3>
369
+ <div className="rounded-lg bg-black/40 p-4">
370
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
371
+ {`// Small (16px)
372
+ <PlusIcon className="h-4 w-4" />
373
+
374
+ // Medium (24px)
375
+ <PlusIcon className="h-6 w-6" />
376
+
377
+ // Large (32px)
378
+ <PlusIcon className="h-8 w-8" />
379
+
380
+ // Custom size with props
381
+ <PlusIcon width={40} height={40} />`}
382
+ </pre>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ </div>
388
+ </div>
389
+
390
+ {/* Color Variations */}
391
+ <div className="!space-y-8">
392
+ <h2 className="text-center text-3xl font-bold !text-white">
393
+ Color Variations
394
+ </h2>
395
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
396
+ <div className="!space-y-4">
397
+ <h3 className="text-lg font-semibold !text-green-300">
398
+ Semantic Colors
399
+ </h3>
400
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
401
+ <div className="flex items-center gap-4">
402
+ <PlusIcon className="h-6 w-6 text-green-400" />
403
+ <div>
404
+ <div className="text-sm font-medium text-white">
405
+ Success/Add
406
+ </div>
407
+ <div className="text-xs text-white/60">
408
+ text-green-400
409
+ </div>
410
+ </div>
411
+ </div>
412
+ <div className="flex items-center gap-4">
413
+ <PlusIcon className="h-6 w-6 text-blue-400" />
414
+ <div>
415
+ <div className="text-sm font-medium text-white">
416
+ Primary
417
+ </div>
418
+ <div className="text-xs text-white/60">
419
+ text-blue-400
420
+ </div>
421
+ </div>
422
+ </div>
423
+ <div className="flex items-center gap-4">
424
+ <PlusIcon className="h-6 w-6 text-purple-400" />
425
+ <div>
426
+ <div className="text-sm font-medium text-white">
427
+ Creative
428
+ </div>
429
+ <div className="text-xs text-white/60">
430
+ text-purple-400
431
+ </div>
432
+ </div>
433
+ </div>
434
+ <div className="flex items-center gap-4">
435
+ <PlusIcon className="h-6 w-6 text-gray-400" />
436
+ <div>
437
+ <div className="text-sm font-medium text-white">
438
+ Disabled
439
+ </div>
440
+ <div className="text-xs text-white/60">
441
+ text-gray-400
442
+ </div>
443
+ </div>
444
+ </div>
445
+ </div>
446
+ </div>
447
+
448
+ <div className="!space-y-4">
449
+ <h3 className="text-lg font-semibold !text-green-300">
450
+ Custom Colors
451
+ </h3>
452
+ <div className="rounded-lg bg-black/40 p-4">
453
+ <pre className="overflow-x-auto text-sm !text-green-300">
454
+ {`// Using Tailwind classes
455
+ <PlusIcon className="h-6 w-6 text-green-400" />
456
+ <PlusIcon className="h-6 w-6 text-blue-500" />
457
+
458
+ // Using CSS custom properties
459
+ <PlusIcon
460
+ className="h-6 w-6"
461
+ style={{ color: 'var(--color-primary)' }}
462
+ />
463
+
464
+ // Direct stroke prop
465
+ <PlusIcon
466
+ width={24}
467
+ height={24}
468
+ stroke="#10b981"
469
+ />`}
470
+ </pre>
471
+ </div>
472
+ </div>
473
+ </div>
474
+ </div>
475
+
476
+ {/* Usage Examples */}
477
+ <div className="!space-y-8">
478
+ <h2 className="text-center text-3xl font-bold !text-white">
479
+ Usage Examples
480
+ </h2>
481
+
482
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
483
+ {/* Add Button */}
484
+ <div className="!space-y-4">
485
+ <h3 className="text-lg font-semibold !text-green-300">
486
+ Add Buttons
487
+ </h3>
488
+ <div className="!space-y-4">
489
+ <div className="flex gap-4">
490
+ <button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-4 py-2 text-green-200 transition-colors hover:bg-green-500/30">
491
+ <PlusIcon className="h-4 w-4" />
492
+ Add Item
493
+ </button>
494
+ <button className="flex items-center gap-2 rounded-lg border border-blue-500/30 bg-blue-500/20 px-4 py-2 text-blue-200 transition-colors hover:bg-blue-500/30">
495
+ <PlusIcon className="h-4 w-4" />
496
+ Create New
497
+ </button>
498
+ </div>
499
+ <div className="rounded-lg bg-black/40 p-4">
500
+ <pre className="overflow-x-auto text-sm !text-green-300">
501
+ {`<button className="flex items-center gap-2 bg-green-500/20 border border-green-500/30 px-4 py-2 rounded-lg">
502
+ <PlusIcon className="h-4 w-4" />
503
+ Add Item
504
+ </button>
505
+
506
+ <button className="flex items-center gap-2 bg-blue-500/20 border border-blue-500/30 px-4 py-2 rounded-lg">
507
+ <PlusIcon className="h-4 w-4" />
508
+ Create New
509
+ </button>`}
510
+ </pre>
511
+ </div>
512
+ </div>
513
+ </div>
514
+
515
+ {/* Floating Action Button */}
516
+ <div className="!space-y-4">
517
+ <h3 className="text-lg font-semibold !text-green-300">
518
+ Floating Action Button
519
+ </h3>
520
+ <div className="!space-y-4">
521
+ <div className="flex gap-4">
522
+ <button className="flex h-12 w-12 items-center justify-center rounded-full bg-green-500 text-white shadow-lg transition-transform hover:scale-110">
523
+ <PlusIcon className="h-6 w-6" />
524
+ </button>
525
+ <button className="flex h-10 w-10 items-center justify-center rounded-full bg-blue-500 text-white shadow-lg transition-transform hover:scale-110">
526
+ <PlusIcon className="h-5 w-5" />
527
+ </button>
528
+ </div>
529
+ <div className="rounded-lg bg-black/40 p-4">
530
+ <pre className="overflow-x-auto text-sm !text-green-300">
531
+ {`// Large FAB
532
+ <button className="flex h-12 w-12 items-center justify-center rounded-full bg-green-500 text-white shadow-lg transition-transform hover:scale-110">
533
+ <PlusIcon className="h-6 w-6" />
534
+ </button>
535
+
536
+ // Small FAB
537
+ <button className="flex h-10 w-10 items-center justify-center rounded-full bg-blue-500 text-white shadow-lg transition-transform hover:scale-110">
538
+ <PlusIcon className="h-5 w-5" />
539
+ </button>`}
540
+ </pre>
541
+ </div>
542
+ </div>
543
+ </div>
544
+
545
+ {/* Form Fields */}
546
+ <div className="!space-y-4">
547
+ <h3 className="text-lg font-semibold !text-green-300">
548
+ Dynamic Form Fields
549
+ </h3>
550
+ <div className="!space-y-4">
551
+ <div className="!space-y-3">
552
+ <div className="flex items-center gap-3 rounded-lg border border-white/10 bg-white/5 p-3">
553
+ <input
554
+ type="text"
555
+ className="flex-1 bg-transparent text-white placeholder-white/50 focus:outline-none"
556
+ placeholder="Enter skill"
557
+ defaultValue="JavaScript"
558
+ />
559
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
560
+ <PlusIcon className="h-4 w-4" />
561
+ </button>
562
+ </div>
563
+ <div className="flex items-center gap-3 rounded-lg border border-white/10 bg-white/5 p-3">
564
+ <input
565
+ type="text"
566
+ className="flex-1 bg-transparent text-white placeholder-white/50 focus:outline-none"
567
+ placeholder="Enter skill"
568
+ defaultValue="React"
569
+ />
570
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
571
+ <PlusIcon className="h-4 w-4" />
572
+ </button>
573
+ </div>
574
+ <button className="flex w-full items-center justify-center gap-2 rounded-lg border border-green-500/30 bg-green-500/10 py-2 text-green-300 transition-colors hover:bg-green-500/20">
575
+ <PlusIcon className="h-4 w-4" />
576
+ Add Another Skill
577
+ </button>
578
+ </div>
579
+ <div className="rounded-lg bg-black/40 p-4">
580
+ <pre className="overflow-x-auto text-sm !text-green-300">
581
+ {`<div className="flex items-center gap-3 rounded-lg border border-white/10 bg-white/5 p-3">
582
+ <input className="flex-1 bg-transparent text-white" placeholder="Enter skill" />
583
+ <button className="rounded p-1 hover:bg-white/10 hover:text-green-400">
584
+ <PlusIcon className="h-4 w-4" />
585
+ </button>
586
+ </div>
587
+
588
+ <button className="flex w-full items-center justify-center gap-2 rounded-lg border border-green-500/30 bg-green-500/10 py-2">
589
+ <PlusIcon className="h-4 w-4" />
590
+ Add Another Skill
591
+ </button>`}
592
+ </pre>
593
+ </div>
594
+ </div>
595
+ </div>
596
+
597
+ {/* Navigation Menu */}
598
+ <div className="!space-y-4">
599
+ <h3 className="text-lg font-semibold !text-green-300">
600
+ Menu & Navigation
601
+ </h3>
602
+ <div className="!space-y-4">
603
+ <div className="rounded-lg border border-white/10 bg-white/5 p-4">
604
+ <div className="!space-y-2">
605
+ <div className="flex items-center justify-between text-white">
606
+ <span>Projects</span>
607
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
608
+ <PlusIcon className="h-4 w-4" />
609
+ </button>
610
+ </div>
611
+ <div className="flex items-center justify-between text-white">
612
+ <span>Teams</span>
613
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
614
+ <PlusIcon className="h-4 w-4" />
615
+ </button>
616
+ </div>
617
+ <div className="flex items-center justify-between text-white">
618
+ <span>Workspaces</span>
619
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
620
+ <PlusIcon className="h-4 w-4" />
621
+ </button>
622
+ </div>
623
+ </div>
624
+ </div>
625
+ <div className="rounded-lg bg-black/40 p-4">
626
+ <pre className="overflow-x-auto text-sm !text-green-300">
627
+ {`<div className="flex items-center justify-between text-white">
628
+ <span>Projects</span>
629
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
630
+ <PlusIcon className="h-4 w-4" />
631
+ </button>
632
+ </div>`}
633
+ </pre>
634
+ </div>
635
+ </div>
636
+ </div>
637
+ </div>
638
+ </div>
639
+
640
+ {/* Interactive States */}
641
+ <div className="!space-y-8">
642
+ <h2 className="text-center text-3xl font-bold !text-white">
643
+ Interactive States & Animations
644
+ </h2>
645
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
646
+ <div className="!space-y-4">
647
+ <h3 className="text-lg font-semibold !text-green-300">
648
+ Hover & Animation Effects
649
+ </h3>
650
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
651
+ <div className="flex items-center gap-4">
652
+ <PlusIcon className="h-6 w-6 text-white/60 transition-colors hover:text-green-400" />
653
+ <div>
654
+ <div className="text-sm font-medium text-white">
655
+ Color Change
656
+ </div>
657
+ <div className="text-xs text-white/60">
658
+ Hover to see effect
659
+ </div>
660
+ </div>
661
+ </div>
662
+ <div className="flex items-center gap-4">
663
+ <PlusIcon className="h-6 w-6 text-white transition-transform hover:scale-125 hover:rotate-90" />
664
+ <div>
665
+ <div className="text-sm font-medium text-white">
666
+ Scale & Rotate
667
+ </div>
668
+ <div className="text-xs text-white/60">
669
+ Transform on hover
670
+ </div>
671
+ </div>
672
+ </div>
673
+ <div className="flex items-center gap-4">
674
+ <PlusIcon className="animate-plus-pulse h-6 w-6 text-green-400" />
675
+ <div>
676
+ <div className="text-sm font-medium text-white">
677
+ Add Pulse
678
+ </div>
679
+ <div className="text-xs text-white/60">
680
+ Continuous animation
681
+ </div>
682
+ </div>
683
+ </div>
684
+ <div className="flex items-center gap-4">
685
+ <PlusIcon className="animate-plus-rotate h-6 w-6 text-blue-400" />
686
+ <div>
687
+ <div className="text-sm font-medium text-white">
688
+ Rotate Animation
689
+ </div>
690
+ <div className="text-xs text-white/60">
691
+ 45° rotation cycle
692
+ </div>
693
+ </div>
694
+ </div>
695
+ <div className="flex items-center gap-4">
696
+ <PlusIcon className="animate-plus-expand h-6 w-6 text-purple-400" />
697
+ <div>
698
+ <div className="text-sm font-medium text-white">
699
+ Expand Effect
700
+ </div>
701
+ <div className="text-xs text-white/60">
702
+ Scale expansion
703
+ </div>
704
+ </div>
705
+ </div>
706
+ </div>
707
+ </div>
708
+
709
+ <div className="!space-y-4">
710
+ <h3 className="text-lg font-semibold !text-green-300">
711
+ State Examples
712
+ </h3>
713
+ <div className="rounded-lg bg-black/40 p-4">
714
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
715
+ {`// Color change on hover
716
+ <PlusIcon className="h-6 w-6 text-white/60 transition-colors hover:text-green-400" />
717
+
718
+ // Scale and rotate on hover
719
+ <PlusIcon className="h-6 w-6 text-white transition-transform hover:scale-125 hover:rotate-90" />
720
+
721
+ // Pulsing animation
722
+ <PlusIcon className="h-6 w-6 text-green-400 animate-pulse" />
723
+
724
+ // Rotating animation
725
+ <PlusIcon className="h-6 w-6 text-blue-400 animate-plus-rotate" />
726
+
727
+ // Loading state
728
+ <PlusIcon className="h-6 w-6 text-gray-400 animate-spin" />
729
+
730
+ // Disabled state
731
+ <PlusIcon className="h-6 w-6 text-gray-400 opacity-50" />`}
732
+ </pre>
733
+ </div>
734
+ </div>
735
+ </div>
736
+ </div>
737
+
738
+ {/* Accessibility */}
739
+ <div className="!space-y-8">
740
+ <h2 className="text-center text-3xl font-bold !text-white">
741
+ Accessibility Features
742
+ </h2>
743
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
744
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
745
+ <h3 className="text-lg font-semibold !text-green-300">
746
+ ✅ Built-in Features
747
+ </h3>
748
+ <ul className="!space-y-2 text-sm !text-white/70">
749
+ <li className="!text-white/70">
750
+ Uses Radix UI AccessibleIcon wrapper
751
+ </li>
752
+ <li className="!text-white/70">
753
+ Provides screen reader label "Plus icon"
754
+ </li>
755
+ <li className="!text-white/70">
756
+ Supports keyboard navigation when interactive
757
+ </li>
758
+ <li className="!text-white/70">
759
+ Maintains proper color contrast ratios
760
+ </li>
761
+ <li className="!text-white/70">
762
+ Scales with user's font size preferences
763
+ </li>
764
+ </ul>
765
+ </div>
766
+
767
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
768
+ <h3 className="text-lg font-semibold !text-green-300">
769
+ 💡 Best Practices
770
+ </h3>
771
+ <ul className="!space-y-2 text-sm !text-white/70">
772
+ <li className="!text-white/70">
773
+ Always provide descriptive button labels
774
+ </li>
775
+ <li className="!text-white/70">
776
+ Use consistent placement for add actions
777
+ </li>
778
+ <li className="!text-white/70">
779
+ Ensure sufficient click/touch target sizes
780
+ </li>
781
+ <li className="!text-white/70">
782
+ Add focus states for keyboard navigation
783
+ </li>
784
+ <li className="!text-white/70">
785
+ Consider motion sensitivity for animations
786
+ </li>
787
+ </ul>
788
+ </div>
789
+ </div>
790
+
791
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
792
+ <h3 className="mb-4 text-lg font-semibold !text-purple-300">
793
+ Custom Accessibility Implementation
794
+ </h3>
795
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
796
+ <div className="rounded-lg bg-black/40 p-4">
797
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
798
+ {`// Add button with proper ARIA
799
+ <button
800
+ aria-label="Add new item to list"
801
+ className="flex items-center gap-2 p-2"
802
+ >
803
+ <PlusIcon className="h-4 w-4" />
804
+ <span className="sr-only">Add Item</span>
805
+ </button>
806
+
807
+ // FAB with context
808
+ <button
809
+ aria-label="Create new project"
810
+ className="rounded-full p-3"
811
+ >
812
+ <PlusIcon
813
+ className="h-6 w-6"
814
+ aria-hidden="true"
815
+ />
816
+ </button>
817
+
818
+ // Dynamic form field
819
+ <button
820
+ aria-label="Add another skill field"
821
+ aria-describedby="skills-help"
822
+ className="rounded p-2"
823
+ >
824
+ <PlusIcon className="h-4 w-4" />
825
+ </button>
826
+ <div id="skills-help" className="sr-only">
827
+ Adds a new input field for entering skills
828
+ </div>`}
829
+ </pre>
830
+ </div>
831
+ <div className="!space-y-4">
832
+ <p className="text-sm !text-white/70">
833
+ When using PlusIcon for adding functionality, provide
834
+ clear context about what will be added and any related
835
+ actions.
836
+ </p>
837
+ <div className="rounded-lg border border-green-500/20 bg-green-500/10 p-4">
838
+ <div className="flex items-center gap-2 text-sm text-green-200">
839
+ <PlusIcon className="h-4 w-4" />
840
+ <span>
841
+ This approach gives screen readers clear context
842
+ about the add functionality
843
+ </span>
844
+ </div>
845
+ </div>
846
+ </div>
847
+ </div>
848
+ </div>
849
+ </div>
850
+
851
+ {/* Related Icons */}
852
+ <div className="!space-y-8">
853
+ <h2 className="text-center text-3xl font-bold !text-white">
854
+ Related Icons
855
+ </h2>
856
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
857
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
858
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
859
+ <span className="text-2xl">✖️</span>
860
+ </div>
861
+ <div>
862
+ <div className="font-medium text-white">CloseIcon</div>
863
+ <div className="text-xs text-white/60">Remove/Close</div>
864
+ </div>
865
+ </div>
866
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
867
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
868
+ <span className="text-2xl">📝</span>
869
+ </div>
870
+ <div>
871
+ <div className="font-medium text-white">EditIcon</div>
872
+ <div className="text-xs text-white/60">Edit content</div>
873
+ </div>
874
+ </div>
875
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
876
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
877
+ <span className="text-2xl">📋</span>
878
+ </div>
879
+ <div>
880
+ <div className="font-medium text-white">CopyIcon</div>
881
+ <div className="text-xs text-white/60">
882
+ Duplicate content
883
+ </div>
884
+ </div>
885
+ </div>
886
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
887
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
888
+ <span className="text-2xl">💾</span>
889
+ </div>
890
+ <div>
891
+ <div className="font-medium text-white">SaveIcon</div>
892
+ <div className="text-xs text-white/60">Save changes</div>
893
+ </div>
894
+ </div>
895
+ </div>
896
+ </div>
897
+ </div>
898
+
899
+ {/* Footer */}
900
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
901
+ <div className="!mx-auto max-w-7xl px-6 py-8">
902
+ <div className="!space-y-4 text-center">
903
+ <p className="!text-white/60">
904
+ PlusIcon is part of the Aural UI icon library, built for
905
+ adding, creating, and positive actions.
906
+ </p>
907
+ <p className="text-sm !text-white/40">
908
+ All icons use Radix UI's AccessibleIcon for screen reader
909
+ compatibility and follow WCAG guidelines for interactive
910
+ elements.
911
+ </p>
912
+ </div>
913
+ </div>
914
+ </div>
915
+ </div>
916
+ </>
917
+ ),
918
+ },
919
+ },
920
+ tags: ["autodocs"],
921
+ argTypes: {
922
+ width: {
923
+ control: { type: "range", min: 8, max: 96, step: 2 },
924
+ description: "Width of the icon in pixels",
925
+ },
926
+ height: {
927
+ control: { type: "range", min: 8, max: 96, step: 2 },
928
+ description: "Height of the icon in pixels",
929
+ },
930
+ stroke: {
931
+ control: "color",
932
+ description: "Stroke color of the plus lines",
933
+ },
934
+ strokeWidth: {
935
+ control: { type: "range", min: 0.5, max: 4, step: 0.5 },
936
+ description: "Thickness of the stroke lines",
937
+ },
938
+ strokeLinecap: {
939
+ control: "select",
940
+ options: ["butt", "round", "square"],
941
+ description: "Style of line endings",
942
+ },
943
+ className: {
944
+ control: "text",
945
+ description: "CSS classes for styling",
946
+ },
947
+ },
948
+ }
949
+
950
+ export default meta
951
+ type Story = StoryObj<typeof PlusIcon>
952
+
953
+ // Story parameters for consistent dark theme
954
+ const storyParameters = {
955
+ backgrounds: {
956
+ default: "dark",
957
+ values: [
958
+ { name: "dark", value: "#0a0a0a" },
959
+ { name: "darker", value: "#000000" },
960
+ ],
961
+ },
962
+ }
963
+
964
+ export const Default: Story = {
965
+ args: {
966
+ width: 24,
967
+ height: 24,
968
+ className: "text-green-400",
969
+ },
970
+ parameters: storyParameters,
971
+ render: (args) => (
972
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
973
+ <PlusIcon {...args} />
974
+ </div>
975
+ ),
976
+ }
977
+
978
+ export const SizeVariations: Story = {
979
+ parameters: {
980
+ ...storyParameters,
981
+ docs: {
982
+ description: {
983
+ story:
984
+ "PlusIcon in different sizes, from small UI elements to large action buttons.",
985
+ },
986
+ },
987
+ },
988
+ render: () => (
989
+ <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">
990
+ <div className="text-center">
991
+ <PlusIcon className="!mx-auto mb-2 h-3 w-3 text-green-400" />
992
+ <span className="text-xs text-white/60">12px</span>
993
+ </div>
994
+ <div className="text-center">
995
+ <PlusIcon className="!mx-auto mb-2 h-4 w-4 text-green-400" />
996
+ <span className="text-xs text-white/60">16px</span>
997
+ </div>
998
+ <div className="text-center">
999
+ <PlusIcon className="!mx-auto mb-2 h-5 w-5 text-green-400" />
1000
+ <span className="text-xs text-white/60">20px</span>
1001
+ </div>
1002
+ <div className="text-center">
1003
+ <PlusIcon className="!mx-auto mb-2 h-6 w-6 text-green-400" />
1004
+ <span className="text-xs text-white/60">24px</span>
1005
+ </div>
1006
+ <div className="text-center">
1007
+ <PlusIcon className="!mx-auto mb-2 h-8 w-8 text-green-400" />
1008
+ <span className="text-xs text-white/60">32px</span>
1009
+ </div>
1010
+ <div className="text-center">
1011
+ <PlusIcon className="!mx-auto mb-2 h-12 w-12 text-green-400" />
1012
+ <span className="text-xs text-white/60">48px</span>
1013
+ </div>
1014
+ </div>
1015
+ ),
1016
+ }
1017
+
1018
+ export const ColorVariations: Story = {
1019
+ parameters: {
1020
+ ...storyParameters,
1021
+ docs: {
1022
+ description: {
1023
+ story:
1024
+ "PlusIcon in different colors for various adding and creating contexts.",
1025
+ },
1026
+ },
1027
+ },
1028
+ render: () => (
1029
+ <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">
1030
+ <div className="text-center">
1031
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-green-500/30 bg-green-500/20">
1032
+ <PlusIcon className="h-8 w-8 text-green-400" />
1033
+ </div>
1034
+ <div className="text-sm font-medium text-white">Success/Add</div>
1035
+ <div className="text-xs text-green-400">text-green-400</div>
1036
+ </div>
1037
+ <div className="text-center">
1038
+ <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">
1039
+ <PlusIcon className="h-8 w-8 text-blue-400" />
1040
+ </div>
1041
+ <div className="text-sm font-medium text-white">Primary</div>
1042
+ <div className="text-xs text-blue-400">text-blue-400</div>
1043
+ </div>
1044
+ <div className="text-center">
1045
+ <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">
1046
+ <PlusIcon className="h-8 w-8 text-purple-400" />
1047
+ </div>
1048
+ <div className="text-sm font-medium text-white">Creative</div>
1049
+ <div className="text-xs text-purple-400">text-purple-400</div>
1050
+ </div>
1051
+ <div className="text-center">
1052
+ <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">
1053
+ <PlusIcon className="h-8 w-8 text-gray-400" />
1054
+ </div>
1055
+ <div className="text-sm font-medium text-white">Disabled</div>
1056
+ <div className="text-xs text-gray-400">text-gray-400</div>
1057
+ </div>
1058
+ </div>
1059
+ ),
1060
+ }
1061
+
1062
+ export const UsageExamples: Story = {
1063
+ parameters: {
1064
+ ...storyParameters,
1065
+ docs: {
1066
+ description: {
1067
+ story:
1068
+ "Real-world usage examples showing PlusIcon in different UI contexts.",
1069
+ },
1070
+ },
1071
+ },
1072
+ render: () => (
1073
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1074
+ {/* Add Buttons */}
1075
+ <div className="!space-y-2">
1076
+ <h3 className="text-sm font-medium text-white">Add Buttons</h3>
1077
+ <div className="flex gap-4">
1078
+ <button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-4 py-2 text-green-200 transition-colors hover:bg-green-500/30">
1079
+ <PlusIcon className="h-4 w-4" />
1080
+ Add Item
1081
+ </button>
1082
+ <button className="flex items-center gap-2 rounded-lg border border-blue-500/30 bg-blue-500/20 px-4 py-2 text-blue-200 transition-colors hover:bg-blue-500/30">
1083
+ <PlusIcon className="h-4 w-4" />
1084
+ Create New
1085
+ </button>
1086
+ </div>
1087
+ </div>
1088
+
1089
+ {/* Floating Action Button */}
1090
+ <div className="!space-y-2">
1091
+ <h3 className="text-sm font-medium text-white">
1092
+ Floating Action Button
1093
+ </h3>
1094
+ <div className="flex gap-4">
1095
+ <button className="flex h-12 w-12 items-center justify-center rounded-full bg-green-500 text-white shadow-lg transition-transform hover:scale-110">
1096
+ <PlusIcon className="h-6 w-6" />
1097
+ </button>
1098
+ <button className="flex h-10 w-10 items-center justify-center rounded-full bg-blue-500 text-white shadow-lg transition-transform hover:scale-110">
1099
+ <PlusIcon className="h-5 w-5" />
1100
+ </button>
1101
+ </div>
1102
+ </div>
1103
+
1104
+ {/* Dynamic Form Fields */}
1105
+ <div className="!space-y-2">
1106
+ <h3 className="text-sm font-medium text-white">Dynamic Form Fields</h3>
1107
+ <div className="!space-y-3">
1108
+ <div className="flex items-center gap-3 rounded-lg border border-white/10 bg-white/5 p-3">
1109
+ <input
1110
+ type="text"
1111
+ className="flex-1 bg-transparent text-white placeholder-white/50 focus:outline-none"
1112
+ placeholder="Enter skill"
1113
+ defaultValue="JavaScript"
1114
+ />
1115
+ <button className="rounded p-1 text-white/60 hover:bg-white/10 hover:text-green-400">
1116
+ <PlusIcon className="h-4 w-4" />
1117
+ </button>
1118
+ </div>
1119
+ <button className="flex w-full items-center justify-center gap-2 rounded-lg border border-green-500/30 bg-green-500/10 py-2 text-green-300 transition-colors hover:bg-green-500/20">
1120
+ <PlusIcon className="h-4 w-4" />
1121
+ Add Another Skill
1122
+ </button>
1123
+ </div>
1124
+ </div>
1125
+ </div>
1126
+ ),
1127
+ }
1128
+
1129
+ export const Playground: Story = {
1130
+ parameters: {
1131
+ ...storyParameters,
1132
+ docs: {
1133
+ description: {
1134
+ story:
1135
+ "Interactive playground to experiment with different PlusIcon configurations.",
1136
+ },
1137
+ },
1138
+ },
1139
+ args: {
1140
+ width: 32,
1141
+ height: 32,
1142
+ className: "text-green-400",
1143
+ },
1144
+ render: (args) => (
1145
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1146
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1147
+ <PlusIcon {...args} />
1148
+ </div>
1149
+ </div>
1150
+ ),
1151
+ }