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.
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1199
- package/dist/components/avatar/Avatar.stories.tsx +235 -237
- package/dist/components/badge/Badge.stories.tsx +379 -116
- package/dist/components/banner/Banner.stories.tsx +445 -391
- package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
- package/dist/components/button/Button.stories.tsx +585 -230
- package/dist/components/button/index.tsx +7 -7
- package/dist/components/card/Card.stories.tsx +619 -301
- package/dist/components/char-count/CharCount.stories.tsx +350 -248
- package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
- package/dist/components/chip/Chip.stories.tsx +362 -168
- package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -620
- package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
- package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
- package/dist/components/command/Command.stories.tsx +533 -856
- package/dist/components/dialog/Dialog.stories.tsx +505 -949
- package/dist/components/divider/Divider.stories.tsx +265 -502
- package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
- package/dist/components/drawer/Drawer.stories.tsx +659 -993
- package/dist/components/drawer/index.tsx +3 -3
- package/dist/components/dropdown/Dropdown.stories.tsx +643 -1018
- package/dist/components/form/Form.stories.tsx +560 -274
- package/dist/components/helper-text/HelperText.stories.tsx +199 -200
- package/dist/components/hover-card/HoverCard.stories.tsx +318 -1221
- package/dist/components/icon-button/IconButton.stories.tsx +837 -194
- package/dist/components/if-else/if-else.stories.tsx +370 -83
- package/dist/components/input/Input.stories.tsx +436 -368
- package/dist/components/label/Label.stories.tsx +156 -154
- package/dist/components/list/List.stories.tsx +485 -822
- package/dist/components/marquee/Marquee.stories.tsx +356 -694
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -410
- package/dist/components/overlay/Overlay.stories.tsx +452 -818
- package/dist/components/overlay/index.tsx +4 -4
- package/dist/components/pagination/Pagination.stories.tsx +721 -210
- package/dist/components/popover/Popover.stories.tsx +484 -873
- package/dist/components/radio/Radio.stories.tsx +432 -124
- package/dist/components/resizable/Resizable.stories.tsx +496 -752
- package/dist/components/scroll-area/ScrollArea.stories.tsx +384 -1006
- package/dist/components/search/Search.stories.tsx +314 -575
- package/dist/components/select/Select.stories.tsx +684 -787
- package/dist/components/sheet/Sheet.stories.tsx +671 -936
- package/dist/components/skelton/Skelton.stories.tsx +230 -764
- package/dist/components/slider/Slider.stories.tsx +384 -737
- package/dist/components/stepper/Stepper.stories.tsx +371 -514
- package/dist/components/switch/Switch.stories.tsx +461 -208
- package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
- package/dist/components/table/Table.stories.tsx +770 -914
- package/dist/components/tabs/Tabs.stories.tsx +459 -1400
- package/dist/components/tag/Tag.stories.tsx +714 -542
- package/dist/components/textarea/TextArea.stories.tsx +621 -562
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -148
- package/dist/components/toast/Toast.stories.tsx +452 -1333
- package/dist/components/toggle/Toggle.stories.tsx +488 -909
- package/dist/components/tooltip/Tooltip.stories.tsx +344 -1372
- package/dist/components/typography/Typography.stories.tsx +406 -89
- package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
- package/dist/icons/Icons.stories.tsx +0 -12
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +226 -1013
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +109 -929
- package/dist/icons/all-icons.tsx +124 -87
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +140 -971
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +148 -888
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +135 -1019
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +137 -953
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +138 -997
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +136 -942
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +148 -1092
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +146 -1211
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +126 -615
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +144 -1164
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +167 -985
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +122 -1179
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +124 -1168
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +119 -850
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +112 -1213
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +117 -934
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +160 -961
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +163 -961
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +144 -942
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +129 -966
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +147 -964
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +145 -975
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +150 -1142
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +114 -461
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +124 -1322
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +117 -1318
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +114 -903
- package/dist/icons/command-icon/CommandIcon.stories.tsx +127 -1042
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +123 -962
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +147 -999
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +139 -960
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +126 -820
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +124 -1031
- package/dist/icons/email-icon/EmailIcon.stories.tsx +115 -936
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +112 -1111
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +144 -1025
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +143 -1036
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +127 -1011
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +126 -1056
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +125 -614
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +119 -1050
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +169 -989
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +115 -1145
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +115 -1122
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +130 -313
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +145 -940
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +119 -1174
- package/dist/icons/head-icon/HeadIcon.stories.tsx +111 -916
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +120 -1019
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +119 -683
- package/dist/icons/image-icon/ImageIcon.stories.tsx +105 -1121
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +111 -1192
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +136 -1256
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +159 -962
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +161 -1385
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +124 -972
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +119 -948
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +119 -942
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +108 -1215
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +154 -1517
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +110 -1188
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +119 -678
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +123 -1184
- package/dist/icons/message-icon/MessageIcon.stories.tsx +114 -538
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +116 -1158
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +120 -536
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +109 -1184
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +115 -1134
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +119 -971
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +111 -1100
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +119 -1101
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +109 -1111
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +122 -684
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +113 -954
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +112 -877
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +113 -1000
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +115 -1070
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +115 -978
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +106 -1093
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +107 -829
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +102 -469
- package/dist/icons/search-icon/SearchIcon.stories.tsx +111 -1124
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +107 -970
- package/dist/icons/share-icon/ShareIcon.stories.tsx +120 -1025
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +117 -931
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +137 -1104
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +172 -982
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +164 -983
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +105 -958
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +158 -580
- package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +158 -587
- package/dist/icons/spinner-solid-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +146 -682
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
- package/dist/icons/star-icon/StarIcon.stories.tsx +124 -904
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +112 -964
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +116 -852
- package/dist/icons/sun-icon/SunIcon.stories.tsx +120 -831
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +116 -950
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +123 -980
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +156 -1427
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +146 -1142
- package/dist/icons/tick-icon/TickIcon.stories.tsx +145 -1276
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +108 -933
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +157 -1402
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +115 -889
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +118 -984
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +125 -1049
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +123 -1356
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +110 -1171
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +112 -1093
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +115 -1087
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +122 -1046
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +161 -936
- package/dist/index.cjs +84 -84
- package/dist/index.js +84 -84
- package/dist/styles/aural-all-theme.css +1222 -0
- package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
- package/dist/styles/aural-light-theme.css +1047 -0
- 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: "
|
|
15
|
-
{ name: "darker", value: "
|
|
16
|
-
{ name: "light", value: "
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
<
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
|
92
|
+
description: "CSS classes including color token",
|
|
1253
93
|
},
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
description: "
|
|
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-
|
|
106
|
+
className: "h-6 w-6 text-fm-icon-active",
|
|
1278
107
|
withAccessibility: true,
|
|
1279
108
|
},
|
|
1280
|
-
parameters: storyParameters,
|
|
1281
109
|
render: (args) => (
|
|
1282
|
-
<
|
|
110
|
+
<IconDefaultCanvas>
|
|
1283
111
|
<TwitterXIcon {...args} />
|
|
1284
|
-
</
|
|
112
|
+
</IconDefaultCanvas>
|
|
1285
113
|
),
|
|
1286
114
|
}
|
|
1287
115
|
|
|
1288
116
|
export const SizeVariations: Story = {
|
|
1289
|
-
|
|
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
|
-
<
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
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
|
-
<
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
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="
|
|
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
|
-
<
|
|
184
|
+
<Icon className="text-fm-icon-active h-5 w-5" />
|
|
1438
185
|
</a>
|
|
1439
|
-
|
|
1440
|
-
|
|
186
|
+
)
|
|
187
|
+
)}
|
|
1441
188
|
</div>
|
|
1442
|
-
</
|
|
1443
|
-
|
|
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
|
-
|
|
1459
|
-
|
|
1460
|
-
className: "text-white",
|
|
216
|
+
className: "h-8 w-8 text-fm-icon-active",
|
|
217
|
+
withAccessibility: true,
|
|
1461
218
|
},
|
|
1462
219
|
render: (args) => (
|
|
1463
|
-
<
|
|
1464
|
-
<
|
|
1465
|
-
|
|
1466
|
-
</div>
|
|
1467
|
-
</div>
|
|
220
|
+
<IconPlaygroundCanvas>
|
|
221
|
+
<TwitterXIcon {...args} />
|
|
222
|
+
</IconPlaygroundCanvas>
|
|
1468
223
|
),
|
|
1469
224
|
}
|