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 { TwitterXIcon } from "src/ui/icons/twitter-x-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 { ThreadsIcon } from "."
|
|
5
19
|
|
|
6
20
|
const meta: Meta<typeof ThreadsIcon> = {
|
|
@@ -18,1281 +32,68 @@ const meta: Meta<typeof ThreadsIcon> = {
|
|
|
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-primary/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-secondary/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-secondary/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
|
-
<ThreadsIcon className="text-fm-icon-active h-12 w-12" />
|
|
91
|
-
</div>
|
|
92
|
-
<h1 className="text-fm-icon-active! text-5xl font-bold">
|
|
93
|
-
ThreadsIcon
|
|
94
|
-
</h1>
|
|
95
|
-
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
|
-
The official Threads brand icon featuring the distinctive
|
|
97
|
-
"@" symbol design. Essential for text-based social
|
|
98
|
-
networking, conversation platforms, community engagement,
|
|
99
|
-
discussion threads, and any interface where Threads platform
|
|
100
|
-
connectivity and threaded conversations are featured.
|
|
101
|
-
</p>
|
|
102
|
-
|
|
103
|
-
{/* Stats */}
|
|
104
|
-
<div className="flex items-center justify-center gap-8 pt-8">
|
|
105
|
-
<div className="text-center">
|
|
106
|
-
<div className="text-fm-secondary text-3xl font-bold">
|
|
107
|
-
Text Conversations
|
|
108
|
-
</div>
|
|
109
|
-
<div className="text-fm-tertiary text-sm">
|
|
110
|
-
Threaded discussions
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
114
|
-
<div className="text-center">
|
|
115
|
-
<div className="text-fm-secondary text-3xl font-bold">
|
|
116
|
-
Community Platform
|
|
117
|
-
</div>
|
|
118
|
-
<div className="text-fm-tertiary text-sm">
|
|
119
|
-
Social networking
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
123
|
-
<div className="text-center">
|
|
124
|
-
<div className="text-fm-secondary text-3xl font-bold">
|
|
125
|
-
Meta Ecosystem
|
|
126
|
-
</div>
|
|
127
|
-
<div className="text-fm-tertiary text-sm">
|
|
128
|
-
Integrated platform
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
|
|
136
|
-
{/* Content */}
|
|
137
|
-
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
138
|
-
{/* Quick Usage */}
|
|
139
|
-
<div className="!space-y-8">
|
|
140
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
141
|
-
Quick Start
|
|
142
|
-
</h2>
|
|
143
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
144
|
-
<div className="!space-y-4">
|
|
145
|
-
<h3 className="text-fm-secondary! text-xl font-semibold">
|
|
146
|
-
Basic Usage
|
|
147
|
-
</h3>
|
|
148
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
149
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
150
|
-
{`import { ThreadsIcon } from "@icons/threads-icon"
|
|
151
|
-
|
|
152
|
-
function SocialShare() {
|
|
35
|
+
<AuralIconDocsPage
|
|
36
|
+
accentToken="negative"
|
|
37
|
+
features={[
|
|
38
|
+
{ title: "Brand Mark", description: "Threads 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 { ThreadsIcon } from "src/ui/icons/threads-icon"
|
|
44
|
+
|
|
45
|
+
function ThreadsLink() {
|
|
153
46
|
return (
|
|
154
|
-
<
|
|
155
|
-
|
|
156
|
-
className="flex items-center gap-2 p-2 rounded-lg
|
|
157
|
-
bg-black hover:bg-gray-800 border border-gray-700
|
|
158
|
-
transition-colors"
|
|
159
|
-
aria-label="Share on Threads"
|
|
160
|
-
>
|
|
161
|
-
<ThreadsIcon className="h-5 w-5 text-white" />
|
|
162
|
-
<span className="text-white">Share on Threads</span>
|
|
163
|
-
</button>
|
|
164
|
-
)
|
|
165
|
-
}`}
|
|
166
|
-
</pre>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
|
|
170
|
-
<div className="!space-y-4">
|
|
171
|
-
<h3 className="text-fm-secondary! text-xl font-semibold">
|
|
172
|
-
Live Preview
|
|
173
|
-
</h3>
|
|
174
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
175
|
-
<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">
|
|
176
|
-
<ThreadsIcon className="text-fm-icon-active h-5 w-5" />
|
|
177
|
-
<span className="text-fm-icon-active font-medium">
|
|
178
|
-
Share on Threads
|
|
179
|
-
</span>
|
|
180
|
-
</button>
|
|
181
|
-
</div>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
|
|
186
|
-
{/* Props Documentation */}
|
|
187
|
-
<div className="!space-y-8">
|
|
188
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
189
|
-
Props & Configuration
|
|
190
|
-
</h2>
|
|
191
|
-
|
|
192
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
193
|
-
<div className="bg-fm-surface-secondary p-4">
|
|
194
|
-
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
195
|
-
Props
|
|
196
|
-
</h3>
|
|
197
|
-
</div>
|
|
198
|
-
<table className="!my-0 w-full">
|
|
199
|
-
<thead className="bg-fm-surface-secondary">
|
|
200
|
-
<tr className="border-fm-divider-secondary border-b">
|
|
201
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
202
|
-
Prop
|
|
203
|
-
</th>
|
|
204
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
205
|
-
Type
|
|
206
|
-
</th>
|
|
207
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
208
|
-
Default
|
|
209
|
-
</th>
|
|
210
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
211
|
-
Description
|
|
212
|
-
</th>
|
|
213
|
-
</tr>
|
|
214
|
-
</thead>
|
|
215
|
-
<tbody>
|
|
216
|
-
{" "}
|
|
217
|
-
<tr className="bg-fm-surface-secondary!">
|
|
218
|
-
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
219
|
-
withAccessibility
|
|
220
|
-
</td>
|
|
221
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
222
|
-
boolean
|
|
223
|
-
</td>
|
|
224
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
225
|
-
true
|
|
226
|
-
</td>
|
|
227
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
228
|
-
Whether to wrap the icon with accessibility feature
|
|
229
|
-
</td>
|
|
230
|
-
</tr>
|
|
231
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
232
|
-
<td className="text-fm-secondary! px-6 py-4 font-mono text-sm">
|
|
233
|
-
height
|
|
234
|
-
</td>
|
|
235
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
236
|
-
number | string
|
|
237
|
-
</td>
|
|
238
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
239
|
-
auto
|
|
240
|
-
</td>
|
|
241
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
242
|
-
Height of the icon (maintains aspect ratio)
|
|
243
|
-
</td>
|
|
244
|
-
</tr>
|
|
245
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
246
|
-
<td className="text-fm-secondary! px-6 py-4 font-mono text-sm">
|
|
247
|
-
fill
|
|
248
|
-
</td>
|
|
249
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
250
|
-
string
|
|
251
|
-
</td>
|
|
252
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
253
|
-
currentColor
|
|
254
|
-
</td>
|
|
255
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
256
|
-
Fill color of the Threads "@" symbol
|
|
257
|
-
</td>
|
|
258
|
-
</tr>
|
|
259
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
260
|
-
<td className="text-fm-secondary! px-6 py-4 font-mono text-sm">
|
|
261
|
-
className
|
|
262
|
-
</td>
|
|
263
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
264
|
-
string
|
|
265
|
-
</td>
|
|
266
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
267
|
-
-
|
|
268
|
-
</td>
|
|
269
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
270
|
-
CSS classes for styling and sizing
|
|
271
|
-
</td>
|
|
272
|
-
</tr>
|
|
273
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
274
|
-
<td className="text-fm-secondary! px-6 py-4 font-mono text-sm">
|
|
275
|
-
onClick
|
|
276
|
-
</td>
|
|
277
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
|
-
function
|
|
279
|
-
</td>
|
|
280
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
281
|
-
-
|
|
282
|
-
</td>
|
|
283
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
284
|
-
Click handler for social interactions
|
|
285
|
-
</td>
|
|
286
|
-
</tr>
|
|
287
|
-
<tr className="bg-fm-surface-secondary!">
|
|
288
|
-
<td className="text-fm-secondary! px-6 py-4 font-mono text-sm">
|
|
289
|
-
...svgProps
|
|
290
|
-
</td>
|
|
291
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
292
|
-
SVGProps
|
|
293
|
-
</td>
|
|
294
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
295
|
-
-
|
|
296
|
-
</td>
|
|
297
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
298
|
-
All standard SVG element props
|
|
299
|
-
</td>
|
|
300
|
-
</tr>
|
|
301
|
-
</tbody>
|
|
302
|
-
</table>
|
|
303
|
-
</div>
|
|
304
|
-
|
|
305
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary/10 rounded-lg border p-4">
|
|
306
|
-
<div className="text-fm-secondary flex items-center gap-2 text-sm">
|
|
307
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
308
|
-
<span>
|
|
309
|
-
<strong>Brand Guidelines:</strong> Threads typically uses
|
|
310
|
-
black/white monochrome design for clean, text-focused
|
|
311
|
-
branding that emphasizes conversation over visual content.
|
|
312
|
-
</span>
|
|
313
|
-
</div>
|
|
314
|
-
</div>
|
|
315
|
-
</div>
|
|
316
|
-
|
|
317
|
-
{/* Size Variations */}
|
|
318
|
-
<div className="!space-y-8">
|
|
319
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
320
|
-
Size Variations
|
|
321
|
-
</h2>
|
|
322
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
323
|
-
<div className="!space-y-6">
|
|
324
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
325
|
-
<div className="!space-y-4">
|
|
326
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
327
|
-
Standard Sizes
|
|
328
|
-
</h3>
|
|
329
|
-
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
330
|
-
<div className="text-center">
|
|
331
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-3 w-3" />
|
|
332
|
-
<span className="text-fm-tertiary text-xs">
|
|
333
|
-
12px
|
|
334
|
-
</span>
|
|
335
|
-
</div>
|
|
336
|
-
<div className="text-center">
|
|
337
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-4 w-4" />
|
|
338
|
-
<span className="text-fm-tertiary text-xs">
|
|
339
|
-
16px
|
|
340
|
-
</span>
|
|
341
|
-
</div>
|
|
342
|
-
<div className="text-center">
|
|
343
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-5 w-5" />
|
|
344
|
-
<span className="text-fm-tertiary text-xs">
|
|
345
|
-
20px
|
|
346
|
-
</span>
|
|
347
|
-
</div>
|
|
348
|
-
<div className="text-center">
|
|
349
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-6 w-6" />
|
|
350
|
-
<span className="text-fm-tertiary text-xs">
|
|
351
|
-
24px
|
|
352
|
-
</span>
|
|
353
|
-
</div>
|
|
354
|
-
<div className="text-center">
|
|
355
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-8 w-8" />
|
|
356
|
-
<span className="text-fm-tertiary text-xs">
|
|
357
|
-
32px
|
|
358
|
-
</span>
|
|
359
|
-
</div>
|
|
360
|
-
<div className="text-center">
|
|
361
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-12 w-12" />
|
|
362
|
-
<span className="text-fm-tertiary text-xs">
|
|
363
|
-
48px
|
|
364
|
-
</span>
|
|
365
|
-
</div>
|
|
366
|
-
</div>
|
|
367
|
-
</div>
|
|
368
|
-
|
|
369
|
-
<div className="!space-y-4">
|
|
370
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
371
|
-
Code Example
|
|
372
|
-
</h3>
|
|
373
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
374
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
375
|
-
{`// Small (16px) - inline social links
|
|
376
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
377
|
-
|
|
378
|
-
// Medium (24px) - standard buttons
|
|
379
|
-
<ThreadsIcon className="h-6 w-6" />
|
|
380
|
-
|
|
381
|
-
// Large (32px) - prominent displays
|
|
382
|
-
<ThreadsIcon className="h-8 w-8" />
|
|
383
|
-
|
|
384
|
-
// Custom size with maintained aspect ratio
|
|
385
|
-
<ThreadsIcon width={40} height={40} />`}
|
|
386
|
-
</pre>
|
|
387
|
-
</div>
|
|
388
|
-
</div>
|
|
389
|
-
</div>
|
|
390
|
-
</div>
|
|
391
|
-
</div>
|
|
392
|
-
</div>
|
|
393
|
-
|
|
394
|
-
{/* Color & Styling */}
|
|
395
|
-
<div className="!space-y-8">
|
|
396
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
397
|
-
Color & Styling
|
|
398
|
-
</h2>
|
|
399
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
400
|
-
<div className="!space-y-4">
|
|
401
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
402
|
-
Brand Colors
|
|
403
|
-
</h3>
|
|
404
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
405
|
-
<div className="flex items-center gap-4">
|
|
406
|
-
<div className="bg-fm-surface-primary flex h-12 w-12 items-center justify-center rounded-lg">
|
|
407
|
-
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
408
|
-
</div>
|
|
409
|
-
<div>
|
|
410
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
411
|
-
Official Black
|
|
412
|
-
</div>
|
|
413
|
-
<div className="text-fm-tertiary text-xs">
|
|
414
|
-
Primary brand color
|
|
415
|
-
</div>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
<div className="flex items-center gap-4">
|
|
419
|
-
<div className="border-fm-divider-primary bg-fm-surface-contrast flex h-12 w-12 items-center justify-center rounded-lg border">
|
|
420
|
-
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
421
|
-
</div>
|
|
422
|
-
<div>
|
|
423
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
424
|
-
Inverted White
|
|
425
|
-
</div>
|
|
426
|
-
<div className="text-fm-tertiary text-xs">
|
|
427
|
-
Light backgrounds
|
|
428
|
-
</div>
|
|
429
|
-
</div>
|
|
430
|
-
</div>
|
|
431
|
-
<div className="flex items-center gap-4">
|
|
432
|
-
<div className="bg-fm-surface-tertiary flex h-12 w-12 items-center justify-center rounded-lg">
|
|
433
|
-
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
434
|
-
</div>
|
|
435
|
-
<div>
|
|
436
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
437
|
-
Neutral Gray
|
|
438
|
-
</div>
|
|
439
|
-
<div className="text-fm-tertiary text-xs">
|
|
440
|
-
Subtle integration
|
|
441
|
-
</div>
|
|
442
|
-
</div>
|
|
443
|
-
</div>
|
|
444
|
-
<div className="flex items-center gap-4">
|
|
445
|
-
<div className="bg-fm-icon-info flex h-12 w-12 items-center justify-center rounded-lg">
|
|
446
|
-
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
447
|
-
</div>
|
|
448
|
-
<div>
|
|
449
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
450
|
-
Accent Color
|
|
451
|
-
</div>
|
|
452
|
-
<div className="text-fm-tertiary text-xs">
|
|
453
|
-
Themed integration
|
|
454
|
-
</div>
|
|
455
|
-
</div>
|
|
456
|
-
</div>
|
|
457
|
-
</div>
|
|
458
|
-
</div>
|
|
459
|
-
|
|
460
|
-
<div className="!space-y-4">
|
|
461
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
462
|
-
Usage Examples
|
|
463
|
-
</h3>
|
|
464
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
465
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
466
|
-
{`// Official black on white
|
|
467
|
-
<ThreadsIcon className="h-6 w-6 text-black" />
|
|
468
|
-
|
|
469
|
-
// White on black (official)
|
|
470
|
-
<ThreadsIcon className="h-6 w-6 text-white" />
|
|
471
|
-
|
|
472
|
-
// Inherit parent text color
|
|
473
|
-
<ThreadsIcon className="h-5 w-5" />
|
|
474
|
-
|
|
475
|
-
// Custom themed color
|
|
476
|
-
<ThreadsIcon
|
|
477
|
-
className="h-6 w-6 text-blue-500"
|
|
478
|
-
/>
|
|
479
|
-
|
|
480
|
-
// Hover state with transition
|
|
481
|
-
<ThreadsIcon
|
|
482
|
-
className="h-6 w-6 text-gray-400
|
|
483
|
-
hover:text-white transition-colors"
|
|
484
|
-
/>
|
|
485
|
-
|
|
486
|
-
// Background with proper contrast
|
|
487
|
-
<div className="bg-black p-2 rounded">
|
|
488
|
-
<ThreadsIcon className="h-6 w-6 text-white" />
|
|
489
|
-
</div>`}
|
|
490
|
-
</pre>
|
|
491
|
-
</div>
|
|
492
|
-
</div>
|
|
493
|
-
</div>
|
|
494
|
-
</div>
|
|
495
|
-
|
|
496
|
-
{/* Usage Examples */}
|
|
497
|
-
<div className="!space-y-8">
|
|
498
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
499
|
-
Usage Examples
|
|
500
|
-
</h2>
|
|
501
|
-
|
|
502
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
503
|
-
{/* Social Share Buttons */}
|
|
504
|
-
<div className="!space-y-4">
|
|
505
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
506
|
-
Social Share Integration
|
|
507
|
-
</h3>
|
|
508
|
-
<div className="!space-y-4">
|
|
509
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
510
|
-
<div className="space-y-4">
|
|
511
|
-
<h4 className="text-fm-icon-active mb-3 text-sm font-medium">
|
|
512
|
-
Share this post
|
|
513
|
-
</h4>
|
|
514
|
-
<div className="flex flex-wrap gap-3">
|
|
515
|
-
<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">
|
|
516
|
-
<ThreadsIcon className="text-fm-icon-active h-4 w-4" />
|
|
517
|
-
<span className="text-fm-icon-active text-sm">
|
|
518
|
-
Share on Threads
|
|
519
|
-
</span>
|
|
520
|
-
</button>
|
|
521
|
-
<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">
|
|
522
|
-
<span className="text-fm-icon-active text-sm">
|
|
523
|
-
𝕏
|
|
524
|
-
</span>
|
|
525
|
-
<span className="text-fm-icon-active text-sm">
|
|
526
|
-
Share on X
|
|
527
|
-
</span>
|
|
528
|
-
</button>
|
|
529
|
-
<button className="bg-fm-icon-info hover:bg-fm-icon-info flex items-center gap-2 rounded-lg px-4 py-2 transition-colors">
|
|
530
|
-
<span className="text-fm-icon-active text-sm">
|
|
531
|
-
📘
|
|
532
|
-
</span>
|
|
533
|
-
<span className="text-fm-icon-active text-sm">
|
|
534
|
-
Facebook
|
|
535
|
-
</span>
|
|
536
|
-
</button>
|
|
537
|
-
</div>
|
|
538
|
-
<div className="border-fm-divider-secondary border-t pt-4">
|
|
539
|
-
<div className="flex items-center gap-3">
|
|
540
|
-
<span className="text-fm-tertiary text-sm">
|
|
541
|
-
Follow the conversation:
|
|
542
|
-
</span>
|
|
543
|
-
<div className="flex gap-2">
|
|
544
|
-
<a
|
|
545
|
-
href="#"
|
|
546
|
-
className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
|
|
547
|
-
>
|
|
548
|
-
<ThreadsIcon className="text-fm-icon-active h-4 w-4" />
|
|
549
|
-
</a>
|
|
550
|
-
<a
|
|
551
|
-
href="#"
|
|
552
|
-
className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
|
|
553
|
-
>
|
|
554
|
-
<span className="text-fm-icon-active text-sm">
|
|
555
|
-
𝕏
|
|
556
|
-
</span>
|
|
557
|
-
</a>
|
|
558
|
-
<a
|
|
559
|
-
href="#"
|
|
560
|
-
className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
|
|
561
|
-
>
|
|
562
|
-
<span className="text-fm-icon-active text-sm">
|
|
563
|
-
📘
|
|
564
|
-
</span>
|
|
565
|
-
</a>
|
|
566
|
-
</div>
|
|
567
|
-
</div>
|
|
568
|
-
</div>
|
|
569
|
-
</div>
|
|
570
|
-
</div>
|
|
571
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
572
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
573
|
-
{`// Social sharing component with Threads
|
|
574
|
-
<div className="share-buttons">
|
|
575
|
-
<h4>Share this post</h4>
|
|
576
|
-
<div className="button-group">
|
|
577
|
-
<button
|
|
578
|
-
onClick={() => shareToThreads(postUrl, postTitle)}
|
|
579
|
-
className="share-btn threads-btn"
|
|
580
|
-
>
|
|
581
|
-
<ThreadsIcon className="h-4 w-4 text-white" />
|
|
582
|
-
<span>Share on Threads</span>
|
|
583
|
-
</button>
|
|
584
|
-
<TwitterShareButton />
|
|
585
|
-
<FacebookShareButton />
|
|
586
|
-
</div>
|
|
587
|
-
<div className="follow-section">
|
|
588
|
-
<span>Follow the conversation:</span>
|
|
589
|
-
<div className="social-links">
|
|
590
|
-
<a
|
|
591
|
-
href="https://threads.net/@username"
|
|
592
|
-
className="social-link threads-link"
|
|
593
|
-
aria-label="Follow us on Threads"
|
|
594
|
-
>
|
|
595
|
-
<ThreadsIcon className="h-4 w-4 text-white" />
|
|
596
|
-
</a>
|
|
597
|
-
<TwitterLink />
|
|
598
|
-
<FacebookLink />
|
|
599
|
-
</div>
|
|
600
|
-
</div>
|
|
601
|
-
</div>`}
|
|
602
|
-
</pre>
|
|
603
|
-
</div>
|
|
604
|
-
</div>
|
|
605
|
-
</div>
|
|
606
|
-
|
|
607
|
-
{/* Discussion Thread Widget */}
|
|
608
|
-
<div className="!space-y-4">
|
|
609
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
610
|
-
Discussion Thread Widget
|
|
611
|
-
</h3>
|
|
612
|
-
<div className="!space-y-4">
|
|
613
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
614
|
-
<div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
615
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-b p-4">
|
|
616
|
-
<div className="flex items-center justify-between">
|
|
617
|
-
<div className="flex items-center gap-3">
|
|
618
|
-
<ThreadsIcon className="text-fm-icon-active h-5 w-5" />
|
|
619
|
-
<div>
|
|
620
|
-
<h4 className="text-fm-icon-active text-sm font-semibold">
|
|
621
|
-
Latest Discussion
|
|
622
|
-
</h4>
|
|
623
|
-
<p className="text-fm-tertiary text-xs">
|
|
624
|
-
Join the conversation on Threads
|
|
625
|
-
</p>
|
|
626
|
-
</div>
|
|
627
|
-
</div>
|
|
628
|
-
<a
|
|
629
|
-
href="#"
|
|
630
|
-
className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors"
|
|
631
|
-
>
|
|
632
|
-
View Thread
|
|
633
|
-
</a>
|
|
634
|
-
</div>
|
|
635
|
-
</div>
|
|
636
|
-
<div className="space-y-3 p-4">
|
|
637
|
-
<div className="flex gap-3">
|
|
638
|
-
<div className="bg-fm-surface-secondary flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full">
|
|
639
|
-
<span className="text-xs">👤</span>
|
|
640
|
-
</div>
|
|
641
|
-
<div className="flex-1">
|
|
642
|
-
<div className="mb-1 flex items-center gap-2">
|
|
643
|
-
<span className="text-fm-icon-active text-sm font-medium">
|
|
644
|
-
Alex Chen
|
|
645
|
-
</span>
|
|
646
|
-
<span className="text-fm-placeholder text-xs">
|
|
647
|
-
@alexchen
|
|
648
|
-
</span>
|
|
649
|
-
<span className="text-fm-placeholder text-xs">
|
|
650
|
-
•
|
|
651
|
-
</span>
|
|
652
|
-
<span className="text-fm-placeholder text-xs">
|
|
653
|
-
2h
|
|
654
|
-
</span>
|
|
655
|
-
</div>
|
|
656
|
-
<p className="text-fm-icon-active/80 text-sm">
|
|
657
|
-
Really excited about the new design system
|
|
658
|
-
updates. The accessibility improvements are
|
|
659
|
-
game-changing! 🎨
|
|
660
|
-
</p>
|
|
661
|
-
<div className="mt-2 flex items-center gap-4">
|
|
662
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
663
|
-
Reply
|
|
664
|
-
</button>
|
|
665
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
666
|
-
💬 12
|
|
667
|
-
</button>
|
|
668
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
669
|
-
🔄 8
|
|
670
|
-
</button>
|
|
671
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
672
|
-
❤️ 24
|
|
673
|
-
</button>
|
|
674
|
-
</div>
|
|
675
|
-
</div>
|
|
676
|
-
</div>
|
|
677
|
-
<div className="flex gap-3">
|
|
678
|
-
<div className="bg-fm-surface-secondary flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full">
|
|
679
|
-
<span className="text-xs">👤</span>
|
|
680
|
-
</div>
|
|
681
|
-
<div className="flex-1">
|
|
682
|
-
<div className="mb-1 flex items-center gap-2">
|
|
683
|
-
<span className="text-fm-icon-active text-sm font-medium">
|
|
684
|
-
Sarah Kim
|
|
685
|
-
</span>
|
|
686
|
-
<span className="text-fm-placeholder text-xs">
|
|
687
|
-
@sarahk
|
|
688
|
-
</span>
|
|
689
|
-
<span className="text-fm-placeholder text-xs">
|
|
690
|
-
•
|
|
691
|
-
</span>
|
|
692
|
-
<span className="text-fm-placeholder text-xs">
|
|
693
|
-
1h
|
|
694
|
-
</span>
|
|
695
|
-
</div>
|
|
696
|
-
<p className="text-fm-icon-active/80 text-sm">
|
|
697
|
-
@alexchen Totally agree! The color contrast
|
|
698
|
-
ratios are so much better now. Perfect for our
|
|
699
|
-
vision-impaired users.
|
|
700
|
-
</p>
|
|
701
|
-
<div className="mt-2 flex items-center gap-4">
|
|
702
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
703
|
-
Reply
|
|
704
|
-
</button>
|
|
705
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
706
|
-
💬 5
|
|
707
|
-
</button>
|
|
708
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
709
|
-
🔄 3
|
|
710
|
-
</button>
|
|
711
|
-
<button className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors">
|
|
712
|
-
❤️ 15
|
|
713
|
-
</button>
|
|
714
|
-
</div>
|
|
715
|
-
</div>
|
|
716
|
-
</div>
|
|
717
|
-
<div className="border-fm-divider-secondary border-t pt-3">
|
|
718
|
-
<a
|
|
719
|
-
href="#"
|
|
720
|
-
className="text-fm-tertiary hover:text-fm-icon-active flex items-center gap-2 text-sm transition-colors"
|
|
721
|
-
>
|
|
722
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
723
|
-
<span>Continue reading on Threads</span>
|
|
724
|
-
</a>
|
|
725
|
-
</div>
|
|
726
|
-
</div>
|
|
727
|
-
</div>
|
|
728
|
-
</div>
|
|
729
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
730
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
731
|
-
{`// Discussion thread widget
|
|
732
|
-
<div className="threads-widget">
|
|
733
|
-
<div className="widget-header">
|
|
734
|
-
<div className="platform-info">
|
|
735
|
-
<ThreadsIcon className="h-5 w-5 text-white" />
|
|
736
|
-
<div className="platform-details">
|
|
737
|
-
<h3>Latest Discussion</h3>
|
|
738
|
-
<p>Join the conversation on Threads</p>
|
|
739
|
-
</div>
|
|
740
|
-
</div>
|
|
741
|
-
<a href={threadsUrl} className="view-thread-link">
|
|
742
|
-
View Thread
|
|
743
|
-
</a>
|
|
744
|
-
</div>
|
|
745
|
-
<div className="thread-posts">
|
|
746
|
-
{threadPosts.map(post => (
|
|
747
|
-
<div key={post.id} className="thread-post">
|
|
748
|
-
<UserAvatar user={post.author} />
|
|
749
|
-
<div className="post-content">
|
|
750
|
-
<PostHeader post={post} />
|
|
751
|
-
<PostText text={post.text} />
|
|
752
|
-
<PostActions
|
|
753
|
-
post={post}
|
|
754
|
-
onReply={handleReply}
|
|
755
|
-
onRepost={handleRepost}
|
|
756
|
-
onLike={handleLike}
|
|
757
|
-
/>
|
|
758
|
-
</div>
|
|
759
|
-
</div>
|
|
760
|
-
))}
|
|
761
|
-
</div>
|
|
762
|
-
<div className="widget-footer">
|
|
763
|
-
<a href={threadsUrl} className="continue-reading">
|
|
764
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
765
|
-
<span>Continue reading on Threads</span>
|
|
47
|
+
<a href="https://threads.net/@handle" target="_blank">
|
|
48
|
+
<ThreadsIcon className="h-5 w-5 text-fm-icon-active" />
|
|
766
49
|
</a>
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
</p>
|
|
803
|
-
</div>
|
|
804
|
-
<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">
|
|
805
|
-
Follow
|
|
806
|
-
</button>
|
|
807
|
-
</div>
|
|
808
|
-
<div className="mt-4 flex items-center gap-6">
|
|
809
|
-
<div className="text-sm">
|
|
810
|
-
<span className="text-fm-icon-active font-medium">
|
|
811
|
-
2,847
|
|
812
|
-
</span>
|
|
813
|
-
<span className="text-fm-tertiary ml-1">
|
|
814
|
-
Threads
|
|
815
|
-
</span>
|
|
816
|
-
</div>
|
|
817
|
-
<div className="text-sm">
|
|
818
|
-
<span className="text-fm-icon-active font-medium">
|
|
819
|
-
15.2k
|
|
820
|
-
</span>
|
|
821
|
-
<span className="text-fm-tertiary ml-1">
|
|
822
|
-
Followers
|
|
823
|
-
</span>
|
|
824
|
-
</div>
|
|
825
|
-
<div className="text-sm">
|
|
826
|
-
<span className="text-fm-icon-active font-medium">
|
|
827
|
-
943
|
|
828
|
-
</span>
|
|
829
|
-
<span className="text-fm-tertiary ml-1">
|
|
830
|
-
Following
|
|
831
|
-
</span>
|
|
832
|
-
</div>
|
|
833
|
-
</div>
|
|
834
|
-
<div className="border-fm-divider-secondary mt-4 flex items-center gap-4 border-t pt-4">
|
|
835
|
-
<span className="text-fm-tertiary text-sm">
|
|
836
|
-
Join the conversation:
|
|
837
|
-
</span>
|
|
838
|
-
<div className="flex gap-2">
|
|
839
|
-
<a
|
|
840
|
-
href="#"
|
|
841
|
-
className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
|
|
842
|
-
aria-label="Follow on Threads"
|
|
843
|
-
>
|
|
844
|
-
<ThreadsIcon className="text-fm-icon-active h-4 w-4" />
|
|
845
|
-
</a>
|
|
846
|
-
<a
|
|
847
|
-
href="#"
|
|
848
|
-
className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
|
|
849
|
-
aria-label="Connect on Discord"
|
|
850
|
-
>
|
|
851
|
-
<span className="text-fm-icon-active text-sm">
|
|
852
|
-
🎮
|
|
853
|
-
</span>
|
|
854
|
-
</a>
|
|
855
|
-
<a
|
|
856
|
-
href="#"
|
|
857
|
-
className="bg-fm-surface-tertiary hover:bg-fm-surface-secondary rounded p-2 transition-colors"
|
|
858
|
-
aria-label="View Website"
|
|
859
|
-
>
|
|
860
|
-
<span className="text-fm-icon-active text-sm">
|
|
861
|
-
🌐
|
|
862
|
-
</span>
|
|
863
|
-
</a>
|
|
864
|
-
</div>
|
|
865
|
-
</div>
|
|
866
|
-
</div>
|
|
867
|
-
</div>
|
|
868
|
-
</div>
|
|
869
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
870
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
871
|
-
{`// Community profile with Threads integration
|
|
872
|
-
<div className="community-profile">
|
|
873
|
-
<div className="profile-header">
|
|
874
|
-
<CoverImage />
|
|
875
|
-
<CommunityAvatar />
|
|
876
|
-
</div>
|
|
877
|
-
<div className="profile-content">
|
|
878
|
-
<div className="community-info">
|
|
879
|
-
<CommunityDetails community={community} />
|
|
880
|
-
<FollowButton communityId={community.id} />
|
|
881
|
-
</div>
|
|
882
|
-
<CommunityStats stats={community.stats} />
|
|
883
|
-
<div className="social-links">
|
|
884
|
-
<span>Join the conversation:</span>
|
|
885
|
-
<div className="link-group">
|
|
886
|
-
<a
|
|
887
|
-
href={community.socialLinks.threads}
|
|
888
|
-
className="social-link threads-link"
|
|
889
|
-
aria-label="Follow on Threads"
|
|
890
|
-
>
|
|
891
|
-
<ThreadsIcon className="h-4 w-4 text-white" />
|
|
892
|
-
</a>
|
|
893
|
-
<DiscordLink url={community.socialLinks.discord} />
|
|
894
|
-
<WebsiteLink url={community.website} />
|
|
895
|
-
</div>
|
|
896
|
-
</div>
|
|
897
|
-
</div>
|
|
898
|
-
</div>`}
|
|
899
|
-
</pre>
|
|
900
|
-
</div>
|
|
901
|
-
</div>
|
|
902
|
-
</div>
|
|
903
|
-
|
|
904
|
-
{/* Text-Based Content Hub */}
|
|
905
|
-
<div className="!space-y-4">
|
|
906
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
907
|
-
Text-Based Content Hub
|
|
908
|
-
</h3>
|
|
909
|
-
<div className="!space-y-4">
|
|
910
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
911
|
-
<div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
912
|
-
<div className="p-6">
|
|
913
|
-
<div className="mb-6 text-center">
|
|
914
|
-
<h4 className="text-fm-icon-active mb-2 text-xl font-semibold">
|
|
915
|
-
Join the Conversation
|
|
916
|
-
</h4>
|
|
917
|
-
<p className="text-fm-secondary text-sm">
|
|
918
|
-
Share your thoughts and connect with like-minded
|
|
919
|
-
people
|
|
920
|
-
</p>
|
|
921
|
-
</div>
|
|
922
|
-
<div className="mb-6 grid grid-cols-2 gap-4">
|
|
923
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
924
|
-
<div className="border-fm-divider-contrast bg-fm-surface-primary mb-3 flex h-12 w-12 items-center justify-center rounded-lg border">
|
|
925
|
-
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
926
|
-
</div>
|
|
927
|
-
<h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
|
|
928
|
-
Text Discussions
|
|
929
|
-
</h5>
|
|
930
|
-
<p className="text-fm-tertiary text-xs">
|
|
931
|
-
Share your thoughts in threaded conversations
|
|
932
|
-
with the community
|
|
933
|
-
</p>
|
|
934
|
-
</div>
|
|
935
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
936
|
-
<div className="bg-fm-secondary-500/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
937
|
-
<span className="text-xl">🧵</span>
|
|
938
|
-
</div>
|
|
939
|
-
<h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
|
|
940
|
-
Follow Threads
|
|
941
|
-
</h5>
|
|
942
|
-
<p className="text-fm-tertiary text-xs">
|
|
943
|
-
Stay updated on conversations that matter to
|
|
944
|
-
you
|
|
945
|
-
</p>
|
|
946
|
-
</div>
|
|
947
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
948
|
-
<div className="bg-fm-icon-info/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
949
|
-
<span className="text-xl">🔗</span>
|
|
950
|
-
</div>
|
|
951
|
-
<h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
|
|
952
|
-
Share Ideas
|
|
953
|
-
</h5>
|
|
954
|
-
<p className="text-fm-tertiary text-xs">
|
|
955
|
-
Connect your content across different
|
|
956
|
-
platforms
|
|
957
|
-
</p>
|
|
958
|
-
</div>
|
|
959
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
960
|
-
<div className="bg-fm-icon-positive/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
|
|
961
|
-
<span className="text-xl">👥</span>
|
|
962
|
-
</div>
|
|
963
|
-
<h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
|
|
964
|
-
Build Community
|
|
965
|
-
</h5>
|
|
966
|
-
<p className="text-fm-tertiary text-xs">
|
|
967
|
-
Create meaningful connections through
|
|
968
|
-
authentic conversations
|
|
969
|
-
</p>
|
|
970
|
-
</div>
|
|
971
|
-
</div>
|
|
972
|
-
<div className="text-center">
|
|
973
|
-
<a
|
|
974
|
-
href="#"
|
|
975
|
-
className="border-fm-divider-contrast bg-fm-surface-primary text-fm-icon-active hover:bg-fm-surface-secondary inline-flex items-center gap-2 rounded-lg border px-6 py-3 font-medium transition-colors"
|
|
976
|
-
>
|
|
977
|
-
<ThreadsIcon className="h-5 w-5" />
|
|
978
|
-
<span>Start a Thread</span>
|
|
979
|
-
</a>
|
|
980
|
-
</div>
|
|
981
|
-
</div>
|
|
982
|
-
</div>
|
|
983
|
-
</div>
|
|
984
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
985
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
986
|
-
{`// Text-based content hub with Threads integration
|
|
987
|
-
<div className="content-hub">
|
|
988
|
-
<div className="hub-header">
|
|
989
|
-
<h2>Join the Conversation</h2>
|
|
990
|
-
<p>Share your thoughts and connect with like-minded people</p>
|
|
991
|
-
</div>
|
|
992
|
-
<div className="feature-grid">
|
|
993
|
-
<div className="feature-card threads-feature">
|
|
994
|
-
<div className="feature-icon">
|
|
995
|
-
<ThreadsIcon className="h-6 w-6 text-white" />
|
|
996
|
-
</div>
|
|
997
|
-
<h3>Text Discussions</h3>
|
|
998
|
-
<p>Share your thoughts in threaded conversations with the community</p>
|
|
999
|
-
</div>
|
|
1000
|
-
<FollowThreadsFeature />
|
|
1001
|
-
<ShareIdeasFeature />
|
|
1002
|
-
<BuildCommunityFeature />
|
|
1003
|
-
</div>
|
|
1004
|
-
<div className="cta-section">
|
|
1005
|
-
<a
|
|
1006
|
-
href={threadsCreateUrl}
|
|
1007
|
-
className="cta-button threads-cta"
|
|
1008
|
-
>
|
|
1009
|
-
<ThreadsIcon className="h-5 w-5" />
|
|
1010
|
-
<span>Start a Thread</span>
|
|
1011
|
-
</a>
|
|
1012
|
-
</div>
|
|
1013
|
-
</div>`}
|
|
1014
|
-
</pre>
|
|
1015
|
-
</div>
|
|
1016
|
-
</div>
|
|
1017
|
-
</div>
|
|
1018
|
-
</div>
|
|
1019
|
-
</div>
|
|
1020
|
-
|
|
1021
|
-
{/* Accessibility */}
|
|
1022
|
-
<div className="!space-y-8">
|
|
1023
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
1024
|
-
Accessibility Features
|
|
1025
|
-
</h2>
|
|
1026
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
1027
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
1028
|
-
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
1029
|
-
✅ Built-in Features
|
|
1030
|
-
</h3>
|
|
1031
|
-
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
1032
|
-
<li className="text-fm-secondary!">
|
|
1033
|
-
Uses Radix UI AccessibleIcon wrapper
|
|
1034
|
-
</li>
|
|
1035
|
-
<li className="text-fm-secondary!">
|
|
1036
|
-
Provides screen reader label "Threads icon"
|
|
1037
|
-
</li>
|
|
1038
|
-
<li className="text-fm-secondary!">
|
|
1039
|
-
Supports keyboard navigation when interactive
|
|
1040
|
-
</li>
|
|
1041
|
-
<li className="text-fm-secondary!">
|
|
1042
|
-
High contrast design for visibility
|
|
1043
|
-
</li>
|
|
1044
|
-
<li className="text-fm-secondary!">
|
|
1045
|
-
Maintains aspect ratio across all sizes
|
|
1046
|
-
</li>
|
|
1047
|
-
</ul>
|
|
1048
|
-
</div>
|
|
1049
|
-
|
|
1050
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
1051
|
-
<h3 className="text-fm-secondary! text-lg font-semibold">
|
|
1052
|
-
💡 Best Practices
|
|
1053
|
-
</h3>
|
|
1054
|
-
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
1055
|
-
<li className="text-fm-secondary!">
|
|
1056
|
-
Always provide descriptive aria-labels for Threads
|
|
1057
|
-
actions
|
|
1058
|
-
</li>
|
|
1059
|
-
<li className="text-fm-secondary!">
|
|
1060
|
-
Use Threads' text-focused branding consistently
|
|
1061
|
-
</li>
|
|
1062
|
-
<li className="text-fm-secondary!">
|
|
1063
|
-
Ensure sufficient contrast with monochrome design
|
|
1064
|
-
</li>
|
|
1065
|
-
<li className="text-fm-secondary!">
|
|
1066
|
-
Include external link indicators for Threads URLs
|
|
1067
|
-
</li>
|
|
1068
|
-
<li className="text-fm-secondary!">
|
|
1069
|
-
Consider conversation context in related features
|
|
1070
|
-
</li>
|
|
1071
|
-
</ul>
|
|
1072
|
-
</div>
|
|
1073
|
-
</div>
|
|
1074
|
-
|
|
1075
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
1076
|
-
<h3 className="text-fm-icon-info! mb-4 text-lg font-semibold">
|
|
1077
|
-
Proper ARIA Implementation
|
|
1078
|
-
</h3>
|
|
1079
|
-
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
1080
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
1081
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
1082
|
-
{`// Threads profile link
|
|
1083
|
-
<a
|
|
1084
|
-
href="https://threads.net/@username"
|
|
1085
|
-
className="threads-link"
|
|
1086
|
-
aria-label="Follow @username on Threads"
|
|
1087
|
-
target="_blank"
|
|
1088
|
-
rel="noopener noreferrer"
|
|
1089
|
-
>
|
|
1090
|
-
<ThreadsIcon className="h-5 w-5 text-white" />
|
|
1091
|
-
</a>
|
|
1092
|
-
|
|
1093
|
-
// Discussion thread widget
|
|
1094
|
-
<div className="threads-widget">
|
|
1095
|
-
<h2 id="discussion-title">Latest Discussion</h2>
|
|
1096
|
-
<div
|
|
1097
|
-
className="thread-posts"
|
|
1098
|
-
role="feed"
|
|
1099
|
-
aria-labelledby="discussion-title"
|
|
1100
|
-
>
|
|
1101
|
-
{posts.map(post => (
|
|
1102
|
-
<article
|
|
1103
|
-
key={post.id}
|
|
1104
|
-
aria-label={post.author.name + " posted: " + post.text}
|
|
1105
|
-
>
|
|
1106
|
-
<PostContent post={post} />
|
|
1107
|
-
</article>
|
|
1108
|
-
))}
|
|
1109
|
-
</div>
|
|
1110
|
-
<a
|
|
1111
|
-
href={threadsUrl}
|
|
1112
|
-
aria-label="Continue reading this discussion on Threads"
|
|
1113
|
-
>
|
|
1114
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
1115
|
-
<span>Continue reading on Threads</span>
|
|
1116
|
-
</a>
|
|
1117
|
-
</div>
|
|
1118
|
-
|
|
1119
|
-
// Share to Threads button
|
|
1120
|
-
<button
|
|
1121
|
-
onClick={shareToThreads}
|
|
1122
|
-
className="share-btn"
|
|
1123
|
-
aria-label="Share this content to Threads"
|
|
1124
|
-
>
|
|
1125
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
1126
|
-
<span>Share on Threads</span>
|
|
1127
|
-
</button>
|
|
1128
|
-
|
|
1129
|
-
// Community profile with Threads emphasis
|
|
1130
|
-
<div className="community-profile">
|
|
1131
|
-
<div className="profile-header">
|
|
1132
|
-
<h1>{community.name}</h1>
|
|
1133
|
-
<div className="community-social">
|
|
1134
|
-
<a
|
|
1135
|
-
href={community.threads}
|
|
1136
|
-
className="primary-social-link"
|
|
1137
|
-
aria-label={"Join " + community.name + " community on Threads"}
|
|
1138
|
-
>
|
|
1139
|
-
<ThreadsIcon className="h-5 w-5" />
|
|
1140
|
-
<span className="sr-only">Primary discussion platform</span>
|
|
1141
|
-
</a>
|
|
1142
|
-
</div>
|
|
1143
|
-
</div>
|
|
1144
|
-
</div>
|
|
1145
|
-
|
|
1146
|
-
// Thread creation widget
|
|
1147
|
-
<div
|
|
1148
|
-
className="thread-composer"
|
|
1149
|
-
role="form"
|
|
1150
|
-
aria-label="Create a new thread"
|
|
1151
|
-
>
|
|
1152
|
-
<textarea
|
|
1153
|
-
aria-label="What's on your mind?"
|
|
1154
|
-
placeholder="Start a thread..."
|
|
1155
|
-
/>
|
|
1156
|
-
<button
|
|
1157
|
-
type="submit"
|
|
1158
|
-
aria-label="Post thread to Threads"
|
|
1159
|
-
>
|
|
1160
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
1161
|
-
<span>Post Thread</span>
|
|
1162
|
-
</button>
|
|
1163
|
-
</div>`}
|
|
1164
|
-
</pre>
|
|
1165
|
-
</div>
|
|
1166
|
-
<div className="!space-y-4">
|
|
1167
|
-
<p className="text-fm-secondary! text-sm">
|
|
1168
|
-
When using ThreadsIcon for conversation integration,
|
|
1169
|
-
always provide clear context about the discussion topic
|
|
1170
|
-
and ensure users understand the threading nature of the
|
|
1171
|
-
platform.
|
|
1172
|
-
</p>
|
|
1173
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary/10 rounded-lg border p-4">
|
|
1174
|
-
<div className="text-fm-secondary flex items-center gap-2 text-sm">
|
|
1175
|
-
<ThreadsIcon className="h-4 w-4" />
|
|
1176
|
-
<span>
|
|
1177
|
-
Consider conversation flow and threading context for
|
|
1178
|
-
screen readers
|
|
1179
|
-
</span>
|
|
1180
|
-
</div>
|
|
1181
|
-
</div>
|
|
1182
|
-
</div>
|
|
1183
|
-
</div>
|
|
1184
|
-
</div>
|
|
1185
|
-
</div>
|
|
1186
|
-
|
|
1187
|
-
{/* Related Icons */}
|
|
1188
|
-
<div className="!space-y-8">
|
|
1189
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
1190
|
-
Related Icons
|
|
1191
|
-
</h2>
|
|
1192
|
-
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
1193
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1194
|
-
<div className="bg-fm-surface-primary !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1195
|
-
<span className="text-fm-icon-active! !text-2xl">𝕏</span>
|
|
1196
|
-
</div>
|
|
1197
|
-
<div>
|
|
1198
|
-
<div className="text-fm-icon-active font-medium">
|
|
1199
|
-
TwitterXIcon
|
|
1200
|
-
</div>
|
|
1201
|
-
<div className="text-fm-tertiary text-xs">
|
|
1202
|
-
Social network
|
|
1203
|
-
</div>
|
|
1204
|
-
</div>
|
|
1205
|
-
</div>
|
|
1206
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1207
|
-
<div className="from-fm-secondary-500 via-fm-secondary-500 to-fm-icon-warning !mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-linear-to-br">
|
|
1208
|
-
<span className="text-fm-icon-active! !text-2xl">📷</span>
|
|
1209
|
-
</div>
|
|
1210
|
-
<div>
|
|
1211
|
-
<div className="text-fm-icon-active font-medium">
|
|
1212
|
-
InstagramIcon
|
|
1213
|
-
</div>
|
|
1214
|
-
<div className="text-fm-tertiary text-xs">
|
|
1215
|
-
Visual content
|
|
1216
|
-
</div>
|
|
1217
|
-
</div>
|
|
1218
|
-
</div>
|
|
1219
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1220
|
-
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1221
|
-
<span className="text-fm-icon-active! !text-2xl">📘</span>
|
|
1222
|
-
</div>
|
|
1223
|
-
<div>
|
|
1224
|
-
<div className="text-fm-icon-active font-medium">
|
|
1225
|
-
FacebookIcon
|
|
1226
|
-
</div>
|
|
1227
|
-
<div className="text-fm-tertiary text-xs">
|
|
1228
|
-
Social platform
|
|
1229
|
-
</div>
|
|
1230
|
-
</div>
|
|
1231
|
-
</div>
|
|
1232
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
1233
|
-
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
1234
|
-
<span className="text-fm-icon-active! !text-2xl">💼</span>
|
|
1235
|
-
</div>
|
|
1236
|
-
<div>
|
|
1237
|
-
<div className="text-fm-icon-active font-medium">
|
|
1238
|
-
LinkedInIcon
|
|
1239
|
-
</div>
|
|
1240
|
-
<div className="text-fm-tertiary text-xs">
|
|
1241
|
-
Professional network
|
|
1242
|
-
</div>
|
|
1243
|
-
</div>
|
|
1244
|
-
</div>
|
|
1245
|
-
</div>
|
|
1246
|
-
</div>
|
|
1247
|
-
</div>
|
|
1248
|
-
|
|
1249
|
-
{/* Footer */}
|
|
1250
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
1251
|
-
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
1252
|
-
<div className="!space-y-4 text-center">
|
|
1253
|
-
<p className="text-fm-tertiary!">
|
|
1254
|
-
ThreadsIcon is part of the Aural UI icon library, built with
|
|
1255
|
-
accessibility and conversation platform integration best
|
|
1256
|
-
practices in mind.
|
|
1257
|
-
</p>
|
|
1258
|
-
<p className="text-fm-placeholder! text-sm">
|
|
1259
|
-
All icons use Radix UI's AccessibleIcon for screen reader
|
|
1260
|
-
compatibility and follow WCAG guidelines for social platform
|
|
1261
|
-
recognition and conversation accessibility.
|
|
1262
|
-
</p>
|
|
1263
|
-
</div>
|
|
1264
|
-
</div>
|
|
1265
|
-
</div>
|
|
1266
|
-
</div>
|
|
1267
|
-
</>
|
|
50
|
+
)
|
|
51
|
+
}`,
|
|
52
|
+
livePreview: (
|
|
53
|
+
<a href="#" target="_blank" rel="noreferrer">
|
|
54
|
+
<ThreadsIcon className="text-fm-icon-active h-6 w-6" />
|
|
55
|
+
</a>
|
|
56
|
+
),
|
|
57
|
+
}}
|
|
58
|
+
relatedIcons={[
|
|
59
|
+
{
|
|
60
|
+
name: "InstagramIcon",
|
|
61
|
+
description: "Instagram brand mark",
|
|
62
|
+
icon: InstagramIcon,
|
|
63
|
+
accentToken: "info",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "LinkedInIcon",
|
|
67
|
+
description: "LinkedIn brand mark",
|
|
68
|
+
icon: LinkedInIcon,
|
|
69
|
+
accentToken: "positive",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "TwitterXIcon",
|
|
73
|
+
description: "X (Twitter) brand mark",
|
|
74
|
+
icon: TwitterXIcon,
|
|
75
|
+
accentToken: "warning",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "YoutubeIcon",
|
|
79
|
+
description: "YouTube brand mark",
|
|
80
|
+
icon: YoutubeIcon,
|
|
81
|
+
accentToken: "negative",
|
|
82
|
+
},
|
|
83
|
+
]}
|
|
84
|
+
/>
|
|
1268
85
|
),
|
|
1269
86
|
},
|
|
1270
87
|
},
|
|
1271
88
|
tags: ["autodocs"],
|
|
1272
89
|
argTypes: {
|
|
1273
|
-
width: {
|
|
1274
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
1275
|
-
description: "Width of the icon (maintains aspect ratio)",
|
|
1276
|
-
},
|
|
1277
|
-
withAccessibility: {
|
|
1278
|
-
control: "boolean",
|
|
1279
|
-
description: "Whether to wrap the icon with accessibility features",
|
|
1280
|
-
},
|
|
1281
|
-
height: {
|
|
1282
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
1283
|
-
description: "Height of the icon (maintains aspect ratio)",
|
|
1284
|
-
},
|
|
1285
|
-
fill: {
|
|
1286
|
-
control: "color",
|
|
1287
|
-
description: "Fill color of the Threads @ symbol",
|
|
1288
|
-
},
|
|
1289
90
|
className: {
|
|
1290
91
|
control: "text",
|
|
1291
|
-
description: "CSS classes
|
|
92
|
+
description: "CSS classes including color token",
|
|
1292
93
|
},
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
description: "
|
|
94
|
+
withAccessibility: {
|
|
95
|
+
control: "boolean",
|
|
96
|
+
description: "Wrap with accessibility label",
|
|
1296
97
|
},
|
|
1297
98
|
},
|
|
1298
99
|
}
|
|
@@ -1300,248 +101,124 @@ function SocialShare() {
|
|
|
1300
101
|
export default meta
|
|
1301
102
|
type Story = StoryObj<typeof ThreadsIcon>
|
|
1302
103
|
|
|
1303
|
-
// Story parameters for consistent dark theme
|
|
1304
|
-
const storyParameters = {
|
|
1305
|
-
backgrounds: {
|
|
1306
|
-
default: "dark",
|
|
1307
|
-
values: [
|
|
1308
|
-
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
1309
|
-
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
1310
|
-
],
|
|
1311
|
-
},
|
|
1312
|
-
}
|
|
1313
|
-
|
|
1314
104
|
export const Default: Story = {
|
|
1315
105
|
args: {
|
|
1316
|
-
className: "h-
|
|
106
|
+
className: "h-6 w-6 text-fm-icon-active",
|
|
1317
107
|
withAccessibility: true,
|
|
1318
108
|
},
|
|
1319
|
-
parameters: storyParameters,
|
|
1320
109
|
render: (args) => (
|
|
1321
|
-
<
|
|
110
|
+
<IconDefaultCanvas>
|
|
1322
111
|
<ThreadsIcon {...args} />
|
|
1323
|
-
</
|
|
112
|
+
</IconDefaultCanvas>
|
|
1324
113
|
),
|
|
1325
114
|
}
|
|
1326
115
|
|
|
1327
116
|
export const SizeVariations: Story = {
|
|
1328
|
-
|
|
1329
|
-
...storyParameters,
|
|
1330
|
-
docs: {
|
|
1331
|
-
description: {
|
|
1332
|
-
story:
|
|
1333
|
-
"ThreadsIcon in different sizes, from small inline social links to large conversation displays.",
|
|
1334
|
-
},
|
|
1335
|
-
},
|
|
1336
|
-
},
|
|
1337
|
-
render: () => (
|
|
1338
|
-
<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">
|
|
1339
|
-
<div className="text-center">
|
|
1340
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-3 w-3" />
|
|
1341
|
-
<span className="text-fm-tertiary text-xs">12px</span>
|
|
1342
|
-
</div>
|
|
1343
|
-
<div className="text-center">
|
|
1344
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-4 w-4" />
|
|
1345
|
-
<span className="text-fm-tertiary text-xs">16px</span>
|
|
1346
|
-
</div>
|
|
1347
|
-
<div className="text-center">
|
|
1348
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-5 w-5" />
|
|
1349
|
-
<span className="text-fm-tertiary text-xs">20px</span>
|
|
1350
|
-
</div>
|
|
1351
|
-
<div className="text-center">
|
|
1352
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-6 w-6" />
|
|
1353
|
-
<span className="text-fm-tertiary text-xs">24px</span>
|
|
1354
|
-
</div>
|
|
1355
|
-
<div className="text-center">
|
|
1356
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-8 w-8" />
|
|
1357
|
-
<span className="text-fm-tertiary text-xs">32px</span>
|
|
1358
|
-
</div>
|
|
1359
|
-
<div className="text-center">
|
|
1360
|
-
<ThreadsIcon className="text-fm-icon-active !mx-auto mb-2 h-12 w-12" />
|
|
1361
|
-
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1362
|
-
</div>
|
|
1363
|
-
</div>
|
|
1364
|
-
),
|
|
117
|
+
render: () => <IconSizeVariations icon={ThreadsIcon} />,
|
|
1365
118
|
}
|
|
1366
119
|
|
|
1367
120
|
export const BrandColors: Story = {
|
|
1368
|
-
parameters: {
|
|
1369
|
-
...storyParameters,
|
|
1370
|
-
docs: {
|
|
1371
|
-
description: {
|
|
1372
|
-
story:
|
|
1373
|
-
"ThreadsIcon in different brand-compliant colors for various design contexts.",
|
|
1374
|
-
},
|
|
1375
|
-
},
|
|
1376
|
-
},
|
|
1377
121
|
render: () => (
|
|
1378
|
-
<
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
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
|
-
</div>
|
|
1410
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
1411
|
-
Accent Color
|
|
1412
|
-
</div>
|
|
1413
|
-
<div className="text-fm-tertiary text-xs">Themed integration</div>
|
|
1414
|
-
</div>
|
|
1415
|
-
</div>
|
|
122
|
+
<IconBrandColors
|
|
123
|
+
icon={ThreadsIcon}
|
|
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
|
+
/>
|
|
1416
153
|
),
|
|
1417
154
|
}
|
|
1418
155
|
|
|
1419
156
|
export const UsageExamples: Story = {
|
|
1420
|
-
parameters: {
|
|
1421
|
-
...storyParameters,
|
|
1422
|
-
docs: {
|
|
1423
|
-
description: {
|
|
1424
|
-
story:
|
|
1425
|
-
"Real-world usage examples showing ThreadsIcon in different conversation and social media contexts.",
|
|
1426
|
-
},
|
|
1427
|
-
},
|
|
1428
|
-
},
|
|
1429
157
|
render: () => (
|
|
1430
|
-
<
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
<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">
|
|
1445
|
-
<span className="text-fm-icon-active text-sm">𝕏</span>
|
|
1446
|
-
<span className="text-fm-icon-active text-sm">Share on X</span>
|
|
1447
|
-
</button>
|
|
1448
|
-
</div>
|
|
1449
|
-
</div>
|
|
1450
|
-
</div>
|
|
1451
|
-
|
|
1452
|
-
{/* Discussion Widget */}
|
|
1453
|
-
<div className="!space-y-2">
|
|
1454
|
-
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1455
|
-
Discussion Thread Widget
|
|
1456
|
-
</h3>
|
|
1457
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1458
|
-
<div className="mb-3 flex items-center justify-between">
|
|
1459
|
-
<div className="flex items-center gap-2">
|
|
1460
|
-
<ThreadsIcon className="text-fm-icon-active h-4 w-4" />
|
|
1461
|
-
<span className="text-fm-icon-active text-sm font-medium">
|
|
1462
|
-
Latest Discussion
|
|
1463
|
-
</span>
|
|
1464
|
-
</div>
|
|
1465
|
-
<a
|
|
1466
|
-
href="#"
|
|
1467
|
-
className="text-fm-tertiary hover:text-fm-icon-active text-xs transition-colors"
|
|
1468
|
-
>
|
|
1469
|
-
View Thread
|
|
1470
|
-
</a>
|
|
1471
|
-
</div>
|
|
1472
|
-
<div className="space-y-2">
|
|
1473
|
-
<div className="flex gap-2">
|
|
1474
|
-
<div className="bg-fm-surface-secondary flex h-6 w-6 items-center justify-center rounded-full">
|
|
1475
|
-
<span className="text-xs">👤</span>
|
|
1476
|
-
</div>
|
|
1477
|
-
<div className="flex-1">
|
|
1478
|
-
<div className="text-fm-tertiary text-xs">Alex Chen • 2h</div>
|
|
1479
|
-
<div className="text-fm-icon-active/80 text-sm">
|
|
1480
|
-
Really excited about the new updates! 🎨
|
|
1481
|
-
</div>
|
|
1482
|
-
</div>
|
|
1483
|
-
</div>
|
|
1484
|
-
</div>
|
|
1485
|
-
</div>
|
|
1486
|
-
</div>
|
|
158
|
+
<IconUsageCanvas>
|
|
159
|
+
<IconUsageSection title="Follow on Threads">
|
|
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
|
+
<ThreadsIcon className="h-4 w-4 text-white" />
|
|
167
|
+
<span className="font-fm-text text-sm font-medium text-white">
|
|
168
|
+
Follow on Threads
|
|
169
|
+
</span>
|
|
170
|
+
</a>
|
|
171
|
+
</IconUsageSection>
|
|
1487
172
|
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
</h3>
|
|
1493
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1494
|
-
<div className="flex items-center gap-3">
|
|
1495
|
-
<span className="text-fm-tertiary text-sm">
|
|
1496
|
-
Follow the conversation:
|
|
1497
|
-
</span>
|
|
1498
|
-
<div className="flex gap-2">
|
|
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
|
+
{[ThreadsIcon, TwitterXIcon, InstagramIcon, LinkedInIcon].map(
|
|
176
|
+
(Icon, i) => (
|
|
1499
177
|
<a
|
|
178
|
+
key={i}
|
|
1500
179
|
href="#"
|
|
1501
|
-
className="border-fm-divider-
|
|
180
|
+
className="border-fm-divider-secondary flex h-10 w-10 items-center justify-center rounded-xl border"
|
|
181
|
+
target="_blank"
|
|
182
|
+
rel="noreferrer"
|
|
1502
183
|
>
|
|
1503
|
-
<
|
|
184
|
+
<Icon className="text-fm-icon-active h-5 w-5" />
|
|
1504
185
|
</a>
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
|
|
1508
|
-
>
|
|
1509
|
-
<span className="text-fm-icon-active text-sm">𝕏</span>
|
|
1510
|
-
</a>
|
|
1511
|
-
<a
|
|
1512
|
-
href="#"
|
|
1513
|
-
className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
|
|
1514
|
-
>
|
|
1515
|
-
<span className="text-fm-icon-active text-sm">📘</span>
|
|
1516
|
-
</a>
|
|
1517
|
-
</div>
|
|
1518
|
-
</div>
|
|
186
|
+
)
|
|
187
|
+
)}
|
|
1519
188
|
</div>
|
|
1520
|
-
</
|
|
1521
|
-
|
|
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 Threads", icon: ThreadsIcon },
|
|
195
|
+
{ label: "Share on X", icon: TwitterXIcon },
|
|
196
|
+
{ label: "Share on Instagram", icon: InstagramIcon },
|
|
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>
|
|
1522
211
|
),
|
|
1523
212
|
}
|
|
1524
213
|
|
|
1525
214
|
export const Playground: Story = {
|
|
1526
|
-
parameters: {
|
|
1527
|
-
...storyParameters,
|
|
1528
|
-
docs: {
|
|
1529
|
-
description: {
|
|
1530
|
-
story:
|
|
1531
|
-
"Interactive playground to experiment with different ThreadsIcon configurations.",
|
|
1532
|
-
},
|
|
1533
|
-
},
|
|
1534
|
-
},
|
|
1535
215
|
args: {
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
className: "text-fm-icon-active",
|
|
216
|
+
className: "h-8 w-8 text-fm-icon-active",
|
|
217
|
+
withAccessibility: true,
|
|
1539
218
|
},
|
|
1540
219
|
render: (args) => (
|
|
1541
|
-
<
|
|
1542
|
-
<
|
|
1543
|
-
|
|
1544
|
-
</div>
|
|
1545
|
-
</div>
|
|
220
|
+
<IconPlaygroundCanvas>
|
|
221
|
+
<ThreadsIcon {...args} />
|
|
222
|
+
</IconPlaygroundCanvas>
|
|
1546
223
|
),
|
|
1547
224
|
}
|