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