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 GripVerticalIcon> = {
|
|
|
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,42 +40,42 @@ const meta: Meta<typeof GripVerticalIcon> = {
|
|
|
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
|
@keyframes wiggle {
|
|
81
81
|
0%, 100% { transform: rotate(-3deg); }
|
|
@@ -87,19 +87,19 @@ const meta: Meta<typeof GripVerticalIcon> = {
|
|
|
87
87
|
`}
|
|
88
88
|
</style>
|
|
89
89
|
|
|
90
|
-
<div className="
|
|
90
|
+
<div className="bg-fm-surface-primary min-h-screen">
|
|
91
91
|
{/* Header */}
|
|
92
|
-
<div className="relative overflow-hidden border-b
|
|
93
|
-
<div className="absolute inset-0 bg-
|
|
92
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
|
|
93
|
+
<div className="from-fm-surface-tertiary/10 to-fm-icon-info/10 absolute inset-0 bg-linear-to-r via-transparent" />
|
|
94
94
|
<div className="relative !mx-auto max-w-7xl px-6 py-16">
|
|
95
95
|
<div className="!space-y-6 text-center">
|
|
96
|
-
<div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border
|
|
97
|
-
<GripVerticalIcon className="h-12 w-12
|
|
96
|
+
<div className="border-fm-divider-primary from-fm-surface-tertiary/20 to-fm-icon-info/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
|
|
97
|
+
<GripVerticalIcon className="text-fm-placeholder h-12 w-12" />
|
|
98
98
|
</div>
|
|
99
99
|
<h1 className="!text-fm-primary text-5xl font-bold">
|
|
100
100
|
GripVerticalIcon
|
|
101
101
|
</h1>
|
|
102
|
-
<p className="!mx-auto max-w-3xl text-xl leading-relaxed
|
|
102
|
+
<p className="text-fm-secondary! !mx-auto max-w-3xl text-xl leading-relaxed">
|
|
103
103
|
A versatile vertical grip icon featuring two columns of
|
|
104
104
|
three dots each, commonly used as a drag handle indicator
|
|
105
105
|
for vertical movement and reordering operations. Perfect for
|
|
@@ -111,28 +111,28 @@ const meta: Meta<typeof GripVerticalIcon> = {
|
|
|
111
111
|
{/* Stats */}
|
|
112
112
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
113
113
|
<div className="text-center">
|
|
114
|
-
<div className="text-3xl font-bold
|
|
114
|
+
<div className="text-fm-secondary text-3xl font-bold">
|
|
115
115
|
Draggable
|
|
116
116
|
</div>
|
|
117
|
-
<div className="text-
|
|
117
|
+
<div className="text-fm-tertiary text-sm">
|
|
118
118
|
Vertical movement
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
121
|
-
<div className="h-8 w-px
|
|
121
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
122
122
|
<div className="text-center">
|
|
123
|
-
<div className="text-3xl font-bold
|
|
123
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
124
124
|
Sortable
|
|
125
125
|
</div>
|
|
126
|
-
<div className="text-
|
|
126
|
+
<div className="text-fm-tertiary text-sm">
|
|
127
127
|
Reordering controls
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
130
|
-
<div className="h-8 w-px
|
|
130
|
+
<div className="bg-fm-divider-primary h-8 w-px" />
|
|
131
131
|
<div className="text-center">
|
|
132
|
-
<div className="text-3xl font-bold
|
|
132
|
+
<div className="text-fm-icon-info text-3xl font-bold">
|
|
133
133
|
Interactive
|
|
134
134
|
</div>
|
|
135
|
-
<div className="text-
|
|
135
|
+
<div className="text-fm-tertiary text-sm">
|
|
136
136
|
Touch-friendly
|
|
137
137
|
</div>
|
|
138
138
|
</div>
|
|
@@ -145,16 +145,16 @@ const meta: Meta<typeof GripVerticalIcon> = {
|
|
|
145
145
|
<div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
|
|
146
146
|
{/* Quick Usage */}
|
|
147
147
|
<div className="!space-y-8">
|
|
148
|
-
<h2 className="text-center text-3xl font-bold
|
|
148
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
149
149
|
Quick Start
|
|
150
150
|
</h2>
|
|
151
151
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
152
152
|
<div className="!space-y-4">
|
|
153
|
-
<h3 className="text-xl font-semibold
|
|
153
|
+
<h3 className="!text-fm-secondary text-xl font-semibold">
|
|
154
154
|
Basic Usage
|
|
155
155
|
</h3>
|
|
156
|
-
<div className="rounded-lg
|
|
157
|
-
<pre className="overflow-x-auto text-sm
|
|
156
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
157
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
158
158
|
{`import { GripVerticalIcon } from "@icons/grip-vertical-icon"
|
|
159
159
|
|
|
160
160
|
function SortableItem() {
|
|
@@ -170,13 +170,15 @@ function SortableItem() {
|
|
|
170
170
|
</div>
|
|
171
171
|
|
|
172
172
|
<div className="!space-y-4">
|
|
173
|
-
<h3 className="text-xl font-semibold
|
|
173
|
+
<h3 className="!text-fm-secondary text-xl font-semibold">
|
|
174
174
|
Live Preview
|
|
175
175
|
</h3>
|
|
176
|
-
<div className="flex h-32 items-center justify-center rounded-lg border
|
|
177
|
-
<div className="flex items-center gap-3 rounded-lg border
|
|
178
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
179
|
-
<span className="text-
|
|
176
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
|
|
177
|
+
<div className="border-fm-divider-secondary bg-fm-surface-tertiary/10 flex items-center gap-3 rounded-lg border px-4 py-3">
|
|
178
|
+
<GripVerticalIcon className="text-fm-placeholder h-4 w-4 cursor-move" />
|
|
179
|
+
<span className="text-fm-icon-active">
|
|
180
|
+
Draggable List Item
|
|
181
|
+
</span>
|
|
180
182
|
</div>
|
|
181
183
|
</div>
|
|
182
184
|
</div>
|
|
@@ -185,120 +187,130 @@ function SortableItem() {
|
|
|
185
187
|
|
|
186
188
|
{/* Props Documentation */}
|
|
187
189
|
<div className="!space-y-8">
|
|
188
|
-
<h2 className="text-center text-3xl font-bold
|
|
190
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
189
191
|
Props & Configuration
|
|
190
192
|
</h2>
|
|
191
193
|
|
|
192
|
-
<div className="overflow-hidden rounded-lg border
|
|
193
|
-
<div className="bg-
|
|
194
|
-
<h3 className="text-xl font-semibold
|
|
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>
|
|
195
199
|
</div>
|
|
196
200
|
<table className="!my-0 w-full">
|
|
197
|
-
<thead className="bg-
|
|
198
|
-
<tr className="border-
|
|
199
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
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">
|
|
200
204
|
Prop
|
|
201
205
|
</th>
|
|
202
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
206
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
203
207
|
Type
|
|
204
208
|
</th>
|
|
205
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
209
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
206
210
|
Default
|
|
207
211
|
</th>
|
|
208
|
-
<th className="px-6 py-4 text-left text-sm font-semibold
|
|
212
|
+
<th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
|
|
209
213
|
Description
|
|
210
214
|
</th>
|
|
211
215
|
</tr>
|
|
212
216
|
</thead>
|
|
213
217
|
<tbody>
|
|
214
218
|
{" "}
|
|
215
|
-
<tr className="
|
|
216
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
219
|
+
<tr className="bg-fm-surface-secondary!">
|
|
220
|
+
<td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
|
|
217
221
|
withAccessibility
|
|
218
222
|
</td>
|
|
219
|
-
<td className="px-6 py-4 text-sm
|
|
223
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
220
224
|
boolean
|
|
221
225
|
</td>
|
|
222
|
-
<td className="px-6 py-4 text-sm
|
|
226
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
223
227
|
true
|
|
224
228
|
</td>
|
|
225
|
-
<td className="px-6 py-4 text-sm
|
|
229
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
226
230
|
Whether to wrap the icon with accessibility feature
|
|
227
231
|
</td>
|
|
228
232
|
</tr>
|
|
229
|
-
<tr className="border-
|
|
230
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
233
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
234
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
231
235
|
height
|
|
232
236
|
</td>
|
|
233
|
-
<td className="px-6 py-4 text-sm
|
|
237
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
234
238
|
number | string
|
|
235
239
|
</td>
|
|
236
|
-
<td className="px-6 py-4 text-sm
|
|
237
|
-
|
|
240
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
241
|
+
24
|
|
242
|
+
</td>
|
|
243
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
238
244
|
Height of the icon in pixels
|
|
239
245
|
</td>
|
|
240
246
|
</tr>
|
|
241
|
-
<tr className="border-
|
|
242
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
247
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
248
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
243
249
|
stroke
|
|
244
250
|
</td>
|
|
245
|
-
<td className="px-6 py-4 text-sm
|
|
251
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
246
252
|
string
|
|
247
253
|
</td>
|
|
248
|
-
<td className="px-6 py-4 text-sm
|
|
254
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
249
255
|
currentColor
|
|
250
256
|
</td>
|
|
251
|
-
<td className="px-6 py-4 text-sm
|
|
257
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
252
258
|
Stroke color of the dots
|
|
253
259
|
</td>
|
|
254
260
|
</tr>
|
|
255
|
-
<tr className="border-
|
|
256
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
261
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
262
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
257
263
|
strokeWidth
|
|
258
264
|
</td>
|
|
259
|
-
<td className="px-6 py-4 text-sm
|
|
265
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
260
266
|
string | number
|
|
261
267
|
</td>
|
|
262
|
-
<td className="px-6 py-4 text-sm
|
|
263
|
-
|
|
268
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
269
|
+
2
|
|
270
|
+
</td>
|
|
271
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
264
272
|
Stroke width of the dots
|
|
265
273
|
</td>
|
|
266
274
|
</tr>
|
|
267
|
-
<tr className="border-
|
|
268
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
275
|
+
<tr className="border-fm-divider-tertiary border-b">
|
|
276
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
269
277
|
fill
|
|
270
278
|
</td>
|
|
271
|
-
<td className="px-6 py-4 text-sm
|
|
279
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
272
280
|
string
|
|
273
281
|
</td>
|
|
274
|
-
<td className="px-6 py-4 text-sm
|
|
282
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
275
283
|
none
|
|
276
284
|
</td>
|
|
277
|
-
<td className="px-6 py-4 text-sm
|
|
285
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
278
286
|
Fill color of the dots
|
|
279
287
|
</td>
|
|
280
288
|
</tr>
|
|
281
|
-
<tr className="border-
|
|
282
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
289
|
+
<tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
|
|
290
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
283
291
|
className
|
|
284
292
|
</td>
|
|
285
|
-
<td className="px-6 py-4 text-sm
|
|
293
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
286
294
|
string
|
|
287
295
|
</td>
|
|
288
|
-
<td className="px-6 py-4 text-sm
|
|
289
|
-
|
|
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">
|
|
290
300
|
CSS classes for styling (use for overrides)
|
|
291
301
|
</td>
|
|
292
302
|
</tr>
|
|
293
|
-
<tr className="
|
|
294
|
-
<td className="px-6 py-4 font-mono text-sm
|
|
303
|
+
<tr className="bg-fm-surface-secondary!">
|
|
304
|
+
<td className="!text-fm-secondary px-6 py-4 font-mono text-sm">
|
|
295
305
|
...svgProps
|
|
296
306
|
</td>
|
|
297
|
-
<td className="px-6 py-4 text-sm
|
|
307
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
298
308
|
SVGProps
|
|
299
309
|
</td>
|
|
300
|
-
<td className="px-6 py-4 text-sm
|
|
301
|
-
|
|
310
|
+
<td className="text-fm-placeholder! px-6 py-4 text-sm">
|
|
311
|
+
-
|
|
312
|
+
</td>
|
|
313
|
+
<td className="text-fm-secondary! px-6 py-4 text-sm">
|
|
302
314
|
All standard SVG element props
|
|
303
315
|
</td>
|
|
304
316
|
</tr>
|
|
@@ -309,50 +321,62 @@ function SortableItem() {
|
|
|
309
321
|
|
|
310
322
|
{/* Size Variations */}
|
|
311
323
|
<div className="!space-y-8">
|
|
312
|
-
<h2 className="text-center text-3xl font-bold
|
|
324
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
313
325
|
Size Variations
|
|
314
326
|
</h2>
|
|
315
|
-
<div className="rounded-lg border
|
|
327
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
316
328
|
<div className="!space-y-6">
|
|
317
329
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
318
330
|
<div className="!space-y-4">
|
|
319
|
-
<h3 className="text-lg font-semibold
|
|
331
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
320
332
|
Standard Sizes
|
|
321
333
|
</h3>
|
|
322
|
-
<div className="flex items-end gap-6 rounded-lg
|
|
334
|
+
<div className="bg-fm-surface-secondary flex items-end gap-6 rounded-lg p-6">
|
|
323
335
|
<div className="text-center">
|
|
324
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-3 w-3
|
|
325
|
-
<span className="text-
|
|
336
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-3 w-3" />
|
|
337
|
+
<span className="text-fm-tertiary text-xs">
|
|
338
|
+
12px
|
|
339
|
+
</span>
|
|
326
340
|
</div>
|
|
327
341
|
<div className="text-center">
|
|
328
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-4 w-4
|
|
329
|
-
<span className="text-
|
|
342
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-4 w-4" />
|
|
343
|
+
<span className="text-fm-tertiary text-xs">
|
|
344
|
+
16px
|
|
345
|
+
</span>
|
|
330
346
|
</div>
|
|
331
347
|
<div className="text-center">
|
|
332
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-5 w-5
|
|
333
|
-
<span className="text-
|
|
348
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-5 w-5" />
|
|
349
|
+
<span className="text-fm-tertiary text-xs">
|
|
350
|
+
20px
|
|
351
|
+
</span>
|
|
334
352
|
</div>
|
|
335
353
|
<div className="text-center">
|
|
336
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-6 w-6
|
|
337
|
-
<span className="text-
|
|
354
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-6 w-6" />
|
|
355
|
+
<span className="text-fm-tertiary text-xs">
|
|
356
|
+
24px
|
|
357
|
+
</span>
|
|
338
358
|
</div>
|
|
339
359
|
<div className="text-center">
|
|
340
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-8 w-8
|
|
341
|
-
<span className="text-
|
|
360
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-8 w-8" />
|
|
361
|
+
<span className="text-fm-tertiary text-xs">
|
|
362
|
+
32px
|
|
363
|
+
</span>
|
|
342
364
|
</div>
|
|
343
365
|
<div className="text-center">
|
|
344
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-12 w-12
|
|
345
|
-
<span className="text-
|
|
366
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-12 w-12" />
|
|
367
|
+
<span className="text-fm-tertiary text-xs">
|
|
368
|
+
48px
|
|
369
|
+
</span>
|
|
346
370
|
</div>
|
|
347
371
|
</div>
|
|
348
372
|
</div>
|
|
349
373
|
|
|
350
374
|
<div className="!space-y-4">
|
|
351
|
-
<h3 className="text-lg font-semibold
|
|
375
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
352
376
|
Code Example
|
|
353
377
|
</h3>
|
|
354
|
-
<div className="rounded-lg
|
|
355
|
-
<pre className="overflow-x-auto text-sm
|
|
378
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
379
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
356
380
|
{`// Small (16px)
|
|
357
381
|
<GripVerticalIcon className="h-4 w-4 " />
|
|
358
382
|
|
|
@@ -378,56 +402,56 @@ function SortableItem() {
|
|
|
378
402
|
|
|
379
403
|
{/* Color Variations */}
|
|
380
404
|
<div className="!space-y-8">
|
|
381
|
-
<h2 className="text-center text-3xl font-bold
|
|
405
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
382
406
|
Color Variations
|
|
383
407
|
</h2>
|
|
384
408
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
385
409
|
<div className="!space-y-4">
|
|
386
|
-
<h3 className="text-lg font-semibold
|
|
410
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
387
411
|
Semantic Colors
|
|
388
412
|
</h3>
|
|
389
|
-
<div className="!space-y-4 rounded-lg border
|
|
413
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
390
414
|
<div className="flex items-center gap-4">
|
|
391
|
-
<GripVerticalIcon className="h-6 w-6
|
|
415
|
+
<GripVerticalIcon className="text-fm-placeholder h-6 w-6" />
|
|
392
416
|
<div>
|
|
393
|
-
<div className="text-sm font-medium
|
|
417
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
394
418
|
Default
|
|
395
419
|
</div>
|
|
396
|
-
<div className="text-
|
|
397
|
-
text-
|
|
420
|
+
<div className="text-fm-tertiary text-xs">
|
|
421
|
+
text-fm-placeholder
|
|
398
422
|
</div>
|
|
399
423
|
</div>
|
|
400
424
|
</div>
|
|
401
425
|
<div className="flex items-center gap-4">
|
|
402
|
-
<GripVerticalIcon className="h-6 w-6
|
|
426
|
+
<GripVerticalIcon className="text-fm-placeholder h-6 w-6" />
|
|
403
427
|
<div>
|
|
404
|
-
<div className="text-sm font-medium
|
|
428
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
405
429
|
Muted
|
|
406
430
|
</div>
|
|
407
|
-
<div className="text-
|
|
408
|
-
text-
|
|
431
|
+
<div className="text-fm-tertiary text-xs">
|
|
432
|
+
text-fm-placeholder
|
|
409
433
|
</div>
|
|
410
434
|
</div>
|
|
411
435
|
</div>
|
|
412
436
|
<div className="flex items-center gap-4">
|
|
413
|
-
<GripVerticalIcon className="h-6 w-6
|
|
437
|
+
<GripVerticalIcon className="text-fm-icon-info h-6 w-6" />
|
|
414
438
|
<div>
|
|
415
|
-
<div className="text-sm font-medium
|
|
439
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
416
440
|
Primary
|
|
417
441
|
</div>
|
|
418
|
-
<div className="text-
|
|
419
|
-
text-
|
|
442
|
+
<div className="text-fm-tertiary text-xs">
|
|
443
|
+
text-fm-icon-info
|
|
420
444
|
</div>
|
|
421
445
|
</div>
|
|
422
446
|
</div>
|
|
423
447
|
<div className="flex items-center gap-4">
|
|
424
|
-
<GripVerticalIcon className="h-6 w-6
|
|
448
|
+
<GripVerticalIcon className="text-fm-icon-active/30 h-6 w-6" />
|
|
425
449
|
<div>
|
|
426
|
-
<div className="text-sm font-medium
|
|
450
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
427
451
|
Disabled
|
|
428
452
|
</div>
|
|
429
|
-
<div className="text-
|
|
430
|
-
text-
|
|
453
|
+
<div className="text-fm-tertiary text-xs">
|
|
454
|
+
text-fm-icon-active/30
|
|
431
455
|
</div>
|
|
432
456
|
</div>
|
|
433
457
|
</div>
|
|
@@ -435,11 +459,11 @@ function SortableItem() {
|
|
|
435
459
|
</div>
|
|
436
460
|
|
|
437
461
|
<div className="!space-y-4">
|
|
438
|
-
<h3 className="text-lg font-semibold
|
|
462
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
439
463
|
Custom Colors
|
|
440
464
|
</h3>
|
|
441
|
-
<div className="rounded-lg
|
|
442
|
-
<pre className="overflow-x-auto text-sm
|
|
465
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
466
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
443
467
|
{`// Using Tailwind classes with
|
|
444
468
|
<GripVerticalIcon className="h-6 w-6 text-gray-400 " />
|
|
445
469
|
<GripVerticalIcon className="h-6 w-6 text-blue-500 " />
|
|
@@ -465,18 +489,18 @@ function SortableItem() {
|
|
|
465
489
|
|
|
466
490
|
{/* Usage Examples */}
|
|
467
491
|
<div className="!space-y-8">
|
|
468
|
-
<h2 className="text-center text-3xl font-bold
|
|
492
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
469
493
|
Usage Examples
|
|
470
494
|
</h2>
|
|
471
495
|
|
|
472
496
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
473
497
|
{/* Sortable List */}
|
|
474
498
|
<div className="!space-y-4">
|
|
475
|
-
<h3 className="text-lg font-semibold
|
|
499
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
476
500
|
Sortable List
|
|
477
501
|
</h3>
|
|
478
502
|
<div className="!space-y-4">
|
|
479
|
-
<div className="rounded-lg border
|
|
503
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
480
504
|
<div className="!space-y-2">
|
|
481
505
|
{[
|
|
482
506
|
"First Task",
|
|
@@ -486,21 +510,21 @@ function SortableItem() {
|
|
|
486
510
|
].map((task, index) => (
|
|
487
511
|
<div
|
|
488
512
|
key={index}
|
|
489
|
-
className="flex items-center gap-3 rounded border
|
|
513
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex items-center gap-3 rounded border p-3 transition-colors"
|
|
490
514
|
>
|
|
491
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
492
|
-
<span className="flex-1 text-sm
|
|
515
|
+
<GripVerticalIcon className="text-fm-placeholder hover:text-fm-secondary h-4 w-4 cursor-move transition-colors" />
|
|
516
|
+
<span className="text-fm-icon-active flex-1 text-sm">
|
|
493
517
|
{task}
|
|
494
518
|
</span>
|
|
495
|
-
<span className="text-
|
|
519
|
+
<span className="text-fm-placeholder text-xs">
|
|
496
520
|
#{index + 1}
|
|
497
521
|
</span>
|
|
498
522
|
</div>
|
|
499
523
|
))}
|
|
500
524
|
</div>
|
|
501
525
|
</div>
|
|
502
|
-
<div className="rounded-lg
|
|
503
|
-
<pre className="overflow-x-auto text-sm
|
|
526
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
527
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
504
528
|
{`// Sortable list item
|
|
505
529
|
<div className="flex items-center gap-3 p-3 border border-white/10 bg-white/5 rounded hover:bg-white/10 transition-colors">
|
|
506
530
|
<GripVerticalIcon className="h-4 w-4 cursor-move text-white/40 hover:text-white/70 transition-colors " />
|
|
@@ -514,7 +538,7 @@ function SortableItem() {
|
|
|
514
538
|
|
|
515
539
|
{/* Draggable Cards */}
|
|
516
540
|
<div className="!space-y-4">
|
|
517
|
-
<h3 className="text-lg font-semibold
|
|
541
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
518
542
|
Draggable Cards
|
|
519
543
|
</h3>
|
|
520
544
|
<div className="!space-y-4">
|
|
@@ -523,28 +547,28 @@ function SortableItem() {
|
|
|
523
547
|
(project, index) => (
|
|
524
548
|
<div
|
|
525
549
|
key={index}
|
|
526
|
-
className="relative rounded-lg border
|
|
550
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary relative rounded-lg border p-4 transition-colors"
|
|
527
551
|
>
|
|
528
552
|
<div className="absolute top-3 right-3">
|
|
529
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
553
|
+
<GripVerticalIcon className="text-fm-icon-active/30 hover:text-fm-tertiary h-4 w-4 cursor-move transition-colors" />
|
|
530
554
|
</div>
|
|
531
|
-
<h5 className="mb-2 text-sm font-medium
|
|
555
|
+
<h5 className="text-fm-icon-active! mb-2 text-sm font-medium">
|
|
532
556
|
{project}
|
|
533
557
|
</h5>
|
|
534
|
-
<p className="text-
|
|
558
|
+
<p className="text-fm-tertiary! text-xs">
|
|
535
559
|
Drag to reorder this card
|
|
536
560
|
</p>
|
|
537
561
|
<div className="mt-3 flex gap-2">
|
|
538
|
-
<div className="h-2 w-2 rounded-full
|
|
539
|
-
<div className="h-2 w-2 rounded-full
|
|
540
|
-
<div className="h-2 w-2 rounded-full
|
|
562
|
+
<div className="bg-fm-icon-positive h-2 w-2 rounded-full"></div>
|
|
563
|
+
<div className="bg-fm-icon-warning h-2 w-2 rounded-full"></div>
|
|
564
|
+
<div className="bg-fm-icon-negative h-2 w-2 rounded-full"></div>
|
|
541
565
|
</div>
|
|
542
566
|
</div>
|
|
543
567
|
)
|
|
544
568
|
)}
|
|
545
569
|
</div>
|
|
546
|
-
<div className="rounded-lg
|
|
547
|
-
<pre className="overflow-x-auto text-sm
|
|
570
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
571
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
548
572
|
{`// Draggable card
|
|
549
573
|
<div className="relative border border-white/10 bg-white/5 p-4 rounded-lg hover:bg-white/10 transition-colors">
|
|
550
574
|
<div className="absolute top-3 right-3">
|
|
@@ -560,23 +584,23 @@ function SortableItem() {
|
|
|
560
584
|
|
|
561
585
|
{/* Table Rows */}
|
|
562
586
|
<div className="!space-y-4">
|
|
563
|
-
<h3 className="text-lg font-semibold
|
|
587
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
564
588
|
Sortable Table Rows
|
|
565
589
|
</h3>
|
|
566
590
|
<div className="!space-y-4">
|
|
567
|
-
<div className="overflow-hidden rounded-lg border
|
|
568
|
-
<div className="grid grid-cols-12 gap-4 border-b
|
|
591
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
|
|
592
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary grid grid-cols-12 gap-4 border-b p-3">
|
|
569
593
|
<div className="col-span-1"></div>
|
|
570
|
-
<div className="col-span-4 text-xs font-medium
|
|
594
|
+
<div className="text-fm-secondary col-span-4 text-xs font-medium">
|
|
571
595
|
Name
|
|
572
596
|
</div>
|
|
573
|
-
<div className="col-span-3 text-xs font-medium
|
|
597
|
+
<div className="text-fm-secondary col-span-3 text-xs font-medium">
|
|
574
598
|
Status
|
|
575
599
|
</div>
|
|
576
|
-
<div className="col-span-2 text-xs font-medium
|
|
600
|
+
<div className="text-fm-secondary col-span-2 text-xs font-medium">
|
|
577
601
|
Priority
|
|
578
602
|
</div>
|
|
579
|
-
<div className="col-span-2 text-xs font-medium
|
|
603
|
+
<div className="text-fm-secondary col-span-2 text-xs font-medium">
|
|
580
604
|
Date
|
|
581
605
|
</div>
|
|
582
606
|
</div>
|
|
@@ -602,28 +626,28 @@ function SortableItem() {
|
|
|
602
626
|
].map((row, index) => (
|
|
603
627
|
<div
|
|
604
628
|
key={index}
|
|
605
|
-
className="grid grid-cols-12 gap-4 border-b
|
|
629
|
+
className="border-fm-divider-secondary hover:bg-fm-surface-secondary grid grid-cols-12 gap-4 border-b p-3 transition-colors"
|
|
606
630
|
>
|
|
607
631
|
<div className="col-span-1 flex items-center">
|
|
608
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
632
|
+
<GripVerticalIcon className="text-fm-icon-active/30 hover:text-fm-tertiary h-4 w-4 cursor-move transition-colors" />
|
|
609
633
|
</div>
|
|
610
|
-
<div className="col-span-4 text-sm
|
|
634
|
+
<div className="text-fm-icon-active col-span-4 text-sm">
|
|
611
635
|
{row.name}
|
|
612
636
|
</div>
|
|
613
|
-
<div className="col-span-3 text-sm
|
|
637
|
+
<div className="text-fm-secondary col-span-3 text-sm">
|
|
614
638
|
{row.status}
|
|
615
639
|
</div>
|
|
616
|
-
<div className="col-span-2 text-sm
|
|
640
|
+
<div className="text-fm-secondary col-span-2 text-sm">
|
|
617
641
|
{row.priority}
|
|
618
642
|
</div>
|
|
619
|
-
<div className="col-span-2 text-sm
|
|
643
|
+
<div className="text-fm-secondary col-span-2 text-sm">
|
|
620
644
|
{row.date}
|
|
621
645
|
</div>
|
|
622
646
|
</div>
|
|
623
647
|
))}
|
|
624
648
|
</div>
|
|
625
|
-
<div className="rounded-lg
|
|
626
|
-
<pre className="overflow-x-auto text-sm
|
|
649
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
650
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
627
651
|
{`// Table row with drag handle
|
|
628
652
|
<div className="grid grid-cols-12 gap-4 p-3 border-b border-white/10 hover:bg-white/5 transition-colors">
|
|
629
653
|
<div className="col-span-1 flex items-center">
|
|
@@ -641,11 +665,11 @@ function SortableItem() {
|
|
|
641
665
|
|
|
642
666
|
{/* Menu Items */}
|
|
643
667
|
<div className="!space-y-4">
|
|
644
|
-
<h3 className="text-lg font-semibold
|
|
668
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
645
669
|
Reorderable Menu
|
|
646
670
|
</h3>
|
|
647
671
|
<div className="!space-y-4">
|
|
648
|
-
<div className="max-w-xs rounded-lg border
|
|
672
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary max-w-xs rounded-lg border p-2">
|
|
649
673
|
{[
|
|
650
674
|
"Dashboard",
|
|
651
675
|
"Projects",
|
|
@@ -655,20 +679,20 @@ function SortableItem() {
|
|
|
655
679
|
].map((item, index) => (
|
|
656
680
|
<div
|
|
657
681
|
key={index}
|
|
658
|
-
className="flex cursor-pointer items-center gap-3 rounded p-2 transition-colors
|
|
682
|
+
className="hover:bg-fm-surface-secondary flex cursor-pointer items-center gap-3 rounded p-2 transition-colors"
|
|
659
683
|
>
|
|
660
|
-
<GripVerticalIcon className="h-3 w-3 cursor-move
|
|
661
|
-
<span className="flex-1 text-sm
|
|
684
|
+
<GripVerticalIcon className="text-fm-icon-active/30 h-3 w-3 cursor-move" />
|
|
685
|
+
<span className="text-fm-icon-active flex-1 text-sm">
|
|
662
686
|
{item}
|
|
663
687
|
</span>
|
|
664
|
-
<span className="text-
|
|
688
|
+
<span className="text-fm-placeholder text-xs">
|
|
665
689
|
⌘{index + 1}
|
|
666
690
|
</span>
|
|
667
691
|
</div>
|
|
668
692
|
))}
|
|
669
693
|
</div>
|
|
670
|
-
<div className="rounded-lg
|
|
671
|
-
<pre className="overflow-x-auto text-sm
|
|
694
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
695
|
+
<pre className="text-fm-icon-positive! overflow-x-auto text-sm">
|
|
672
696
|
{`// Menu item with drag handle
|
|
673
697
|
<div className="flex items-center gap-3 p-2 rounded hover:bg-white/10 transition-colors cursor-pointer">
|
|
674
698
|
<GripVerticalIcon className="h-3 w-3 cursor-move text-white/30 " />
|
|
@@ -684,33 +708,33 @@ function SortableItem() {
|
|
|
684
708
|
|
|
685
709
|
{/* Interactive States */}
|
|
686
710
|
<div className="!space-y-8">
|
|
687
|
-
<h2 className="text-center text-3xl font-bold
|
|
711
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
688
712
|
Interactive States & Animations
|
|
689
713
|
</h2>
|
|
690
714
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
691
715
|
<div className="!space-y-4">
|
|
692
|
-
<h3 className="text-lg font-semibold
|
|
716
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
693
717
|
Hover & Focus States
|
|
694
718
|
</h3>
|
|
695
|
-
<div className="!space-y-4 rounded-lg border
|
|
719
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
696
720
|
<div className="flex items-center gap-4">
|
|
697
|
-
<GripVerticalIcon className="h-6 w-6
|
|
721
|
+
<GripVerticalIcon className="text-fm-tertiary hover:text-fm-icon-active h-6 w-6 transition-colors" />
|
|
698
722
|
<div>
|
|
699
|
-
<div className="text-sm font-medium
|
|
723
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
700
724
|
Color Change
|
|
701
725
|
</div>
|
|
702
|
-
<div className="text-
|
|
703
|
-
hover:text-
|
|
726
|
+
<div className="text-fm-tertiary text-xs">
|
|
727
|
+
hover:text-fm-icon-active
|
|
704
728
|
</div>
|
|
705
729
|
</div>
|
|
706
730
|
</div>
|
|
707
731
|
<div className="flex items-center gap-4">
|
|
708
|
-
<GripVerticalIcon className="h-6 w-6
|
|
732
|
+
<GripVerticalIcon className="text-fm-icon-active h-6 w-6 transition-transform hover:scale-110" />
|
|
709
733
|
<div>
|
|
710
|
-
<div className="text-sm font-medium
|
|
734
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
711
735
|
Scale Effect
|
|
712
736
|
</div>
|
|
713
|
-
<div className="text-
|
|
737
|
+
<div className="text-fm-tertiary text-xs">
|
|
714
738
|
hover:scale-110
|
|
715
739
|
</div>
|
|
716
740
|
</div>
|
|
@@ -720,24 +744,24 @@ function SortableItem() {
|
|
|
720
744
|
className="rounded p-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
721
745
|
tabIndex={0}
|
|
722
746
|
>
|
|
723
|
-
<GripVerticalIcon className="h-6 w-6
|
|
747
|
+
<GripVerticalIcon className="text-fm-icon-active h-6 w-6" />
|
|
724
748
|
</div>
|
|
725
749
|
<div>
|
|
726
|
-
<div className="text-sm font-medium
|
|
750
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
727
751
|
Focus Ring
|
|
728
752
|
</div>
|
|
729
|
-
<div className="text-
|
|
753
|
+
<div className="text-fm-tertiary text-xs">
|
|
730
754
|
focus:ring-2
|
|
731
755
|
</div>
|
|
732
756
|
</div>
|
|
733
757
|
</div>
|
|
734
758
|
<div className="flex items-center gap-4">
|
|
735
|
-
<GripVerticalIcon className="animate-wiggle h-6 w-6
|
|
759
|
+
<GripVerticalIcon className="animate-wiggle text-fm-secondary-600 h-6 w-6" />
|
|
736
760
|
<div>
|
|
737
|
-
<div className="text-sm font-medium
|
|
761
|
+
<div className="text-fm-icon-active text-sm font-medium">
|
|
738
762
|
Wiggle Animation
|
|
739
763
|
</div>
|
|
740
|
-
<div className="text-
|
|
764
|
+
<div className="text-fm-tertiary text-xs">
|
|
741
765
|
Custom animation
|
|
742
766
|
</div>
|
|
743
767
|
</div>
|
|
@@ -746,11 +770,11 @@ function SortableItem() {
|
|
|
746
770
|
</div>
|
|
747
771
|
|
|
748
772
|
<div className="!space-y-4">
|
|
749
|
-
<h3 className="text-lg font-semibold
|
|
773
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
750
774
|
Cursor Styles
|
|
751
775
|
</h3>
|
|
752
|
-
<div className="rounded-lg
|
|
753
|
-
<pre className="overflow-x-auto text-sm
|
|
776
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
777
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
754
778
|
{`// Different cursor styles for grip icons
|
|
755
779
|
<GripVerticalIcon className="h-6 w-6 cursor-move " />
|
|
756
780
|
<GripVerticalIcon className="h-6 w-6 cursor-grab hover:cursor-grabbing " />
|
|
@@ -776,65 +800,65 @@ function SortableItem() {
|
|
|
776
800
|
|
|
777
801
|
{/* Accessibility */}
|
|
778
802
|
<div className="!space-y-8">
|
|
779
|
-
<h2 className="text-center text-3xl font-bold
|
|
803
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
780
804
|
Accessibility Features
|
|
781
805
|
</h2>
|
|
782
806
|
<div className="grid grid-cols-1 gap-8 md:grid-cols-2">
|
|
783
|
-
<div className="!space-y-4 rounded-lg border
|
|
784
|
-
<h3 className="text-lg font-semibold
|
|
807
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
808
|
+
<h3 className="text-fm-icon-positive! text-lg font-semibold">
|
|
785
809
|
✅ Built-in Features
|
|
786
810
|
</h3>
|
|
787
|
-
<ul className="!space-y-2 text-sm
|
|
788
|
-
<li className="
|
|
811
|
+
<ul className="text-fm-secondary! !space-y-2 text-sm">
|
|
812
|
+
<li className="text-fm-secondary!">
|
|
789
813
|
Uses Radix UI AccessibleIcon wrapper
|
|
790
814
|
</li>
|
|
791
|
-
<li className="
|
|
815
|
+
<li className="text-fm-secondary!">
|
|
792
816
|
Provides screen reader label "Grip Vertical icon"
|
|
793
817
|
</li>
|
|
794
|
-
<li className="
|
|
818
|
+
<li className="text-fm-secondary!">
|
|
795
819
|
Supports keyboard navigation when interactive
|
|
796
820
|
</li>
|
|
797
|
-
<li className="
|
|
821
|
+
<li className="text-fm-secondary!">
|
|
798
822
|
Maintains proper color contrast ratios
|
|
799
823
|
</li>
|
|
800
|
-
<li className="
|
|
824
|
+
<li className="text-fm-secondary!">
|
|
801
825
|
Scales with user's font size preferences
|
|
802
826
|
</li>
|
|
803
827
|
</ul>
|
|
804
828
|
</div>
|
|
805
829
|
|
|
806
|
-
<div className="!space-y-4 rounded-lg border
|
|
807
|
-
<h3 className="text-lg font-semibold
|
|
830
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
|
|
831
|
+
<h3 className="!text-fm-secondary text-lg font-semibold">
|
|
808
832
|
💡 Best Practices
|
|
809
833
|
</h3>
|
|
810
|
-
<ul className="!space-y-2 text-sm
|
|
811
|
-
<li className="
|
|
834
|
+
<ul className="text-fm-secondary !space-y-2 text-sm">
|
|
835
|
+
<li className="text-fm-secondary!">
|
|
812
836
|
Always wrap in focusable elements (button, div with
|
|
813
837
|
tabIndex)
|
|
814
838
|
</li>
|
|
815
|
-
<li className="
|
|
839
|
+
<li className="text-fm-secondary!">
|
|
816
840
|
Provide clear ARIA labels explaining drag functionality
|
|
817
841
|
</li>
|
|
818
|
-
<li className="
|
|
842
|
+
<li className="text-fm-secondary!">
|
|
819
843
|
Include keyboard instructions for reordering
|
|
820
844
|
</li>
|
|
821
|
-
<li className="
|
|
845
|
+
<li className="text-fm-secondary!">
|
|
822
846
|
Use appropriate cursor styles (cursor-move, cursor-grab)
|
|
823
847
|
</li>
|
|
824
|
-
<li className="
|
|
848
|
+
<li className="text-fm-secondary!">
|
|
825
849
|
Ensure sufficient touch target size (minimum 44px)
|
|
826
850
|
</li>
|
|
827
851
|
</ul>
|
|
828
852
|
</div>
|
|
829
853
|
</div>
|
|
830
854
|
|
|
831
|
-
<div className="rounded-lg border
|
|
832
|
-
<h3 className="mb-4 text-lg font-semibold
|
|
855
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
|
|
856
|
+
<h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
|
|
833
857
|
Proper ARIA Implementation
|
|
834
858
|
</h3>
|
|
835
859
|
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
|
|
836
|
-
<div className="rounded-lg
|
|
837
|
-
<pre className="overflow-x-auto text-sm
|
|
860
|
+
<div className="bg-fm-surface-secondary rounded-lg p-4">
|
|
861
|
+
<pre className="text-fm-icon-info! overflow-x-auto text-sm">
|
|
838
862
|
{`// Keyboard accessible drag handle
|
|
839
863
|
<button
|
|
840
864
|
aria-label="Reorder item - use arrow keys to move"
|
|
@@ -861,13 +885,13 @@ function SortableItem() {
|
|
|
861
885
|
</pre>
|
|
862
886
|
</div>
|
|
863
887
|
<div className="!space-y-4">
|
|
864
|
-
<p className="text-
|
|
888
|
+
<p className="text-fm-secondary! text-sm">
|
|
865
889
|
When using GripVerticalIcon for interactive reordering,
|
|
866
890
|
provide keyboard alternatives and clear instructions for
|
|
867
891
|
screen reader users.
|
|
868
892
|
</p>
|
|
869
|
-
<div className="
|
|
870
|
-
<div className="flex items-center gap-2 text-sm
|
|
893
|
+
<div className="border-fm-divider-secondary bg-fm-surface-tertiary/10 rounded-lg border p-4">
|
|
894
|
+
<div className="text-fm-secondary flex items-center gap-2 text-sm">
|
|
871
895
|
<GripVerticalIcon className="h-4 w-4" />
|
|
872
896
|
<span>
|
|
873
897
|
Screen readers announce "Grip Vertical icon" for
|
|
@@ -882,52 +906,58 @@ function SortableItem() {
|
|
|
882
906
|
|
|
883
907
|
{/* Related Icons */}
|
|
884
908
|
<div className="!space-y-8">
|
|
885
|
-
<h2 className="text-center text-3xl font-bold
|
|
909
|
+
<h2 className="text-fm-icon-active! text-center text-3xl font-bold">
|
|
886
910
|
Related Icons
|
|
887
911
|
</h2>
|
|
888
912
|
<div className="grid grid-cols-2 gap-6 md:grid-cols-4">
|
|
889
|
-
<div className="!space-y-3 rounded-lg border
|
|
890
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
891
|
-
<span className="
|
|
913
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
914
|
+
<div className="bg-fm-surface-tertiary/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
915
|
+
<span className="text-fm-icon-active! !text-2xl">⋮⋮</span>
|
|
892
916
|
</div>
|
|
893
917
|
<div>
|
|
894
|
-
<div className="font-medium
|
|
918
|
+
<div className="text-fm-icon-active font-medium">
|
|
895
919
|
GripHorizontalIcon
|
|
896
920
|
</div>
|
|
897
|
-
<div className="text-
|
|
921
|
+
<div className="text-fm-tertiary text-xs">
|
|
898
922
|
Horizontal movement
|
|
899
923
|
</div>
|
|
900
924
|
</div>
|
|
901
925
|
</div>
|
|
902
|
-
<div className="!space-y-3 rounded-lg border
|
|
903
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
926
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
927
|
+
<div className="bg-fm-icon-info/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
904
928
|
<span className="text-2xl">↕️</span>
|
|
905
929
|
</div>
|
|
906
930
|
<div>
|
|
907
|
-
<div className="font-medium
|
|
908
|
-
|
|
931
|
+
<div className="text-fm-icon-active font-medium">
|
|
932
|
+
MoveIcon
|
|
933
|
+
</div>
|
|
934
|
+
<div className="text-fm-tertiary text-xs">
|
|
909
935
|
All directions
|
|
910
936
|
</div>
|
|
911
937
|
</div>
|
|
912
938
|
</div>
|
|
913
|
-
<div className="!space-y-3 rounded-lg border
|
|
914
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
939
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
940
|
+
<div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
915
941
|
<span className="text-2xl">⤴️</span>
|
|
916
942
|
</div>
|
|
917
943
|
<div>
|
|
918
|
-
<div className="font-medium
|
|
919
|
-
|
|
944
|
+
<div className="text-fm-icon-active font-medium">
|
|
945
|
+
DragIcon
|
|
946
|
+
</div>
|
|
947
|
+
<div className="text-fm-tertiary text-xs">
|
|
920
948
|
Drag operations
|
|
921
949
|
</div>
|
|
922
950
|
</div>
|
|
923
951
|
</div>
|
|
924
|
-
<div className="!space-y-3 rounded-lg border
|
|
925
|
-
<div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg
|
|
952
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
|
|
953
|
+
<div className="bg-fm-secondary-500/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
|
|
926
954
|
<span className="text-2xl">⚡</span>
|
|
927
955
|
</div>
|
|
928
956
|
<div>
|
|
929
|
-
<div className="font-medium
|
|
930
|
-
|
|
957
|
+
<div className="text-fm-icon-active font-medium">
|
|
958
|
+
SortIcon
|
|
959
|
+
</div>
|
|
960
|
+
<div className="text-fm-tertiary text-xs">
|
|
931
961
|
Sorting controls
|
|
932
962
|
</div>
|
|
933
963
|
</div>
|
|
@@ -937,14 +967,14 @@ function SortableItem() {
|
|
|
937
967
|
</div>
|
|
938
968
|
|
|
939
969
|
{/* Footer */}
|
|
940
|
-
<div className="border-
|
|
970
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
|
|
941
971
|
<div className="!mx-auto max-w-7xl px-6 py-8">
|
|
942
972
|
<div className="!space-y-4 text-center">
|
|
943
|
-
<p className="
|
|
973
|
+
<p className="text-fm-tertiary!">
|
|
944
974
|
GripVerticalIcon is part of the Aural UI icon library, built
|
|
945
975
|
with drag-and-drop interactions and accessibility in mind.
|
|
946
976
|
</p>
|
|
947
|
-
<p className="text-
|
|
977
|
+
<p className="text-fm-placeholder! text-sm">
|
|
948
978
|
All icons use Radix UI's AccessibleIcon for screen reader
|
|
949
979
|
compatibility and follow WCAG guidelines for interactive
|
|
950
980
|
elements.
|
|
@@ -998,20 +1028,20 @@ const storyParameters = {
|
|
|
998
1028
|
backgrounds: {
|
|
999
1029
|
default: "dark",
|
|
1000
1030
|
values: [
|
|
1001
|
-
{ name: "dark", value: "
|
|
1002
|
-
{ name: "darker", value: "
|
|
1031
|
+
{ name: "dark", value: "var(--color-fm-surface-primary)" },
|
|
1032
|
+
{ name: "darker", value: "var(--color-fm-neutral-0)" },
|
|
1003
1033
|
],
|
|
1004
1034
|
},
|
|
1005
1035
|
}
|
|
1006
1036
|
|
|
1007
1037
|
export const Default: Story = {
|
|
1008
1038
|
args: {
|
|
1009
|
-
className: "h-6 w-6 text-
|
|
1039
|
+
className: "h-6 w-6 text-fm-placeholder ",
|
|
1010
1040
|
withAccessibility: true,
|
|
1011
1041
|
},
|
|
1012
1042
|
parameters: storyParameters,
|
|
1013
1043
|
render: (args) => (
|
|
1014
|
-
<div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1044
|
+
<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">
|
|
1015
1045
|
<GripVerticalIcon {...args} />
|
|
1016
1046
|
</div>
|
|
1017
1047
|
),
|
|
@@ -1028,30 +1058,30 @@ export const SizeVariations: Story = {
|
|
|
1028
1058
|
},
|
|
1029
1059
|
},
|
|
1030
1060
|
render: () => (
|
|
1031
|
-
<div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-
|
|
1061
|
+
<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">
|
|
1032
1062
|
<div className="text-center">
|
|
1033
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-3 w-3
|
|
1034
|
-
<span className="text-
|
|
1063
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-3 w-3" />
|
|
1064
|
+
<span className="text-fm-tertiary text-xs">12px</span>
|
|
1035
1065
|
</div>
|
|
1036
1066
|
<div className="text-center">
|
|
1037
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-4 w-4
|
|
1038
|
-
<span className="text-
|
|
1067
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-4 w-4" />
|
|
1068
|
+
<span className="text-fm-tertiary text-xs">16px</span>
|
|
1039
1069
|
</div>
|
|
1040
1070
|
<div className="text-center">
|
|
1041
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-5 w-5
|
|
1042
|
-
<span className="text-
|
|
1071
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-5 w-5" />
|
|
1072
|
+
<span className="text-fm-tertiary text-xs">20px</span>
|
|
1043
1073
|
</div>
|
|
1044
1074
|
<div className="text-center">
|
|
1045
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-6 w-6
|
|
1046
|
-
<span className="text-
|
|
1075
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-6 w-6" />
|
|
1076
|
+
<span className="text-fm-tertiary text-xs">24px</span>
|
|
1047
1077
|
</div>
|
|
1048
1078
|
<div className="text-center">
|
|
1049
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-8 w-8
|
|
1050
|
-
<span className="text-
|
|
1079
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-8 w-8" />
|
|
1080
|
+
<span className="text-fm-tertiary text-xs">32px</span>
|
|
1051
1081
|
</div>
|
|
1052
1082
|
<div className="text-center">
|
|
1053
|
-
<GripVerticalIcon className="!mx-auto mb-2 h-12 w-12
|
|
1054
|
-
<span className="text-
|
|
1083
|
+
<GripVerticalIcon className="text-fm-placeholder !mx-auto mb-2 h-12 w-12" />
|
|
1084
|
+
<span className="text-fm-tertiary text-xs">48px</span>
|
|
1055
1085
|
</div>
|
|
1056
1086
|
</div>
|
|
1057
1087
|
),
|
|
@@ -1068,34 +1098,36 @@ export const ColorVariations: Story = {
|
|
|
1068
1098
|
},
|
|
1069
1099
|
},
|
|
1070
1100
|
render: () => (
|
|
1071
|
-
<div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-
|
|
1101
|
+
<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">
|
|
1072
1102
|
<div className="text-center">
|
|
1073
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1074
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1103
|
+
<div className="border-fm-divider-primary bg-fm-surface-tertiary/20 !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1104
|
+
<GripVerticalIcon className="text-fm-placeholder h-8 w-8" />
|
|
1075
1105
|
</div>
|
|
1076
|
-
<div className="text-sm font-medium
|
|
1077
|
-
<div className="text-
|
|
1106
|
+
<div className="text-fm-icon-active text-sm font-medium">Default</div>
|
|
1107
|
+
<div className="text-fm-placeholder text-xs">text-fm-placeholder</div>
|
|
1078
1108
|
</div>
|
|
1079
1109
|
<div className="text-center">
|
|
1080
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1081
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1110
|
+
<div className="border-fm-divider-primary bg-fm-divider-primary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1111
|
+
<GripVerticalIcon className="text-fm-placeholder h-8 w-8" />
|
|
1082
1112
|
</div>
|
|
1083
|
-
<div className="text-sm font-medium
|
|
1084
|
-
<div className="text-
|
|
1113
|
+
<div className="text-fm-icon-active text-sm font-medium">Muted</div>
|
|
1114
|
+
<div className="text-fm-placeholder text-xs">text-fm-placeholder</div>
|
|
1085
1115
|
</div>
|
|
1086
1116
|
<div className="text-center">
|
|
1087
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1088
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1117
|
+
<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">
|
|
1118
|
+
<GripVerticalIcon className="text-fm-icon-info h-8 w-8" />
|
|
1089
1119
|
</div>
|
|
1090
|
-
<div className="text-sm font-medium
|
|
1091
|
-
<div className="text-
|
|
1120
|
+
<div className="text-fm-icon-active text-sm font-medium">Primary</div>
|
|
1121
|
+
<div className="text-fm-icon-info text-xs">text-fm-icon-info</div>
|
|
1092
1122
|
</div>
|
|
1093
1123
|
<div className="text-center">
|
|
1094
|
-
<div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border
|
|
1095
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1124
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border">
|
|
1125
|
+
<GripVerticalIcon className="text-fm-icon-active/30 h-8 w-8" />
|
|
1126
|
+
</div>
|
|
1127
|
+
<div className="text-fm-icon-active text-sm font-medium">Disabled</div>
|
|
1128
|
+
<div className="text-fm-icon-active/30 text-xs">
|
|
1129
|
+
text-fm-icon-active/30
|
|
1096
1130
|
</div>
|
|
1097
|
-
<div className="text-sm font-medium text-white">Disabled</div>
|
|
1098
|
-
<div className="text-xs text-white/30">text-white/30</div>
|
|
1099
1131
|
</div>
|
|
1100
1132
|
</div>
|
|
1101
1133
|
),
|
|
@@ -1112,20 +1144,26 @@ export const UsageExamples: Story = {
|
|
|
1112
1144
|
},
|
|
1113
1145
|
},
|
|
1114
1146
|
render: () => (
|
|
1115
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1147
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1116
1148
|
{/* Sortable List */}
|
|
1117
1149
|
<div className="!space-y-2">
|
|
1118
|
-
<h3 className="text-sm font-medium
|
|
1119
|
-
|
|
1150
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1151
|
+
Sortable List
|
|
1152
|
+
</h3>
|
|
1153
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
|
|
1120
1154
|
<div className="!space-y-2">
|
|
1121
1155
|
{["First Task", "Second Task", "Third Task"].map((task, index) => (
|
|
1122
1156
|
<div
|
|
1123
1157
|
key={index}
|
|
1124
|
-
className="flex items-center gap-3 rounded border
|
|
1158
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary flex items-center gap-3 rounded border p-3 transition-colors"
|
|
1125
1159
|
>
|
|
1126
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
1127
|
-
<span className="flex-1 text-sm
|
|
1128
|
-
|
|
1160
|
+
<GripVerticalIcon className="text-fm-placeholder hover:text-fm-secondary h-4 w-4 cursor-move transition-colors" />
|
|
1161
|
+
<span className="text-fm-icon-active flex-1 text-sm">
|
|
1162
|
+
{task}
|
|
1163
|
+
</span>
|
|
1164
|
+
<span className="text-fm-placeholder text-xs">
|
|
1165
|
+
#{index + 1}
|
|
1166
|
+
</span>
|
|
1129
1167
|
</div>
|
|
1130
1168
|
))}
|
|
1131
1169
|
</div>
|
|
@@ -1134,18 +1172,24 @@ export const UsageExamples: Story = {
|
|
|
1134
1172
|
|
|
1135
1173
|
{/* Draggable Cards */}
|
|
1136
1174
|
<div className="!space-y-2">
|
|
1137
|
-
<h3 className="text-sm font-medium
|
|
1175
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1176
|
+
Draggable Cards
|
|
1177
|
+
</h3>
|
|
1138
1178
|
<div className="grid grid-cols-1 gap-4 md:grid-cols-2">
|
|
1139
1179
|
{["Project Alpha", "Project Beta"].map((project, index) => (
|
|
1140
1180
|
<div
|
|
1141
1181
|
key={index}
|
|
1142
|
-
className="relative rounded-lg border
|
|
1182
|
+
className="border-fm-divider-secondary bg-fm-surface-secondary hover:bg-fm-surface-secondary relative rounded-lg border p-4 transition-colors"
|
|
1143
1183
|
>
|
|
1144
1184
|
<div className="absolute top-3 right-3">
|
|
1145
|
-
<GripVerticalIcon className="h-4 w-4 cursor-move
|
|
1185
|
+
<GripVerticalIcon className="text-fm-icon-active/30 hover:text-fm-tertiary h-4 w-4 cursor-move transition-colors" />
|
|
1146
1186
|
</div>
|
|
1147
|
-
<h5 className="mb-2 text-sm font-medium
|
|
1148
|
-
|
|
1187
|
+
<h5 className="text-fm-icon-active mb-2 text-sm font-medium">
|
|
1188
|
+
{project}
|
|
1189
|
+
</h5>
|
|
1190
|
+
<p className="text-fm-tertiary text-xs">
|
|
1191
|
+
Drag to reorder this card
|
|
1192
|
+
</p>
|
|
1149
1193
|
</div>
|
|
1150
1194
|
))}
|
|
1151
1195
|
</div>
|
|
@@ -1153,15 +1197,17 @@ export const UsageExamples: Story = {
|
|
|
1153
1197
|
|
|
1154
1198
|
{/* Menu Items */}
|
|
1155
1199
|
<div className="!space-y-2">
|
|
1156
|
-
<h3 className="text-sm font-medium
|
|
1157
|
-
|
|
1200
|
+
<h3 className="text-fm-icon-active text-sm font-medium">
|
|
1201
|
+
Reorderable Menu
|
|
1202
|
+
</h3>
|
|
1203
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary max-w-xs rounded-lg border p-2">
|
|
1158
1204
|
{["Dashboard", "Projects", "Settings"].map((item, index) => (
|
|
1159
1205
|
<div
|
|
1160
1206
|
key={index}
|
|
1161
|
-
className="flex cursor-pointer items-center gap-3 rounded p-2 transition-colors
|
|
1207
|
+
className="hover:bg-fm-surface-secondary flex cursor-pointer items-center gap-3 rounded p-2 transition-colors"
|
|
1162
1208
|
>
|
|
1163
|
-
<GripVerticalIcon className="h-3 w-3 cursor-move
|
|
1164
|
-
<span className="flex-1 text-sm
|
|
1209
|
+
<GripVerticalIcon className="text-fm-icon-active/30 h-3 w-3 cursor-move" />
|
|
1210
|
+
<span className="text-fm-icon-active flex-1 text-sm">{item}</span>
|
|
1165
1211
|
</div>
|
|
1166
1212
|
))}
|
|
1167
1213
|
</div>
|
|
@@ -1181,39 +1227,39 @@ export const InteractiveStates: Story = {
|
|
|
1181
1227
|
},
|
|
1182
1228
|
},
|
|
1183
1229
|
render: () => (
|
|
1184
|
-
<div className="min-h-dvh !space-y-8 rounded-lg bg-
|
|
1230
|
+
<div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
|
|
1185
1231
|
<div className="!space-y-4">
|
|
1186
|
-
<h3 className="text-sm font-medium
|
|
1232
|
+
<h3 className="text-fm-secondary text-sm font-medium">Hover Effects</h3>
|
|
1187
1233
|
<div className="flex gap-8">
|
|
1188
1234
|
<div className="flex flex-col items-center gap-2">
|
|
1189
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1190
|
-
<span className="text-
|
|
1235
|
+
<GripVerticalIcon className="text-fm-tertiary hover:text-fm-icon-active h-8 w-8 transition-colors" />
|
|
1236
|
+
<span className="text-fm-tertiary text-xs">Color Change</span>
|
|
1191
1237
|
</div>
|
|
1192
1238
|
<div className="flex flex-col items-center gap-2">
|
|
1193
|
-
<GripVerticalIcon className="h-8 w-8
|
|
1194
|
-
<span className="text-
|
|
1239
|
+
<GripVerticalIcon className="text-fm-icon-active h-8 w-8 transition-transform hover:scale-110" />
|
|
1240
|
+
<span className="text-fm-tertiary text-xs">Scale Up</span>
|
|
1195
1241
|
</div>
|
|
1196
1242
|
<div className="flex flex-col items-center gap-2">
|
|
1197
|
-
<GripVerticalIcon className="animate-wiggle h-8 w-8
|
|
1198
|
-
<span className="text-
|
|
1243
|
+
<GripVerticalIcon className="animate-wiggle text-fm-secondary-600 h-8 w-8" />
|
|
1244
|
+
<span className="text-fm-tertiary text-xs">Wiggle Animation</span>
|
|
1199
1245
|
</div>
|
|
1200
1246
|
</div>
|
|
1201
1247
|
</div>
|
|
1202
1248
|
|
|
1203
1249
|
<div className="!space-y-4">
|
|
1204
|
-
<h3 className="text-sm font-medium
|
|
1250
|
+
<h3 className="text-fm-secondary text-sm font-medium">Cursor States</h3>
|
|
1205
1251
|
<div className="flex gap-8">
|
|
1206
1252
|
<div className="flex flex-col items-center gap-2">
|
|
1207
|
-
<GripVerticalIcon className="h-8 w-8 cursor-move
|
|
1208
|
-
<span className="text-
|
|
1253
|
+
<GripVerticalIcon className="text-fm-icon-active h-8 w-8 cursor-move" />
|
|
1254
|
+
<span className="text-fm-tertiary text-xs">cursor-move</span>
|
|
1209
1255
|
</div>
|
|
1210
1256
|
<div className="flex flex-col items-center gap-2">
|
|
1211
|
-
<GripVerticalIcon className="h-8 w-8 cursor-grab
|
|
1212
|
-
<span className="text-
|
|
1257
|
+
<GripVerticalIcon className="text-fm-icon-active h-8 w-8 cursor-grab hover:cursor-grabbing" />
|
|
1258
|
+
<span className="text-fm-tertiary text-xs">cursor-grab</span>
|
|
1213
1259
|
</div>
|
|
1214
1260
|
<div className="flex flex-col items-center gap-2">
|
|
1215
|
-
<GripVerticalIcon className="h-8 w-8 cursor-ns-resize
|
|
1216
|
-
<span className="text-
|
|
1261
|
+
<GripVerticalIcon className="text-fm-icon-active h-8 w-8 cursor-ns-resize" />
|
|
1262
|
+
<span className="text-fm-tertiary text-xs">cursor-ns-resize</span>
|
|
1217
1263
|
</div>
|
|
1218
1264
|
</div>
|
|
1219
1265
|
</div>
|
|
@@ -1234,12 +1280,12 @@ export const Playground: Story = {
|
|
|
1234
1280
|
args: {
|
|
1235
1281
|
width: 32,
|
|
1236
1282
|
height: 32,
|
|
1237
|
-
className: "text-
|
|
1283
|
+
className: "text-fm-placeholder cursor-move ",
|
|
1238
1284
|
strokeWidth: 2,
|
|
1239
1285
|
},
|
|
1240
1286
|
render: (args) => (
|
|
1241
|
-
<div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-
|
|
1242
|
-
<div className="rounded-lg border
|
|
1287
|
+
<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">
|
|
1288
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
|
|
1243
1289
|
<GripVerticalIcon {...args} />
|
|
1244
1290
|
</div>
|
|
1245
1291
|
</div>
|