aural-ui 4.0.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1228
- package/dist/components/avatar/Avatar.stories.tsx +219 -235
- package/dist/components/badge/Badge.stories.tsx +379 -116
- package/dist/components/banner/Banner.stories.tsx +445 -391
- package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
- package/dist/components/button/Button.stories.tsx +585 -230
- package/dist/components/card/Card.stories.tsx +619 -301
- package/dist/components/char-count/CharCount.stories.tsx +350 -248
- package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
- package/dist/components/chip/Chip.stories.tsx +362 -168
- package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -636
- package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
- package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
- package/dist/components/command/Command.stories.tsx +530 -867
- package/dist/components/dialog/Dialog.stories.tsx +501 -950
- package/dist/components/divider/Divider.stories.tsx +264 -527
- package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
- package/dist/components/drawer/Drawer.stories.tsx +659 -1023
- package/dist/components/dropdown/Dropdown.stories.tsx +643 -1028
- package/dist/components/form/Form.stories.tsx +560 -274
- package/dist/components/helper-text/HelperText.stories.tsx +199 -200
- package/dist/components/hover-card/HoverCard.stories.tsx +318 -1254
- package/dist/components/icon-button/IconButton.stories.tsx +837 -194
- package/dist/components/if-else/if-else.stories.tsx +370 -83
- package/dist/components/input/Input.stories.tsx +436 -368
- package/dist/components/label/Label.stories.tsx +156 -154
- package/dist/components/list/List.stories.tsx +484 -835
- package/dist/components/marquee/Marquee.stories.tsx +356 -712
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -422
- package/dist/components/overlay/Overlay.stories.tsx +452 -824
- package/dist/components/pagination/Pagination.stories.tsx +721 -210
- package/dist/components/popover/Popover.stories.tsx +481 -896
- package/dist/components/radio/Radio.stories.tsx +432 -124
- package/dist/components/resizable/Resizable.stories.tsx +495 -799
- package/dist/components/scroll-area/ScrollArea.stories.tsx +383 -1059
- package/dist/components/search/Search.stories.tsx +312 -595
- package/dist/components/select/Select.stories.tsx +684 -789
- package/dist/components/sheet/Sheet.stories.tsx +671 -950
- package/dist/components/skelton/Skelton.stories.tsx +230 -764
- package/dist/components/slider/Slider.stories.tsx +383 -760
- package/dist/components/stepper/Stepper.stories.tsx +371 -514
- package/dist/components/switch/Switch.stories.tsx +461 -208
- package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
- package/dist/components/table/Table.stories.tsx +770 -916
- package/dist/components/tabs/Tabs.stories.tsx +458 -1455
- package/dist/components/tag/Tag.stories.tsx +714 -542
- package/dist/components/textarea/TextArea.stories.tsx +621 -562
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -154
- package/dist/components/toast/Toast.stories.tsx +452 -1339
- package/dist/components/toggle/Toggle.stories.tsx +488 -931
- package/dist/components/tooltip/Tooltip.stories.tsx +344 -1388
- package/dist/components/typography/Typography.stories.tsx +406 -89
- package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
- package/dist/icons/Icons.stories.tsx +0 -12
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +223 -1060
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +106 -968
- package/dist/icons/all-icons.tsx +37 -16
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +137 -1010
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +145 -935
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +132 -1046
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +134 -986
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +135 -1028
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +133 -971
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +145 -1123
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +143 -1252
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +123 -632
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +141 -1223
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +164 -1018
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +121 -1236
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +121 -1213
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +116 -893
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +109 -1254
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +114 -975
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +157 -994
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +160 -992
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +140 -970
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +126 -993
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +144 -987
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +141 -1007
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +147 -1187
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +110 -476
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +120 -1364
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +113 -1360
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +111 -942
- package/dist/icons/command-icon/CommandIcon.stories.tsx +124 -1087
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +119 -996
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +144 -1046
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +136 -999
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +123 -857
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +121 -1080
- package/dist/icons/email-icon/EmailIcon.stories.tsx +112 -979
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +109 -1146
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +141 -1068
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +140 -1081
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +124 -1050
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +123 -1091
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +122 -633
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +116 -1087
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +166 -1020
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +112 -1182
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +112 -1155
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +127 -325
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +142 -985
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +116 -1217
- package/dist/icons/head-icon/HeadIcon.stories.tsx +108 -953
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +117 -1060
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +116 -716
- package/dist/icons/image-icon/ImageIcon.stories.tsx +102 -1164
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +108 -1233
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +133 -1289
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +155 -1012
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +158 -1438
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +121 -1011
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +116 -981
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +116 -979
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +105 -1252
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +151 -1554
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +107 -1227
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +116 -707
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +119 -1226
- package/dist/icons/message-icon/MessageIcon.stories.tsx +111 -557
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +112 -1198
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +117 -557
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +106 -1235
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +112 -1185
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +116 -1012
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +108 -1137
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +116 -1138
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +106 -1146
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +119 -719
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +110 -999
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +109 -912
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +110 -1041
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +112 -1109
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +112 -1023
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +103 -1132
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +104 -870
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +99 -476
- package/dist/icons/search-icon/SearchIcon.stories.tsx +108 -1161
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +104 -1009
- package/dist/icons/share-icon/ShareIcon.stories.tsx +117 -1064
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +114 -974
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +134 -1160
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +169 -1017
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +161 -1016
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +102 -1001
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +155 -593
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +155 -608
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +142 -712
- package/dist/icons/star-icon/StarIcon.stories.tsx +120 -946
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +109 -1013
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +113 -891
- package/dist/icons/sun-icon/SunIcon.stories.tsx +117 -864
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +113 -989
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +120 -1027
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +153 -1476
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +143 -1187
- package/dist/icons/tick-icon/TickIcon.stories.tsx +142 -1322
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +105 -970
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +154 -1457
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +112 -930
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +115 -1019
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +122 -1092
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +120 -1401
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +107 -1212
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +109 -1122
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +112 -1124
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +119 -1083
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +158 -983
- package/dist/index.cjs +90 -90
- package/dist/index.js +90 -90
- package/package.json +8 -3
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/react-vite"
|
|
3
3
|
|
|
4
|
+
import { BubbleCheckIcon } from "src/ui/icons/bubble-check-icon"
|
|
5
|
+
import { BubbleCrossedIcon } from "src/ui/icons/bubble-crossed-icon"
|
|
6
|
+
import { FeatureShineIcon } from "src/ui/icons/feature-shine-icon"
|
|
7
|
+
import { SparklesSoftIcon } from "src/ui/icons/sparkles-soft-icon"
|
|
8
|
+
import {
|
|
9
|
+
IconColorVariations,
|
|
10
|
+
IconDefaultCanvas,
|
|
11
|
+
IconPlaygroundCanvas,
|
|
12
|
+
IconSizeVariations,
|
|
13
|
+
IconUsageCanvas,
|
|
14
|
+
IconUsageSection,
|
|
15
|
+
} from "src/ui/story-spec/icons/icon-story-canvas"
|
|
16
|
+
import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
|
|
17
|
+
|
|
4
18
|
import { BubbleSparkleIcon } from "."
|
|
5
19
|
|
|
6
20
|
const meta: Meta<typeof BubbleSparkleIcon> = {
|
|
@@ -18,727 +32,69 @@ const meta: Meta<typeof BubbleSparkleIcon> = {
|
|
|
18
32
|
},
|
|
19
33
|
docs: {
|
|
20
34
|
page: () => (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
padding: 0 ;
|
|
33
|
-
margin: 0 ;
|
|
34
|
-
background: transparent ;
|
|
35
|
-
}
|
|
36
|
-
.docs-story {
|
|
37
|
-
background: transparent ;
|
|
38
|
-
}
|
|
39
|
-
.sbdocs {
|
|
40
|
-
background: transparent ;
|
|
41
|
-
}
|
|
42
|
-
body {
|
|
43
|
-
background: var(--color-fm-surface-primary) ;
|
|
44
|
-
}
|
|
45
|
-
#storybook-docs {
|
|
46
|
-
background: var(--color-fm-surface-primary) ;
|
|
47
|
-
}
|
|
48
|
-
.sbdocs-preview {
|
|
49
|
-
background: transparent ;
|
|
50
|
-
border: none ;
|
|
51
|
-
}
|
|
52
|
-
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
-
color: var(--color-fm-icon-active) ;
|
|
54
|
-
}
|
|
55
|
-
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color: var(--color-fm-secondary) ;
|
|
57
|
-
}
|
|
58
|
-
.sbdocs-code {
|
|
59
|
-
background: var(--color-fm-surface-secondary) ;
|
|
60
|
-
color: var(--color-fm-secondary-500) ;
|
|
61
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
62
|
-
}
|
|
63
|
-
.sbdocs-pre {
|
|
64
|
-
background: var(--color-fm-surface-secondary) ;
|
|
65
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
66
|
-
}
|
|
67
|
-
.sbdocs-table {
|
|
68
|
-
background: var(--color-fm-surface-secondary) ;
|
|
69
|
-
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
70
|
-
}
|
|
71
|
-
.sbdocs-table th {
|
|
72
|
-
background: var(--color-fm-surface-secondary) ;
|
|
73
|
-
color: var(--color-fm-icon-active) ;
|
|
74
|
-
border-bottom: 1px solid var(--color-fm-divider-secondary) ;
|
|
75
|
-
}
|
|
76
|
-
.sbdocs-table td {
|
|
77
|
-
color: var(--color-fm-secondary) ;
|
|
78
|
-
border-bottom: 1px solid var(--color-fm-divider-tertiary) ;
|
|
79
|
-
}
|
|
80
|
-
`}
|
|
81
|
-
</style>
|
|
82
|
-
|
|
83
|
-
<div className="bg-fm-surface-primary min-h-screen">
|
|
84
|
-
{/* Header */}
|
|
85
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
86
|
-
<div className="from-fm-secondary-500/10 to-fm-icon-info/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
87
|
-
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
|
-
<div className="!space-y-6 text-center">
|
|
89
|
-
<div className="border-fm-secondary-500/30 from-fm-secondary-500/20 to-fm-icon-info/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-12 w-12" />
|
|
91
|
-
</div>
|
|
92
|
-
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
|
-
BubbleSparkleIcon
|
|
94
|
-
</h1>
|
|
95
|
-
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
|
-
A magical bubble icon with sparkle effects for
|
|
97
|
-
conversations, chat bubbles, and communication interfaces.
|
|
98
|
-
Perfect for highlighting special messages and interactive
|
|
99
|
-
elements.
|
|
100
|
-
</p>
|
|
101
|
-
|
|
102
|
-
{/* Stats */}
|
|
103
|
-
<div className="flex items-center justify-center gap-8 pt-8">
|
|
104
|
-
<div className="text-center">
|
|
105
|
-
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
106
|
-
Accessible
|
|
107
|
-
</div>
|
|
108
|
-
<div className="text-fm-tertiary text-sm">
|
|
109
|
-
Screen reader friendly
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
113
|
-
<div className="text-center">
|
|
114
|
-
<div className="text-fm-icon-info text-3xl font-bold">
|
|
115
|
-
Scalable
|
|
116
|
-
</div>
|
|
117
|
-
<div className="text-fm-tertiary text-sm">
|
|
118
|
-
Any size needed
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
122
|
-
<div className="text-center">
|
|
123
|
-
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
124
|
-
Magical
|
|
125
|
-
</div>
|
|
126
|
-
<div className="text-fm-tertiary text-sm">
|
|
127
|
-
Sparkle effects
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
|
|
135
|
-
{/* Content */}
|
|
136
|
-
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
137
|
-
{/* Quick Usage */}
|
|
138
|
-
<div className="!space-y-8">
|
|
139
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
140
|
-
Quick Start
|
|
141
|
-
</h2>
|
|
142
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
143
|
-
<div className="!space-y-4">
|
|
144
|
-
<h3 className="text-fm-secondary-600! text-xl font-semibold">
|
|
145
|
-
Basic Usage
|
|
146
|
-
</h3>
|
|
147
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
148
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
149
|
-
{`import { BubbleSparkleIcon } from "@icons/bubble-sparkle-icon"
|
|
150
|
-
|
|
151
|
-
function ChatMessage() {
|
|
35
|
+
<AuralIconDocsPage
|
|
36
|
+
accentToken="info"
|
|
37
|
+
features={[
|
|
38
|
+
{ title: "AI Chat", description: "Sparkle bubble for AI replies" },
|
|
39
|
+
{ title: "Magic Actions", description: "AI-generated content cue" },
|
|
40
|
+
{ title: "Accessible", description: "ARIA-ready by default" },
|
|
41
|
+
]}
|
|
42
|
+
quickStart={{
|
|
43
|
+
codeExample: `import { BubbleSparkleIcon } from "src/ui/icons/bubble-sparkle-icon"
|
|
44
|
+
|
|
45
|
+
function AIReplyIndicator() {
|
|
152
46
|
return (
|
|
153
47
|
<div className="flex items-center gap-2">
|
|
154
|
-
<BubbleSparkleIcon className="h-5 w-5 text-
|
|
155
|
-
<span>
|
|
48
|
+
<BubbleSparkleIcon className="h-5 w-5 text-fm-icon-info" />
|
|
49
|
+
<span>AI-generated response</span>
|
|
156
50
|
</div>
|
|
157
51
|
)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
<div className="!space-y-4">
|
|
164
|
-
<h3 className="text-fm-secondary-600! text-xl font-semibold">
|
|
165
|
-
Live Preview
|
|
166
|
-
</h3>
|
|
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-secondary-500/20 bg-fm-secondary-500/10 flex items-center gap-3 rounded-lg border px-4 py-2">
|
|
169
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-5 w-5" />
|
|
170
|
-
<span className="text-fm-icon-active">
|
|
171
|
-
Special message
|
|
172
|
-
</span>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
</div>
|
|
176
|
-
</div>
|
|
177
|
-
</div>
|
|
178
|
-
|
|
179
|
-
{/* Props Documentation */}
|
|
180
|
-
<div className="!space-y-8">
|
|
181
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
182
|
-
Props & Configuration
|
|
183
|
-
</h2>
|
|
184
|
-
|
|
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>
|
|
190
|
-
</div>
|
|
191
|
-
<table className="!my-0 w-full">
|
|
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">
|
|
195
|
-
Prop
|
|
196
|
-
</th>
|
|
197
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
198
|
-
Type
|
|
199
|
-
</th>
|
|
200
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
201
|
-
Default
|
|
202
|
-
</th>
|
|
203
|
-
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
204
|
-
Description
|
|
205
|
-
</th>
|
|
206
|
-
</tr>
|
|
207
|
-
</thead>
|
|
208
|
-
<tbody>
|
|
209
|
-
{" "}
|
|
210
|
-
<tr className="bg-fm-surface-secondary!">
|
|
211
|
-
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
212
|
-
withAccessibility
|
|
213
|
-
</td>
|
|
214
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
215
|
-
boolean
|
|
216
|
-
</td>
|
|
217
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
218
|
-
true
|
|
219
|
-
</td>
|
|
220
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
221
|
-
Whether to wrap the icon with accessibility feature
|
|
222
|
-
</td>
|
|
223
|
-
</tr>
|
|
224
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
225
|
-
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
226
|
-
height
|
|
227
|
-
</td>
|
|
228
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
229
|
-
number | string
|
|
230
|
-
</td>
|
|
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">
|
|
235
|
-
Height of the icon in pixels
|
|
236
|
-
</td>
|
|
237
|
-
</tr>
|
|
238
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
239
|
-
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
240
|
-
className
|
|
241
|
-
</td>
|
|
242
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
243
|
-
string
|
|
244
|
-
</td>
|
|
245
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
246
|
-
-
|
|
247
|
-
</td>
|
|
248
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
249
|
-
CSS classes for styling (use for overrides)
|
|
250
|
-
</td>
|
|
251
|
-
</tr>
|
|
252
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
253
|
-
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
254
|
-
stroke
|
|
255
|
-
</td>
|
|
256
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
257
|
-
string
|
|
258
|
-
</td>
|
|
259
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
260
|
-
currentColor
|
|
261
|
-
</td>
|
|
262
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
263
|
-
Stroke color of the icon
|
|
264
|
-
</td>
|
|
265
|
-
</tr>
|
|
266
|
-
<tr className="bg-fm-surface-secondary!">
|
|
267
|
-
<td className="text-fm-secondary-600! px-6 py-4 font-mono text-sm">
|
|
268
|
-
...svgProps
|
|
269
|
-
</td>
|
|
270
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
271
|
-
SVGProps
|
|
272
|
-
</td>
|
|
273
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
274
|
-
-
|
|
275
|
-
</td>
|
|
276
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
277
|
-
All standard SVG element props
|
|
278
|
-
</td>
|
|
279
|
-
</tr>
|
|
280
|
-
</tbody>
|
|
281
|
-
</table>
|
|
282
|
-
</div>
|
|
52
|
+
}`,
|
|
53
|
+
livePreview: (
|
|
54
|
+
<div className="flex items-center gap-2">
|
|
55
|
+
<BubbleSparkleIcon className="text-fm-icon-info h-6 w-6" />
|
|
283
56
|
</div>
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
20px
|
|
314
|
-
</span>
|
|
315
|
-
</div>
|
|
316
|
-
<div className="text-center">
|
|
317
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-6 w-6" />
|
|
318
|
-
<span className="text-fm-tertiary text-xs">
|
|
319
|
-
24px
|
|
320
|
-
</span>
|
|
321
|
-
</div>
|
|
322
|
-
<div className="text-center">
|
|
323
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-8 w-8" />
|
|
324
|
-
<span className="text-fm-tertiary text-xs">
|
|
325
|
-
32px
|
|
326
|
-
</span>
|
|
327
|
-
</div>
|
|
328
|
-
<div className="text-center">
|
|
329
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-12 w-12" />
|
|
330
|
-
<span className="text-fm-tertiary text-xs">
|
|
331
|
-
48px
|
|
332
|
-
</span>
|
|
333
|
-
</div>
|
|
334
|
-
</div>
|
|
335
|
-
</div>
|
|
336
|
-
|
|
337
|
-
<div className="!space-y-4">
|
|
338
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
339
|
-
Code Example
|
|
340
|
-
</h3>
|
|
341
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
342
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
343
|
-
{`// Small (16px)
|
|
344
|
-
<BubbleSparkleIcon className="h-4 w-4 " />
|
|
345
|
-
|
|
346
|
-
// Medium (24px)
|
|
347
|
-
<BubbleSparkleIcon className="h-6 w-6 " />
|
|
348
|
-
|
|
349
|
-
// Large (32px)
|
|
350
|
-
<BubbleSparkleIcon className="h-8 w-8 " />
|
|
351
|
-
|
|
352
|
-
// Custom size
|
|
353
|
-
<BubbleSparkleIcon width={40} height={40} />`}
|
|
354
|
-
</pre>
|
|
355
|
-
</div>
|
|
356
|
-
</div>
|
|
357
|
-
</div>
|
|
358
|
-
</div>
|
|
359
|
-
</div>
|
|
360
|
-
</div>
|
|
361
|
-
|
|
362
|
-
{/* Color Variations */}
|
|
363
|
-
<div className="!space-y-8">
|
|
364
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
365
|
-
Color Variations
|
|
366
|
-
</h2>
|
|
367
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
368
|
-
<div className="!space-y-4">
|
|
369
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
370
|
-
Semantic Colors
|
|
371
|
-
</h3>
|
|
372
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
373
|
-
<div className="flex items-center gap-4">
|
|
374
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
375
|
-
<div>
|
|
376
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
377
|
-
Magic
|
|
378
|
-
</div>
|
|
379
|
-
<div className="text-fm-tertiary text-xs">
|
|
380
|
-
text-fm-secondary-600
|
|
381
|
-
</div>
|
|
382
|
-
</div>
|
|
383
|
-
</div>
|
|
384
|
-
<div className="flex items-center gap-4">
|
|
385
|
-
<BubbleSparkleIcon className="text-fm-icon-info h-6 w-6" />
|
|
386
|
-
<div>
|
|
387
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
388
|
-
Chat
|
|
389
|
-
</div>
|
|
390
|
-
<div className="text-fm-tertiary text-xs">
|
|
391
|
-
text-fm-icon-info
|
|
392
|
-
</div>
|
|
393
|
-
</div>
|
|
394
|
-
</div>
|
|
395
|
-
<div className="flex items-center gap-4">
|
|
396
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
397
|
-
<div>
|
|
398
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
399
|
-
Special
|
|
400
|
-
</div>
|
|
401
|
-
<div className="text-fm-tertiary text-xs">
|
|
402
|
-
text-fm-secondary-600
|
|
403
|
-
</div>
|
|
404
|
-
</div>
|
|
405
|
-
</div>
|
|
406
|
-
<div className="flex items-center gap-4">
|
|
407
|
-
<BubbleSparkleIcon className="text-fm-icon-info h-6 w-6" />
|
|
408
|
-
<div>
|
|
409
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
410
|
-
Highlight
|
|
411
|
-
</div>
|
|
412
|
-
<div className="text-fm-tertiary text-xs">
|
|
413
|
-
text-fm-icon-info
|
|
414
|
-
</div>
|
|
415
|
-
</div>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
</div>
|
|
419
|
-
|
|
420
|
-
<div className="!space-y-4">
|
|
421
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
422
|
-
Custom Colors
|
|
423
|
-
</h3>
|
|
424
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
425
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
426
|
-
{`// Using Tailwind classes with
|
|
427
|
-
<BubbleSparkleIcon className="h-6 w-6 text-purple-400 " />
|
|
428
|
-
<BubbleSparkleIcon className="h-6 w-6 text-pink-500 " />
|
|
429
|
-
|
|
430
|
-
// Using CSS custom properties
|
|
431
|
-
<BubbleSparkleIcon
|
|
432
|
-
className="h-6 w-6 "
|
|
433
|
-
style={{ color: 'var(--color-magic)' }}
|
|
434
|
-
/>
|
|
435
|
-
|
|
436
|
-
// Direct stroke prop
|
|
437
|
-
<BubbleSparkleIcon
|
|
438
|
-
width={24}
|
|
439
|
-
height={24}
|
|
440
|
-
stroke="#8b5cf6"
|
|
441
|
-
/>`}
|
|
442
|
-
</pre>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
</div>
|
|
446
|
-
</div>
|
|
447
|
-
|
|
448
|
-
{/* Usage Examples */}
|
|
449
|
-
<div className="!space-y-8">
|
|
450
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
451
|
-
Usage Examples
|
|
452
|
-
</h2>
|
|
453
|
-
|
|
454
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
455
|
-
{/* Chat Interface */}
|
|
456
|
-
<div className="!space-y-4">
|
|
457
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
458
|
-
Chat Interface
|
|
459
|
-
</h3>
|
|
460
|
-
<div className="!space-y-4">
|
|
461
|
-
<div className="border-fm-secondary-500/20 bg-fm-secondary-500/10 rounded-lg border p-4">
|
|
462
|
-
<div className="flex items-start gap-3">
|
|
463
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 mt-0.5 h-5 w-5 flex-shrink-0" />
|
|
464
|
-
<div>
|
|
465
|
-
<h4 className="text-fm-secondary-600! font-medium">
|
|
466
|
-
AI Assistant
|
|
467
|
-
</h4>
|
|
468
|
-
<p className="text-fm-secondary-600!/80 text-sm">
|
|
469
|
-
I can help you with special tasks and magical
|
|
470
|
-
features!
|
|
471
|
-
</p>
|
|
472
|
-
</div>
|
|
473
|
-
</div>
|
|
474
|
-
</div>
|
|
475
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
476
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
477
|
-
{`<div className="border border-purple-500/20 bg-purple-500/10 p-4 rounded-lg">
|
|
478
|
-
<div className="flex items-start gap-3">
|
|
479
|
-
<BubbleSparkleIcon className="h-5 w-5 text-purple-400 mt-0.5 flex-shrink-0 " />
|
|
480
|
-
<div>
|
|
481
|
-
<h4 className="font-medium text-purple-200">AI Assistant</h4>
|
|
482
|
-
<p className="text-sm text-purple-300/80">
|
|
483
|
-
I can help you with special tasks and magical features!
|
|
484
|
-
</p>
|
|
485
|
-
</div>
|
|
486
|
-
</div>
|
|
487
|
-
</div>`}
|
|
488
|
-
</pre>
|
|
489
|
-
</div>
|
|
490
|
-
</div>
|
|
491
|
-
</div>
|
|
492
|
-
|
|
493
|
-
{/* Special Message */}
|
|
494
|
-
<div className="!space-y-4">
|
|
495
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
496
|
-
Special Message Badge
|
|
497
|
-
</h3>
|
|
498
|
-
<div className="!space-y-4">
|
|
499
|
-
<div className="!space-y-2">
|
|
500
|
-
<div className="relative inline-block">
|
|
501
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary text-fm-icon-active rounded-lg border px-4 py-2">
|
|
502
|
-
Hello! How can I help you today?
|
|
503
|
-
</div>
|
|
504
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 absolute -top-1 -right-1 h-4 w-4" />
|
|
505
|
-
</div>
|
|
506
|
-
</div>
|
|
507
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
508
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
509
|
-
{`// Message with sparkle badge
|
|
510
|
-
<div className="relative inline-block">
|
|
511
|
-
<div className="rounded-lg border border-white/10 bg-white/5 px-4 py-2 text-white">
|
|
512
|
-
Hello! How can I help you today?
|
|
513
|
-
</div>
|
|
514
|
-
<BubbleSparkleIcon className="absolute -top-1 -right-1 h-4 w-4 text-pink-400 " />
|
|
515
|
-
</div>`}
|
|
516
|
-
</pre>
|
|
517
|
-
</div>
|
|
518
|
-
</div>
|
|
519
|
-
</div>
|
|
520
|
-
|
|
521
|
-
{/* Button Integration */}
|
|
522
|
-
<div className="!space-y-4">
|
|
523
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
524
|
-
Button Integration
|
|
525
|
-
</h3>
|
|
526
|
-
<div className="!space-y-4">
|
|
527
|
-
<div className="flex gap-4">
|
|
528
|
-
<button className="border-fm-secondary-500/30 bg-fm-secondary-500/20 text-fm-secondary-600 hover:bg-fm-secondary-500/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
529
|
-
<BubbleSparkleIcon className="h-4 w-4" />
|
|
530
|
-
Start Magic Chat
|
|
531
|
-
</button>
|
|
532
|
-
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
533
|
-
<BubbleSparkleIcon className="h-4 w-4" />
|
|
534
|
-
Create Bubble
|
|
535
|
-
</button>
|
|
536
|
-
</div>
|
|
537
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
538
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
539
|
-
{`// Magic chat button
|
|
540
|
-
<button className="flex items-center gap-2 bg-purple-500/20 border border-purple-500/30 px-4 py-2 rounded-lg">
|
|
541
|
-
<BubbleSparkleIcon className="h-4 w-4 " />
|
|
542
|
-
Start Magic Chat
|
|
543
|
-
</button>
|
|
544
|
-
|
|
545
|
-
// Bubble creation button
|
|
546
|
-
<button className="flex items-center gap-2 bg-blue-500/20 border border-blue-500/30 px-4 py-2 rounded-lg">
|
|
547
|
-
<BubbleSparkleIcon className="h-4 w-4 " />
|
|
548
|
-
Create Bubble
|
|
549
|
-
</button>`}
|
|
550
|
-
</pre>
|
|
551
|
-
</div>
|
|
552
|
-
</div>
|
|
553
|
-
</div>
|
|
554
|
-
|
|
555
|
-
{/* Navigation Item */}
|
|
556
|
-
<div className="!space-y-4">
|
|
557
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
558
|
-
Navigation Item
|
|
559
|
-
</h3>
|
|
560
|
-
<div className="!space-y-4">
|
|
561
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
562
|
-
<div className="text-fm-icon-active flex items-center gap-3">
|
|
563
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-5 w-5" />
|
|
564
|
-
<span className="font-medium">Magic Messages</span>
|
|
565
|
-
<span className="bg-fm-secondary-500/20 text-fm-secondary-600 ml-auto rounded-full px-2 py-1 text-xs">
|
|
566
|
-
3 new
|
|
567
|
-
</span>
|
|
568
|
-
</div>
|
|
569
|
-
</div>
|
|
570
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
571
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
572
|
-
{`<div className="flex items-center gap-3 text-white">
|
|
573
|
-
<BubbleSparkleIcon className="h-5 w-5 text-purple-400 " />
|
|
574
|
-
<span className="font-medium">Magic Messages</span>
|
|
575
|
-
<span className="ml-auto rounded-full bg-purple-500/20 px-2 py-1 text-xs text-purple-300">
|
|
576
|
-
3 new
|
|
577
|
-
</span>
|
|
578
|
-
</div>`}
|
|
579
|
-
</pre>
|
|
580
|
-
</div>
|
|
581
|
-
</div>
|
|
582
|
-
</div>
|
|
583
|
-
</div>
|
|
584
|
-
</div>
|
|
585
|
-
|
|
586
|
-
{/* Accessibility */}
|
|
587
|
-
<div className="!space-y-8">
|
|
588
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
589
|
-
Accessibility Features
|
|
590
|
-
</h2>
|
|
591
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
592
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
593
|
-
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
594
|
-
✅ Built-in Features
|
|
595
|
-
</h3>
|
|
596
|
-
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
597
|
-
<li className="text-fm-secondary!">
|
|
598
|
-
Uses Radix UI AccessibleIcon wrapper
|
|
599
|
-
</li>
|
|
600
|
-
<li className="text-fm-secondary!">
|
|
601
|
-
Provides screen reader label "Bubble Sparkle icon"
|
|
602
|
-
</li>
|
|
603
|
-
<li className="text-fm-secondary!">
|
|
604
|
-
Supports keyboard navigation when interactive
|
|
605
|
-
</li>
|
|
606
|
-
<li className="text-fm-secondary!">
|
|
607
|
-
Maintains proper color contrast ratios
|
|
608
|
-
</li>
|
|
609
|
-
<li className="text-fm-secondary!">
|
|
610
|
-
Scales with user's font size preferences
|
|
611
|
-
</li>
|
|
612
|
-
</ul>
|
|
613
|
-
</div>
|
|
614
|
-
|
|
615
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
616
|
-
<h3 className="text-fm-secondary-600! text-lg font-semibold">
|
|
617
|
-
💡 Best Practices
|
|
618
|
-
</h3>
|
|
619
|
-
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
620
|
-
<li className="text-fm-secondary!">
|
|
621
|
-
Always pair with descriptive text
|
|
622
|
-
</li>
|
|
623
|
-
<li className="text-fm-secondary!">
|
|
624
|
-
Use consistent colors for message types
|
|
625
|
-
</li>
|
|
626
|
-
<li className="text-fm-secondary!">
|
|
627
|
-
Ensure sufficient color contrast
|
|
628
|
-
</li>
|
|
629
|
-
<li className="text-fm-secondary!">
|
|
630
|
-
Add focus states for interactive elements
|
|
631
|
-
</li>
|
|
632
|
-
<li className="text-fm-secondary!">
|
|
633
|
-
Consider sparkle effect visibility
|
|
634
|
-
</li>
|
|
635
|
-
</ul>
|
|
636
|
-
</div>
|
|
637
|
-
</div>
|
|
638
|
-
</div>
|
|
639
|
-
|
|
640
|
-
{/* Related Icons */}
|
|
641
|
-
<div className="!space-y-8">
|
|
642
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
643
|
-
Related Icons
|
|
644
|
-
</h2>
|
|
645
|
-
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
646
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
647
|
-
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
648
|
-
<span className="text-2xl">💬</span>
|
|
649
|
-
</div>
|
|
650
|
-
<div>
|
|
651
|
-
<div className="text-fm-icon-active font-medium">
|
|
652
|
-
ChatIcon
|
|
653
|
-
</div>
|
|
654
|
-
<div className="text-fm-tertiary text-xs">
|
|
655
|
-
Regular chat
|
|
656
|
-
</div>
|
|
657
|
-
</div>
|
|
658
|
-
</div>
|
|
659
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
660
|
-
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
661
|
-
<span className="text-2xl">✨</span>
|
|
662
|
-
</div>
|
|
663
|
-
<div>
|
|
664
|
-
<div className="text-fm-icon-active font-medium">
|
|
665
|
-
SparkleIcon
|
|
666
|
-
</div>
|
|
667
|
-
<div className="text-fm-tertiary text-xs">
|
|
668
|
-
Magic effects
|
|
669
|
-
</div>
|
|
670
|
-
</div>
|
|
671
|
-
</div>
|
|
672
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
673
|
-
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
674
|
-
<span className="text-2xl">💭</span>
|
|
675
|
-
</div>
|
|
676
|
-
<div>
|
|
677
|
-
<div className="text-fm-icon-active font-medium">
|
|
678
|
-
ThoughtIcon
|
|
679
|
-
</div>
|
|
680
|
-
<div className="text-fm-tertiary text-xs">
|
|
681
|
-
Thought bubbles
|
|
682
|
-
</div>
|
|
683
|
-
</div>
|
|
684
|
-
</div>
|
|
685
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
686
|
-
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
687
|
-
<span className="text-2xl">🗨️</span>
|
|
688
|
-
</div>
|
|
689
|
-
<div>
|
|
690
|
-
<div className="text-fm-icon-active font-medium">
|
|
691
|
-
MessageIcon
|
|
692
|
-
</div>
|
|
693
|
-
<div className="text-fm-tertiary text-xs">Messages</div>
|
|
694
|
-
</div>
|
|
695
|
-
</div>
|
|
696
|
-
</div>
|
|
697
|
-
</div>
|
|
698
|
-
</div>
|
|
699
|
-
|
|
700
|
-
{/* Footer */}
|
|
701
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
702
|
-
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
703
|
-
<div className="!space-y-4 text-center">
|
|
704
|
-
<p className="text-fm-tertiary!">
|
|
705
|
-
BubbleSparkleIcon is part of the Aural UI icon library,
|
|
706
|
-
built with accessibility and magical user experiences in
|
|
707
|
-
mind.
|
|
708
|
-
</p>
|
|
709
|
-
<p className="text-fm-placeholder! text-sm">
|
|
710
|
-
All icons use Radix UI's AccessibleIcon for screen reader
|
|
711
|
-
compatibility and follow WCAG guidelines.
|
|
712
|
-
</p>
|
|
713
|
-
</div>
|
|
714
|
-
</div>
|
|
715
|
-
</div>
|
|
716
|
-
</div>
|
|
717
|
-
</>
|
|
57
|
+
),
|
|
58
|
+
}}
|
|
59
|
+
relatedIcons={[
|
|
60
|
+
{
|
|
61
|
+
name: "SparklesSoftIcon",
|
|
62
|
+
description: "Soft sparkle / magic icon",
|
|
63
|
+
icon: SparklesSoftIcon,
|
|
64
|
+
accentToken: "info",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "FeatureShineIcon",
|
|
68
|
+
description: "Feature highlight / shine",
|
|
69
|
+
icon: FeatureShineIcon,
|
|
70
|
+
accentToken: "positive",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "BubbleCheckIcon",
|
|
74
|
+
description: "Approved chat bubble",
|
|
75
|
+
icon: BubbleCheckIcon,
|
|
76
|
+
accentToken: "warning",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "BubbleCrossedIcon",
|
|
80
|
+
description: "Rejected chat bubble",
|
|
81
|
+
icon: BubbleCrossedIcon,
|
|
82
|
+
accentToken: "negative",
|
|
83
|
+
},
|
|
84
|
+
]}
|
|
85
|
+
/>
|
|
718
86
|
),
|
|
719
87
|
},
|
|
720
88
|
},
|
|
721
89
|
tags: ["autodocs"],
|
|
722
90
|
argTypes: {
|
|
723
|
-
|
|
724
|
-
control:
|
|
725
|
-
description: "
|
|
91
|
+
className: {
|
|
92
|
+
control: "text",
|
|
93
|
+
description: "CSS classes including color token",
|
|
726
94
|
},
|
|
727
95
|
withAccessibility: {
|
|
728
96
|
control: "boolean",
|
|
729
|
-
description: "
|
|
730
|
-
},
|
|
731
|
-
height: {
|
|
732
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
733
|
-
description: "Height of the icon in pixels",
|
|
734
|
-
},
|
|
735
|
-
stroke: {
|
|
736
|
-
control: "color",
|
|
737
|
-
description: "Stroke color of the icon",
|
|
738
|
-
},
|
|
739
|
-
className: {
|
|
740
|
-
control: "text",
|
|
741
|
-
description: "CSS classes for styling (use for overrides)",
|
|
97
|
+
description: "Wrap with accessibility label",
|
|
742
98
|
},
|
|
743
99
|
},
|
|
744
100
|
}
|
|
@@ -746,221 +102,88 @@ function ChatMessage() {
|
|
|
746
102
|
export default meta
|
|
747
103
|
type Story = StoryObj<typeof BubbleSparkleIcon>
|
|
748
104
|
|
|
749
|
-
// Story parameters for consistent dark theme
|
|
750
|
-
const storyParameters = {
|
|
751
|
-
backgrounds: {
|
|
752
|
-
default: "dark",
|
|
753
|
-
values: [
|
|
754
|
-
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
755
|
-
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
756
|
-
],
|
|
757
|
-
},
|
|
758
|
-
}
|
|
759
|
-
|
|
760
105
|
export const Default: Story = {
|
|
761
106
|
args: {
|
|
762
|
-
|
|
763
|
-
height: 24,
|
|
764
|
-
className: "text-fm-secondary-600 ",
|
|
107
|
+
className: "h-6 w-6 text-fm-icon-info",
|
|
765
108
|
withAccessibility: true,
|
|
766
109
|
},
|
|
767
|
-
parameters: storyParameters,
|
|
768
110
|
render: (args) => (
|
|
769
|
-
<
|
|
111
|
+
<IconDefaultCanvas>
|
|
770
112
|
<BubbleSparkleIcon {...args} />
|
|
771
|
-
</
|
|
113
|
+
</IconDefaultCanvas>
|
|
772
114
|
),
|
|
773
115
|
}
|
|
774
116
|
|
|
775
117
|
export const SizeVariations: Story = {
|
|
776
|
-
|
|
777
|
-
...storyParameters,
|
|
778
|
-
docs: {
|
|
779
|
-
description: {
|
|
780
|
-
story:
|
|
781
|
-
"BubbleSparkleIcon in different sizes, from small UI elements to large displays.",
|
|
782
|
-
},
|
|
783
|
-
},
|
|
784
|
-
},
|
|
785
|
-
render: () => (
|
|
786
|
-
<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">
|
|
787
|
-
<div className="text-center">
|
|
788
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-3 w-3" />
|
|
789
|
-
<span className="text-fm-tertiary text-xs">12px</span>
|
|
790
|
-
</div>
|
|
791
|
-
<div className="text-center">
|
|
792
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-4 w-4" />
|
|
793
|
-
<span className="text-fm-tertiary text-xs">16px</span>
|
|
794
|
-
</div>
|
|
795
|
-
<div className="text-center">
|
|
796
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-5 w-5" />
|
|
797
|
-
<span className="text-fm-tertiary text-xs">20px</span>
|
|
798
|
-
</div>
|
|
799
|
-
<div className="text-center">
|
|
800
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-6 w-6" />
|
|
801
|
-
<span className="text-fm-tertiary text-xs">24px</span>
|
|
802
|
-
</div>
|
|
803
|
-
<div className="text-center">
|
|
804
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-8 w-8" />
|
|
805
|
-
<span className="text-fm-tertiary text-xs">32px</span>
|
|
806
|
-
</div>
|
|
807
|
-
<div className="text-center">
|
|
808
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 !mx-auto mb-2 h-12 w-12" />
|
|
809
|
-
<span className="text-fm-tertiary text-xs">48px</span>
|
|
810
|
-
</div>
|
|
811
|
-
</div>
|
|
812
|
-
),
|
|
118
|
+
render: () => <IconSizeVariations icon={BubbleSparkleIcon} />,
|
|
813
119
|
}
|
|
814
120
|
|
|
815
121
|
export const ColorVariations: Story = {
|
|
816
|
-
|
|
817
|
-
...storyParameters,
|
|
818
|
-
docs: {
|
|
819
|
-
description: {
|
|
820
|
-
story:
|
|
821
|
-
"BubbleSparkleIcon in different semantic colors for various message types.",
|
|
822
|
-
},
|
|
823
|
-
},
|
|
824
|
-
},
|
|
825
|
-
render: () => (
|
|
826
|
-
<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">
|
|
827
|
-
<div className="text-center">
|
|
828
|
-
<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">
|
|
829
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
830
|
-
</div>
|
|
831
|
-
<div className="text-fm-icon-active text-sm font-medium">Magic</div>
|
|
832
|
-
<div className="text-fm-secondary-600 text-xs">
|
|
833
|
-
text-fm-secondary-600
|
|
834
|
-
</div>
|
|
835
|
-
</div>
|
|
836
|
-
<div className="text-center">
|
|
837
|
-
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
838
|
-
<BubbleSparkleIcon className="text-fm-icon-info h-8 w-8" />
|
|
839
|
-
</div>
|
|
840
|
-
<div className="text-fm-icon-active text-sm font-medium">Chat</div>
|
|
841
|
-
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
842
|
-
</div>
|
|
843
|
-
<div className="text-center">
|
|
844
|
-
<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">
|
|
845
|
-
<BubbleSparkleIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
846
|
-
</div>
|
|
847
|
-
<div className="text-fm-icon-active text-sm font-medium">Special</div>
|
|
848
|
-
<div className="text-fm-secondary-600 text-xs">
|
|
849
|
-
text-fm-secondary-600
|
|
850
|
-
</div>
|
|
851
|
-
</div>
|
|
852
|
-
<div className="text-center">
|
|
853
|
-
<div className="border-fm-icon-info/30 bg-fm-icon-info/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
854
|
-
<BubbleSparkleIcon className="text-fm-icon-info h-8 w-8" />
|
|
855
|
-
</div>
|
|
856
|
-
<div className="text-fm-icon-active text-sm font-medium">Highlight</div>
|
|
857
|
-
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
858
|
-
</div>
|
|
859
|
-
</div>
|
|
860
|
-
),
|
|
122
|
+
render: () => <IconColorVariations icon={BubbleSparkleIcon} />,
|
|
861
123
|
}
|
|
862
124
|
|
|
863
125
|
export const UsageExamples: Story = {
|
|
864
|
-
parameters: {
|
|
865
|
-
...storyParameters,
|
|
866
|
-
docs: {
|
|
867
|
-
description: {
|
|
868
|
-
story:
|
|
869
|
-
"Real-world usage examples showing BubbleSparkleIcon in different UI contexts.",
|
|
870
|
-
},
|
|
871
|
-
},
|
|
872
|
-
},
|
|
873
126
|
render: () => (
|
|
874
|
-
<
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
<
|
|
883
|
-
|
|
884
|
-
<h4 className="text-fm-secondary-600 font-medium">
|
|
885
|
-
AI Assistant
|
|
886
|
-
</h4>
|
|
887
|
-
<p className="text-fm-secondary-600/80 text-sm">
|
|
888
|
-
I can help you with special tasks and magical features!
|
|
889
|
-
</p>
|
|
127
|
+
<IconUsageCanvas>
|
|
128
|
+
<IconUsageSection title="AI Reply Badge">
|
|
129
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex w-full max-w-sm items-center gap-3 rounded-xl border px-4 py-3">
|
|
130
|
+
<BubbleSparkleIcon className="text-fm-icon-info h-5 w-5 shrink-0" />
|
|
131
|
+
<div>
|
|
132
|
+
<div className="text-fm-primary font-fm-text text-sm font-medium">
|
|
133
|
+
AI Suggestion
|
|
134
|
+
</div>
|
|
135
|
+
<div className="text-fm-secondary font-fm-text text-xs">
|
|
136
|
+
Generated from your content
|
|
890
137
|
</div>
|
|
891
138
|
</div>
|
|
892
139
|
</div>
|
|
893
|
-
</
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
</h3>
|
|
913
|
-
<div className="flex gap-4">
|
|
914
|
-
<button className="border-fm-secondary-500/30 bg-fm-secondary-500/20 text-fm-secondary-600 hover:bg-fm-secondary-500/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
915
|
-
<BubbleSparkleIcon className="h-4 w-4" />
|
|
916
|
-
Start Magic Chat
|
|
917
|
-
</button>
|
|
918
|
-
<button className="border-fm-icon-info/30 bg-fm-icon-info/20 text-fm-icon-info hover:bg-fm-icon-info/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
919
|
-
<BubbleSparkleIcon className="h-4 w-4" />
|
|
920
|
-
Create Bubble
|
|
921
|
-
</button>
|
|
140
|
+
</IconUsageSection>
|
|
141
|
+
|
|
142
|
+
<IconUsageSection title="AI Actions Menu">
|
|
143
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm overflow-hidden rounded-xl border">
|
|
144
|
+
{[
|
|
145
|
+
"Summarize this chapter",
|
|
146
|
+
"Rewrite in simpler words",
|
|
147
|
+
"Generate title ideas",
|
|
148
|
+
].map((label) => (
|
|
149
|
+
<button
|
|
150
|
+
key={label}
|
|
151
|
+
className="border-fm-divider-secondary flex w-full items-center gap-3 border-b px-4 py-3 last:border-b-0"
|
|
152
|
+
>
|
|
153
|
+
<BubbleSparkleIcon className="text-fm-icon-info h-4 w-4" />
|
|
154
|
+
<span className="text-fm-primary font-fm-text text-sm">
|
|
155
|
+
{label}
|
|
156
|
+
</span>
|
|
157
|
+
</button>
|
|
158
|
+
))}
|
|
922
159
|
</div>
|
|
923
|
-
</
|
|
160
|
+
</IconUsageSection>
|
|
924
161
|
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
<
|
|
935
|
-
3 new
|
|
936
|
-
</span>
|
|
162
|
+
<IconUsageSection title="Feedback Modes">
|
|
163
|
+
<div className="flex gap-3">
|
|
164
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-10 w-10 items-center justify-center rounded-xl border">
|
|
165
|
+
<BubbleSparkleIcon className="text-fm-icon-info h-5 w-5" />
|
|
166
|
+
</div>
|
|
167
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-10 w-10 items-center justify-center rounded-xl border">
|
|
168
|
+
<BubbleCheckIcon className="text-fm-icon-positive h-5 w-5" />
|
|
169
|
+
</div>
|
|
170
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-10 w-10 items-center justify-center rounded-xl border">
|
|
171
|
+
<BubbleCrossedIcon className="text-fm-icon-negative h-5 w-5" />
|
|
937
172
|
</div>
|
|
938
173
|
</div>
|
|
939
|
-
</
|
|
940
|
-
</
|
|
174
|
+
</IconUsageSection>
|
|
175
|
+
</IconUsageCanvas>
|
|
941
176
|
),
|
|
942
177
|
}
|
|
943
178
|
|
|
944
179
|
export const Playground: Story = {
|
|
945
|
-
parameters: {
|
|
946
|
-
...storyParameters,
|
|
947
|
-
docs: {
|
|
948
|
-
description: {
|
|
949
|
-
story:
|
|
950
|
-
"Interactive playground to experiment with different BubbleSparkleIcon configurations.",
|
|
951
|
-
},
|
|
952
|
-
},
|
|
953
|
-
},
|
|
954
180
|
args: {
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
className: "text-fm-secondary-600 ",
|
|
181
|
+
className: "h-8 w-8 text-fm-icon-info",
|
|
182
|
+
withAccessibility: true,
|
|
958
183
|
},
|
|
959
184
|
render: (args) => (
|
|
960
|
-
<
|
|
961
|
-
<
|
|
962
|
-
|
|
963
|
-
</div>
|
|
964
|
-
</div>
|
|
185
|
+
<IconPlaygroundCanvas>
|
|
186
|
+
<BubbleSparkleIcon {...args} />
|
|
187
|
+
</IconPlaygroundCanvas>
|
|
965
188
|
),
|
|
966
189
|
}
|