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