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 BubbleCrossedIcon> = {
|
|
|
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 BubbleCrossedIcon> = {
|
|
|
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-secondary-500/10 to-fm-icon-info/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
|
-
<BubbleCrossedIcon className="h-12 w-12
|
|
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
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-12 w-12" />
|
|
91
91
|
</div>
|
|
92
|
-
<h1 className="text-5xl font-bold
|
|
92
|
+
<h1 className="text-fm-icon-active! text-5xl font-bold">
|
|
93
93
|
BubbleCrossedIcon
|
|
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 communication icon representing blocked messages, failed
|
|
97
97
|
communications, and negative feedback. Combines chat bubble
|
|
98
98
|
symbolism with cross indication for clear rejection or error
|
|
@@ -102,28 +102,28 @@ const meta: Meta<typeof BubbleCrossedIcon> = {
|
|
|
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
|
Blocked
|
|
107
107
|
</div>
|
|
108
|
-
<div className="text-
|
|
108
|
+
<div className="text-fm-tertiary text-sm">
|
|
109
109
|
Message restriction
|
|
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
|
Error
|
|
116
116
|
</div>
|
|
117
|
-
<div className="text-
|
|
117
|
+
<div className="text-fm-tertiary text-sm">
|
|
118
118
|
Communication failure
|
|
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
|
Rejected
|
|
125
125
|
</div>
|
|
126
|
-
<div className="text-
|
|
126
|
+
<div className="text-fm-tertiary text-sm">
|
|
127
127
|
Content denied
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
@@ -136,16 +136,16 @@ const meta: Meta<typeof BubbleCrossedIcon> = {
|
|
|
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 { BubbleCrossedIcon } from "@icons/bubble-crossed-icon"
|
|
150
150
|
|
|
151
151
|
function BlockedMessage() {
|
|
@@ -161,13 +161,15 @@ function BlockedMessage() {
|
|
|
161
161
|
</div>
|
|
162
162
|
|
|
163
163
|
<div className="!space-y-4">
|
|
164
|
-
<h3 className="text-xl font-semibold
|
|
164
|
+
<h3 className="text-fm-icon-negative! text-xl font-semibold">
|
|
165
165
|
Live Preview
|
|
166
166
|
</h3>
|
|
167
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
168
|
-
<div className="flex items-center gap-3 rounded-lg border
|
|
169
|
-
<BubbleCrossedIcon className="h-5 w-5
|
|
170
|
-
<span className="
|
|
167
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
168
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 flex items-center gap-3 rounded-lg border px-4 py-2">
|
|
169
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-5 w-5" />
|
|
170
|
+
<span className="text-fm-icon-active!">
|
|
171
|
+
Message blocked
|
|
172
|
+
</span>
|
|
171
173
|
</div>
|
|
172
174
|
</div>
|
|
173
175
|
</div>
|
|
@@ -176,122 +178,130 @@ function BlockedMessage() {
|
|
|
176
178
|
|
|
177
179
|
{/* Props Documentation */}
|
|
178
180
|
<div className="!space-y-8">
|
|
179
|
-
<h2 className="text-center text-3xl font-bold
|
|
181
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
180
182
|
Props & Configuration
|
|
181
183
|
</h2>
|
|
182
184
|
|
|
183
|
-
<div className="overflow-hidden rounded-lg border
|
|
184
|
-
<div className="bg-
|
|
185
|
-
<h3 className="text-xl font-semibold
|
|
185
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
186
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
187
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
188
|
+
Props
|
|
189
|
+
</h3>
|
|
186
190
|
</div>
|
|
187
191
|
<table className="!my-0 w-full">
|
|
188
|
-
<thead className="bg-
|
|
189
|
-
<tr className="border-
|
|
190
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
192
|
+
<thead className="bg-fm-surface-secondary">
|
|
193
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
194
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
191
195
|
Prop
|
|
192
196
|
</th>
|
|
193
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
197
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
194
198
|
Type
|
|
195
199
|
</th>
|
|
196
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
200
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
197
201
|
Default
|
|
198
202
|
</th>
|
|
199
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
203
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
200
204
|
Description
|
|
201
205
|
</th>
|
|
202
206
|
</tr>
|
|
203
207
|
</thead>
|
|
204
208
|
<tbody>
|
|
205
209
|
{" "}
|
|
206
|
-
<tr className="
|
|
207
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
210
|
+
<tr className="bg-fm-surface-secondary!">
|
|
211
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
208
212
|
withAccessibility
|
|
209
213
|
</td>
|
|
210
|
-
<td className="px-6 py-4 text-sm
|
|
214
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
211
215
|
boolean
|
|
212
216
|
</td>
|
|
213
|
-
<td className="px-6 py-4 text-sm
|
|
217
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
214
218
|
true
|
|
215
219
|
</td>
|
|
216
|
-
<td className="px-6 py-4 text-sm
|
|
220
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
217
221
|
Whether to wrap the icon with accessibility feature
|
|
218
222
|
</td>
|
|
219
223
|
</tr>
|
|
220
|
-
<tr className="border-
|
|
221
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
224
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
225
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
222
226
|
height
|
|
223
227
|
</td>
|
|
224
|
-
<td className="px-6 py-4 text-sm
|
|
228
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
225
229
|
number | string
|
|
226
230
|
</td>
|
|
227
|
-
<td className="px-6 py-4 text-sm
|
|
228
|
-
|
|
231
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
232
|
+
24
|
|
233
|
+
</td>
|
|
234
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
229
235
|
Height of the icon in pixels
|
|
230
236
|
</td>
|
|
231
237
|
</tr>
|
|
232
|
-
<tr className="border-
|
|
233
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
238
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
239
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
234
240
|
stroke
|
|
235
241
|
</td>
|
|
236
|
-
<td className="px-6 py-4 text-sm
|
|
242
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
237
243
|
string
|
|
238
244
|
</td>
|
|
239
|
-
<td className="px-6 py-4 text-sm
|
|
245
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
240
246
|
currentColor
|
|
241
247
|
</td>
|
|
242
|
-
<td className="px-6 py-4 text-sm
|
|
248
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
243
249
|
Stroke color of the icon
|
|
244
250
|
</td>
|
|
245
251
|
</tr>
|
|
246
|
-
<tr className="border-
|
|
247
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
252
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
253
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
248
254
|
strokeWidth
|
|
249
255
|
</td>
|
|
250
|
-
<td className="px-6 py-4 text-sm
|
|
256
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
251
257
|
number | string
|
|
252
258
|
</td>
|
|
253
|
-
<td className="px-6 py-4 text-sm
|
|
259
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
254
260
|
1.5
|
|
255
261
|
</td>
|
|
256
|
-
<td className="px-6 py-4 text-sm
|
|
262
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
257
263
|
Stroke width of the icon
|
|
258
264
|
</td>
|
|
259
265
|
</tr>
|
|
260
|
-
<tr className="border-
|
|
261
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
266
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
267
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
262
268
|
strokeLinecap
|
|
263
269
|
</td>
|
|
264
|
-
<td className="px-6 py-4 text-sm
|
|
270
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
265
271
|
string
|
|
266
272
|
</td>
|
|
267
|
-
<td className="px-6 py-4 text-sm
|
|
273
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
268
274
|
square
|
|
269
275
|
</td>
|
|
270
|
-
<td className="px-6 py-4 text-sm
|
|
276
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
271
277
|
Line cap style for stroke
|
|
272
278
|
</td>
|
|
273
279
|
</tr>
|
|
274
|
-
<tr className="border-
|
|
275
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
280
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
281
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
276
282
|
className
|
|
277
283
|
</td>
|
|
278
|
-
<td className="px-6 py-4 text-sm
|
|
284
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
279
285
|
string
|
|
280
286
|
</td>
|
|
281
|
-
<td className="px-6 py-4 text-sm
|
|
282
|
-
|
|
287
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
288
|
+
-
|
|
289
|
+
</td>
|
|
290
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
283
291
|
CSS classes for styling
|
|
284
292
|
</td>
|
|
285
293
|
</tr>
|
|
286
|
-
<tr className="
|
|
287
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
294
|
+
<tr className="bg-fm-surface-secondary!">
|
|
295
|
+
<td className="text-fm-icon-negative! px-6 py-4 font-mono text-sm">
|
|
288
296
|
...svgProps
|
|
289
297
|
</td>
|
|
290
|
-
<td className="px-6 py-4 text-sm
|
|
298
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
291
299
|
SVGProps
|
|
292
300
|
</td>
|
|
293
|
-
<td className="px-6 py-4 text-sm
|
|
294
|
-
|
|
301
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
302
|
+
-
|
|
303
|
+
</td>
|
|
304
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
295
305
|
All standard SVG element props
|
|
296
306
|
</td>
|
|
297
307
|
</tr>
|
|
@@ -302,50 +312,62 @@ function BlockedMessage() {
|
|
|
302
312
|
|
|
303
313
|
{/* Size Variations */}
|
|
304
314
|
<div className="!space-y-8">
|
|
305
|
-
<h2 className="text-center text-3xl font-bold
|
|
315
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
306
316
|
Size Variations
|
|
307
317
|
</h2>
|
|
308
|
-
<div className="rounded-lg border
|
|
318
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
309
319
|
<div className="!space-y-6">
|
|
310
320
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
311
321
|
<div className="!space-y-4">
|
|
312
|
-
<h3 className="text-lg font-semibold
|
|
322
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
313
323
|
Standard Sizes
|
|
314
324
|
</h3>
|
|
315
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
325
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
316
326
|
<div className="text-center">
|
|
317
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-3 w-3
|
|
318
|
-
<span className="text-
|
|
327
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-3 w-3" />
|
|
328
|
+
<span className="text-fm-tertiary text-xs">
|
|
329
|
+
12px
|
|
330
|
+
</span>
|
|
319
331
|
</div>
|
|
320
332
|
<div className="text-center">
|
|
321
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-4 w-4
|
|
322
|
-
<span className="text-
|
|
333
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-4 w-4" />
|
|
334
|
+
<span className="text-fm-tertiary text-xs">
|
|
335
|
+
16px
|
|
336
|
+
</span>
|
|
323
337
|
</div>
|
|
324
338
|
<div className="text-center">
|
|
325
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-5 w-5
|
|
326
|
-
<span className="text-
|
|
339
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-5 w-5" />
|
|
340
|
+
<span className="text-fm-tertiary text-xs">
|
|
341
|
+
20px
|
|
342
|
+
</span>
|
|
327
343
|
</div>
|
|
328
344
|
<div className="text-center">
|
|
329
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-6 w-6
|
|
330
|
-
<span className="text-
|
|
345
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-6 w-6" />
|
|
346
|
+
<span className="text-fm-tertiary text-xs">
|
|
347
|
+
24px
|
|
348
|
+
</span>
|
|
331
349
|
</div>
|
|
332
350
|
<div className="text-center">
|
|
333
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-8 w-8
|
|
334
|
-
<span className="text-
|
|
351
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-8 w-8" />
|
|
352
|
+
<span className="text-fm-tertiary text-xs">
|
|
353
|
+
32px
|
|
354
|
+
</span>
|
|
335
355
|
</div>
|
|
336
356
|
<div className="text-center">
|
|
337
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-12 w-12
|
|
338
|
-
<span className="text-
|
|
357
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-12 w-12" />
|
|
358
|
+
<span className="text-fm-tertiary text-xs">
|
|
359
|
+
48px
|
|
360
|
+
</span>
|
|
339
361
|
</div>
|
|
340
362
|
</div>
|
|
341
363
|
</div>
|
|
342
364
|
|
|
343
365
|
<div className="!space-y-4">
|
|
344
|
-
<h3 className="text-lg font-semibold
|
|
366
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
345
367
|
Code Example
|
|
346
368
|
</h3>
|
|
347
|
-
<div className="rounded-lg
|
|
348
|
-
<pre className="overflow-x-auto text-sm
|
|
369
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
370
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
349
371
|
{`// Small (16px)
|
|
350
372
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
351
373
|
|
|
@@ -367,56 +389,56 @@ function BlockedMessage() {
|
|
|
367
389
|
|
|
368
390
|
{/* Color Variations */}
|
|
369
391
|
<div className="!space-y-8">
|
|
370
|
-
<h2 className="text-center text-3xl font-bold
|
|
392
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
371
393
|
Color Variations
|
|
372
394
|
</h2>
|
|
373
395
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
374
396
|
<div className="!space-y-4">
|
|
375
|
-
<h3 className="text-lg font-semibold
|
|
397
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
376
398
|
Error & Blocked States
|
|
377
399
|
</h3>
|
|
378
|
-
<div className="!space-y-4 rounded-lg border
|
|
400
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
379
401
|
<div className="flex items-center gap-4">
|
|
380
|
-
<BubbleCrossedIcon className="h-6 w-6
|
|
402
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-6 w-6" />
|
|
381
403
|
<div>
|
|
382
|
-
<div className="text-sm font-medium
|
|
404
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
383
405
|
Blocked
|
|
384
406
|
</div>
|
|
385
|
-
<div className="text-
|
|
386
|
-
text-
|
|
407
|
+
<div className="text-fm-tertiary! text-xs">
|
|
408
|
+
text-fm-icon-negative
|
|
387
409
|
</div>
|
|
388
410
|
</div>
|
|
389
411
|
</div>
|
|
390
412
|
<div className="flex items-center gap-4">
|
|
391
|
-
<BubbleCrossedIcon className="h-6 w-6
|
|
413
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-6 w-6" />
|
|
392
414
|
<div>
|
|
393
|
-
<div className="text-sm font-medium
|
|
415
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
394
416
|
Failed
|
|
395
417
|
</div>
|
|
396
|
-
<div className="text-
|
|
397
|
-
text-
|
|
418
|
+
<div className="text-fm-tertiary! text-xs">
|
|
419
|
+
text-fm-icon-negative
|
|
398
420
|
</div>
|
|
399
421
|
</div>
|
|
400
422
|
</div>
|
|
401
423
|
<div className="flex items-center gap-4">
|
|
402
|
-
<BubbleCrossedIcon className="h-6 w-6
|
|
424
|
+
<BubbleCrossedIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
403
425
|
<div>
|
|
404
|
-
<div className="text-sm font-medium
|
|
426
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
405
427
|
Rejected
|
|
406
428
|
</div>
|
|
407
|
-
<div className="text-
|
|
408
|
-
text-
|
|
429
|
+
<div className="text-fm-tertiary! text-xs">
|
|
430
|
+
text-fm-secondary-600
|
|
409
431
|
</div>
|
|
410
432
|
</div>
|
|
411
433
|
</div>
|
|
412
434
|
<div className="flex items-center gap-4">
|
|
413
|
-
<BubbleCrossedIcon className="h-6 w-6
|
|
435
|
+
<BubbleCrossedIcon className="text-fm-icon-warning h-6 w-6" />
|
|
414
436
|
<div>
|
|
415
|
-
<div className="text-sm font-medium
|
|
437
|
+
<div className="text-fm-icon-active! text-sm font-medium">
|
|
416
438
|
Spam
|
|
417
439
|
</div>
|
|
418
|
-
<div className="text-
|
|
419
|
-
text-
|
|
440
|
+
<div className="text-fm-tertiary! text-xs">
|
|
441
|
+
text-fm-icon-warning
|
|
420
442
|
</div>
|
|
421
443
|
</div>
|
|
422
444
|
</div>
|
|
@@ -424,11 +446,11 @@ function BlockedMessage() {
|
|
|
424
446
|
</div>
|
|
425
447
|
|
|
426
448
|
<div className="!space-y-4">
|
|
427
|
-
<h3 className="text-lg font-semibold
|
|
449
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
428
450
|
Custom Colors
|
|
429
451
|
</h3>
|
|
430
|
-
<div className="rounded-lg
|
|
431
|
-
<pre className="overflow-x-auto text-sm
|
|
452
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
453
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
432
454
|
{`// Using Tailwind classes
|
|
433
455
|
<BubbleCrossedIcon className="h-6 w-6 text-red-400" />
|
|
434
456
|
<BubbleCrossedIcon className="h-6 w-6 text-rose-500" />
|
|
@@ -453,33 +475,33 @@ function BlockedMessage() {
|
|
|
453
475
|
|
|
454
476
|
{/* Usage Examples */}
|
|
455
477
|
<div className="!space-y-8">
|
|
456
|
-
<h2 className="text-center text-3xl font-bold
|
|
478
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
457
479
|
Usage Examples
|
|
458
480
|
</h2>
|
|
459
481
|
|
|
460
482
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
461
483
|
{/* Blocked Message */}
|
|
462
484
|
<div className="!space-y-4">
|
|
463
|
-
<h3 className="text-lg font-semibold
|
|
485
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
464
486
|
Blocked Message Alert
|
|
465
487
|
</h3>
|
|
466
488
|
<div className="!space-y-4">
|
|
467
|
-
<div className="
|
|
489
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
468
490
|
<div className="flex items-start gap-3">
|
|
469
|
-
<BubbleCrossedIcon className="mt-0.5 h-5 w-5 flex-shrink-0
|
|
491
|
+
<BubbleCrossedIcon className="text-fm-icon-negative mt-0.5 h-5 w-5 flex-shrink-0" />
|
|
470
492
|
<div>
|
|
471
|
-
<h4 className="font-medium
|
|
493
|
+
<h4 className="text-fm-icon-negative! font-medium">
|
|
472
494
|
Message Blocked
|
|
473
495
|
</h4>
|
|
474
|
-
<p className="text-
|
|
496
|
+
<p className="text-fm-icon-negative!/80 text-sm">
|
|
475
497
|
This message was blocked due to inappropriate
|
|
476
498
|
content. Please review our community guidelines.
|
|
477
499
|
</p>
|
|
478
500
|
</div>
|
|
479
501
|
</div>
|
|
480
502
|
</div>
|
|
481
|
-
<div className="rounded-lg
|
|
482
|
-
<pre className="overflow-x-auto text-sm
|
|
503
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
504
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
483
505
|
{`<div className="border border-red-500/20 bg-red-500/10 p-4 rounded-lg">
|
|
484
506
|
<div className="flex items-start gap-3">
|
|
485
507
|
<BubbleCrossedIcon className="h-5 w-5 text-red-400 mt-0.5 flex-shrink-0" />
|
|
@@ -498,40 +520,40 @@ function BlockedMessage() {
|
|
|
498
520
|
|
|
499
521
|
{/* Chat Error Status */}
|
|
500
522
|
<div className="!space-y-4">
|
|
501
|
-
<h3 className="text-lg font-semibold
|
|
523
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
502
524
|
Chat Error Status
|
|
503
525
|
</h3>
|
|
504
526
|
<div className="!space-y-4">
|
|
505
527
|
<div className="!space-y-3">
|
|
506
528
|
<div className="flex justify-end">
|
|
507
|
-
<div className="max-w-xs rounded-lg
|
|
508
|
-
<p className="text-
|
|
529
|
+
<div className="bg-fm-surface-tertiary max-w-xs rounded-lg px-3 py-2 opacity-50">
|
|
530
|
+
<p className="text-fm-icon-active! text-sm">
|
|
509
531
|
Your message couldn't be sent
|
|
510
532
|
</p>
|
|
511
533
|
<div className="mt-1 flex items-center justify-end gap-1">
|
|
512
|
-
<span className="text-
|
|
534
|
+
<span className="text-fm-secondary text-xs">
|
|
513
535
|
Failed
|
|
514
536
|
</span>
|
|
515
|
-
<BubbleCrossedIcon className="h-3 w-3
|
|
537
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-3 w-3" />
|
|
516
538
|
</div>
|
|
517
539
|
</div>
|
|
518
540
|
</div>
|
|
519
541
|
<div className="flex justify-end">
|
|
520
|
-
<div className="max-w-xs rounded-lg
|
|
521
|
-
<p className="text-
|
|
542
|
+
<div className="bg-fm-surface-tertiary max-w-xs rounded-lg px-3 py-2 opacity-50">
|
|
543
|
+
<p className="text-fm-icon-active! text-sm">
|
|
522
544
|
Message blocked by recipient
|
|
523
545
|
</p>
|
|
524
546
|
<div className="mt-1 flex items-center justify-end gap-1">
|
|
525
|
-
<span className="text-
|
|
547
|
+
<span className="text-fm-secondary text-xs">
|
|
526
548
|
Blocked
|
|
527
549
|
</span>
|
|
528
|
-
<BubbleCrossedIcon className="h-3 w-3
|
|
550
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-3 w-3" />
|
|
529
551
|
</div>
|
|
530
552
|
</div>
|
|
531
553
|
</div>
|
|
532
554
|
</div>
|
|
533
|
-
<div className="rounded-lg
|
|
534
|
-
<pre className="overflow-x-auto text-sm
|
|
555
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
556
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
535
557
|
{`<div className="flex justify-end">
|
|
536
558
|
<div className="max-w-xs rounded-lg bg-gray-500 px-3 py-2 opacity-50">
|
|
537
559
|
<p className="text-sm text-white">Your message couldn't be sent</p>
|
|
@@ -548,26 +570,26 @@ function BlockedMessage() {
|
|
|
548
570
|
|
|
549
571
|
{/* Content Moderation */}
|
|
550
572
|
<div className="!space-y-4">
|
|
551
|
-
<h3 className="text-lg font-semibold
|
|
573
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
552
574
|
Content Moderation
|
|
553
575
|
</h3>
|
|
554
576
|
<div className="!space-y-4">
|
|
555
|
-
<div className="rounded-lg border
|
|
577
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
556
578
|
<div className="text-center">
|
|
557
|
-
<div className="!mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full
|
|
558
|
-
<BubbleCrossedIcon className="h-8 w-8
|
|
579
|
+
<div className="bg-fm-icon-negative/20 !mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full">
|
|
580
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-8 w-8" />
|
|
559
581
|
</div>
|
|
560
|
-
<h3 className="mb-2 text-lg font-semibold
|
|
582
|
+
<h3 className="text-fm-icon-active! mb-2 text-lg font-semibold">
|
|
561
583
|
Content Rejected
|
|
562
584
|
</h3>
|
|
563
|
-
<p className="text-
|
|
585
|
+
<p className="text-fm-secondary! text-sm">
|
|
564
586
|
Your message violates our community standards and
|
|
565
587
|
has been removed.
|
|
566
588
|
</p>
|
|
567
589
|
</div>
|
|
568
590
|
</div>
|
|
569
|
-
<div className="rounded-lg
|
|
570
|
-
<pre className="overflow-x-auto text-sm
|
|
591
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
592
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
571
593
|
{`<div className="text-center">
|
|
572
594
|
<div className="mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-red-500/20">
|
|
573
595
|
<BubbleCrossedIcon className="h-8 w-8 text-red-400" />
|
|
@@ -584,38 +606,38 @@ function BlockedMessage() {
|
|
|
584
606
|
|
|
585
607
|
{/* Status List */}
|
|
586
608
|
<div className="!space-y-4">
|
|
587
|
-
<h3 className="text-lg font-semibold
|
|
609
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
588
610
|
Message Status List
|
|
589
611
|
</h3>
|
|
590
612
|
<div className="!space-y-4">
|
|
591
|
-
<div className="!space-y-3 rounded-lg border
|
|
613
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4">
|
|
592
614
|
<div className="flex items-center gap-3">
|
|
593
|
-
<div className="h-4 w-4 rounded-full
|
|
594
|
-
<span className="text-
|
|
615
|
+
<div className="bg-fm-icon-positive h-4 w-4 rounded-full"></div>
|
|
616
|
+
<span className="text-fm-icon-active! text-sm">
|
|
595
617
|
Message delivered successfully
|
|
596
618
|
</span>
|
|
597
619
|
</div>
|
|
598
620
|
<div className="flex items-center gap-3">
|
|
599
|
-
<BubbleCrossedIcon className="h-4 w-4
|
|
600
|
-
<span className="text-
|
|
621
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-4 w-4" />
|
|
622
|
+
<span className="text-fm-icon-active! text-sm">
|
|
601
623
|
Message blocked by spam filter
|
|
602
624
|
</span>
|
|
603
625
|
</div>
|
|
604
626
|
<div className="flex items-center gap-3">
|
|
605
|
-
<BubbleCrossedIcon className="h-4 w-4
|
|
606
|
-
<span className="text-
|
|
627
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-4 w-4" />
|
|
628
|
+
<span className="text-fm-icon-active! text-sm">
|
|
607
629
|
Message delivery failed
|
|
608
630
|
</span>
|
|
609
631
|
</div>
|
|
610
632
|
<div className="flex items-center gap-3">
|
|
611
|
-
<div className="h-4 w-4 rounded-full border-2
|
|
612
|
-
<span className="text-
|
|
633
|
+
<div className="border-fm-divider-primary h-4 w-4 rounded-full border-2"></div>
|
|
634
|
+
<span className="text-fm-tertiary! text-sm">
|
|
613
635
|
Message pending review
|
|
614
636
|
</span>
|
|
615
637
|
</div>
|
|
616
638
|
</div>
|
|
617
|
-
<div className="rounded-lg
|
|
618
|
-
<pre className="overflow-x-auto text-sm
|
|
639
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
640
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
619
641
|
{`<div className="space-y-3">
|
|
620
642
|
<div className="flex items-center gap-3">
|
|
621
643
|
<div className="h-4 w-4 rounded-full bg-green-500"></div>
|
|
@@ -637,31 +659,31 @@ function BlockedMessage() {
|
|
|
637
659
|
|
|
638
660
|
{/* User Blocked Indicator */}
|
|
639
661
|
<div className="!space-y-4">
|
|
640
|
-
<h3 className="text-lg font-semibold
|
|
662
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
641
663
|
User Blocked Indicator
|
|
642
664
|
</h3>
|
|
643
665
|
<div className="!space-y-4">
|
|
644
666
|
<div className="flex gap-4">
|
|
645
667
|
<div className="relative">
|
|
646
|
-
<div className="h-12 w-12 rounded-full
|
|
647
|
-
<BubbleCrossedIcon className="absolute -right-1 -bottom-1 h-5 w-5 rounded-full
|
|
668
|
+
<div className="bg-fm-surface-tertiary h-12 w-12 rounded-full"></div>
|
|
669
|
+
<BubbleCrossedIcon className="bg-fm-surface-primary text-fm-icon-negative absolute -right-1 -bottom-1 h-5 w-5 rounded-full p-1" />
|
|
648
670
|
</div>
|
|
649
671
|
<div className="flex-1">
|
|
650
672
|
<div className="flex items-center gap-2">
|
|
651
|
-
<span className="font-medium
|
|
673
|
+
<span className="text-fm-icon-active! font-medium">
|
|
652
674
|
John Doe
|
|
653
675
|
</span>
|
|
654
|
-
<span className="
|
|
676
|
+
<span className="bg-fm-icon-negative/20 text-fm-icon-negative rounded-full px-2 py-1 text-xs">
|
|
655
677
|
Blocked
|
|
656
678
|
</span>
|
|
657
679
|
</div>
|
|
658
|
-
<p className="text-
|
|
680
|
+
<p className="text-fm-tertiary! text-sm">
|
|
659
681
|
Cannot send messages to this user
|
|
660
682
|
</p>
|
|
661
683
|
</div>
|
|
662
684
|
</div>
|
|
663
|
-
<div className="rounded-lg
|
|
664
|
-
<pre className="overflow-x-auto text-sm
|
|
685
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
686
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
665
687
|
{`<div className="flex gap-4">
|
|
666
688
|
<div className="relative">
|
|
667
689
|
<div className="h-12 w-12 rounded-full bg-gray-600"></div>
|
|
@@ -682,22 +704,22 @@ function BlockedMessage() {
|
|
|
682
704
|
|
|
683
705
|
{/* Action Button */}
|
|
684
706
|
<div className="!space-y-4">
|
|
685
|
-
<h3 className="text-lg font-semibold
|
|
707
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
686
708
|
Action Buttons
|
|
687
709
|
</h3>
|
|
688
710
|
<div className="!space-y-4">
|
|
689
711
|
<div className="flex gap-4">
|
|
690
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
712
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 text-fm-icon-negative hover:bg-fm-icon-negative/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
691
713
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
692
714
|
Block User
|
|
693
715
|
</button>
|
|
694
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
716
|
+
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/20 text-fm-icon-warning hover:bg-fm-icon-warning/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
695
717
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
696
718
|
Report Spam
|
|
697
719
|
</button>
|
|
698
720
|
</div>
|
|
699
|
-
<div className="rounded-lg
|
|
700
|
-
<pre className="overflow-x-auto text-sm
|
|
721
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
722
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
701
723
|
{`// Block action button
|
|
702
724
|
<button className="flex items-center gap-2 bg-red-500/20 border border-red-500/30 px-4 py-2 rounded-lg">
|
|
703
725
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
@@ -718,40 +740,42 @@ function BlockedMessage() {
|
|
|
718
740
|
|
|
719
741
|
{/* Animation States */}
|
|
720
742
|
<div className="!space-y-8">
|
|
721
|
-
<h2 className="text-center text-3xl font-bold
|
|
743
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
722
744
|
Animation States
|
|
723
745
|
</h2>
|
|
724
746
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-3">
|
|
725
747
|
<div className="text-center">
|
|
726
|
-
<h3 className="mb-4 text-lg font-medium
|
|
748
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
727
749
|
Shake Animation
|
|
728
750
|
</h3>
|
|
729
|
-
<div className="rounded-lg border
|
|
730
|
-
<BubbleCrossedIcon className="!mx-auto h-8 w-8 animate-pulse
|
|
751
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
752
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 animate-pulse" />
|
|
731
753
|
</div>
|
|
732
|
-
<p className="mt-2 text-xs
|
|
754
|
+
<p className="text-fm-tertiary! mt-2 text-xs">
|
|
755
|
+
animate-pulse
|
|
756
|
+
</p>
|
|
733
757
|
</div>
|
|
734
758
|
|
|
735
759
|
<div className="text-center">
|
|
736
|
-
<h3 className="mb-4 text-lg font-medium
|
|
760
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
737
761
|
Fade Animation
|
|
738
762
|
</h3>
|
|
739
|
-
<div className="rounded-lg border
|
|
740
|
-
<BubbleCrossedIcon className="!mx-auto h-8 w-8 animate-bounce
|
|
763
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
764
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 animate-bounce" />
|
|
741
765
|
</div>
|
|
742
|
-
<p className="mt-2 text-xs
|
|
766
|
+
<p className="text-fm-tertiary! mt-2 text-xs">
|
|
743
767
|
animate-bounce
|
|
744
768
|
</p>
|
|
745
769
|
</div>
|
|
746
770
|
|
|
747
771
|
<div className="text-center">
|
|
748
|
-
<h3 className="mb-4 text-lg font-medium
|
|
772
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
749
773
|
Scale on Hover
|
|
750
774
|
</h3>
|
|
751
|
-
<div className="rounded-lg border
|
|
752
|
-
<BubbleCrossedIcon className="!mx-auto h-8 w-8
|
|
775
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
776
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 transition-transform hover:scale-110" />
|
|
753
777
|
</div>
|
|
754
|
-
<p className="mt-2 text-xs
|
|
778
|
+
<p className="text-fm-tertiary! mt-2 text-xs">
|
|
755
779
|
hover:scale-110
|
|
756
780
|
</p>
|
|
757
781
|
</div>
|
|
@@ -760,64 +784,64 @@ function BlockedMessage() {
|
|
|
760
784
|
|
|
761
785
|
{/* Accessibility */}
|
|
762
786
|
<div className="!space-y-8">
|
|
763
|
-
<h2 className="text-center text-3xl font-bold
|
|
787
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
764
788
|
Accessibility Features
|
|
765
789
|
</h2>
|
|
766
790
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
767
|
-
<div className="!space-y-4 rounded-lg border
|
|
768
|
-
<h3 className="text-lg font-semibold
|
|
791
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
792
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
769
793
|
✅ Built-in Features
|
|
770
794
|
</h3>
|
|
771
|
-
<ul className="!space-y-2 text-sm
|
|
772
|
-
<li className="
|
|
795
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
796
|
+
<li className="text-fm-secondary!">
|
|
773
797
|
Uses Radix UI AccessibleIcon wrapper
|
|
774
798
|
</li>
|
|
775
|
-
<li className="
|
|
799
|
+
<li className="text-fm-secondary!">
|
|
776
800
|
Provides screen reader label "Bubble Crossed icon"
|
|
777
801
|
</li>
|
|
778
|
-
<li className="
|
|
802
|
+
<li className="text-fm-secondary!">
|
|
779
803
|
Supports keyboard navigation when interactive
|
|
780
804
|
</li>
|
|
781
|
-
<li className="
|
|
805
|
+
<li className="text-fm-secondary!">
|
|
782
806
|
Maintains proper color contrast ratios
|
|
783
807
|
</li>
|
|
784
|
-
<li className="
|
|
808
|
+
<li className="text-fm-secondary!">
|
|
785
809
|
Scales with user's font size preferences
|
|
786
810
|
</li>
|
|
787
811
|
</ul>
|
|
788
812
|
</div>
|
|
789
813
|
|
|
790
|
-
<div className="!space-y-4 rounded-lg border
|
|
791
|
-
<h3 className="text-lg font-semibold
|
|
814
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
815
|
+
<h3 className="text-fm-icon-negative! text-lg font-semibold">
|
|
792
816
|
💡 Best Practices
|
|
793
817
|
</h3>
|
|
794
|
-
<ul className="!space-y-2 text-sm
|
|
795
|
-
<li className="
|
|
818
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
819
|
+
<li className="text-fm-secondary!">
|
|
796
820
|
Always pair with descriptive error text
|
|
797
821
|
</li>
|
|
798
|
-
<li className="
|
|
822
|
+
<li className="text-fm-secondary!">
|
|
799
823
|
Use consistent colors for blocked/error states
|
|
800
824
|
</li>
|
|
801
|
-
<li className="
|
|
825
|
+
<li className="text-fm-secondary!">
|
|
802
826
|
Ensure sufficient color contrast for visibility
|
|
803
827
|
</li>
|
|
804
|
-
<li className="
|
|
828
|
+
<li className="text-fm-secondary!">
|
|
805
829
|
Add focus states for interactive elements
|
|
806
830
|
</li>
|
|
807
|
-
<li className="
|
|
831
|
+
<li className="text-fm-secondary!">
|
|
808
832
|
Consider animation preferences for users
|
|
809
833
|
</li>
|
|
810
834
|
</ul>
|
|
811
835
|
</div>
|
|
812
836
|
</div>
|
|
813
837
|
|
|
814
|
-
<div className="rounded-lg border
|
|
815
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
838
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
839
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
816
840
|
Custom Accessibility Implementation
|
|
817
841
|
</h3>
|
|
818
842
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
819
|
-
<div className="rounded-lg
|
|
820
|
-
<pre className="overflow-x-auto text-sm
|
|
843
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
844
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
821
845
|
{`// Custom implementation with specific context
|
|
822
846
|
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
823
847
|
|
|
@@ -843,14 +867,14 @@ function BlockedMessageIcon({ label = "Blocked message", ...props }) {
|
|
|
843
867
|
</pre>
|
|
844
868
|
</div>
|
|
845
869
|
<div className="!space-y-4">
|
|
846
|
-
<p className="text-
|
|
870
|
+
<p className="text-fm-secondary! text-sm">
|
|
847
871
|
For specific contexts, you can wrap the
|
|
848
872
|
BubbleCrossedIcon with a custom AccessibleIcon component
|
|
849
873
|
that provides more descriptive labels for different
|
|
850
874
|
error or blocked scenarios.
|
|
851
875
|
</p>
|
|
852
|
-
<div className="
|
|
853
|
-
<div className="flex items-center gap-2 text-sm
|
|
876
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
877
|
+
<div className="text-fm-icon-negative flex items-center gap-2 text-sm">
|
|
854
878
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
855
879
|
<span>
|
|
856
880
|
This gives screen readers specific context about the
|
|
@@ -865,52 +889,58 @@ function BlockedMessageIcon({ label = "Blocked message", ...props }) {
|
|
|
865
889
|
|
|
866
890
|
{/* Related Icons */}
|
|
867
891
|
<div className="!space-y-8">
|
|
868
|
-
<h2 className="text-center text-3xl font-bold
|
|
892
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
869
893
|
Related Icons
|
|
870
894
|
</h2>
|
|
871
895
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
872
|
-
<div className="!space-y-3 rounded-lg border
|
|
873
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
896
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
897
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
874
898
|
<span className="text-2xl">✅</span>
|
|
875
899
|
</div>
|
|
876
900
|
<div>
|
|
877
|
-
<div className="font-medium
|
|
901
|
+
<div className="text-fm-icon-active! font-medium">
|
|
878
902
|
BubbleCheckIcon
|
|
879
903
|
</div>
|
|
880
|
-
<div className="text-
|
|
904
|
+
<div className="text-fm-tertiary! text-xs">
|
|
881
905
|
Success messages
|
|
882
906
|
</div>
|
|
883
907
|
</div>
|
|
884
908
|
</div>
|
|
885
|
-
<div className="!space-y-3 rounded-lg border
|
|
886
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
909
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
910
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
887
911
|
<span className="text-2xl">💬</span>
|
|
888
912
|
</div>
|
|
889
913
|
<div>
|
|
890
|
-
<div className="font-medium
|
|
891
|
-
|
|
914
|
+
<div className="text-fm-icon-active! font-medium">
|
|
915
|
+
BubbleIcon
|
|
916
|
+
</div>
|
|
917
|
+
<div className="text-fm-tertiary! text-xs">
|
|
892
918
|
Normal chat bubble
|
|
893
919
|
</div>
|
|
894
920
|
</div>
|
|
895
921
|
</div>
|
|
896
|
-
<div className="!space-y-3 rounded-lg border
|
|
897
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
922
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
923
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
898
924
|
<span className="text-2xl">⚠️</span>
|
|
899
925
|
</div>
|
|
900
926
|
<div>
|
|
901
|
-
<div className="font-medium
|
|
902
|
-
|
|
927
|
+
<div className="text-fm-icon-active! font-medium">
|
|
928
|
+
AlertIcon
|
|
929
|
+
</div>
|
|
930
|
+
<div className="text-fm-tertiary! text-xs">
|
|
903
931
|
Warning alerts
|
|
904
932
|
</div>
|
|
905
933
|
</div>
|
|
906
934
|
</div>
|
|
907
|
-
<div className="!space-y-3 rounded-lg border
|
|
908
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
935
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
936
|
+
<div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
909
937
|
<span className="text-2xl">❌</span>
|
|
910
938
|
</div>
|
|
911
939
|
<div>
|
|
912
|
-
<div className="font-medium
|
|
913
|
-
|
|
940
|
+
<div className="text-fm-icon-active! font-medium">
|
|
941
|
+
CrossIcon
|
|
942
|
+
</div>
|
|
943
|
+
<div className="text-fm-tertiary! text-xs">
|
|
914
944
|
General errors
|
|
915
945
|
</div>
|
|
916
946
|
</div>
|
|
@@ -920,15 +950,15 @@ function BlockedMessageIcon({ label = "Blocked message", ...props }) {
|
|
|
920
950
|
</div>
|
|
921
951
|
|
|
922
952
|
{/* Footer */}
|
|
923
|
-
<div className="border-
|
|
953
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
924
954
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
925
955
|
<div className="!space-y-4 text-center">
|
|
926
|
-
<p className="
|
|
956
|
+
<p className="text-fm-tertiary!">
|
|
927
957
|
BubbleCrossedIcon is part of the Aural UI icon library,
|
|
928
958
|
designed for clear error communication and message blocking
|
|
929
959
|
indicators.
|
|
930
960
|
</p>
|
|
931
|
-
<p className="text-
|
|
961
|
+
<p className="text-fm-placeholder! text-sm">
|
|
932
962
|
Perfect for chat applications, content moderation, spam
|
|
933
963
|
filtering, and any interface requiring blocked or error
|
|
934
964
|
feedback.
|
|
@@ -983,8 +1013,8 @@ const storyParameters = {
|
|
|
983
1013
|
backgrounds: {
|
|
984
1014
|
default: "dark",
|
|
985
1015
|
values: [
|
|
986
|
-
{ name: "dark", value: "
|
|
987
|
-
{ name: "darker", value: "
|
|
1016
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
1017
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
988
1018
|
],
|
|
989
1019
|
},
|
|
990
1020
|
}
|
|
@@ -993,12 +1023,12 @@ export const Default: Story = {
|
|
|
993
1023
|
args: {
|
|
994
1024
|
width: 25,
|
|
995
1025
|
height: 24,
|
|
996
|
-
className: "text-
|
|
1026
|
+
className: "text-fm-icon-negative",
|
|
997
1027
|
withAccessibility: true,
|
|
998
1028
|
},
|
|
999
1029
|
parameters: storyParameters,
|
|
1000
1030
|
render: (args) => (
|
|
1001
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1031
|
+
<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">
|
|
1002
1032
|
<BubbleCrossedIcon {...args} />
|
|
1003
1033
|
</div>
|
|
1004
1034
|
),
|
|
@@ -1015,30 +1045,30 @@ export const SizeVariations: Story = {
|
|
|
1015
1045
|
},
|
|
1016
1046
|
},
|
|
1017
1047
|
render: () => (
|
|
1018
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
1048
|
+
<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">
|
|
1019
1049
|
<div className="text-center">
|
|
1020
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-3 w-3
|
|
1021
|
-
<span className="text-
|
|
1050
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-3 w-3" />
|
|
1051
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
1022
1052
|
</div>
|
|
1023
1053
|
<div className="text-center">
|
|
1024
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-4 w-4
|
|
1025
|
-
<span className="text-
|
|
1054
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-4 w-4" />
|
|
1055
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
1026
1056
|
</div>
|
|
1027
1057
|
<div className="text-center">
|
|
1028
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-5 w-5
|
|
1029
|
-
<span className="text-
|
|
1058
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-5 w-5" />
|
|
1059
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
1030
1060
|
</div>
|
|
1031
1061
|
<div className="text-center">
|
|
1032
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-6 w-6
|
|
1033
|
-
<span className="text-
|
|
1062
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-6 w-6" />
|
|
1063
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
1034
1064
|
</div>
|
|
1035
1065
|
<div className="text-center">
|
|
1036
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-8 w-8
|
|
1037
|
-
<span className="text-
|
|
1066
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-8 w-8" />
|
|
1067
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
1038
1068
|
</div>
|
|
1039
1069
|
<div className="text-center">
|
|
1040
|
-
<BubbleCrossedIcon className="!mx-auto mb-2 h-12 w-12
|
|
1041
|
-
<span className="text-
|
|
1070
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto mb-2 h-12 w-12" />
|
|
1071
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1042
1072
|
</div>
|
|
1043
1073
|
</div>
|
|
1044
1074
|
),
|
|
@@ -1055,34 +1085,40 @@ export const ColorVariations: Story = {
|
|
|
1055
1085
|
},
|
|
1056
1086
|
},
|
|
1057
1087
|
render: () => (
|
|
1058
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1088
|
+
<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">
|
|
1059
1089
|
<div className="text-center">
|
|
1060
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1061
|
-
<BubbleCrossedIcon className="h-8 w-8
|
|
1090
|
+
<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">
|
|
1091
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1092
|
+
</div>
|
|
1093
|
+
<div className="text-fm-icon-active! text-sm font-medium">Blocked</div>
|
|
1094
|
+
<div className="text-fm-icon-negative text-xs">
|
|
1095
|
+
text-fm-icon-negative
|
|
1062
1096
|
</div>
|
|
1063
|
-
<div className="text-sm font-medium !text-white">Blocked</div>
|
|
1064
|
-
<div className="text-xs text-red-400">text-red-400</div>
|
|
1065
1097
|
</div>
|
|
1066
1098
|
<div className="text-center">
|
|
1067
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1068
|
-
<BubbleCrossedIcon className="h-8 w-8
|
|
1099
|
+
<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">
|
|
1100
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1101
|
+
</div>
|
|
1102
|
+
<div className="text-fm-icon-active! text-sm font-medium">Failed</div>
|
|
1103
|
+
<div className="text-fm-icon-negative text-xs">
|
|
1104
|
+
text-fm-icon-negative
|
|
1069
1105
|
</div>
|
|
1070
|
-
<div className="text-sm font-medium !text-white">Failed</div>
|
|
1071
|
-
<div className="text-xs text-rose-400">text-rose-400</div>
|
|
1072
1106
|
</div>
|
|
1073
1107
|
<div className="text-center">
|
|
1074
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1075
|
-
<BubbleCrossedIcon className="h-8 w-8
|
|
1108
|
+
<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">
|
|
1109
|
+
<BubbleCrossedIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
1110
|
+
</div>
|
|
1111
|
+
<div className="text-fm-icon-active! text-sm font-medium">Rejected</div>
|
|
1112
|
+
<div className="text-fm-secondary-600 text-xs">
|
|
1113
|
+
text-fm-secondary-600
|
|
1076
1114
|
</div>
|
|
1077
|
-
<div className="text-sm font-medium !text-white">Rejected</div>
|
|
1078
|
-
<div className="text-xs text-pink-400">text-pink-400</div>
|
|
1079
1115
|
</div>
|
|
1080
1116
|
<div className="text-center">
|
|
1081
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1082
|
-
<BubbleCrossedIcon className="h-8 w-8
|
|
1117
|
+
<div className="border-fm-icon-warning/30 bg-fm-icon-warning/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1118
|
+
<BubbleCrossedIcon className="text-fm-icon-warning h-8 w-8" />
|
|
1083
1119
|
</div>
|
|
1084
|
-
<div className="text-sm font-medium
|
|
1085
|
-
<div className="text-
|
|
1120
|
+
<div className="text-fm-icon-active! text-sm font-medium">Spam</div>
|
|
1121
|
+
<div className="text-fm-icon-warning text-xs">text-fm-icon-warning</div>
|
|
1086
1122
|
</div>
|
|
1087
1123
|
</div>
|
|
1088
1124
|
),
|
|
@@ -1099,18 +1135,20 @@ export const UsageExamples: Story = {
|
|
|
1099
1135
|
},
|
|
1100
1136
|
},
|
|
1101
1137
|
render: () => (
|
|
1102
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1138
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1103
1139
|
{/* Blocked Message */}
|
|
1104
1140
|
<div className="!space-y-2">
|
|
1105
|
-
<h3 className="text-sm font-medium
|
|
1141
|
+
<h3 className="text-fm-icon-active! text-sm font-medium">
|
|
1106
1142
|
Blocked Message Alert
|
|
1107
1143
|
</h3>
|
|
1108
|
-
<div className="
|
|
1144
|
+
<div className="border-fm-icon-negative/20 bg-fm-icon-negative/10 rounded-lg border p-4">
|
|
1109
1145
|
<div className="flex items-start gap-3">
|
|
1110
|
-
<BubbleCrossedIcon className="mt-0.5 h-5 w-5 flex-shrink-0
|
|
1146
|
+
<BubbleCrossedIcon className="text-fm-icon-negative mt-0.5 h-5 w-5 flex-shrink-0" />
|
|
1111
1147
|
<div>
|
|
1112
|
-
<h4 className="font-medium
|
|
1113
|
-
|
|
1148
|
+
<h4 className="text-fm-icon-negative font-medium">
|
|
1149
|
+
Message Blocked
|
|
1150
|
+
</h4>
|
|
1151
|
+
<p className="text-fm-icon-negative/80 text-sm">
|
|
1114
1152
|
This message was blocked due to inappropriate content.
|
|
1115
1153
|
</p>
|
|
1116
1154
|
</div>
|
|
@@ -1120,13 +1158,17 @@ export const UsageExamples: Story = {
|
|
|
1120
1158
|
|
|
1121
1159
|
{/* Chat Error Status */}
|
|
1122
1160
|
<div className="!space-y-2">
|
|
1123
|
-
<h3 className="text-sm font-medium
|
|
1161
|
+
<h3 className="text-fm-icon-active! text-sm font-medium">
|
|
1162
|
+
Chat Error Status
|
|
1163
|
+
</h3>
|
|
1124
1164
|
<div className="flex justify-end">
|
|
1125
|
-
<div className="max-w-xs rounded-lg
|
|
1126
|
-
<p className="text-
|
|
1165
|
+
<div className="bg-fm-surface-tertiary max-w-xs rounded-lg px-3 py-2 opacity-50">
|
|
1166
|
+
<p className="text-fm-icon-active text-sm">
|
|
1167
|
+
Your message couldn't be sent
|
|
1168
|
+
</p>
|
|
1127
1169
|
<div className="mt-1 flex items-center justify-end gap-1">
|
|
1128
|
-
<span className="text-
|
|
1129
|
-
<BubbleCrossedIcon className="h-3 w-3
|
|
1170
|
+
<span className="text-fm-secondary text-xs">Failed</span>
|
|
1171
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-3 w-3" />
|
|
1130
1172
|
</div>
|
|
1131
1173
|
</div>
|
|
1132
1174
|
</div>
|
|
@@ -1134,15 +1176,17 @@ export const UsageExamples: Story = {
|
|
|
1134
1176
|
|
|
1135
1177
|
{/* Content Moderation */}
|
|
1136
1178
|
<div className="!space-y-2">
|
|
1137
|
-
<h3 className="text-sm font-medium
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1179
|
+
<h3 className="text-fm-icon-active! text-sm font-medium">
|
|
1180
|
+
Content Moderation
|
|
1181
|
+
</h3>
|
|
1182
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6 text-center">
|
|
1183
|
+
<div className="bg-fm-icon-negative/20 !mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full">
|
|
1184
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-8 w-8" />
|
|
1141
1185
|
</div>
|
|
1142
|
-
<h3 className="mb-2 text-lg font-semibold
|
|
1186
|
+
<h3 className="text-fm-icon-active! mb-2 text-lg font-semibold">
|
|
1143
1187
|
Content Rejected
|
|
1144
1188
|
</h3>
|
|
1145
|
-
<p className="text-
|
|
1189
|
+
<p className="text-fm-secondary! text-sm">
|
|
1146
1190
|
Your message violates our community standards and has been removed.
|
|
1147
1191
|
</p>
|
|
1148
1192
|
</div>
|
|
@@ -1150,13 +1194,15 @@ export const UsageExamples: Story = {
|
|
|
1150
1194
|
|
|
1151
1195
|
{/* Action Buttons */}
|
|
1152
1196
|
<div className="!space-y-2">
|
|
1153
|
-
<h3 className="text-sm font-medium
|
|
1197
|
+
<h3 className="text-fm-icon-active! text-sm font-medium">
|
|
1198
|
+
Action Buttons
|
|
1199
|
+
</h3>
|
|
1154
1200
|
<div className="flex gap-4">
|
|
1155
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
1201
|
+
<button className="border-fm-icon-negative/30 bg-fm-icon-negative/20 text-fm-icon-negative hover:bg-fm-icon-negative/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
1156
1202
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
1157
1203
|
Block User
|
|
1158
1204
|
</button>
|
|
1159
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
1205
|
+
<button className="border-fm-icon-warning/30 bg-fm-icon-warning/20 text-fm-icon-warning hover:bg-fm-icon-warning/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
1160
1206
|
<BubbleCrossedIcon className="h-4 w-4" />
|
|
1161
1207
|
Report Spam
|
|
1162
1208
|
</button>
|
|
@@ -1177,33 +1223,35 @@ export const AnimatedStates: Story = {
|
|
|
1177
1223
|
},
|
|
1178
1224
|
},
|
|
1179
1225
|
render: () => (
|
|
1180
|
-
<div className="grid min-h-dvh grid-cols-1 items-center gap-8 rounded-lg bg-
|
|
1226
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-1 items-center gap-8 rounded-lg bg-linear-to-br p-8 md:grid-cols-3">
|
|
1181
1227
|
<div className="text-center">
|
|
1182
|
-
<h3 className="mb-4 text-lg font-medium
|
|
1228
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
1183
1229
|
Pulse Animation
|
|
1184
1230
|
</h3>
|
|
1185
|
-
<div className="rounded-lg border
|
|
1186
|
-
<BubbleCrossedIcon className="!mx-auto h-8 w-8 animate-pulse
|
|
1231
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
1232
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 animate-pulse" />
|
|
1187
1233
|
</div>
|
|
1188
|
-
<p className="mt-2 text-xs
|
|
1234
|
+
<p className="text-fm-tertiary! mt-2 text-xs">Error indication</p>
|
|
1189
1235
|
</div>
|
|
1190
1236
|
|
|
1191
1237
|
<div className="text-center">
|
|
1192
|
-
<h3 className="mb-4 text-lg font-medium
|
|
1238
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
1193
1239
|
Bounce Animation
|
|
1194
1240
|
</h3>
|
|
1195
|
-
<div className="rounded-lg border
|
|
1196
|
-
<BubbleCrossedIcon className="!mx-auto h-8 w-8 animate-bounce
|
|
1241
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
1242
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 animate-bounce" />
|
|
1197
1243
|
</div>
|
|
1198
|
-
<p className="mt-2 text-xs
|
|
1244
|
+
<p className="text-fm-tertiary! mt-2 text-xs">Attention drawing</p>
|
|
1199
1245
|
</div>
|
|
1200
1246
|
|
|
1201
1247
|
<div className="text-center">
|
|
1202
|
-
<h3 className="mb-4 text-lg font-medium
|
|
1203
|
-
|
|
1204
|
-
|
|
1248
|
+
<h3 className="text-fm-icon-active! mb-4 text-lg font-medium">
|
|
1249
|
+
Scale on Hover
|
|
1250
|
+
</h3>
|
|
1251
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border px-6 py-8">
|
|
1252
|
+
<BubbleCrossedIcon className="text-fm-icon-negative !mx-auto h-8 w-8 transition-transform hover:scale-110" />
|
|
1205
1253
|
</div>
|
|
1206
|
-
<p className="mt-2 text-xs
|
|
1254
|
+
<p className="text-fm-tertiary! mt-2 text-xs">Interactive feedback</p>
|
|
1207
1255
|
</div>
|
|
1208
1256
|
</div>
|
|
1209
1257
|
),
|
|
@@ -1222,13 +1270,13 @@ export const Playground: Story = {
|
|
|
1222
1270
|
args: {
|
|
1223
1271
|
width: 32,
|
|
1224
1272
|
height: 32,
|
|
1225
|
-
className: "text-
|
|
1273
|
+
className: "text-fm-icon-negative",
|
|
1226
1274
|
strokeWidth: 1.5,
|
|
1227
1275
|
strokeLinecap: "square",
|
|
1228
1276
|
},
|
|
1229
1277
|
render: (args) => (
|
|
1230
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1231
|
-
<div className="rounded-lg border
|
|
1278
|
+
<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">
|
|
1279
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1232
1280
|
<BubbleCrossedIcon {...args} />
|
|
1233
1281
|
</div>
|
|
1234
1282
|
</div>
|