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.
Files changed (175) hide show
  1. package/README.md +8 -1
  2. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1228
  3. package/dist/components/avatar/Avatar.stories.tsx +219 -235
  4. package/dist/components/badge/Badge.stories.tsx +379 -116
  5. package/dist/components/banner/Banner.stories.tsx +445 -391
  6. package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
  7. package/dist/components/button/Button.stories.tsx +585 -230
  8. package/dist/components/card/Card.stories.tsx +619 -301
  9. package/dist/components/char-count/CharCount.stories.tsx +350 -248
  10. package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
  11. package/dist/components/chip/Chip.stories.tsx +362 -168
  12. package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -636
  13. package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
  14. package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
  15. package/dist/components/command/Command.stories.tsx +530 -867
  16. package/dist/components/dialog/Dialog.stories.tsx +501 -950
  17. package/dist/components/divider/Divider.stories.tsx +264 -527
  18. package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
  19. package/dist/components/drawer/Drawer.stories.tsx +659 -1023
  20. package/dist/components/dropdown/Dropdown.stories.tsx +643 -1028
  21. package/dist/components/form/Form.stories.tsx +560 -274
  22. package/dist/components/helper-text/HelperText.stories.tsx +199 -200
  23. package/dist/components/hover-card/HoverCard.stories.tsx +318 -1254
  24. package/dist/components/icon-button/IconButton.stories.tsx +837 -194
  25. package/dist/components/if-else/if-else.stories.tsx +370 -83
  26. package/dist/components/input/Input.stories.tsx +436 -368
  27. package/dist/components/label/Label.stories.tsx +156 -154
  28. package/dist/components/list/List.stories.tsx +484 -835
  29. package/dist/components/marquee/Marquee.stories.tsx +356 -712
  30. package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -422
  31. package/dist/components/overlay/Overlay.stories.tsx +452 -824
  32. package/dist/components/pagination/Pagination.stories.tsx +721 -210
  33. package/dist/components/popover/Popover.stories.tsx +481 -896
  34. package/dist/components/radio/Radio.stories.tsx +432 -124
  35. package/dist/components/resizable/Resizable.stories.tsx +495 -799
  36. package/dist/components/scroll-area/ScrollArea.stories.tsx +383 -1059
  37. package/dist/components/search/Search.stories.tsx +312 -595
  38. package/dist/components/select/Select.stories.tsx +684 -789
  39. package/dist/components/sheet/Sheet.stories.tsx +671 -950
  40. package/dist/components/skelton/Skelton.stories.tsx +230 -764
  41. package/dist/components/slider/Slider.stories.tsx +383 -760
  42. package/dist/components/stepper/Stepper.stories.tsx +371 -514
  43. package/dist/components/switch/Switch.stories.tsx +461 -208
  44. package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
  45. package/dist/components/table/Table.stories.tsx +770 -916
  46. package/dist/components/tabs/Tabs.stories.tsx +458 -1455
  47. package/dist/components/tag/Tag.stories.tsx +714 -542
  48. package/dist/components/textarea/TextArea.stories.tsx +621 -562
  49. package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -154
  50. package/dist/components/toast/Toast.stories.tsx +452 -1339
  51. package/dist/components/toggle/Toggle.stories.tsx +488 -931
  52. package/dist/components/tooltip/Tooltip.stories.tsx +344 -1388
  53. package/dist/components/typography/Typography.stories.tsx +406 -89
  54. package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
  55. package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
  56. package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
  57. package/dist/icons/Icons.stories.tsx +0 -12
  58. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +223 -1060
  59. package/dist/icons/alert-icon/AlertIcon.stories.tsx +106 -968
  60. package/dist/icons/all-icons.tsx +37 -16
  61. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +137 -1010
  62. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +145 -935
  63. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +132 -1046
  64. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +134 -986
  65. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +135 -1028
  66. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +133 -971
  67. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +145 -1123
  68. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +143 -1252
  69. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +123 -632
  70. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +141 -1223
  71. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +164 -1018
  72. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +121 -1236
  73. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +121 -1213
  74. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +116 -893
  75. package/dist/icons/camera-icon/CameraIcon.stories.tsx +109 -1254
  76. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +114 -975
  77. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +157 -994
  78. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +160 -992
  79. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +140 -970
  80. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +126 -993
  81. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +144 -987
  82. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +141 -1007
  83. package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +147 -1187
  84. package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +110 -476
  85. package/dist/icons/coin-icon/CoinIcon.stories.tsx +120 -1364
  86. package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +113 -1360
  87. package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +111 -942
  88. package/dist/icons/command-icon/CommandIcon.stories.tsx +124 -1087
  89. package/dist/icons/copy-icon/CopyIcon.stories.tsx +119 -996
  90. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +144 -1046
  91. package/dist/icons/cross-icon/CrossIcon.stories.tsx +136 -999
  92. package/dist/icons/download-icon/DownloadIcon.stories.tsx +123 -857
  93. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +121 -1080
  94. package/dist/icons/email-icon/EmailIcon.stories.tsx +112 -979
  95. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +109 -1146
  96. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +141 -1068
  97. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +140 -1081
  98. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +124 -1050
  99. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +123 -1091
  100. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +122 -633
  101. package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +116 -1087
  102. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +166 -1020
  103. package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +112 -1182
  104. package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +112 -1155
  105. package/dist/icons/globe-icon/GlobeIcon.stories.tsx +127 -325
  106. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +142 -985
  107. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +116 -1217
  108. package/dist/icons/head-icon/HeadIcon.stories.tsx +108 -953
  109. package/dist/icons/heart-icon/HeartIcon.stories.tsx +117 -1060
  110. package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +116 -716
  111. package/dist/icons/image-icon/ImageIcon.stories.tsx +102 -1164
  112. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +108 -1233
  113. package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +133 -1289
  114. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +155 -1012
  115. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +158 -1438
  116. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +121 -1011
  117. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +116 -981
  118. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +116 -979
  119. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +105 -1252
  120. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +151 -1554
  121. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +107 -1227
  122. package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +116 -707
  123. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +119 -1226
  124. package/dist/icons/message-icon/MessageIcon.stories.tsx +111 -557
  125. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +112 -1198
  126. package/dist/icons/moon-icon/MoonIcon.stories.tsx +117 -557
  127. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +106 -1235
  128. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +112 -1185
  129. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +116 -1012
  130. package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +108 -1137
  131. package/dist/icons/notes-icon/NotesIcon.stories.tsx +116 -1138
  132. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +106 -1146
  133. package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +119 -719
  134. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +110 -999
  135. package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +109 -912
  136. package/dist/icons/pause-icon/PauseIcon.stories.tsx +110 -1041
  137. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +112 -1109
  138. package/dist/icons/phone-icon/PhoneIcon.stories.tsx +112 -1023
  139. package/dist/icons/plus-icon/PlusIcon.stories.tsx +103 -1132
  140. package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +104 -870
  141. package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +99 -476
  142. package/dist/icons/search-icon/SearchIcon.stories.tsx +108 -1161
  143. package/dist/icons/setting-icon/SettingIcon.stories.tsx +104 -1009
  144. package/dist/icons/share-icon/ShareIcon.stories.tsx +117 -1064
  145. package/dist/icons/shield-icon/ShieldIcon.stories.tsx +114 -974
  146. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +134 -1160
  147. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +169 -1017
  148. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +161 -1016
  149. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +102 -1001
  150. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +155 -593
  151. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +155 -608
  152. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +142 -712
  153. package/dist/icons/star-icon/StarIcon.stories.tsx +120 -946
  154. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +109 -1013
  155. package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +113 -891
  156. package/dist/icons/sun-icon/SunIcon.stories.tsx +117 -864
  157. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +113 -989
  158. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +120 -1027
  159. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +153 -1476
  160. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +143 -1187
  161. package/dist/icons/tick-icon/TickIcon.stories.tsx +142 -1322
  162. package/dist/icons/trash-icon/TrashIcon.stories.tsx +105 -970
  163. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +154 -1457
  164. package/dist/icons/upload-icon/UploadIcon.stories.tsx +112 -930
  165. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +115 -1019
  166. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +122 -1092
  167. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +120 -1401
  168. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +107 -1212
  169. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +109 -1122
  170. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +112 -1124
  171. package/dist/icons/warning-icon/WarningIcon.stories.tsx +119 -1083
  172. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +158 -983
  173. package/dist/index.cjs +90 -90
  174. package/dist/index.js +90 -90
  175. 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
- {/* Override default docs styling */}
23
- <style>
24
- {`
25
- .sbdocs-wrapper {
26
- padding: 0 ;
27
- max-width: none ;
28
- background: transparent ;
29
- }
30
- .sbdocs-content {
31
- max-width: none ;
32
- padding: 0 ;
33
- margin: 0 ;
34
- background: transparent ;
35
- }
36
- .docs-story {
37
- background: transparent ;
38
- }
39
- .sbdocs {
40
- background: transparent ;
41
- }
42
- body {
43
- background: 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
- <button
155
- onClick={shareToThreads}
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
- </div>
768
- </div>`}
769
- </pre>
770
- </div>
771
- </div>
772
- </div>
773
-
774
- {/* Community Profile */}
775
- <div className="!space-y-4">
776
- <h3 className="text-fm-secondary! text-lg font-semibold">
777
- Community Profile
778
- </h3>
779
- <div className="!space-y-4">
780
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
781
- <div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
782
- <div className="from-fm-surface-secondary to-fm-surface-primary relative h-32 bg-linear-to-r">
783
- <div className="absolute -bottom-8 left-6">
784
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-16 w-16 items-center justify-center rounded-full border-4">
785
- <span className="text-2xl">💬</span>
786
- </div>
787
- </div>
788
- </div>
789
- <div className="p-6 pt-12">
790
- <div className="flex items-start justify-between">
791
- <div>
792
- <h4 className="text-fm-icon-active text-lg font-semibold">
793
- Design Community
794
- </h4>
795
- <p className="text-fm-tertiary text-sm">
796
- @designcommunity
797
- </p>
798
- <p className="text-fm-secondary mt-2 text-sm">
799
- A space for designers to share ideas, get
800
- feedback, and discuss the latest trends in
801
- UI/UX 🎨
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 for styling and sizing",
92
+ description: "CSS classes including color token",
1292
93
  },
1293
- onClick: {
1294
- action: "clicked",
1295
- description: "Click handler for social interactions",
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-8 w-8 text-fm-icon-active",
106
+ className: "h-6 w-6 text-fm-icon-active",
1317
107
  withAccessibility: true,
1318
108
  },
1319
- parameters: storyParameters,
1320
109
  render: (args) => (
1321
- <div className="from-fm-surface-primary to-fm-surface-secondary flex h-32 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
110
+ <IconDefaultCanvas>
1322
111
  <ThreadsIcon {...args} />
1323
- </div>
112
+ </IconDefaultCanvas>
1324
113
  ),
1325
114
  }
1326
115
 
1327
116
  export const SizeVariations: Story = {
1328
- parameters: {
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
- <div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-linear-to-br p-8 md:grid-cols-4">
1379
- <div className="text-center">
1380
- <div className="bg-fm-surface-primary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
1381
- <ThreadsIcon className="text-fm-icon-active h-8 w-8" />
1382
- </div>
1383
- <div className="text-fm-icon-active text-sm font-medium">
1384
- Official Black
1385
- </div>
1386
- <div className="text-fm-tertiary text-xs">Primary brand</div>
1387
- </div>
1388
- <div className="text-center">
1389
- <div className="border-fm-divider-primary bg-fm-surface-contrast !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
1390
- <ThreadsIcon className="text-fm-icon-active h-8 w-8" />
1391
- </div>
1392
- <div className="text-fm-icon-active text-sm font-medium">
1393
- Inverted White
1394
- </div>
1395
- <div className="text-fm-tertiary text-xs">Light backgrounds</div>
1396
- </div>
1397
- <div className="text-center">
1398
- <div className="bg-fm-surface-tertiary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
1399
- <ThreadsIcon className="text-fm-icon-active h-8 w-8" />
1400
- </div>
1401
- <div className="text-fm-icon-active text-sm font-medium">
1402
- Neutral Gray
1403
- </div>
1404
- <div className="text-fm-tertiary text-xs">Subtle integration</div>
1405
- </div>
1406
- <div className="text-center">
1407
- <div className="bg-fm-icon-info !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
1408
- <ThreadsIcon className="text-fm-icon-active h-8 w-8" />
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
- <div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
1431
- {/* Share Button */}
1432
- <div className="!space-y-2">
1433
- <h3 className="text-fm-icon-active text-sm font-medium">
1434
- Social Share Button
1435
- </h3>
1436
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1437
- <div className="flex gap-3">
1438
- <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">
1439
- <ThreadsIcon className="text-fm-icon-active h-4 w-4" />
1440
- <span className="text-fm-icon-active text-sm">
1441
- Share on Threads
1442
- </span>
1443
- </button>
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
- {/* Social Links */}
1489
- <div className="!space-y-2">
1490
- <h3 className="text-fm-icon-active text-sm font-medium">
1491
- Social Media Links
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-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
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
- <ThreadsIcon className="text-fm-icon-active h-4 w-4" />
184
+ <Icon className="text-fm-icon-active h-5 w-5" />
1504
185
  </a>
1505
- <a
1506
- href="#"
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
- </div>
1521
- </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 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
- width: 24,
1537
- height: 24,
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
- <div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
1542
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
1543
- <ThreadsIcon {...args} />
1544
- </div>
1545
- </div>
220
+ <IconPlaygroundCanvas>
221
+ <ThreadsIcon {...args} />
222
+ </IconPlaygroundCanvas>
1546
223
  ),
1547
224
  }