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