aural-ui 4.0.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1228
- package/dist/components/avatar/Avatar.stories.tsx +219 -235
- package/dist/components/badge/Badge.stories.tsx +379 -116
- package/dist/components/banner/Banner.stories.tsx +445 -391
- package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
- package/dist/components/button/Button.stories.tsx +585 -230
- package/dist/components/card/Card.stories.tsx +619 -301
- package/dist/components/char-count/CharCount.stories.tsx +350 -248
- package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
- package/dist/components/chip/Chip.stories.tsx +362 -168
- package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -636
- package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
- package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
- package/dist/components/command/Command.stories.tsx +530 -867
- package/dist/components/dialog/Dialog.stories.tsx +501 -950
- package/dist/components/divider/Divider.stories.tsx +264 -527
- package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
- package/dist/components/drawer/Drawer.stories.tsx +659 -1023
- package/dist/components/dropdown/Dropdown.stories.tsx +643 -1028
- package/dist/components/form/Form.stories.tsx +560 -274
- package/dist/components/helper-text/HelperText.stories.tsx +199 -200
- package/dist/components/hover-card/HoverCard.stories.tsx +318 -1254
- package/dist/components/icon-button/IconButton.stories.tsx +837 -194
- package/dist/components/if-else/if-else.stories.tsx +370 -83
- package/dist/components/input/Input.stories.tsx +436 -368
- package/dist/components/label/Label.stories.tsx +156 -154
- package/dist/components/list/List.stories.tsx +484 -835
- package/dist/components/marquee/Marquee.stories.tsx +356 -712
- package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -422
- package/dist/components/overlay/Overlay.stories.tsx +452 -824
- package/dist/components/pagination/Pagination.stories.tsx +721 -210
- package/dist/components/popover/Popover.stories.tsx +481 -896
- package/dist/components/radio/Radio.stories.tsx +432 -124
- package/dist/components/resizable/Resizable.stories.tsx +495 -799
- package/dist/components/scroll-area/ScrollArea.stories.tsx +383 -1059
- package/dist/components/search/Search.stories.tsx +312 -595
- package/dist/components/select/Select.stories.tsx +684 -789
- package/dist/components/sheet/Sheet.stories.tsx +671 -950
- package/dist/components/skelton/Skelton.stories.tsx +230 -764
- package/dist/components/slider/Slider.stories.tsx +383 -760
- package/dist/components/stepper/Stepper.stories.tsx +371 -514
- package/dist/components/switch/Switch.stories.tsx +461 -208
- package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
- package/dist/components/table/Table.stories.tsx +770 -916
- package/dist/components/tabs/Tabs.stories.tsx +458 -1455
- package/dist/components/tag/Tag.stories.tsx +714 -542
- package/dist/components/textarea/TextArea.stories.tsx +621 -562
- package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -154
- package/dist/components/toast/Toast.stories.tsx +452 -1339
- package/dist/components/toggle/Toggle.stories.tsx +488 -931
- package/dist/components/tooltip/Tooltip.stories.tsx +344 -1388
- package/dist/components/typography/Typography.stories.tsx +406 -89
- package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
- package/dist/icons/Icons.stories.tsx +0 -12
- package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +223 -1060
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +106 -968
- package/dist/icons/all-icons.tsx +37 -16
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +137 -1010
- package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +145 -935
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +132 -1046
- package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +134 -986
- package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +135 -1028
- package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +133 -971
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +145 -1123
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +143 -1252
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +123 -632
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +141 -1223
- package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +164 -1018
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +121 -1236
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +121 -1213
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +116 -893
- package/dist/icons/camera-icon/CameraIcon.stories.tsx +109 -1254
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +114 -975
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +157 -994
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +160 -992
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +140 -970
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +126 -993
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +144 -987
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +141 -1007
- package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +147 -1187
- package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +110 -476
- package/dist/icons/coin-icon/CoinIcon.stories.tsx +120 -1364
- package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +113 -1360
- package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +111 -942
- package/dist/icons/command-icon/CommandIcon.stories.tsx +124 -1087
- package/dist/icons/copy-icon/CopyIcon.stories.tsx +119 -996
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +144 -1046
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +136 -999
- package/dist/icons/download-icon/DownloadIcon.stories.tsx +123 -857
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +121 -1080
- package/dist/icons/email-icon/EmailIcon.stories.tsx +112 -979
- package/dist/icons/expand-icon/ExpandIcon.stories.tsx +109 -1146
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +141 -1068
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +140 -1081
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +124 -1050
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +123 -1091
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +122 -633
- package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +116 -1087
- package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +166 -1020
- package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +112 -1182
- package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +112 -1155
- package/dist/icons/globe-icon/GlobeIcon.stories.tsx +127 -325
- package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +142 -985
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +116 -1217
- package/dist/icons/head-icon/HeadIcon.stories.tsx +108 -953
- package/dist/icons/heart-icon/HeartIcon.stories.tsx +117 -1060
- package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +116 -716
- package/dist/icons/image-icon/ImageIcon.stories.tsx +102 -1164
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +108 -1233
- package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +133 -1289
- package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +155 -1012
- package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +158 -1438
- package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +121 -1011
- package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +116 -981
- package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +116 -979
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +105 -1252
- package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +151 -1554
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +107 -1227
- package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +116 -707
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +119 -1226
- package/dist/icons/message-icon/MessageIcon.stories.tsx +111 -557
- package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +112 -1198
- package/dist/icons/moon-icon/MoonIcon.stories.tsx +117 -557
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +106 -1235
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +112 -1185
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +116 -1012
- package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +108 -1137
- package/dist/icons/notes-icon/NotesIcon.stories.tsx +116 -1138
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +106 -1146
- package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +119 -719
- package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +110 -999
- package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +109 -912
- package/dist/icons/pause-icon/PauseIcon.stories.tsx +110 -1041
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +112 -1109
- package/dist/icons/phone-icon/PhoneIcon.stories.tsx +112 -1023
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +103 -1132
- package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +104 -870
- package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +99 -476
- package/dist/icons/search-icon/SearchIcon.stories.tsx +108 -1161
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +104 -1009
- package/dist/icons/share-icon/ShareIcon.stories.tsx +117 -1064
- package/dist/icons/shield-icon/ShieldIcon.stories.tsx +114 -974
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +134 -1160
- package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +169 -1017
- package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +161 -1016
- package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +102 -1001
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +155 -593
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +155 -608
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +142 -712
- package/dist/icons/star-icon/StarIcon.stories.tsx +120 -946
- package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +109 -1013
- package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +113 -891
- package/dist/icons/sun-icon/SunIcon.stories.tsx +117 -864
- package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +113 -989
- package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +120 -1027
- package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +153 -1476
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +143 -1187
- package/dist/icons/tick-icon/TickIcon.stories.tsx +142 -1322
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +105 -970
- package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +154 -1457
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +112 -930
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +115 -1019
- package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +122 -1092
- package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +120 -1401
- package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +107 -1212
- package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +109 -1122
- package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +112 -1124
- package/dist/icons/warning-icon/WarningIcon.stories.tsx +119 -1083
- package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +158 -983
- package/dist/index.cjs +90 -90
- package/dist/index.js +90 -90
- package/package.json +8 -3
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/react-vite"
|
|
3
3
|
|
|
4
|
+
import { AuralComponentDocsPage } from "src/ui/story-spec/components/component-story-docs-page"
|
|
5
|
+
|
|
4
6
|
import HelperText from "."
|
|
5
7
|
|
|
6
8
|
const meta: Meta<typeof HelperText> = {
|
|
@@ -8,12 +10,29 @@ const meta: Meta<typeof HelperText> = {
|
|
|
8
10
|
component: HelperText,
|
|
9
11
|
parameters: {
|
|
10
12
|
layout: "centered",
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
docs: {
|
|
14
|
+
description: {
|
|
15
|
+
component:
|
|
16
|
+
"A form helper text component that communicates field-level feedback in four semantic variants — default, error, warning, and success — plus a disabled state. It uses the Tag primitive internally and integrates with ARIA via the id prop.",
|
|
17
|
+
},
|
|
18
|
+
page: () => (
|
|
19
|
+
<AuralComponentDocsPage
|
|
20
|
+
features={[
|
|
21
|
+
{
|
|
22
|
+
title: "4 Semantic Variants",
|
|
23
|
+
description: "Default to success",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
title: "Disabled State",
|
|
27
|
+
description: "Muted disabled style",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: "ARIA Integration",
|
|
31
|
+
description: "Links via aria-describedby",
|
|
32
|
+
},
|
|
33
|
+
]}
|
|
34
|
+
/>
|
|
35
|
+
),
|
|
17
36
|
},
|
|
18
37
|
},
|
|
19
38
|
tags: ["autodocs"],
|
|
@@ -38,7 +57,7 @@ const meta: Meta<typeof HelperText> = {
|
|
|
38
57
|
},
|
|
39
58
|
id: {
|
|
40
59
|
control: { type: "text" },
|
|
41
|
-
description: "HTML id attribute for accessibility",
|
|
60
|
+
description: "HTML id attribute for accessibility (aria-describedby)",
|
|
42
61
|
},
|
|
43
62
|
},
|
|
44
63
|
}
|
|
@@ -46,216 +65,196 @@ const meta: Meta<typeof HelperText> = {
|
|
|
46
65
|
export default meta
|
|
47
66
|
type Story = StoryObj<typeof meta>
|
|
48
67
|
|
|
49
|
-
|
|
50
|
-
args: {
|
|
51
|
-
variant: "default",
|
|
52
|
-
children: "This is helpful information about the field above.",
|
|
53
|
-
disabled: false,
|
|
54
|
-
},
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export const Error: Story = {
|
|
58
|
-
args: {
|
|
59
|
-
variant: "error",
|
|
60
|
-
children: "This field contains an error that needs to be fixed.",
|
|
61
|
-
disabled: false,
|
|
62
|
-
},
|
|
63
|
-
}
|
|
68
|
+
// ─── 1. AllVariants ───────────────────────────────────────────────────────────
|
|
64
69
|
|
|
65
|
-
export const Warning: Story = {
|
|
66
|
-
args: {
|
|
67
|
-
variant: "warning",
|
|
68
|
-
children: "Please review this field before continuing.",
|
|
69
|
-
disabled: false,
|
|
70
|
-
},
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const Success: Story = {
|
|
74
|
-
args: {
|
|
75
|
-
variant: "success",
|
|
76
|
-
children: "This field has been validated successfully.",
|
|
77
|
-
disabled: false,
|
|
78
|
-
},
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export const Disabled: Story = {
|
|
82
|
-
args: {
|
|
83
|
-
variant: "default",
|
|
84
|
-
children: "This helper text is in a disabled state.",
|
|
85
|
-
disabled: true,
|
|
86
|
-
},
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export const LongText: Story = {
|
|
90
|
-
args: {
|
|
91
|
-
variant: "default",
|
|
92
|
-
children:
|
|
93
|
-
"This is a longer helper text that demonstrates how the component handles more extensive content that might wrap to multiple lines in certain layouts.",
|
|
94
|
-
disabled: false,
|
|
95
|
-
},
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export const WithCustomClassName: Story = {
|
|
99
|
-
args: {
|
|
100
|
-
variant: "default",
|
|
101
|
-
children: "Helper text with custom styling.",
|
|
102
|
-
className: "!text-blue-600 font-semibold",
|
|
103
|
-
disabled: false,
|
|
104
|
-
},
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Showcase all variants together
|
|
108
70
|
export const AllVariants: Story = {
|
|
109
71
|
render: () => (
|
|
110
|
-
<div className="
|
|
111
|
-
<div>
|
|
112
|
-
<
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
72
|
+
<div className="space-y-8">
|
|
73
|
+
<div className="space-y-4">
|
|
74
|
+
<h4 className="text-fm-secondary font-fm-text text-fm-md leading-fm-md font-medium">
|
|
75
|
+
Variants
|
|
76
|
+
</h4>
|
|
77
|
+
<div className="flex w-80 flex-col gap-4">
|
|
78
|
+
<div className="space-y-2 text-center">
|
|
79
|
+
<HelperText variant="default">
|
|
80
|
+
We will never share your email with anyone else.
|
|
81
|
+
</HelperText>
|
|
82
|
+
<p className="text-fm-secondary font-fm-text text-fm-sm leading-fm-sm">
|
|
83
|
+
Default
|
|
84
|
+
</p>
|
|
85
|
+
</div>
|
|
86
|
+
<div className="space-y-2 text-center">
|
|
87
|
+
<HelperText variant="error">
|
|
88
|
+
This field is required and cannot be empty.
|
|
89
|
+
</HelperText>
|
|
90
|
+
<p className="text-fm-secondary font-fm-text text-fm-sm leading-fm-sm">
|
|
91
|
+
Error
|
|
92
|
+
</p>
|
|
93
|
+
</div>
|
|
94
|
+
<div className="space-y-2 text-center">
|
|
95
|
+
<HelperText variant="warning">
|
|
96
|
+
This username may already be in use.
|
|
97
|
+
</HelperText>
|
|
98
|
+
<p className="text-fm-secondary font-fm-text text-fm-sm leading-fm-sm">
|
|
99
|
+
Warning
|
|
100
|
+
</p>
|
|
101
|
+
</div>
|
|
102
|
+
<div className="space-y-2 text-center">
|
|
103
|
+
<HelperText variant="success">
|
|
104
|
+
Your password meets all requirements.
|
|
105
|
+
</HelperText>
|
|
106
|
+
<p className="text-fm-secondary font-fm-text text-fm-sm leading-fm-sm">
|
|
107
|
+
Success
|
|
108
|
+
</p>
|
|
109
|
+
</div>
|
|
110
|
+
<div className="space-y-2 text-center">
|
|
111
|
+
<HelperText variant="default" disabled>
|
|
112
|
+
This field is not editable in read-only mode.
|
|
113
|
+
</HelperText>
|
|
114
|
+
<p className="text-fm-secondary font-fm-text text-fm-sm leading-fm-sm">
|
|
115
|
+
Disabled
|
|
116
|
+
</p>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
144
119
|
</div>
|
|
145
120
|
</div>
|
|
146
121
|
),
|
|
122
|
+
parameters: {
|
|
123
|
+
docs: {
|
|
124
|
+
description: {
|
|
125
|
+
story:
|
|
126
|
+
"All four semantic variants (default, error, warning, success) plus the disabled state, shown as individual itemCards.",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
147
130
|
}
|
|
148
131
|
|
|
149
|
-
//
|
|
150
|
-
export const WithFormField: Story = {
|
|
151
|
-
render: () => (
|
|
152
|
-
<div className="w-96 space-y-6">
|
|
153
|
-
<div>
|
|
154
|
-
<label className="mb-2 block text-sm font-medium">Email Address</label>
|
|
155
|
-
<input
|
|
156
|
-
type="email"
|
|
157
|
-
className="border-fm-divider-secondary w-full rounded-md border px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
158
|
-
placeholder="Enter your email"
|
|
159
|
-
/>
|
|
160
|
-
<div className="mt-1">
|
|
161
|
-
<HelperText variant="default">
|
|
162
|
-
We'll never share your email with anyone else.
|
|
163
|
-
</HelperText>
|
|
164
|
-
</div>
|
|
165
|
-
</div>
|
|
132
|
+
// ─── 2. UseCases ──────────────────────────────────────────────────────────────
|
|
166
133
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
<div className="
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
134
|
+
export const UseCases: Story = {
|
|
135
|
+
render: () => (
|
|
136
|
+
<div className="mx-auto max-w-3xl space-y-8 p-8">
|
|
137
|
+
<div className="space-y-4">
|
|
138
|
+
<h4 className="text-fm-secondary font-fm-text text-fm-md leading-fm-md font-medium">
|
|
139
|
+
Account Setup Form
|
|
140
|
+
</h4>
|
|
141
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary mx-auto max-w-md space-y-5 rounded-xl border p-6">
|
|
142
|
+
{/* Default — neutral hint */}
|
|
143
|
+
<div className="space-y-1">
|
|
144
|
+
<label
|
|
145
|
+
htmlFor="uc-email"
|
|
146
|
+
className="text-fm-primary font-fm-brand text-fm-sm leading-fm-sm font-medium tracking-wider uppercase"
|
|
147
|
+
>
|
|
148
|
+
Email Address
|
|
149
|
+
</label>
|
|
150
|
+
<input
|
|
151
|
+
id="uc-email"
|
|
152
|
+
type="email"
|
|
153
|
+
className="border-fm-divider-secondary bg-fm-surface-primary text-fm-primary placeholder:text-fm-tertiary w-full rounded-md border px-3 py-2 text-sm focus:outline-none"
|
|
154
|
+
placeholder="jane@example.com"
|
|
155
|
+
/>
|
|
156
|
+
<HelperText variant="default" id="uc-email-helper">
|
|
157
|
+
We will use this address for account-related notices only.
|
|
158
|
+
</HelperText>
|
|
159
|
+
</div>
|
|
180
160
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
161
|
+
{/* Error */}
|
|
162
|
+
<div className="space-y-1">
|
|
163
|
+
<label
|
|
164
|
+
htmlFor="uc-password"
|
|
165
|
+
className="text-fm-primary font-fm-brand text-fm-sm leading-fm-sm font-medium tracking-wider uppercase"
|
|
166
|
+
>
|
|
167
|
+
Password
|
|
168
|
+
</label>
|
|
169
|
+
<input
|
|
170
|
+
id="uc-password"
|
|
171
|
+
type="password"
|
|
172
|
+
className="border-fm-divider-negative bg-fm-surface-primary text-fm-primary placeholder:text-fm-tertiary w-full rounded-md border px-3 py-2 text-sm focus:outline-none"
|
|
173
|
+
placeholder="Min. 8 characters"
|
|
174
|
+
aria-describedby="uc-password-error"
|
|
175
|
+
aria-invalid="true"
|
|
176
|
+
/>
|
|
177
|
+
<HelperText variant="error" id="uc-password-error">
|
|
178
|
+
Password must be at least 8 characters long.
|
|
179
|
+
</HelperText>
|
|
180
|
+
</div>
|
|
195
181
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
182
|
+
{/* Warning */}
|
|
183
|
+
<div className="space-y-1">
|
|
184
|
+
<label
|
|
185
|
+
htmlFor="uc-username"
|
|
186
|
+
className="text-fm-primary font-fm-brand text-fm-sm leading-fm-sm font-medium tracking-wider uppercase"
|
|
187
|
+
>
|
|
188
|
+
Username
|
|
189
|
+
</label>
|
|
190
|
+
<input
|
|
191
|
+
id="uc-username"
|
|
192
|
+
type="text"
|
|
193
|
+
className="border-fm-divider-warning bg-fm-surface-primary text-fm-primary placeholder:text-fm-tertiary w-full rounded-md border px-3 py-2 text-sm focus:outline-none"
|
|
194
|
+
defaultValue="john123"
|
|
195
|
+
aria-describedby="uc-username-warning"
|
|
196
|
+
/>
|
|
197
|
+
<HelperText variant="warning" id="uc-username-warning">
|
|
198
|
+
This username is already taken. Try adding numbers or symbols.
|
|
199
|
+
</HelperText>
|
|
200
|
+
</div>
|
|
213
201
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<HelperText variant="default" id="email-helper">
|
|
234
|
-
We'll use this email to send you important account updates.
|
|
235
|
-
</HelperText>
|
|
202
|
+
{/* Success */}
|
|
203
|
+
<div className="space-y-1">
|
|
204
|
+
<label
|
|
205
|
+
htmlFor="uc-display-name"
|
|
206
|
+
className="text-fm-primary font-fm-brand text-fm-sm leading-fm-sm font-medium tracking-wider uppercase"
|
|
207
|
+
>
|
|
208
|
+
Display Name
|
|
209
|
+
</label>
|
|
210
|
+
<input
|
|
211
|
+
id="uc-display-name"
|
|
212
|
+
type="text"
|
|
213
|
+
className="border-fm-divider-positive bg-fm-surface-primary text-fm-primary placeholder:text-fm-tertiary w-full rounded-md border px-3 py-2 text-sm focus:outline-none"
|
|
214
|
+
defaultValue="Jane Doe"
|
|
215
|
+
aria-describedby="uc-display-name-success"
|
|
216
|
+
/>
|
|
217
|
+
<HelperText variant="success" id="uc-display-name-success">
|
|
218
|
+
This display name is available.
|
|
219
|
+
</HelperText>
|
|
220
|
+
</div>
|
|
236
221
|
</div>
|
|
237
222
|
</div>
|
|
238
223
|
|
|
239
|
-
<div>
|
|
240
|
-
<
|
|
241
|
-
|
|
242
|
-
</
|
|
243
|
-
<
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
224
|
+
<div className="space-y-4">
|
|
225
|
+
<h4 className="text-fm-secondary font-fm-text text-fm-md leading-fm-md font-medium">
|
|
226
|
+
Read-only Settings
|
|
227
|
+
</h4>
|
|
228
|
+
<div className="border-fm-divider-secondary bg-fm-surface-secondary mx-auto max-w-md space-y-5 rounded-xl border p-6">
|
|
229
|
+
<div className="space-y-1">
|
|
230
|
+
<label
|
|
231
|
+
htmlFor="uc-account-id"
|
|
232
|
+
className="text-fm-inactive font-fm-brand text-fm-sm leading-fm-sm font-medium tracking-wider uppercase"
|
|
233
|
+
>
|
|
234
|
+
Account ID
|
|
235
|
+
</label>
|
|
236
|
+
<input
|
|
237
|
+
id="uc-account-id"
|
|
238
|
+
type="text"
|
|
239
|
+
className="border-fm-divider-secondary bg-fm-surface-tertiary text-fm-tertiary w-full cursor-not-allowed rounded-md border px-3 py-2 text-sm"
|
|
240
|
+
value="ACC-0001-XYZ"
|
|
241
|
+
disabled
|
|
242
|
+
readOnly
|
|
243
|
+
/>
|
|
244
|
+
<HelperText variant="default" disabled id="uc-account-id-hint">
|
|
245
|
+
This field is managed by the system and cannot be changed.
|
|
246
|
+
</HelperText>
|
|
247
|
+
</div>
|
|
257
248
|
</div>
|
|
258
249
|
</div>
|
|
259
250
|
</div>
|
|
260
251
|
),
|
|
252
|
+
parameters: {
|
|
253
|
+
docs: {
|
|
254
|
+
description: {
|
|
255
|
+
story:
|
|
256
|
+
"HelperText paired with real form inputs in an account setup flow — all four variants and the disabled state shown in realistic product context with proper ARIA linkage.",
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
261
260
|
}
|