aural-ui 3.0.7 → 4.1.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 (183) hide show
  1. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1199
  2. package/dist/components/avatar/Avatar.stories.tsx +235 -237
  3. package/dist/components/badge/Badge.stories.tsx +379 -116
  4. package/dist/components/banner/Banner.stories.tsx +445 -391
  5. package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
  6. package/dist/components/button/Button.stories.tsx +585 -230
  7. package/dist/components/button/index.tsx +7 -7
  8. package/dist/components/card/Card.stories.tsx +619 -301
  9. package/dist/components/char-count/CharCount.stories.tsx +350 -248
  10. package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
  11. package/dist/components/chip/Chip.stories.tsx +362 -168
  12. package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -620
  13. package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
  14. package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
  15. package/dist/components/command/Command.stories.tsx +533 -856
  16. package/dist/components/dialog/Dialog.stories.tsx +505 -949
  17. package/dist/components/divider/Divider.stories.tsx +265 -502
  18. package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
  19. package/dist/components/drawer/Drawer.stories.tsx +659 -993
  20. package/dist/components/drawer/index.tsx +3 -3
  21. package/dist/components/dropdown/Dropdown.stories.tsx +643 -1018
  22. package/dist/components/form/Form.stories.tsx +560 -274
  23. package/dist/components/helper-text/HelperText.stories.tsx +199 -200
  24. package/dist/components/hover-card/HoverCard.stories.tsx +318 -1221
  25. package/dist/components/icon-button/IconButton.stories.tsx +837 -194
  26. package/dist/components/if-else/if-else.stories.tsx +370 -83
  27. package/dist/components/input/Input.stories.tsx +436 -368
  28. package/dist/components/label/Label.stories.tsx +156 -154
  29. package/dist/components/list/List.stories.tsx +485 -822
  30. package/dist/components/marquee/Marquee.stories.tsx +356 -694
  31. package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -410
  32. package/dist/components/overlay/Overlay.stories.tsx +452 -818
  33. package/dist/components/overlay/index.tsx +4 -4
  34. package/dist/components/pagination/Pagination.stories.tsx +721 -210
  35. package/dist/components/popover/Popover.stories.tsx +484 -873
  36. package/dist/components/radio/Radio.stories.tsx +432 -124
  37. package/dist/components/resizable/Resizable.stories.tsx +496 -752
  38. package/dist/components/scroll-area/ScrollArea.stories.tsx +384 -1006
  39. package/dist/components/search/Search.stories.tsx +314 -575
  40. package/dist/components/select/Select.stories.tsx +684 -787
  41. package/dist/components/sheet/Sheet.stories.tsx +671 -936
  42. package/dist/components/skelton/Skelton.stories.tsx +230 -764
  43. package/dist/components/slider/Slider.stories.tsx +384 -737
  44. package/dist/components/stepper/Stepper.stories.tsx +371 -514
  45. package/dist/components/switch/Switch.stories.tsx +461 -208
  46. package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
  47. package/dist/components/table/Table.stories.tsx +770 -914
  48. package/dist/components/tabs/Tabs.stories.tsx +459 -1400
  49. package/dist/components/tag/Tag.stories.tsx +714 -542
  50. package/dist/components/textarea/TextArea.stories.tsx +621 -562
  51. package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -148
  52. package/dist/components/toast/Toast.stories.tsx +452 -1333
  53. package/dist/components/toggle/Toggle.stories.tsx +488 -909
  54. package/dist/components/tooltip/Tooltip.stories.tsx +344 -1372
  55. package/dist/components/typography/Typography.stories.tsx +406 -89
  56. package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
  57. package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
  58. package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
  59. package/dist/icons/Icons.stories.tsx +0 -12
  60. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +226 -1013
  61. package/dist/icons/alert-icon/AlertIcon.stories.tsx +109 -929
  62. package/dist/icons/all-icons.tsx +124 -87
  63. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +140 -971
  64. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +148 -888
  65. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +135 -1019
  66. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +137 -953
  67. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +138 -997
  68. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +136 -942
  69. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +148 -1092
  70. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +146 -1211
  71. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +126 -615
  72. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +144 -1164
  73. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +167 -985
  74. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +122 -1179
  75. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +124 -1168
  76. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +119 -850
  77. package/dist/icons/camera-icon/CameraIcon.stories.tsx +112 -1213
  78. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +117 -934
  79. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +160 -961
  80. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +163 -961
  81. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +144 -942
  82. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +129 -966
  83. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +147 -964
  84. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +145 -975
  85. package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +150 -1142
  86. package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +114 -461
  87. package/dist/icons/coin-icon/CoinIcon.stories.tsx +124 -1322
  88. package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +117 -1318
  89. package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +114 -903
  90. package/dist/icons/command-icon/CommandIcon.stories.tsx +127 -1042
  91. package/dist/icons/copy-icon/CopyIcon.stories.tsx +123 -962
  92. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +147 -999
  93. package/dist/icons/cross-icon/CrossIcon.stories.tsx +139 -960
  94. package/dist/icons/download-icon/DownloadIcon.stories.tsx +126 -820
  95. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +124 -1031
  96. package/dist/icons/email-icon/EmailIcon.stories.tsx +115 -936
  97. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +112 -1111
  98. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +144 -1025
  99. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +143 -1036
  100. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +127 -1011
  101. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +126 -1056
  102. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +125 -614
  103. package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +119 -1050
  104. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +169 -989
  105. package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +115 -1145
  106. package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +115 -1122
  107. package/dist/icons/globe-icon/GlobeIcon.stories.tsx +130 -313
  108. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +145 -940
  109. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +119 -1174
  110. package/dist/icons/head-icon/HeadIcon.stories.tsx +111 -916
  111. package/dist/icons/heart-icon/HeartIcon.stories.tsx +120 -1019
  112. package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +119 -683
  113. package/dist/icons/image-icon/ImageIcon.stories.tsx +105 -1121
  114. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +111 -1192
  115. package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +136 -1256
  116. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +159 -962
  117. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +161 -1385
  118. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +124 -972
  119. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +119 -948
  120. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +119 -942
  121. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +108 -1215
  122. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +154 -1517
  123. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +110 -1188
  124. package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +119 -678
  125. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +123 -1184
  126. package/dist/icons/message-icon/MessageIcon.stories.tsx +114 -538
  127. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +116 -1158
  128. package/dist/icons/moon-icon/MoonIcon.stories.tsx +120 -536
  129. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +109 -1184
  130. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +115 -1134
  131. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +119 -971
  132. package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +111 -1100
  133. package/dist/icons/notes-icon/NotesIcon.stories.tsx +119 -1101
  134. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +109 -1111
  135. package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +122 -684
  136. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +113 -954
  137. package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +112 -877
  138. package/dist/icons/pause-icon/PauseIcon.stories.tsx +113 -1000
  139. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +115 -1070
  140. package/dist/icons/phone-icon/PhoneIcon.stories.tsx +115 -978
  141. package/dist/icons/plus-icon/PlusIcon.stories.tsx +106 -1093
  142. package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +107 -829
  143. package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +102 -469
  144. package/dist/icons/search-icon/SearchIcon.stories.tsx +111 -1124
  145. package/dist/icons/setting-icon/SettingIcon.stories.tsx +107 -970
  146. package/dist/icons/share-icon/ShareIcon.stories.tsx +120 -1025
  147. package/dist/icons/shield-icon/ShieldIcon.stories.tsx +117 -931
  148. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +137 -1104
  149. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +172 -982
  150. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +164 -983
  151. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +105 -958
  152. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +158 -580
  153. package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
  154. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +158 -587
  155. package/dist/icons/spinner-solid-icon/index.tsx +6 -1
  156. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +146 -682
  157. package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
  158. package/dist/icons/star-icon/StarIcon.stories.tsx +124 -904
  159. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +112 -964
  160. package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +116 -852
  161. package/dist/icons/sun-icon/SunIcon.stories.tsx +120 -831
  162. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +116 -950
  163. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +123 -980
  164. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +156 -1427
  165. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +146 -1142
  166. package/dist/icons/tick-icon/TickIcon.stories.tsx +145 -1276
  167. package/dist/icons/trash-icon/TrashIcon.stories.tsx +108 -933
  168. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +157 -1402
  169. package/dist/icons/upload-icon/UploadIcon.stories.tsx +115 -889
  170. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +118 -984
  171. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +125 -1049
  172. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +123 -1356
  173. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +110 -1171
  174. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +112 -1093
  175. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +115 -1087
  176. package/dist/icons/warning-icon/WarningIcon.stories.tsx +122 -1046
  177. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +161 -936
  178. package/dist/index.cjs +84 -84
  179. package/dist/index.js +84 -84
  180. package/dist/styles/aural-all-theme.css +1222 -0
  181. package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
  182. package/dist/styles/aural-light-theme.css +1047 -0
  183. package/package.json +1 -1
@@ -1,6 +1,20 @@
1
1
  import React from "react"
2
2
  import type { Meta, StoryObj } from "@storybook/react-vite"
3
3
 
4
+ import { InstagramIcon } from "src/ui/icons/instagram-icon"
5
+ import { LinkedInIcon } from "src/ui/icons/linked-in-icon"
6
+ import { ThreadsIcon } from "src/ui/icons/threads-icon"
7
+ import { YoutubeIcon } from "src/ui/icons/youtube-icon"
8
+ import {
9
+ IconBrandColors,
10
+ IconDefaultCanvas,
11
+ IconPlaygroundCanvas,
12
+ IconSizeVariations,
13
+ IconUsageCanvas,
14
+ IconUsageSection,
15
+ } from "src/ui/story-spec/icons/icon-story-canvas"
16
+ import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
17
+
4
18
  import { TwitterXIcon } from "."
5
19
 
6
20
  const meta: Meta<typeof TwitterXIcon> = {
@@ -11,1249 +25,75 @@ const meta: Meta<typeof TwitterXIcon> = {
11
25
  backgrounds: {
12
26
  default: "dark",
13
27
  values: [
14
- { name: "dark", value: "#0a0a0a" },
15
- { name: "darker", value: "#000000" },
16
- { name: "light", value: "#ffffff" },
28
+ { name: "dark", value: "var(--color-fm-surface-primary)" },
29
+ { name: "darker", value: "var(--color-fm-neutral-0)" },
30
+ { name: "light", value: "var(--color-fm-neutral-1100)" },
17
31
  ],
18
32
  },
19
33
  docs: {
20
34
  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-slate-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-slate-500/10 via-transparent to-gray-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-slate-500/30 bg-gradient-to-br from-slate-500/20 to-gray-500/20">
90
- <TwitterXIcon className="h-12 w-12 text-white" />
91
- </div>
92
- <h1 className="text-5xl font-bold !text-white">
93
- TwitterXIcon
94
- </h1>
95
- <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
96
- The official Twitter X brand icon featuring the distinctive
97
- "X" logo. Essential for social media integration, sharing
98
- buttons, profile links, social login options, and any
99
- interface where Twitter/X platform connectivity is needed.
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-slate-300">
106
- Social Media
107
- </div>
108
- <div className="text-sm text-white/60">
109
- Platform integration
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-gray-300">
115
- Brand Recognition
116
- </div>
117
- <div className="text-sm text-white/60">
118
- Official identity
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-zinc-300">
124
- Universal
125
- </div>
126
- <div className="text-sm text-white/60">
127
- Global platform
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-slate-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 { TwitterXIcon } from "@icons/twitter-x-icon"
150
-
151
- function ShareButton() {
35
+ <AuralIconDocsPage
36
+ accentToken="negative"
37
+ features={[
38
+ { title: "Brand Mark", description: "X (Twitter) identity icon" },
39
+ { title: "Social Media", description: "Share and follow links" },
40
+ { title: "Accessible", description: "ARIA-ready by default" },
41
+ ]}
42
+ quickStart={{
43
+ codeExample: `import { TwitterXIcon } from "src/ui/icons/twitter-x-icon"
44
+
45
+ function XLink() {
152
46
  return (
153
- <button
154
- onClick={shareOnTwitter}
155
- className="flex items-center gap-2 p-2 rounded-lg
156
- bg-black hover:bg-gray-800 transition-colors"
157
- >
158
- <TwitterXIcon className="h-5 w-5 text-white" />
159
- <span className="text-white">Share on X</span>
160
- </button>
47
+ <a href="https://x.com/handle" target="_blank">
48
+ <TwitterXIcon className="h-5 w-5 text-fm-icon-active" />
49
+ </a>
161
50
  )
162
- }`}
163
- </pre>
164
- </div>
165
- </div>
166
-
167
- <div className="!space-y-4">
168
- <h3 className="text-xl font-semibold !text-slate-300">
169
- Live Preview
170
- </h3>
171
- <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
172
- <button className="flex items-center gap-2 rounded-lg border border-slate-500/20 bg-black px-4 py-2 transition-colors hover:bg-gray-800">
173
- <TwitterXIcon className="h-5 w-5 text-white" />
174
- <span className="font-medium text-white">
175
- Share on X
176
- </span>
177
- </button>
178
- </div>
179
- </div>
180
- </div>
181
- </div>
182
-
183
- {/* Props Documentation */}
184
- <div className="!space-y-8">
185
- <h2 className="text-center text-3xl font-bold !text-white">
186
- Props & Configuration
187
- </h2>
188
-
189
- <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
190
- <div className="bg-white/5 p-4">
191
- <h3 className="text-xl font-semibold !text-white">Props</h3>
192
- </div>
193
- <table className="!my-0 w-full">
194
- <thead className="bg-white/5">
195
- <tr className="border-b border-white/10">
196
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
197
- Prop
198
- </th>
199
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
200
- Type
201
- </th>
202
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
203
- Default
204
- </th>
205
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
206
- Description
207
- </th>
208
- </tr>
209
- </thead>
210
- <tbody>
211
- {" "}
212
- <tr className="!bg-black/10">
213
- <td className="px-6 py-4 font-mono text-sm !text-blue-300">
214
- withAccessibility
215
- </td>
216
- <td className="px-6 py-4 text-sm !text-white/70">
217
- boolean
218
- </td>
219
- <td className="px-6 py-4 text-sm !text-white/50">
220
- true
221
- </td>
222
- <td className="px-6 py-4 text-sm !text-white/70">
223
- Whether to wrap the icon with accessibility feature
224
- </td>
225
- </tr>
226
- <tr className="border-b border-white/5 !bg-black/10">
227
- <td className="px-6 py-4 font-mono text-sm !text-slate-300">
228
- height
229
- </td>
230
- <td className="px-6 py-4 text-sm !text-white/70">
231
- number | string
232
- </td>
233
- <td className="px-6 py-4 text-sm !text-white/50">
234
- auto
235
- </td>
236
- <td className="px-6 py-4 text-sm !text-white/70">
237
- Height of the icon (maintains aspect ratio)
238
- </td>
239
- </tr>
240
- <tr className="border-b border-white/5">
241
- <td className="px-6 py-4 font-mono text-sm !text-slate-300">
242
- fill
243
- </td>
244
- <td className="px-6 py-4 text-sm !text-white/70">
245
- string
246
- </td>
247
- <td className="px-6 py-4 text-sm !text-white/50">
248
- currentColor
249
- </td>
250
- <td className="px-6 py-4 text-sm !text-white/70">
251
- Fill color of the X logo
252
- </td>
253
- </tr>
254
- <tr className="border-b border-white/5 !bg-black/10">
255
- <td className="px-6 py-4 font-mono text-sm !text-slate-300">
256
- className
257
- </td>
258
- <td className="px-6 py-4 text-sm !text-white/70">
259
- string
260
- </td>
261
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
262
- <td className="px-6 py-4 text-sm !text-white/70">
263
- CSS classes for styling and sizing
264
- </td>
265
- </tr>
266
- <tr className="border-b border-white/5">
267
- <td className="px-6 py-4 font-mono text-sm !text-slate-300">
268
- onClick
269
- </td>
270
- <td className="px-6 py-4 text-sm !text-white/70">
271
- function
272
- </td>
273
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
274
- <td className="px-6 py-4 text-sm !text-white/70">
275
- Click handler for social interactions
276
- </td>
277
- </tr>
278
- <tr className="!bg-black/10">
279
- <td className="px-6 py-4 font-mono text-sm !text-slate-300">
280
- ...svgProps
281
- </td>
282
- <td className="px-6 py-4 text-sm !text-white/70">
283
- SVGProps
284
- </td>
285
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
286
- <td className="px-6 py-4 text-sm !text-white/70">
287
- All standard SVG element props
288
- </td>
289
- </tr>
290
- </tbody>
291
- </table>
292
- </div>
293
-
294
- <div className="rounded-lg border border-slate-500/20 bg-slate-500/10 p-4">
295
- <div className="flex items-center gap-2 text-sm text-slate-200">
296
- <TwitterXIcon className="h-4 w-4" />
297
- <span>
298
- <strong>Brand Guidelines:</strong> Follow Twitter/X's
299
- official brand guidelines when using this icon, especially
300
- regarding size, spacing, and color usage.
301
- </span>
302
- </div>
303
- </div>
304
- </div>
305
-
306
- {/* Size Variations */}
307
- <div className="!space-y-8">
308
- <h2 className="text-center text-3xl font-bold !text-white">
309
- Size Variations
310
- </h2>
311
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
312
- <div className="!space-y-6">
313
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
314
- <div className="!space-y-4">
315
- <h3 className="text-lg font-semibold !text-slate-300">
316
- Standard Sizes
317
- </h3>
318
- <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
319
- <div className="text-center">
320
- <TwitterXIcon className="!mx-auto mb-2 h-3 w-3 text-white" />
321
- <span className="text-xs text-white/60">12px</span>
322
- </div>
323
- <div className="text-center">
324
- <TwitterXIcon className="!mx-auto mb-2 h-4 w-4 text-white" />
325
- <span className="text-xs text-white/60">16px</span>
326
- </div>
327
- <div className="text-center">
328
- <TwitterXIcon className="!mx-auto mb-2 h-5 w-5 text-white" />
329
- <span className="text-xs text-white/60">20px</span>
330
- </div>
331
- <div className="text-center">
332
- <TwitterXIcon className="!mx-auto mb-2 h-6 w-6 text-white" />
333
- <span className="text-xs text-white/60">24px</span>
334
- </div>
335
- <div className="text-center">
336
- <TwitterXIcon className="!mx-auto mb-2 h-8 w-8 text-white" />
337
- <span className="text-xs text-white/60">32px</span>
338
- </div>
339
- <div className="text-center">
340
- <TwitterXIcon className="!mx-auto mb-2 h-12 w-12 text-white" />
341
- <span className="text-xs text-white/60">48px</span>
342
- </div>
343
- </div>
344
- </div>
345
-
346
- <div className="!space-y-4">
347
- <h3 className="text-lg font-semibold !text-slate-300">
348
- Code Example
349
- </h3>
350
- <div className="rounded-lg bg-black/40 p-4">
351
- <pre className="overflow-x-auto text-sm !text-cyan-300">
352
- {`// Small (16px) - inline social links
353
- <TwitterXIcon className="h-4 w-4" />
354
-
355
- // Medium (24px) - standard buttons
356
- <TwitterXIcon className="h-6 w-6" />
357
-
358
- // Large (32px) - prominent displays
359
- <TwitterXIcon className="h-8 w-8" />
360
-
361
- // Custom size with maintained aspect ratio
362
- <TwitterXIcon width={40} height={40} />`}
363
- </pre>
364
- </div>
365
- </div>
366
- </div>
367
- </div>
368
- </div>
369
- </div>
370
-
371
- {/* Color & Styling */}
372
- <div className="!space-y-8">
373
- <h2 className="text-center text-3xl font-bold !text-white">
374
- Color & Styling
375
- </h2>
376
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
377
- <div className="!space-y-4">
378
- <h3 className="text-lg font-semibold !text-slate-300">
379
- Brand Colors
380
- </h3>
381
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
382
- <div className="flex items-center gap-4">
383
- <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-black">
384
- <TwitterXIcon className="h-6 w-6 text-white" />
385
- </div>
386
- <div>
387
- <div className="text-sm font-medium text-white">
388
- Official Black
389
- </div>
390
- <div className="text-xs text-white/60">
391
- Primary brand color
392
- </div>
393
- </div>
394
- </div>
395
- <div className="flex items-center gap-4">
396
- <div className="flex h-12 w-12 items-center justify-center rounded-lg border border-gray-300 bg-white">
397
- <TwitterXIcon className="h-6 w-6 text-black" />
398
- </div>
399
- <div>
400
- <div className="text-sm font-medium text-white">
401
- Inverted White
402
- </div>
403
- <div className="text-xs text-white/60">
404
- Light backgrounds
405
- </div>
406
- </div>
407
- </div>
408
- <div className="flex items-center gap-4">
409
- <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-gray-600">
410
- <TwitterXIcon className="h-6 w-6 text-white" />
411
- </div>
412
- <div>
413
- <div className="text-sm font-medium text-white">
414
- Neutral Gray
415
- </div>
416
- <div className="text-xs text-white/60">
417
- Subtle integration
418
- </div>
419
- </div>
420
- </div>
421
- <div className="flex items-center gap-4">
422
- <div className="flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500">
423
- <TwitterXIcon className="h-6 w-6 text-white" />
424
- </div>
425
- <div>
426
- <div className="text-sm font-medium text-white">
427
- Accent Color
428
- </div>
429
- <div className="text-xs text-white/60">
430
- Themed integration
431
- </div>
432
- </div>
433
- </div>
434
- </div>
435
- </div>
436
-
437
- <div className="!space-y-4">
438
- <h3 className="text-lg font-semibold !text-slate-300">
439
- Usage Examples
440
- </h3>
441
- <div className="rounded-lg bg-black/40 p-4">
442
- <pre className="overflow-x-auto text-sm !text-green-300">
443
- {`// Official black on white
444
- <TwitterXIcon className="h-6 w-6 text-black" />
445
-
446
- // White on black (official)
447
- <TwitterXIcon className="h-6 w-6 text-white" />
448
-
449
- // Inherit parent text color
450
- <TwitterXIcon className="h-5 w-5" />
451
-
452
- // Custom themed color
453
- <TwitterXIcon
454
- className="h-6 w-6 text-blue-500"
455
- />
456
-
457
- // Hover state with transition
458
- <TwitterXIcon
459
- className="h-6 w-6 text-gray-400
460
- hover:text-white transition-colors"
461
- />
462
-
463
- // Background with proper contrast
464
- <div className="bg-black p-2 rounded">
465
- <TwitterXIcon className="h-6 w-6 text-white" />
466
- </div>`}
467
- </pre>
468
- </div>
469
- </div>
470
- </div>
471
- </div>
472
-
473
- {/* Usage Examples */}
474
- <div className="!space-y-8">
475
- <h2 className="text-center text-3xl font-bold !text-white">
476
- Usage Examples
477
- </h2>
478
-
479
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
480
- {/* Social Share Buttons */}
481
- <div className="!space-y-4">
482
- <h3 className="text-lg font-semibold !text-slate-300">
483
- Social Share Buttons
484
- </h3>
485
- <div className="!space-y-4">
486
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
487
- <div className="space-y-4">
488
- <h4 className="mb-3 text-sm font-medium text-white">
489
- Share this article
490
- </h4>
491
- <div className="flex flex-wrap gap-3">
492
- <button className="flex items-center gap-2 rounded-lg border border-gray-700 bg-black px-4 py-2 transition-colors hover:bg-gray-800">
493
- <TwitterXIcon className="h-4 w-4 text-white" />
494
- <span className="text-sm text-white">
495
- Share on X
496
- </span>
497
- </button>
498
- <button className="flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 transition-colors hover:bg-blue-700">
499
- <span className="text-sm text-white">📘</span>
500
- <span className="text-sm text-white">
501
- Facebook
502
- </span>
503
- </button>
504
- <button className="flex items-center gap-2 rounded-lg bg-blue-500 px-4 py-2 transition-colors hover:bg-blue-600">
505
- <span className="text-sm text-white">💼</span>
506
- <span className="text-sm text-white">
507
- LinkedIn
508
- </span>
509
- </button>
510
- </div>
511
- <div className="border-t border-white/10 pt-4">
512
- <div className="flex items-center gap-3">
513
- <span className="text-sm text-white/60">
514
- Follow us:
515
- </span>
516
- <div className="flex gap-2">
517
- <a
518
- href="#"
519
- className="rounded bg-black p-2 transition-colors hover:bg-gray-800"
520
- >
521
- <TwitterXIcon className="h-4 w-4 text-white" />
522
- </a>
523
- <a
524
- href="#"
525
- className="rounded bg-blue-600 p-2 transition-colors hover:bg-blue-700"
526
- >
527
- <span className="text-sm text-white">📘</span>
528
- </a>
529
- <a
530
- href="#"
531
- className="rounded bg-red-600 p-2 transition-colors hover:bg-red-700"
532
- >
533
- <span className="text-sm text-white">📺</span>
534
- </a>
535
- </div>
536
- </div>
537
- </div>
538
- </div>
539
- </div>
540
- <div className="rounded-lg bg-black/40 p-4">
541
- <pre className="overflow-x-auto text-sm !text-green-300">
542
- {`// Social sharing component
543
- <div className="share-buttons">
544
- <h4>Share this article</h4>
545
- <div className="button-group">
546
- <button
547
- onClick={() => shareOnTwitter(articleUrl, articleTitle)}
548
- className="share-btn twitter-btn"
549
- >
550
- <TwitterXIcon className="h-4 w-4 text-white" />
551
- <span>Share on X</span>
552
- </button>
553
- <FacebookShareButton />
554
- <LinkedInShareButton />
555
- </div>
556
- <div className="follow-section">
557
- <span>Follow us:</span>
558
- <div className="social-links">
559
- <a
560
- href="https://x.com/yourhandle"
561
- className="social-link twitter-link"
562
- aria-label="Follow us on X"
563
- >
564
- <TwitterXIcon className="h-4 w-4 text-white" />
565
- </a>
566
- <FacebookLink />
567
- <YouTubeLink />
568
- </div>
569
- </div>
570
- </div>`}
571
- </pre>
572
- </div>
573
- </div>
574
- </div>
575
-
576
- {/* Social Login */}
577
- <div className="!space-y-4">
578
- <h3 className="text-lg font-semibold !text-slate-300">
579
- Social Authentication
580
- </h3>
581
- <div className="!space-y-4">
582
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
583
- <div className="overflow-hidden rounded-lg border border-white/20 bg-black/50">
584
- <div className="border-b border-white/10 bg-white/5 p-6">
585
- <h4 className="mb-2 text-center text-xl font-semibold text-white">
586
- Welcome Back
587
- </h4>
588
- <p className="text-center text-sm text-white/60">
589
- Sign in to your account
590
- </p>
591
- </div>
592
- <div className="space-y-4 p-6">
593
- <button className="flex w-full items-center justify-center gap-3 rounded-lg border border-gray-700 bg-black px-4 py-3 transition-colors hover:bg-gray-800">
594
- <TwitterXIcon className="h-5 w-5 text-white" />
595
- <span className="font-medium text-white">
596
- Continue with X
597
- </span>
598
- </button>
599
- <button className="flex w-full items-center justify-center gap-3 rounded-lg border border-gray-300 bg-white px-4 py-3 transition-colors hover:bg-gray-50">
600
- <span className="text-xl">🔍</span>
601
- <span className="font-medium text-gray-700">
602
- Continue with Google
603
- </span>
604
- </button>
605
- <button className="flex w-full items-center justify-center gap-3 rounded-lg bg-blue-600 px-4 py-3 transition-colors hover:bg-blue-700">
606
- <span className="text-xl text-white">📘</span>
607
- <span className="font-medium text-white">
608
- Continue with Facebook
609
- </span>
610
- </button>
611
- <div className="relative">
612
- <div className="absolute inset-0 flex items-center">
613
- <div className="w-full border-t border-white/20"></div>
614
- </div>
615
- <div className="relative flex justify-center text-sm">
616
- <span className="bg-black/50 px-2 text-white/60">
617
- or continue with email
618
- </span>
619
- </div>
620
- </div>
621
- <div className="space-y-3">
622
- <input
623
- type="email"
624
- placeholder="Email address"
625
- className="w-full rounded-lg border border-white/20 bg-white/10 px-3 py-2 text-white placeholder-white/60"
626
- />
627
- <input
628
- type="password"
629
- placeholder="Password"
630
- className="w-full rounded-lg border border-white/20 bg-white/10 px-3 py-2 text-white placeholder-white/60"
631
- />
632
- <button className="w-full rounded-lg bg-blue-600 py-2 font-medium text-white transition-colors hover:bg-blue-700">
633
- Sign In
634
- </button>
635
- </div>
636
- </div>
637
- </div>
638
- </div>
639
- <div className="rounded-lg bg-black/40 p-4">
640
- <pre className="overflow-x-auto text-sm !text-green-300">
641
- {`// Social authentication options
642
- <div className="auth-container">
643
- <div className="auth-header">
644
- <h2>Welcome Back</h2>
645
- <p>Sign in to your account</p>
646
- </div>
647
- <div className="social-auth">
648
- <button
649
- onClick={signInWithTwitter}
650
- className="social-auth-btn twitter-auth"
651
- aria-label="Sign in with X (formerly Twitter)"
652
- >
653
- <TwitterXIcon className="h-5 w-5 text-white" />
654
- <span>Continue with X</span>
655
- </button>
656
- <GoogleAuthButton />
657
- <FacebookAuthButton />
658
- </div>
659
- <div className="auth-divider">
660
- <span>or continue with email</span>
661
- </div>
662
- <EmailAuthForm />
663
- </div>`}
664
- </pre>
665
- </div>
666
- </div>
667
- </div>
668
-
669
- {/* Profile Links */}
670
- <div className="!space-y-4">
671
- <h3 className="text-lg font-semibold !text-slate-300">
672
- Profile Social Links
673
- </h3>
674
- <div className="!space-y-4">
675
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
676
- <div className="overflow-hidden rounded-lg border border-white/20 bg-black/50">
677
- <div className="relative h-32 bg-gradient-to-r from-blue-500/20 to-purple-500/20">
678
- <div className="absolute -bottom-8 left-6">
679
- <div className="flex h-16 w-16 items-center justify-center rounded-full border-4 border-black/50 bg-white/10">
680
- <span className="text-2xl">👤</span>
681
- </div>
682
- </div>
683
- </div>
684
- <div className="p-6 pt-12">
685
- <div className="flex items-start justify-between">
686
- <div>
687
- <h4 className="text-lg font-semibold text-white">
688
- Sarah Johnson
689
- </h4>
690
- <p className="text-sm text-white/60">
691
- @sarahjohnson
692
- </p>
693
- <p className="mt-2 text-sm text-white/70">
694
- Product Designer passionate about creating
695
- intuitive user experiences
696
- </p>
697
- </div>
698
- <button className="rounded-lg bg-white px-4 py-2 font-medium text-black transition-colors hover:bg-gray-100">
699
- Follow
700
- </button>
701
- </div>
702
- <div className="mt-4 flex items-center gap-4">
703
- <div className="flex items-center gap-2 text-sm text-white/60">
704
- <span>📍</span>
705
- <span>San Francisco, CA</span>
706
- </div>
707
- <div className="flex items-center gap-2 text-sm text-white/60">
708
- <span>📅</span>
709
- <span>Joined March 2020</span>
710
- </div>
711
- </div>
712
- <div className="mt-4 flex items-center gap-6">
713
- <div className="text-sm">
714
- <span className="font-medium text-white">
715
- 1,234
716
- </span>
717
- <span className="ml-1 text-white/60">
718
- Following
719
- </span>
720
- </div>
721
- <div className="text-sm">
722
- <span className="font-medium text-white">
723
- 5,678
724
- </span>
725
- <span className="ml-1 text-white/60">
726
- Followers
727
- </span>
728
- </div>
729
- </div>
730
- <div className="mt-4 flex items-center gap-3 border-t border-white/10 pt-4">
731
- <span className="text-sm text-white/60">
732
- Connect:
733
- </span>
734
- <div className="flex gap-2">
735
- <a
736
- href="#"
737
- className="rounded bg-black p-2 transition-colors hover:bg-gray-800"
738
- aria-label="Follow on X"
739
- >
740
- <TwitterXIcon className="h-4 w-4 text-white" />
741
- </a>
742
- <a
743
- href="#"
744
- className="rounded bg-blue-500 p-2 transition-colors hover:bg-blue-600"
745
- aria-label="Connect on LinkedIn"
746
- >
747
- <span className="text-sm text-white">💼</span>
748
- </a>
749
- <a
750
- href="#"
751
- className="rounded bg-gray-600 p-2 transition-colors hover:bg-gray-700"
752
- aria-label="View GitHub"
753
- >
754
- <span className="text-sm text-white">🐙</span>
755
- </a>
756
- <a
757
- href="#"
758
- className="rounded bg-pink-500 p-2 transition-colors hover:bg-pink-600"
759
- aria-label="View Dribbble"
760
- >
761
- <span className="text-sm text-white">🏀</span>
762
- </a>
763
- </div>
764
- </div>
765
- </div>
766
- </div>
767
- </div>
768
- <div className="rounded-lg bg-black/40 p-4">
769
- <pre className="overflow-x-auto text-sm !text-green-300">
770
- {`// User profile with social links
771
- <div className="user-profile">
772
- <div className="profile-header">
773
- <CoverImage />
774
- <ProfileAvatar />
775
- </div>
776
- <div className="profile-content">
777
- <div className="profile-info">
778
- <UserDetails user={user} />
779
- <FollowButton userId={user.id} />
780
- </div>
781
- <ProfileStats stats={user.stats} />
782
- <div className="social-links">
783
- <span>Connect:</span>
784
- <div className="link-group">
785
- {user.socialLinks.twitter && (
786
- <a
787
- href={user.socialLinks.twitter}
788
- className="social-link twitter-link"
789
- aria-label="Follow on X"
790
- >
791
- <TwitterXIcon className="h-4 w-4 text-white" />
792
- </a>
793
- )}
794
- <LinkedInLink url={user.socialLinks.linkedin} />
795
- <GitHubLink url={user.socialLinks.github} />
796
- <DribbbleLink url={user.socialLinks.dribbble} />
797
- </div>
798
- </div>
799
- </div>
800
- </div>`}
801
- </pre>
802
- </div>
803
- </div>
804
- </div>
805
-
806
- {/* Website Footer */}
807
- <div className="!space-y-4">
808
- <h3 className="text-lg font-semibold !text-slate-300">
809
- Website Footer
810
- </h3>
811
- <div className="!space-y-4">
812
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
813
- <div className="overflow-hidden rounded-lg border border-white/20 bg-black/50">
814
- <div className="p-8">
815
- <div className="grid grid-cols-1 gap-8 md:grid-cols-4">
816
- <div className="md:col-span-2">
817
- <h4 className="mb-4 text-lg font-semibold text-white">
818
- Company Name
819
- </h4>
820
- <p className="mb-4 max-w-md text-sm text-white/70">
821
- Building the future of digital experiences
822
- with cutting-edge technology and innovative
823
- design solutions.
824
- </p>
825
- <div className="flex items-center gap-3">
826
- <span className="text-sm text-white/60">
827
- Follow us:
828
- </span>
829
- <div className="flex gap-2">
830
- <a
831
- href="#"
832
- className="rounded bg-black p-2 transition-colors hover:bg-gray-800"
833
- aria-label="Follow on X"
834
- >
835
- <TwitterXIcon className="h-4 w-4 text-white" />
836
- </a>
837
- <a
838
- href="#"
839
- className="rounded bg-blue-600 p-2 transition-colors hover:bg-blue-700"
840
- aria-label="Like on Facebook"
841
- >
842
- <span className="text-sm text-white">
843
- 📘
844
- </span>
845
- </a>
846
- <a
847
- href="#"
848
- className="rounded bg-blue-500 p-2 transition-colors hover:bg-blue-600"
849
- aria-label="Connect on LinkedIn"
850
- >
851
- <span className="text-sm text-white">
852
- 💼
853
- </span>
854
- </a>
855
- <a
856
- href="#"
857
- className="rounded bg-red-600 p-2 transition-colors hover:bg-red-700"
858
- aria-label="Subscribe on YouTube"
859
- >
860
- <span className="text-sm text-white">
861
- 📺
862
- </span>
863
- </a>
864
- </div>
865
- </div>
866
- </div>
867
- <div>
868
- <h5 className="mb-3 text-sm font-semibold text-white">
869
- Product
870
- </h5>
871
- <ul className="space-y-2 text-sm text-white/60">
872
- <li>
873
- <a
874
- href="#"
875
- className="transition-colors hover:text-white"
876
- >
877
- Features
878
- </a>
879
- </li>
880
- <li>
881
- <a
882
- href="#"
883
- className="transition-colors hover:text-white"
884
- >
885
- Pricing
886
- </a>
887
- </li>
888
- <li>
889
- <a
890
- href="#"
891
- className="transition-colors hover:text-white"
892
- >
893
- Documentation
894
- </a>
895
- </li>
896
- <li>
897
- <a
898
- href="#"
899
- className="transition-colors hover:text-white"
900
- >
901
- API
902
- </a>
903
- </li>
904
- </ul>
905
- </div>
906
- <div>
907
- <h5 className="mb-3 text-sm font-semibold text-white">
908
- Company
909
- </h5>
910
- <ul className="space-y-2 text-sm text-white/60">
911
- <li>
912
- <a
913
- href="#"
914
- className="transition-colors hover:text-white"
915
- >
916
- About
917
- </a>
918
- </li>
919
- <li>
920
- <a
921
- href="#"
922
- className="transition-colors hover:text-white"
923
- >
924
- Blog
925
- </a>
926
- </li>
927
- <li>
928
- <a
929
- href="#"
930
- className="transition-colors hover:text-white"
931
- >
932
- Careers
933
- </a>
934
- </li>
935
- <li>
936
- <a
937
- href="#"
938
- className="transition-colors hover:text-white"
939
- >
940
- Contact
941
- </a>
942
- </li>
943
- </ul>
944
- </div>
945
- </div>
946
- <div className="mt-8 flex flex-col items-center justify-between border-t border-white/10 pt-8 md:flex-row">
947
- <p className="text-sm text-white/60">
948
- © 2024 Company Name. All rights reserved.
949
- </p>
950
- <div className="mt-4 flex gap-4 md:mt-0">
951
- <a
952
- href="#"
953
- className="text-sm text-white/60 transition-colors hover:text-white"
954
- >
955
- Privacy Policy
956
- </a>
957
- <a
958
- href="#"
959
- className="text-sm text-white/60 transition-colors hover:text-white"
960
- >
961
- Terms of Service
962
- </a>
963
- <a
964
- href="#"
965
- className="text-sm text-white/60 transition-colors hover:text-white"
966
- >
967
- Cookie Policy
968
- </a>
969
- </div>
970
- </div>
971
- </div>
972
- </div>
973
- </div>
974
- <div className="rounded-lg bg-black/40 p-4">
975
- <pre className="overflow-x-auto text-sm !text-green-300">
976
- {`// Website footer with social links
977
- <footer className="site-footer">
978
- <div className="footer-content">
979
- <div className="footer-brand">
980
- <h4>Company Name</h4>
981
- <p>Building the future of digital experiences...</p>
982
- <div className="social-follow">
983
- <span>Follow us:</span>
984
- <div className="social-icons">
985
- <a
986
- href="https://x.com/company"
987
- className="social-icon twitter-icon"
988
- aria-label="Follow on X"
989
- >
990
- <TwitterXIcon className="h-4 w-4 text-white" />
991
- </a>
992
- <FacebookIcon />
993
- <LinkedInIcon />
994
- <YouTubeIcon />
995
- </div>
996
- </div>
997
- </div>
998
- <FooterNavigation />
999
- </div>
1000
- <FooterBottom />
1001
- </footer>`}
1002
- </pre>
1003
- </div>
1004
- </div>
1005
- </div>
1006
- </div>
1007
- </div>
1008
-
1009
- {/* Accessibility */}
1010
- <div className="!space-y-8">
1011
- <h2 className="text-center text-3xl font-bold !text-white">
1012
- Accessibility Features
1013
- </h2>
1014
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
1015
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
1016
- <h3 className="text-lg font-semibold !text-green-300">
1017
- ✅ Built-in Features
1018
- </h3>
1019
- <ul className="!space-y-2 text-sm !text-white/70">
1020
- <li className="!text-white/70">
1021
- Uses Radix UI AccessibleIcon wrapper
1022
- </li>
1023
- <li className="!text-white/70">
1024
- Provides screen reader label "Twitter X icon"
1025
- </li>
1026
- <li className="!text-white/70">
1027
- Supports keyboard navigation when interactive
1028
- </li>
1029
- <li className="!text-white/70">
1030
- High contrast design for visibility
1031
- </li>
1032
- <li className="!text-white/70">
1033
- Maintains aspect ratio across all sizes
1034
- </li>
1035
- </ul>
1036
- </div>
1037
-
1038
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
1039
- <h3 className="text-lg font-semibold !text-slate-300">
1040
- 💡 Best Practices
1041
- </h3>
1042
- <ul className="!space-y-2 text-sm text-white/70">
1043
- <li className="!text-white/70">
1044
- Always provide descriptive aria-labels for social
1045
- actions
1046
- </li>
1047
- <li className="!text-white/70">
1048
- Follow official Twitter/X brand guidelines
1049
- </li>
1050
- <li className="!text-white/70">
1051
- Ensure sufficient contrast ratios for visibility
1052
- </li>
1053
- <li className="!text-white/70">
1054
- Use consistent sizing across social media icons
1055
- </li>
1056
- <li className="!text-white/70">
1057
- Provide text alternatives when icons are standalone
1058
- </li>
1059
- </ul>
1060
- </div>
1061
- </div>
1062
-
1063
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
1064
- <h3 className="mb-4 text-lg font-semibold !text-blue-300">
1065
- Proper ARIA Implementation
1066
- </h3>
1067
- <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
1068
- <div className="rounded-lg bg-black/40 p-4">
1069
- <pre className="overflow-x-auto text-sm !text-cyan-300">
1070
- {`// Social share button
1071
- <button
1072
- onClick={shareOnTwitter}
1073
- className="share-button"
1074
- aria-label="Share this article on X (formerly Twitter)"
1075
- >
1076
- <TwitterXIcon className="h-4 w-4 text-white" />
1077
- <span>Share on X</span>
1078
- </button>
1079
-
1080
- // Social login
1081
- <button
1082
- onClick={signInWithTwitter}
1083
- className="auth-button"
1084
- aria-label="Sign in with X (formerly Twitter)"
1085
- >
1086
- <TwitterXIcon className="h-5 w-5 text-white" />
1087
- <span>Continue with X</span>
1088
- </button>
1089
-
1090
- // Profile social link
1091
- <a
1092
- href="https://x.com/username"
1093
- className="social-link"
1094
- aria-label="Follow @username on X"
1095
- target="_blank"
1096
- rel="noopener noreferrer"
1097
- >
1098
- <TwitterXIcon className="h-4 w-4 text-white" />
1099
- </a>
1100
-
1101
- // Footer social icon with text
1102
- <div className="social-links">
1103
- <span className="sr-only">Follow us on social media:</span>
1104
- <a
1105
- href="https://x.com/company"
1106
- aria-label="Follow Company on X"
1107
- >
1108
- <TwitterXIcon className="h-4 w-4" />
1109
- </a>
1110
- <a
1111
- href="https://facebook.com/company"
1112
- aria-label="Like Company on Facebook"
1113
- >
1114
- <FacebookIcon className="h-4 w-4" />
1115
- </a>
1116
- </div>
1117
-
1118
- // Share modal with multiple options
1119
- <div
1120
- role="dialog"
1121
- aria-labelledby="share-title"
1122
- aria-describedby="share-description"
1123
- >
1124
- <h2 id="share-title">Share this content</h2>
1125
- <p id="share-description">Choose a platform to share on</p>
1126
- <div className="share-options">
1127
- <button aria-label="Share on X (formerly Twitter)">
1128
- <TwitterXIcon className="h-5 w-5" />
1129
- <span>X</span>
1130
- </button>
1131
- </div>
1132
- </div>`}
1133
- </pre>
1134
- </div>
1135
- <div className="!space-y-4">
1136
- <p className="text-sm !text-white/70">
1137
- When using TwitterXIcon for social integration, always
1138
- provide clear context about the action and destination
1139
- platform. Include proper external link indicators when
1140
- applicable.
1141
- </p>
1142
- <div className="rounded-lg border border-slate-500/20 bg-slate-500/10 p-4">
1143
- <div className="flex items-center gap-2 text-sm text-slate-200">
1144
- <TwitterXIcon className="h-4 w-4" />
1145
- <span>
1146
- Use "X (formerly Twitter)" in aria-labels during the
1147
- brand transition period
1148
- </span>
1149
- </div>
1150
- </div>
1151
- </div>
1152
- </div>
1153
- </div>
1154
- </div>
1155
-
1156
- {/* Related Icons */}
1157
- <div className="!space-y-8">
1158
- <h2 className="text-center text-3xl font-bold !text-white">
1159
- Related Icons
1160
- </h2>
1161
- <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
1162
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
1163
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
1164
- <span className="!text-2xl !text-white">📘</span>
1165
- </div>
1166
- <div>
1167
- <div className="font-medium text-white">FacebookIcon</div>
1168
- <div className="text-xs text-white/60">
1169
- Social platform
1170
- </div>
1171
- </div>
1172
- </div>
1173
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
1174
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-600/20">
1175
- <span className="!text-2xl !text-white">💼</span>
1176
- </div>
1177
- <div>
1178
- <div className="font-medium text-white">LinkedInIcon</div>
1179
- <div className="text-xs text-white/60">
1180
- Professional network
1181
- </div>
1182
- </div>
1183
- </div>
1184
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
1185
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
1186
- <span className="!text-2xl !text-white">📺</span>
1187
- </div>
1188
- <div>
1189
- <div className="font-medium text-white">YouTubeIcon</div>
1190
- <div className="text-xs text-white/60">
1191
- Video platform
1192
- </div>
1193
- </div>
1194
- </div>
1195
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
1196
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
1197
- <span className="!text-2xl !text-white">📷</span>
1198
- </div>
1199
- <div>
1200
- <div className="font-medium text-white">
1201
- InstagramIcon
1202
- </div>
1203
- <div className="text-xs text-white/60">Photo sharing</div>
1204
- </div>
1205
- </div>
1206
- </div>
1207
- </div>
1208
- </div>
1209
-
1210
- {/* Footer */}
1211
- <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
1212
- <div className="!mx-auto max-w-7xl px-6 py-8">
1213
- <div className="!space-y-4 text-center">
1214
- <p className="!text-white/60">
1215
- TwitterXIcon is part of the Aural UI icon library, built
1216
- with accessibility and social media integration best
1217
- practices in mind.
1218
- </p>
1219
- <p className="text-sm !text-white/40">
1220
- All icons use Radix UI's AccessibleIcon for screen reader
1221
- compatibility and follow WCAG guidelines for social platform
1222
- recognition and brand consistency.
1223
- </p>
1224
- </div>
1225
- </div>
1226
- </div>
1227
- </div>
1228
- </>
51
+ }`,
52
+ livePreview: (
53
+ <a href="#" target="_blank" rel="noreferrer">
54
+ <TwitterXIcon className="text-fm-icon-active h-6 w-6" />
55
+ </a>
56
+ ),
57
+ }}
58
+ relatedIcons={[
59
+ {
60
+ name: "ThreadsIcon",
61
+ description: "Threads brand mark",
62
+ icon: ThreadsIcon,
63
+ accentToken: "info",
64
+ },
65
+ {
66
+ name: "LinkedInIcon",
67
+ description: "LinkedIn brand mark",
68
+ icon: LinkedInIcon,
69
+ accentToken: "positive",
70
+ },
71
+ {
72
+ name: "InstagramIcon",
73
+ description: "Instagram brand mark",
74
+ icon: InstagramIcon,
75
+ accentToken: "warning",
76
+ },
77
+ {
78
+ name: "YoutubeIcon",
79
+ description: "YouTube brand mark",
80
+ icon: YoutubeIcon,
81
+ accentToken: "negative",
82
+ },
83
+ ]}
84
+ />
1229
85
  ),
1230
86
  },
1231
87
  },
1232
88
  tags: ["autodocs"],
1233
89
  argTypes: {
1234
- width: {
1235
- control: { type: "range", min: 8, max: 96, step: 2 },
1236
- description: "Width of the icon (maintains aspect ratio)",
1237
- },
1238
- withAccessibility: {
1239
- control: "boolean",
1240
- description: "Whether to wrap the icon with accessibility features",
1241
- },
1242
- height: {
1243
- control: { type: "range", min: 8, max: 96, step: 2 },
1244
- description: "Height of the icon (maintains aspect ratio)",
1245
- },
1246
- fill: {
1247
- control: "color",
1248
- description: "Fill color of the X logo",
1249
- },
1250
90
  className: {
1251
91
  control: "text",
1252
- description: "CSS classes for styling and sizing",
92
+ description: "CSS classes including color token",
1253
93
  },
1254
- onClick: {
1255
- action: "clicked",
1256
- description: "Click handler for social interactions",
94
+ withAccessibility: {
95
+ control: "boolean",
96
+ description: "Wrap with accessibility label",
1257
97
  },
1258
98
  },
1259
99
  }
@@ -1261,209 +101,124 @@ function ShareButton() {
1261
101
  export default meta
1262
102
  type Story = StoryObj<typeof TwitterXIcon>
1263
103
 
1264
- // Story parameters for consistent dark theme
1265
- const storyParameters = {
1266
- backgrounds: {
1267
- default: "dark",
1268
- values: [
1269
- { name: "dark", value: "#0a0a0a" },
1270
- { name: "darker", value: "#000000" },
1271
- ],
1272
- },
1273
- }
1274
-
1275
104
  export const Default: Story = {
1276
105
  args: {
1277
- className: "h-8 w-8 text-white",
106
+ className: "h-6 w-6 text-fm-icon-active",
1278
107
  withAccessibility: true,
1279
108
  },
1280
- parameters: storyParameters,
1281
109
  render: (args) => (
1282
- <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
110
+ <IconDefaultCanvas>
1283
111
  <TwitterXIcon {...args} />
1284
- </div>
112
+ </IconDefaultCanvas>
1285
113
  ),
1286
114
  }
1287
115
 
1288
116
  export const SizeVariations: Story = {
1289
- parameters: {
1290
- ...storyParameters,
1291
- docs: {
1292
- description: {
1293
- story:
1294
- "TwitterXIcon in different sizes, from small inline social links to large brand displays.",
1295
- },
1296
- },
1297
- },
1298
- render: () => (
1299
- <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">
1300
- <div className="text-center">
1301
- <TwitterXIcon className="!mx-auto mb-2 h-3 w-3 text-white" />
1302
- <span className="text-xs text-white/60">12px</span>
1303
- </div>
1304
- <div className="text-center">
1305
- <TwitterXIcon className="!mx-auto mb-2 h-4 w-4 text-white" />
1306
- <span className="text-xs text-white/60">16px</span>
1307
- </div>
1308
- <div className="text-center">
1309
- <TwitterXIcon className="!mx-auto mb-2 h-5 w-5 text-white" />
1310
- <span className="text-xs text-white/60">20px</span>
1311
- </div>
1312
- <div className="text-center">
1313
- <TwitterXIcon className="!mx-auto mb-2 h-6 w-6 text-white" />
1314
- <span className="text-xs text-white/60">24px</span>
1315
- </div>
1316
- <div className="text-center">
1317
- <TwitterXIcon className="!mx-auto mb-2 h-8 w-8 text-white" />
1318
- <span className="text-xs text-white/60">32px</span>
1319
- </div>
1320
- <div className="text-center">
1321
- <TwitterXIcon className="!mx-auto mb-2 h-12 w-12 text-white" />
1322
- <span className="text-xs text-white/60">48px</span>
1323
- </div>
1324
- </div>
1325
- ),
117
+ render: () => <IconSizeVariations icon={TwitterXIcon} />,
1326
118
  }
1327
119
 
1328
120
  export const BrandColors: Story = {
1329
- parameters: {
1330
- ...storyParameters,
1331
- docs: {
1332
- description: {
1333
- story:
1334
- "TwitterXIcon in different brand-compliant colors for various design contexts.",
1335
- },
1336
- },
1337
- },
1338
121
  render: () => (
1339
- <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">
1340
- <div className="text-center">
1341
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-black">
1342
- <TwitterXIcon className="h-8 w-8 text-white" />
1343
- </div>
1344
- <div className="text-sm font-medium text-white">Official Black</div>
1345
- <div className="text-xs text-white/60">Primary brand</div>
1346
- </div>
1347
- <div className="text-center">
1348
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-gray-300 bg-white">
1349
- <TwitterXIcon className="h-8 w-8 text-black" />
1350
- </div>
1351
- <div className="text-sm font-medium text-white">Inverted White</div>
1352
- <div className="text-xs text-white/60">Light backgrounds</div>
1353
- </div>
1354
- <div className="text-center">
1355
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-gray-600">
1356
- <TwitterXIcon className="h-8 w-8 text-white" />
1357
- </div>
1358
- <div className="text-sm font-medium text-white">Neutral Gray</div>
1359
- <div className="text-xs text-white/60">Subtle integration</div>
1360
- </div>
1361
- <div className="text-center">
1362
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-blue-500">
1363
- <TwitterXIcon className="h-8 w-8 text-white" />
1364
- </div>
1365
- <div className="text-sm font-medium text-white">Accent Color</div>
1366
- <div className="text-xs text-white/60">Themed integration</div>
1367
- </div>
1368
- </div>
122
+ <IconBrandColors
123
+ icon={TwitterXIcon}
124
+ variants={[
125
+ {
126
+ label: "Brand Dark",
127
+ description: "Recommended",
128
+ cardClassName: "h-24 w-24 bg-black",
129
+ iconClassName: "h-8 w-8 text-white",
130
+ },
131
+ {
132
+ label: "Brand Light",
133
+ description: "Alternate",
134
+ cardClassName:
135
+ "border-fm-divider-secondary h-24 w-24 border bg-white",
136
+ iconClassName: "h-8 w-8 text-black",
137
+ },
138
+ {
139
+ label: "Surface Background",
140
+ description: "Theme surface",
141
+ cardClassName: "bg-fm-surface-secondary h-24 w-24",
142
+ iconClassName: "h-8 w-8 text-white",
143
+ },
144
+ {
145
+ label: "Transparent",
146
+ description: "Original mark",
147
+ cardClassName:
148
+ "border-fm-divider-contrast h-24 w-24 border bg-transparent",
149
+ iconClassName: "h-8 w-8 text-fm-primary",
150
+ },
151
+ ]}
152
+ />
1369
153
  ),
1370
154
  }
1371
155
 
1372
156
  export const UsageExamples: Story = {
1373
- parameters: {
1374
- ...storyParameters,
1375
- docs: {
1376
- description: {
1377
- story:
1378
- "Real-world usage examples showing TwitterXIcon in different social media contexts.",
1379
- },
1380
- },
1381
- },
1382
157
  render: () => (
1383
- <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1384
- {/* Share Button */}
1385
- <div className="!space-y-2">
1386
- <h3 className="text-sm font-medium text-white">Social Share Button</h3>
1387
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1388
- <div className="flex gap-3">
1389
- <button className="flex items-center gap-2 rounded-lg border border-gray-700 bg-black px-4 py-2 transition-colors hover:bg-gray-800">
1390
- <TwitterXIcon className="h-4 w-4 text-white" />
1391
- <span className="text-sm text-white">Share on X</span>
1392
- </button>
1393
- <button className="flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 transition-colors hover:bg-blue-700">
1394
- <span className="text-sm text-white">📘</span>
1395
- <span className="text-sm text-white">Facebook</span>
1396
- </button>
1397
- </div>
1398
- </div>
1399
- </div>
1400
-
1401
- {/* Social Auth */}
1402
- <div className="!space-y-2">
1403
- <h3 className="text-sm font-medium text-white">
1404
- Social Authentication
1405
- </h3>
1406
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1407
- <button className="flex w-full items-center justify-center gap-3 rounded-lg border border-gray-700 bg-black px-4 py-3 transition-colors hover:bg-gray-800">
1408
- <TwitterXIcon className="h-5 w-5 text-white" />
1409
- <span className="font-medium text-white">Continue with X</span>
1410
- </button>
1411
- </div>
1412
- </div>
1413
-
1414
- {/* Footer Links */}
1415
- <div className="!space-y-2">
1416
- <h3 className="text-sm font-medium text-white">Footer Social Links</h3>
1417
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
1418
- <div className="flex items-center gap-3">
1419
- <span className="text-sm text-white/60">Follow us:</span>
1420
- <div className="flex gap-2">
1421
- <a
1422
- href="#"
1423
- className="rounded bg-black p-2 transition-colors hover:bg-gray-800"
1424
- >
1425
- <TwitterXIcon className="h-4 w-4 text-white" />
1426
- </a>
1427
- <a
1428
- href="#"
1429
- className="rounded bg-blue-600 p-2 transition-colors hover:bg-blue-700"
1430
- >
1431
- <span className="text-sm text-white">📘</span>
1432
- </a>
158
+ <IconUsageCanvas>
159
+ <IconUsageSection title="Follow on X">
160
+ <a
161
+ href="#"
162
+ className="flex items-center gap-2 rounded-xl bg-black px-4 py-2"
163
+ target="_blank"
164
+ rel="noreferrer"
165
+ >
166
+ <TwitterXIcon className="h-4 w-4 text-white" />
167
+ <span className="font-fm-text text-sm font-medium text-white">
168
+ Follow on X
169
+ </span>
170
+ </a>
171
+ </IconUsageSection>
172
+
173
+ <IconUsageSection title="Social Links Row">
174
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary flex w-full max-w-sm items-center justify-center gap-4 rounded-xl border p-4">
175
+ {[TwitterXIcon, ThreadsIcon, InstagramIcon, LinkedInIcon].map(
176
+ (Icon, i) => (
1433
177
  <a
178
+ key={i}
1434
179
  href="#"
1435
- className="rounded bg-red-600 p-2 transition-colors hover:bg-red-700"
180
+ className="border-fm-divider-secondary flex h-10 w-10 items-center justify-center rounded-xl border"
181
+ target="_blank"
182
+ rel="noreferrer"
1436
183
  >
1437
- <span className="text-sm text-white">📺</span>
184
+ <Icon className="text-fm-icon-active h-5 w-5" />
1438
185
  </a>
1439
- </div>
1440
- </div>
186
+ )
187
+ )}
1441
188
  </div>
1442
- </div>
1443
- </div>
189
+ </IconUsageSection>
190
+
191
+ <IconUsageSection title="Share Sheet">
192
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm space-y-px overflow-hidden rounded-xl border">
193
+ {[
194
+ { label: "Share on X", icon: TwitterXIcon },
195
+ { label: "Share on Threads", icon: ThreadsIcon },
196
+ { label: "Share on LinkedIn", icon: LinkedInIcon },
197
+ ].map(({ label, icon: Icon }) => (
198
+ <button
199
+ key={label}
200
+ className="border-fm-divider-secondary flex w-full items-center gap-3 border-b px-4 py-3 last:border-b-0"
201
+ >
202
+ <Icon className="text-fm-icon-active h-4 w-4" />
203
+ <span className="text-fm-primary font-fm-text text-sm">
204
+ {label}
205
+ </span>
206
+ </button>
207
+ ))}
208
+ </div>
209
+ </IconUsageSection>
210
+ </IconUsageCanvas>
1444
211
  ),
1445
212
  }
1446
213
 
1447
214
  export const Playground: Story = {
1448
- parameters: {
1449
- ...storyParameters,
1450
- docs: {
1451
- description: {
1452
- story:
1453
- "Interactive playground to experiment with different TwitterXIcon configurations.",
1454
- },
1455
- },
1456
- },
1457
215
  args: {
1458
- width: 24,
1459
- height: 24,
1460
- className: "text-white",
216
+ className: "h-8 w-8 text-fm-icon-active",
217
+ withAccessibility: true,
1461
218
  },
1462
219
  render: (args) => (
1463
- <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1464
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1465
- <TwitterXIcon {...args} />
1466
- </div>
1467
- </div>
220
+ <IconPlaygroundCanvas>
221
+ <TwitterXIcon {...args} />
222
+ </IconPlaygroundCanvas>
1468
223
  ),
1469
224
  }