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 { GoogleLogoIcon } from "src/ui/icons/google-logo-icon"
5
+ import { InstagramIcon } from "src/ui/icons/instagram-icon"
6
+ import { ThreadsIcon } from "src/ui/icons/threads-icon"
7
+ import { TwitterXIcon } from "src/ui/icons/twitter-x-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 { LinkedInIcon } from "."
5
19
 
6
20
  const meta: Meta<typeof LinkedInIcon> = {
@@ -18,1370 +32,68 @@ const meta: Meta<typeof LinkedInIcon> = {
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-icon-info/5 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-icon-info/10 to-fm-icon-info/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-icon-info/30 from-fm-icon-info/20 to-fm-icon-info/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
90
- <LinkedInIcon className="text-fm-icon-active h-12 w-12" />
91
- </div>
92
- <h1 className="text-fm-icon-active! text-5xl font-bold">
93
- LinkedInIcon
94
- </h1>
95
- <p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
96
- The official LinkedIn brand icon featuring the distinctive
97
- square design with profile silhouette. Essential for
98
- professional networking, career development, business
99
- connections, recruitment platforms, and any interface where
100
- LinkedIn platform integration and professional identity are
101
- emphasized.
102
- </p>
103
-
104
- {/* Stats */}
105
- <div className="flex items-center justify-center gap-8 pt-8">
106
- <div className="text-center">
107
- <div className="text-fm-icon-info text-3xl font-bold">
108
- Professional Network
109
- </div>
110
- <div className="text-fm-tertiary text-sm">
111
- Career development
112
- </div>
113
- </div>
114
- <div className="bg-fm-divider-primary h-8 w-px" />
115
- <div className="text-center">
116
- <div className="text-fm-icon-info text-3xl font-bold">
117
- Business Platform
118
- </div>
119
- <div className="text-fm-tertiary text-sm">
120
- Industry connections
121
- </div>
122
- </div>
123
- <div className="bg-fm-divider-primary h-8 w-px" />
124
- <div className="text-center">
125
- <div className="text-fm-icon-info text-3xl font-bold">
126
- Recruitment Hub
127
- </div>
128
- <div className="text-fm-tertiary text-sm">
129
- Talent acquisition
130
- </div>
131
- </div>
132
- </div>
133
- </div>
134
- </div>
135
- </div>
136
-
137
- {/* Content */}
138
- <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
139
- {/* Quick Usage */}
140
- <div className="!space-y-8">
141
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
142
- Quick Start
143
- </h2>
144
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
145
- <div className="!space-y-4">
146
- <h3 className="text-fm-icon-info! text-xl font-semibold">
147
- Basic Usage
148
- </h3>
149
- <div className="bg-fm-surface-secondary rounded-lg p-4">
150
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
151
- {`import { LinkedInIcon } from "@icons/linked-in-icon"
152
-
153
- function ProfessionalProfile() {
35
+ <AuralIconDocsPage
36
+ accentToken="info"
37
+ features={[
38
+ { title: "Brand Mark", description: "LinkedIn identity icon" },
39
+ { title: "Professional", description: "Career and network links" },
40
+ { title: "Accessible", description: "ARIA-ready by default" },
41
+ ]}
42
+ quickStart={{
43
+ codeExample: `import { LinkedInIcon } from "src/ui/icons/linked-in-icon"
44
+
45
+ function LinkedInLink() {
154
46
  return (
155
- <a
156
- href="https://linkedin.com/in/username"
157
- className="flex items-center gap-2 p-2 rounded-lg
158
- bg-blue-600 hover:bg-blue-700
159
- transition-colors"
160
- aria-label="Connect on LinkedIn"
161
- >
162
- <LinkedInIcon className="h-5 w-5 text-white" />
163
- <span className="text-white">Connect on LinkedIn</span>
47
+ <a href="https://linkedin.com/in/profile" target="_blank">
48
+ <LinkedInIcon className="h-5 w-5 text-fm-icon-active" />
164
49
  </a>
165
50
  )
166
- }`}
167
- </pre>
168
- </div>
169
- </div>
170
-
171
- <div className="!space-y-4">
172
- <h3 className="text-fm-icon-info! text-xl font-semibold">
173
- Live Preview
174
- </h3>
175
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
176
- <a
177
- href="#"
178
- className="bg-fm-icon-info hover:bg-fm-icon-info flex items-center gap-2 rounded-lg px-4 py-2 transition-colors"
179
- >
180
- <LinkedInIcon className="text-fm-icon-active h-5 w-5" />
181
- <span className="text-fm-icon-active font-medium">
182
- Connect on LinkedIn
183
- </span>
184
- </a>
185
- </div>
186
- </div>
187
- </div>
188
- </div>
189
-
190
- {/* Props Documentation */}
191
- <div className="!space-y-8">
192
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
193
- Props & Configuration
194
- </h2>
195
-
196
- <div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
197
- <div className="bg-fm-surface-secondary p-4">
198
- <h3 className="text-fm-icon-active! text-xl font-semibold">
199
- Props
200
- </h3>
201
- </div>
202
- <table className="!my-0 w-full">
203
- <thead className="bg-fm-surface-secondary">
204
- <tr className="border-fm-divider-secondary border-b">
205
- <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
206
- Prop
207
- </th>
208
- <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
209
- Type
210
- </th>
211
- <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
212
- Default
213
- </th>
214
- <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
215
- Description
216
- </th>
217
- </tr>
218
- </thead>
219
- <tbody>
220
- {" "}
221
- <tr className="bg-fm-surface-secondary!">
222
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
223
- withAccessibility
224
- </td>
225
- <td className="text-fm-secondary! px-6 py-4 text-sm">
226
- boolean
227
- </td>
228
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
229
- true
230
- </td>
231
- <td className="text-fm-secondary! px-6 py-4 text-sm">
232
- Whether to wrap the icon with accessibility feature
233
- </td>
234
- </tr>
235
- <tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
236
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
237
- height
238
- </td>
239
- <td className="text-fm-secondary! px-6 py-4 text-sm">
240
- number | string
241
- </td>
242
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
243
- auto
244
- </td>
245
- <td className="text-fm-secondary! px-6 py-4 text-sm">
246
- Height of the icon (maintains aspect ratio)
247
- </td>
248
- </tr>
249
- <tr className="border-fm-divider-tertiary border-b">
250
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
251
- fill
252
- </td>
253
- <td className="text-fm-secondary! px-6 py-4 text-sm">
254
- string
255
- </td>
256
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
257
- currentColor
258
- </td>
259
- <td className="text-fm-secondary! px-6 py-4 text-sm">
260
- Fill color of the LinkedIn square icon
261
- </td>
262
- </tr>
263
- <tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
264
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
265
- className
266
- </td>
267
- <td className="text-fm-secondary! px-6 py-4 text-sm">
268
- string
269
- </td>
270
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
271
- -
272
- </td>
273
- <td className="text-fm-secondary! px-6 py-4 text-sm">
274
- CSS classes for styling and sizing
275
- </td>
276
- </tr>
277
- <tr className="border-fm-divider-tertiary border-b">
278
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
279
- onClick
280
- </td>
281
- <td className="text-fm-secondary! px-6 py-4 text-sm">
282
- function
283
- </td>
284
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
285
- -
286
- </td>
287
- <td className="text-fm-secondary! px-6 py-4 text-sm">
288
- Click handler for professional interactions
289
- </td>
290
- </tr>
291
- <tr className="bg-fm-surface-secondary!">
292
- <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
293
- ...svgProps
294
- </td>
295
- <td className="text-fm-secondary! px-6 py-4 text-sm">
296
- SVGProps
297
- </td>
298
- <td className="text-fm-placeholder! px-6 py-4 text-sm">
299
- -
300
- </td>
301
- <td className="text-fm-secondary! px-6 py-4 text-sm">
302
- All standard SVG element props
303
- </td>
304
- </tr>
305
- </tbody>
306
- </table>
307
- </div>
308
-
309
- <div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
310
- <div className="text-fm-icon-info flex items-center gap-2 text-sm">
311
- <LinkedInIcon className="h-4 w-4" />
312
- <span>
313
- <strong>Brand Guidelines:</strong> Use LinkedIn's
314
- signature blue color (#0077B5) for optimal brand
315
- recognition and professional consistency.
316
- </span>
317
- </div>
318
- </div>
319
- </div>
320
-
321
- {/* Size Variations */}
322
- <div className="!space-y-8">
323
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
324
- Size Variations
325
- </h2>
326
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
327
- <div className="!space-y-6">
328
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
329
- <div className="!space-y-4">
330
- <h3 className="text-fm-icon-info! text-lg font-semibold">
331
- Standard Sizes
332
- </h3>
333
- <div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
334
- <div className="text-center">
335
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
336
- <span className="text-fm-tertiary text-xs">
337
- 12px
338
- </span>
339
- </div>
340
- <div className="text-center">
341
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
342
- <span className="text-fm-tertiary text-xs">
343
- 16px
344
- </span>
345
- </div>
346
- <div className="text-center">
347
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
348
- <span className="text-fm-tertiary text-xs">
349
- 20px
350
- </span>
351
- </div>
352
- <div className="text-center">
353
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
354
- <span className="text-fm-tertiary text-xs">
355
- 24px
356
- </span>
357
- </div>
358
- <div className="text-center">
359
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
360
- <span className="text-fm-tertiary text-xs">
361
- 32px
362
- </span>
363
- </div>
364
- <div className="text-center">
365
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
366
- <span className="text-fm-tertiary text-xs">
367
- 48px
368
- </span>
369
- </div>
370
- </div>
371
- </div>
372
-
373
- <div className="!space-y-4">
374
- <h3 className="text-fm-icon-info! text-lg font-semibold">
375
- Code Example
376
- </h3>
377
- <div className="bg-fm-surface-secondary rounded-lg p-4">
378
- <pre className="text-fm-icon-info! overflow-x-auto text-sm">
379
- {`// Small (16px) - inline professional links
380
- <LinkedInIcon className="h-4 w-4" />
381
-
382
- // Medium (24px) - standard buttons
383
- <LinkedInIcon className="h-6 w-6" />
384
-
385
- // Large (32px) - prominent displays
386
- <LinkedInIcon className="h-8 w-8" />
387
-
388
- // Custom size with maintained aspect ratio
389
- <LinkedInIcon width={40} height={40} />`}
390
- </pre>
391
- </div>
392
- </div>
393
- </div>
394
- </div>
395
- </div>
396
- </div>
397
-
398
- {/* Color & Styling */}
399
- <div className="!space-y-8">
400
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
401
- Color & Styling
402
- </h2>
403
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
404
- <div className="!space-y-4">
405
- <h3 className="text-fm-icon-info! text-lg font-semibold">
406
- Brand Colors
407
- </h3>
408
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
409
- <div className="flex items-center gap-4">
410
- <div
411
- className="bg-fm-icon-info flex h-12 w-12 items-center justify-center rounded-lg"
412
- style={{ backgroundColor: "#0077B5" }}
413
- >
414
- <LinkedInIcon className="text-fm-icon-active h-6 w-6" />
415
- </div>
416
- <div>
417
- <div className="text-fm-icon-active text-sm font-medium">
418
- Official Blue
419
- </div>
420
- <div className="text-fm-tertiary text-xs">
421
- #0077B5 LinkedIn brand
422
- </div>
423
- </div>
424
- </div>
425
- <div className="flex items-center gap-4">
426
- <div className="bg-fm-icon-info flex h-12 w-12 items-center justify-center rounded-lg">
427
- <LinkedInIcon className="text-fm-icon-active h-6 w-6" />
428
- </div>
429
- <div>
430
- <div className="text-fm-icon-active text-sm font-medium">
431
- Dark Blue
432
- </div>
433
- <div className="text-fm-tertiary text-xs">
434
- Hover state variant
435
- </div>
436
- </div>
437
- </div>
438
- <div className="flex items-center gap-4">
439
- <div className="border-fm-divider-primary bg-fm-surface-contrast flex h-12 w-12 items-center justify-center rounded-lg border">
440
- <LinkedInIcon className="text-fm-icon-info h-6 w-6" />
441
- </div>
442
- <div>
443
- <div className="text-fm-icon-active text-sm font-medium">
444
- Blue on White
445
- </div>
446
- <div className="text-fm-tertiary text-xs">
447
- Light backgrounds
448
- </div>
449
- </div>
450
- </div>
451
- <div className="flex items-center gap-4">
452
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-lg">
453
- <LinkedInIcon className="text-fm-icon-active h-6 w-6" />
454
- </div>
455
- <div>
456
- <div className="text-fm-icon-active text-sm font-medium">
457
- Monochrome White
458
- </div>
459
- <div className="text-fm-tertiary text-xs">
460
- Dark backgrounds
461
- </div>
462
- </div>
463
- </div>
464
- </div>
465
- </div>
466
-
467
- <div className="!space-y-4">
468
- <h3 className="text-fm-icon-info! text-lg font-semibold">
469
- Usage Examples
470
- </h3>
471
- <div className="bg-fm-surface-secondary rounded-lg p-4">
472
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
473
- {`// Official LinkedIn blue
474
- <LinkedInIcon
475
- className="h-6 w-6 text-white"
476
- style={{ color: '#0077B5' }}
477
- />
478
-
479
- // White on LinkedIn blue background
480
- <div className="bg-blue-600 p-3 rounded-lg">
481
- <LinkedInIcon className="h-6 w-6 text-white" />
482
- </div>
483
-
484
- // Blue on white background
485
- <div className="bg-white p-3 rounded-lg">
486
- <LinkedInIcon className="h-6 w-6 text-blue-600" />
487
- </div>
488
-
489
- // Inherit parent text color
490
- <LinkedInIcon className="h-5 w-5" />
491
-
492
- // Hover state with transition
493
- <LinkedInIcon
494
- className="h-6 w-6 text-blue-600
495
- hover:text-blue-700 transition-colors"
496
- />
497
-
498
- // Professional button style
499
- <button className="bg-blue-600 hover:bg-blue-700
500
- p-3 rounded-lg transition-colors">
501
- <LinkedInIcon className="h-5 w-5 text-white" />
502
- </button>`}
503
- </pre>
504
- </div>
505
- </div>
506
- </div>
507
- </div>
508
-
509
- {/* Usage Examples */}
510
- <div className="!space-y-8">
511
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
512
- Usage Examples
513
- </h2>
514
-
515
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
516
- {/* Professional Profile Card */}
517
- <div className="!space-y-4">
518
- <h3 className="text-fm-icon-info! text-lg font-semibold">
519
- Professional Profile Card
520
- </h3>
521
- <div className="!space-y-4">
522
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
523
- <div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
524
- <div className="from-fm-icon-info/20 to-fm-icon-info/20 relative h-32 bg-linear-to-r">
525
- <div className="absolute -bottom-8 left-6">
526
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-16 w-16 items-center justify-center rounded-full border-4">
527
- <span className="text-2xl">👨‍💼</span>
528
- </div>
529
- </div>
530
- </div>
531
- <div className="p-6 pt-12">
532
- <div className="flex items-start justify-between">
533
- <div>
534
- <h4 className="text-fm-icon-active text-lg font-semibold">
535
- Michael Johnson
536
- </h4>
537
- <p className="text-fm-tertiary text-sm">
538
- Senior Product Manager
539
- </p>
540
- <p className="text-fm-icon-info text-sm">
541
- TechCorp Solutions
542
- </p>
543
- <p className="text-fm-secondary mt-2 text-sm">
544
- 10+ years experience in product strategy and
545
- team leadership
546
- </p>
547
- </div>
548
- <a
549
- href="#"
550
- className="bg-fm-icon-info text-fm-icon-active hover:bg-fm-icon-info rounded-lg px-4 py-2 font-medium transition-colors"
551
- >
552
- Connect
553
- </a>
554
- </div>
555
- <div className="mt-4 flex items-center gap-6">
556
- <div className="text-sm">
557
- <span className="text-fm-icon-active font-medium">
558
- 847
559
- </span>
560
- <span className="text-fm-tertiary ml-1">
561
- Connections
562
- </span>
563
- </div>
564
- <div className="text-sm">
565
- <span className="text-fm-icon-active font-medium">
566
- 15
567
- </span>
568
- <span className="text-fm-tertiary ml-1">
569
- Mutual
570
- </span>
571
- </div>
572
- </div>
573
- <div className="border-fm-divider-secondary mt-4 flex items-center gap-4 border-t pt-4">
574
- <span className="text-fm-tertiary text-sm">
575
- Professional networks:
576
- </span>
577
- <div className="flex gap-2">
578
- <a
579
- href="#"
580
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
581
- aria-label="Connect on LinkedIn"
582
- >
583
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
584
- </a>
585
- <a
586
- href="#"
587
- className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
588
- aria-label="Follow on X"
589
- >
590
- <span className="text-fm-icon-active text-sm">
591
- 𝕏
592
- </span>
593
- </a>
594
- <a
595
- href="#"
596
- className="bg-fm-surface-tertiary hover:bg-fm-surface-secondary rounded p-2 transition-colors"
597
- aria-label="View GitHub"
598
- >
599
- <span className="text-fm-icon-active text-sm">
600
- 🐙
601
- </span>
602
- </a>
603
- </div>
604
- </div>
605
- </div>
606
- </div>
607
- </div>
608
- <div className="bg-fm-surface-secondary rounded-lg p-4">
609
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
610
- {`// Professional profile card
611
- <div className="profile-card">
612
- <div className="profile-header">
613
- <CoverImage />
614
- <ProfileAvatar />
615
- </div>
616
- <div className="profile-content">
617
- <div className="profile-info">
618
- <ProfessionalDetails professional={professional} />
619
- <ConnectButton userId={professional.id} />
620
- </div>
621
- <ConnectionStats stats={professional.connections} />
622
- <div className="professional-links">
623
- <span>Professional networks:</span>
624
- <div className="link-group">
625
- <a
626
- href={professional.linkedinUrl}
627
- className="social-link linkedin-link"
628
- aria-label="Connect on LinkedIn"
629
- >
630
- <LinkedInIcon className="h-4 w-4 text-white" />
631
- </a>
632
- <TwitterLink url={professional.twitterUrl} />
633
- <GitHubLink url={professional.githubUrl} />
634
- </div>
635
- </div>
636
- </div>
637
- </div>`}
638
- </pre>
639
- </div>
640
- </div>
641
- </div>
642
-
643
- {/* Recruitment Platform */}
644
- <div className="!space-y-4">
645
- <h3 className="text-fm-icon-info! text-lg font-semibold">
646
- Recruitment Platform
647
- </h3>
648
- <div className="!space-y-4">
649
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
650
- <div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
651
- <div className="border-fm-divider-secondary bg-fm-icon-info/10 border-b p-4">
652
- <div className="flex items-center justify-between">
653
- <div className="flex items-center gap-3">
654
- <LinkedInIcon className="text-fm-icon-info h-6 w-6" />
655
- <div>
656
- <h4 className="text-fm-icon-active text-lg font-semibold">
657
- Talent Acquisition
658
- </h4>
659
- <p className="text-fm-tertiary text-sm">
660
- Connect with top professionals
661
- </p>
662
- </div>
663
- </div>
664
- <button className="bg-fm-icon-info text-fm-icon-active hover:bg-fm-icon-info rounded-lg px-4 py-2 font-medium transition-colors">
665
- Post Job
666
- </button>
667
- </div>
668
- </div>
669
- <div className="p-6">
670
- <div className="mb-6 grid grid-cols-2 gap-4">
671
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
672
- <div className="mb-3 flex items-center gap-3">
673
- <div className="bg-fm-icon-info/20 flex h-10 w-10 items-center justify-center rounded-lg">
674
- <LinkedInIcon className="text-fm-icon-info h-5 w-5" />
675
- </div>
676
- <div>
677
- <h5 className="text-fm-icon-active text-sm font-semibold">
678
- LinkedIn Sourcing
679
- </h5>
680
- <p className="text-fm-tertiary text-xs">
681
- Professional network
682
- </p>
683
- </div>
684
- </div>
685
- <div className="text-fm-icon-info mb-1 text-2xl font-bold">
686
- 847
687
- </div>
688
- <div className="text-fm-tertiary text-xs">
689
- Qualified candidates
690
- </div>
691
- </div>
692
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
693
- <div className="mb-3 flex items-center gap-3">
694
- <div className="bg-fm-icon-positive/20 flex h-10 w-10 items-center justify-center rounded-lg">
695
- <span className="text-fm-icon-positive text-lg">
696
- 🎯
697
- </span>
698
- </div>
699
- <div>
700
- <h5 className="text-fm-icon-active text-sm font-semibold">
701
- Active Hiring
702
- </h5>
703
- <p className="text-fm-tertiary text-xs">
704
- Open positions
705
- </p>
706
- </div>
707
- </div>
708
- <div className="text-fm-icon-positive mb-1 text-2xl font-bold">
709
- 23
710
- </div>
711
- <div className="text-fm-tertiary text-xs">
712
- Roles available
713
- </div>
714
- </div>
715
- </div>
716
- <div className="space-y-3">
717
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between rounded-lg border p-3">
718
- <div className="flex items-center gap-3">
719
- <div className="bg-fm-surface-secondary flex h-8 w-8 items-center justify-center rounded-full">
720
- <span className="text-xs">👨‍💻</span>
721
- </div>
722
- <div>
723
- <div className="text-fm-icon-active text-sm font-medium">
724
- Senior React Developer
725
- </div>
726
- <div className="text-fm-tertiary text-xs">
727
- Remote • Full-time • $120k-160k
728
- </div>
729
- </div>
730
- </div>
731
- <div className="flex items-center gap-2">
732
- <span className="text-fm-icon-info text-xs">
733
- 47 applicants
734
- </span>
735
- <a
736
- href="#"
737
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-1 transition-colors"
738
- >
739
- <LinkedInIcon className="text-fm-icon-active h-3 w-3" />
740
- </a>
741
- </div>
742
- </div>
743
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between rounded-lg border p-3">
744
- <div className="flex items-center gap-3">
745
- <div className="bg-fm-surface-secondary flex h-8 w-8 items-center justify-center rounded-full">
746
- <span className="text-xs">👩‍🎨</span>
747
- </div>
748
- <div>
749
- <div className="text-fm-icon-active text-sm font-medium">
750
- UX Designer
751
- </div>
752
- <div className="text-fm-tertiary text-xs">
753
- Hybrid • Full-time • $90k-130k
754
- </div>
755
- </div>
756
- </div>
757
- <div className="flex items-center gap-2">
758
- <span className="text-fm-icon-info text-xs">
759
- 32 applicants
760
- </span>
761
- <a
762
- href="#"
763
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-1 transition-colors"
764
- >
765
- <LinkedInIcon className="text-fm-icon-active h-3 w-3" />
766
- </a>
767
- </div>
768
- </div>
769
- </div>
770
- </div>
771
- </div>
772
- </div>
773
- <div className="bg-fm-surface-secondary rounded-lg p-4">
774
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
775
- {`// Recruitment platform with LinkedIn integration
776
- <div className="recruitment-platform">
777
- <div className="platform-header">
778
- <div className="platform-info">
779
- <LinkedInIcon className="h-6 w-6 text-blue-400" />
780
- <div className="platform-details">
781
- <h3>Talent Acquisition</h3>
782
- <p>Connect with top professionals</p>
783
- </div>
784
- </div>
785
- <PostJobButton />
786
- </div>
787
- <div className="recruitment-stats">
788
- <StatCard
789
- icon={<LinkedInIcon />}
790
- title="LinkedIn Sourcing"
791
- value={qualifiedCandidates}
792
- description="Qualified candidates"
793
- />
794
- <StatCard
795
- icon="🎯"
796
- title="Active Hiring"
797
- value={openPositions}
798
- description="Roles available"
799
- />
800
- </div>
801
- <div className="job-listings">
802
- {jobListings.map(job => (
803
- <div key={job.id} className="job-listing">
804
- <JobDetails job={job} />
805
- <div className="job-actions">
806
- <span className="applicant-count">{job.applicants} applicants</span>
807
- <a
808
- href={generateLinkedInJobUrl(job)}
809
- className="linkedin-action"
810
- aria-label="Share job on LinkedIn"
811
- >
812
- <LinkedInIcon className="h-3 w-3 text-white" />
813
- </a>
814
- </div>
815
- </div>
816
- ))}
817
- </div>
818
- </div>`}
819
- </pre>
820
- </div>
821
- </div>
822
- </div>
823
-
824
- {/* Business Team Directory */}
825
- <div className="!space-y-4">
826
- <h3 className="text-fm-icon-info! text-lg font-semibold">
827
- Business Team Directory
828
- </h3>
829
- <div className="!space-y-4">
830
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
831
- <div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
832
- <div className="border-fm-divider-secondary bg-fm-surface-secondary border-b p-4">
833
- <h4 className="text-fm-icon-active text-lg font-semibold">
834
- Leadership Team
835
- </h4>
836
- <p className="text-fm-tertiary text-sm">
837
- Connect with our executives and department heads
838
- </p>
839
- </div>
840
- <div className="space-y-4 p-4">
841
- <div className="grid grid-cols-1 gap-4 md:grid-cols-2">
842
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
843
- <div className="mb-3 flex items-center gap-3">
844
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-full">
845
- <span className="text-lg">👩‍💼</span>
846
- </div>
847
- <div className="flex-1">
848
- <h5 className="text-fm-icon-active text-sm font-semibold">
849
- Sarah Chen
850
- </h5>
851
- <p className="text-fm-tertiary text-xs">
852
- Chief Executive Officer
853
- </p>
854
- </div>
855
- <a
856
- href="#"
857
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
858
- aria-label="Connect with Sarah Chen on LinkedIn"
859
- >
860
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
861
- </a>
862
- </div>
863
- <p className="text-fm-secondary text-xs">
864
- 15+ years leading tech companies through rapid
865
- growth phases
866
- </p>
867
- </div>
868
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
869
- <div className="mb-3 flex items-center gap-3">
870
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-full">
871
- <span className="text-lg">👨‍💻</span>
872
- </div>
873
- <div className="flex-1">
874
- <h5 className="text-fm-icon-active text-sm font-semibold">
875
- David Rodriguez
876
- </h5>
877
- <p className="text-fm-tertiary text-xs">
878
- Chief Technology Officer
879
- </p>
880
- </div>
881
- <a
882
- href="#"
883
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
884
- aria-label="Connect with David Rodriguez on LinkedIn"
885
- >
886
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
887
- </a>
888
- </div>
889
- <p className="text-fm-secondary text-xs">
890
- Former engineering lead at major tech
891
- companies, patent holder
892
- </p>
893
- </div>
894
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
895
- <div className="mb-3 flex items-center gap-3">
896
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-full">
897
- <span className="text-lg">👩‍🎨</span>
898
- </div>
899
- <div className="flex-1">
900
- <h5 className="text-fm-icon-active text-sm font-semibold">
901
- Emily Johnson
902
- </h5>
903
- <p className="text-fm-tertiary text-xs">
904
- Head of Design
905
- </p>
906
- </div>
907
- <a
908
- href="#"
909
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
910
- aria-label="Connect with Emily Johnson on LinkedIn"
911
- >
912
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
913
- </a>
914
- </div>
915
- <p className="text-fm-secondary text-xs">
916
- Award-winning designer with expertise in user
917
- experience and brand strategy
918
- </p>
919
- </div>
920
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
921
- <div className="mb-3 flex items-center gap-3">
922
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-full">
923
- <span className="text-lg">👨‍💼</span>
924
- </div>
925
- <div className="flex-1">
926
- <h5 className="text-fm-icon-active text-sm font-semibold">
927
- Marcus Thompson
928
- </h5>
929
- <p className="text-fm-tertiary text-xs">
930
- VP of Sales
931
- </p>
932
- </div>
933
- <a
934
- href="#"
935
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
936
- aria-label="Connect with Marcus Thompson on LinkedIn"
937
- >
938
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
939
- </a>
940
- </div>
941
- <p className="text-fm-secondary text-xs">
942
- Top sales performer with track record of
943
- building high-performing teams
944
- </p>
945
- </div>
946
- </div>
947
- </div>
948
- </div>
949
- </div>
950
- <div className="bg-fm-surface-secondary rounded-lg p-4">
951
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
952
- {`// Business team directory
953
- <div className="team-directory">
954
- <div className="directory-header">
955
- <h3>Leadership Team</h3>
956
- <p>Connect with our executives and department heads</p>
957
- </div>
958
- <div className="team-grid">
959
- {leadershipTeam.map(member => (
960
- <div key={member.id} className="team-member-card">
961
- <div className="member-header">
962
- <Avatar member={member} />
963
- <div className="member-info">
964
- <h4 className="member-name">{member.name}</h4>
965
- <p className="member-title">{member.title}</p>
966
- </div>
967
- <a
968
- href={member.linkedinUrl}
969
- className="linkedin-connect"
970
- aria-label={"Connect with " + member.name + " on LinkedIn"}
971
- >
972
- <LinkedInIcon className="h-4 w-4 text-white" />
973
- </a>
974
- </div>
975
- <p className="member-bio">{member.bio}</p>
976
- </div>
977
- ))}
978
- </div>
979
- </div>`}
980
- </pre>
981
- </div>
982
- </div>
983
- </div>
984
-
985
- {/* Professional Share Widget */}
986
- <div className="!space-y-4">
987
- <h3 className="text-fm-icon-info! text-lg font-semibold">
988
- Professional Content Sharing
989
- </h3>
990
- <div className="!space-y-4">
991
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
992
- <div className="border-fm-divider-primary bg-fm-surface-secondary overflow-hidden rounded-lg border">
993
- <div className="p-6">
994
- <div className="mb-6 text-center">
995
- <h4 className="text-fm-icon-active mb-2 text-xl font-semibold">
996
- Share Your Success
997
- </h4>
998
- <p className="text-fm-secondary text-sm">
999
- Expand your professional network and showcase
1000
- achievements
1001
- </p>
1002
- </div>
1003
- <div className="mb-6 grid grid-cols-2 gap-4">
1004
- <div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
1005
- <div className="bg-fm-icon-info mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
1006
- <LinkedInIcon className="text-fm-icon-active h-6 w-6" />
1007
- </div>
1008
- <h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
1009
- Professional Network
1010
- </h5>
1011
- <p className="text-fm-tertiary text-xs">
1012
- Share achievements and insights with your
1013
- professional network
1014
- </p>
1015
- </div>
1016
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1017
- <div className="bg-fm-icon-info/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
1018
- <span className="text-xl">🚀</span>
1019
- </div>
1020
- <h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
1021
- Career Growth
1022
- </h5>
1023
- <p className="text-fm-tertiary text-xs">
1024
- Build your personal brand and advance your
1025
- career
1026
- </p>
1027
- </div>
1028
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1029
- <div className="bg-fm-icon-positive/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
1030
- <span className="text-xl">🤝</span>
1031
- </div>
1032
- <h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
1033
- Business Connections
1034
- </h5>
1035
- <p className="text-fm-tertiary text-xs">
1036
- Connect with industry leaders and potential
1037
- collaborators
1038
- </p>
1039
- </div>
1040
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1041
- <div className="bg-fm-secondary-500/20 mb-3 flex h-12 w-12 items-center justify-center rounded-lg">
1042
- <span className="text-xl">💼</span>
1043
- </div>
1044
- <h5 className="text-fm-icon-active mb-2 text-sm font-semibold">
1045
- Thought Leadership
1046
- </h5>
1047
- <p className="text-fm-tertiary text-xs">
1048
- Establish yourself as an industry expert and
1049
- influencer
1050
- </p>
1051
- </div>
1052
- </div>
1053
- <div className="text-center">
1054
- <a
1055
- href="#"
1056
- className="bg-fm-icon-info text-fm-icon-active hover:bg-fm-icon-info inline-flex items-center gap-2 rounded-lg px-6 py-3 font-medium transition-colors"
1057
- >
1058
- <LinkedInIcon className="h-5 w-5" />
1059
- <span>Share on LinkedIn</span>
1060
- </a>
1061
- </div>
1062
- </div>
1063
- </div>
1064
- </div>
1065
- <div className="bg-fm-surface-secondary rounded-lg p-4">
1066
- <pre className="text-fm-icon-positive! overflow-x-auto text-sm">
1067
- {`// Professional content sharing widget
1068
- <div className="content-sharing-widget">
1069
- <div className="widget-header">
1070
- <h2>Share Your Success</h2>
1071
- <p>Expand your professional network and showcase achievements</p>
1072
- </div>
1073
- <div className="feature-grid">
1074
- <div className="feature-card linkedin-feature">
1075
- <div className="feature-icon">
1076
- <LinkedInIcon className="h-6 w-6 text-white" />
1077
- </div>
1078
- <h3>Professional Network</h3>
1079
- <p>Share achievements and insights with your professional network</p>
1080
- </div>
1081
- <CareerGrowthFeature />
1082
- <BusinessConnectionsFeature />
1083
- <ThoughtLeadershipFeature />
1084
- </div>
1085
- <div className="cta-section">
1086
- <a
1087
- href={linkedinShareUrl}
1088
- className="cta-button linkedin-cta"
1089
- >
1090
- <LinkedInIcon className="h-5 w-5" />
1091
- <span>Share on LinkedIn</span>
1092
- </a>
1093
- </div>
1094
- </div>`}
1095
- </pre>
1096
- </div>
1097
- </div>
1098
- </div>
1099
- </div>
1100
- </div>
1101
-
1102
- {/* Accessibility */}
1103
- <div className="!space-y-8">
1104
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
1105
- Accessibility Features
1106
- </h2>
1107
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
1108
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
1109
- <h3 className="text-fm-icon-positive! text-lg font-semibold">
1110
- ✅ Built-in Features
1111
- </h3>
1112
- <ul className="text-fm-secondary! !space-y-2 text-sm">
1113
- <li className="text-fm-secondary!">
1114
- Uses Radix UI AccessibleIcon wrapper
1115
- </li>
1116
- <li className="text-fm-secondary!">
1117
- Provides screen reader label "LinkedIn icon"
1118
- </li>
1119
- <li className="text-fm-secondary!">
1120
- Supports keyboard navigation when interactive
1121
- </li>
1122
- <li className="text-fm-secondary!">
1123
- High contrast design for visibility
1124
- </li>
1125
- <li className="text-fm-secondary!">
1126
- Maintains aspect ratio across all sizes
1127
- </li>
1128
- </ul>
1129
- </div>
1130
-
1131
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
1132
- <h3 className="text-fm-icon-info! text-lg font-semibold">
1133
- 💡 Best Practices
1134
- </h3>
1135
- <ul className="text-fm-secondary !space-y-2 text-sm">
1136
- <li className="text-fm-secondary!">
1137
- Always provide descriptive aria-labels for LinkedIn
1138
- actions
1139
- </li>
1140
- <li className="text-fm-secondary!">
1141
- Use LinkedIn's official blue color for brand consistency
1142
- </li>
1143
- <li className="text-fm-secondary!">
1144
- Ensure sufficient contrast with professional contexts
1145
- </li>
1146
- <li className="text-fm-secondary!">
1147
- Include external link indicators for LinkedIn URLs
1148
- </li>
1149
- <li className="text-fm-secondary!">
1150
- Consider professional context in related features
1151
- </li>
1152
- </ul>
1153
- </div>
1154
- </div>
1155
-
1156
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
1157
- <h3 className="text-fm-icon-info! mb-4 text-lg font-semibold">
1158
- Proper ARIA Implementation
1159
- </h3>
1160
- <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
1161
- <div className="bg-fm-surface-secondary rounded-lg p-4">
1162
- <pre className="text-fm-icon-info! overflow-x-auto text-sm">
1163
- {`// LinkedIn profile link
1164
- <a
1165
- href="https://linkedin.com/in/username"
1166
- className="linkedin-link"
1167
- aria-label="Connect with username on LinkedIn"
1168
- target="_blank"
1169
- rel="noopener noreferrer"
1170
- >
1171
- <LinkedInIcon className="h-5 w-5 text-white" />
1172
- </a>
1173
-
1174
- // Professional team directory
1175
- <div className="team-directory">
1176
- <h2 id="team-title">Leadership Team</h2>
1177
- <div
1178
- className="team-grid"
1179
- role="grid"
1180
- aria-labelledby="team-title"
1181
- >
1182
- {teamMembers.map(member => (
1183
- <div
1184
- key={member.id}
1185
- role="gridcell"
1186
- className="team-member"
1187
- >
1188
- <MemberInfo member={member} />
1189
- <a
1190
- href={member.linkedinUrl}
1191
- aria-label={"Connect with " + member.name + " on LinkedIn"}
1192
- target="_blank"
1193
- rel="noopener noreferrer"
1194
- >
1195
- <LinkedInIcon className="h-4 w-4" />
1196
- </a>
1197
- </div>
1198
- ))}
1199
- </div>
1200
- </div>
1201
-
1202
- // Share to LinkedIn button
1203
- <button
1204
- onClick={shareToLinkedIn}
1205
- className="share-btn"
1206
- aria-label="Share this content on LinkedIn"
1207
- >
1208
- <LinkedInIcon className="h-4 w-4" />
1209
- <span>Share on LinkedIn</span>
1210
- </button>
1211
-
1212
- // Professional profile card
1213
- <div className="profile-card">
1214
- <div className="profile-header">
1215
- <h1>{professional.name}</h1>
1216
- <div className="professional-social">
1217
- <a
1218
- href={professional.linkedin}
1219
- className="primary-professional-link"
1220
- aria-label={"Connect with " + professional.name + " on LinkedIn"}
1221
- >
1222
- <LinkedInIcon className="h-5 w-5" />
1223
- <span className="sr-only">Primary professional network</span>
1224
- </a>
1225
- </div>
1226
- </div>
1227
- </div>
1228
-
1229
- // Recruitment platform
1230
- <div className="recruitment-platform">
1231
- <div className="job-listings">
1232
- {jobs.map(job => (
1233
- <article
1234
- key={job.id}
1235
- className="job-listing"
1236
- aria-label={job.title + " at " + job.company}
1237
- >
1238
- <JobDetails job={job} />
1239
- <div className="job-actions">
1240
- <a
1241
- href={generateLinkedInJobUrl(job)}
1242
- aria-label="Share this job posting on LinkedIn"
1243
- target="_blank"
1244
- rel="noopener noreferrer"
1245
- >
1246
- <LinkedInIcon className="h-3 w-3" />
1247
- </a>
1248
- </div>
1249
- </article>
1250
- ))}
1251
- </div>
1252
- </div>`}
1253
- </pre>
1254
- </div>
1255
- <div className="!space-y-4">
1256
- <p className="text-fm-secondary! text-sm">
1257
- When using LinkedInIcon for professional integration,
1258
- always provide clear context about the professional
1259
- relationship and ensure users understand the networking
1260
- implications of their actions.
1261
- </p>
1262
- <div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
1263
- <div className="text-fm-icon-info flex items-center gap-2 text-sm">
1264
- <LinkedInIcon className="h-4 w-4" />
1265
- <span>
1266
- Consider professional context and career
1267
- implications for screen readers
1268
- </span>
1269
- </div>
1270
- </div>
1271
- </div>
1272
- </div>
1273
- </div>
1274
- </div>
1275
-
1276
- {/* Related Icons */}
1277
- <div className="!space-y-8">
1278
- <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
1279
- Related Icons
1280
- </h2>
1281
- <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
1282
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
1283
- <div className="bg-fm-surface-primary !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
1284
- <span className="text-fm-icon-active! !text-2xl">𝕏</span>
1285
- </div>
1286
- <div>
1287
- <div className="text-fm-icon-active font-medium">
1288
- TwitterXIcon
1289
- </div>
1290
- <div className="text-fm-tertiary text-xs">
1291
- Social network
1292
- </div>
1293
- </div>
1294
- </div>
1295
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
1296
- <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">
1297
- <span className="text-fm-icon-active! !text-2xl">📷</span>
1298
- </div>
1299
- <div>
1300
- <div className="text-fm-icon-active font-medium">
1301
- InstagramIcon
1302
- </div>
1303
- <div className="text-fm-tertiary text-xs">
1304
- Visual content
1305
- </div>
1306
- </div>
1307
- </div>
1308
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
1309
- <div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
1310
- <span className="text-fm-icon-active! !text-2xl">📘</span>
1311
- </div>
1312
- <div>
1313
- <div className="text-fm-icon-active font-medium">
1314
- FacebookIcon
1315
- </div>
1316
- <div className="text-fm-tertiary text-xs">
1317
- Social platform
1318
- </div>
1319
- </div>
1320
- </div>
1321
- <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
1322
- <div className="bg-fm-surface-tertiary !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
1323
- <span className="text-fm-icon-active! !text-2xl">🐙</span>
1324
- </div>
1325
- <div>
1326
- <div className="text-fm-icon-active font-medium">
1327
- GitHubIcon
1328
- </div>
1329
- <div className="text-fm-tertiary text-xs">
1330
- Code repository
1331
- </div>
1332
- </div>
1333
- </div>
1334
- </div>
1335
- </div>
1336
- </div>
1337
-
1338
- {/* Footer */}
1339
- <div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
1340
- <div className="!mx-auto max-w-7xl px-6 py-8">
1341
- <div className="!space-y-4 text-center">
1342
- <p className="text-fm-tertiary!">
1343
- LinkedInIcon is part of the Aural UI icon library, built
1344
- with accessibility and professional networking best
1345
- practices in mind.
1346
- </p>
1347
- <p className="text-fm-placeholder! text-sm">
1348
- All icons use Radix UI's AccessibleIcon for screen reader
1349
- compatibility and follow WCAG guidelines for professional
1350
- platform recognition and career development accessibility.
1351
- </p>
1352
- </div>
1353
- </div>
1354
- </div>
1355
- </div>
1356
- </>
51
+ }`,
52
+ livePreview: (
53
+ <a href="#" target="_blank" rel="noreferrer">
54
+ <LinkedInIcon 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: "ThreadsIcon",
67
+ description: "Threads brand mark",
68
+ icon: ThreadsIcon,
69
+ accentToken: "positive",
70
+ },
71
+ {
72
+ name: "TwitterXIcon",
73
+ description: "X (Twitter) brand mark",
74
+ icon: TwitterXIcon,
75
+ accentToken: "warning",
76
+ },
77
+ {
78
+ name: "GoogleLogoIcon",
79
+ description: "Google brand mark",
80
+ icon: GoogleLogoIcon,
81
+ accentToken: "negative",
82
+ },
83
+ ]}
84
+ />
1357
85
  ),
1358
86
  },
1359
87
  },
1360
88
  tags: ["autodocs"],
1361
89
  argTypes: {
1362
- width: {
1363
- control: { type: "range", min: 8, max: 96, step: 2 },
1364
- description: "Width of the icon (maintains aspect ratio)",
1365
- },
1366
- withAccessibility: {
1367
- control: "boolean",
1368
- description: "Whether to wrap the icon with accessibility features",
1369
- },
1370
- height: {
1371
- control: { type: "range", min: 8, max: 96, step: 2 },
1372
- description: "Height of the icon (maintains aspect ratio)",
1373
- },
1374
- fill: {
1375
- control: "color",
1376
- description: "Fill color of the LinkedIn square icon",
1377
- },
1378
90
  className: {
1379
91
  control: "text",
1380
- description: "CSS classes for styling and sizing",
92
+ description: "CSS classes including color token",
1381
93
  },
1382
- onClick: {
1383
- action: "clicked",
1384
- description: "Click handler for professional interactions",
94
+ withAccessibility: {
95
+ control: "boolean",
96
+ description: "Wrap with accessibility label",
1385
97
  },
1386
98
  },
1387
99
  }
@@ -1389,240 +101,125 @@ function ProfessionalProfile() {
1389
101
  export default meta
1390
102
  type Story = StoryObj<typeof LinkedInIcon>
1391
103
 
1392
- // Story parameters for consistent dark theme
1393
- const storyParameters = {
1394
- backgrounds: {
1395
- default: "dark",
1396
- values: [
1397
- { name: "dark", value: "var(--color-fm-surface-primary)" },
1398
- { name: "darker", value: "var(--color-fm-neutral-0)" },
1399
- ],
1400
- },
1401
- }
1402
-
1403
104
  export const Default: Story = {
1404
105
  args: {
1405
- className: "h-8 w-8 text-fm-icon-info",
106
+ className: "h-6 w-6 text-fm-icon-active",
1406
107
  withAccessibility: true,
1407
108
  },
1408
- parameters: storyParameters,
1409
109
  render: (args) => (
1410
- <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>
1411
111
  <LinkedInIcon {...args} />
1412
- </div>
112
+ </IconDefaultCanvas>
1413
113
  ),
1414
114
  }
1415
115
 
1416
116
  export const SizeVariations: Story = {
1417
- parameters: {
1418
- ...storyParameters,
1419
- docs: {
1420
- description: {
1421
- story:
1422
- "LinkedInIcon in different sizes, from small inline professional links to large recruitment displays.",
1423
- },
1424
- },
1425
- },
1426
- render: () => (
1427
- <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">
1428
- <div className="text-center">
1429
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
1430
- <span className="text-fm-tertiary text-xs">12px</span>
1431
- </div>
1432
- <div className="text-center">
1433
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
1434
- <span className="text-fm-tertiary text-xs">16px</span>
1435
- </div>
1436
- <div className="text-center">
1437
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
1438
- <span className="text-fm-tertiary text-xs">20px</span>
1439
- </div>
1440
- <div className="text-center">
1441
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
1442
- <span className="text-fm-tertiary text-xs">24px</span>
1443
- </div>
1444
- <div className="text-center">
1445
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
1446
- <span className="text-fm-tertiary text-xs">32px</span>
1447
- </div>
1448
- <div className="text-center">
1449
- <LinkedInIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
1450
- <span className="text-fm-tertiary text-xs">48px</span>
1451
- </div>
1452
- </div>
1453
- ),
117
+ render: () => <IconSizeVariations icon={LinkedInIcon} />,
1454
118
  }
1455
119
 
1456
120
  export const BrandColors: Story = {
1457
- parameters: {
1458
- ...storyParameters,
1459
- docs: {
1460
- description: {
1461
- story:
1462
- "LinkedInIcon in different brand-compliant colors for various professional contexts.",
1463
- },
1464
- },
1465
- },
1466
121
  render: () => (
1467
- <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">
1468
- <div className="text-center">
1469
- <div
1470
- className="bg-fm-icon-info !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg"
1471
- style={{ backgroundColor: "#0077B5" }}
1472
- >
1473
- <LinkedInIcon className="text-fm-icon-active h-8 w-8" />
1474
- </div>
1475
- <div className="text-fm-icon-active text-sm font-medium">
1476
- Official Blue
1477
- </div>
1478
- <div className="text-fm-icon-info text-xs">#0077B5</div>
1479
- </div>
1480
- <div className="text-center">
1481
- <div className="bg-fm-icon-info !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
1482
- <LinkedInIcon className="text-fm-icon-active h-8 w-8" />
1483
- </div>
1484
- <div className="text-fm-icon-active text-sm font-medium">Dark Blue</div>
1485
- <div className="text-fm-icon-info text-xs">Hover state</div>
1486
- </div>
1487
- <div className="text-center">
1488
- <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">
1489
- <LinkedInIcon className="text-fm-icon-info h-8 w-8" />
1490
- </div>
1491
- <div className="text-fm-icon-active text-sm font-medium">
1492
- Blue on White
1493
- </div>
1494
- <div className="text-fm-tertiary text-xs">Light backgrounds</div>
1495
- </div>
1496
- <div className="text-center">
1497
- <div className="bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
1498
- <LinkedInIcon className="text-fm-icon-active h-8 w-8" />
1499
- </div>
1500
- <div className="text-fm-icon-active text-sm font-medium">
1501
- Monochrome White
1502
- </div>
1503
- <div className="text-fm-tertiary text-xs">Dark backgrounds</div>
1504
- </div>
1505
- </div>
122
+ <IconBrandColors
123
+ icon={LinkedInIcon}
124
+ variants={[
125
+ {
126
+ label: "Brand Blue",
127
+ description: "Recommended",
128
+ cardClassName: "h-24 w-24",
129
+ cardStyle: { backgroundColor: "#0A66C2" },
130
+ iconClassName: "h-8 w-8 text-white",
131
+ },
132
+ {
133
+ label: "White Background",
134
+ description: "Official contrast",
135
+ cardClassName:
136
+ "border-fm-divider-secondary h-24 w-24 border bg-white",
137
+ iconClassName: "h-8 w-8 text-[#0A66C2]",
138
+ },
139
+ {
140
+ label: "Primary Surface",
141
+ description: "Theme surface",
142
+ cardClassName: "bg-fm-surface-primary h-24 w-24",
143
+ iconClassName: "h-8 w-8 text-white",
144
+ },
145
+ {
146
+ label: "Transparent",
147
+ description: "Original mark",
148
+ cardClassName:
149
+ "border-fm-divider-contrast h-24 w-24 border bg-transparent",
150
+ iconClassName: "h-8 w-8 text-[#0A66C2]",
151
+ },
152
+ ]}
153
+ />
1506
154
  ),
1507
155
  }
1508
156
 
1509
157
  export const UsageExamples: Story = {
1510
- parameters: {
1511
- ...storyParameters,
1512
- docs: {
1513
- description: {
1514
- story:
1515
- "Real-world usage examples showing LinkedInIcon in different professional and networking contexts.",
1516
- },
1517
- },
1518
- },
1519
158
  render: () => (
1520
- <div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
1521
- {/* Professional Profile */}
1522
- <div className="!space-y-2">
1523
- <h3 className="text-fm-icon-active text-sm font-medium">
1524
- Professional Profile
1525
- </h3>
1526
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1527
- <div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-4 rounded border p-4">
1528
- <div className="bg-fm-surface-secondary flex h-12 w-12 items-center justify-center rounded-full">
1529
- <span className="text-lg">👨‍💼</span>
1530
- </div>
1531
- <div className="flex-1">
1532
- <div className="text-fm-icon-active text-sm font-medium">
1533
- Michael Johnson
1534
- </div>
1535
- <div className="text-fm-tertiary text-xs">
1536
- Senior Product Manager at TechCorp
1537
- </div>
1538
- </div>
1539
- <a
1540
- href="#"
1541
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
1542
- >
1543
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
1544
- </a>
1545
- </div>
1546
- </div>
1547
- </div>
1548
-
1549
- {/* Recruitment */}
1550
- <div className="!space-y-2">
1551
- <h3 className="text-fm-icon-active text-sm font-medium">
1552
- Recruitment Platform
1553
- </h3>
1554
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1555
- <div className="border-fm-icon-info/20 bg-fm-icon-info/10 flex items-center justify-between rounded border p-3">
1556
- <div className="flex items-center gap-2">
1557
- <LinkedInIcon className="text-fm-icon-info h-5 w-5" />
1558
- <span className="text-fm-icon-active text-sm font-medium">
1559
- Talent Acquisition
1560
- </span>
1561
- </div>
1562
- <button className="bg-fm-icon-info text-fm-icon-active hover:bg-fm-icon-info rounded px-3 py-1 text-sm transition-colors">
1563
- Post Job
1564
- </button>
1565
- </div>
1566
- </div>
1567
- </div>
159
+ <IconUsageCanvas>
160
+ <IconUsageSection title="LinkedIn Profile Link">
161
+ <a
162
+ href="#"
163
+ className="flex items-center gap-2 rounded-xl px-4 py-2 text-white"
164
+ style={{ backgroundColor: "#0A66C2" }}
165
+ target="_blank"
166
+ rel="noreferrer"
167
+ >
168
+ <LinkedInIcon className="h-4 w-4 text-white" />
169
+ <span className="font-fm-text text-sm font-medium">
170
+ View LinkedIn Profile
171
+ </span>
172
+ </a>
173
+ </IconUsageSection>
1568
174
 
1569
- {/* Professional Links */}
1570
- <div className="!space-y-2">
1571
- <h3 className="text-fm-icon-active text-sm font-medium">
1572
- Professional Social Links
1573
- </h3>
1574
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
1575
- <div className="flex items-center gap-3">
1576
- <span className="text-fm-tertiary text-sm">
1577
- Professional networks:
1578
- </span>
1579
- <div className="flex gap-2">
1580
- <a
1581
- href="#"
1582
- className="bg-fm-icon-info hover:bg-fm-icon-info rounded p-2 transition-colors"
1583
- >
1584
- <LinkedInIcon className="text-fm-icon-active h-4 w-4" />
1585
- </a>
175
+ <IconUsageSection title="Social Links Row">
176
+ <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">
177
+ {[InstagramIcon, LinkedInIcon, TwitterXIcon, ThreadsIcon].map(
178
+ (Icon, i) => (
1586
179
  <a
180
+ key={i}
1587
181
  href="#"
1588
- className="border-fm-divider-contrast bg-fm-surface-primary hover:bg-fm-surface-secondary rounded border p-2 transition-colors"
182
+ className="border-fm-divider-secondary flex h-10 w-10 items-center justify-center rounded-xl border"
183
+ target="_blank"
184
+ rel="noreferrer"
1589
185
  >
1590
- <span className="text-fm-icon-active text-sm">𝕏</span>
1591
- </a>
1592
- <a
1593
- href="#"
1594
- className="bg-fm-surface-tertiary hover:bg-fm-surface-secondary rounded p-2 transition-colors"
1595
- >
1596
- <span className="text-fm-icon-active text-sm">🐙</span>
186
+ <Icon className="text-fm-icon-active h-5 w-5" />
1597
187
  </a>
188
+ )
189
+ )}
190
+ </div>
191
+ </IconUsageSection>
192
+
193
+ <IconUsageSection title="Creator Profile">
194
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm rounded-xl border p-4">
195
+ <div className="flex items-center gap-3">
196
+ <div className="bg-fm-divider-secondary h-12 w-12 rounded-full" />
197
+ <div className="flex-1">
198
+ <div className="text-fm-primary font-fm-text text-sm font-medium">
199
+ Pocket FM
200
+ </div>
201
+ <div className="text-fm-secondary font-fm-text text-xs">
202
+ Audio entertainment
203
+ </div>
1598
204
  </div>
205
+ <a href="#" target="_blank" rel="noreferrer" aria-label="LinkedIn">
206
+ <LinkedInIcon className="text-fm-icon-inactive h-5 w-5" />
207
+ </a>
1599
208
  </div>
1600
209
  </div>
1601
- </div>
1602
- </div>
210
+ </IconUsageSection>
211
+ </IconUsageCanvas>
1603
212
  ),
1604
213
  }
1605
214
 
1606
215
  export const Playground: Story = {
1607
- parameters: {
1608
- ...storyParameters,
1609
- docs: {
1610
- description: {
1611
- story:
1612
- "Interactive playground to experiment with different LinkedInIcon configurations.",
1613
- },
1614
- },
1615
- },
1616
216
  args: {
1617
- width: 24,
1618
- height: 24,
1619
- className: "text-fm-icon-info",
217
+ className: "h-8 w-8 text-fm-icon-active",
218
+ withAccessibility: true,
1620
219
  },
1621
220
  render: (args) => (
1622
- <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">
1623
- <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
1624
- <LinkedInIcon {...args} />
1625
- </div>
1626
- </div>
221
+ <IconPlaygroundCanvas>
222
+ <LinkedInIcon {...args} />
223
+ </IconPlaygroundCanvas>
1627
224
  ),
1628
225
  }