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