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 { BubbleSparkleIcon } from "src/ui/icons/bubble-sparkle-icon"
|
|
5
|
+
import { FeatureShineIcon } from "src/ui/icons/feature-shine-icon"
|
|
6
|
+
import { LightBulbSimpleIcon } from "src/ui/icons/light-bulb-simple-icon"
|
|
7
|
+
import { MagicBookIcon } from "src/ui/icons/magic-book-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 { SparklesSoftIcon } from "."
|
|
5
19
|
|
|
6
20
|
const meta: Meta<typeof SparklesSoftIcon> = {
|
|
@@ -18,837 +32,69 @@ const meta: Meta<typeof SparklesSoftIcon> = {
|
|
|
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-icon-warning/10 to-fm-secondary-500/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-icon-warning/30 from-fm-icon-warning/20 to-fm-secondary-500/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
90
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-12 w-12" />
|
|
91
|
-
</div>
|
|
92
|
-
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
|
-
SparklesSoftIcon
|
|
94
|
-
</h1>
|
|
95
|
-
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
|
-
A magical sparkles icon perfect for AI features, premium
|
|
97
|
-
content, special effects, and celebratory moments. Built
|
|
98
|
-
with accessibility in mind using Radix UI's AccessibleIcon
|
|
99
|
-
wrapper.
|
|
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-icon-warning 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-secondary-600 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
|
-
Premium feel
|
|
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-icon-warning! 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 { SparklesSoftIcon } from "@icons/sparkles-soft-icon"
|
|
150
|
-
|
|
151
|
-
function MyComponent() {
|
|
35
|
+
<AuralIconDocsPage
|
|
36
|
+
accentToken="positive"
|
|
37
|
+
features={[
|
|
38
|
+
{ title: "AI Glow", description: "Soft AI feature indicator" },
|
|
39
|
+
{ title: "Magic", description: "Premium or magical feature" },
|
|
40
|
+
{ title: "Accessible", description: "ARIA-ready by default" },
|
|
41
|
+
]}
|
|
42
|
+
quickStart={{
|
|
43
|
+
codeExample: `import { SparklesSoftIcon } from "src/ui/icons/sparkles-soft-icon"
|
|
44
|
+
|
|
45
|
+
function AIFeatureBadge() {
|
|
152
46
|
return (
|
|
153
47
|
<div className="flex items-center gap-2">
|
|
154
|
-
<SparklesSoftIcon className="h-
|
|
155
|
-
<span>AI
|
|
48
|
+
<SparklesSoftIcon className="h-4 w-4 text-fm-icon-positive" />
|
|
49
|
+
<span>AI powered</span>
|
|
156
50
|
</div>
|
|
157
51
|
)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
<div className="!space-y-4">
|
|
164
|
-
<h3 className="text-fm-icon-warning! 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-icon-warning/20 bg-fm-icon-warning/10 flex items-center gap-3 rounded-lg border px-4 py-2">
|
|
169
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-5 w-5" />
|
|
170
|
-
<span className="text-fm-icon-active">AI Enhanced</span>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
52
|
+
}`,
|
|
53
|
+
livePreview: (
|
|
54
|
+
<div className="flex items-center gap-2">
|
|
55
|
+
<SparklesSoftIcon className="text-fm-icon-positive h-5 w-5" />
|
|
175
56
|
</div>
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
</thead>
|
|
206
|
-
<tbody>
|
|
207
|
-
{" "}
|
|
208
|
-
<tr className="bg-fm-surface-secondary!">
|
|
209
|
-
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
210
|
-
withAccessibility
|
|
211
|
-
</td>
|
|
212
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
213
|
-
boolean
|
|
214
|
-
</td>
|
|
215
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
216
|
-
true
|
|
217
|
-
</td>
|
|
218
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
219
|
-
Whether to wrap the icon with accessibility feature
|
|
220
|
-
</td>
|
|
221
|
-
</tr>
|
|
222
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
223
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
224
|
-
height
|
|
225
|
-
</td>
|
|
226
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
227
|
-
number | string
|
|
228
|
-
</td>
|
|
229
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
230
|
-
20
|
|
231
|
-
</td>
|
|
232
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
233
|
-
Height of the icon in pixels
|
|
234
|
-
</td>
|
|
235
|
-
</tr>
|
|
236
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
237
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
238
|
-
stroke
|
|
239
|
-
</td>
|
|
240
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
241
|
-
string
|
|
242
|
-
</td>
|
|
243
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
244
|
-
currentColor
|
|
245
|
-
</td>
|
|
246
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
247
|
-
Stroke color of the icon
|
|
248
|
-
</td>
|
|
249
|
-
</tr>
|
|
250
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
251
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
252
|
-
strokeWidth
|
|
253
|
-
</td>
|
|
254
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
255
|
-
number | string
|
|
256
|
-
</td>
|
|
257
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
258
|
-
1.5
|
|
259
|
-
</td>
|
|
260
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
261
|
-
Stroke width of the icon
|
|
262
|
-
</td>
|
|
263
|
-
</tr>
|
|
264
|
-
<tr className="border-fm-divider-tertiary border-b">
|
|
265
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
266
|
-
fill
|
|
267
|
-
</td>
|
|
268
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
269
|
-
string
|
|
270
|
-
</td>
|
|
271
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
272
|
-
currentColor
|
|
273
|
-
</td>
|
|
274
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
275
|
-
Fill color for small sparkle
|
|
276
|
-
</td>
|
|
277
|
-
</tr>
|
|
278
|
-
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
279
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
280
|
-
className
|
|
281
|
-
</td>
|
|
282
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
283
|
-
string
|
|
284
|
-
</td>
|
|
285
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
286
|
-
-
|
|
287
|
-
</td>
|
|
288
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
289
|
-
CSS classes for styling
|
|
290
|
-
</td>
|
|
291
|
-
</tr>
|
|
292
|
-
<tr className="bg-fm-surface-secondary!">
|
|
293
|
-
<td className="text-fm-icon-warning! px-6 py-4 font-mono text-sm">
|
|
294
|
-
...svgProps
|
|
295
|
-
</td>
|
|
296
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
297
|
-
SVGProps
|
|
298
|
-
</td>
|
|
299
|
-
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
300
|
-
-
|
|
301
|
-
</td>
|
|
302
|
-
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
303
|
-
All standard SVG element props
|
|
304
|
-
</td>
|
|
305
|
-
</tr>
|
|
306
|
-
</tbody>
|
|
307
|
-
</table>
|
|
308
|
-
</div>
|
|
309
|
-
</div>
|
|
310
|
-
|
|
311
|
-
{/* Size Variations */}
|
|
312
|
-
<div className="!space-y-8">
|
|
313
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
314
|
-
Size Variations
|
|
315
|
-
</h2>
|
|
316
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
317
|
-
<div className="!space-y-6">
|
|
318
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
319
|
-
<div className="!space-y-4">
|
|
320
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
321
|
-
Standard Sizes
|
|
322
|
-
</h3>
|
|
323
|
-
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
324
|
-
<div className="text-center">
|
|
325
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-3 w-3" />
|
|
326
|
-
<span className="text-fm-tertiary text-xs">
|
|
327
|
-
12px
|
|
328
|
-
</span>
|
|
329
|
-
</div>
|
|
330
|
-
<div className="text-center">
|
|
331
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-4 w-4" />
|
|
332
|
-
<span className="text-fm-tertiary text-xs">
|
|
333
|
-
16px
|
|
334
|
-
</span>
|
|
335
|
-
</div>
|
|
336
|
-
<div className="text-center">
|
|
337
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-5 w-5" />
|
|
338
|
-
<span className="text-fm-tertiary text-xs">
|
|
339
|
-
20px
|
|
340
|
-
</span>
|
|
341
|
-
</div>
|
|
342
|
-
<div className="text-center">
|
|
343
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-6 w-6" />
|
|
344
|
-
<span className="text-fm-tertiary text-xs">
|
|
345
|
-
24px
|
|
346
|
-
</span>
|
|
347
|
-
</div>
|
|
348
|
-
<div className="text-center">
|
|
349
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-8 w-8" />
|
|
350
|
-
<span className="text-fm-tertiary text-xs">
|
|
351
|
-
32px
|
|
352
|
-
</span>
|
|
353
|
-
</div>
|
|
354
|
-
<div className="text-center">
|
|
355
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-12 w-12" />
|
|
356
|
-
<span className="text-fm-tertiary text-xs">
|
|
357
|
-
48px
|
|
358
|
-
</span>
|
|
359
|
-
</div>
|
|
360
|
-
</div>
|
|
361
|
-
</div>
|
|
362
|
-
|
|
363
|
-
<div className="!space-y-4">
|
|
364
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
365
|
-
Code Example
|
|
366
|
-
</h3>
|
|
367
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
368
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
369
|
-
{`// Small (16px)
|
|
370
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
371
|
-
|
|
372
|
-
// Medium (24px)
|
|
373
|
-
<SparklesSoftIcon className="h-6 w-6" />
|
|
374
|
-
|
|
375
|
-
// Large (32px)
|
|
376
|
-
<SparklesSoftIcon className="h-8 w-8" />
|
|
377
|
-
|
|
378
|
-
// Custom size
|
|
379
|
-
<SparklesSoftIcon width={40} height={40} />`}
|
|
380
|
-
</pre>
|
|
381
|
-
</div>
|
|
382
|
-
</div>
|
|
383
|
-
</div>
|
|
384
|
-
</div>
|
|
385
|
-
</div>
|
|
386
|
-
</div>
|
|
387
|
-
|
|
388
|
-
{/* Color Variations */}
|
|
389
|
-
<div className="!space-y-8">
|
|
390
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
391
|
-
Color Variations
|
|
392
|
-
</h2>
|
|
393
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
394
|
-
<div className="!space-y-4">
|
|
395
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
396
|
-
Premium & AI Colors
|
|
397
|
-
</h3>
|
|
398
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
399
|
-
<div className="flex items-center gap-4">
|
|
400
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-6 w-6" />
|
|
401
|
-
<div>
|
|
402
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
403
|
-
Premium Gold
|
|
404
|
-
</div>
|
|
405
|
-
<div className="text-fm-tertiary text-xs">
|
|
406
|
-
text-fm-icon-warning
|
|
407
|
-
</div>
|
|
408
|
-
</div>
|
|
409
|
-
</div>
|
|
410
|
-
<div className="flex items-center gap-4">
|
|
411
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
412
|
-
<div>
|
|
413
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
414
|
-
AI Magic
|
|
415
|
-
</div>
|
|
416
|
-
<div className="text-fm-tertiary text-xs">
|
|
417
|
-
text-fm-secondary-600
|
|
418
|
-
</div>
|
|
419
|
-
</div>
|
|
420
|
-
</div>
|
|
421
|
-
<div className="flex items-center gap-4">
|
|
422
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-6 w-6" />
|
|
423
|
-
<div>
|
|
424
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
425
|
-
Celebration
|
|
426
|
-
</div>
|
|
427
|
-
<div className="text-fm-tertiary text-xs">
|
|
428
|
-
text-fm-secondary-600
|
|
429
|
-
</div>
|
|
430
|
-
</div>
|
|
431
|
-
</div>
|
|
432
|
-
<div className="flex items-center gap-4">
|
|
433
|
-
<SparklesSoftIcon className="text-fm-icon-info h-6 w-6" />
|
|
434
|
-
<div>
|
|
435
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
436
|
-
Special
|
|
437
|
-
</div>
|
|
438
|
-
<div className="text-fm-tertiary text-xs">
|
|
439
|
-
text-fm-icon-info
|
|
440
|
-
</div>
|
|
441
|
-
</div>
|
|
442
|
-
</div>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
|
|
446
|
-
<div className="!space-y-4">
|
|
447
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
448
|
-
Custom Colors
|
|
449
|
-
</h3>
|
|
450
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
451
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
452
|
-
{`// Using Tailwind classes
|
|
453
|
-
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
454
|
-
<SparklesSoftIcon className="h-6 w-6 text-purple-500" />
|
|
455
|
-
|
|
456
|
-
// Using CSS custom properties
|
|
457
|
-
<SparklesSoftIcon
|
|
458
|
-
className="h-6 w-6"
|
|
459
|
-
style={{ color: 'var(--color-premium)' }}
|
|
460
|
-
/>
|
|
461
|
-
|
|
462
|
-
// Direct stroke and fill props
|
|
463
|
-
<SparklesSoftIcon
|
|
464
|
-
width={24}
|
|
465
|
-
height={24}
|
|
466
|
-
stroke="#fbbf24"
|
|
467
|
-
fill="#fbbf24"
|
|
468
|
-
/>`}
|
|
469
|
-
</pre>
|
|
470
|
-
</div>
|
|
471
|
-
</div>
|
|
472
|
-
</div>
|
|
473
|
-
</div>
|
|
474
|
-
|
|
475
|
-
{/* Usage Examples */}
|
|
476
|
-
<div className="!space-y-8">
|
|
477
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
478
|
-
Usage Examples
|
|
479
|
-
</h2>
|
|
480
|
-
|
|
481
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
482
|
-
{/* AI Feature Badge */}
|
|
483
|
-
<div className="!space-y-4">
|
|
484
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
485
|
-
AI Feature Badge
|
|
486
|
-
</h3>
|
|
487
|
-
<div className="!space-y-4">
|
|
488
|
-
<div className="border-fm-secondary-500/20 bg-fm-secondary-500/10 rounded-lg border p-4">
|
|
489
|
-
<div className="flex items-center gap-3">
|
|
490
|
-
<div className="bg-fm-secondary-500/20 flex h-8 w-8 items-center justify-center rounded-full">
|
|
491
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-4 w-4" />
|
|
492
|
-
</div>
|
|
493
|
-
<div>
|
|
494
|
-
<h4 className="text-fm-secondary-600! font-medium">
|
|
495
|
-
AI Enhanced
|
|
496
|
-
</h4>
|
|
497
|
-
<p className="text-fm-secondary-600!/80 text-sm">
|
|
498
|
-
This feature is powered by artificial intelligence
|
|
499
|
-
</p>
|
|
500
|
-
</div>
|
|
501
|
-
</div>
|
|
502
|
-
</div>
|
|
503
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
504
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
505
|
-
{`<div className="border border-purple-500/20 bg-purple-500/10 p-4 rounded-lg">
|
|
506
|
-
<div className="flex items-center gap-3">
|
|
507
|
-
<div className="h-8 w-8 bg-purple-500/20 rounded-full flex items-center justify-center">
|
|
508
|
-
<SparklesSoftIcon className="h-4 w-4 text-purple-400" />
|
|
509
|
-
</div>
|
|
510
|
-
<div>
|
|
511
|
-
<h4 className="font-medium text-purple-200">AI Enhanced</h4>
|
|
512
|
-
<p className="text-sm text-purple-300/80">
|
|
513
|
-
This feature is powered by artificial intelligence
|
|
514
|
-
</p>
|
|
515
|
-
</div>
|
|
516
|
-
</div>
|
|
517
|
-
</div>`}
|
|
518
|
-
</pre>
|
|
519
|
-
</div>
|
|
520
|
-
</div>
|
|
521
|
-
</div>
|
|
522
|
-
|
|
523
|
-
{/* Premium Feature */}
|
|
524
|
-
<div className="!space-y-4">
|
|
525
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
526
|
-
Premium Feature
|
|
527
|
-
</h3>
|
|
528
|
-
<div className="!space-y-4">
|
|
529
|
-
<div className="border-fm-icon-warning/20 from-fm-icon-warning/10 to-fm-icon-warning/10 rounded-lg border bg-linear-to-r p-4">
|
|
530
|
-
<div className="flex items-center justify-between">
|
|
531
|
-
<div className="flex items-center gap-2">
|
|
532
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-5 w-5" />
|
|
533
|
-
<span className="text-fm-icon-active font-medium">
|
|
534
|
-
Pro Feature
|
|
535
|
-
</span>
|
|
536
|
-
</div>
|
|
537
|
-
<button className="from-fm-icon-warning to-fm-icon-warning text-fm-icon-active rounded-full bg-linear-to-r px-3 py-1 text-sm font-medium">
|
|
538
|
-
Upgrade
|
|
539
|
-
</button>
|
|
540
|
-
</div>
|
|
541
|
-
</div>
|
|
542
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
543
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
544
|
-
{`<div className="border border-yellow-500/20 bg-gradient-to-r from-yellow-500/10 to-orange-500/10 p-4 rounded-lg">
|
|
545
|
-
<div className="flex items-center justify-between">
|
|
546
|
-
<div className="flex items-center gap-2">
|
|
547
|
-
<SparklesSoftIcon className="h-5 w-5 text-yellow-400" />
|
|
548
|
-
<span className="font-medium text-white">Pro Feature</span>
|
|
549
|
-
</div>
|
|
550
|
-
<button className="bg-gradient-to-r from-yellow-400 to-orange-400 px-3 py-1 rounded-full text-sm font-medium text-black">
|
|
551
|
-
Upgrade
|
|
552
|
-
</button>
|
|
553
|
-
</div>
|
|
554
|
-
</div>`}
|
|
555
|
-
</pre>
|
|
556
|
-
</div>
|
|
557
|
-
</div>
|
|
558
|
-
</div>
|
|
559
|
-
|
|
560
|
-
{/* Button Integration */}
|
|
561
|
-
<div className="!space-y-4">
|
|
562
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
563
|
-
Button Integration
|
|
564
|
-
</h3>
|
|
565
|
-
<div className="!space-y-4">
|
|
566
|
-
<div className="flex gap-4">
|
|
567
|
-
<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">
|
|
568
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
569
|
-
Generate with AI
|
|
570
|
-
</button>
|
|
571
|
-
<button className="from-fm-icon-warning to-fm-icon-warning text-fm-icon-active hover:from-fm-icon-warning hover:to-fm-icon-warning flex items-center gap-2 rounded-lg bg-linear-to-r px-4 py-2 transition-all">
|
|
572
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
573
|
-
Upgrade to Pro
|
|
574
|
-
</button>
|
|
575
|
-
</div>
|
|
576
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
577
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
578
|
-
{`// AI action button
|
|
579
|
-
<button className="flex items-center gap-2 bg-purple-500/20 border border-purple-500/30 px-4 py-2 rounded-lg">
|
|
580
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
581
|
-
Generate with AI
|
|
582
|
-
</button>
|
|
583
|
-
|
|
584
|
-
// Premium upgrade button
|
|
585
|
-
<button className="flex items-center gap-2 bg-gradient-to-r from-yellow-400 to-orange-400 px-4 py-2 rounded-lg text-black">
|
|
586
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
587
|
-
Upgrade to Pro
|
|
588
|
-
</button>`}
|
|
589
|
-
</pre>
|
|
590
|
-
</div>
|
|
591
|
-
</div>
|
|
592
|
-
</div>
|
|
593
|
-
|
|
594
|
-
{/* Success State */}
|
|
595
|
-
<div className="!space-y-4">
|
|
596
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
597
|
-
Success Celebration
|
|
598
|
-
</h3>
|
|
599
|
-
<div className="!space-y-4">
|
|
600
|
-
<div className="border-fm-icon-positive/20 bg-fm-icon-positive/10 rounded-lg border p-4">
|
|
601
|
-
<div className="flex items-center gap-3">
|
|
602
|
-
<div className="relative">
|
|
603
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-6 w-6" />
|
|
604
|
-
<SparklesSoftIcon className="text-fm-secondary-600 absolute -top-1 -right-1 h-3 w-3" />
|
|
605
|
-
</div>
|
|
606
|
-
<div>
|
|
607
|
-
<h4 className="text-fm-icon-positive! font-medium">
|
|
608
|
-
Congratulations!
|
|
609
|
-
</h4>
|
|
610
|
-
<p className="text-fm-icon-positive!/80 text-sm">
|
|
611
|
-
Your project has been successfully deployed
|
|
612
|
-
</p>
|
|
613
|
-
</div>
|
|
614
|
-
</div>
|
|
615
|
-
</div>
|
|
616
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
617
|
-
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
618
|
-
{`<div className="border border-green-500/20 bg-green-500/10 p-4 rounded-lg">
|
|
619
|
-
<div className="flex items-center gap-3">
|
|
620
|
-
<div className="relative">
|
|
621
|
-
<SparklesSoftIcon className="h-6 w-6 text-yellow-400" />
|
|
622
|
-
<SparklesSoftIcon className="absolute -top-1 -right-1 h-3 w-3 text-pink-400" />
|
|
623
|
-
</div>
|
|
624
|
-
<div>
|
|
625
|
-
<h4 className="font-medium text-green-200">Congratulations!</h4>
|
|
626
|
-
<p className="text-sm text-green-300/80">
|
|
627
|
-
Your project has been successfully deployed
|
|
628
|
-
</p>
|
|
629
|
-
</div>
|
|
630
|
-
</div>
|
|
631
|
-
</div>`}
|
|
632
|
-
</pre>
|
|
633
|
-
</div>
|
|
634
|
-
</div>
|
|
635
|
-
</div>
|
|
636
|
-
</div>
|
|
637
|
-
</div>
|
|
638
|
-
|
|
639
|
-
{/* Accessibility */}
|
|
640
|
-
<div className="!space-y-8">
|
|
641
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
642
|
-
Accessibility Features
|
|
643
|
-
</h2>
|
|
644
|
-
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
645
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
646
|
-
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
647
|
-
✅ Built-in Features
|
|
648
|
-
</h3>
|
|
649
|
-
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
650
|
-
<li className="text-fm-secondary!">
|
|
651
|
-
Uses Radix UI AccessibleIcon wrapper
|
|
652
|
-
</li>
|
|
653
|
-
<li className="text-fm-secondary!">
|
|
654
|
-
Provides screen reader label "Sparkles Soft Icon"
|
|
655
|
-
</li>
|
|
656
|
-
<li className="text-fm-secondary!">
|
|
657
|
-
Supports keyboard navigation when interactive
|
|
658
|
-
</li>
|
|
659
|
-
<li className="text-fm-secondary!">
|
|
660
|
-
Maintains proper color contrast ratios
|
|
661
|
-
</li>
|
|
662
|
-
<li className="text-fm-secondary!">
|
|
663
|
-
Scales with user's font size preferences
|
|
664
|
-
</li>
|
|
665
|
-
</ul>
|
|
666
|
-
</div>
|
|
667
|
-
|
|
668
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
669
|
-
<h3 className="text-fm-icon-warning! text-lg font-semibold">
|
|
670
|
-
💡 Best Practices
|
|
671
|
-
</h3>
|
|
672
|
-
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
673
|
-
<li className="text-fm-secondary!">
|
|
674
|
-
Always pair with descriptive text or labels
|
|
675
|
-
</li>
|
|
676
|
-
<li className="text-fm-secondary!">
|
|
677
|
-
Use consistent colors for premium features
|
|
678
|
-
</li>
|
|
679
|
-
<li className="text-fm-secondary!">
|
|
680
|
-
Ensure sufficient color contrast
|
|
681
|
-
</li>
|
|
682
|
-
<li className="text-fm-secondary!">
|
|
683
|
-
Add focus states for interactive elements
|
|
684
|
-
</li>
|
|
685
|
-
<li className="text-fm-secondary!">
|
|
686
|
-
Consider motion sensitivity for animations
|
|
687
|
-
</li>
|
|
688
|
-
</ul>
|
|
689
|
-
</div>
|
|
690
|
-
</div>
|
|
691
|
-
|
|
692
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
693
|
-
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
694
|
-
Custom Accessibility Label
|
|
695
|
-
</h3>
|
|
696
|
-
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
697
|
-
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
698
|
-
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
699
|
-
{`// Custom implementation with specific label
|
|
700
|
-
import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
|
|
701
|
-
|
|
702
|
-
function CustomSparklesIcon({ label = "Sparkles", ...props }) {
|
|
703
|
-
return (
|
|
704
|
-
<AccessibleIcon label={label}>
|
|
705
|
-
<SparklesSoftIcon {...props} />
|
|
706
|
-
</AccessibleIcon>
|
|
707
|
-
)
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
// Usage with specific context
|
|
711
|
-
<CustomSparklesIcon
|
|
712
|
-
label="AI powered feature"
|
|
713
|
-
className="h-4 w-4 text-purple-400"
|
|
714
|
-
/>`}
|
|
715
|
-
</pre>
|
|
716
|
-
</div>
|
|
717
|
-
<div className="!space-y-4">
|
|
718
|
-
<p className="text-fm-secondary! text-sm">
|
|
719
|
-
For specific contexts, you can wrap the SparklesSoftIcon
|
|
720
|
-
with a custom AccessibleIcon component that provides
|
|
721
|
-
more descriptive labels for AI features or premium
|
|
722
|
-
content.
|
|
723
|
-
</p>
|
|
724
|
-
<div className="border-fm-icon-warning/20 bg-fm-icon-warning/10 rounded-lg border p-4">
|
|
725
|
-
<div className="text-fm-icon-warning flex items-center gap-2 text-sm">
|
|
726
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
727
|
-
<span>
|
|
728
|
-
This approach gives screen readers more context
|
|
729
|
-
about premium features
|
|
730
|
-
</span>
|
|
731
|
-
</div>
|
|
732
|
-
</div>
|
|
733
|
-
</div>
|
|
734
|
-
</div>
|
|
735
|
-
</div>
|
|
736
|
-
</div>
|
|
737
|
-
|
|
738
|
-
{/* Related Icons */}
|
|
739
|
-
<div className="!space-y-8">
|
|
740
|
-
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
741
|
-
Related Icons
|
|
742
|
-
</h2>
|
|
743
|
-
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
744
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
745
|
-
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
746
|
-
<span className="text-2xl">🤖</span>
|
|
747
|
-
</div>
|
|
748
|
-
<div>
|
|
749
|
-
<div className="text-fm-icon-active font-medium">
|
|
750
|
-
AIIcon
|
|
751
|
-
</div>
|
|
752
|
-
<div className="text-fm-tertiary text-xs">
|
|
753
|
-
AI features
|
|
754
|
-
</div>
|
|
755
|
-
</div>
|
|
756
|
-
</div>
|
|
757
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
758
|
-
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
759
|
-
<span className="text-2xl">⭐</span>
|
|
760
|
-
</div>
|
|
761
|
-
<div>
|
|
762
|
-
<div className="text-fm-icon-active font-medium">
|
|
763
|
-
StarIcon
|
|
764
|
-
</div>
|
|
765
|
-
<div className="text-fm-tertiary text-xs">
|
|
766
|
-
Premium content
|
|
767
|
-
</div>
|
|
768
|
-
</div>
|
|
769
|
-
</div>
|
|
770
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
771
|
-
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
772
|
-
<span className="text-2xl">🎉</span>
|
|
773
|
-
</div>
|
|
774
|
-
<div>
|
|
775
|
-
<div className="text-fm-icon-active font-medium">
|
|
776
|
-
CelebrationIcon
|
|
777
|
-
</div>
|
|
778
|
-
<div className="text-fm-tertiary text-xs">
|
|
779
|
-
Success states
|
|
780
|
-
</div>
|
|
781
|
-
</div>
|
|
782
|
-
</div>
|
|
783
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
784
|
-
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
785
|
-
<span className="text-2xl">💎</span>
|
|
786
|
-
</div>
|
|
787
|
-
<div>
|
|
788
|
-
<div className="text-fm-icon-active font-medium">
|
|
789
|
-
PremiumIcon
|
|
790
|
-
</div>
|
|
791
|
-
<div className="text-fm-tertiary text-xs">
|
|
792
|
-
Premium features
|
|
793
|
-
</div>
|
|
794
|
-
</div>
|
|
795
|
-
</div>
|
|
796
|
-
</div>
|
|
797
|
-
</div>
|
|
798
|
-
</div>
|
|
799
|
-
|
|
800
|
-
{/* Footer */}
|
|
801
|
-
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
802
|
-
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
803
|
-
<div className="!space-y-4 text-center">
|
|
804
|
-
<p className="text-fm-tertiary!">
|
|
805
|
-
SparklesSoftIcon is part of the Aural UI icon library,
|
|
806
|
-
designed specifically for AI features, premium content, and
|
|
807
|
-
magical user experiences with accessibility in mind.
|
|
808
|
-
</p>
|
|
809
|
-
<p className="text-fm-placeholder! text-sm">
|
|
810
|
-
Perfect for AI-powered features, premium upgrades,
|
|
811
|
-
celebration moments, and special effects. Follows WCAG
|
|
812
|
-
guidelines for accessibility and provides clear visual
|
|
813
|
-
hierarchy.
|
|
814
|
-
</p>
|
|
815
|
-
</div>
|
|
816
|
-
</div>
|
|
817
|
-
</div>
|
|
818
|
-
</div>
|
|
819
|
-
</>
|
|
57
|
+
),
|
|
58
|
+
}}
|
|
59
|
+
relatedIcons={[
|
|
60
|
+
{
|
|
61
|
+
name: "BubbleSparkleIcon",
|
|
62
|
+
description: "AI sparkle bubble icon",
|
|
63
|
+
icon: BubbleSparkleIcon,
|
|
64
|
+
accentToken: "info",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "FeatureShineIcon",
|
|
68
|
+
description: "Feature highlight / shine icon",
|
|
69
|
+
icon: FeatureShineIcon,
|
|
70
|
+
accentToken: "positive",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "LightBulbSimpleIcon",
|
|
74
|
+
description: "Insight / tip indicator icon",
|
|
75
|
+
icon: LightBulbSimpleIcon,
|
|
76
|
+
accentToken: "warning",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "MagicBookIcon",
|
|
80
|
+
description: "AI-assisted story creation",
|
|
81
|
+
icon: MagicBookIcon,
|
|
82
|
+
accentToken: "negative",
|
|
83
|
+
},
|
|
84
|
+
]}
|
|
85
|
+
/>
|
|
820
86
|
),
|
|
821
87
|
},
|
|
822
88
|
},
|
|
823
89
|
tags: ["autodocs"],
|
|
824
90
|
argTypes: {
|
|
825
|
-
|
|
826
|
-
control:
|
|
827
|
-
description: "
|
|
91
|
+
className: {
|
|
92
|
+
control: "text",
|
|
93
|
+
description: "CSS classes including color token",
|
|
828
94
|
},
|
|
829
95
|
withAccessibility: {
|
|
830
96
|
control: "boolean",
|
|
831
|
-
description: "
|
|
832
|
-
},
|
|
833
|
-
height: {
|
|
834
|
-
control: { type: "range", min: 8, max: 96, step: 2 },
|
|
835
|
-
description: "Height of the icon in pixels",
|
|
836
|
-
},
|
|
837
|
-
stroke: {
|
|
838
|
-
control: "color",
|
|
839
|
-
description: "Stroke color of the icon",
|
|
840
|
-
},
|
|
841
|
-
strokeWidth: {
|
|
842
|
-
control: { type: "range", min: 0.5, max: 4, step: 0.5 },
|
|
843
|
-
description: "Stroke width of the icon",
|
|
844
|
-
},
|
|
845
|
-
fill: {
|
|
846
|
-
control: "color",
|
|
847
|
-
description: "Fill color for small sparkle",
|
|
848
|
-
},
|
|
849
|
-
className: {
|
|
850
|
-
control: "text",
|
|
851
|
-
description: "CSS classes for styling",
|
|
97
|
+
description: "Wrap with accessibility label",
|
|
852
98
|
},
|
|
853
99
|
},
|
|
854
100
|
}
|
|
@@ -856,217 +102,72 @@ function CustomSparklesIcon({ label = "Sparkles", ...props }) {
|
|
|
856
102
|
export default meta
|
|
857
103
|
type Story = StoryObj<typeof SparklesSoftIcon>
|
|
858
104
|
|
|
859
|
-
// Story parameters for consistent dark theme
|
|
860
|
-
const storyParameters = {
|
|
861
|
-
backgrounds: {
|
|
862
|
-
default: "dark",
|
|
863
|
-
values: [
|
|
864
|
-
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
865
|
-
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
866
|
-
],
|
|
867
|
-
},
|
|
868
|
-
}
|
|
869
|
-
|
|
870
105
|
export const Default: Story = {
|
|
871
106
|
args: {
|
|
872
|
-
|
|
873
|
-
height: 24,
|
|
874
|
-
className: "text-fm-icon-warning",
|
|
107
|
+
className: "h-6 w-6 text-fm-icon-positive",
|
|
875
108
|
withAccessibility: true,
|
|
876
109
|
},
|
|
877
|
-
parameters: storyParameters,
|
|
878
110
|
render: (args) => (
|
|
879
|
-
<
|
|
111
|
+
<IconDefaultCanvas>
|
|
880
112
|
<SparklesSoftIcon {...args} />
|
|
881
|
-
</
|
|
113
|
+
</IconDefaultCanvas>
|
|
882
114
|
),
|
|
883
115
|
}
|
|
884
116
|
|
|
885
117
|
export const SizeVariations: Story = {
|
|
886
|
-
|
|
887
|
-
...storyParameters,
|
|
888
|
-
docs: {
|
|
889
|
-
description: {
|
|
890
|
-
story:
|
|
891
|
-
"SparklesSoftIcon in different sizes, from small UI elements to large premium displays.",
|
|
892
|
-
},
|
|
893
|
-
},
|
|
894
|
-
},
|
|
895
|
-
render: () => (
|
|
896
|
-
<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">
|
|
897
|
-
<div className="text-center">
|
|
898
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-3 w-3" />
|
|
899
|
-
<span className="text-fm-tertiary text-xs">12px</span>
|
|
900
|
-
</div>
|
|
901
|
-
<div className="text-center">
|
|
902
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-4 w-4" />
|
|
903
|
-
<span className="text-fm-tertiary text-xs">16px</span>
|
|
904
|
-
</div>
|
|
905
|
-
<div className="text-center">
|
|
906
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-5 w-5" />
|
|
907
|
-
<span className="text-fm-tertiary text-xs">20px</span>
|
|
908
|
-
</div>
|
|
909
|
-
<div className="text-center">
|
|
910
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-6 w-6" />
|
|
911
|
-
<span className="text-fm-tertiary text-xs">24px</span>
|
|
912
|
-
</div>
|
|
913
|
-
<div className="text-center">
|
|
914
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-8 w-8" />
|
|
915
|
-
<span className="text-fm-tertiary text-xs">32px</span>
|
|
916
|
-
</div>
|
|
917
|
-
<div className="text-center">
|
|
918
|
-
<SparklesSoftIcon className="text-fm-icon-warning !mx-auto mb-2 h-12 w-12" />
|
|
919
|
-
<span className="text-fm-tertiary text-xs">48px</span>
|
|
920
|
-
</div>
|
|
921
|
-
</div>
|
|
922
|
-
),
|
|
118
|
+
render: () => <IconSizeVariations icon={SparklesSoftIcon} />,
|
|
923
119
|
}
|
|
924
120
|
|
|
925
121
|
export const ColorVariations: Story = {
|
|
926
|
-
|
|
927
|
-
...storyParameters,
|
|
928
|
-
docs: {
|
|
929
|
-
description: {
|
|
930
|
-
story:
|
|
931
|
-
"SparklesSoftIcon in different colors suitable for AI features, premium content, and celebrations.",
|
|
932
|
-
},
|
|
933
|
-
},
|
|
934
|
-
},
|
|
935
|
-
render: () => (
|
|
936
|
-
<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">
|
|
937
|
-
<div className="text-center">
|
|
938
|
-
<div className="border-fm-icon-warning/30 bg-fm-icon-warning/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
939
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-8 w-8" />
|
|
940
|
-
</div>
|
|
941
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
942
|
-
Premium Gold
|
|
943
|
-
</div>
|
|
944
|
-
<div className="text-fm-icon-warning text-xs">text-fm-icon-warning</div>
|
|
945
|
-
</div>
|
|
946
|
-
<div className="text-center">
|
|
947
|
-
<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">
|
|
948
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
949
|
-
</div>
|
|
950
|
-
<div className="text-fm-icon-active text-sm font-medium">AI Magic</div>
|
|
951
|
-
<div className="text-fm-secondary-600 text-xs">
|
|
952
|
-
text-fm-secondary-600
|
|
953
|
-
</div>
|
|
954
|
-
</div>
|
|
955
|
-
<div className="text-center">
|
|
956
|
-
<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">
|
|
957
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-8 w-8" />
|
|
958
|
-
</div>
|
|
959
|
-
<div className="text-fm-icon-active text-sm font-medium">
|
|
960
|
-
Celebration
|
|
961
|
-
</div>
|
|
962
|
-
<div className="text-fm-secondary-600 text-xs">
|
|
963
|
-
text-fm-secondary-600
|
|
964
|
-
</div>
|
|
965
|
-
</div>
|
|
966
|
-
<div className="text-center">
|
|
967
|
-
<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">
|
|
968
|
-
<SparklesSoftIcon className="text-fm-icon-info h-8 w-8" />
|
|
969
|
-
</div>
|
|
970
|
-
<div className="text-fm-icon-active text-sm font-medium">Special</div>
|
|
971
|
-
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
972
|
-
</div>
|
|
973
|
-
</div>
|
|
974
|
-
),
|
|
122
|
+
render: () => <IconColorVariations icon={SparklesSoftIcon} />,
|
|
975
123
|
}
|
|
976
124
|
|
|
977
125
|
export const UsageExamples: Story = {
|
|
978
|
-
parameters: {
|
|
979
|
-
...storyParameters,
|
|
980
|
-
docs: {
|
|
981
|
-
description: {
|
|
982
|
-
story:
|
|
983
|
-
"Real-world usage examples showing SparklesSoftIcon in different AI and premium contexts.",
|
|
984
|
-
},
|
|
985
|
-
},
|
|
986
|
-
},
|
|
987
126
|
render: () => (
|
|
988
|
-
<
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
<div className="flex items-center gap-3">
|
|
996
|
-
<div className="bg-fm-secondary-500/20 flex h-8 w-8 items-center justify-center rounded-full">
|
|
997
|
-
<SparklesSoftIcon className="text-fm-secondary-600 h-4 w-4" />
|
|
998
|
-
</div>
|
|
999
|
-
<div>
|
|
1000
|
-
<h4 className="text-fm-secondary-600 font-medium">AI Enhanced</h4>
|
|
1001
|
-
<p className="text-fm-secondary-600/80 text-sm">
|
|
1002
|
-
This feature is powered by artificial intelligence
|
|
1003
|
-
</p>
|
|
1004
|
-
</div>
|
|
1005
|
-
</div>
|
|
127
|
+
<IconUsageCanvas>
|
|
128
|
+
<IconUsageSection title="AI Feature Badge">
|
|
129
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-2 rounded-full border px-3 py-1">
|
|
130
|
+
<SparklesSoftIcon className="text-fm-icon-positive h-3.5 w-3.5" />
|
|
131
|
+
<span className="text-fm-primary font-fm-text text-xs">
|
|
132
|
+
AI Powered
|
|
133
|
+
</span>
|
|
1006
134
|
</div>
|
|
1007
|
-
</
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
<div className="flex items-center gap-2">
|
|
1017
|
-
<SparklesSoftIcon className="text-fm-icon-warning h-5 w-5" />
|
|
1018
|
-
<span className="text-fm-icon-active font-medium">
|
|
1019
|
-
Pro Feature
|
|
1020
|
-
</span>
|
|
1021
|
-
</div>
|
|
1022
|
-
<button className="from-fm-icon-warning to-fm-icon-warning text-fm-icon-active rounded-full bg-linear-to-r px-3 py-1 text-sm font-medium">
|
|
1023
|
-
Upgrade
|
|
1024
|
-
</button>
|
|
135
|
+
</IconUsageSection>
|
|
136
|
+
|
|
137
|
+
<IconUsageSection title="Premium Feature Card">
|
|
138
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm rounded-xl border p-4">
|
|
139
|
+
<div className="mb-2 flex items-center gap-2">
|
|
140
|
+
<SparklesSoftIcon className="text-fm-icon-positive h-5 w-5" />
|
|
141
|
+
<span className="text-fm-primary font-fm-text text-sm font-medium">
|
|
142
|
+
AI Writing Assistant
|
|
143
|
+
</span>
|
|
1025
144
|
</div>
|
|
145
|
+
<p className="text-fm-secondary font-fm-text text-xs">
|
|
146
|
+
Let AI help you craft engaging stories faster.
|
|
147
|
+
</p>
|
|
1026
148
|
</div>
|
|
1027
|
-
</
|
|
149
|
+
</IconUsageSection>
|
|
1028
150
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
</h3>
|
|
1034
|
-
<div className="flex gap-4">
|
|
1035
|
-
<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">
|
|
1036
|
-
<SparklesSoftIcon className="h-4 w-4" />
|
|
151
|
+
<IconUsageSection title="Magic Button">
|
|
152
|
+
<button className="flex items-center gap-2 rounded-xl px-4 py-2">
|
|
153
|
+
<SparklesSoftIcon className="text-fm-icon-positive h-4 w-4" />
|
|
154
|
+
<span className="text-fm-primary font-fm-text text-sm">
|
|
1037
155
|
Generate with AI
|
|
1038
|
-
</
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
</button>
|
|
1043
|
-
</div>
|
|
1044
|
-
</div>
|
|
1045
|
-
</div>
|
|
156
|
+
</span>
|
|
157
|
+
</button>
|
|
158
|
+
</IconUsageSection>
|
|
159
|
+
</IconUsageCanvas>
|
|
1046
160
|
),
|
|
1047
161
|
}
|
|
1048
162
|
|
|
1049
163
|
export const Playground: Story = {
|
|
1050
|
-
parameters: {
|
|
1051
|
-
...storyParameters,
|
|
1052
|
-
docs: {
|
|
1053
|
-
description: {
|
|
1054
|
-
story:
|
|
1055
|
-
"Interactive playground to experiment with different SparklesSoftIcon configurations.",
|
|
1056
|
-
},
|
|
1057
|
-
},
|
|
1058
|
-
},
|
|
1059
164
|
args: {
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
className: "text-fm-icon-warning",
|
|
1063
|
-
strokeWidth: 1.5,
|
|
165
|
+
className: "h-8 w-8 text-fm-icon-positive",
|
|
166
|
+
withAccessibility: true,
|
|
1064
167
|
},
|
|
1065
168
|
render: (args) => (
|
|
1066
|
-
<
|
|
1067
|
-
<
|
|
1068
|
-
|
|
1069
|
-
</div>
|
|
1070
|
-
</div>
|
|
169
|
+
<IconPlaygroundCanvas>
|
|
170
|
+
<SparklesSoftIcon {...args} />
|
|
171
|
+
</IconPlaygroundCanvas>
|
|
1071
172
|
),
|
|
1072
173
|
}
|