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,1248 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { ImportFolderIcon } from "."
5
+
6
+ const meta: Meta<typeof ImportFolderIcon> = {
7
+ title: "Icons/ImportFolderIcon",
8
+ component: ImportFolderIcon,
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 pulse {
81
+ 0%, 100% { opacity: 1; }
82
+ 50% { opacity: 0.5; }
83
+ }
84
+ .animate-pulse {
85
+ animation: pulse 2s ease-in-out infinite;
86
+ }
87
+ `}
88
+ </style>
89
+
90
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900/20 to-gray-900">
91
+ {/* Header */}
92
+ <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
93
+ <div className="absolute inset-0 bg-gradient-to-r from-green-500/10 via-transparent to-yellow-500/10" />
94
+ <div className="relative !mx-auto max-w-7xl px-6 py-16">
95
+ <div className="!space-y-6 text-center">
96
+ <div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-green-500/30 bg-gradient-to-br from-green-500/20 to-yellow-500/20">
97
+ <ImportFolderIcon className="h-12 w-12 text-green-400" />
98
+ </div>
99
+ <h1 className="!text-fm-primary text-5xl font-bold">
100
+ ImportFolderIcon
101
+ </h1>
102
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
103
+ A specialized folder icon with import functionality,
104
+ featuring a clean folder design with an import arrow
105
+ indicator. Perfect for file management systems, data import
106
+ operations, and document organization interfaces. Built with
107
+ accessibility in mind using Radix UI's AccessibleIcon
108
+ wrapper.
109
+ </p>
110
+
111
+ {/* Stats */}
112
+ <div className="flex items-center justify-center gap-8 pt-8">
113
+ <div className="text-center">
114
+ <div className="text-3xl font-bold text-green-300">
115
+ Import
116
+ </div>
117
+ <div className="text-sm text-white/60">
118
+ File operations
119
+ </div>
120
+ </div>
121
+ <div className="h-8 w-px bg-white/20" />
122
+ <div className="text-center">
123
+ <div className="text-3xl font-bold text-yellow-300">
124
+ Organize
125
+ </div>
126
+ <div className="text-sm text-white/60">
127
+ Folder management
128
+ </div>
129
+ </div>
130
+ <div className="h-8 w-px bg-white/20" />
131
+ <div className="text-center">
132
+ <div className="text-3xl font-bold text-cyan-300">
133
+ Intuitive
134
+ </div>
135
+ <div className="text-sm text-white/60">
136
+ Clear direction
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ {/* Content */}
145
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
146
+ {/* Quick Usage */}
147
+ <div className="!space-y-8">
148
+ <h2 className="text-center text-3xl font-bold !text-white">
149
+ Quick Start
150
+ </h2>
151
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
152
+ <div className="!space-y-4">
153
+ <h3 className="text-xl font-semibold !text-green-300">
154
+ Basic Usage
155
+ </h3>
156
+ <div className="rounded-lg bg-black/40 p-4">
157
+ <pre className="overflow-x-auto text-sm !text-green-300">
158
+ {`import { ImportFolderIcon } from "@icons/import-folder-icon"
159
+
160
+ function FileImport() {
161
+ return (
162
+ <div className="flex items-center gap-3">
163
+ <ImportFolderIcon className="h-6 w-6 text-green-400 " />
164
+ <span>Import Files</span>
165
+ </div>
166
+ )
167
+ }`}
168
+ </pre>
169
+ </div>
170
+ </div>
171
+
172
+ <div className="!space-y-4">
173
+ <h3 className="text-xl font-semibold !text-green-300">
174
+ Live Preview
175
+ </h3>
176
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
177
+ <div className="flex items-center gap-3 rounded-lg border border-green-500/20 bg-green-500/10 px-4 py-3">
178
+ <ImportFolderIcon className="h-6 w-6 text-green-400" />
179
+ <span className="text-white">Import Files</span>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+
186
+ {/* Props Documentation */}
187
+ <div className="!space-y-8">
188
+ <h2 className="text-center text-3xl font-bold !text-white">
189
+ Props & Configuration
190
+ </h2>
191
+
192
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
193
+ <div className="bg-white/5 p-4">
194
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
195
+ </div>
196
+ <table className="!my-0 w-full">
197
+ <thead className="bg-white/5">
198
+ <tr className="border-b border-white/10">
199
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
200
+ Prop
201
+ </th>
202
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
203
+ Type
204
+ </th>
205
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
206
+ Default
207
+ </th>
208
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
209
+ Description
210
+ </th>
211
+ </tr>
212
+ </thead>
213
+ <tbody>
214
+ <tr className="border-b border-white/5">
215
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
216
+ width
217
+ </td>
218
+ <td className="px-6 py-4 text-sm !text-white/70">
219
+ number | string
220
+ </td>
221
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
222
+ <td className="px-6 py-4 text-sm !text-white/70">
223
+ Width of the icon in pixels
224
+ </td>
225
+ </tr>
226
+ <tr className="border-b border-white/5 !bg-black/10">
227
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
228
+ height
229
+ </td>
230
+ <td className="px-6 py-4 text-sm !text-white/70">
231
+ number | string
232
+ </td>
233
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
234
+ <td className="px-6 py-4 text-sm !text-white/70">
235
+ Height of the icon in pixels
236
+ </td>
237
+ </tr>
238
+ <tr className="border-b border-white/5">
239
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
240
+ stroke
241
+ </td>
242
+ <td className="px-6 py-4 text-sm !text-white/70">
243
+ string
244
+ </td>
245
+ <td className="px-6 py-4 text-sm !text-white/50">
246
+ currentColor
247
+ </td>
248
+ <td className="px-6 py-4 text-sm !text-white/70">
249
+ Stroke color of the folder outline
250
+ </td>
251
+ </tr>
252
+ <tr className="border-b border-white/5 !bg-black/10">
253
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
254
+ strokeWidth
255
+ </td>
256
+ <td className="px-6 py-4 text-sm !text-white/70">
257
+ string | number
258
+ </td>
259
+ <td className="px-6 py-4 text-sm !text-white/50">1</td>
260
+ <td className="px-6 py-4 text-sm !text-white/70">
261
+ Stroke width of the outline
262
+ </td>
263
+ </tr>
264
+ <tr className="border-b border-white/5">
265
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
266
+ fill
267
+ </td>
268
+ <td className="px-6 py-4 text-sm !text-white/70">
269
+ string
270
+ </td>
271
+ <td className="px-6 py-4 text-sm !text-white/50">
272
+ none
273
+ </td>
274
+ <td className="px-6 py-4 text-sm !text-white/70">
275
+ Fill color of the icon
276
+ </td>
277
+ </tr>
278
+ <tr className="border-b border-white/5 !bg-black/10">
279
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
280
+ className
281
+ </td>
282
+ <td className="px-6 py-4 text-sm !text-white/70">
283
+ string
284
+ </td>
285
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
286
+ <td className="px-6 py-4 text-sm !text-white/70">
287
+ CSS classes for styling (use for overrides)
288
+ </td>
289
+ </tr>
290
+ <tr className="!bg-black/10">
291
+ <td className="px-6 py-4 font-mono text-sm !text-green-300">
292
+ ...svgProps
293
+ </td>
294
+ <td className="px-6 py-4 text-sm !text-white/70">
295
+ SVGProps
296
+ </td>
297
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
298
+ <td className="px-6 py-4 text-sm !text-white/70">
299
+ All standard SVG element props
300
+ </td>
301
+ </tr>
302
+ </tbody>
303
+ </table>
304
+ </div>
305
+ </div>
306
+
307
+ {/* Size Variations */}
308
+ <div className="!space-y-8">
309
+ <h2 className="text-center text-3xl font-bold !text-white">
310
+ Size Variations
311
+ </h2>
312
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
313
+ <div className="!space-y-6">
314
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
315
+ <div className="!space-y-4">
316
+ <h3 className="text-lg font-semibold !text-green-300">
317
+ Standard Sizes
318
+ </h3>
319
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
320
+ <div className="text-center">
321
+ <ImportFolderIcon className="!mx-auto mb-2 h-3 w-3 text-green-400" />
322
+ <span className="text-xs text-white/60">12px</span>
323
+ </div>
324
+ <div className="text-center">
325
+ <ImportFolderIcon className="!mx-auto mb-2 h-4 w-4 text-green-400" />
326
+ <span className="text-xs text-white/60">16px</span>
327
+ </div>
328
+ <div className="text-center">
329
+ <ImportFolderIcon className="!mx-auto mb-2 h-5 w-5 text-green-400" />
330
+ <span className="text-xs text-white/60">20px</span>
331
+ </div>
332
+ <div className="text-center">
333
+ <ImportFolderIcon className="!mx-auto mb-2 h-6 w-6 text-green-400" />
334
+ <span className="text-xs text-white/60">24px</span>
335
+ </div>
336
+ <div className="text-center">
337
+ <ImportFolderIcon className="!mx-auto mb-2 h-8 w-8 text-green-400" />
338
+ <span className="text-xs text-white/60">32px</span>
339
+ </div>
340
+ <div className="text-center">
341
+ <ImportFolderIcon className="!mx-auto mb-2 h-12 w-12 text-green-400" />
342
+ <span className="text-xs text-white/60">48px</span>
343
+ </div>
344
+ </div>
345
+ </div>
346
+
347
+ <div className="!space-y-4">
348
+ <h3 className="text-lg font-semibold !text-green-300">
349
+ Code Example
350
+ </h3>
351
+ <div className="rounded-lg bg-black/40 p-4">
352
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
353
+ {`// Small (16px)
354
+ <ImportFolderIcon className="h-4 w-4 " />
355
+
356
+ // Medium (24px)
357
+ <ImportFolderIcon className="h-6 w-6 " />
358
+
359
+ // Large (32px)
360
+ <ImportFolderIcon className="h-8 w-8 " />
361
+
362
+ // Custom size for buttons
363
+ <ImportFolderIcon
364
+ width={40}
365
+ height={40}
366
+ className="text-green-400 "
367
+ />`}
368
+ </pre>
369
+ </div>
370
+ </div>
371
+ </div>
372
+ </div>
373
+ </div>
374
+ </div>
375
+
376
+ {/* Color Variations */}
377
+ <div className="!space-y-8">
378
+ <h2 className="text-center text-3xl font-bold !text-white">
379
+ Color Variations
380
+ </h2>
381
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
382
+ <div className="!space-y-4">
383
+ <h3 className="text-lg font-semibold !text-green-300">
384
+ Semantic Colors
385
+ </h3>
386
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
387
+ <div className="flex items-center gap-4">
388
+ <ImportFolderIcon className="h-6 w-6 text-green-400" />
389
+ <div>
390
+ <div className="text-sm font-medium text-white">
391
+ Success
392
+ </div>
393
+ <div className="text-xs text-white/60">
394
+ text-green-400
395
+ </div>
396
+ </div>
397
+ </div>
398
+ <div className="flex items-center gap-4">
399
+ <ImportFolderIcon className="h-6 w-6 text-yellow-400" />
400
+ <div>
401
+ <div className="text-sm font-medium text-white">
402
+ Warning
403
+ </div>
404
+ <div className="text-xs text-white/60">
405
+ text-yellow-400
406
+ </div>
407
+ </div>
408
+ </div>
409
+ <div className="flex items-center gap-4">
410
+ <ImportFolderIcon className="h-6 w-6 text-blue-400" />
411
+ <div>
412
+ <div className="text-sm font-medium text-white">
413
+ Primary
414
+ </div>
415
+ <div className="text-xs text-white/60">
416
+ text-blue-400
417
+ </div>
418
+ </div>
419
+ </div>
420
+ <div className="flex items-center gap-4">
421
+ <ImportFolderIcon className="h-6 w-6 text-gray-400" />
422
+ <div>
423
+ <div className="text-sm font-medium text-white">
424
+ Muted
425
+ </div>
426
+ <div className="text-xs text-white/60">
427
+ text-gray-400
428
+ </div>
429
+ </div>
430
+ </div>
431
+ </div>
432
+ </div>
433
+
434
+ <div className="!space-y-4">
435
+ <h3 className="text-lg font-semibold !text-green-300">
436
+ Custom Colors
437
+ </h3>
438
+ <div className="rounded-lg bg-black/40 p-4">
439
+ <pre className="overflow-x-auto text-sm !text-green-300">
440
+ {`// Using Tailwind classes with
441
+ <ImportFolderIcon className="h-6 w-6 text-green-400 " />
442
+ <ImportFolderIcon className="h-6 w-6 text-yellow-500 " />
443
+
444
+ // Using CSS custom properties
445
+ <ImportFolderIcon
446
+ className="h-6 w-6 "
447
+ style={{ color: 'var(--color-success)' }}
448
+ />
449
+
450
+ // Direct stroke prop
451
+ <ImportFolderIcon
452
+ width={24}
453
+ height={24}
454
+ stroke="#10b981"
455
+ />`}
456
+ </pre>
457
+ </div>
458
+ </div>
459
+ </div>
460
+ </div>
461
+
462
+ {/* Usage Examples */}
463
+ <div className="!space-y-8">
464
+ <h2 className="text-center text-3xl font-bold !text-white">
465
+ Usage Examples
466
+ </h2>
467
+
468
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
469
+ {/* File Import Area */}
470
+ <div className="!space-y-4">
471
+ <h3 className="text-lg font-semibold !text-green-300">
472
+ File Import Area
473
+ </h3>
474
+ <div className="!space-y-4">
475
+ <div className="relative rounded-lg border-2 border-dashed border-white/20 bg-white/5 p-8 text-center transition-colors hover:border-green-400/50 hover:bg-green-500/10">
476
+ <ImportFolderIcon className="!mx-auto h-12 w-12 text-white/40" />
477
+ <h4 className="mt-4 text-lg font-medium !text-white">
478
+ Import Folder
479
+ </h4>
480
+ <p className="mt-2 text-sm !text-white/60">
481
+ Drag and drop folders here, or click to browse
482
+ </p>
483
+ <button className="mt-4 rounded-lg bg-green-500/20 px-4 py-2 text-green-300 transition-colors hover:bg-green-500/30">
484
+ Browse Folders
485
+ </button>
486
+ </div>
487
+ <div className="rounded-lg bg-black/40 p-4">
488
+ <pre className="overflow-x-auto text-sm !text-green-300">
489
+ {`<div className="relative border-2 border-dashed border-white/20 bg-white/5 p-8 text-center rounded-lg hover:border-green-400/50 hover:bg-green-500/10 transition-colors">
490
+ <ImportFolderIcon className="mx-auto h-12 w-12 text-white/40 " />
491
+ <h4 className="mt-4 text-lg font-medium text-white">Import Folder</h4>
492
+ <p className="mt-2 text-sm text-white/60">
493
+ Drag and drop folders here, or click to browse
494
+ </p>
495
+ <button className="mt-4 bg-green-500/20 px-4 py-2 rounded-lg text-green-300 hover:bg-green-500/30 transition-colors">
496
+ Browse Folders
497
+ </button>
498
+ </div>`}
499
+ </pre>
500
+ </div>
501
+ </div>
502
+ </div>
503
+
504
+ {/* Import Status List */}
505
+ <div className="!space-y-4">
506
+ <h3 className="text-lg font-semibold !text-green-300">
507
+ Import Status List
508
+ </h3>
509
+ <div className="!space-y-4">
510
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
511
+ {[
512
+ { name: "Documents", status: "completed", count: 24 },
513
+ { name: "Images", status: "processing", count: 56 },
514
+ { name: "Videos", status: "pending", count: 12 },
515
+ ].map((folder, index) => (
516
+ <div
517
+ key={index}
518
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition-colors hover:bg-white/10"
519
+ >
520
+ <ImportFolderIcon
521
+ className={`h-5 w-5 ${
522
+ folder.status === "completed"
523
+ ? "text-green-400"
524
+ : folder.status === "processing"
525
+ ? "text-yellow-400"
526
+ : "text-gray-400"
527
+ }`}
528
+ />
529
+ <div className="flex-1">
530
+ <div className="text-sm font-medium text-white">
531
+ {folder.name}
532
+ </div>
533
+ <div className="text-xs text-white/60">
534
+ {folder.count} files
535
+ </div>
536
+ </div>
537
+ <div
538
+ className={`rounded px-2 py-1 text-xs ${
539
+ folder.status === "completed"
540
+ ? "bg-green-500/20 text-green-300"
541
+ : folder.status === "processing"
542
+ ? "bg-yellow-500/20 text-yellow-300"
543
+ : "bg-gray-500/20 text-gray-300"
544
+ }`}
545
+ >
546
+ {folder.status}
547
+ </div>
548
+ </div>
549
+ ))}
550
+ </div>
551
+ <div className="rounded-lg bg-black/40 p-4">
552
+ <pre className="overflow-x-auto text-sm !text-green-300">
553
+ {`// Import status item
554
+ <div className="flex items-center gap-3 border border-white/10 bg-white/5 p-3 rounded hover:bg-white/10 transition-colors">
555
+ <ImportFolderIcon className="h-5 w-5 text-green-400 " />
556
+ <div className="flex-1">
557
+ <div className="text-sm font-medium text-white">Documents</div>
558
+ <div className="text-xs text-white/60">24 files</div>
559
+ </div>
560
+ <div className="text-xs px-2 py-1 rounded bg-green-500/20 text-green-300">
561
+ completed
562
+ </div>
563
+ </div>`}
564
+ </pre>
565
+ </div>
566
+ </div>
567
+ </div>
568
+
569
+ {/* Button Integration */}
570
+ <div className="!space-y-4">
571
+ <h3 className="text-lg font-semibold !text-green-300">
572
+ Button Integration
573
+ </h3>
574
+ <div className="!space-y-4">
575
+ <div className="flex flex-wrap gap-4">
576
+ <button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-4 py-2 text-green-200 transition-colors hover:bg-green-500/30">
577
+ <ImportFolderIcon className="h-4 w-4" />
578
+ Import Folder
579
+ </button>
580
+ <button className="flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/20 px-4 py-2 text-yellow-200 transition-colors hover:bg-yellow-500/30">
581
+ <ImportFolderIcon className="h-4 w-4" />
582
+ Batch Import
583
+ </button>
584
+ <button className="flex items-center gap-2 rounded-lg border border-white/20 bg-white/5 px-4 py-2 text-white/70 transition-colors hover:bg-white/10">
585
+ <ImportFolderIcon className="h-4 w-4" />
586
+ Browse Folders
587
+ </button>
588
+ </div>
589
+ <div className="rounded-lg bg-black/40 p-4">
590
+ <pre className="overflow-x-auto text-sm !text-green-300">
591
+ {`// Primary import button
592
+ <button className="flex items-center gap-2 bg-green-500/20 border border-green-500/30 px-4 py-2 rounded-lg">
593
+ <ImportFolderIcon className="h-4 w-4 " />
594
+ Import Folder
595
+ </button>
596
+
597
+ // Secondary button
598
+ <button className="flex items-center gap-2 bg-white/5 border border-white/20 px-4 py-2 rounded-lg">
599
+ <ImportFolderIcon className="h-4 w-4 " />
600
+ Browse Folders
601
+ </button>`}
602
+ </pre>
603
+ </div>
604
+ </div>
605
+ </div>
606
+
607
+ {/* Sidebar Navigation */}
608
+ <div className="!space-y-4">
609
+ <h3 className="text-lg font-semibold !text-green-300">
610
+ Sidebar Navigation
611
+ </h3>
612
+ <div className="!space-y-4">
613
+ <div className="max-w-xs rounded-lg border border-white/10 bg-white/5 p-3">
614
+ {[
615
+ { name: "All Files", icon: "📄", active: false },
616
+ {
617
+ name: "Import Folder",
618
+ icon: "ImportFolderIcon",
619
+ active: true,
620
+ },
621
+ { name: "Recent", icon: "🕒", active: false },
622
+ { name: "Shared", icon: "👥", active: false },
623
+ ].map((item, index) => (
624
+ <div
625
+ key={index}
626
+ className={`flex cursor-pointer items-center gap-3 rounded p-2 transition-colors ${
627
+ item.active
628
+ ? "bg-green-500/20 text-green-200"
629
+ : "text-white/70 hover:bg-white/10"
630
+ }`}
631
+ >
632
+ {item.icon === "ImportFolderIcon" ? (
633
+ <ImportFolderIcon
634
+ className={`h-4 w-4 ${
635
+ item.active
636
+ ? "text-green-400"
637
+ : "text-white/50"
638
+ }`}
639
+ />
640
+ ) : (
641
+ <span className="text-sm">{item.icon}</span>
642
+ )}
643
+ <span className="flex-1 text-sm">{item.name}</span>
644
+ {item.active && (
645
+ <div className="h-2 w-2 rounded-full bg-green-400"></div>
646
+ )}
647
+ </div>
648
+ ))}
649
+ </div>
650
+ <div className="rounded-lg bg-black/40 p-4">
651
+ <pre className="overflow-x-auto text-sm !text-green-300">
652
+ {`// Navigation item
653
+ <div className="flex items-center gap-3 p-2 rounded bg-green-500/20 text-green-200 cursor-pointer">
654
+ <ImportFolderIcon className="h-4 w-4 text-green-400 " />
655
+ <span className="flex-1 text-sm">Import Folder</span>
656
+ <div className="h-2 w-2 rounded-full bg-green-400"></div>
657
+ </div>`}
658
+ </pre>
659
+ </div>
660
+ </div>
661
+ </div>
662
+ </div>
663
+ </div>
664
+
665
+ {/* Interactive States */}
666
+ <div className="!space-y-8">
667
+ <h2 className="text-center text-3xl font-bold !text-white">
668
+ Interactive States & Animations
669
+ </h2>
670
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
671
+ <div className="!space-y-4">
672
+ <h3 className="text-lg font-semibold !text-green-300">
673
+ Hover & Loading States
674
+ </h3>
675
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
676
+ <div className="flex items-center gap-4">
677
+ <ImportFolderIcon className="h-6 w-6 text-white/60 transition-colors hover:text-green-400" />
678
+ <div>
679
+ <div className="text-sm font-medium text-white">
680
+ Color Change
681
+ </div>
682
+ <div className="text-xs text-white/60">
683
+ hover:text-green-400
684
+ </div>
685
+ </div>
686
+ </div>
687
+ <div className="flex items-center gap-4">
688
+ <ImportFolderIcon className="h-6 w-6 text-white transition-transform hover:scale-110" />
689
+ <div>
690
+ <div className="text-sm font-medium text-white">
691
+ Scale Effect
692
+ </div>
693
+ <div className="text-xs text-white/60">
694
+ hover:scale-110
695
+ </div>
696
+ </div>
697
+ </div>
698
+ <div className="flex items-center gap-4">
699
+ <ImportFolderIcon className="h-6 w-6 animate-pulse text-green-400" />
700
+ <div>
701
+ <div className="text-sm font-medium text-white">
702
+ Processing
703
+ </div>
704
+ <div className="text-xs text-white/60">
705
+ animate-pulse
706
+ </div>
707
+ </div>
708
+ </div>
709
+ <div className="flex items-center gap-4">
710
+ <div
711
+ className="rounded p-2 focus:ring-2 focus:ring-green-500 focus:outline-none"
712
+ tabIndex={0}
713
+ >
714
+ <ImportFolderIcon className="h-6 w-6 text-white" />
715
+ </div>
716
+ <div>
717
+ <div className="text-sm font-medium text-white">
718
+ Focus Ring
719
+ </div>
720
+ <div className="text-xs text-white/60">
721
+ focus:ring-2
722
+ </div>
723
+ </div>
724
+ </div>
725
+ </div>
726
+ </div>
727
+
728
+ <div className="!space-y-4">
729
+ <h3 className="text-lg font-semibold !text-green-300">
730
+ Animation Examples
731
+ </h3>
732
+ <div className="rounded-lg bg-black/40 p-4">
733
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
734
+ {`// Hover effects
735
+ <ImportFolderIcon className="h-6 w-6 text-white/60 hover:text-green-400 transition-colors " />
736
+
737
+ // Scale on hover
738
+ <ImportFolderIcon className="h-6 w-6 text-white hover:scale-110 transition-transform " />
739
+
740
+ // Processing animation
741
+ <ImportFolderIcon className="h-6 w-6 text-green-400 animate-pulse " />
742
+
743
+ // Focus states for accessibility
744
+ <div className="p-2 rounded focus:ring-2 focus:ring-green-500 focus:outline-none" tabIndex={0}>
745
+ <ImportFolderIcon className="h-6 w-6 text-white " />
746
+ </div>
747
+
748
+ // Pulse animation keyframes
749
+ @keyframes pulse {
750
+ 0%, 100% { opacity: 1; }
751
+ 50% { opacity: 0.5; }
752
+ }
753
+
754
+ .animate-pulse {
755
+ animation: pulse 2s ease-in-out infinite;
756
+ }`}
757
+ </pre>
758
+ </div>
759
+ </div>
760
+ </div>
761
+ </div>
762
+
763
+ {/* Accessibility */}
764
+ <div className="!space-y-8">
765
+ <h2 className="text-center text-3xl font-bold !text-white">
766
+ Accessibility Features
767
+ </h2>
768
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
769
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
770
+ <h3 className="text-lg font-semibold !text-green-300">
771
+ ✅ Built-in Features
772
+ </h3>
773
+ <ul className="!space-y-2 text-sm !text-white/70">
774
+ <li className="!text-white/70">
775
+ Uses Radix UI AccessibleIcon wrapper
776
+ </li>
777
+ <li className="!text-white/70">
778
+ Provides screen reader label "Import Folder icon"
779
+ </li>
780
+ <li className="!text-white/70">
781
+ Supports keyboard navigation when interactive
782
+ </li>
783
+ <li className="!text-white/70">
784
+ Maintains proper color contrast ratios
785
+ </li>
786
+ <li className="!text-white/70">
787
+ Scales with user's font size preferences
788
+ </li>
789
+ </ul>
790
+ </div>
791
+
792
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
793
+ <h3 className="text-lg font-semibold !text-green-300">
794
+ 💡 Best Practices
795
+ </h3>
796
+ <ul className="!space-y-2 text-sm text-white/70">
797
+ <li className="!text-white/70">
798
+ Always provide descriptive button labels
799
+ </li>
800
+ <li className="!text-white/70">
801
+ Use consistent colors for import states
802
+ </li>
803
+ <li className="!text-white/70">
804
+ Include progress indicators for long operations
805
+ </li>
806
+ <li className="!text-white/70">
807
+ Add focus states for interactive elements
808
+ </li>
809
+ <li className="!text-white/70">
810
+ Consider file type restrictions and feedback
811
+ </li>
812
+ </ul>
813
+ </div>
814
+ </div>
815
+
816
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
817
+ <h3 className="mb-4 text-lg font-semibold !text-purple-300">
818
+ File Import Accessibility
819
+ </h3>
820
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
821
+ <div className="rounded-lg bg-black/40 p-4">
822
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
823
+ {`// Import button with proper ARIA
824
+ <button
825
+ aria-label="Import folder - browse and select folders to import"
826
+ className="flex items-center gap-2 p-3 rounded-lg focus:ring-2 focus:ring-green-500"
827
+ onClick={handleImport}
828
+ >
829
+ <ImportFolderIcon className="h-5 w-5 text-green-400 " />
830
+ <span>Import Folder</span>
831
+ </button>
832
+
833
+ // Drag-drop area with accessibility
834
+ <div
835
+ role="button"
836
+ aria-label="Drop zone for folders - drag folders here or click to browse"
837
+ tabIndex={0}
838
+ onKeyDown={(e) => {
839
+ if (e.key === 'Enter' || e.key === ' ') {
840
+ handleFolderSelect()
841
+ }
842
+ }}
843
+ className="border-2 border-dashed p-8 text-center rounded-lg focus:ring-2 focus:ring-green-500"
844
+ >
845
+ <ImportFolderIcon className="mx-auto h-12 w-12 text-white/40 " />
846
+ <p>Drop folders here or click to browse</p>
847
+ </div>`}
848
+ </pre>
849
+ </div>
850
+ <div className="!space-y-4">
851
+ <p className="text-sm !text-white/70">
852
+ When using ImportFolderIcon for file operations, provide
853
+ clear instructions and feedback for all user
854
+ interactions, including keyboard-only navigation.
855
+ </p>
856
+ <div className="rounded-lg border border-green-500/20 bg-green-500/10 p-4">
857
+ <div className="flex items-center gap-2 text-sm text-green-200">
858
+ <ImportFolderIcon className="h-4 w-4" />
859
+ <span>
860
+ Screen readers get context about import
861
+ functionality
862
+ </span>
863
+ </div>
864
+ </div>
865
+ </div>
866
+ </div>
867
+ </div>
868
+ </div>
869
+
870
+ {/* Related Icons */}
871
+ <div className="!space-y-8">
872
+ <h2 className="text-center text-3xl font-bold !text-white">
873
+ Related Icons
874
+ </h2>
875
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
876
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
877
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
878
+ <span className="text-2xl">📁</span>
879
+ </div>
880
+ <div>
881
+ <div className="font-medium text-white">FolderIcon</div>
882
+ <div className="text-xs text-white/60">
883
+ File organization
884
+ </div>
885
+ </div>
886
+ </div>
887
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
888
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
889
+ <span className="text-2xl">📤</span>
890
+ </div>
891
+ <div>
892
+ <div className="font-medium text-white">ExportIcon</div>
893
+ <div className="text-xs text-white/60">Data export</div>
894
+ </div>
895
+ </div>
896
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
897
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
898
+ <span className="text-2xl">⬆️</span>
899
+ </div>
900
+ <div>
901
+ <div className="font-medium text-white">UploadIcon</div>
902
+ <div className="text-xs text-white/60">File uploads</div>
903
+ </div>
904
+ </div>
905
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
906
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
907
+ <span className="text-2xl">📊</span>
908
+ </div>
909
+ <div>
910
+ <div className="font-medium text-white">DataIcon</div>
911
+ <div className="text-xs text-white/60">
912
+ Data management
913
+ </div>
914
+ </div>
915
+ </div>
916
+ </div>
917
+ </div>
918
+ </div>
919
+
920
+ {/* Footer */}
921
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
922
+ <div className="!mx-auto max-w-7xl px-6 py-8">
923
+ <div className="!space-y-4 text-center">
924
+ <p className="!text-white/60">
925
+ ImportFolderIcon is part of the Aural UI icon library, built
926
+ for file management and data import operations.
927
+ </p>
928
+ <p className="text-sm !text-white/40">
929
+ All icons use Radix UI's AccessibleIcon for screen reader
930
+ compatibility and follow WCAG guidelines for file
931
+ operations.
932
+ </p>
933
+ </div>
934
+ </div>
935
+ </div>
936
+ </div>
937
+ </>
938
+ ),
939
+ },
940
+ },
941
+ tags: ["autodocs"],
942
+ argTypes: {
943
+ width: {
944
+ control: { type: "range", min: 8, max: 96, step: 2 },
945
+ description: "Width of the icon in pixels",
946
+ },
947
+ height: {
948
+ control: { type: "range", min: 8, max: 96, step: 2 },
949
+ description: "Height of the icon in pixels",
950
+ },
951
+ stroke: {
952
+ control: "color",
953
+ description: "Stroke color of the folder outline",
954
+ },
955
+ strokeWidth: {
956
+ control: { type: "range", min: 0.5, max: 4, step: 0.5 },
957
+ description: "Stroke width of the outline",
958
+ },
959
+ fill: {
960
+ control: "color",
961
+ description: "Fill color of the icon",
962
+ },
963
+ className: {
964
+ control: "text",
965
+ description: "CSS classes for styling (use for overrides)",
966
+ },
967
+ },
968
+ }
969
+
970
+ export default meta
971
+ type Story = StoryObj<typeof ImportFolderIcon>
972
+
973
+ // Story parameters for consistent dark theme
974
+ const storyParameters = {
975
+ backgrounds: {
976
+ default: "dark",
977
+ values: [
978
+ { name: "dark", value: "#0a0a0a" },
979
+ { name: "darker", value: "#000000" },
980
+ ],
981
+ },
982
+ }
983
+
984
+ export const Default: Story = {
985
+ args: {
986
+ className: "h-6 w-6 text-green-400 ",
987
+ },
988
+ parameters: storyParameters,
989
+ render: (args) => (
990
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
991
+ <ImportFolderIcon {...args} />
992
+ </div>
993
+ ),
994
+ }
995
+
996
+ export const SizeVariations: Story = {
997
+ parameters: {
998
+ ...storyParameters,
999
+ docs: {
1000
+ description: {
1001
+ story:
1002
+ "ImportFolderIcon in different sizes, from small UI elements to large import areas.",
1003
+ },
1004
+ },
1005
+ },
1006
+ render: () => (
1007
+ <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">
1008
+ <div className="text-center">
1009
+ <ImportFolderIcon className="!mx-auto mb-2 h-3 w-3 text-green-400" />
1010
+ <span className="text-xs text-white/60">12px</span>
1011
+ </div>
1012
+ <div className="text-center">
1013
+ <ImportFolderIcon className="!mx-auto mb-2 h-4 w-4 text-green-400" />
1014
+ <span className="text-xs text-white/60">16px</span>
1015
+ </div>
1016
+ <div className="text-center">
1017
+ <ImportFolderIcon className="!mx-auto mb-2 h-5 w-5 text-green-400" />
1018
+ <span className="text-xs text-white/60">20px</span>
1019
+ </div>
1020
+ <div className="text-center">
1021
+ <ImportFolderIcon className="!mx-auto mb-2 h-6 w-6 text-green-400" />
1022
+ <span className="text-xs text-white/60">24px</span>
1023
+ </div>
1024
+ <div className="text-center">
1025
+ <ImportFolderIcon className="!mx-auto mb-2 h-8 w-8 text-green-400" />
1026
+ <span className="text-xs text-white/60">32px</span>
1027
+ </div>
1028
+ <div className="text-center">
1029
+ <ImportFolderIcon className="!mx-auto mb-2 h-12 w-12 text-green-400" />
1030
+ <span className="text-xs text-white/60">48px</span>
1031
+ </div>
1032
+ </div>
1033
+ ),
1034
+ }
1035
+
1036
+ export const ColorVariations: Story = {
1037
+ parameters: {
1038
+ ...storyParameters,
1039
+ docs: {
1040
+ description: {
1041
+ story:
1042
+ "ImportFolderIcon in different colors for various import states and contexts.",
1043
+ },
1044
+ },
1045
+ },
1046
+ render: () => (
1047
+ <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">
1048
+ <div className="text-center">
1049
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-green-500/30 bg-green-500/20">
1050
+ <ImportFolderIcon className="h-8 w-8 text-green-400" />
1051
+ </div>
1052
+ <div className="text-sm font-medium text-white">Success</div>
1053
+ <div className="text-xs text-green-400">text-green-400</div>
1054
+ </div>
1055
+ <div className="text-center">
1056
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-yellow-500/30 bg-yellow-500/20">
1057
+ <ImportFolderIcon className="h-8 w-8 text-yellow-400" />
1058
+ </div>
1059
+ <div className="text-sm font-medium text-white">Warning</div>
1060
+ <div className="text-xs text-yellow-400">text-yellow-400</div>
1061
+ </div>
1062
+ <div className="text-center">
1063
+ <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">
1064
+ <ImportFolderIcon className="h-8 w-8 text-blue-400" />
1065
+ </div>
1066
+ <div className="text-sm font-medium text-white">Primary</div>
1067
+ <div className="text-xs text-blue-400">text-blue-400</div>
1068
+ </div>
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-white/10 bg-white/5">
1071
+ <ImportFolderIcon className="h-8 w-8 text-gray-400" />
1072
+ </div>
1073
+ <div className="text-sm font-medium text-white">Muted</div>
1074
+ <div className="text-xs text-gray-400">text-gray-400</div>
1075
+ </div>
1076
+ </div>
1077
+ ),
1078
+ }
1079
+
1080
+ export const UsageExamples: Story = {
1081
+ parameters: {
1082
+ ...storyParameters,
1083
+ docs: {
1084
+ description: {
1085
+ story:
1086
+ "Real-world usage examples showing ImportFolderIcon in different file import contexts.",
1087
+ },
1088
+ },
1089
+ },
1090
+ render: () => (
1091
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1092
+ {/* File Import Area */}
1093
+ <div className="!space-y-2">
1094
+ <h3 className="text-sm font-medium text-white">File Import Area</h3>
1095
+ <div className="relative rounded-lg border-2 border-dashed border-white/20 bg-white/5 p-8 text-center transition-colors hover:border-green-400/50 hover:bg-green-500/10">
1096
+ <ImportFolderIcon className="!mx-auto h-12 w-12 text-white/40" />
1097
+ <h4 className="mt-4 text-lg font-medium !text-white">
1098
+ Import Folder
1099
+ </h4>
1100
+ <p className="mt-2 text-sm !text-white/60">
1101
+ Drag and drop folders here, or click to browse
1102
+ </p>
1103
+ <button className="mt-4 rounded-lg bg-green-500/20 px-4 py-2 text-green-300 transition-colors hover:bg-green-500/30">
1104
+ Browse Folders
1105
+ </button>
1106
+ </div>
1107
+ </div>
1108
+
1109
+ {/* Import Status List */}
1110
+ <div className="!space-y-2">
1111
+ <h3 className="text-sm font-medium text-white">Import Status</h3>
1112
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
1113
+ {[
1114
+ { name: "Documents", status: "completed", count: 24 },
1115
+ { name: "Images", status: "processing", count: 56 },
1116
+ { name: "Videos", status: "pending", count: 12 },
1117
+ ].map((folder, index) => (
1118
+ <div
1119
+ key={index}
1120
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition-colors hover:bg-white/10"
1121
+ >
1122
+ <ImportFolderIcon
1123
+ className={`h-5 w-5 ${
1124
+ folder.status === "completed"
1125
+ ? "text-green-400"
1126
+ : folder.status === "processing"
1127
+ ? "text-yellow-400"
1128
+ : "text-gray-400"
1129
+ }`}
1130
+ />
1131
+ <div className="flex-1">
1132
+ <div className="text-sm font-medium text-white">
1133
+ {folder.name}
1134
+ </div>
1135
+ <div className="text-xs text-white/60">
1136
+ {folder.count} files
1137
+ </div>
1138
+ </div>
1139
+ <div
1140
+ className={`rounded px-2 py-1 text-xs ${
1141
+ folder.status === "completed"
1142
+ ? "bg-green-500/20 text-green-300"
1143
+ : folder.status === "processing"
1144
+ ? "bg-yellow-500/20 text-yellow-300"
1145
+ : "bg-gray-500/20 text-gray-300"
1146
+ }`}
1147
+ >
1148
+ {folder.status}
1149
+ </div>
1150
+ </div>
1151
+ ))}
1152
+ </div>
1153
+ </div>
1154
+
1155
+ {/* Button Integration */}
1156
+ <div className="!space-y-2">
1157
+ <h3 className="text-sm font-medium text-white">Button Integration</h3>
1158
+ <div className="flex flex-wrap gap-4">
1159
+ <button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-4 py-2 text-green-200 transition-colors hover:bg-green-500/30">
1160
+ <ImportFolderIcon className="h-4 w-4" />
1161
+ Import Folder
1162
+ </button>
1163
+ <button className="flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/20 px-4 py-2 text-yellow-200 transition-colors hover:bg-yellow-500/30">
1164
+ <ImportFolderIcon className="h-4 w-4" />
1165
+ Batch Import
1166
+ </button>
1167
+ <button className="flex items-center gap-2 rounded-lg border border-white/20 bg-white/5 px-4 py-2 text-white/70 transition-colors hover:bg-white/10">
1168
+ <ImportFolderIcon className="h-4 w-4" />
1169
+ Browse Folders
1170
+ </button>
1171
+ </div>
1172
+ </div>
1173
+ </div>
1174
+ ),
1175
+ }
1176
+
1177
+ export const InteractiveStates: Story = {
1178
+ parameters: {
1179
+ ...storyParameters,
1180
+ docs: {
1181
+ description: {
1182
+ story:
1183
+ "Interactive states showing hover effects, loading animations, and focus states for the import folder icon.",
1184
+ },
1185
+ },
1186
+ },
1187
+ render: () => (
1188
+ <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1189
+ <div className="!space-y-4">
1190
+ <h3 className="text-sm font-medium text-white/70">Hover Effects</h3>
1191
+ <div className="flex gap-8">
1192
+ <div className="flex flex-col items-center gap-2">
1193
+ <ImportFolderIcon className="h-8 w-8 text-white/60 transition-colors hover:text-green-400" />
1194
+ <span className="text-xs text-white/60">Color Change</span>
1195
+ </div>
1196
+ <div className="flex flex-col items-center gap-2">
1197
+ <ImportFolderIcon className="h-8 w-8 text-white transition-transform hover:scale-110" />
1198
+ <span className="text-xs text-white/60">Scale Up</span>
1199
+ </div>
1200
+ <div className="flex flex-col items-center gap-2">
1201
+ <ImportFolderIcon className="h-8 w-8 animate-pulse text-green-400" />
1202
+ <span className="text-xs text-white/60">Processing</span>
1203
+ </div>
1204
+ </div>
1205
+ </div>
1206
+
1207
+ <div className="!space-y-4">
1208
+ <h3 className="text-sm font-medium text-white/70">Focus States</h3>
1209
+ <div className="flex gap-8">
1210
+ <div className="flex flex-col items-center gap-2">
1211
+ <div
1212
+ className="rounded p-2 focus:ring-2 focus:ring-green-500 focus:outline-none"
1213
+ tabIndex={0}
1214
+ >
1215
+ <ImportFolderIcon className="h-8 w-8 text-white" />
1216
+ </div>
1217
+ <span className="text-xs text-white/60">Focus Ring</span>
1218
+ </div>
1219
+ </div>
1220
+ </div>
1221
+ </div>
1222
+ ),
1223
+ }
1224
+
1225
+ export const Playground: Story = {
1226
+ parameters: {
1227
+ ...storyParameters,
1228
+ docs: {
1229
+ description: {
1230
+ story:
1231
+ "Interactive playground to experiment with different ImportFolderIcon configurations.",
1232
+ },
1233
+ },
1234
+ },
1235
+ args: {
1236
+ width: 32,
1237
+ height: 32,
1238
+ className: "text-green-400 ",
1239
+ strokeWidth: 1,
1240
+ },
1241
+ render: (args) => (
1242
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1243
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1244
+ <ImportFolderIcon {...args} />
1245
+ </div>
1246
+ </div>
1247
+ ),
1248
+ }