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