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