aural-ui 3.0.7 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +271 -242
- package/dist/components/avatar/Avatar.stories.tsx +84 -70
- package/dist/components/button/Button.stories.tsx +7 -7
- package/dist/components/button/index.tsx +7 -7
- package/dist/components/card/Card.stories.tsx +3 -3
- package/dist/components/char-count/CharCount.stories.tsx +9 -9
- package/dist/components/circular-loader/CircularLoader.stories.tsx +109 -93
- package/dist/components/collapsible/Collapsible.stories.tsx +1 -1
- package/dist/components/command/Command.stories.tsx +52 -38
- package/dist/components/dialog/Dialog.stories.tsx +89 -84
- package/dist/components/divider/Divider.stories.tsx +86 -60
- package/dist/components/dot-loader/DotLoader.stories.tsx +12 -12
- package/dist/components/drawer/Drawer.stories.tsx +74 -44
- package/dist/components/drawer/index.tsx +3 -3
- package/dist/components/dropdown/Dropdown.stories.tsx +42 -32
- package/dist/components/helper-text/HelperText.stories.tsx +2 -2
- package/dist/components/hover-card/HoverCard.stories.tsx +211 -178
- package/dist/components/input/Input.stories.tsx +2 -2
- package/dist/components/label/Label.stories.tsx +10 -10
- package/dist/components/list/List.stories.tsx +58 -44
- package/dist/components/marquee/Marquee.stories.tsx +131 -113
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +47 -35
- package/dist/components/overlay/Overlay.stories.tsx +98 -92
- package/dist/components/overlay/index.tsx +4 -4
- package/dist/components/popover/Popover.stories.tsx +132 -106
- package/dist/components/radio/Radio.stories.tsx +2 -2
- package/dist/components/resizable/Resizable.stories.tsx +186 -138
- package/dist/components/scroll-area/ScrollArea.stories.tsx +174 -120
- package/dist/components/search/Search.stories.tsx +81 -59
- package/dist/components/select/Select.stories.tsx +3 -1
- package/dist/components/sheet/Sheet.stories.tsx +68 -54
- package/dist/components/slider/Slider.stories.tsx +71 -47
- package/dist/components/stepper/Stepper.stories.tsx +16 -16
- package/dist/components/switch/Switch.stories.tsx +12 -12
- package/dist/components/table/Table.stories.tsx +8 -6
- package/dist/components/tabs/Tabs.stories.tsx +324 -268
- package/dist/components/textarea/TextArea.stories.tsx +1 -1
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +16 -10
- package/dist/components/toast/Toast.stories.tsx +51 -45
- package/dist/components/toggle/Toggle.stories.tsx +111 -89
- package/dist/components/tooltip/Tooltip.stories.tsx +160 -144
- package/dist/icons/Icons.stories.tsx +2 -2
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +287 -237
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +290 -248
- package/dist/icons/all-icons.tsx +97 -81
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +312 -270
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +294 -244
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +309 -279
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +294 -258
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +289 -255
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +288 -256
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +322 -288
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +340 -296
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +197 -177
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +390 -328
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +313 -277
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +367 -309
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +356 -308
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +280 -234
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +370 -326
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +300 -256
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +298 -262
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +294 -260
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +291 -259
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +286 -256
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +282 -256
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +292 -256
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +338 -290
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +167 -148
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +342 -296
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +342 -296
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +280 -238
- package/dist/icons/command-icon/CommandIcon.stories.tsx +328 -280
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +294 -256
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +285 -235
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +308 -266
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +271 -231
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +330 -278
- package/dist/icons/email-icon/EmailIcon.stories.tsx +303 -257
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +324 -286
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +317 -271
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +320 -272
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +322 -280
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +315 -277
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +199 -177
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +304 -264
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +311 -277
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +327 -287
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +314 -278
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +113 -98
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +274 -226
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +349 -303
- package/dist/icons/head-icon/HeadIcon.stories.tsx +286 -246
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +312 -268
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +246 -210
- package/dist/icons/image-icon/ImageIcon.stories.tsx +330 -284
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +326 -282
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +330 -294
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +288 -234
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +386 -330
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +305 -263
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +295 -259
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +296 -256
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +322 -282
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +399 -359
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +314 -272
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +238 -206
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +322 -276
- package/dist/icons/message-icon/MessageIcon.stories.tsx +192 -170
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +348 -304
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +191 -167
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +380 -326
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +345 -291
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +310 -266
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +311 -271
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +311 -271
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +309 -271
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +248 -210
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +310 -262
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +274 -236
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +324 -280
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +323 -281
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +288 -240
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +315 -273
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +278 -234
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +161 -151
- package/dist/icons/search-icon/SearchIcon.stories.tsx +324 -284
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +306 -264
- package/dist/icons/share-icon/ShareIcon.stories.tsx +314 -272
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +281 -235
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +309 -250
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +317 -279
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +315 -279
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +299 -253
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +185 -169
- package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +192 -168
- package/dist/icons/spinner-solid-icon/index.tsx +6 -1
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +212 -178
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
- package/dist/icons/star-icon/StarIcon.stories.tsx +290 -244
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +286 -234
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +272 -230
- package/dist/icons/sun-icon/SunIcon.stories.tsx +262 -226
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +321 -279
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +332 -282
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +394 -342
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +338 -290
- package/dist/icons/tick-icon/TickIcon.stories.tsx +364 -315
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +293 -253
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +396 -338
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +291 -247
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +309 -271
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +336 -290
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +382 -334
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +349 -305
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +327 -295
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +336 -296
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +314 -274
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +311 -261
- package/dist/index.cjs +84 -84
- package/dist/index.js +84 -84
- package/dist/styles/aural-all-theme.css +1222 -0
- package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
- package/dist/styles/aural-light-theme.css +1047 -0
- package/package.json +1 -1
|
@@ -11,9 +11,9 @@ const meta: Meta<typeof AngleDownIcon> = {
|
|
|
11
11
|
backgrounds: {
|
|
12
12
|
default: "dark",
|
|
13
13
|
values: [
|
|
14
|
-
{ name: "dark", value: "
|
|
15
|
-
{ name: "darker", value: "
|
|
16
|
-
{ name: "light", value: "
|
|
14
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
15
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
16
|
+
{ name: "light", value: "var(--color-fm-neutral-1100)" },
|
|
17
17
|
],
|
|
18
18
|
},
|
|
19
19
|
docs: {
|
|
@@ -40,59 +40,59 @@ const meta: Meta<typeof AngleDownIcon> = {
|
|
|
40
40
|
background: transparent ;
|
|
41
41
|
}
|
|
42
42
|
body {
|
|
43
|
-
background:
|
|
43
|
+
background: var(--color-fm-surface-primary) ;
|
|
44
44
|
}
|
|
45
45
|
#storybook-docs {
|
|
46
|
-
background:
|
|
46
|
+
background: var(--color-fm-surface-primary) ;
|
|
47
47
|
}
|
|
48
48
|
.sbdocs-preview {
|
|
49
49
|
background: transparent ;
|
|
50
50
|
border: none ;
|
|
51
51
|
}
|
|
52
52
|
.sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
|
|
53
|
-
color:
|
|
53
|
+
color: var(--color-fm-icon-active) ;
|
|
54
54
|
}
|
|
55
55
|
.sbdocs-p, .sbdocs-li {
|
|
56
|
-
color:
|
|
56
|
+
color: var(--color-fm-secondary) ;
|
|
57
57
|
}
|
|
58
58
|
.sbdocs-code {
|
|
59
|
-
background:
|
|
60
|
-
color:
|
|
61
|
-
border: 1px solid
|
|
59
|
+
background: var(--color-fm-surface-secondary) ;
|
|
60
|
+
color: var(--color-fm-secondary-500) ;
|
|
61
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
62
62
|
}
|
|
63
63
|
.sbdocs-pre {
|
|
64
|
-
background:
|
|
65
|
-
border: 1px solid
|
|
64
|
+
background: var(--color-fm-surface-secondary) ;
|
|
65
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
66
66
|
}
|
|
67
67
|
.sbdocs-table {
|
|
68
|
-
background:
|
|
69
|
-
border: 1px solid
|
|
68
|
+
background: var(--color-fm-surface-secondary) ;
|
|
69
|
+
border: 1px solid var(--color-fm-divider-secondary) ;
|
|
70
70
|
}
|
|
71
71
|
.sbdocs-table th {
|
|
72
|
-
background:
|
|
73
|
-
color:
|
|
74
|
-
border-bottom: 1px solid
|
|
72
|
+
background: var(--color-fm-surface-secondary) ;
|
|
73
|
+
color: var(--color-fm-icon-active) ;
|
|
74
|
+
border-bottom: 1px solid var(--color-fm-divider-secondary) ;
|
|
75
75
|
}
|
|
76
76
|
.sbdocs-table td {
|
|
77
|
-
color:
|
|
78
|
-
border-bottom: 1px solid
|
|
77
|
+
color: var(--color-fm-secondary) ;
|
|
78
|
+
border-bottom: 1px solid var(--color-fm-divider-tertiary) ;
|
|
79
79
|
}
|
|
80
80
|
`}
|
|
81
81
|
</style>
|
|
82
82
|
|
|
83
|
-
<div className="
|
|
83
|
+
<div className="bg-fm-surface-primary min-h-screen">
|
|
84
84
|
{/* Header */}
|
|
85
|
-
<div className="relative overflow-hidden border-b
|
|
86
|
-
<div className="absolute inset-0 bg-
|
|
85
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
86
|
+
<div className="from-fm-secondary-500/10 to-fm-icon-info/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
87
87
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
88
88
|
<div className="!space-y-6 text-center">
|
|
89
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
90
|
-
<AngleDownIcon className="h-12 w-12
|
|
89
|
+
<div className="border-fm-icon-info/30 from-fm-icon-info/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
|
+
<AngleDownIcon className="text-fm-icon-info h-12 w-12" />
|
|
91
91
|
</div>
|
|
92
92
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
93
93
|
AngleDownIcon
|
|
94
94
|
</h1>
|
|
95
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed
|
|
95
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
96
96
|
A directional icon for dropdowns, accordions, and
|
|
97
97
|
collapsible content. Essential for navigation and
|
|
98
98
|
interactive UI elements that expand downward.
|
|
@@ -101,28 +101,28 @@ const meta: Meta<typeof AngleDownIcon> = {
|
|
|
101
101
|
{/* Stats */}
|
|
102
102
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
103
103
|
<div className="text-center">
|
|
104
|
-
<div className="text-3xl font-bold
|
|
104
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
105
105
|
Navigation
|
|
106
106
|
</div>
|
|
107
|
-
<div className="text-
|
|
107
|
+
<div className="text-fm-tertiary text-sm">
|
|
108
108
|
Directional guidance
|
|
109
109
|
</div>
|
|
110
110
|
</div>
|
|
111
|
-
<div className="h-8 w-px
|
|
111
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
112
112
|
<div className="text-center">
|
|
113
|
-
<div className="text-3xl font-bold
|
|
113
|
+
<div className="text-fm-secondary-600 text-3xl font-bold">
|
|
114
114
|
Interactive
|
|
115
115
|
</div>
|
|
116
|
-
<div className="text-
|
|
116
|
+
<div className="text-fm-tertiary text-sm">
|
|
117
117
|
Dropdown friendly
|
|
118
118
|
</div>
|
|
119
119
|
</div>
|
|
120
|
-
<div className="h-8 w-px
|
|
120
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
121
121
|
<div className="text-center">
|
|
122
|
-
<div className="text-3xl font-bold
|
|
122
|
+
<div className="text-fm-icon-positive text-3xl font-bold">
|
|
123
123
|
Animated
|
|
124
124
|
</div>
|
|
125
|
-
<div className="text-
|
|
125
|
+
<div className="text-fm-tertiary text-sm">
|
|
126
126
|
Smooth transitions
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
@@ -135,16 +135,16 @@ const meta: Meta<typeof AngleDownIcon> = {
|
|
|
135
135
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
136
136
|
{/* Quick Usage */}
|
|
137
137
|
<div className="!space-y-8">
|
|
138
|
-
<h2 className="text-center text-3xl font-bold
|
|
138
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
139
139
|
Quick Start
|
|
140
140
|
</h2>
|
|
141
141
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
142
142
|
<div className="!space-y-4">
|
|
143
|
-
<h3 className="text-xl font-semibold
|
|
143
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
144
144
|
Basic Usage
|
|
145
145
|
</h3>
|
|
146
|
-
<div className="rounded-lg
|
|
147
|
-
<pre className="overflow-x-auto text-sm
|
|
146
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
147
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
148
148
|
{`import { AngleDownIcon } from "@icons/angle-down-icon"
|
|
149
149
|
|
|
150
150
|
function DropdownButton() {
|
|
@@ -160,13 +160,13 @@ function DropdownButton() {
|
|
|
160
160
|
</div>
|
|
161
161
|
|
|
162
162
|
<div className="!space-y-4">
|
|
163
|
-
<h3 className="text-xl font-semibold
|
|
163
|
+
<h3 className="text-fm-icon-info! text-xl font-semibold">
|
|
164
164
|
Live Preview
|
|
165
165
|
</h3>
|
|
166
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
167
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
166
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
167
|
+
<button className="border-fm-icon-info/20 bg-fm-icon-info/10 text-fm-icon-active hover:bg-fm-icon-info/20 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
|
|
168
168
|
<span>Options</span>
|
|
169
|
-
<AngleDownIcon className="h-4 w-4
|
|
169
|
+
<AngleDownIcon className="text-fm-icon-info h-4 w-4 transition-transform hover:rotate-180" />
|
|
170
170
|
</button>
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
@@ -175,106 +175,116 @@ function DropdownButton() {
|
|
|
175
175
|
|
|
176
176
|
{/* Props Documentation */}
|
|
177
177
|
<div className="!space-y-8">
|
|
178
|
-
<h2 className="text-center text-3xl font-bold
|
|
178
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
179
179
|
Props & Configuration
|
|
180
180
|
</h2>
|
|
181
181
|
|
|
182
|
-
<div className="overflow-hidden rounded-lg border
|
|
183
|
-
<div className="bg-
|
|
184
|
-
<h3 className="text-xl font-semibold
|
|
182
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
183
|
+
<div className="bg-fm-surface-secondary p-4">
|
|
184
|
+
<h3 className="text-fm-icon-active! text-xl font-semibold">
|
|
185
|
+
Props
|
|
186
|
+
</h3>
|
|
185
187
|
</div>
|
|
186
188
|
<table className="!my-0 w-full">
|
|
187
|
-
<thead className="bg-
|
|
188
|
-
<tr className="border-
|
|
189
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
189
|
+
<thead className="bg-fm-surface-secondary">
|
|
190
|
+
<tr className="border-fm-divider-secondary border-b">
|
|
191
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
190
192
|
Prop
|
|
191
193
|
</th>
|
|
192
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
194
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
193
195
|
Type
|
|
194
196
|
</th>
|
|
195
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
197
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
196
198
|
Default
|
|
197
199
|
</th>
|
|
198
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
200
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
199
201
|
Description
|
|
200
202
|
</th>
|
|
201
203
|
</tr>
|
|
202
204
|
</thead>
|
|
203
205
|
<tbody>
|
|
204
206
|
{" "}
|
|
205
|
-
<tr className="
|
|
206
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
207
|
+
<tr className="bg-fm-surface-secondary!">
|
|
208
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
207
209
|
withAccessibility
|
|
208
210
|
</td>
|
|
209
|
-
<td className="px-6 py-4 text-sm
|
|
211
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
210
212
|
boolean
|
|
211
213
|
</td>
|
|
212
|
-
<td className="px-6 py-4 text-sm
|
|
214
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
213
215
|
true
|
|
214
216
|
</td>
|
|
215
|
-
<td className="px-6 py-4 text-sm
|
|
217
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
216
218
|
Whether to wrap the icon with accessibility feature
|
|
217
219
|
</td>
|
|
218
220
|
</tr>
|
|
219
|
-
<tr className="border-
|
|
220
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
221
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
222
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
221
223
|
height
|
|
222
224
|
</td>
|
|
223
|
-
<td className="px-6 py-4 text-sm
|
|
225
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
224
226
|
number | string
|
|
225
227
|
</td>
|
|
226
|
-
<td className="px-6 py-4 text-sm
|
|
227
|
-
|
|
228
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
229
|
+
16
|
|
230
|
+
</td>
|
|
231
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
228
232
|
Height of the icon in pixels
|
|
229
233
|
</td>
|
|
230
234
|
</tr>
|
|
231
|
-
<tr className="border-
|
|
232
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
235
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
236
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
233
237
|
stroke
|
|
234
238
|
</td>
|
|
235
|
-
<td className="px-6 py-4 text-sm
|
|
239
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
236
240
|
string
|
|
237
241
|
</td>
|
|
238
|
-
<td className="px-6 py-4 text-sm
|
|
242
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
239
243
|
currentColor
|
|
240
244
|
</td>
|
|
241
|
-
<td className="px-6 py-4 text-sm
|
|
245
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
242
246
|
Stroke color of the icon
|
|
243
247
|
</td>
|
|
244
248
|
</tr>
|
|
245
|
-
<tr className="border-
|
|
246
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
249
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
250
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
247
251
|
strokeWidth
|
|
248
252
|
</td>
|
|
249
|
-
<td className="px-6 py-4 text-sm
|
|
253
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
250
254
|
number | string
|
|
251
255
|
</td>
|
|
252
|
-
<td className="px-6 py-4 text-sm
|
|
253
|
-
|
|
256
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
257
|
+
2
|
|
258
|
+
</td>
|
|
259
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
254
260
|
Stroke width of the icon
|
|
255
261
|
</td>
|
|
256
262
|
</tr>
|
|
257
|
-
<tr className="border-
|
|
258
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
263
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
264
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
259
265
|
className
|
|
260
266
|
</td>
|
|
261
|
-
<td className="px-6 py-4 text-sm
|
|
267
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
262
268
|
string
|
|
263
269
|
</td>
|
|
264
|
-
<td className="px-6 py-4 text-sm
|
|
265
|
-
|
|
270
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
271
|
+
-
|
|
272
|
+
</td>
|
|
273
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
266
274
|
CSS classes for styling
|
|
267
275
|
</td>
|
|
268
276
|
</tr>
|
|
269
|
-
<tr className="
|
|
270
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
277
|
+
<tr className="bg-fm-surface-secondary!">
|
|
278
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
271
279
|
...svgProps
|
|
272
280
|
</td>
|
|
273
|
-
<td className="px-6 py-4 text-sm
|
|
281
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
274
282
|
SVGProps
|
|
275
283
|
</td>
|
|
276
|
-
<td className="px-6 py-4 text-sm
|
|
277
|
-
|
|
284
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
285
|
+
-
|
|
286
|
+
</td>
|
|
287
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
288
|
All standard SVG element props
|
|
279
289
|
</td>
|
|
280
290
|
</tr>
|
|
@@ -285,50 +295,62 @@ function DropdownButton() {
|
|
|
285
295
|
|
|
286
296
|
{/* Size Variations */}
|
|
287
297
|
<div className="!space-y-8">
|
|
288
|
-
<h2 className="text-center text-3xl font-bold
|
|
298
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
289
299
|
Size Variations
|
|
290
300
|
</h2>
|
|
291
|
-
<div className="rounded-lg border
|
|
301
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
292
302
|
<div className="!space-y-6">
|
|
293
303
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
294
304
|
<div className="!space-y-4">
|
|
295
|
-
<h3 className="text-lg font-semibold
|
|
305
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
296
306
|
Standard Sizes
|
|
297
307
|
</h3>
|
|
298
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
308
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
299
309
|
<div className="text-center">
|
|
300
|
-
<AngleDownIcon className="!mx-auto mb-2 h-3 w-3
|
|
301
|
-
<span className="text-
|
|
310
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
311
|
+
<span className="text-fm-tertiary text-xs">
|
|
312
|
+
12px
|
|
313
|
+
</span>
|
|
302
314
|
</div>
|
|
303
315
|
<div className="text-center">
|
|
304
|
-
<AngleDownIcon className="!mx-auto mb-2 h-4 w-4
|
|
305
|
-
<span className="text-
|
|
316
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
317
|
+
<span className="text-fm-tertiary text-xs">
|
|
318
|
+
16px
|
|
319
|
+
</span>
|
|
306
320
|
</div>
|
|
307
321
|
<div className="text-center">
|
|
308
|
-
<AngleDownIcon className="!mx-auto mb-2 h-5 w-5
|
|
309
|
-
<span className="text-
|
|
322
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
323
|
+
<span className="text-fm-tertiary text-xs">
|
|
324
|
+
20px
|
|
325
|
+
</span>
|
|
310
326
|
</div>
|
|
311
327
|
<div className="text-center">
|
|
312
|
-
<AngleDownIcon className="!mx-auto mb-2 h-6 w-6
|
|
313
|
-
<span className="text-
|
|
328
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
329
|
+
<span className="text-fm-tertiary text-xs">
|
|
330
|
+
24px
|
|
331
|
+
</span>
|
|
314
332
|
</div>
|
|
315
333
|
<div className="text-center">
|
|
316
|
-
<AngleDownIcon className="!mx-auto mb-2 h-8 w-8
|
|
317
|
-
<span className="text-
|
|
334
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
335
|
+
<span className="text-fm-tertiary text-xs">
|
|
336
|
+
32px
|
|
337
|
+
</span>
|
|
318
338
|
</div>
|
|
319
339
|
<div className="text-center">
|
|
320
|
-
<AngleDownIcon className="!mx-auto mb-2 h-12 w-12
|
|
321
|
-
<span className="text-
|
|
340
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
341
|
+
<span className="text-fm-tertiary text-xs">
|
|
342
|
+
48px
|
|
343
|
+
</span>
|
|
322
344
|
</div>
|
|
323
345
|
</div>
|
|
324
346
|
</div>
|
|
325
347
|
|
|
326
348
|
<div className="!space-y-4">
|
|
327
|
-
<h3 className="text-lg font-semibold
|
|
349
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
328
350
|
Code Example
|
|
329
351
|
</h3>
|
|
330
|
-
<div className="rounded-lg
|
|
331
|
-
<pre className="overflow-x-auto text-sm
|
|
352
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
353
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
332
354
|
{`// Small (16px)
|
|
333
355
|
<AngleDownIcon className="h-4 w-4" />
|
|
334
356
|
|
|
@@ -350,37 +372,37 @@ function DropdownButton() {
|
|
|
350
372
|
|
|
351
373
|
{/* Direction & Animation */}
|
|
352
374
|
<div className="!space-y-8">
|
|
353
|
-
<h2 className="text-center text-3xl font-bold
|
|
375
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
354
376
|
Direction & Animation
|
|
355
377
|
</h2>
|
|
356
378
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
357
379
|
<div className="!space-y-4">
|
|
358
|
-
<h3 className="text-lg font-semibold
|
|
380
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
359
381
|
Directional Variants
|
|
360
382
|
</h3>
|
|
361
|
-
<div className="!space-y-4 rounded-lg border
|
|
383
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
362
384
|
<div className="grid grid-cols-2 gap-4">
|
|
363
385
|
<div className="flex flex-col items-center gap-2">
|
|
364
|
-
<AngleDownIcon className="h-6 w-6
|
|
365
|
-
<span className="text-
|
|
386
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6" />
|
|
387
|
+
<span className="text-fm-tertiary! text-xs">
|
|
366
388
|
Down (Default)
|
|
367
389
|
</span>
|
|
368
390
|
</div>
|
|
369
391
|
<div className="flex flex-col items-center gap-2">
|
|
370
|
-
<AngleDownIcon className="h-6 w-6 rotate-180
|
|
371
|
-
<span className="text-
|
|
392
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6 rotate-180" />
|
|
393
|
+
<span className="text-fm-tertiary! text-xs">
|
|
372
394
|
Up (rotate-180)
|
|
373
395
|
</span>
|
|
374
396
|
</div>
|
|
375
397
|
<div className="flex flex-col items-center gap-2">
|
|
376
|
-
<AngleDownIcon className="h-6 w-6 -rotate-90
|
|
377
|
-
<span className="text-
|
|
398
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6 -rotate-90" />
|
|
399
|
+
<span className="text-fm-tertiary! text-xs">
|
|
378
400
|
Right (-rotate-90)
|
|
379
401
|
</span>
|
|
380
402
|
</div>
|
|
381
403
|
<div className="flex flex-col items-center gap-2">
|
|
382
|
-
<AngleDownIcon className="h-6 w-6 rotate-90
|
|
383
|
-
<span className="text-
|
|
404
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6 rotate-90" />
|
|
405
|
+
<span className="text-fm-tertiary! text-xs">
|
|
384
406
|
Left (rotate-90)
|
|
385
407
|
</span>
|
|
386
408
|
</div>
|
|
@@ -389,11 +411,11 @@ function DropdownButton() {
|
|
|
389
411
|
</div>
|
|
390
412
|
|
|
391
413
|
<div className="!space-y-4">
|
|
392
|
-
<h3 className="text-lg font-semibold
|
|
414
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
393
415
|
Animation Examples
|
|
394
416
|
</h3>
|
|
395
|
-
<div className="rounded-lg
|
|
396
|
-
<pre className="overflow-x-auto text-sm
|
|
417
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
418
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
397
419
|
{`// Smooth rotation transition
|
|
398
420
|
<AngleDownIcon className="h-4 w-4 transition-transform duration-200 hover:rotate-180" />
|
|
399
421
|
|
|
@@ -401,7 +423,7 @@ function DropdownButton() {
|
|
|
401
423
|
<AngleDownIcon className={\`h-4 w-4 transition-transform \${isOpen ? 'rotate-180' : ''}\`} />
|
|
402
424
|
|
|
403
425
|
// Dropdown state animation
|
|
404
|
-
<AngleDownIcon className="h-4 w-4 transition-all group-hover:rotate-180 group-hover:text-
|
|
426
|
+
<AngleDownIcon className="h-4 w-4 transition-all group-hover:rotate-180 group-hover:text-fm-icon-info" />`}
|
|
405
427
|
</pre>
|
|
406
428
|
</div>
|
|
407
429
|
</div>
|
|
@@ -410,25 +432,25 @@ function DropdownButton() {
|
|
|
410
432
|
|
|
411
433
|
{/* Usage Examples */}
|
|
412
434
|
<div className="!space-y-8">
|
|
413
|
-
<h2 className="text-center text-3xl font-bold
|
|
435
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
414
436
|
Usage Examples
|
|
415
437
|
</h2>
|
|
416
438
|
|
|
417
439
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
418
440
|
{/* Dropdown Menu */}
|
|
419
441
|
<div className="!space-y-4">
|
|
420
|
-
<h3 className="text-lg font-semibold
|
|
442
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
421
443
|
Dropdown Menu
|
|
422
444
|
</h3>
|
|
423
445
|
<div className="!space-y-4">
|
|
424
446
|
<div className="relative">
|
|
425
|
-
<button className="flex w-full items-center justify-between rounded-lg border
|
|
447
|
+
<button className="border-fm-divider-secondary bg-fm-surface-secondary text-fm-icon-active hover:bg-fm-surface-secondary flex w-full items-center justify-between rounded-lg border px-4 py-3 transition-colors">
|
|
426
448
|
<span>Select an option</span>
|
|
427
|
-
<AngleDownIcon className="h-4 w-4
|
|
449
|
+
<AngleDownIcon className="text-fm-placeholder h-4 w-4 transition-transform group-hover:rotate-180" />
|
|
428
450
|
</button>
|
|
429
451
|
</div>
|
|
430
|
-
<div className="rounded-lg
|
|
431
|
-
<pre className="overflow-x-auto text-sm
|
|
452
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
453
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
432
454
|
{`<button className="flex items-center justify-between w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg">
|
|
433
455
|
<span>Select an option</span>
|
|
434
456
|
<AngleDownIcon className="h-4 w-4 text-gray-400 transition-transform group-hover:rotate-180" />
|
|
@@ -440,20 +462,20 @@ function DropdownButton() {
|
|
|
440
462
|
|
|
441
463
|
{/* Accordion */}
|
|
442
464
|
<div className="!space-y-4">
|
|
443
|
-
<h3 className="text-lg font-semibold
|
|
465
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
444
466
|
Accordion Header
|
|
445
467
|
</h3>
|
|
446
468
|
<div className="!space-y-4">
|
|
447
|
-
<div className="rounded-lg border
|
|
448
|
-
<button className="flex w-full items-center justify-between p-4 text-left transition-colors
|
|
449
|
-
<h4 className="font-medium
|
|
469
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border">
|
|
470
|
+
<button className="hover:bg-fm-surface-secondary flex w-full items-center justify-between p-4 text-left transition-colors">
|
|
471
|
+
<h4 className="text-fm-icon-active! font-medium">
|
|
450
472
|
Frequently Asked Questions
|
|
451
473
|
</h4>
|
|
452
|
-
<AngleDownIcon className="h-5 w-5
|
|
474
|
+
<AngleDownIcon className="text-fm-icon-info h-5 w-5 transition-transform" />
|
|
453
475
|
</button>
|
|
454
476
|
</div>
|
|
455
|
-
<div className="rounded-lg
|
|
456
|
-
<pre className="overflow-x-auto text-sm
|
|
477
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
478
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
457
479
|
{`<button className="flex items-center justify-between w-full p-4 text-left">
|
|
458
480
|
<h4 className="font-medium text-white">Frequently Asked Questions</h4>
|
|
459
481
|
<AngleDownIcon className={\`h-5 w-5 text-blue-400 transition-transform \${isOpen ? 'rotate-180' : ''}\`} />
|
|
@@ -465,26 +487,26 @@ function DropdownButton() {
|
|
|
465
487
|
|
|
466
488
|
{/* Select Input */}
|
|
467
489
|
<div className="!space-y-4">
|
|
468
|
-
<h3 className="text-lg font-semibold
|
|
490
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
469
491
|
Select Input
|
|
470
492
|
</h3>
|
|
471
493
|
<div className="!space-y-4">
|
|
472
494
|
<div className="!space-y-2">
|
|
473
|
-
<label className="text-sm font-medium
|
|
495
|
+
<label className="text-fm-icon-active! text-sm font-medium">
|
|
474
496
|
Country
|
|
475
497
|
</label>
|
|
476
498
|
<div className="relative">
|
|
477
|
-
<select className="w-full appearance-none rounded-lg border
|
|
499
|
+
<select className="border-fm-divider-secondary bg-fm-surface-secondary text-fm-icon-active! focus:border-fm-icon-info w-full appearance-none rounded-lg border px-3 py-2 pr-10 focus:ring-2 focus:ring-blue-500/20">
|
|
478
500
|
<option value="">Choose a country</option>
|
|
479
501
|
<option value="us">United States</option>
|
|
480
502
|
<option value="ca">Canada</option>
|
|
481
503
|
<option value="uk">United Kingdom</option>
|
|
482
504
|
</select>
|
|
483
|
-
<AngleDownIcon className="pointer-events-none absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2
|
|
505
|
+
<AngleDownIcon className="text-fm-placeholder pointer-events-none absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2" />
|
|
484
506
|
</div>
|
|
485
507
|
</div>
|
|
486
|
-
<div className="rounded-lg
|
|
487
|
-
<pre className="overflow-x-auto text-sm
|
|
508
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
509
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
488
510
|
{`<div className="relative">
|
|
489
511
|
<select className="w-full appearance-none pr-10 ...">
|
|
490
512
|
<option>Choose a country</option>
|
|
@@ -499,28 +521,32 @@ function DropdownButton() {
|
|
|
499
521
|
|
|
500
522
|
{/* Navigation Submenu */}
|
|
501
523
|
<div className="!space-y-4">
|
|
502
|
-
<h3 className="text-lg font-semibold
|
|
524
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
503
525
|
Navigation Submenu
|
|
504
526
|
</h3>
|
|
505
527
|
<div className="!space-y-4">
|
|
506
|
-
<nav className="rounded-lg border
|
|
528
|
+
<nav className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
507
529
|
<ul className="!list-none !space-y-2">
|
|
508
530
|
<li>
|
|
509
|
-
<button className="flex w-full items-center justify-between rounded px-3 py-2 text-left transition-colors
|
|
510
|
-
<span className="
|
|
511
|
-
|
|
531
|
+
<button className="hover:bg-fm-surface-secondary flex w-full items-center justify-between rounded px-3 py-2 text-left transition-colors">
|
|
532
|
+
<span className="text-fm-icon-active!">
|
|
533
|
+
Products
|
|
534
|
+
</span>
|
|
535
|
+
<AngleDownIcon className="text-fm-placeholder h-4 w-4" />
|
|
512
536
|
</button>
|
|
513
537
|
</li>
|
|
514
538
|
<li>
|
|
515
|
-
<button className="flex w-full items-center justify-between rounded px-3 py-2 text-left transition-colors
|
|
516
|
-
<span className="
|
|
517
|
-
|
|
539
|
+
<button className="hover:bg-fm-surface-secondary flex w-full items-center justify-between rounded px-3 py-2 text-left transition-colors">
|
|
540
|
+
<span className="text-fm-icon-active!">
|
|
541
|
+
Services
|
|
542
|
+
</span>
|
|
543
|
+
<AngleDownIcon className="text-fm-placeholder h-4 w-4" />
|
|
518
544
|
</button>
|
|
519
545
|
</li>
|
|
520
546
|
</ul>
|
|
521
547
|
</nav>
|
|
522
|
-
<div className="rounded-lg
|
|
523
|
-
<pre className="overflow-x-auto text-sm
|
|
548
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
549
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
524
550
|
{`<button className="flex items-center justify-between w-full px-3 py-2">
|
|
525
551
|
<span>Products</span>
|
|
526
552
|
<AngleDownIcon className="h-4 w-4 text-gray-400" />
|
|
@@ -532,19 +558,21 @@ function DropdownButton() {
|
|
|
532
558
|
|
|
533
559
|
{/* Sort Dropdown */}
|
|
534
560
|
<div className="!space-y-4">
|
|
535
|
-
<h3 className="text-lg font-semibold
|
|
561
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
536
562
|
Sort Dropdown
|
|
537
563
|
</h3>
|
|
538
564
|
<div className="!space-y-4">
|
|
539
565
|
<div className="flex items-center gap-2">
|
|
540
|
-
<span className="text-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
566
|
+
<span className="text-fm-secondary! text-sm">
|
|
567
|
+
Sort by:
|
|
568
|
+
</span>
|
|
569
|
+
<button className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex items-center gap-2 rounded border px-3 py-1 text-sm transition-colors">
|
|
570
|
+
<span className="text-fm-icon-active!">Date</span>
|
|
571
|
+
<AngleDownIcon className="text-fm-placeholder h-3 w-3" />
|
|
544
572
|
</button>
|
|
545
573
|
</div>
|
|
546
|
-
<div className="rounded-lg
|
|
547
|
-
<pre className="overflow-x-auto text-sm
|
|
574
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
575
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
548
576
|
{`<button className="flex items-center gap-2 px-3 py-1 text-sm border border-white/10 bg-white/5 rounded">
|
|
549
577
|
<span>Date</span>
|
|
550
578
|
<AngleDownIcon className="h-3 w-3 text-gray-400" />
|
|
@@ -556,32 +584,32 @@ function DropdownButton() {
|
|
|
556
584
|
|
|
557
585
|
{/* Collapsible Section */}
|
|
558
586
|
<div className="!space-y-4">
|
|
559
|
-
<h3 className="text-lg font-semibold
|
|
587
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
560
588
|
Collapsible Section
|
|
561
589
|
</h3>
|
|
562
590
|
<div className="!space-y-4">
|
|
563
|
-
<div className="rounded-lg border
|
|
591
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
564
592
|
<button className="mb-3 flex w-full items-center justify-between">
|
|
565
|
-
<h4 className="font-medium
|
|
593
|
+
<h4 className="text-fm-icon-active! font-medium">
|
|
566
594
|
Advanced Settings
|
|
567
595
|
</h4>
|
|
568
|
-
<AngleDownIcon className="h-4 w-4
|
|
596
|
+
<AngleDownIcon className="text-fm-icon-info h-4 w-4" />
|
|
569
597
|
</button>
|
|
570
|
-
<div className="
|
|
571
|
-
<p className="text-
|
|
598
|
+
<div className="border-fm-divider-tertiary bg-fm-surface-secondary rounded border p-3">
|
|
599
|
+
<p className="text-fm-secondary! text-sm">
|
|
572
600
|
Additional configuration options will appear here
|
|
573
601
|
when expanded.
|
|
574
602
|
</p>
|
|
575
603
|
</div>
|
|
576
604
|
</div>
|
|
577
|
-
<div className="rounded-lg
|
|
578
|
-
<pre className="overflow-x-auto text-sm
|
|
605
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
606
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
579
607
|
{`<button className="flex items-center justify-between w-full mb-3" onClick={toggleExpanded}>
|
|
580
608
|
<h4 className="font-medium text-white">Advanced Settings</h4>
|
|
581
609
|
<AngleDownIcon className={\`h-4 w-4 text-blue-400 transition-transform \${isExpanded ? 'rotate-180' : ''}\`} />
|
|
582
610
|
</button>
|
|
583
611
|
{isExpanded && (
|
|
584
|
-
<div className="bg-
|
|
612
|
+
<div className="bg-fm-surface-secondary border border-fm-divider-tertiary rounded p-3">
|
|
585
613
|
{/* Content */}
|
|
586
614
|
</div>
|
|
587
615
|
)}`}
|
|
@@ -594,64 +622,64 @@ function DropdownButton() {
|
|
|
594
622
|
|
|
595
623
|
{/* Accessibility */}
|
|
596
624
|
<div className="!space-y-8">
|
|
597
|
-
<h2 className="text-center text-3xl font-bold
|
|
625
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
598
626
|
Accessibility Features
|
|
599
627
|
</h2>
|
|
600
628
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
601
|
-
<div className="!space-y-4 rounded-lg border
|
|
602
|
-
<h3 className="text-lg font-semibold
|
|
629
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
630
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
603
631
|
✅ Built-in Features
|
|
604
632
|
</h3>
|
|
605
|
-
<ul className="!space-y-2 text-sm
|
|
606
|
-
<li className="
|
|
633
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
634
|
+
<li className="text-fm-secondary!">
|
|
607
635
|
Uses Radix UI AccessibleIcon wrapper
|
|
608
636
|
</li>
|
|
609
|
-
<li className="
|
|
637
|
+
<li className="text-fm-secondary!">
|
|
610
638
|
Provides screen reader label "Angle down icon"
|
|
611
639
|
</li>
|
|
612
|
-
<li className="
|
|
640
|
+
<li className="text-fm-secondary!">
|
|
613
641
|
Supports keyboard navigation in interactive contexts
|
|
614
642
|
</li>
|
|
615
|
-
<li className="
|
|
643
|
+
<li className="text-fm-secondary!">
|
|
616
644
|
Maintains proper color contrast ratios
|
|
617
645
|
</li>
|
|
618
|
-
<li className="
|
|
646
|
+
<li className="text-fm-secondary!">
|
|
619
647
|
Respects user's motion preferences
|
|
620
648
|
</li>
|
|
621
649
|
</ul>
|
|
622
650
|
</div>
|
|
623
651
|
|
|
624
|
-
<div className="!space-y-4 rounded-lg border
|
|
625
|
-
<h3 className="text-lg font-semibold
|
|
652
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
653
|
+
<h3 className="text-fm-icon-info! text-lg font-semibold">
|
|
626
654
|
💡 Best Practices
|
|
627
655
|
</h3>
|
|
628
|
-
<ul className="!space-y-2 text-sm
|
|
629
|
-
<li className="
|
|
656
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
657
|
+
<li className="text-fm-secondary!">
|
|
630
658
|
Use with proper ARIA labels for dropdowns
|
|
631
659
|
</li>
|
|
632
|
-
<li className="
|
|
660
|
+
<li className="text-fm-secondary!">
|
|
633
661
|
Indicate expanded/collapsed state clearly
|
|
634
662
|
</li>
|
|
635
|
-
<li className="
|
|
663
|
+
<li className="text-fm-secondary!">
|
|
636
664
|
Provide keyboard shortcuts for power users
|
|
637
665
|
</li>
|
|
638
|
-
<li className="
|
|
666
|
+
<li className="text-fm-secondary!">
|
|
639
667
|
Use consistent animation directions
|
|
640
668
|
</li>
|
|
641
|
-
<li className="
|
|
669
|
+
<li className="text-fm-secondary!">
|
|
642
670
|
Test with screen readers
|
|
643
671
|
</li>
|
|
644
672
|
</ul>
|
|
645
673
|
</div>
|
|
646
674
|
</div>
|
|
647
675
|
|
|
648
|
-
<div className="rounded-lg border
|
|
649
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
676
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
677
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
650
678
|
Accessible Dropdown Implementation
|
|
651
679
|
</h3>
|
|
652
680
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
653
|
-
<div className="rounded-lg
|
|
654
|
-
<pre className="overflow-x-auto text-sm
|
|
681
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
682
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
655
683
|
{`// Accessible dropdown with proper ARIA attributes
|
|
656
684
|
function AccessibleDropdown() {
|
|
657
685
|
const [isOpen, setIsOpen] = useState(false)
|
|
@@ -682,12 +710,12 @@ function AccessibleDropdown() {
|
|
|
682
710
|
</pre>
|
|
683
711
|
</div>
|
|
684
712
|
<div className="!space-y-4">
|
|
685
|
-
<p className="text-
|
|
713
|
+
<p className="text-fm-secondary! text-sm">
|
|
686
714
|
This implementation includes proper ARIA attributes for
|
|
687
715
|
screen readers and keyboard navigation support.
|
|
688
716
|
</p>
|
|
689
|
-
<div className="
|
|
690
|
-
<div className="flex items-center gap-2 text-sm
|
|
717
|
+
<div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
|
|
718
|
+
<div className="text-fm-icon-info! flex items-center gap-2 text-sm">
|
|
691
719
|
<AngleDownIcon className="h-4 w-4" />
|
|
692
720
|
<span>
|
|
693
721
|
The icon is marked as aria-hidden since the button
|
|
@@ -702,54 +730,58 @@ function AccessibleDropdown() {
|
|
|
702
730
|
|
|
703
731
|
{/* Related Icons */}
|
|
704
732
|
<div className="!space-y-8">
|
|
705
|
-
<h2 className="text-center text-3xl font-bold
|
|
733
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
706
734
|
Related Icons
|
|
707
735
|
</h2>
|
|
708
736
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
709
|
-
<div className="!space-y-3 rounded-lg border
|
|
710
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
711
|
-
<AngleDownIcon className="h-6 w-6 rotate-180
|
|
737
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
738
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
739
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6 rotate-180" />
|
|
712
740
|
</div>
|
|
713
741
|
<div>
|
|
714
|
-
<div className="font-medium
|
|
715
|
-
|
|
742
|
+
<div className="text-fm-icon-active font-medium">
|
|
743
|
+
AngleUpIcon
|
|
744
|
+
</div>
|
|
745
|
+
<div className="text-fm-tertiary text-xs">
|
|
716
746
|
Upward direction
|
|
717
747
|
</div>
|
|
718
748
|
</div>
|
|
719
749
|
</div>
|
|
720
|
-
<div className="!space-y-3 rounded-lg border
|
|
721
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
722
|
-
<AngleDownIcon className="h-6 w-6 -rotate-90
|
|
750
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
751
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
752
|
+
<AngleDownIcon className="text-fm-icon-positive h-6 w-6 -rotate-90" />
|
|
723
753
|
</div>
|
|
724
754
|
<div>
|
|
725
|
-
<div className="font-medium
|
|
755
|
+
<div className="text-fm-icon-active font-medium">
|
|
726
756
|
AngleRightIcon
|
|
727
757
|
</div>
|
|
728
|
-
<div className="text-
|
|
758
|
+
<div className="text-fm-tertiary text-xs">
|
|
729
759
|
Right direction
|
|
730
760
|
</div>
|
|
731
761
|
</div>
|
|
732
762
|
</div>
|
|
733
|
-
<div className="!space-y-3 rounded-lg border
|
|
734
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
735
|
-
<AngleDownIcon className="h-6 w-6 rotate-90
|
|
763
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
764
|
+
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
765
|
+
<AngleDownIcon className="text-fm-secondary-600 h-6 w-6 rotate-90" />
|
|
736
766
|
</div>
|
|
737
767
|
<div>
|
|
738
|
-
<div className="font-medium
|
|
768
|
+
<div className="text-fm-icon-active font-medium">
|
|
739
769
|
AngleLeftIcon
|
|
740
770
|
</div>
|
|
741
|
-
<div className="text-
|
|
771
|
+
<div className="text-fm-tertiary text-xs">
|
|
742
772
|
Left direction
|
|
743
773
|
</div>
|
|
744
774
|
</div>
|
|
745
775
|
</div>
|
|
746
|
-
<div className="!space-y-3 rounded-lg border
|
|
747
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
776
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
777
|
+
<div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
748
778
|
<span className="text-2xl">⚡</span>
|
|
749
779
|
</div>
|
|
750
780
|
<div>
|
|
751
|
-
<div className="font-medium
|
|
752
|
-
|
|
781
|
+
<div className="text-fm-icon-active font-medium">
|
|
782
|
+
ChevronIcon
|
|
783
|
+
</div>
|
|
784
|
+
<div className="text-fm-tertiary text-xs">
|
|
753
785
|
Alternative style
|
|
754
786
|
</div>
|
|
755
787
|
</div>
|
|
@@ -759,14 +791,14 @@ function AccessibleDropdown() {
|
|
|
759
791
|
</div>
|
|
760
792
|
|
|
761
793
|
{/* Footer */}
|
|
762
|
-
<div className="border-
|
|
794
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
763
795
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
764
796
|
<div className="!space-y-4 text-center">
|
|
765
|
-
<p className="
|
|
797
|
+
<p className="text-fm-tertiary!">
|
|
766
798
|
AngleDownIcon is part of the Aural UI icon library, designed
|
|
767
799
|
for intuitive navigation and interaction.
|
|
768
800
|
</p>
|
|
769
|
-
<p className="text-
|
|
801
|
+
<p className="text-fm-placeholder! text-sm">
|
|
770
802
|
Perfect for dropdowns, accordions, and any collapsible
|
|
771
803
|
content that requires directional indication.
|
|
772
804
|
</p>
|
|
@@ -815,8 +847,8 @@ const storyParameters = {
|
|
|
815
847
|
backgrounds: {
|
|
816
848
|
default: "dark",
|
|
817
849
|
values: [
|
|
818
|
-
{ name: "dark", value: "
|
|
819
|
-
{ name: "darker", value: "
|
|
850
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
851
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
820
852
|
],
|
|
821
853
|
},
|
|
822
854
|
}
|
|
@@ -825,12 +857,12 @@ export const Default: Story = {
|
|
|
825
857
|
args: {
|
|
826
858
|
width: 24,
|
|
827
859
|
height: 24,
|
|
828
|
-
className: "text-
|
|
860
|
+
className: "text-fm-icon-info",
|
|
829
861
|
withAccessibility: true,
|
|
830
862
|
},
|
|
831
863
|
parameters: storyParameters,
|
|
832
864
|
render: (args) => (
|
|
833
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
865
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary flex h-32 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
|
|
834
866
|
<AngleDownIcon {...args} />
|
|
835
867
|
</div>
|
|
836
868
|
),
|
|
@@ -847,30 +879,30 @@ export const SizeVariations: Story = {
|
|
|
847
879
|
},
|
|
848
880
|
},
|
|
849
881
|
render: () => (
|
|
850
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
882
|
+
<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">
|
|
851
883
|
<div className="text-center">
|
|
852
|
-
<AngleDownIcon className="!mx-auto mb-2 h-3 w-3
|
|
853
|
-
<span className="text-
|
|
884
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-3 w-3" />
|
|
885
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
854
886
|
</div>
|
|
855
887
|
<div className="text-center">
|
|
856
|
-
<AngleDownIcon className="!mx-auto mb-2 h-4 w-4
|
|
857
|
-
<span className="text-
|
|
888
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-4 w-4" />
|
|
889
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
858
890
|
</div>
|
|
859
891
|
<div className="text-center">
|
|
860
|
-
<AngleDownIcon className="!mx-auto mb-2 h-5 w-5
|
|
861
|
-
<span className="text-
|
|
892
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-5 w-5" />
|
|
893
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
862
894
|
</div>
|
|
863
895
|
<div className="text-center">
|
|
864
|
-
<AngleDownIcon className="!mx-auto mb-2 h-6 w-6
|
|
865
|
-
<span className="text-
|
|
896
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-6 w-6" />
|
|
897
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
866
898
|
</div>
|
|
867
899
|
<div className="text-center">
|
|
868
|
-
<AngleDownIcon className="!mx-auto mb-2 h-8 w-8
|
|
869
|
-
<span className="text-
|
|
900
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-8 w-8" />
|
|
901
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
870
902
|
</div>
|
|
871
903
|
<div className="text-center">
|
|
872
|
-
<AngleDownIcon className="!mx-auto mb-2 h-12 w-12
|
|
873
|
-
<span className="text-
|
|
904
|
+
<AngleDownIcon className="text-fm-icon-info !mx-auto mb-2 h-12 w-12" />
|
|
905
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
874
906
|
</div>
|
|
875
907
|
</div>
|
|
876
908
|
),
|
|
@@ -887,34 +919,34 @@ export const DirectionalVariations: Story = {
|
|
|
887
919
|
},
|
|
888
920
|
},
|
|
889
921
|
render: () => (
|
|
890
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-8 rounded-lg bg-
|
|
922
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-2 items-center justify-center gap-8 rounded-lg bg-linear-to-br p-8 md:grid-cols-4">
|
|
891
923
|
<div className="text-center">
|
|
892
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
893
|
-
<AngleDownIcon className="h-8 w-8
|
|
924
|
+
<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">
|
|
925
|
+
<AngleDownIcon className="text-fm-icon-info h-8 w-8" />
|
|
894
926
|
</div>
|
|
895
|
-
<div className="text-sm font-medium
|
|
896
|
-
<div className="text-
|
|
927
|
+
<div className="text-fm-icon-active text-sm font-medium">Down</div>
|
|
928
|
+
<div className="text-fm-icon-info text-xs">Default</div>
|
|
897
929
|
</div>
|
|
898
930
|
<div className="text-center">
|
|
899
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
900
|
-
<AngleDownIcon className="h-8 w-8 rotate-180
|
|
931
|
+
<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">
|
|
932
|
+
<AngleDownIcon className="text-fm-secondary-600 h-8 w-8 rotate-180" />
|
|
901
933
|
</div>
|
|
902
|
-
<div className="text-sm font-medium
|
|
903
|
-
<div className="text-
|
|
934
|
+
<div className="text-fm-icon-active text-sm font-medium">Up</div>
|
|
935
|
+
<div className="text-fm-secondary-600 text-xs">rotate-180</div>
|
|
904
936
|
</div>
|
|
905
937
|
<div className="text-center">
|
|
906
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
907
|
-
<AngleDownIcon className="h-8 w-8 -rotate-90
|
|
938
|
+
<div className="border-fm-icon-positive/30 bg-fm-icon-positive/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
939
|
+
<AngleDownIcon className="text-fm-icon-positive h-8 w-8 -rotate-90" />
|
|
908
940
|
</div>
|
|
909
|
-
<div className="text-sm font-medium
|
|
910
|
-
<div className="text-
|
|
941
|
+
<div className="text-fm-icon-active text-sm font-medium">Right</div>
|
|
942
|
+
<div className="text-fm-icon-positive text-xs">-rotate-90</div>
|
|
911
943
|
</div>
|
|
912
944
|
<div className="text-center">
|
|
913
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
914
|
-
<AngleDownIcon className="h-8 w-8 rotate-90
|
|
945
|
+
<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">
|
|
946
|
+
<AngleDownIcon className="text-fm-icon-warning h-8 w-8 rotate-90" />
|
|
915
947
|
</div>
|
|
916
|
-
<div className="text-sm font-medium
|
|
917
|
-
<div className="text-
|
|
948
|
+
<div className="text-fm-icon-active text-sm font-medium">Left</div>
|
|
949
|
+
<div className="text-fm-icon-warning text-xs">rotate-90</div>
|
|
918
950
|
</div>
|
|
919
951
|
</div>
|
|
920
952
|
),
|
|
@@ -931,50 +963,56 @@ export const UsageExamples: Story = {
|
|
|
931
963
|
},
|
|
932
964
|
},
|
|
933
965
|
render: () => (
|
|
934
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
966
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
935
967
|
{/* Dropdown */}
|
|
936
968
|
<div className="!space-y-2">
|
|
937
|
-
<h3 className="text-sm font-medium
|
|
938
|
-
|
|
969
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
970
|
+
Dropdown Menu
|
|
971
|
+
</h3>
|
|
972
|
+
<button className="border-fm-divider-secondary bg-fm-surface-secondary text-fm-icon-active hover:bg-fm-surface-secondary flex w-full items-center justify-between rounded-lg border px-4 py-3 transition-colors">
|
|
939
973
|
<span>Select an option</span>
|
|
940
|
-
<AngleDownIcon className="h-4 w-4
|
|
974
|
+
<AngleDownIcon className="text-fm-placeholder h-4 w-4 transition-transform hover:rotate-180" />
|
|
941
975
|
</button>
|
|
942
976
|
</div>
|
|
943
977
|
|
|
944
978
|
{/* Accordion */}
|
|
945
979
|
<div className="!space-y-2">
|
|
946
|
-
<h3 className="text-sm font-medium
|
|
947
|
-
<div className="rounded-lg border
|
|
948
|
-
<button className="flex w-full items-center justify-between p-4 text-left transition-colors
|
|
949
|
-
<h4 className="font-medium
|
|
980
|
+
<h3 className="text-fm-icon-active text-sm font-medium">Accordion</h3>
|
|
981
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border">
|
|
982
|
+
<button className="hover:bg-fm-surface-secondary flex w-full items-center justify-between p-4 text-left transition-colors">
|
|
983
|
+
<h4 className="text-fm-icon-active font-medium">
|
|
950
984
|
Frequently Asked Questions
|
|
951
985
|
</h4>
|
|
952
|
-
<AngleDownIcon className="h-5 w-5
|
|
986
|
+
<AngleDownIcon className="text-fm-icon-info h-5 w-5 transition-transform" />
|
|
953
987
|
</button>
|
|
954
988
|
</div>
|
|
955
989
|
</div>
|
|
956
990
|
|
|
957
991
|
{/* Select Input */}
|
|
958
992
|
<div className="!space-y-2">
|
|
959
|
-
<h3 className="text-sm font-medium
|
|
993
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
994
|
+
Select Input
|
|
995
|
+
</h3>
|
|
960
996
|
<div className="relative">
|
|
961
|
-
<select className="w-full appearance-none rounded-lg border
|
|
997
|
+
<select className="border-fm-divider-secondary bg-fm-surface-secondary text-fm-icon-active focus:border-fm-icon-info w-full appearance-none rounded-lg border px-3 py-2 pr-10 focus:ring-2 focus:ring-blue-500/20">
|
|
962
998
|
<option value="">Choose a country</option>
|
|
963
999
|
<option value="us">United States</option>
|
|
964
1000
|
<option value="ca">Canada</option>
|
|
965
1001
|
</select>
|
|
966
|
-
<AngleDownIcon className="pointer-events-none absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2
|
|
1002
|
+
<AngleDownIcon className="text-fm-placeholder pointer-events-none absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2" />
|
|
967
1003
|
</div>
|
|
968
1004
|
</div>
|
|
969
1005
|
|
|
970
1006
|
{/* Sort Dropdown */}
|
|
971
1007
|
<div className="!space-y-2">
|
|
972
|
-
<h3 className="text-sm font-medium
|
|
1008
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1009
|
+
Sort Dropdown
|
|
1010
|
+
</h3>
|
|
973
1011
|
<div className="flex items-center gap-2">
|
|
974
|
-
<span className="text-
|
|
975
|
-
<button className="flex items-center gap-2 rounded border
|
|
976
|
-
<span className="text-
|
|
977
|
-
<AngleDownIcon className="h-3 w-3
|
|
1012
|
+
<span className="text-fm-secondary text-sm">Sort by:</span>
|
|
1013
|
+
<button className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex items-center gap-2 rounded border px-3 py-1 text-sm transition-colors">
|
|
1014
|
+
<span className="text-fm-icon-active">Date</span>
|
|
1015
|
+
<AngleDownIcon className="text-fm-placeholder h-3 w-3" />
|
|
978
1016
|
</button>
|
|
979
1017
|
</div>
|
|
980
1018
|
</div>
|
|
@@ -993,21 +1031,25 @@ export const AnimatedStates: Story = {
|
|
|
993
1031
|
},
|
|
994
1032
|
},
|
|
995
1033
|
render: () => (
|
|
996
|
-
<div className="grid min-h-dvh grid-cols-1 items-center gap-8 rounded-lg bg-
|
|
1034
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-1 items-center gap-8 rounded-lg bg-linear-to-br p-8 md:grid-cols-2">
|
|
997
1035
|
<div className="text-center">
|
|
998
|
-
<h3 className="mb-4 text-lg font-medium
|
|
999
|
-
|
|
1000
|
-
|
|
1036
|
+
<h3 className="text-fm-icon-active mb-4 text-lg font-medium">
|
|
1037
|
+
Hover Animation
|
|
1038
|
+
</h3>
|
|
1039
|
+
<button className="group border-fm-icon-info/30 bg-fm-icon-info/10 hover:bg-fm-icon-info/20 rounded-lg border px-6 py-3 transition-colors">
|
|
1040
|
+
<AngleDownIcon className="text-fm-icon-info h-6 w-6 transition-transform duration-300 group-hover:rotate-180" />
|
|
1001
1041
|
</button>
|
|
1002
|
-
<p className="mt-2 text-xs
|
|
1042
|
+
<p className="text-fm-tertiary mt-2 text-xs">Hover to rotate</p>
|
|
1003
1043
|
</div>
|
|
1004
1044
|
|
|
1005
1045
|
<div className="text-center">
|
|
1006
|
-
<h3 className="mb-4 text-lg font-medium
|
|
1007
|
-
|
|
1008
|
-
|
|
1046
|
+
<h3 className="text-fm-icon-active mb-4 text-lg font-medium">
|
|
1047
|
+
Toggle State
|
|
1048
|
+
</h3>
|
|
1049
|
+
<button className="border-fm-icon-positive/30 bg-fm-icon-positive/10 hover:bg-fm-icon-positive/20 rounded-lg border px-6 py-3 transition-colors">
|
|
1050
|
+
<AngleDownIcon className="text-fm-icon-positive h-6 w-6 rotate-180 transition-transform duration-300" />
|
|
1009
1051
|
</button>
|
|
1010
|
-
<p className="mt-2 text-xs
|
|
1052
|
+
<p className="text-fm-tertiary mt-2 text-xs">Expanded state</p>
|
|
1011
1053
|
</div>
|
|
1012
1054
|
</div>
|
|
1013
1055
|
),
|
|
@@ -1026,12 +1068,12 @@ export const Playground: Story = {
|
|
|
1026
1068
|
args: {
|
|
1027
1069
|
width: 32,
|
|
1028
1070
|
height: 32,
|
|
1029
|
-
className: "text-
|
|
1071
|
+
className: "text-fm-icon-info",
|
|
1030
1072
|
strokeWidth: 2,
|
|
1031
1073
|
},
|
|
1032
1074
|
render: (args) => (
|
|
1033
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1034
|
-
<div className="rounded-lg border
|
|
1075
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
|
|
1076
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1035
1077
|
<AngleDownIcon {...args} />
|
|
1036
1078
|
</div>
|
|
1037
1079
|
</div>
|