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,991 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { AlertIcon } from "."
5
+
6
+ const meta: Meta<typeof AlertIcon> = {
7
+ title: "Icons/AlertIcon",
8
+ component: AlertIcon,
9
+ parameters: {
10
+ layout: "fullscreen",
11
+ backgrounds: {
12
+ default: "dark",
13
+ values: [
14
+ { name: "dark", value: "#0a0a0a" },
15
+ { name: "darker", value: "#000000" },
16
+ { name: "light", value: "#ffffff" },
17
+ ],
18
+ },
19
+ docs: {
20
+ page: () => (
21
+ <>
22
+ {/* Override default docs styling */}
23
+ <style>
24
+ {`
25
+ .sbdocs-wrapper {
26
+ padding: 0 ;
27
+ max-width: none ;
28
+ background: transparent ;
29
+ }
30
+ .sbdocs-content {
31
+ max-width: none ;
32
+ padding: 0 ;
33
+ margin: 0 ;
34
+ background: transparent ;
35
+ }
36
+ .docs-story {
37
+ background: transparent ;
38
+ }
39
+ .sbdocs {
40
+ background: transparent ;
41
+ }
42
+ body {
43
+ background: #0a0a0a ;
44
+ }
45
+ #storybook-docs {
46
+ background: #0a0a0a ;
47
+ }
48
+ .sbdocs-preview {
49
+ background: transparent ;
50
+ border: none ;
51
+ }
52
+ .sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
53
+ color: white ;
54
+ }
55
+ .sbdocs-p, .sbdocs-li {
56
+ color: rgba(255, 255, 255, 0.7) ;
57
+ }
58
+ .sbdocs-code {
59
+ background: rgba(255, 255, 255, 0.1) ;
60
+ color: rgba(168, 85, 247, 1) ;
61
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
62
+ }
63
+ .sbdocs-pre {
64
+ background: rgba(0, 0, 0, 0.4) ;
65
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
66
+ }
67
+ .sbdocs-table {
68
+ background: rgba(255, 255, 255, 0.05) ;
69
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
70
+ }
71
+ .sbdocs-table th {
72
+ background: rgba(255, 255, 255, 0.05) ;
73
+ color: white ;
74
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1) ;
75
+ }
76
+ .sbdocs-table td {
77
+ color: rgba(255, 255, 255, 0.7) ;
78
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05) ;
79
+ }
80
+ `}
81
+ </style>
82
+
83
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900/20 to-gray-900">
84
+ {/* Header */}
85
+ <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
86
+ <div className="absolute inset-0 bg-gradient-to-r from-purple-500/10 via-transparent to-blue-500/10" />
87
+ <div className="relative !mx-auto max-w-7xl px-6 py-16">
88
+ <div className="!space-y-6 text-center">
89
+ <div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-orange-500/30 bg-gradient-to-br from-orange-500/20 to-red-500/20">
90
+ <AlertIcon className="h-12 w-12 text-orange-400" />
91
+ </div>
92
+ <h1 className="!text-fm-primary text-5xl font-bold">
93
+ AlertIcon
94
+ </h1>
95
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
+ A versatile alert icon for warning states, notifications,
97
+ and attention-grabbing elements. Built with accessibility in
98
+ mind using Radix UI's AccessibleIcon wrapper.
99
+ </p>
100
+
101
+ {/* Stats */}
102
+ <div className="flex items-center justify-center gap-8 pt-8">
103
+ <div className="text-center">
104
+ <div className="text-3xl font-bold text-orange-300">
105
+ Accessible
106
+ </div>
107
+ <div className="text-sm text-white/60">
108
+ Screen reader friendly
109
+ </div>
110
+ </div>
111
+ <div className="h-8 w-px bg-white/20" />
112
+ <div className="text-center">
113
+ <div className="text-3xl font-bold text-yellow-300">
114
+ Scalable
115
+ </div>
116
+ <div className="text-sm text-white/60">
117
+ Any size needed
118
+ </div>
119
+ </div>
120
+ <div className="h-8 w-px bg-white/20" />
121
+ <div className="text-center">
122
+ <div className="text-3xl font-bold text-red-300">
123
+ Flexible
124
+ </div>
125
+ <div className="text-sm text-white/60">
126
+ Customizable styling
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ {/* Content */}
135
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
136
+ {/* Quick Usage */}
137
+ <div className="!space-y-8">
138
+ <h2 className="text-center text-3xl font-bold !text-white">
139
+ Quick Start
140
+ </h2>
141
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
142
+ <div className="!space-y-4">
143
+ <h3 className="text-xl font-semibold !text-orange-300">
144
+ Basic Usage
145
+ </h3>
146
+ <div className="rounded-lg bg-black/40 p-4">
147
+ <pre className="overflow-x-auto text-sm !text-green-300">
148
+ {`import { AlertIcon } from "@icons/alert-icon"
149
+
150
+ function MyComponent() {
151
+ return (
152
+ <div className="flex items-center gap-2">
153
+ <AlertIcon className="h-5 w-5 text-orange-500" />
154
+ <span>Warning message</span>
155
+ </div>
156
+ )
157
+ }`}
158
+ </pre>
159
+ </div>
160
+ </div>
161
+
162
+ <div className="!space-y-4">
163
+ <h3 className="text-xl font-semibold !text-orange-300">
164
+ Live Preview
165
+ </h3>
166
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
167
+ <div className="flex items-center gap-3 rounded-lg border border-orange-500/20 bg-orange-500/10 px-4 py-2">
168
+ <AlertIcon className="h-5 w-5 text-orange-400" />
169
+ <span className="text-white">Warning message</span>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ {/* Props Documentation */}
177
+ <div className="!space-y-8">
178
+ <h2 className="text-center text-3xl font-bold !text-white">
179
+ Props & Configuration
180
+ </h2>
181
+
182
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
183
+ <div className="bg-white/5 p-4">
184
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
185
+ </div>
186
+ <table className="!my-0 w-full">
187
+ <thead className="bg-white/5">
188
+ <tr className="border-b border-white/10">
189
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
190
+ Prop
191
+ </th>
192
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
193
+ Type
194
+ </th>
195
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
196
+ Default
197
+ </th>
198
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
199
+ Description
200
+ </th>
201
+ </tr>
202
+ </thead>
203
+ <tbody>
204
+ <tr className="border-b border-white/5">
205
+ <td className="px-6 py-4 font-mono text-sm !text-orange-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">16</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-orange-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">16</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-orange-300">
230
+ fill
231
+ </td>
232
+ <td className="px-6 py-4 text-sm !text-white/70">
233
+ string
234
+ </td>
235
+ <td className="px-6 py-4 text-sm !text-white/50">
236
+ currentColor
237
+ </td>
238
+ <td className="px-6 py-4 text-sm !text-white/70">
239
+ Fill color of the 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-orange-300">
244
+ className
245
+ </td>
246
+ <td className="px-6 py-4 text-sm !text-white/70">
247
+ string
248
+ </td>
249
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
250
+ <td className="px-6 py-4 text-sm !text-white/70">
251
+ CSS classes for styling
252
+ </td>
253
+ </tr>
254
+ <tr className="border-b border-white/5">
255
+ <td className="px-6 py-4 font-mono text-sm !text-orange-300">
256
+ filled
257
+ </td>
258
+ <td className="px-6 py-4 text-sm !text-white/70">
259
+ boolean
260
+ </td>
261
+ <td className="px-6 py-4 text-sm !text-white/50">
262
+ false
263
+ </td>
264
+ <td className="px-6 py-4 text-sm !text-white/70">
265
+ Whether to use filled variant
266
+ </td>
267
+ </tr>
268
+ <tr className="!bg-black/10">
269
+ <td className="px-6 py-4 font-mono text-sm !text-orange-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-orange-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
+ <AlertIcon className="!mx-auto mb-2 h-3 w-3 text-orange-400" />
300
+ <span className="text-xs text-white/60">12px</span>
301
+ </div>
302
+ <div className="text-center">
303
+ <AlertIcon className="!mx-auto mb-2 h-4 w-4 text-orange-400" />
304
+ <span className="text-xs text-white/60">16px</span>
305
+ </div>
306
+ <div className="text-center">
307
+ <AlertIcon className="!mx-auto mb-2 h-5 w-5 text-orange-400" />
308
+ <span className="text-xs text-white/60">20px</span>
309
+ </div>
310
+ <div className="text-center">
311
+ <AlertIcon className="!mx-auto mb-2 h-6 w-6 text-orange-400" />
312
+ <span className="text-xs text-white/60">24px</span>
313
+ </div>
314
+ <div className="text-center">
315
+ <AlertIcon className="!mx-auto mb-2 h-8 w-8 text-orange-400" />
316
+ <span className="text-xs text-white/60">32px</span>
317
+ </div>
318
+ <div className="text-center">
319
+ <AlertIcon className="!mx-auto mb-2 h-12 w-12 text-orange-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-orange-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-blue-300">
331
+ {`// Small (16px)
332
+ <AlertIcon className="h-4 w-4" />
333
+
334
+ // Medium (24px)
335
+ <AlertIcon className="h-6 w-6" />
336
+
337
+ // Large (32px)
338
+ <AlertIcon className="h-8 w-8" />
339
+
340
+ // Custom size
341
+ <AlertIcon 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-orange-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
+ <AlertIcon className="h-6 w-6 text-orange-400" />
363
+ <div>
364
+ <div className="text-sm font-medium text-white">
365
+ Warning
366
+ </div>
367
+ <div className="text-xs text-white/60">
368
+ text-orange-400
369
+ </div>
370
+ </div>
371
+ </div>
372
+ <div className="flex items-center gap-4">
373
+ <AlertIcon className="h-6 w-6 text-red-400" />
374
+ <div>
375
+ <div className="text-sm font-medium text-white">
376
+ Danger
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
+ <AlertIcon className="h-6 w-6 text-yellow-400" />
385
+ <div>
386
+ <div className="text-sm font-medium text-white">
387
+ Caution
388
+ </div>
389
+ <div className="text-xs text-white/60">
390
+ text-yellow-400
391
+ </div>
392
+ </div>
393
+ </div>
394
+ <div className="flex items-center gap-4">
395
+ <AlertIcon className="h-6 w-6 text-blue-400" />
396
+ <div>
397
+ <div className="text-sm font-medium text-white">
398
+ Info
399
+ </div>
400
+ <div className="text-xs text-white/60">
401
+ text-blue-400
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-orange-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
415
+ <AlertIcon className="h-6 w-6 text-orange-400" />
416
+ <AlertIcon className="h-6 w-6 text-red-500" />
417
+
418
+ // Using CSS custom properties
419
+ <AlertIcon
420
+ className="h-6 w-6"
421
+ style={{ color: 'var(--color-warning)' }}
422
+ />
423
+
424
+ // Direct fill prop
425
+ <AlertIcon
426
+ width={24}
427
+ height={24}
428
+ fill="#ff6b35"
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
+ {/* Alert Banner */}
444
+ <div className="!space-y-4">
445
+ <h3 className="text-lg font-semibold !text-orange-300">
446
+ Alert Banner
447
+ </h3>
448
+ <div className="!space-y-4">
449
+ <div className="rounded-lg border border-orange-500/20 bg-orange-500/10 p-4">
450
+ <div className="flex items-start gap-3">
451
+ <AlertIcon className="mt-0.5 h-5 w-5 flex-shrink-0 text-orange-400" />
452
+ <div>
453
+ <h4 className="font-medium !text-orange-200">
454
+ System Maintenance
455
+ </h4>
456
+ <p className="text-sm !text-orange-300/80">
457
+ Scheduled maintenance will occur tonight from 2-4
458
+ AM EST.
459
+ </p>
460
+ </div>
461
+ </div>
462
+ </div>
463
+ <div className="rounded-lg bg-black/40 p-4">
464
+ <pre className="overflow-x-auto text-sm !text-green-300">
465
+ {`<div className="border border-orange-500/20 bg-orange-500/10 p-4 rounded-lg">
466
+ <div className="flex items-start gap-3">
467
+ <AlertIcon className="h-5 w-5 text-orange-400 mt-0.5 flex-shrink-0" />
468
+ <div>
469
+ <h4 className="font-medium text-orange-200">System Maintenance</h4>
470
+ <p className="text-sm text-orange-300/80">
471
+ Scheduled maintenance will occur tonight from 2-4 AM EST.
472
+ </p>
473
+ </div>
474
+ </div>
475
+ </div>`}
476
+ </pre>
477
+ </div>
478
+ </div>
479
+ </div>
480
+
481
+ {/* Form Validation */}
482
+ <div className="!space-y-4">
483
+ <h3 className="text-lg font-semibold !text-orange-300">
484
+ Form Validation
485
+ </h3>
486
+ <div className="!space-y-4">
487
+ <div className="!space-y-2">
488
+ <label className="text-sm font-medium !text-white">
489
+ Email Address
490
+ </label>
491
+ <div className="relative">
492
+ <input
493
+ type="email"
494
+ className="w-full rounded-lg border border-red-500/50 bg-white/5 px-3 py-2 pr-10 !text-white focus:border-red-500 focus:ring-2 focus:ring-red-500/20"
495
+ placeholder="Enter your email"
496
+ defaultValue="invalid-email"
497
+ />
498
+ <AlertIcon className="absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2 text-red-400" />
499
+ </div>
500
+ <div className="flex items-center gap-2 text-sm text-red-400">
501
+ <AlertIcon className="h-4 w-4" />
502
+ <span>Please enter a valid email address</span>
503
+ </div>
504
+ </div>
505
+ <div className="rounded-lg bg-black/40 p-4">
506
+ <pre className="overflow-x-auto text-sm !text-green-300">
507
+ {`// Input with validation icon
508
+ <div className="relative">
509
+ <input className="pr-10 border-red-500/50" />
510
+ <AlertIcon className="absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-red-400" />
511
+ </div>
512
+
513
+ // Error message
514
+ <div className="flex items-center gap-2 text-sm text-red-400">
515
+ <AlertIcon className="h-4 w-4" />
516
+ <span>Please enter a valid email address</span>
517
+ </div>`}
518
+ </pre>
519
+ </div>
520
+ </div>
521
+ </div>
522
+
523
+ {/* Button with Icon */}
524
+ <div className="!space-y-4">
525
+ <h3 className="text-lg font-semibold !text-orange-300">
526
+ Button Integration
527
+ </h3>
528
+ <div className="!space-y-4">
529
+ <div className="flex gap-4">
530
+ <button className="flex items-center gap-2 rounded-lg border border-orange-500/30 bg-orange-500/20 px-4 py-2 text-orange-200 transition-colors hover:bg-orange-500/30">
531
+ <AlertIcon className="h-4 w-4" />
532
+ Report Issue
533
+ </button>
534
+ <button className="flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/20 px-4 py-2 text-red-200 transition-colors hover:bg-red-500/30">
535
+ <AlertIcon className="h-4 w-4" />
536
+ Delete Account
537
+ </button>
538
+ </div>
539
+ <div className="rounded-lg bg-black/40 p-4">
540
+ <pre className="overflow-x-auto text-sm !text-green-300">
541
+ {`// Warning button
542
+ <button className="flex items-center gap-2 bg-orange-500/20 border border-orange-500/30 px-4 py-2 rounded-lg">
543
+ <AlertIcon className="h-4 w-4" />
544
+ Report Issue
545
+ </button>
546
+
547
+ // Danger button
548
+ <button className="flex items-center gap-2 bg-red-500/20 border border-red-500/30 px-4 py-2 rounded-lg">
549
+ <AlertIcon className="h-4 w-4" />
550
+ Delete Account
551
+ </button>`}
552
+ </pre>
553
+ </div>
554
+ </div>
555
+ </div>
556
+
557
+ {/* Tooltip */}
558
+ <div className="!space-y-4">
559
+ <h3 className="text-lg font-semibold !text-orange-300">
560
+ Interactive Tooltip
561
+ </h3>
562
+ <div className="!space-y-4">
563
+ <div className="flex items-center gap-2">
564
+ <span className="text-white">Storage Usage</span>
565
+ <div className="group relative">
566
+ <AlertIcon className="h-4 w-4 cursor-help text-orange-400" />
567
+ <div className="invisible absolute bottom-full left-1/2 mb-2 -translate-x-1/2 rounded-lg bg-black/90 px-3 py-2 text-xs text-white shadow-lg group-hover:visible">
568
+ <div className="flex items-center gap-2">
569
+ <AlertIcon className="h-3 w-3 text-orange-400" />
570
+ <span>You're approaching your storage limit</span>
571
+ </div>
572
+ <div className="absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-black/90"></div>
573
+ </div>
574
+ </div>
575
+ </div>
576
+ <div className="rounded-lg bg-black/40 p-4">
577
+ <pre className="overflow-x-auto text-sm !text-green-300">
578
+ {`<div className="group relative">
579
+ <AlertIcon className="h-4 w-4 text-orange-400 cursor-help" />
580
+ <div className="invisible group-hover:visible absolute bottom-full left-1/2 mb-2 -translate-x-1/2 rounded-lg bg-black/90 px-3 py-2 text-xs text-white shadow-lg">
581
+ <div className="flex items-center gap-2">
582
+ <AlertIcon className="h-3 w-3 text-orange-400" />
583
+ <span>You're approaching your storage limit</span>
584
+ </div>
585
+ </div>
586
+ </div>`}
587
+ </pre>
588
+ </div>
589
+ </div>
590
+ </div>
591
+ </div>
592
+ </div>
593
+
594
+ {/* Accessibility */}
595
+ <div className="!space-y-8">
596
+ <h2 className="text-center text-3xl font-bold !text-white">
597
+ Accessibility Features
598
+ </h2>
599
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
600
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
601
+ <h3 className="text-lg font-semibold !text-green-300">
602
+ ✅ Built-in Features
603
+ </h3>
604
+ <ul className="!space-y-2 text-sm !text-white/70">
605
+ <li className="!text-white/70">
606
+ Uses Radix UI AccessibleIcon wrapper
607
+ </li>
608
+ <li className="!text-white/70">
609
+ Provides screen reader label "Alert icon"
610
+ </li>
611
+ <li className="!text-white/70">
612
+ Supports keyboard navigation when interactive
613
+ </li>
614
+ <li className="!text-white/70">
615
+ Maintains proper color contrast ratios
616
+ </li>
617
+ <li className="!text-white/70">
618
+ Scales with user's font size preferences
619
+ </li>
620
+ </ul>
621
+ </div>
622
+
623
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
624
+ <h3 className="text-lg font-semibold !text-orange-300">
625
+ 💡 Best Practices
626
+ </h3>
627
+ <ul className="!space-y-2 text-sm text-white/70">
628
+ <li className="!text-white/70">
629
+ Always pair with descriptive text
630
+ </li>
631
+ <li className="!text-white/70">
632
+ Use consistent colors for alert types
633
+ </li>
634
+ <li className="!text-white/70">
635
+ Ensure sufficient color contrast
636
+ </li>
637
+ <li className="!text-white/70">
638
+ Add focus states for interactive elements
639
+ </li>
640
+ <li className="!text-white/70">
641
+ Consider motion sensitivity for animations
642
+ </li>
643
+ </ul>
644
+ </div>
645
+ </div>
646
+
647
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
648
+ <h3 className="mb-4 text-lg font-semibold !text-purple-300">
649
+ Custom Accessibility Label
650
+ </h3>
651
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
652
+ <div className="rounded-lg bg-black/40 p-4">
653
+ <pre className="overflow-x-auto text-sm !text-blue-300">
654
+ {`// Custom implementation with specific label
655
+ import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
656
+
657
+ function CustomAlertIcon({ label = "Alert", ...props }) {
658
+ return (
659
+ <AccessibleIcon label={label}>
660
+ <AlertIcon {...props} />
661
+ </AccessibleIcon>
662
+ )
663
+ }
664
+
665
+ // Usage with specific context
666
+ <CustomAlertIcon
667
+ label="Form validation error"
668
+ className="h-4 w-4 text-red-400"
669
+ />`}
670
+ </pre>
671
+ </div>
672
+ <div className="!space-y-4">
673
+ <p className="text-sm !text-white/70">
674
+ For specific contexts, you can wrap the AlertIcon with a
675
+ custom AccessibleIcon component that provides more
676
+ descriptive labels.
677
+ </p>
678
+ <div className="rounded-lg border border-orange-500/20 bg-orange-500/10 p-4">
679
+ <div className="flex items-center gap-2 text-sm text-orange-200">
680
+ <AlertIcon className="h-4 w-4" />
681
+ <span>
682
+ This approach gives screen readers more context
683
+ </span>
684
+ </div>
685
+ </div>
686
+ </div>
687
+ </div>
688
+ </div>
689
+ </div>
690
+
691
+ {/* Related Icons */}
692
+ <div className="!space-y-8">
693
+ <h2 className="text-center text-3xl font-bold !text-white">
694
+ Related Icons
695
+ </h2>
696
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
697
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
698
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
699
+ <span className="text-2xl">ℹ️</span>
700
+ </div>
701
+ <div>
702
+ <div className="font-medium text-white">InfoIcon</div>
703
+ <div className="text-xs text-white/60">
704
+ Information states
705
+ </div>
706
+ </div>
707
+ </div>
708
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
709
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
710
+ <span className="text-2xl">✅</span>
711
+ </div>
712
+ <div>
713
+ <div className="font-medium text-white">CheckIcon</div>
714
+ <div className="text-xs text-white/60">
715
+ Success states
716
+ </div>
717
+ </div>
718
+ </div>
719
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
720
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
721
+ <span className="text-2xl">❌</span>
722
+ </div>
723
+ <div>
724
+ <div className="font-medium text-white">ErrorIcon</div>
725
+ <div className="text-xs text-white/60">Error states</div>
726
+ </div>
727
+ </div>
728
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
729
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
730
+ <span className="text-2xl">❓</span>
731
+ </div>
732
+ <div>
733
+ <div className="font-medium text-white">HelpIcon</div>
734
+ <div className="text-xs text-white/60">
735
+ Help & guidance
736
+ </div>
737
+ </div>
738
+ </div>
739
+ </div>
740
+ </div>
741
+ </div>
742
+
743
+ {/* Footer */}
744
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
745
+ <div className="!mx-auto max-w-7xl px-6 py-8">
746
+ <div className="!space-y-4 text-center">
747
+ <p className="!text-white/60">
748
+ AlertIcon is part of the Aural UI icon library, built with
749
+ accessibility and consistency in mind.
750
+ </p>
751
+ <p className="text-sm !text-white/40">
752
+ All icons use Radix UI's AccessibleIcon for screen reader
753
+ compatibility and follow WCAG guidelines.
754
+ </p>
755
+ </div>
756
+ </div>
757
+ </div>
758
+ </div>
759
+ </>
760
+ ),
761
+ },
762
+ },
763
+ tags: ["autodocs"],
764
+ argTypes: {
765
+ width: {
766
+ control: { type: "range", min: 8, max: 96, step: 2 },
767
+ description: "Width of the icon in pixels",
768
+ },
769
+ height: {
770
+ control: { type: "range", min: 8, max: 96, step: 2 },
771
+ description: "Height of the icon in pixels",
772
+ },
773
+ fill: {
774
+ control: "color",
775
+ description: "Fill color of the icon",
776
+ },
777
+ className: {
778
+ control: "text",
779
+ description: "CSS classes for styling",
780
+ },
781
+ filled: {
782
+ control: "boolean",
783
+ description: "Whether to use filled variant",
784
+ },
785
+ },
786
+ }
787
+
788
+ export default meta
789
+ type Story = StoryObj<typeof AlertIcon>
790
+
791
+ // Story parameters for consistent dark theme
792
+ const storyParameters = {
793
+ backgrounds: {
794
+ default: "dark",
795
+ values: [
796
+ { name: "dark", value: "#0a0a0a" },
797
+ { name: "darker", value: "#000000" },
798
+ ],
799
+ },
800
+ }
801
+
802
+ export const Default: Story = {
803
+ args: {
804
+ width: 24,
805
+ height: 24,
806
+ className: "text-orange-400",
807
+ },
808
+ parameters: storyParameters,
809
+ render: (args) => (
810
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
811
+ <AlertIcon {...args} />
812
+ </div>
813
+ ),
814
+ }
815
+
816
+ export const SizeVariations: Story = {
817
+ parameters: {
818
+ ...storyParameters,
819
+ docs: {
820
+ description: {
821
+ story:
822
+ "AlertIcon in different sizes, from small UI elements to large displays.",
823
+ },
824
+ },
825
+ },
826
+ render: () => (
827
+ <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">
828
+ <div className="text-center">
829
+ <AlertIcon className="!mx-auto mb-2 h-3 w-3 text-orange-400" />
830
+ <span className="text-xs text-white/60">12px</span>
831
+ </div>
832
+ <div className="text-center">
833
+ <AlertIcon className="!mx-auto mb-2 h-4 w-4 text-orange-400" />
834
+ <span className="text-xs text-white/60">16px</span>
835
+ </div>
836
+ <div className="text-center">
837
+ <AlertIcon className="!mx-auto mb-2 h-5 w-5 text-orange-400" />
838
+ <span className="text-xs text-white/60">20px</span>
839
+ </div>
840
+ <div className="text-center">
841
+ <AlertIcon className="!mx-auto mb-2 h-6 w-6 text-orange-400" />
842
+ <span className="text-xs text-white/60">24px</span>
843
+ </div>
844
+ <div className="text-center">
845
+ <AlertIcon className="!mx-auto mb-2 h-8 w-8 text-orange-400" />
846
+ <span className="text-xs text-white/60">32px</span>
847
+ </div>
848
+ <div className="text-center">
849
+ <AlertIcon className="!mx-auto mb-2 h-12 w-12 text-orange-400" />
850
+ <span className="text-xs text-white/60">48px</span>
851
+ </div>
852
+ </div>
853
+ ),
854
+ }
855
+
856
+ export const ColorVariations: Story = {
857
+ parameters: {
858
+ ...storyParameters,
859
+ docs: {
860
+ description: {
861
+ story:
862
+ "AlertIcon in different semantic colors for various alert types.",
863
+ },
864
+ },
865
+ },
866
+ render: () => (
867
+ <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">
868
+ <div className="text-center">
869
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-orange-500/30 bg-orange-500/20">
870
+ <AlertIcon className="h-8 w-8 text-orange-400" />
871
+ </div>
872
+ <div className="text-sm font-medium text-white">Warning</div>
873
+ <div className="text-xs text-orange-400">text-orange-400</div>
874
+ </div>
875
+ <div className="text-center">
876
+ <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">
877
+ <AlertIcon className="h-8 w-8 text-red-400" />
878
+ </div>
879
+ <div className="text-sm font-medium text-white">Danger</div>
880
+ <div className="text-xs text-red-400">text-red-400</div>
881
+ </div>
882
+ <div className="text-center">
883
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-yellow-500/30 bg-yellow-500/20">
884
+ <AlertIcon className="h-8 w-8 text-yellow-400" />
885
+ </div>
886
+ <div className="text-sm font-medium text-white">Caution</div>
887
+ <div className="text-xs text-yellow-400">text-yellow-400</div>
888
+ </div>
889
+ <div className="text-center">
890
+ <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">
891
+ <AlertIcon className="h-8 w-8 text-blue-400" />
892
+ </div>
893
+ <div className="text-sm font-medium text-white">Info</div>
894
+ <div className="text-xs text-blue-400">text-blue-400</div>
895
+ </div>
896
+ </div>
897
+ ),
898
+ }
899
+
900
+ export const UsageExamples: Story = {
901
+ parameters: {
902
+ ...storyParameters,
903
+ docs: {
904
+ description: {
905
+ story:
906
+ "Real-world usage examples showing AlertIcon in different UI contexts.",
907
+ },
908
+ },
909
+ },
910
+ render: () => (
911
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
912
+ {/* Alert Banner */}
913
+ <div className="!space-y-2">
914
+ <h3 className="text-sm font-medium text-white">Alert Banner</h3>
915
+ <div className="rounded-lg border border-orange-500/20 bg-orange-500/10 p-4">
916
+ <div className="flex items-start gap-3">
917
+ <AlertIcon className="mt-0.5 h-5 w-5 flex-shrink-0 text-orange-400" />
918
+ <div>
919
+ <h4 className="font-medium text-orange-200">
920
+ System Maintenance
921
+ </h4>
922
+ <p className="text-sm text-orange-300/80">
923
+ Scheduled maintenance will occur tonight from 2-4 AM EST.
924
+ </p>
925
+ </div>
926
+ </div>
927
+ </div>
928
+ </div>
929
+
930
+ {/* Form Validation */}
931
+ <div className="!space-y-2">
932
+ <h3 className="text-sm font-medium text-white">Form Validation</h3>
933
+ <div className="!space-y-2">
934
+ <div className="relative">
935
+ <input
936
+ type="email"
937
+ className="w-full rounded-lg border border-red-500/50 bg-white/5 px-3 py-2 pr-10 text-white placeholder-white/50 focus:border-red-500 focus:ring-2 focus:ring-red-500/20"
938
+ placeholder="Enter your email"
939
+ defaultValue="invalid-email"
940
+ />
941
+ <AlertIcon className="absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2 text-red-400" />
942
+ </div>
943
+ <div className="flex items-center gap-2 text-sm text-red-400">
944
+ <AlertIcon className="h-4 w-4" />
945
+ <span>Please enter a valid email address</span>
946
+ </div>
947
+ </div>
948
+ </div>
949
+
950
+ {/* Button Integration */}
951
+ <div className="!space-y-2">
952
+ <h3 className="text-sm font-medium text-white">Button Integration</h3>
953
+ <div className="flex gap-4">
954
+ <button className="flex items-center gap-2 rounded-lg border border-orange-500/30 bg-orange-500/20 px-4 py-2 text-orange-200 transition-colors hover:bg-orange-500/30">
955
+ <AlertIcon className="h-4 w-4" />
956
+ Report Issue
957
+ </button>
958
+ <button className="flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/20 px-4 py-2 text-red-200 transition-colors hover:bg-red-500/30">
959
+ <AlertIcon className="h-4 w-4" />
960
+ Delete Account
961
+ </button>
962
+ </div>
963
+ </div>
964
+ </div>
965
+ ),
966
+ }
967
+
968
+ export const Playground: Story = {
969
+ parameters: {
970
+ ...storyParameters,
971
+ docs: {
972
+ description: {
973
+ story:
974
+ "Interactive playground to experiment with different AlertIcon configurations.",
975
+ },
976
+ },
977
+ },
978
+ args: {
979
+ width: 32,
980
+ height: 32,
981
+ className: "text-orange-400",
982
+ filled: false,
983
+ },
984
+ render: (args) => (
985
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
986
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
987
+ <AlertIcon {...args} />
988
+ </div>
989
+ </div>
990
+ ),
991
+ }