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