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 CrossCircleIcon> = {
|
|
|
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 CrossCircleIcon> = {
|
|
|
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-negative/10 to-fm-secondary-500/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
|
|
89
|
+
<div className="border-fm-icon-negative/30 from-fm-icon-negative/20 to-fm-secondary-500/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
90
|
<CrossCircleIcon className="h-12 w-12 fill-red-400" />
|
|
91
91
|
</div>
|
|
92
92
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
93
|
CrossCircleIcon
|
|
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 clear and recognizable close/cancel icon featuring a cross
|
|
97
97
|
within a circle. Perfect for dismissible components, error
|
|
98
98
|
states, and removal actions. Built with accessibility in
|
|
@@ -102,28 +102,28 @@ const meta: Meta<typeof CrossCircleIcon> = {
|
|
|
102
102
|
{/* Stats */}
|
|
103
103
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
104
104
|
<div className="text-center">
|
|
105
|
-
<div className="text-3xl font-bold
|
|
105
|
+
<div className="text-fm-icon-negative text-3xl font-bold">
|
|
106
106
|
Accessible
|
|
107
107
|
</div>
|
|
108
|
-
<div className="text-
|
|
108
|
+
<div className="text-fm-tertiary text-sm">
|
|
109
109
|
Screen reader friendly
|
|
110
110
|
</div>
|
|
111
111
|
</div>
|
|
112
|
-
<div className="h-8 w-px
|
|
112
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
113
113
|
<div className="text-center">
|
|
114
|
-
<div className="text-3xl font-bold
|
|
114
|
+
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
115
115
|
Scalable
|
|
116
116
|
</div>
|
|
117
|
-
<div className="text-
|
|
117
|
+
<div className="text-fm-tertiary text-sm">
|
|
118
118
|
Any size needed
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
121
|
-
<div className="h-8 w-px
|
|
121
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
122
122
|
<div className="text-center">
|
|
123
|
-
<div className="text-3xl font-bold
|
|
123
|
+
<div className="text-fm-icon-negative text-3xl font-bold">
|
|
124
124
|
Versatile
|
|
125
125
|
</div>
|
|
126
|
-
<div className="text-
|
|
126
|
+
<div className="text-fm-tertiary text-sm">
|
|
127
127
|
Multiple use cases
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
@@ -136,16 +136,16 @@ const meta: Meta<typeof CrossCircleIcon> = {
|
|
|
136
136
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
137
137
|
{/* Quick Usage */}
|
|
138
138
|
<div className="!space-y-8">
|
|
139
|
-
<h2 className="text-center text-3xl font-bold
|
|
139
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
140
140
|
Quick Start
|
|
141
141
|
</h2>
|
|
142
142
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
143
143
|
<div className="!space-y-4">
|
|
144
|
-
<h3 className="text-xl font-semibold
|
|
144
|
+
<h3 className="text-fm-icon-negative! text-xl font-semibold">
|
|
145
145
|
Basic Usage
|
|
146
146
|
</h3>
|
|
147
|
-
<div className="rounded-lg
|
|
148
|
-
<pre className="overflow-x-auto text-sm
|
|
147
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
148
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
149
149
|
{`import { CrossCircleIcon } from "@icons/cross-circle-icon"
|
|
150
150
|
|
|
151
151
|
function DismissibleAlert() {
|
|
@@ -163,12 +163,14 @@ function DismissibleAlert() {
|
|
|
163
163
|
</div>
|
|
164
164
|
|
|
165
165
|
<div className="!space-y-4">
|
|
166
|
-
<h3 className="text-xl font-semibold
|
|
166
|
+
<h3 className="text-fm-icon-negative! text-xl font-semibold">
|
|
167
167
|
Live Preview
|
|
168
168
|
</h3>
|
|
169
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
170
|
-
<div className="flex items-center justify-between rounded-lg border
|
|
171
|
-
<span className="text-
|
|
169
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
170
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 flex items-center justify-between rounded-lg border px-4 py-2">
|
|
171
|
+
<span className="text-fm-icon-active">
|
|
172
|
+
Error message
|
|
173
|
+
</span>
|
|
172
174
|
<button className="ml-4">
|
|
173
175
|
<CrossCircleIcon className="h-5 w-5 fill-red-400" />
|
|
174
176
|
</button>
|
|
@@ -180,106 +182,116 @@ function DismissibleAlert() {
|
|
|
180
182
|
|
|
181
183
|
{/* Props Documentation */}
|
|
182
184
|
<div className="!space-y-8">
|
|
183
|
-
<h2 className="text-center text-3xl font-bold
|
|
185
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
184
186
|
Props & Configuration
|
|
185
187
|
</h2>
|
|
186
188
|
|
|
187
|
-
<div className="overflow-hidden rounded-lg border
|
|
188
|
-
<div className="bg-
|
|
189
|
-
<h3 className="text-xl font-semibold
|
|
189
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
190
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
191
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
192
|
+
Props
|
|
193
|
+
</h3>
|
|
190
194
|
</div>
|
|
191
195
|
<table className="!my-0 w-full">
|
|
192
|
-
<thead className="bg-
|
|
193
|
-
<tr className="border-
|
|
194
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
196
|
+
<thead className="bg-fm-surface-secondary">
|
|
197
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
198
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
195
199
|
Prop
|
|
196
200
|
</th>
|
|
197
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
201
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
198
202
|
Type
|
|
199
203
|
</th>
|
|
200
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
204
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
201
205
|
Default
|
|
202
206
|
</th>
|
|
203
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
207
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
204
208
|
Description
|
|
205
209
|
</th>
|
|
206
210
|
</tr>
|
|
207
211
|
</thead>
|
|
208
212
|
<tbody>
|
|
209
213
|
{" "}
|
|
210
|
-
<tr className="
|
|
211
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
214
|
+
<tr className="bg-fm-surface-secondary!">
|
|
215
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
212
216
|
withAccessibility
|
|
213
217
|
</td>
|
|
214
|
-
<td className="px-6 py-4 text-sm
|
|
218
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
215
219
|
boolean
|
|
216
220
|
</td>
|
|
217
|
-
<td className="px-6 py-4 text-sm
|
|
221
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
218
222
|
true
|
|
219
223
|
</td>
|
|
220
|
-
<td className="px-6 py-4 text-sm
|
|
224
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
221
225
|
Whether to wrap the icon with accessibility feature
|
|
222
226
|
</td>
|
|
223
227
|
</tr>
|
|
224
|
-
<tr className="border-
|
|
225
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
228
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
229
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
226
230
|
height
|
|
227
231
|
</td>
|
|
228
|
-
<td className="px-6 py-4 text-sm
|
|
232
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
229
233
|
number | string
|
|
230
234
|
</td>
|
|
231
|
-
<td className="px-6 py-4 text-sm
|
|
232
|
-
|
|
235
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
236
|
+
16
|
|
237
|
+
</td>
|
|
238
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
233
239
|
Height of the icon in pixels
|
|
234
240
|
</td>
|
|
235
241
|
</tr>
|
|
236
|
-
<tr className="border-
|
|
237
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
242
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
243
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
238
244
|
fill
|
|
239
245
|
</td>
|
|
240
|
-
<td className="px-6 py-4 text-sm
|
|
246
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
241
247
|
string
|
|
242
248
|
</td>
|
|
243
|
-
<td className="px-6 py-4 text-sm
|
|
249
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
244
250
|
white
|
|
245
251
|
</td>
|
|
246
|
-
<td className="px-6 py-4 text-sm
|
|
252
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
247
253
|
Fill color of the icon
|
|
248
254
|
</td>
|
|
249
255
|
</tr>
|
|
250
|
-
<tr className="border-
|
|
251
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
256
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
257
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
252
258
|
className
|
|
253
259
|
</td>
|
|
254
|
-
<td className="px-6 py-4 text-sm
|
|
260
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
255
261
|
string
|
|
256
262
|
</td>
|
|
257
|
-
<td className="px-6 py-4 text-sm
|
|
258
|
-
|
|
263
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
264
|
+
-
|
|
265
|
+
</td>
|
|
266
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
259
267
|
CSS classes for styling (use for overrides)
|
|
260
268
|
</td>
|
|
261
269
|
</tr>
|
|
262
|
-
<tr className="border-
|
|
263
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
270
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
271
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
264
272
|
onClick
|
|
265
273
|
</td>
|
|
266
|
-
<td className="px-6 py-4 text-sm
|
|
274
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
267
275
|
function
|
|
268
276
|
</td>
|
|
269
|
-
<td className="px-6 py-4 text-sm
|
|
270
|
-
|
|
277
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
278
|
+
-
|
|
279
|
+
</td>
|
|
280
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
271
281
|
Click handler for interactive use
|
|
272
282
|
</td>
|
|
273
283
|
</tr>
|
|
274
|
-
<tr className="
|
|
275
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
284
|
+
<tr className="bg-fm-surface-secondary!">
|
|
285
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
276
286
|
...svgProps
|
|
277
287
|
</td>
|
|
278
|
-
<td className="px-6 py-4 text-sm
|
|
288
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
279
289
|
SVGProps
|
|
280
290
|
</td>
|
|
281
|
-
<td className="px-6 py-4 text-sm
|
|
282
|
-
|
|
291
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
292
|
+
-
|
|
293
|
+
</td>
|
|
294
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
283
295
|
All standard SVG element props
|
|
284
296
|
</td>
|
|
285
297
|
</tr>
|
|
@@ -290,50 +302,62 @@ function DismissibleAlert() {
|
|
|
290
302
|
|
|
291
303
|
{/* Size Variations */}
|
|
292
304
|
<div className="!space-y-8">
|
|
293
|
-
<h2 className="text-center text-3xl font-bold
|
|
305
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
294
306
|
Size Variations
|
|
295
307
|
</h2>
|
|
296
|
-
<div className="rounded-lg border
|
|
308
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
297
309
|
<div className="!space-y-6">
|
|
298
310
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
299
311
|
<div className="!space-y-4">
|
|
300
|
-
<h3 className="text-lg font-semibold
|
|
312
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
301
313
|
Standard Sizes
|
|
302
314
|
</h3>
|
|
303
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
315
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
304
316
|
<div className="text-center">
|
|
305
317
|
<CrossCircleIcon className="!mx-auto mb-2 h-3 w-3 fill-red-400" />
|
|
306
|
-
<span className="text-
|
|
318
|
+
<span className="text-fm-tertiary text-xs">
|
|
319
|
+
12px
|
|
320
|
+
</span>
|
|
307
321
|
</div>
|
|
308
322
|
<div className="text-center">
|
|
309
323
|
<CrossCircleIcon className="!mx-auto mb-2 h-4 w-4 fill-red-400" />
|
|
310
|
-
<span className="text-
|
|
324
|
+
<span className="text-fm-tertiary text-xs">
|
|
325
|
+
16px
|
|
326
|
+
</span>
|
|
311
327
|
</div>
|
|
312
328
|
<div className="text-center">
|
|
313
329
|
<CrossCircleIcon className="!mx-auto mb-2 h-5 w-5 fill-red-400" />
|
|
314
|
-
<span className="text-
|
|
330
|
+
<span className="text-fm-tertiary text-xs">
|
|
331
|
+
20px
|
|
332
|
+
</span>
|
|
315
333
|
</div>
|
|
316
334
|
<div className="text-center">
|
|
317
335
|
<CrossCircleIcon className="!mx-auto mb-2 h-6 w-6 fill-red-400" />
|
|
318
|
-
<span className="text-
|
|
336
|
+
<span className="text-fm-tertiary text-xs">
|
|
337
|
+
24px
|
|
338
|
+
</span>
|
|
319
339
|
</div>
|
|
320
340
|
<div className="text-center">
|
|
321
341
|
<CrossCircleIcon className="!mx-auto mb-2 h-8 w-8 fill-red-400" />
|
|
322
|
-
<span className="text-
|
|
342
|
+
<span className="text-fm-tertiary text-xs">
|
|
343
|
+
32px
|
|
344
|
+
</span>
|
|
323
345
|
</div>
|
|
324
346
|
<div className="text-center">
|
|
325
347
|
<CrossCircleIcon className="!mx-auto mb-2 h-12 w-12 fill-red-400" />
|
|
326
|
-
<span className="text-
|
|
348
|
+
<span className="text-fm-tertiary text-xs">
|
|
349
|
+
48px
|
|
350
|
+
</span>
|
|
327
351
|
</div>
|
|
328
352
|
</div>
|
|
329
353
|
</div>
|
|
330
354
|
|
|
331
355
|
<div className="!space-y-4">
|
|
332
|
-
<h3 className="text-lg font-semibold
|
|
356
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
333
357
|
Code Example
|
|
334
358
|
</h3>
|
|
335
|
-
<div className="rounded-lg
|
|
336
|
-
<pre className="overflow-x-auto text-sm
|
|
359
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
360
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
337
361
|
{`// Small (16px)
|
|
338
362
|
<CrossCircleIcon className="h-4 w-4 " />
|
|
339
363
|
|
|
@@ -355,22 +379,22 @@ function DismissibleAlert() {
|
|
|
355
379
|
|
|
356
380
|
{/* Color Variations */}
|
|
357
381
|
<div className="!space-y-8">
|
|
358
|
-
<h2 className="text-center text-3xl font-bold
|
|
382
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
359
383
|
Color Variations
|
|
360
384
|
</h2>
|
|
361
385
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
362
386
|
<div className="!space-y-4">
|
|
363
|
-
<h3 className="text-lg font-semibold
|
|
387
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
364
388
|
Semantic Colors
|
|
365
389
|
</h3>
|
|
366
|
-
<div className="!space-y-4 rounded-lg border
|
|
390
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
367
391
|
<div className="flex items-center gap-4">
|
|
368
392
|
<CrossCircleIcon className="h-6 w-6 fill-red-400" />
|
|
369
393
|
<div>
|
|
370
|
-
<div className="text-sm font-medium
|
|
394
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
371
395
|
Error / Danger
|
|
372
396
|
</div>
|
|
373
|
-
<div className="text-
|
|
397
|
+
<div className="text-fm-tertiary text-xs">
|
|
374
398
|
fill-red-400
|
|
375
399
|
</div>
|
|
376
400
|
</div>
|
|
@@ -378,10 +402,10 @@ function DismissibleAlert() {
|
|
|
378
402
|
<div className="flex items-center gap-4">
|
|
379
403
|
<CrossCircleIcon className="h-6 w-6 fill-gray-400" />
|
|
380
404
|
<div>
|
|
381
|
-
<div className="text-sm font-medium
|
|
405
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
382
406
|
Neutral / Secondary
|
|
383
407
|
</div>
|
|
384
|
-
<div className="text-
|
|
408
|
+
<div className="text-fm-tertiary text-xs">
|
|
385
409
|
fill-gray-400
|
|
386
410
|
</div>
|
|
387
411
|
</div>
|
|
@@ -389,10 +413,10 @@ function DismissibleAlert() {
|
|
|
389
413
|
<div className="flex items-center gap-4">
|
|
390
414
|
<CrossCircleIcon className="h-6 w-6 fill-white/60" />
|
|
391
415
|
<div>
|
|
392
|
-
<div className="text-sm font-medium
|
|
416
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
393
417
|
Muted
|
|
394
418
|
</div>
|
|
395
|
-
<div className="text-
|
|
419
|
+
<div className="text-fm-tertiary text-xs">
|
|
396
420
|
fill-white/60
|
|
397
421
|
</div>
|
|
398
422
|
</div>
|
|
@@ -400,10 +424,10 @@ function DismissibleAlert() {
|
|
|
400
424
|
<div className="flex items-center gap-4">
|
|
401
425
|
<CrossCircleIcon className="h-6 w-6 fill-pink-400" />
|
|
402
426
|
<div>
|
|
403
|
-
<div className="text-sm font-medium
|
|
427
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
404
428
|
Accent
|
|
405
429
|
</div>
|
|
406
|
-
<div className="text-
|
|
430
|
+
<div className="text-fm-tertiary text-xs">
|
|
407
431
|
fill-pink-400
|
|
408
432
|
</div>
|
|
409
433
|
</div>
|
|
@@ -412,11 +436,11 @@ function DismissibleAlert() {
|
|
|
412
436
|
</div>
|
|
413
437
|
|
|
414
438
|
<div className="!space-y-4">
|
|
415
|
-
<h3 className="text-lg font-semibold
|
|
439
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
416
440
|
Custom Colors
|
|
417
441
|
</h3>
|
|
418
|
-
<div className="rounded-lg
|
|
419
|
-
<pre className="overflow-x-auto text-sm
|
|
442
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
443
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
420
444
|
{`// Using Tailwind classes with
|
|
421
445
|
<CrossCircleIcon className="h-6 w-6 fill-red-400 " />
|
|
422
446
|
<CrossCircleIcon className="h-6 w-6 fill-pink-500 " />
|
|
@@ -441,40 +465,40 @@ function DismissibleAlert() {
|
|
|
441
465
|
|
|
442
466
|
{/* Usage Examples */}
|
|
443
467
|
<div className="!space-y-8">
|
|
444
|
-
<h2 className="text-center text-3xl font-bold
|
|
468
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
445
469
|
Usage Examples
|
|
446
470
|
</h2>
|
|
447
471
|
|
|
448
472
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
449
473
|
{/* Dismissible Alert */}
|
|
450
474
|
<div className="!space-y-4">
|
|
451
|
-
<h3 className="text-lg font-semibold
|
|
475
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
452
476
|
Dismissible Alert
|
|
453
477
|
</h3>
|
|
454
478
|
<div className="!space-y-4">
|
|
455
|
-
<div className="
|
|
479
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
456
480
|
<div className="flex items-start justify-between">
|
|
457
481
|
<div className="flex items-start gap-3">
|
|
458
482
|
<div className="mt-0.5 flex h-5 w-5 flex-shrink-0 items-center justify-center">
|
|
459
|
-
<span className="text-
|
|
483
|
+
<span className="text-fm-icon-negative">⚠</span>
|
|
460
484
|
</div>
|
|
461
485
|
<div>
|
|
462
|
-
<h4 className="font-medium
|
|
486
|
+
<h4 className="text-fm-icon-negative! font-medium">
|
|
463
487
|
Payment Failed
|
|
464
488
|
</h4>
|
|
465
|
-
<p className="text-
|
|
489
|
+
<p className="text-fm-icon-negative!/80 text-sm">
|
|
466
490
|
Unable to process your payment. Please try
|
|
467
491
|
again.
|
|
468
492
|
</p>
|
|
469
493
|
</div>
|
|
470
494
|
</div>
|
|
471
|
-
<button className="flex-shrink-0 rounded p-1
|
|
495
|
+
<button className="hover:bg-fm-icon-negative/20 flex-shrink-0 rounded p-1">
|
|
472
496
|
<CrossCircleIcon className="h-4 w-4 fill-red-400" />
|
|
473
497
|
</button>
|
|
474
498
|
</div>
|
|
475
499
|
</div>
|
|
476
|
-
<div className="rounded-lg
|
|
477
|
-
<pre className="overflow-x-auto text-sm
|
|
500
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
501
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
478
502
|
{`// Dismissible alert component
|
|
479
503
|
<div className="flex items-start justify-between border border-red-500/20 bg-red-500/10 p-4 rounded-lg">
|
|
480
504
|
<div className="flex items-start gap-3">
|
|
@@ -497,33 +521,33 @@ function DismissibleAlert() {
|
|
|
497
521
|
|
|
498
522
|
{/* Modal Close Button */}
|
|
499
523
|
<div className="!space-y-4">
|
|
500
|
-
<h3 className="text-lg font-semibold
|
|
524
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
501
525
|
Modal Close Button
|
|
502
526
|
</h3>
|
|
503
527
|
<div className="!space-y-4">
|
|
504
|
-
<div className="rounded-lg border
|
|
528
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
505
529
|
<div className="mb-4 flex items-center justify-between">
|
|
506
|
-
<h3 className="text-lg font-semibold
|
|
530
|
+
<h3 className="text-fm-icon-active! text-lg font-semibold">
|
|
507
531
|
Confirm Action
|
|
508
532
|
</h3>
|
|
509
|
-
<button className="rounded p-1
|
|
533
|
+
<button className="hover:bg-fm-surface-secondary rounded p-1">
|
|
510
534
|
<CrossCircleIcon className="h-5 w-5 fill-gray-400" />
|
|
511
535
|
</button>
|
|
512
536
|
</div>
|
|
513
|
-
<p className="mb-4
|
|
537
|
+
<p className="text-fm-secondary! mb-4">
|
|
514
538
|
Are you sure you want to delete this item?
|
|
515
539
|
</p>
|
|
516
540
|
<div className="flex gap-3">
|
|
517
|
-
<button className="
|
|
541
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 text-fm-icon-negative rounded-lg border px-4 py-2">
|
|
518
542
|
Delete
|
|
519
543
|
</button>
|
|
520
|
-
<button className="
|
|
544
|
+
<button className="border-fm-divider-primary bg-fm-surface-secondary text-fm-icon-active rounded-lg border px-4 py-2">
|
|
521
545
|
Cancel
|
|
522
546
|
</button>
|
|
523
547
|
</div>
|
|
524
548
|
</div>
|
|
525
|
-
<div className="rounded-lg
|
|
526
|
-
<pre className="overflow-x-auto text-sm
|
|
549
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
550
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
527
551
|
{`// Modal with close button
|
|
528
552
|
<div className="border border-white/10 bg-white/5 p-6 rounded-lg">
|
|
529
553
|
<div className="flex items-center justify-between mb-4">
|
|
@@ -551,36 +575,38 @@ function DismissibleAlert() {
|
|
|
551
575
|
|
|
552
576
|
{/* Tag/Chip Removal */}
|
|
553
577
|
<div className="!space-y-4">
|
|
554
|
-
<h3 className="text-lg font-semibold
|
|
578
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
555
579
|
Tag/Chip Removal
|
|
556
580
|
</h3>
|
|
557
581
|
<div className="!space-y-4">
|
|
558
582
|
<div className="flex flex-wrap gap-2">
|
|
559
|
-
<div className="flex items-center gap-2 rounded-full border
|
|
560
|
-
<span className="text-
|
|
561
|
-
|
|
583
|
+
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 flex items-center gap-2 rounded-full border px-3 py-1">
|
|
584
|
+
<span className="text-fm-icon-info text-sm">
|
|
585
|
+
React
|
|
586
|
+
</span>
|
|
587
|
+
<button className="hover:bg-fm-icon-info/30 rounded-full p-0.5">
|
|
562
588
|
<CrossCircleIcon className="h-3 w-3 fill-blue-300" />
|
|
563
589
|
</button>
|
|
564
590
|
</div>
|
|
565
|
-
<div className="flex items-center gap-2 rounded-full border
|
|
566
|
-
<span className="text-
|
|
591
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 flex items-center gap-2 rounded-full border px-3 py-1">
|
|
592
|
+
<span className="text-fm-icon-positive text-sm">
|
|
567
593
|
TypeScript
|
|
568
594
|
</span>
|
|
569
|
-
<button className="rounded-full p-0.5
|
|
595
|
+
<button className="hover:bg-fm-icon-positive/30 rounded-full p-0.5">
|
|
570
596
|
<CrossCircleIcon className="h-3 w-3 fill-green-300" />
|
|
571
597
|
</button>
|
|
572
598
|
</div>
|
|
573
|
-
<div className="flex items-center gap-2 rounded-full border
|
|
574
|
-
<span className="text-
|
|
599
|
+
<div className="border-fm-secondary-500/30 bg-fm-secondary-500/20 flex items-center gap-2 rounded-full border px-3 py-1">
|
|
600
|
+
<span className="text-fm-secondary-600 text-sm">
|
|
575
601
|
Tailwind
|
|
576
602
|
</span>
|
|
577
|
-
<button className="rounded-full p-0.5
|
|
603
|
+
<button className="hover:bg-fm-secondary-500/30 rounded-full p-0.5">
|
|
578
604
|
<CrossCircleIcon className="h-3 w-3 fill-purple-300" />
|
|
579
605
|
</button>
|
|
580
606
|
</div>
|
|
581
607
|
</div>
|
|
582
|
-
<div className="rounded-lg
|
|
583
|
-
<pre className="overflow-x-auto text-sm
|
|
608
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
609
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
584
610
|
{`// Removable tags/chips
|
|
585
611
|
<div className="flex items-center gap-2 bg-blue-500/20 border border-blue-500/30 px-3 py-1 rounded-full">
|
|
586
612
|
<span className="text-blue-200 text-sm">React</span>
|
|
@@ -605,28 +631,28 @@ function DismissibleAlert() {
|
|
|
605
631
|
|
|
606
632
|
{/* Form Input Clear */}
|
|
607
633
|
<div className="!space-y-4">
|
|
608
|
-
<h3 className="text-lg font-semibold
|
|
634
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
609
635
|
Form Input Clear
|
|
610
636
|
</h3>
|
|
611
637
|
<div className="!space-y-4">
|
|
612
638
|
<div className="!space-y-2">
|
|
613
|
-
<label className="text-sm font-medium
|
|
639
|
+
<label className="text-fm-icon-active! text-sm font-medium">
|
|
614
640
|
Search
|
|
615
641
|
</label>
|
|
616
642
|
<div className="relative">
|
|
617
643
|
<input
|
|
618
644
|
type="text"
|
|
619
|
-
className="w-full rounded-lg border
|
|
645
|
+
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-500/20"
|
|
620
646
|
placeholder="Type to search..."
|
|
621
647
|
defaultValue="Sample search query"
|
|
622
648
|
/>
|
|
623
|
-
<button className="absolute top-1/2 right-3 -translate-y-1/2 rounded p-0.5
|
|
649
|
+
<button className="hover:bg-fm-surface-secondary absolute top-1/2 right-3 -translate-y-1/2 rounded p-0.5">
|
|
624
650
|
<CrossCircleIcon className="h-4 w-4 fill-gray-400" />
|
|
625
651
|
</button>
|
|
626
652
|
</div>
|
|
627
653
|
</div>
|
|
628
|
-
<div className="rounded-lg
|
|
629
|
-
<pre className="overflow-x-auto text-sm
|
|
654
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
655
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
630
656
|
{`// Search input with clear button
|
|
631
657
|
<div className="relative">
|
|
632
658
|
<input
|
|
@@ -652,64 +678,64 @@ function DismissibleAlert() {
|
|
|
652
678
|
|
|
653
679
|
{/* Accessibility */}
|
|
654
680
|
<div className="!space-y-8">
|
|
655
|
-
<h2 className="text-center text-3xl font-bold
|
|
681
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
656
682
|
Accessibility Features
|
|
657
683
|
</h2>
|
|
658
684
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
659
|
-
<div className="!space-y-4 rounded-lg border
|
|
660
|
-
<h3 className="text-lg font-semibold
|
|
685
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
686
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
661
687
|
✅ Built-in Features
|
|
662
688
|
</h3>
|
|
663
|
-
<ul className="!space-y-2 text-sm
|
|
664
|
-
<li className="
|
|
689
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
690
|
+
<li className="text-fm-secondary!">
|
|
665
691
|
Uses Radix UI AccessibleIcon wrapper
|
|
666
692
|
</li>
|
|
667
|
-
<li className="
|
|
693
|
+
<li className="text-fm-secondary!">
|
|
668
694
|
Provides screen reader label "Cross Circle icon"
|
|
669
695
|
</li>
|
|
670
|
-
<li className="
|
|
696
|
+
<li className="text-fm-secondary!">
|
|
671
697
|
Supports keyboard navigation when interactive
|
|
672
698
|
</li>
|
|
673
|
-
<li className="
|
|
699
|
+
<li className="text-fm-secondary!">
|
|
674
700
|
Maintains proper color contrast ratios
|
|
675
701
|
</li>
|
|
676
|
-
<li className="
|
|
702
|
+
<li className="text-fm-secondary!">
|
|
677
703
|
Scales with user's font size preferences
|
|
678
704
|
</li>
|
|
679
705
|
</ul>
|
|
680
706
|
</div>
|
|
681
707
|
|
|
682
|
-
<div className="!space-y-4 rounded-lg border
|
|
683
|
-
<h3 className="text-lg font-semibold
|
|
708
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
709
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
684
710
|
💡 Best Practices
|
|
685
711
|
</h3>
|
|
686
|
-
<ul className="!space-y-2 text-sm
|
|
687
|
-
<li className="
|
|
712
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
713
|
+
<li className="text-fm-secondary!">
|
|
688
714
|
Always provide proper button labels for close actions
|
|
689
715
|
</li>
|
|
690
|
-
<li className="
|
|
716
|
+
<li className="text-fm-secondary!">
|
|
691
717
|
Use consistent close button placement
|
|
692
718
|
</li>
|
|
693
|
-
<li className="
|
|
719
|
+
<li className="text-fm-secondary!">
|
|
694
720
|
Ensure sufficient touch target size (44px minimum)
|
|
695
721
|
</li>
|
|
696
|
-
<li className="
|
|
722
|
+
<li className="text-fm-secondary!">
|
|
697
723
|
Provide visible focus states for keyboard users
|
|
698
724
|
</li>
|
|
699
|
-
<li className="
|
|
725
|
+
<li className="text-fm-secondary!">
|
|
700
726
|
Consider escape key functionality for modals
|
|
701
727
|
</li>
|
|
702
728
|
</ul>
|
|
703
729
|
</div>
|
|
704
730
|
</div>
|
|
705
731
|
|
|
706
|
-
<div className="rounded-lg border
|
|
707
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
732
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
733
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
708
734
|
Proper ARIA Implementation
|
|
709
735
|
</h3>
|
|
710
736
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
711
|
-
<div className="rounded-lg
|
|
712
|
-
<pre className="overflow-x-auto text-sm
|
|
737
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
738
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
713
739
|
{`// Close button with proper ARIA
|
|
714
740
|
<button
|
|
715
741
|
aria-label="Close dialog"
|
|
@@ -746,13 +772,13 @@ function DismissibleAlert() {
|
|
|
746
772
|
</pre>
|
|
747
773
|
</div>
|
|
748
774
|
<div className="!space-y-4">
|
|
749
|
-
<p className="text-
|
|
775
|
+
<p className="text-fm-secondary! text-sm">
|
|
750
776
|
When using CrossCircleIcon for interactive elements,
|
|
751
777
|
always provide descriptive aria-label attributes that
|
|
752
778
|
explain the action being performed.
|
|
753
779
|
</p>
|
|
754
|
-
<div className="
|
|
755
|
-
<div className="flex items-center gap-2 text-sm
|
|
780
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
781
|
+
<div className="text-fm-icon-negative flex items-center gap-2 text-sm">
|
|
756
782
|
<CrossCircleIcon className="h-4 w-4 fill-red-400" />
|
|
757
783
|
<span>
|
|
758
784
|
Screen readers need context about what will be
|
|
@@ -767,44 +793,58 @@ function DismissibleAlert() {
|
|
|
767
793
|
|
|
768
794
|
{/* Related Icons */}
|
|
769
795
|
<div className="!space-y-8">
|
|
770
|
-
<h2 className="text-center text-3xl font-bold
|
|
796
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
771
797
|
Related Icons
|
|
772
798
|
</h2>
|
|
773
799
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
774
|
-
<div className="!space-y-3 rounded-lg border
|
|
775
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
776
|
-
<span className="
|
|
800
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
801
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
802
|
+
<span className="text-fm-icon-active! !text-2xl">✓</span>
|
|
777
803
|
</div>
|
|
778
804
|
<div>
|
|
779
|
-
<div className="font-medium
|
|
780
|
-
|
|
805
|
+
<div className="text-fm-icon-active font-medium">
|
|
806
|
+
CheckIcon
|
|
807
|
+
</div>
|
|
808
|
+
<div className="text-fm-tertiary text-xs">
|
|
809
|
+
Confirmation
|
|
810
|
+
</div>
|
|
781
811
|
</div>
|
|
782
812
|
</div>
|
|
783
|
-
<div className="!space-y-3 rounded-lg border
|
|
784
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
785
|
-
<span className="
|
|
813
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
814
|
+
<div className="bg-fm-surface-tertiary/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
815
|
+
<span className="text-fm-icon-active! !text-2xl">×</span>
|
|
786
816
|
</div>
|
|
787
817
|
<div>
|
|
788
|
-
<div className="font-medium
|
|
789
|
-
|
|
818
|
+
<div className="text-fm-icon-active font-medium">
|
|
819
|
+
CloseIcon
|
|
820
|
+
</div>
|
|
821
|
+
<div className="text-fm-tertiary text-xs">
|
|
822
|
+
Simple close
|
|
823
|
+
</div>
|
|
790
824
|
</div>
|
|
791
825
|
</div>
|
|
792
|
-
<div className="!space-y-3 rounded-lg border
|
|
793
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
794
|
-
<span className="
|
|
826
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
827
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
828
|
+
<span className="text-fm-icon-active! !text-2xl">🗑</span>
|
|
795
829
|
</div>
|
|
796
830
|
<div>
|
|
797
|
-
<div className="font-medium
|
|
798
|
-
|
|
831
|
+
<div className="text-fm-icon-active font-medium">
|
|
832
|
+
DeleteIcon
|
|
833
|
+
</div>
|
|
834
|
+
<div className="text-fm-tertiary text-xs">
|
|
835
|
+
Remove items
|
|
836
|
+
</div>
|
|
799
837
|
</div>
|
|
800
838
|
</div>
|
|
801
|
-
<div className="!space-y-3 rounded-lg border
|
|
802
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
803
|
-
<span className="
|
|
839
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
840
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
841
|
+
<span className="text-fm-icon-active! !text-2xl">⚠</span>
|
|
804
842
|
</div>
|
|
805
843
|
<div>
|
|
806
|
-
<div className="font-medium
|
|
807
|
-
|
|
844
|
+
<div className="text-fm-icon-active font-medium">
|
|
845
|
+
AlertIcon
|
|
846
|
+
</div>
|
|
847
|
+
<div className="text-fm-tertiary text-xs">
|
|
808
848
|
Warning states
|
|
809
849
|
</div>
|
|
810
850
|
</div>
|
|
@@ -814,14 +854,14 @@ function DismissibleAlert() {
|
|
|
814
854
|
</div>
|
|
815
855
|
|
|
816
856
|
{/* Footer */}
|
|
817
|
-
<div className="border-
|
|
857
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
818
858
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
819
859
|
<div className="!space-y-4 text-center">
|
|
820
|
-
<p className="
|
|
860
|
+
<p className="text-fm-tertiary!">
|
|
821
861
|
CrossCircleIcon is part of the Aural UI icon library, built
|
|
822
862
|
with accessibility and user interaction in mind.
|
|
823
863
|
</p>
|
|
824
|
-
<p className="text-
|
|
864
|
+
<p className="text-fm-placeholder! text-sm">
|
|
825
865
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
826
866
|
compatibility and follow WCAG guidelines.
|
|
827
867
|
</p>
|
|
@@ -870,8 +910,8 @@ const storyParameters = {
|
|
|
870
910
|
backgrounds: {
|
|
871
911
|
default: "dark",
|
|
872
912
|
values: [
|
|
873
|
-
{ name: "dark", value: "
|
|
874
|
-
{ name: "darker", value: "
|
|
913
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
914
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
875
915
|
],
|
|
876
916
|
},
|
|
877
917
|
}
|
|
@@ -883,7 +923,7 @@ export const Default: Story = {
|
|
|
883
923
|
},
|
|
884
924
|
parameters: storyParameters,
|
|
885
925
|
render: (args) => (
|
|
886
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
926
|
+
<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">
|
|
887
927
|
<CrossCircleIcon {...args} />
|
|
888
928
|
</div>
|
|
889
929
|
),
|
|
@@ -900,30 +940,30 @@ export const SizeVariations: Story = {
|
|
|
900
940
|
},
|
|
901
941
|
},
|
|
902
942
|
render: () => (
|
|
903
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
943
|
+
<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">
|
|
904
944
|
<div className="text-center">
|
|
905
945
|
<CrossCircleIcon className="!mx-auto mb-2 h-3 w-3 fill-red-400" />
|
|
906
|
-
<span className="text-
|
|
946
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
907
947
|
</div>
|
|
908
948
|
<div className="text-center">
|
|
909
949
|
<CrossCircleIcon className="!mx-auto mb-2 h-4 w-4 fill-red-400" />
|
|
910
|
-
<span className="text-
|
|
950
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
911
951
|
</div>
|
|
912
952
|
<div className="text-center">
|
|
913
953
|
<CrossCircleIcon className="!mx-auto mb-2 h-5 w-5 fill-red-400" />
|
|
914
|
-
<span className="text-
|
|
954
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
915
955
|
</div>
|
|
916
956
|
<div className="text-center">
|
|
917
957
|
<CrossCircleIcon className="!mx-auto mb-2 h-6 w-6 fill-red-400" />
|
|
918
|
-
<span className="text-
|
|
958
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
919
959
|
</div>
|
|
920
960
|
<div className="text-center">
|
|
921
961
|
<CrossCircleIcon className="!mx-auto mb-2 h-8 w-8 fill-red-400" />
|
|
922
|
-
<span className="text-
|
|
962
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
923
963
|
</div>
|
|
924
964
|
<div className="text-center">
|
|
925
965
|
<CrossCircleIcon className="!mx-auto mb-2 h-12 w-12 fill-red-400" />
|
|
926
|
-
<span className="text-
|
|
966
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
927
967
|
</div>
|
|
928
968
|
</div>
|
|
929
969
|
),
|
|
@@ -940,34 +980,34 @@ export const ColorVariations: Story = {
|
|
|
940
980
|
},
|
|
941
981
|
},
|
|
942
982
|
render: () => (
|
|
943
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
983
|
+
<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">
|
|
944
984
|
<div className="text-center">
|
|
945
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
985
|
+
<div className="border-fm-icon-negative/30 bg-fm-icon-negative/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
946
986
|
<CrossCircleIcon className="h-8 w-8 fill-red-400" />
|
|
947
987
|
</div>
|
|
948
|
-
<div className="text-sm font-medium
|
|
949
|
-
<div className="text-
|
|
988
|
+
<div className="text-fm-icon-active text-sm font-medium">Error</div>
|
|
989
|
+
<div className="text-fm-icon-negative text-xs">fill-red-400</div>
|
|
950
990
|
</div>
|
|
951
991
|
<div className="text-center">
|
|
952
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
992
|
+
<div className="border-fm-divider-primary bg-fm-surface-tertiary/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
953
993
|
<CrossCircleIcon className="h-8 w-8 fill-gray-400" />
|
|
954
994
|
</div>
|
|
955
|
-
<div className="text-sm font-medium
|
|
956
|
-
<div className="text-
|
|
995
|
+
<div className="text-fm-icon-active text-sm font-medium">Neutral</div>
|
|
996
|
+
<div className="text-fm-placeholder text-xs">fill-gray-400</div>
|
|
957
997
|
</div>
|
|
958
998
|
<div className="text-center">
|
|
959
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
999
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
960
1000
|
<CrossCircleIcon className="h-8 w-8 fill-white/60" />
|
|
961
1001
|
</div>
|
|
962
|
-
<div className="text-sm font-medium
|
|
963
|
-
<div className="text-
|
|
1002
|
+
<div className="text-fm-icon-active text-sm font-medium">Muted</div>
|
|
1003
|
+
<div className="text-fm-tertiary text-xs">fill-white/60</div>
|
|
964
1004
|
</div>
|
|
965
1005
|
<div className="text-center">
|
|
966
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1006
|
+
<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">
|
|
967
1007
|
<CrossCircleIcon className="h-8 w-8 fill-pink-400" />
|
|
968
1008
|
</div>
|
|
969
|
-
<div className="text-sm font-medium
|
|
970
|
-
<div className="text-
|
|
1009
|
+
<div className="text-fm-icon-active text-sm font-medium">Accent</div>
|
|
1010
|
+
<div className="text-fm-secondary-600 text-xs">fill-pink-400</div>
|
|
971
1011
|
</div>
|
|
972
1012
|
</div>
|
|
973
1013
|
),
|
|
@@ -984,22 +1024,26 @@ export const UsageExamples: Story = {
|
|
|
984
1024
|
},
|
|
985
1025
|
},
|
|
986
1026
|
render: () => (
|
|
987
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1027
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
988
1028
|
{/* Dismissible Alert */}
|
|
989
1029
|
<div className="!space-y-2">
|
|
990
|
-
<h3 className="text-sm font-medium
|
|
991
|
-
|
|
1030
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1031
|
+
Dismissible Alert
|
|
1032
|
+
</h3>
|
|
1033
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
992
1034
|
<div className="flex items-start justify-between">
|
|
993
1035
|
<div className="flex items-start gap-3">
|
|
994
|
-
<span className="mt-0.5
|
|
1036
|
+
<span className="text-fm-icon-negative mt-0.5">⚠</span>
|
|
995
1037
|
<div>
|
|
996
|
-
<h4 className="font-medium
|
|
997
|
-
|
|
1038
|
+
<h4 className="text-fm-icon-negative font-medium">
|
|
1039
|
+
Payment Failed
|
|
1040
|
+
</h4>
|
|
1041
|
+
<p className="text-fm-icon-negative/80 text-sm">
|
|
998
1042
|
Unable to process your payment. Please try again.
|
|
999
1043
|
</p>
|
|
1000
1044
|
</div>
|
|
1001
1045
|
</div>
|
|
1002
|
-
<button className="flex-shrink-0 rounded p-1
|
|
1046
|
+
<button className="hover:bg-fm-icon-negative/20 flex-shrink-0 rounded p-1">
|
|
1003
1047
|
<CrossCircleIcon className="h-4 w-4 fill-red-400" />
|
|
1004
1048
|
</button>
|
|
1005
1049
|
</div>
|
|
@@ -1008,17 +1052,19 @@ export const UsageExamples: Story = {
|
|
|
1008
1052
|
|
|
1009
1053
|
{/* Removable Tags */}
|
|
1010
1054
|
<div className="!space-y-2">
|
|
1011
|
-
<h3 className="text-sm font-medium
|
|
1055
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1056
|
+
Removable Tags
|
|
1057
|
+
</h3>
|
|
1012
1058
|
<div className="flex flex-wrap gap-2">
|
|
1013
|
-
<div className="flex items-center gap-2 rounded-full border
|
|
1014
|
-
<span className="text-
|
|
1015
|
-
<button className="rounded-full p-0.5
|
|
1059
|
+
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 flex items-center gap-2 rounded-full border px-3 py-1">
|
|
1060
|
+
<span className="text-fm-icon-info text-sm">React</span>
|
|
1061
|
+
<button className="hover:bg-fm-icon-info/30 rounded-full p-0.5">
|
|
1016
1062
|
<CrossCircleIcon className="h-3 w-3 fill-blue-300" />
|
|
1017
1063
|
</button>
|
|
1018
1064
|
</div>
|
|
1019
|
-
<div className="flex items-center gap-2 rounded-full border
|
|
1020
|
-
<span className="text-
|
|
1021
|
-
<button className="rounded-full p-0.5
|
|
1065
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 flex items-center gap-2 rounded-full border px-3 py-1">
|
|
1066
|
+
<span className="text-fm-icon-positive text-sm">TypeScript</span>
|
|
1067
|
+
<button className="hover:bg-fm-icon-positive/30 rounded-full p-0.5">
|
|
1022
1068
|
<CrossCircleIcon className="h-3 w-3 fill-green-300" />
|
|
1023
1069
|
</button>
|
|
1024
1070
|
</div>
|
|
@@ -1027,15 +1073,19 @@ export const UsageExamples: Story = {
|
|
|
1027
1073
|
|
|
1028
1074
|
{/* Modal Close Button */}
|
|
1029
1075
|
<div className="!space-y-2">
|
|
1030
|
-
<h3 className="text-sm font-medium
|
|
1031
|
-
|
|
1076
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1077
|
+
Modal Close Button
|
|
1078
|
+
</h3>
|
|
1079
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
1032
1080
|
<div className="mb-4 flex items-center justify-between">
|
|
1033
|
-
<h3 className="text-lg font-semibold
|
|
1034
|
-
|
|
1081
|
+
<h3 className="text-fm-icon-active text-lg font-semibold">
|
|
1082
|
+
Confirm Action
|
|
1083
|
+
</h3>
|
|
1084
|
+
<button className="hover:bg-fm-surface-secondary rounded p-1">
|
|
1035
1085
|
<CrossCircleIcon className="h-5 w-5 fill-gray-400" />
|
|
1036
1086
|
</button>
|
|
1037
1087
|
</div>
|
|
1038
|
-
<p className="text-
|
|
1088
|
+
<p className="text-fm-secondary">
|
|
1039
1089
|
Are you sure you want to delete this item?
|
|
1040
1090
|
</p>
|
|
1041
1091
|
</div>
|
|
@@ -1060,8 +1110,8 @@ export const Playground: Story = {
|
|
|
1060
1110
|
className: "fill-red-400 ",
|
|
1061
1111
|
},
|
|
1062
1112
|
render: (args) => (
|
|
1063
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1064
|
-
<div className="rounded-lg border
|
|
1113
|
+
<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">
|
|
1114
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1065
1115
|
<CrossCircleIcon {...args} />
|
|
1066
1116
|
</div>
|
|
1067
1117
|
</div>
|