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