aural-ui 3.0.6 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +271 -242
- package/dist/components/avatar/Avatar.stories.tsx +84 -70
- package/dist/components/button/Button.stories.tsx +7 -7
- package/dist/components/button/index.tsx +7 -7
- package/dist/components/card/Card.stories.tsx +3 -3
- package/dist/components/char-count/CharCount.stories.tsx +9 -9
- package/dist/components/circular-loader/CircularLoader.stories.tsx +109 -93
- package/dist/components/clamp-lines/ClampLines.stories.tsx +25 -0
- package/dist/components/clamp-lines/index.tsx +6 -1
- package/dist/components/collapsible/Collapsible.stories.tsx +1 -1
- package/dist/components/command/Command.stories.tsx +52 -38
- package/dist/components/dialog/Dialog.stories.tsx +89 -84
- package/dist/components/divider/Divider.stories.tsx +86 -60
- package/dist/components/dot-loader/DotLoader.stories.tsx +12 -12
- package/dist/components/drawer/Drawer.stories.tsx +74 -44
- package/dist/components/drawer/index.tsx +3 -3
- package/dist/components/dropdown/Dropdown.stories.tsx +42 -32
- package/dist/components/helper-text/HelperText.stories.tsx +2 -2
- package/dist/components/hover-card/HoverCard.stories.tsx +211 -178
- package/dist/components/input/Input.stories.tsx +2 -2
- package/dist/components/input/index.tsx +2 -0
- package/dist/components/label/Label.stories.tsx +10 -10
- package/dist/components/list/List.stories.tsx +58 -44
- package/dist/components/marquee/Marquee.stories.tsx +131 -113
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +47 -35
- package/dist/components/overlay/Overlay.stories.tsx +98 -92
- package/dist/components/overlay/index.tsx +4 -4
- package/dist/components/popover/Popover.stories.tsx +132 -106
- package/dist/components/radio/Radio.stories.tsx +2 -2
- package/dist/components/resizable/Resizable.stories.tsx +186 -138
- package/dist/components/scroll-area/ScrollArea.stories.tsx +174 -120
- package/dist/components/search/Search.stories.tsx +81 -59
- package/dist/components/select/Select.stories.tsx +3 -1
- package/dist/components/sheet/Sheet.stories.tsx +68 -54
- package/dist/components/slider/Slider.stories.tsx +71 -47
- package/dist/components/stepper/Stepper.stories.tsx +16 -16
- package/dist/components/switch/Switch.stories.tsx +12 -12
- package/dist/components/table/Table.stories.tsx +8 -6
- package/dist/components/tabs/Tabs.stories.tsx +324 -268
- package/dist/components/textarea/TextArea.stories.tsx +1 -1
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +16 -10
- package/dist/components/toast/Toast.stories.tsx +51 -45
- package/dist/components/toggle/Toggle.stories.tsx +111 -89
- package/dist/components/tooltip/Tooltip.stories.tsx +160 -144
- package/dist/icons/Icons.stories.tsx +2 -2
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +287 -237
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +290 -248
- package/dist/icons/all-icons.tsx +97 -81
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +312 -270
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +294 -244
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +309 -279
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +294 -258
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +289 -255
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +288 -256
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +322 -288
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +340 -296
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +197 -177
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +390 -328
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +313 -277
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +367 -309
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +356 -308
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +280 -234
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +370 -326
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +300 -256
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +298 -262
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +294 -260
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +291 -259
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +286 -256
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +282 -256
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +292 -256
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +338 -290
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +167 -148
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +342 -296
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +342 -296
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +280 -238
- package/dist/icons/command-icon/CommandIcon.stories.tsx +328 -280
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +294 -256
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +285 -235
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +308 -266
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +271 -231
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +330 -278
- package/dist/icons/email-icon/EmailIcon.stories.tsx +303 -257
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +324 -286
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +317 -271
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +320 -272
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +322 -280
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +315 -277
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +199 -177
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +304 -264
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +311 -277
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +327 -287
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +314 -278
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +113 -98
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +274 -226
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +349 -303
- package/dist/icons/head-icon/HeadIcon.stories.tsx +286 -246
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +312 -268
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +246 -210
- package/dist/icons/image-icon/ImageIcon.stories.tsx +330 -284
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +326 -282
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +330 -294
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +288 -234
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +386 -330
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +305 -263
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +295 -259
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +296 -256
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +322 -282
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +399 -359
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +314 -272
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +238 -206
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +322 -276
- package/dist/icons/message-icon/MessageIcon.stories.tsx +192 -170
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +348 -304
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +191 -167
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +380 -326
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +345 -291
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +310 -266
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +311 -271
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +311 -271
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +309 -271
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +248 -210
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +310 -262
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +274 -236
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +324 -280
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +323 -281
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +288 -240
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +315 -273
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +278 -234
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +161 -151
- package/dist/icons/search-icon/SearchIcon.stories.tsx +324 -284
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +306 -264
- package/dist/icons/share-icon/ShareIcon.stories.tsx +314 -272
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +281 -235
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +309 -250
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +317 -279
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +315 -279
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +299 -253
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +185 -169
- package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +192 -168
- package/dist/icons/spinner-solid-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +212 -178
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
- package/dist/icons/star-icon/StarIcon.stories.tsx +290 -244
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +286 -234
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +272 -230
- package/dist/icons/sun-icon/SunIcon.stories.tsx +262 -226
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +321 -279
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +332 -282
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +394 -342
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +338 -290
- package/dist/icons/tick-icon/TickIcon.stories.tsx +364 -315
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +293 -253
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +396 -338
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +291 -247
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +309 -271
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +336 -290
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +382 -334
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +349 -305
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +327 -295
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +336 -296
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +314 -274
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +311 -261
- package/dist/index.cjs +84 -84
- package/dist/index.js +84 -84
- package/dist/styles/aural-all-theme.css +1222 -0
- package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
- package/dist/styles/aural-light-theme.css +1047 -0
- package/package.json +1 -1
|
@@ -11,9 +11,9 @@ const meta: Meta<typeof EyeOpenIcon> = {
|
|
|
11
11
|
backgrounds: {
|
|
12
12
|
default: "dark",
|
|
13
13
|
values: [
|
|
14
|
-
{ name: "dark", value: "
|
|
15
|
-
{ name: "darker", value: "
|
|
16
|
-
{ name: "light", value: "
|
|
14
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
15
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
16
|
+
{ name: "light", value: "var(--color-fm-neutral-1100)" },
|
|
17
17
|
],
|
|
18
18
|
},
|
|
19
19
|
docs: {
|
|
@@ -40,59 +40,59 @@ const meta: Meta<typeof EyeOpenIcon> = {
|
|
|
40
40
|
background: transparent ;
|
|
41
41
|
}
|
|
42
42
|
body {
|
|
43
|
-
background:
|
|
43
|
+
background: var(--color-fm-surface-primary) ;
|
|
44
44
|
}
|
|
45
45
|
#storybook-docs {
|
|
46
|
-
background:
|
|
46
|
+
background: var(--color-fm-surface-primary) ;
|
|
47
47
|
}
|
|
48
48
|
.sbdocs-preview {
|
|
49
49
|
background: transparent ;
|
|
50
50
|
border: none ;
|
|
51
51
|
}
|
|
52
52
|
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
-
color:
|
|
53
|
+
color: var(--color-fm-icon-active) ;
|
|
54
54
|
}
|
|
55
55
|
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color:
|
|
56
|
+
color: var(--color-fm-secondary) ;
|
|
57
57
|
}
|
|
58
58
|
.sbdocs-code {
|
|
59
|
-
background:
|
|
60
|
-
color:
|
|
61
|
-
border: 1px solid
|
|
59
|
+
background: var(--color-fm-surface-secondary) ;
|
|
60
|
+
color: var(--color-fm-secondary-500) ;
|
|
61
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
62
62
|
}
|
|
63
63
|
.sbdocs-pre {
|
|
64
|
-
background:
|
|
65
|
-
border: 1px solid
|
|
64
|
+
background: var(--color-fm-surface-secondary) ;
|
|
65
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
66
66
|
}
|
|
67
67
|
.sbdocs-table {
|
|
68
|
-
background:
|
|
69
|
-
border: 1px solid
|
|
68
|
+
background: var(--color-fm-surface-secondary) ;
|
|
69
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
70
70
|
}
|
|
71
71
|
.sbdocs-table th {
|
|
72
|
-
background:
|
|
73
|
-
color:
|
|
74
|
-
border-bottom: 1px solid
|
|
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
75
|
}
|
|
76
76
|
.sbdocs-table td {
|
|
77
|
-
color:
|
|
78
|
-
border-bottom: 1px solid
|
|
77
|
+
color: var(--color-fm-secondary) ;
|
|
78
|
+
border-bottom: 1px solid var(--color-fm-divider-tertiary) ;
|
|
79
79
|
}
|
|
80
80
|
`}
|
|
81
81
|
</style>
|
|
82
82
|
|
|
83
|
-
<div className="
|
|
83
|
+
<div className="bg-fm-surface-primary min-h-screen">
|
|
84
84
|
{/* Header */}
|
|
85
|
-
<div className="relative overflow-hidden border-b
|
|
86
|
-
<div className="absolute inset-0 bg-
|
|
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-positive/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
87
87
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
88
|
<div className="!space-y-6 text-center">
|
|
89
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
90
|
-
<EyeOpenIcon className="h-12 w-12
|
|
89
|
+
<div className="border-fm-icon-info/30 from-fm-icon-info/20 to-fm-icon-positive/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
+
<EyeOpenIcon className="text-fm-icon-info h-12 w-12" />
|
|
91
91
|
</div>
|
|
92
92
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
93
|
EyeOpenIcon
|
|
94
94
|
</h1>
|
|
95
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed
|
|
95
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
96
|
A visibility toggle icon for showing content, password
|
|
97
97
|
fields, and interactive elements. Features an open eye
|
|
98
98
|
design that clearly indicates visible or public state.
|
|
@@ -104,26 +104,30 @@ const meta: Meta<typeof EyeOpenIcon> = {
|
|
|
104
104
|
{/* Stats */}
|
|
105
105
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
106
106
|
<div className="text-center">
|
|
107
|
-
<div className="text-3xl font-bold
|
|
107
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
108
108
|
Visible
|
|
109
109
|
</div>
|
|
110
|
-
<div className="text-
|
|
110
|
+
<div className="text-fm-tertiary text-sm">
|
|
111
|
+
Content shown
|
|
112
|
+
</div>
|
|
111
113
|
</div>
|
|
112
|
-
<div className="h-8 w-px
|
|
114
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
113
115
|
<div className="text-center">
|
|
114
|
-
<div className="text-3xl font-bold
|
|
116
|
+
<div className="text-fm-icon-positive text-3xl font-bold">
|
|
115
117
|
Accessible
|
|
116
118
|
</div>
|
|
117
|
-
<div className="text-
|
|
119
|
+
<div className="text-fm-tertiary text-sm">
|
|
118
120
|
Screen reader friendly
|
|
119
121
|
</div>
|
|
120
122
|
</div>
|
|
121
|
-
<div className="h-8 w-px
|
|
123
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
122
124
|
<div className="text-center">
|
|
123
|
-
<div className="text-3xl font-bold
|
|
125
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
124
126
|
Interactive
|
|
125
127
|
</div>
|
|
126
|
-
<div className="text-
|
|
128
|
+
<div className="text-fm-tertiary text-sm">
|
|
129
|
+
Toggle states
|
|
130
|
+
</div>
|
|
127
131
|
</div>
|
|
128
132
|
</div>
|
|
129
133
|
</div>
|
|
@@ -134,16 +138,16 @@ const meta: Meta<typeof EyeOpenIcon> = {
|
|
|
134
138
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
135
139
|
{/* Quick Usage */}
|
|
136
140
|
<div className="!space-y-8">
|
|
137
|
-
<h2 className="text-center text-3xl font-bold
|
|
141
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
138
142
|
Quick Start
|
|
139
143
|
</h2>
|
|
140
144
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
141
145
|
<div className="!space-y-4">
|
|
142
|
-
<h3 className="text-xl font-semibold
|
|
146
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
143
147
|
Basic Usage
|
|
144
148
|
</h3>
|
|
145
|
-
<div className="rounded-lg
|
|
146
|
-
<pre className="overflow-x-auto text-sm
|
|
149
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
150
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
147
151
|
{`import { EyeOpenIcon } from "@icons/eye-open-icon"
|
|
148
152
|
|
|
149
153
|
function PasswordField() {
|
|
@@ -169,19 +173,19 @@ function PasswordField() {
|
|
|
169
173
|
</div>
|
|
170
174
|
|
|
171
175
|
<div className="!space-y-4">
|
|
172
|
-
<h3 className="text-xl font-semibold
|
|
176
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
173
177
|
Live Preview
|
|
174
178
|
</h3>
|
|
175
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
179
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
176
180
|
<div className="relative">
|
|
177
181
|
<input
|
|
178
182
|
type="text"
|
|
179
183
|
placeholder="Visible password"
|
|
180
184
|
defaultValue="mypassword123"
|
|
181
|
-
className="
|
|
185
|
+
className="border-fm-divider-primary bg-fm-surface-secondary text-fm-icon-active rounded-lg border px-3 py-2 pr-10 placeholder-white/50"
|
|
182
186
|
/>
|
|
183
|
-
<button className="absolute top-1/2 right-2 -translate-y-1/2 rounded p-1
|
|
184
|
-
<EyeOpenIcon className="h-5 w-5
|
|
187
|
+
<button className="hover:bg-fm-surface-secondary absolute top-1/2 right-2 -translate-y-1/2 rounded p-1">
|
|
188
|
+
<EyeOpenIcon className="text-fm-icon-info h-5 w-5" />
|
|
185
189
|
</button>
|
|
186
190
|
</div>
|
|
187
191
|
</div>
|
|
@@ -191,118 +195,130 @@ function PasswordField() {
|
|
|
191
195
|
|
|
192
196
|
{/* Props Documentation */}
|
|
193
197
|
<div className="!space-y-8">
|
|
194
|
-
<h2 className="text-center text-3xl font-bold
|
|
198
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
195
199
|
Props & Configuration
|
|
196
200
|
</h2>
|
|
197
201
|
|
|
198
|
-
<div className="overflow-hidden rounded-lg border
|
|
199
|
-
<div className="bg-
|
|
200
|
-
<h3 className="text-xl font-semibold
|
|
202
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
203
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
204
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
205
|
+
Props
|
|
206
|
+
</h3>
|
|
201
207
|
</div>
|
|
202
208
|
<table className="!my-0 w-full">
|
|
203
|
-
<thead className="bg-
|
|
204
|
-
<tr className="border-
|
|
205
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
209
|
+
<thead className="bg-fm-surface-secondary">
|
|
210
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
211
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
206
212
|
Prop
|
|
207
213
|
</th>
|
|
208
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
214
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
209
215
|
Type
|
|
210
216
|
</th>
|
|
211
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
217
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
212
218
|
Default
|
|
213
219
|
</th>
|
|
214
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
220
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
215
221
|
Description
|
|
216
222
|
</th>
|
|
217
223
|
</tr>
|
|
218
224
|
</thead>
|
|
219
225
|
<tbody>
|
|
220
226
|
{" "}
|
|
221
|
-
<tr className="
|
|
222
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
227
|
+
<tr className="bg-fm-surface-secondary!">
|
|
228
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
223
229
|
withAccessibility
|
|
224
230
|
</td>
|
|
225
|
-
<td className="px-6 py-4 text-sm
|
|
231
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
226
232
|
boolean
|
|
227
233
|
</td>
|
|
228
|
-
<td className="px-6 py-4 text-sm
|
|
234
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
229
235
|
true
|
|
230
236
|
</td>
|
|
231
|
-
<td className="px-6 py-4 text-sm
|
|
237
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
232
238
|
Whether to wrap the icon with accessibility feature
|
|
233
239
|
</td>
|
|
234
240
|
</tr>
|
|
235
|
-
<tr className="border-
|
|
236
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
241
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
242
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
237
243
|
height
|
|
238
244
|
</td>
|
|
239
|
-
<td className="px-6 py-4 text-sm
|
|
245
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
240
246
|
number | string
|
|
241
247
|
</td>
|
|
242
|
-
<td className="px-6 py-4 text-sm
|
|
243
|
-
|
|
248
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
249
|
+
24
|
|
250
|
+
</td>
|
|
251
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
244
252
|
Height of the icon in pixels
|
|
245
253
|
</td>
|
|
246
254
|
</tr>
|
|
247
|
-
<tr className="border-
|
|
248
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
255
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
256
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
249
257
|
stroke
|
|
250
258
|
</td>
|
|
251
|
-
<td className="px-6 py-4 text-sm
|
|
259
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
252
260
|
string
|
|
253
261
|
</td>
|
|
254
|
-
<td className="px-6 py-4 text-sm
|
|
262
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
255
263
|
currentColor
|
|
256
264
|
</td>
|
|
257
|
-
<td className="px-6 py-4 text-sm
|
|
265
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
258
266
|
Stroke color of the icon
|
|
259
267
|
</td>
|
|
260
268
|
</tr>
|
|
261
|
-
<tr className="border-
|
|
262
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
269
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
270
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
263
271
|
strokeWidth
|
|
264
272
|
</td>
|
|
265
|
-
<td className="px-6 py-4 text-sm
|
|
273
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
266
274
|
string | number
|
|
267
275
|
</td>
|
|
268
|
-
<td className="px-6 py-4 text-sm
|
|
269
|
-
|
|
276
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
277
|
+
1
|
|
278
|
+
</td>
|
|
279
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
270
280
|
Stroke width of the icon lines
|
|
271
281
|
</td>
|
|
272
282
|
</tr>
|
|
273
|
-
<tr className="border-
|
|
274
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
283
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
284
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
275
285
|
className
|
|
276
286
|
</td>
|
|
277
|
-
<td className="px-6 py-4 text-sm
|
|
287
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
288
|
string
|
|
279
289
|
</td>
|
|
280
|
-
<td className="px-6 py-4 text-sm
|
|
281
|
-
|
|
290
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
291
|
+
-
|
|
292
|
+
</td>
|
|
293
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
282
294
|
CSS classes for styling (use for overrides)
|
|
283
295
|
</td>
|
|
284
296
|
</tr>
|
|
285
|
-
<tr className="border-
|
|
286
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
297
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
298
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
287
299
|
onClick
|
|
288
300
|
</td>
|
|
289
|
-
<td className="px-6 py-4 text-sm
|
|
301
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
290
302
|
function
|
|
291
303
|
</td>
|
|
292
|
-
<td className="px-6 py-4 text-sm
|
|
293
|
-
|
|
304
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
305
|
+
-
|
|
306
|
+
</td>
|
|
307
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
294
308
|
Click handler for toggle functionality
|
|
295
309
|
</td>
|
|
296
310
|
</tr>
|
|
297
|
-
<tr className="
|
|
298
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
311
|
+
<tr className="bg-fm-surface-secondary!">
|
|
312
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
299
313
|
...svgProps
|
|
300
314
|
</td>
|
|
301
|
-
<td className="px-6 py-4 text-sm
|
|
315
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
302
316
|
SVGProps
|
|
303
317
|
</td>
|
|
304
|
-
<td className="px-6 py-4 text-sm
|
|
305
|
-
|
|
318
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
319
|
+
-
|
|
320
|
+
</td>
|
|
321
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
306
322
|
All standard SVG element props
|
|
307
323
|
</td>
|
|
308
324
|
</tr>
|
|
@@ -313,50 +329,62 @@ function PasswordField() {
|
|
|
313
329
|
|
|
314
330
|
{/* Size Variations */}
|
|
315
331
|
<div className="!space-y-8">
|
|
316
|
-
<h2 className="text-center text-3xl font-bold
|
|
332
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
317
333
|
Size Variations
|
|
318
334
|
</h2>
|
|
319
|
-
<div className="rounded-lg border
|
|
335
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
320
336
|
<div className="!space-y-6">
|
|
321
337
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
322
338
|
<div className="!space-y-4">
|
|
323
|
-
<h3 className="text-lg font-semibold
|
|
339
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
324
340
|
Standard Sizes
|
|
325
341
|
</h3>
|
|
326
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
342
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
327
343
|
<div className="text-center">
|
|
328
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-3 w-3
|
|
329
|
-
<span className="text-
|
|
344
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
345
|
+
<span className="text-fm-tertiary text-xs">
|
|
346
|
+
12px
|
|
347
|
+
</span>
|
|
330
348
|
</div>
|
|
331
349
|
<div className="text-center">
|
|
332
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-4 w-4
|
|
333
|
-
<span className="text-
|
|
350
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
351
|
+
<span className="text-fm-tertiary text-xs">
|
|
352
|
+
16px
|
|
353
|
+
</span>
|
|
334
354
|
</div>
|
|
335
355
|
<div className="text-center">
|
|
336
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-5 w-5
|
|
337
|
-
<span className="text-
|
|
356
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
357
|
+
<span className="text-fm-tertiary text-xs">
|
|
358
|
+
20px
|
|
359
|
+
</span>
|
|
338
360
|
</div>
|
|
339
361
|
<div className="text-center">
|
|
340
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-6 w-6
|
|
341
|
-
<span className="text-
|
|
362
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
363
|
+
<span className="text-fm-tertiary text-xs">
|
|
364
|
+
24px
|
|
365
|
+
</span>
|
|
342
366
|
</div>
|
|
343
367
|
<div className="text-center">
|
|
344
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-8 w-8
|
|
345
|
-
<span className="text-
|
|
368
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
369
|
+
<span className="text-fm-tertiary text-xs">
|
|
370
|
+
32px
|
|
371
|
+
</span>
|
|
346
372
|
</div>
|
|
347
373
|
<div className="text-center">
|
|
348
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-12 w-12
|
|
349
|
-
<span className="text-
|
|
374
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
375
|
+
<span className="text-fm-tertiary text-xs">
|
|
376
|
+
48px
|
|
377
|
+
</span>
|
|
350
378
|
</div>
|
|
351
379
|
</div>
|
|
352
380
|
</div>
|
|
353
381
|
|
|
354
382
|
<div className="!space-y-4">
|
|
355
|
-
<h3 className="text-lg font-semibold
|
|
383
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
356
384
|
Code Example
|
|
357
385
|
</h3>
|
|
358
|
-
<div className="rounded-lg
|
|
359
|
-
<pre className="overflow-x-auto text-sm
|
|
386
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
387
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
360
388
|
{`// Small (16px)
|
|
361
389
|
<EyeOpenIcon className="h-4 w-4 " />
|
|
362
390
|
|
|
@@ -382,56 +410,56 @@ function PasswordField() {
|
|
|
382
410
|
|
|
383
411
|
{/* Color Variations */}
|
|
384
412
|
<div className="!space-y-8">
|
|
385
|
-
<h2 className="text-center text-3xl font-bold
|
|
413
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
386
414
|
Color Variations
|
|
387
415
|
</h2>
|
|
388
416
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
389
417
|
<div className="!space-y-4">
|
|
390
|
-
<h3 className="text-lg font-semibold
|
|
418
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
391
419
|
Semantic Colors
|
|
392
420
|
</h3>
|
|
393
|
-
<div className="!space-y-4 rounded-lg border
|
|
421
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
394
422
|
<div className="flex items-center gap-4">
|
|
395
|
-
<EyeOpenIcon className="h-6 w-6
|
|
423
|
+
<EyeOpenIcon className="text-fm-icon-info h-6 w-6" />
|
|
396
424
|
<div>
|
|
397
|
-
<div className="text-sm font-medium
|
|
425
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
398
426
|
Default / Visible
|
|
399
427
|
</div>
|
|
400
|
-
<div className="text-
|
|
401
|
-
text-
|
|
428
|
+
<div className="text-fm-tertiary text-xs">
|
|
429
|
+
text-fm-icon-info
|
|
402
430
|
</div>
|
|
403
431
|
</div>
|
|
404
432
|
</div>
|
|
405
433
|
<div className="flex items-center gap-4">
|
|
406
|
-
<EyeOpenIcon className="h-6 w-6
|
|
434
|
+
<EyeOpenIcon className="text-fm-icon-positive h-6 w-6" />
|
|
407
435
|
<div>
|
|
408
|
-
<div className="text-sm font-medium
|
|
436
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
409
437
|
Active
|
|
410
438
|
</div>
|
|
411
|
-
<div className="text-
|
|
412
|
-
text-
|
|
439
|
+
<div className="text-fm-tertiary text-xs">
|
|
440
|
+
text-fm-icon-positive
|
|
413
441
|
</div>
|
|
414
442
|
</div>
|
|
415
443
|
</div>
|
|
416
444
|
<div className="flex items-center gap-4">
|
|
417
|
-
<EyeOpenIcon className="h-6 w-6
|
|
445
|
+
<EyeOpenIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
418
446
|
<div>
|
|
419
|
-
<div className="text-sm font-medium
|
|
447
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
420
448
|
Interactive
|
|
421
449
|
</div>
|
|
422
|
-
<div className="text-
|
|
423
|
-
text-
|
|
450
|
+
<div className="text-fm-tertiary text-xs">
|
|
451
|
+
text-fm-secondary-600
|
|
424
452
|
</div>
|
|
425
453
|
</div>
|
|
426
454
|
</div>
|
|
427
455
|
<div className="flex items-center gap-4">
|
|
428
|
-
<EyeOpenIcon className="h-6 w-6
|
|
456
|
+
<EyeOpenIcon className="text-fm-tertiary h-6 w-6" />
|
|
429
457
|
<div>
|
|
430
|
-
<div className="text-sm font-medium
|
|
458
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
431
459
|
Neutral
|
|
432
460
|
</div>
|
|
433
|
-
<div className="text-
|
|
434
|
-
text-
|
|
461
|
+
<div className="text-fm-tertiary text-xs">
|
|
462
|
+
text-fm-tertiary
|
|
435
463
|
</div>
|
|
436
464
|
</div>
|
|
437
465
|
</div>
|
|
@@ -439,11 +467,11 @@ function PasswordField() {
|
|
|
439
467
|
</div>
|
|
440
468
|
|
|
441
469
|
<div className="!space-y-4">
|
|
442
|
-
<h3 className="text-lg font-semibold
|
|
470
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
443
471
|
Custom Colors
|
|
444
472
|
</h3>
|
|
445
|
-
<div className="rounded-lg
|
|
446
|
-
<pre className="overflow-x-auto text-sm
|
|
473
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
474
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
447
475
|
{`// Using Tailwind classes with
|
|
448
476
|
<EyeOpenIcon className="h-6 w-6 text-blue-400 " />
|
|
449
477
|
<EyeOpenIcon className="h-6 w-6 text-green-500 " />
|
|
@@ -469,39 +497,39 @@ function PasswordField() {
|
|
|
469
497
|
|
|
470
498
|
{/* Usage Examples */}
|
|
471
499
|
<div className="!space-y-8">
|
|
472
|
-
<h2 className="text-center text-3xl font-bold
|
|
500
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
473
501
|
Usage Examples
|
|
474
502
|
</h2>
|
|
475
503
|
|
|
476
504
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
477
505
|
{/* Password Field */}
|
|
478
506
|
<div className="!space-y-4">
|
|
479
|
-
<h3 className="text-lg font-semibold
|
|
507
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
480
508
|
Password Field Toggle
|
|
481
509
|
</h3>
|
|
482
510
|
<div className="!space-y-4">
|
|
483
511
|
<div className="!space-y-2">
|
|
484
|
-
<label className="text-sm font-medium
|
|
512
|
+
<label className="text-fm-icon-active! text-sm font-medium">
|
|
485
513
|
Password
|
|
486
514
|
</label>
|
|
487
515
|
<div className="relative">
|
|
488
516
|
<input
|
|
489
517
|
type="text"
|
|
490
|
-
className="w-full rounded-lg border
|
|
518
|
+
className="border-fm-divider-primary bg-fm-surface-secondary text-fm-icon-active! focus:border-fm-icon-info w-full rounded-lg border px-3 py-2 pr-10 placeholder-white/50 focus:ring-2 focus:ring-blue-400/20"
|
|
491
519
|
placeholder="Enter your password"
|
|
492
520
|
defaultValue="myvisiblepassword"
|
|
493
521
|
/>
|
|
494
|
-
<button className="absolute top-1/2 right-2 -translate-y-1/2 rounded p-1 transition-colors
|
|
495
|
-
<EyeOpenIcon className="h-5 w-5
|
|
522
|
+
<button className="hover:bg-fm-surface-secondary absolute top-1/2 right-2 -translate-y-1/2 rounded p-1 transition-colors">
|
|
523
|
+
<EyeOpenIcon className="text-fm-icon-info h-5 w-5" />
|
|
496
524
|
</button>
|
|
497
525
|
</div>
|
|
498
|
-
<p className="text-
|
|
526
|
+
<p className="text-fm-tertiary! text-xs">
|
|
499
527
|
Password is currently visible. Click the eye icon to
|
|
500
528
|
hide it.
|
|
501
529
|
</p>
|
|
502
530
|
</div>
|
|
503
|
-
<div className="rounded-lg
|
|
504
|
-
<pre className="overflow-x-auto text-sm
|
|
531
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
532
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
505
533
|
{`// Password visibility toggle
|
|
506
534
|
const [showPassword, setShowPassword] = useState(true)
|
|
507
535
|
|
|
@@ -528,32 +556,32 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
528
556
|
|
|
529
557
|
{/* Content Reveal */}
|
|
530
558
|
<div className="!space-y-4">
|
|
531
|
-
<h3 className="text-lg font-semibold
|
|
559
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
532
560
|
Content Reveal
|
|
533
561
|
</h3>
|
|
534
562
|
<div className="!space-y-4">
|
|
535
|
-
<div className="rounded-lg border
|
|
563
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
536
564
|
<div className="mb-3 flex items-center justify-between">
|
|
537
|
-
<span className="font-medium
|
|
565
|
+
<span className="text-fm-icon-active font-medium">
|
|
538
566
|
Protected Content
|
|
539
567
|
</span>
|
|
540
|
-
<button className="flex items-center gap-2 text-sm
|
|
568
|
+
<button className="text-fm-icon-info hover:text-fm-icon-info flex items-center gap-2 text-sm">
|
|
541
569
|
<EyeOpenIcon className="h-4 w-4" />
|
|
542
570
|
Visible
|
|
543
571
|
</button>
|
|
544
572
|
</div>
|
|
545
|
-
<div className="
|
|
573
|
+
<div className="border-fm-icon-info/20 from-fm-icon-info/10 to-fm-icon-positive/10 rounded-lg border bg-linear-to-r p-6 text-center">
|
|
546
574
|
<div className="mb-3 flex items-center justify-center gap-2">
|
|
547
|
-
<EyeOpenIcon className="h-6 w-6
|
|
548
|
-
<span className="font-medium
|
|
575
|
+
<EyeOpenIcon className="text-fm-icon-info h-6 w-6" />
|
|
576
|
+
<span className="text-fm-icon-active font-medium">
|
|
549
577
|
Content is visible
|
|
550
578
|
</span>
|
|
551
579
|
</div>
|
|
552
|
-
<p className="text-
|
|
580
|
+
<p className="text-fm-icon-active!/80 text-sm">
|
|
553
581
|
This sensitive information is now displayed. You can
|
|
554
582
|
view all details below.
|
|
555
583
|
</p>
|
|
556
|
-
<div className="mt-4 rounded
|
|
584
|
+
<div className="bg-fm-surface-secondary text-fm-secondary mt-4 rounded p-3 text-left text-sm">
|
|
557
585
|
Secret Key: sk_live_123456789
|
|
558
586
|
<br />
|
|
559
587
|
API Endpoint: https://api.example.com/v1
|
|
@@ -562,8 +590,8 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
562
590
|
</div>
|
|
563
591
|
</div>
|
|
564
592
|
</div>
|
|
565
|
-
<div className="rounded-lg
|
|
566
|
-
<pre className="overflow-x-auto text-sm
|
|
593
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
594
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
567
595
|
{`// Content reveal with visible state
|
|
568
596
|
<div className="border border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-green-500/10 p-6 text-center rounded-lg">
|
|
569
597
|
<div className="flex items-center justify-center gap-2 mb-3">
|
|
@@ -581,56 +609,56 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
581
609
|
|
|
582
610
|
{/* Visibility Settings */}
|
|
583
611
|
<div className="!space-y-4">
|
|
584
|
-
<h3 className="text-lg font-semibold
|
|
612
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
585
613
|
Visibility Settings
|
|
586
614
|
</h3>
|
|
587
615
|
<div className="!space-y-4">
|
|
588
616
|
<div className="!space-y-3">
|
|
589
|
-
<div className="flex items-center justify-between rounded-lg border
|
|
617
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between rounded-lg border p-4">
|
|
590
618
|
<div className="flex items-center gap-3">
|
|
591
|
-
<EyeOpenIcon className="h-5 w-5
|
|
619
|
+
<EyeOpenIcon className="text-fm-icon-info h-5 w-5" />
|
|
592
620
|
<div>
|
|
593
|
-
<div className="text-sm font-medium
|
|
621
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
594
622
|
Profile Visibility
|
|
595
623
|
</div>
|
|
596
|
-
<div className="text-
|
|
624
|
+
<div className="text-fm-tertiary text-xs">
|
|
597
625
|
Your profile is visible to everyone
|
|
598
626
|
</div>
|
|
599
627
|
</div>
|
|
600
628
|
</div>
|
|
601
629
|
<div className="flex items-center">
|
|
602
|
-
<span className="mr-3 text-xs
|
|
630
|
+
<span className="text-fm-icon-info mr-3 text-xs">
|
|
603
631
|
Public
|
|
604
632
|
</span>
|
|
605
|
-
<div className="relative h-6 w-11 rounded-full
|
|
606
|
-
<div className="absolute top-1 right-1 h-4 w-4 rounded-full
|
|
633
|
+
<div className="bg-fm-icon-info relative h-6 w-11 rounded-full">
|
|
634
|
+
<div className="bg-fm-surface-contrast absolute top-1 right-1 h-4 w-4 rounded-full transition-transform"></div>
|
|
607
635
|
</div>
|
|
608
636
|
</div>
|
|
609
637
|
</div>
|
|
610
|
-
<div className="flex items-center justify-between rounded-lg border
|
|
638
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between rounded-lg border p-4">
|
|
611
639
|
<div className="flex items-center gap-3">
|
|
612
|
-
<EyeOpenIcon className="h-5 w-5
|
|
640
|
+
<EyeOpenIcon className="text-fm-icon-positive h-5 w-5" />
|
|
613
641
|
<div>
|
|
614
|
-
<div className="text-sm font-medium
|
|
642
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
615
643
|
Activity Status
|
|
616
644
|
</div>
|
|
617
|
-
<div className="text-
|
|
645
|
+
<div className="text-fm-tertiary text-xs">
|
|
618
646
|
Show your online status
|
|
619
647
|
</div>
|
|
620
648
|
</div>
|
|
621
649
|
</div>
|
|
622
650
|
<div className="flex items-center">
|
|
623
|
-
<span className="mr-3 text-xs
|
|
651
|
+
<span className="text-fm-icon-positive mr-3 text-xs">
|
|
624
652
|
Visible
|
|
625
653
|
</span>
|
|
626
|
-
<div className="relative h-6 w-11 rounded-full
|
|
627
|
-
<div className="absolute top-1 right-1 h-4 w-4 rounded-full
|
|
654
|
+
<div className="bg-fm-icon-positive relative h-6 w-11 rounded-full">
|
|
655
|
+
<div className="bg-fm-surface-contrast absolute top-1 right-1 h-4 w-4 rounded-full transition-transform"></div>
|
|
628
656
|
</div>
|
|
629
657
|
</div>
|
|
630
658
|
</div>
|
|
631
659
|
</div>
|
|
632
|
-
<div className="rounded-lg
|
|
633
|
-
<pre className="overflow-x-auto text-sm
|
|
660
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
661
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
634
662
|
{`// Visibility setting item
|
|
635
663
|
<div className="flex items-center justify-between p-4 border border-white/10 bg-white/5 rounded-lg">
|
|
636
664
|
<div className="flex items-center gap-3">
|
|
@@ -649,35 +677,35 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
649
677
|
|
|
650
678
|
{/* Data Transparency */}
|
|
651
679
|
<div className="!space-y-4">
|
|
652
|
-
<h3 className="text-lg font-semibold
|
|
680
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
653
681
|
Data Transparency
|
|
654
682
|
</h3>
|
|
655
683
|
<div className="!space-y-4">
|
|
656
|
-
<div className="
|
|
684
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
657
685
|
<div className="flex items-start gap-3">
|
|
658
|
-
<EyeOpenIcon className="mt-0.5 h-5 w-5 flex-shrink-0
|
|
686
|
+
<EyeOpenIcon className="text-fm-icon-info mt-0.5 h-5 w-5 flex-shrink-0" />
|
|
659
687
|
<div>
|
|
660
|
-
<h4 className="font-medium
|
|
688
|
+
<h4 className="text-fm-icon-info! font-medium">
|
|
661
689
|
Transparent Data Usage
|
|
662
690
|
</h4>
|
|
663
|
-
<p className="text-
|
|
691
|
+
<p className="text-fm-icon-info!/80 text-sm">
|
|
664
692
|
Your data usage is fully visible and trackable.
|
|
665
693
|
You can see exactly how your information is being
|
|
666
694
|
processed.
|
|
667
695
|
</p>
|
|
668
696
|
<div className="mt-2 flex gap-2">
|
|
669
|
-
<span className="inline-flex items-center rounded
|
|
697
|
+
<span className="bg-fm-icon-info/20 text-fm-icon-info inline-flex items-center rounded px-2 py-1 text-xs">
|
|
670
698
|
Fully transparent
|
|
671
699
|
</span>
|
|
672
|
-
<span className="inline-flex items-center rounded
|
|
700
|
+
<span className="bg-fm-icon-positive/20 text-fm-icon-positive inline-flex items-center rounded px-2 py-1 text-xs">
|
|
673
701
|
Auditable
|
|
674
702
|
</span>
|
|
675
703
|
</div>
|
|
676
704
|
</div>
|
|
677
705
|
</div>
|
|
678
706
|
</div>
|
|
679
|
-
<div className="rounded-lg
|
|
680
|
-
<pre className="overflow-x-auto text-sm
|
|
707
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
708
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
681
709
|
{`// Data transparency notice
|
|
682
710
|
<div className="border border-blue-500/20 bg-blue-500/10 p-4 rounded-lg">
|
|
683
711
|
<div className="flex items-start gap-3">
|
|
@@ -699,64 +727,64 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
699
727
|
|
|
700
728
|
{/* Accessibility */}
|
|
701
729
|
<div className="!space-y-8">
|
|
702
|
-
<h2 className="text-center text-3xl font-bold
|
|
730
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
703
731
|
Accessibility Features
|
|
704
732
|
</h2>
|
|
705
733
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
706
|
-
<div className="!space-y-4 rounded-lg border
|
|
707
|
-
<h3 className="text-lg font-semibold
|
|
734
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
735
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
708
736
|
✅ Built-in Features
|
|
709
737
|
</h3>
|
|
710
|
-
<ul className="!space-y-2 text-sm
|
|
711
|
-
<li className="
|
|
738
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
739
|
+
<li className="text-fm-secondary!">
|
|
712
740
|
Uses Radix UI AccessibleIcon wrapper
|
|
713
741
|
</li>
|
|
714
|
-
<li className="
|
|
742
|
+
<li className="text-fm-secondary!">
|
|
715
743
|
Provides screen reader label "Eye Open icon"
|
|
716
744
|
</li>
|
|
717
|
-
<li className="
|
|
745
|
+
<li className="text-fm-secondary!">
|
|
718
746
|
Supports keyboard navigation when interactive
|
|
719
747
|
</li>
|
|
720
|
-
<li className="
|
|
748
|
+
<li className="text-fm-secondary!">
|
|
721
749
|
Maintains proper color contrast ratios
|
|
722
750
|
</li>
|
|
723
|
-
<li className="
|
|
751
|
+
<li className="text-fm-secondary!">
|
|
724
752
|
Scales with user's font size preferences
|
|
725
753
|
</li>
|
|
726
754
|
</ul>
|
|
727
755
|
</div>
|
|
728
756
|
|
|
729
|
-
<div className="!space-y-4 rounded-lg border
|
|
730
|
-
<h3 className="text-lg font-semibold
|
|
757
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
758
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
731
759
|
💡 Best Practices
|
|
732
760
|
</h3>
|
|
733
|
-
<ul className="!space-y-2 text-sm
|
|
734
|
-
<li className="
|
|
761
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
762
|
+
<li className="text-fm-secondary!">
|
|
735
763
|
Always provide clear button labels for toggle actions
|
|
736
764
|
</li>
|
|
737
|
-
<li className="
|
|
765
|
+
<li className="text-fm-secondary!">
|
|
738
766
|
Use consistent placement in form fields
|
|
739
767
|
</li>
|
|
740
|
-
<li className="
|
|
768
|
+
<li className="text-fm-secondary!">
|
|
741
769
|
Ensure sufficient touch target size (44px minimum)
|
|
742
770
|
</li>
|
|
743
|
-
<li className="
|
|
771
|
+
<li className="text-fm-secondary!">
|
|
744
772
|
Provide visible focus states for keyboard users
|
|
745
773
|
</li>
|
|
746
|
-
<li className="
|
|
774
|
+
<li className="text-fm-secondary!">
|
|
747
775
|
Consider screen reader announcements for state changes
|
|
748
776
|
</li>
|
|
749
777
|
</ul>
|
|
750
778
|
</div>
|
|
751
779
|
</div>
|
|
752
780
|
|
|
753
|
-
<div className="rounded-lg border
|
|
754
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
781
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
782
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
755
783
|
Proper ARIA Implementation
|
|
756
784
|
</h3>
|
|
757
785
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
758
|
-
<div className="rounded-lg
|
|
759
|
-
<pre className="overflow-x-auto text-sm
|
|
786
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
787
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
760
788
|
{`// Password toggle with proper ARIA
|
|
761
789
|
<button
|
|
762
790
|
aria-label={showPassword ? "Hide password" : "Show password"}
|
|
@@ -785,13 +813,13 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
785
813
|
</pre>
|
|
786
814
|
</div>
|
|
787
815
|
<div className="!space-y-4">
|
|
788
|
-
<p className="text-
|
|
816
|
+
<p className="text-fm-secondary! text-sm">
|
|
789
817
|
When using EyeOpenIcon for interactive elements, always
|
|
790
818
|
provide descriptive aria-label attributes that explain
|
|
791
819
|
the current state and what will happen when activated.
|
|
792
820
|
</p>
|
|
793
|
-
<div className="
|
|
794
|
-
<div className="flex items-center gap-2 text-sm
|
|
821
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
822
|
+
<div className="text-fm-icon-info flex items-center gap-2 text-sm">
|
|
795
823
|
<EyeOpenIcon className="h-4 w-4" />
|
|
796
824
|
<span>
|
|
797
825
|
Screen readers need context about visibility states
|
|
@@ -805,44 +833,54 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
805
833
|
|
|
806
834
|
{/* Related Icons */}
|
|
807
835
|
<div className="!space-y-8">
|
|
808
|
-
<h2 className="text-center text-3xl font-bold
|
|
836
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
809
837
|
Related Icons
|
|
810
838
|
</h2>
|
|
811
839
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
812
|
-
<div className="!space-y-3 rounded-lg border
|
|
813
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
840
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
841
|
+
<div className="bg-fm-icon-inactive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
814
842
|
<span className="text-2xl">🙈</span>
|
|
815
843
|
</div>
|
|
816
844
|
<div>
|
|
817
|
-
<div className="font-medium
|
|
818
|
-
|
|
845
|
+
<div className="text-fm-icon-active font-medium">
|
|
846
|
+
EyeCloseIcon
|
|
847
|
+
</div>
|
|
848
|
+
<div className="text-fm-tertiary text-xs">
|
|
849
|
+
Hide content
|
|
850
|
+
</div>
|
|
819
851
|
</div>
|
|
820
852
|
</div>
|
|
821
|
-
<div className="!space-y-3 rounded-lg border
|
|
822
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
853
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
854
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
823
855
|
<span className="text-2xl">✅</span>
|
|
824
856
|
</div>
|
|
825
857
|
<div>
|
|
826
|
-
<div className="font-medium
|
|
827
|
-
|
|
858
|
+
<div className="text-fm-icon-active font-medium">
|
|
859
|
+
CheckIcon
|
|
860
|
+
</div>
|
|
861
|
+
<div className="text-fm-tertiary text-xs">Verified</div>
|
|
828
862
|
</div>
|
|
829
863
|
</div>
|
|
830
|
-
<div className="!space-y-3 rounded-lg border
|
|
831
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
864
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
865
|
+
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
832
866
|
<span className="text-2xl">🛡️</span>
|
|
833
867
|
</div>
|
|
834
868
|
<div>
|
|
835
|
-
<div className="font-medium
|
|
836
|
-
|
|
869
|
+
<div className="text-fm-icon-active font-medium">
|
|
870
|
+
ShieldIcon
|
|
871
|
+
</div>
|
|
872
|
+
<div className="text-fm-tertiary text-xs">Security</div>
|
|
837
873
|
</div>
|
|
838
874
|
</div>
|
|
839
|
-
<div className="!space-y-3 rounded-lg border
|
|
840
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
875
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
876
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
841
877
|
<span className="text-2xl">⚙️</span>
|
|
842
878
|
</div>
|
|
843
879
|
<div>
|
|
844
|
-
<div className="font-medium
|
|
845
|
-
|
|
880
|
+
<div className="text-fm-icon-active font-medium">
|
|
881
|
+
SettingsIcon
|
|
882
|
+
</div>
|
|
883
|
+
<div className="text-fm-tertiary text-xs">Configure</div>
|
|
846
884
|
</div>
|
|
847
885
|
</div>
|
|
848
886
|
</div>
|
|
@@ -850,14 +888,14 @@ const [showPassword, setShowPassword] = useState(true)
|
|
|
850
888
|
</div>
|
|
851
889
|
|
|
852
890
|
{/* Footer */}
|
|
853
|
-
<div className="border-
|
|
891
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
854
892
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
855
893
|
<div className="!space-y-4 text-center">
|
|
856
|
-
<p className="
|
|
894
|
+
<p className="text-fm-tertiary!">
|
|
857
895
|
EyeOpenIcon is part of the Aural UI icon library, built with
|
|
858
896
|
visibility and accessibility in mind.
|
|
859
897
|
</p>
|
|
860
|
-
<p className="text-
|
|
898
|
+
<p className="text-fm-placeholder! text-sm">
|
|
861
899
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
862
900
|
compatibility and follow WCAG guidelines.
|
|
863
901
|
</p>
|
|
@@ -910,20 +948,20 @@ const storyParameters = {
|
|
|
910
948
|
backgrounds: {
|
|
911
949
|
default: "dark",
|
|
912
950
|
values: [
|
|
913
|
-
{ name: "dark", value: "
|
|
914
|
-
{ name: "darker", value: "
|
|
951
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
952
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
915
953
|
],
|
|
916
954
|
},
|
|
917
955
|
}
|
|
918
956
|
|
|
919
957
|
export const Default: Story = {
|
|
920
958
|
args: {
|
|
921
|
-
className: "h-6 w-6 text-
|
|
959
|
+
className: "h-6 w-6 text-fm-icon-info ",
|
|
922
960
|
withAccessibility: true,
|
|
923
961
|
},
|
|
924
962
|
parameters: storyParameters,
|
|
925
963
|
render: (args) => (
|
|
926
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
964
|
+
<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">
|
|
927
965
|
<EyeOpenIcon {...args} />
|
|
928
966
|
</div>
|
|
929
967
|
),
|
|
@@ -940,30 +978,30 @@ export const SizeVariations: Story = {
|
|
|
940
978
|
},
|
|
941
979
|
},
|
|
942
980
|
render: () => (
|
|
943
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
981
|
+
<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">
|
|
944
982
|
<div className="text-center">
|
|
945
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-3 w-3
|
|
946
|
-
<span className="text-
|
|
983
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
984
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
947
985
|
</div>
|
|
948
986
|
<div className="text-center">
|
|
949
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-4 w-4
|
|
950
|
-
<span className="text-
|
|
987
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
988
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
951
989
|
</div>
|
|
952
990
|
<div className="text-center">
|
|
953
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-5 w-5
|
|
954
|
-
<span className="text-
|
|
991
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
992
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
955
993
|
</div>
|
|
956
994
|
<div className="text-center">
|
|
957
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-6 w-6
|
|
958
|
-
<span className="text-
|
|
995
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
996
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
959
997
|
</div>
|
|
960
998
|
<div className="text-center">
|
|
961
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-8 w-8
|
|
962
|
-
<span className="text-
|
|
999
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
1000
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
963
1001
|
</div>
|
|
964
1002
|
<div className="text-center">
|
|
965
|
-
<EyeOpenIcon className="!mx-auto mb-2 h-12 w-12
|
|
966
|
-
<span className="text-
|
|
1003
|
+
<EyeOpenIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
1004
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
967
1005
|
</div>
|
|
968
1006
|
</div>
|
|
969
1007
|
),
|
|
@@ -980,34 +1018,40 @@ export const ColorVariations: Story = {
|
|
|
980
1018
|
},
|
|
981
1019
|
},
|
|
982
1020
|
render: () => (
|
|
983
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1021
|
+
<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">
|
|
984
1022
|
<div className="text-center">
|
|
985
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
986
|
-
<EyeOpenIcon className="h-8 w-8
|
|
1023
|
+
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1024
|
+
<EyeOpenIcon className="text-fm-icon-info h-8 w-8" />
|
|
987
1025
|
</div>
|
|
988
|
-
<div className="text-sm font-medium
|
|
989
|
-
<div className="text-
|
|
1026
|
+
<div className="text-fm-icon-active text-sm font-medium">Default</div>
|
|
1027
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
990
1028
|
</div>
|
|
991
1029
|
<div className="text-center">
|
|
992
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
993
|
-
<EyeOpenIcon className="h-8 w-8
|
|
1030
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1031
|
+
<EyeOpenIcon className="text-fm-icon-positive h-8 w-8" />
|
|
1032
|
+
</div>
|
|
1033
|
+
<div className="text-fm-icon-active text-sm font-medium">Active</div>
|
|
1034
|
+
<div className="text-fm-icon-positive text-xs">
|
|
1035
|
+
text-fm-icon-positive
|
|
994
1036
|
</div>
|
|
995
|
-
<div className="text-sm font-medium text-white">Active</div>
|
|
996
|
-
<div className="text-xs text-green-400">text-green-400</div>
|
|
997
1037
|
</div>
|
|
998
1038
|
<div className="text-center">
|
|
999
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1000
|
-
<EyeOpenIcon className="h-8 w-8
|
|
1039
|
+
<div className="border-fm-secondary-500/30 bg-fm-secondary-500/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1040
|
+
<EyeOpenIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
1041
|
+
</div>
|
|
1042
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1043
|
+
Interactive
|
|
1044
|
+
</div>
|
|
1045
|
+
<div className="text-fm-secondary-600 text-xs">
|
|
1046
|
+
text-fm-secondary-600
|
|
1001
1047
|
</div>
|
|
1002
|
-
<div className="text-sm font-medium text-white">Interactive</div>
|
|
1003
|
-
<div className="text-xs text-purple-400">text-purple-400</div>
|
|
1004
1048
|
</div>
|
|
1005
1049
|
<div className="text-center">
|
|
1006
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1007
|
-
<EyeOpenIcon className="h-8 w-8
|
|
1050
|
+
<div className="border-fm-divider-primary bg-fm-icon-inactive/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1051
|
+
<EyeOpenIcon className="text-fm-tertiary h-8 w-8" />
|
|
1008
1052
|
</div>
|
|
1009
|
-
<div className="text-sm font-medium
|
|
1010
|
-
<div className="text-
|
|
1053
|
+
<div className="text-fm-icon-active text-sm font-medium">Neutral</div>
|
|
1054
|
+
<div className="text-fm-tertiary text-xs">text-fm-tertiary</div>
|
|
1011
1055
|
</div>
|
|
1012
1056
|
</div>
|
|
1013
1057
|
),
|
|
@@ -1024,32 +1068,34 @@ export const UsageExamples: Story = {
|
|
|
1024
1068
|
},
|
|
1025
1069
|
},
|
|
1026
1070
|
render: () => (
|
|
1027
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1071
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1028
1072
|
{/* Password Field */}
|
|
1029
1073
|
<div className="!space-y-2">
|
|
1030
|
-
<h3 className="text-sm font-medium
|
|
1074
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1031
1075
|
Password Field Toggle
|
|
1032
1076
|
</h3>
|
|
1033
1077
|
<div className="relative">
|
|
1034
1078
|
<input
|
|
1035
1079
|
type="text"
|
|
1036
|
-
className="w-full rounded-lg border
|
|
1080
|
+
className="border-fm-divider-primary bg-fm-surface-secondary text-fm-icon-active w-full rounded-lg border px-3 py-2 pr-10 placeholder-white/50"
|
|
1037
1081
|
placeholder="Enter your password"
|
|
1038
1082
|
defaultValue="myvisiblepassword"
|
|
1039
1083
|
/>
|
|
1040
|
-
<button className="absolute top-1/2 right-2 -translate-y-1/2 rounded p-1
|
|
1041
|
-
<EyeOpenIcon className="h-5 w-5
|
|
1084
|
+
<button className="hover:bg-fm-surface-secondary absolute top-1/2 right-2 -translate-y-1/2 rounded p-1">
|
|
1085
|
+
<EyeOpenIcon className="text-fm-icon-info h-5 w-5" />
|
|
1042
1086
|
</button>
|
|
1043
1087
|
</div>
|
|
1044
1088
|
</div>
|
|
1045
1089
|
|
|
1046
1090
|
{/* Content Reveal */}
|
|
1047
1091
|
<div className="!space-y-2">
|
|
1048
|
-
<h3 className="text-sm font-medium
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
<
|
|
1092
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1093
|
+
Content Reveal
|
|
1094
|
+
</h3>
|
|
1095
|
+
<div className="border-fm-icon-info/20 from-fm-icon-info/10 to-fm-icon-positive/10 rounded-lg border bg-linear-to-r p-6 text-center">
|
|
1096
|
+
<EyeOpenIcon className="text-fm-icon-info mx-auto mb-3 h-12 w-12" />
|
|
1097
|
+
<p className="text-fm-tertiary text-sm">Content is now visible</p>
|
|
1098
|
+
<button className="text-fm-icon-info hover:text-fm-icon-info mt-2 text-xs">
|
|
1053
1099
|
Hide content
|
|
1054
1100
|
</button>
|
|
1055
1101
|
</div>
|
|
@@ -1057,22 +1103,24 @@ export const UsageExamples: Story = {
|
|
|
1057
1103
|
|
|
1058
1104
|
{/* Visibility Settings */}
|
|
1059
1105
|
<div className="!space-y-2">
|
|
1060
|
-
<h3 className="text-sm font-medium
|
|
1061
|
-
|
|
1106
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1107
|
+
Visibility Settings
|
|
1108
|
+
</h3>
|
|
1109
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center justify-between rounded-lg border p-4">
|
|
1062
1110
|
<div className="flex items-center gap-3">
|
|
1063
|
-
<EyeOpenIcon className="h-5 w-5
|
|
1111
|
+
<EyeOpenIcon className="text-fm-icon-info h-5 w-5" />
|
|
1064
1112
|
<div>
|
|
1065
|
-
<div className="text-sm font-medium
|
|
1113
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
1066
1114
|
Profile Visibility
|
|
1067
1115
|
</div>
|
|
1068
|
-
<div className="text-
|
|
1116
|
+
<div className="text-fm-tertiary text-xs">
|
|
1069
1117
|
Your profile is visible to everyone
|
|
1070
1118
|
</div>
|
|
1071
1119
|
</div>
|
|
1072
1120
|
</div>
|
|
1073
1121
|
<div className="flex items-center">
|
|
1074
|
-
<span className="mr-3 text-xs
|
|
1075
|
-
<div className="h-6 w-11 rounded-full
|
|
1122
|
+
<span className="text-fm-icon-info mr-3 text-xs">Public</span>
|
|
1123
|
+
<div className="bg-fm-icon-info h-6 w-11 rounded-full"></div>
|
|
1076
1124
|
</div>
|
|
1077
1125
|
</div>
|
|
1078
1126
|
</div>
|
|
@@ -1093,12 +1141,12 @@ export const Playground: Story = {
|
|
|
1093
1141
|
args: {
|
|
1094
1142
|
width: 32,
|
|
1095
1143
|
height: 32,
|
|
1096
|
-
className: "text-
|
|
1144
|
+
className: "text-fm-icon-info ",
|
|
1097
1145
|
strokeWidth: 1,
|
|
1098
1146
|
},
|
|
1099
1147
|
render: (args) => (
|
|
1100
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1101
|
-
<div className="rounded-lg border
|
|
1148
|
+
<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">
|
|
1149
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1102
1150
|
<EyeOpenIcon {...args} />
|
|
1103
1151
|
</div>
|
|
1104
1152
|
</div>
|