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