aural-ui 2.0.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/LICENSE +21 -0
- package/README.md +456 -0
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +1327 -0
- package/dist/components/aspect-ratio/index.tsx +10 -0
- package/dist/components/aspect-ratio/meta.ts +8 -0
- package/dist/components/avatar/Avatar.stories.tsx +645 -0
- package/dist/components/avatar/index.tsx +50 -0
- package/dist/components/avatar/meta.ts +8 -0
- package/dist/components/badge/Badge.stories.tsx +169 -0
- package/dist/components/badge/index.tsx +28 -0
- package/dist/components/badge/meta.ts +6 -0
- package/dist/components/banner/Banner.stories.tsx +475 -0
- package/dist/components/banner/index.tsx +256 -0
- package/dist/components/banner/meta.ts +36 -0
- package/dist/components/button/Button.stories.tsx +74 -0
- package/dist/components/button/index.tsx +158 -0
- package/dist/components/button/meta.ts +33 -0
- package/dist/components/card/Card.stories.tsx +377 -0
- package/dist/components/card/index.tsx +85 -0
- package/dist/components/card/meta.ts +14 -0
- package/dist/components/char-count/CharCount.stories.tsx +334 -0
- package/dist/components/char-count/index.tsx +51 -0
- package/dist/components/char-count/meta.ts +13 -0
- package/dist/components/checkbox/Checkbox.stories.tsx +209 -0
- package/dist/components/checkbox/index.tsx +34 -0
- package/dist/components/checkbox/meta.ts +19 -0
- package/dist/components/chip/Chip.stories.tsx +207 -0
- package/dist/components/chip/index.tsx +92 -0
- package/dist/components/chip/meta.ts +17 -0
- package/dist/components/circular-loader/CircularLoader.stories.tsx +741 -0
- package/dist/components/circular-loader/index.tsx +138 -0
- package/dist/components/circular-loader/meta.ts +11 -0
- package/dist/components/collapsible/Collapsible.stories.tsx +319 -0
- package/dist/components/collapsible/index.tsx +158 -0
- package/dist/components/collapsible/meta.ts +22 -0
- package/dist/components/command/Command.stories.tsx +996 -0
- package/dist/components/command/index.tsx +324 -0
- package/dist/components/command/meta.ts +18 -0
- package/dist/components/dialog/Dialog.stories.tsx +963 -0
- package/dist/components/dialog/index.tsx +250 -0
- package/dist/components/dialog/meta.ts +28 -0
- package/dist/components/divider/Divider.stories.tsx +633 -0
- package/dist/components/divider/index.tsx +181 -0
- package/dist/components/divider/meta.ts +12 -0
- package/dist/components/dot-loader/DotLoader.stories.tsx +352 -0
- package/dist/components/dot-loader/index.tsx +78 -0
- package/dist/components/dot-loader/meta.ts +14 -0
- package/dist/components/dropdown/Dropdown.stories.tsx +1210 -0
- package/dist/components/dropdown/index.tsx +479 -0
- package/dist/components/dropdown/meta.ts +21 -0
- package/dist/components/form/Form.stories.tsx +320 -0
- package/dist/components/form/index.tsx +183 -0
- package/dist/components/form/meta.ts +11 -0
- package/dist/components/helper-text/HelperText.stories.tsx +254 -0
- package/dist/components/helper-text/index.tsx +102 -0
- package/dist/components/helper-text/meta.ts +18 -0
- package/dist/components/hover-card/HoverCard.stories.tsx +1328 -0
- package/dist/components/hover-card/index.tsx +42 -0
- package/dist/components/hover-card/meta.ts +12 -0
- package/dist/components/icon-button/IconButton.stories.tsx +252 -0
- package/dist/components/icon-button/index.tsx +130 -0
- package/dist/components/icon-button/meta.ts +20 -0
- package/dist/components/if-else/if-else.stories.tsx +100 -0
- package/dist/components/if-else/index.tsx +56 -0
- package/dist/components/if-else/meta.ts +6 -0
- package/dist/components/index.ts +70 -0
- package/dist/components/input/Input.stories.tsx +431 -0
- package/dist/components/input/index.tsx +487 -0
- package/dist/components/input/meta.ts +28 -0
- package/dist/components/label/Label.stories.tsx +200 -0
- package/dist/components/label/index.tsx +43 -0
- package/dist/components/label/meta.ts +14 -0
- package/dist/components/list/List.stories.tsx +963 -0
- package/dist/components/list/index.tsx +567 -0
- package/dist/components/list/meta.ts +24 -0
- package/dist/components/marquee/Marquee.stories.tsx +819 -0
- package/dist/components/marquee/index.tsx +107 -0
- package/dist/components/marquee/meta.ts +6 -0
- package/dist/components/overlay/Overlay.stories.tsx +954 -0
- package/dist/components/overlay/index.tsx +58 -0
- package/dist/components/overlay/meta.ts +10 -0
- package/dist/components/pagination/Pagination.stories.tsx +354 -0
- package/dist/components/pagination/index.tsx +455 -0
- package/dist/components/pagination/meta.ts +29 -0
- package/dist/components/popover/Popover.stories.tsx +1037 -0
- package/dist/components/popover/index.tsx +67 -0
- package/dist/components/popover/meta.ts +12 -0
- package/dist/components/radio/Radio.stories.tsx +146 -0
- package/dist/components/radio/index.tsx +41 -0
- package/dist/components/radio/meta.ts +19 -0
- package/dist/components/resizable/Resizable.stories.tsx +866 -0
- package/dist/components/resizable/index.tsx +55 -0
- package/dist/components/resizable/meta.ts +12 -0
- package/dist/components/scroll-area/ScrollArea.stories.tsx +1104 -0
- package/dist/components/scroll-area/index.tsx +55 -0
- package/dist/components/scroll-area/meta.ts +8 -0
- package/dist/components/search/Search.stories.tsx +678 -0
- package/dist/components/search/index.tsx +141 -0
- package/dist/components/search/meta.ts +6 -0
- package/dist/components/select/Select.stories.tsx +962 -0
- package/dist/components/select/index.tsx +512 -0
- package/dist/components/select/meta.ts +40 -0
- package/dist/components/sheet/Sheet.stories.tsx +1060 -0
- package/dist/components/sheet/index.tsx +440 -0
- package/dist/components/sheet/meta.ts +38 -0
- package/dist/components/skelton/Skelton.stories.tsx +859 -0
- package/dist/components/skelton/index.tsx +17 -0
- package/dist/components/skelton/meta.ts +6 -0
- package/dist/components/slider/Slider.stories.tsx +876 -0
- package/dist/components/slider/index.tsx +156 -0
- package/dist/components/slider/meta.ts +29 -0
- package/dist/components/stepper/Stepper.stories.tsx +639 -0
- package/dist/components/stepper/index.tsx +650 -0
- package/dist/components/stepper/meta.ts +19 -0
- package/dist/components/switch/Switch.stories.tsx +85 -0
- package/dist/components/switch/index.tsx +37 -0
- package/dist/components/switch/meta.ts +24 -0
- package/dist/components/switch-case/SwitchCase.stories.tsx +209 -0
- package/dist/components/switch-case/index.tsx +89 -0
- package/dist/components/switch-case/meta.ts +6 -0
- package/dist/components/table/Table.stories.tsx +1095 -0
- package/dist/components/table/index.tsx +113 -0
- package/dist/components/table/meta.ts +20 -0
- package/dist/components/tabs/Tabs.stories.tsx +1379 -0
- package/dist/components/tabs/index.tsx +186 -0
- package/dist/components/tabs/meta.ts +25 -0
- package/dist/components/tag/Tag.stories.tsx +625 -0
- package/dist/components/tag/index.tsx +320 -0
- package/dist/components/tag/meta.ts +52 -0
- package/dist/components/textarea/TextArea.stories.tsx +723 -0
- package/dist/components/textarea/index.tsx +480 -0
- package/dist/components/textarea/meta.ts +23 -0
- package/dist/components/toast/Toast.stories.tsx +1427 -0
- package/dist/components/toast/index.tsx +26 -0
- package/dist/components/toast/meta.ts +19 -0
- package/dist/components/toggle/Toggle.stories.tsx +1093 -0
- package/dist/components/toggle/index.tsx +44 -0
- package/dist/components/toggle/meta.ts +19 -0
- package/dist/components/tooltip/Tooltip.stories.tsx +1548 -0
- package/dist/components/tooltip/index.tsx +304 -0
- package/dist/components/tooltip/meta.ts +21 -0
- package/dist/components/typography/Typography.stories.tsx +197 -0
- package/dist/components/typography/index.tsx +184 -0
- package/dist/components/typography/meta.ts +38 -0
- package/dist/fonts/LabGrotesque-Regular.ttf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Bold.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Light.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Medium.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Regular.otf +0 -0
- package/dist/fonts/PPSupplySans-Regular (1).otf +0 -0
- package/dist/fonts/PPSupplySans-Regular.otf +0 -0
- package/dist/fonts/PPSupplySans-Ultralight.otf +0 -0
- package/dist/hooks/index.ts +3 -0
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +997 -0
- package/dist/hooks/use-previous/index.ts +15 -0
- package/dist/hooks/use-previous/meta.ts +6 -0
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +983 -0
- package/dist/hooks/use-standalone-pagination/index.ts +146 -0
- package/dist/hooks/use-standalone-pagination/meta.ts +6 -0
- package/dist/icons/Icons.stories.tsx +29 -0
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +991 -0
- package/dist/icons/alert-icon/index.tsx +48 -0
- package/dist/icons/alert-icon/meta.ts +8 -0
- package/dist/icons/all-icons.tsx +738 -0
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +1031 -0
- package/dist/icons/angle-down-icon/index.tsx +25 -0
- package/dist/icons/angle-down-icon/meta.ts +8 -0
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +1080 -0
- package/dist/icons/arrow-box-left-icon/index.tsx +24 -0
- package/dist/icons/arrow-box-left-icon/meta.ts +8 -0
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +1151 -0
- package/dist/icons/arrow-right-icon/index.tsx +26 -0
- package/dist/icons/arrow-right-icon/meta.ts +8 -0
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +1273 -0
- package/dist/icons/arrow-right-up-icon/index.tsx +24 -0
- package/dist/icons/arrow-right-up-icon/meta.ts +8 -0
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +670 -0
- package/dist/icons/art-board-icon/index.tsx +24 -0
- package/dist/icons/art-board-icon/meta.ts +7 -0
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +1244 -0
- package/dist/icons/audio-bar-icon/index.tsx +19 -0
- package/dist/icons/audio-bar-icon/meta.ts +8 -0
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +1239 -0
- package/dist/icons/bubble-check-icon/index.tsx +24 -0
- package/dist/icons/bubble-check-icon/meta.ts +8 -0
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +1228 -0
- package/dist/icons/bubble-crossed-icon/index.tsx +24 -0
- package/dist/icons/bubble-crossed-icon/meta.ts +8 -0
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +912 -0
- package/dist/icons/bubble-sparkle-icon/index.tsx +26 -0
- package/dist/icons/bubble-sparkle-icon/meta.ts +8 -0
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-double-left-icon/index.tsx +34 -0
- package/dist/icons/chevron-double-left-icon/meta.ts +8 -0
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-double-right-icon/index.tsx +34 -0
- package/dist/icons/chevron-double-right-icon/meta.ts +8 -0
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +1001 -0
- package/dist/icons/chevron-down-icon/index.tsx +27 -0
- package/dist/icons/chevron-down-icon/meta.ts +8 -0
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +1029 -0
- package/dist/icons/chevron-left-icon/index.tsx +27 -0
- package/dist/icons/chevron-left-icon/meta.ts +8 -0
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-right-icon/index.tsx +27 -0
- package/dist/icons/chevron-right-icon/meta.ts +8 -0
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +1036 -0
- package/dist/icons/chevron-up-icon/index.tsx +27 -0
- package/dist/icons/chevron-up-icon/meta.ts +8 -0
- package/dist/icons/command-icon/CommandIcon.stories.tsx +1098 -0
- package/dist/icons/command-icon/index.tsx +24 -0
- package/dist/icons/command-icon/meta.ts +8 -0
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +1061 -0
- package/dist/icons/cross-circle-icon/index.tsx +23 -0
- package/dist/icons/cross-circle-icon/meta.ts +8 -0
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +1027 -0
- package/dist/icons/cross-icon/index.tsx +24 -0
- package/dist/icons/cross-icon/meta.ts +8 -0
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +1092 -0
- package/dist/icons/edit-big-icon/index.tsx +22 -0
- package/dist/icons/edit-big-icon/meta.ts +8 -0
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +1090 -0
- package/dist/icons/eye-close-icon/index.tsx +26 -0
- package/dist/icons/eye-close-icon/meta.ts +8 -0
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +1098 -0
- package/dist/icons/eye-open-icon/index.tsx +24 -0
- package/dist/icons/eye-open-icon/meta.ts +8 -0
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +1071 -0
- package/dist/icons/feature-shine-icon/index.tsx +29 -0
- package/dist/icons/feature-shine-icon/meta.ts +8 -0
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +1115 -0
- package/dist/icons/file-chart-icon/index.tsx +24 -0
- package/dist/icons/file-chart-icon/meta.ts +8 -0
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +668 -0
- package/dist/icons/file-text-icon/index.tsx +24 -0
- package/dist/icons/file-text-icon/meta.ts +8 -0
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +1239 -0
- package/dist/icons/grip-vertical-icon/index.tsx +28 -0
- package/dist/icons/grip-vertical-icon/meta.ts +8 -0
- package/dist/icons/image-icon/ImageIcon.stories.tsx +1181 -0
- package/dist/icons/image-icon/index.tsx +24 -0
- package/dist/icons/image-icon/meta.ts +8 -0
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +1248 -0
- package/dist/icons/import-folder-icon/index.tsx +22 -0
- package/dist/icons/import-folder-icon/meta.ts +8 -0
- package/dist/icons/index.ts +46 -0
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +1272 -0
- package/dist/icons/light-bulb-simple-icon/index.tsx +24 -0
- package/dist/icons/light-bulb-simple-icon/meta.ts +8 -0
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +1245 -0
- package/dist/icons/magic-book-icon/index.tsx +32 -0
- package/dist/icons/magic-book-icon/meta.ts +8 -0
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +1251 -0
- package/dist/icons/maintenance-icon/index.tsx +23 -0
- package/dist/icons/maintenance-icon/meta.ts +8 -0
- package/dist/icons/message-icon/MessageIcon.stories.tsx +595 -0
- package/dist/icons/message-icon/index.tsx +30 -0
- package/dist/icons/message-icon/meta.ts +8 -0
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +1245 -0
- package/dist/icons/move-horizontal-icon/index.tsx +23 -0
- package/dist/icons/move-horizontal-icon/meta.ts +8 -0
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +1196 -0
- package/dist/icons/move-vertical-icon/index.tsx +23 -0
- package/dist/icons/move-vertical-icon/meta.ts +8 -0
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +1167 -0
- package/dist/icons/page-search-icon/index.tsx +21 -0
- package/dist/icons/page-search-icon/meta.ts +8 -0
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +1131 -0
- package/dist/icons/pencil-icon/index.tsx +21 -0
- package/dist/icons/pencil-icon/meta.ts +8 -0
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +1151 -0
- package/dist/icons/plus-icon/index.tsx +24 -0
- package/dist/icons/plus-icon/meta.ts +8 -0
- package/dist/icons/search-icon/SearchIcon.stories.tsx +1181 -0
- package/dist/icons/search-icon/index.tsx +24 -0
- package/dist/icons/search-icon/meta.ts +8 -0
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +1167 -0
- package/dist/icons/site-logo-icon/index.tsx +79 -0
- package/dist/icons/site-logo-icon/meta.ts +8 -0
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +637 -0
- package/dist/icons/spinner-gradient-icon/index.tsx +53 -0
- package/dist/icons/spinner-gradient-icon/meta.ts +8 -0
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +644 -0
- package/dist/icons/spinner-solid-icon/index.tsx +59 -0
- package/dist/icons/spinner-solid-icon/meta.ts +8 -0
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +736 -0
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +53 -0
- package/dist/icons/spinner-solid-neutral-icon/meta.ts +8 -0
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +1204 -0
- package/dist/icons/tick-circle-icon/index.tsx +23 -0
- package/dist/icons/tick-circle-icon/meta.ts +8 -0
- package/dist/icons/tick-icon/TickIcon.stories.tsx +1340 -0
- package/dist/icons/tick-icon/index.tsx +24 -0
- package/dist/icons/tick-icon/meta.ts +8 -0
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +996 -0
- package/dist/icons/trash-icon/index.tsx +24 -0
- package/dist/icons/trash-icon/meta.ts +8 -0
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +947 -0
- package/dist/icons/upload-icon/index.tsx +24 -0
- package/dist/icons/upload-icon/meta.ts +8 -0
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +1045 -0
- package/dist/icons/vertical-menu-icon/index.tsx +27 -0
- package/dist/icons/vertical-menu-icon/meta.ts +8 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +206 -0
- package/dist/lib/utils.ts +6 -0
- package/dist/styles/aural-theme.css +1008 -0
- package/package.json +142 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import HelperText from "@components/helper-text"
|
|
3
|
+
import { AlertIcon, CrossIcon, TickIcon } from "@icons/index"
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
5
|
+
|
|
6
|
+
import Input from "."
|
|
7
|
+
|
|
8
|
+
const meta: Meta<typeof Input> = {
|
|
9
|
+
title: "Components/UI/Input",
|
|
10
|
+
component: Input,
|
|
11
|
+
parameters: {
|
|
12
|
+
layout: "centered",
|
|
13
|
+
},
|
|
14
|
+
tags: ["autodocs"],
|
|
15
|
+
argTypes: {
|
|
16
|
+
variant: {
|
|
17
|
+
control: { type: "select" },
|
|
18
|
+
options: ["default", "error", "warning", "success"],
|
|
19
|
+
},
|
|
20
|
+
type: {
|
|
21
|
+
control: { type: "select" },
|
|
22
|
+
options: ["text", "email", "password", "number", "tel", "url"],
|
|
23
|
+
},
|
|
24
|
+
disabled: {
|
|
25
|
+
control: { type: "boolean" },
|
|
26
|
+
},
|
|
27
|
+
required: {
|
|
28
|
+
control: { type: "boolean" },
|
|
29
|
+
},
|
|
30
|
+
fullWidth: {
|
|
31
|
+
control: { type: "boolean" },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default meta
|
|
37
|
+
type Story = StoryObj<typeof Input>
|
|
38
|
+
|
|
39
|
+
// Basic variants
|
|
40
|
+
export const Default: Story = {
|
|
41
|
+
args: {
|
|
42
|
+
label: "Default Input",
|
|
43
|
+
placeholder: "Enter text here...",
|
|
44
|
+
variant: "default",
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const WithValue: Story = {
|
|
49
|
+
args: {
|
|
50
|
+
label: "Input with Value",
|
|
51
|
+
value: "Pre-filled value",
|
|
52
|
+
variant: "default",
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const Required: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
label: "Required Field",
|
|
59
|
+
placeholder: "This field is required",
|
|
60
|
+
required: true,
|
|
61
|
+
variant: "default",
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Variants
|
|
66
|
+
export const Error: Story = {
|
|
67
|
+
args: {
|
|
68
|
+
label: "Error Input",
|
|
69
|
+
placeholder: "Enter valid email",
|
|
70
|
+
variant: "error",
|
|
71
|
+
helperText: "This field contains an error",
|
|
72
|
+
value: "invalid-email",
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const Warning: Story = {
|
|
77
|
+
args: {
|
|
78
|
+
label: "Warning Input",
|
|
79
|
+
placeholder: "Enter password",
|
|
80
|
+
variant: "warning",
|
|
81
|
+
helperText: "Password strength is weak",
|
|
82
|
+
value: "123",
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export const Success: Story = {
|
|
87
|
+
args: {
|
|
88
|
+
label: "Success Input",
|
|
89
|
+
placeholder: "Enter email",
|
|
90
|
+
variant: "success",
|
|
91
|
+
helperText: "Email is valid",
|
|
92
|
+
value: "user@example.com",
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// States
|
|
97
|
+
export const Disabled: Story = {
|
|
98
|
+
args: {
|
|
99
|
+
label: "Disabled Input",
|
|
100
|
+
placeholder: "Cannot type here",
|
|
101
|
+
disabled: true,
|
|
102
|
+
value: "Disabled value",
|
|
103
|
+
},
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export const FullWidth: Story = {
|
|
107
|
+
args: {
|
|
108
|
+
label: "Full Width Input",
|
|
109
|
+
placeholder: "This input takes full width",
|
|
110
|
+
fullWidth: true,
|
|
111
|
+
},
|
|
112
|
+
parameters: {
|
|
113
|
+
layout: "padded",
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Input types
|
|
118
|
+
export const EmailInput: Story = {
|
|
119
|
+
args: {
|
|
120
|
+
label: "Email",
|
|
121
|
+
type: "email",
|
|
122
|
+
placeholder: "Enter your email",
|
|
123
|
+
helperText: "We'll never share your email",
|
|
124
|
+
},
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export const PasswordInput: Story = {
|
|
128
|
+
args: {
|
|
129
|
+
label: "Password",
|
|
130
|
+
type: "password",
|
|
131
|
+
placeholder: "Enter your password",
|
|
132
|
+
helperText: "Password must be at least 8 characters",
|
|
133
|
+
},
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export const NumberInput: Story = {
|
|
137
|
+
args: {
|
|
138
|
+
label: "Age",
|
|
139
|
+
type: "number",
|
|
140
|
+
placeholder: "Enter your age",
|
|
141
|
+
},
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export const TelInput: Story = {
|
|
145
|
+
args: {
|
|
146
|
+
label: "Phone Number",
|
|
147
|
+
type: "tel",
|
|
148
|
+
placeholder: "Enter your phone number",
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export const UrlInput: Story = {
|
|
153
|
+
args: {
|
|
154
|
+
label: "Website",
|
|
155
|
+
type: "url",
|
|
156
|
+
placeholder: "https://example.com",
|
|
157
|
+
},
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// With icons
|
|
161
|
+
export const WithStartIcon: Story = {
|
|
162
|
+
args: {
|
|
163
|
+
label: "Search",
|
|
164
|
+
placeholder: "Search for items...",
|
|
165
|
+
startIcon: <TickIcon className="h-4 w-4 text-gray-400" />,
|
|
166
|
+
},
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export const WithEndIcon: Story = {
|
|
170
|
+
args: {
|
|
171
|
+
label: "Verified Field",
|
|
172
|
+
placeholder: "Enter verified information",
|
|
173
|
+
endIcon: <TickIcon className="h-4 w-4 text-green-500" />,
|
|
174
|
+
variant: "success",
|
|
175
|
+
},
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export const WithBothIcons: Story = {
|
|
179
|
+
args: {
|
|
180
|
+
label: "Username",
|
|
181
|
+
placeholder: "Enter username",
|
|
182
|
+
startIcon: <AlertIcon className="h-4 w-4 text-red-400" />,
|
|
183
|
+
endIcon: <CrossIcon className="h-4 w-4 text-red-500" />,
|
|
184
|
+
variant: "error",
|
|
185
|
+
helperText: "Username is already taken",
|
|
186
|
+
},
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Complex examples
|
|
190
|
+
export const LoginForm: Story = {
|
|
191
|
+
render: () => (
|
|
192
|
+
<div className="w-80 space-y-4">
|
|
193
|
+
<Input
|
|
194
|
+
label="Email"
|
|
195
|
+
type="email"
|
|
196
|
+
placeholder="Enter your email"
|
|
197
|
+
required
|
|
198
|
+
fullWidth
|
|
199
|
+
/>
|
|
200
|
+
<Input
|
|
201
|
+
label="Password"
|
|
202
|
+
type="password"
|
|
203
|
+
placeholder="Enter your password"
|
|
204
|
+
required
|
|
205
|
+
fullWidth
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
208
|
+
),
|
|
209
|
+
parameters: {
|
|
210
|
+
layout: "centered",
|
|
211
|
+
},
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export const ValidationStates: Story = {
|
|
215
|
+
render: () => (
|
|
216
|
+
<div className="w-80 space-y-4">
|
|
217
|
+
<Input
|
|
218
|
+
label="Valid Email"
|
|
219
|
+
type="email"
|
|
220
|
+
value="user@example.com"
|
|
221
|
+
variant="success"
|
|
222
|
+
helperText="Email is valid"
|
|
223
|
+
endIcon={<TickIcon className="h-4 w-4 text-green-500" />}
|
|
224
|
+
fullWidth
|
|
225
|
+
/>
|
|
226
|
+
<Input
|
|
227
|
+
label="Invalid Email"
|
|
228
|
+
type="email"
|
|
229
|
+
value="invalid-email"
|
|
230
|
+
variant="error"
|
|
231
|
+
helperText="Please enter a valid email address"
|
|
232
|
+
endIcon={<CrossIcon className="h-4 w-4 text-red-500" />}
|
|
233
|
+
fullWidth
|
|
234
|
+
/>
|
|
235
|
+
<Input
|
|
236
|
+
label="Weak Password"
|
|
237
|
+
type="password"
|
|
238
|
+
value="123"
|
|
239
|
+
variant="warning"
|
|
240
|
+
helperText="Password is too weak. Use at least 8 characters"
|
|
241
|
+
fullWidth
|
|
242
|
+
/>
|
|
243
|
+
</div>
|
|
244
|
+
),
|
|
245
|
+
parameters: {
|
|
246
|
+
layout: "centered",
|
|
247
|
+
},
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export const DifferentSizes: Story = {
|
|
251
|
+
render: () => (
|
|
252
|
+
<div className="space-y-4">
|
|
253
|
+
<div className="w-60">
|
|
254
|
+
<Input label="Small Width" placeholder="60 units wide" />
|
|
255
|
+
</div>
|
|
256
|
+
<div className="w-80">
|
|
257
|
+
<Input label="Medium Width" placeholder="80 units wide" />
|
|
258
|
+
</div>
|
|
259
|
+
<div className="w-96">
|
|
260
|
+
<Input label="Large Width" placeholder="96 units wide" />
|
|
261
|
+
</div>
|
|
262
|
+
<div className="w-full">
|
|
263
|
+
<Input
|
|
264
|
+
label="Full Width"
|
|
265
|
+
placeholder="Full container width"
|
|
266
|
+
fullWidth
|
|
267
|
+
/>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
),
|
|
271
|
+
parameters: {
|
|
272
|
+
layout: "padded",
|
|
273
|
+
},
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// Atomic components showcase
|
|
277
|
+
export const AtomicComponents: Story = {
|
|
278
|
+
render: () => (
|
|
279
|
+
<div className="space-y-6">
|
|
280
|
+
<div>
|
|
281
|
+
<h3 className="text-fm-primary mb-3 text-lg font-semibold">
|
|
282
|
+
Using Atomic Components
|
|
283
|
+
</h3>
|
|
284
|
+
|
|
285
|
+
<Input.Root className="w-80">
|
|
286
|
+
<Input.Label htmlFor="custom-input" required>
|
|
287
|
+
Custom Composed Input
|
|
288
|
+
</Input.Label>
|
|
289
|
+
|
|
290
|
+
<Input.Wrapper>
|
|
291
|
+
<Input.StartIcon>
|
|
292
|
+
<AlertIcon className="h-4 w-4 text-gray-400" />
|
|
293
|
+
</Input.StartIcon>
|
|
294
|
+
|
|
295
|
+
<Input.Base
|
|
296
|
+
id="custom-input"
|
|
297
|
+
className="block w-full rounded-md border border-gray-300 py-2 pr-10 pl-10 transition-all duration-200 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none"
|
|
298
|
+
placeholder="Custom composition"
|
|
299
|
+
/>
|
|
300
|
+
|
|
301
|
+
<Input.EndIcon>
|
|
302
|
+
<TickIcon className="h-4 w-4 text-green-500" />
|
|
303
|
+
</Input.EndIcon>
|
|
304
|
+
</Input.Wrapper>
|
|
305
|
+
|
|
306
|
+
<HelperText variant="success">
|
|
307
|
+
Built using atomic components
|
|
308
|
+
</HelperText>
|
|
309
|
+
</Input.Root>
|
|
310
|
+
</div>
|
|
311
|
+
</div>
|
|
312
|
+
),
|
|
313
|
+
parameters: {
|
|
314
|
+
layout: "centered",
|
|
315
|
+
},
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Interactive example
|
|
319
|
+
export const InteractiveExample: Story = {
|
|
320
|
+
render: () => {
|
|
321
|
+
const [email, setEmail] = React.useState("")
|
|
322
|
+
const [password, setPassword] = React.useState("")
|
|
323
|
+
|
|
324
|
+
const emailVariant =
|
|
325
|
+
email.includes("@") && email.includes(".")
|
|
326
|
+
? "success"
|
|
327
|
+
: email.length > 0
|
|
328
|
+
? "error"
|
|
329
|
+
: "default"
|
|
330
|
+
const passwordVariant =
|
|
331
|
+
password.length >= 8
|
|
332
|
+
? "success"
|
|
333
|
+
: password.length > 0
|
|
334
|
+
? "warning"
|
|
335
|
+
: "default"
|
|
336
|
+
|
|
337
|
+
return (
|
|
338
|
+
<div className="w-80 space-y-4">
|
|
339
|
+
<Input
|
|
340
|
+
label="Email"
|
|
341
|
+
type="email"
|
|
342
|
+
placeholder="Enter your email"
|
|
343
|
+
value={email}
|
|
344
|
+
onChange={(e) => setEmail(e.target.value)}
|
|
345
|
+
variant={emailVariant}
|
|
346
|
+
helperText={
|
|
347
|
+
emailVariant === "success"
|
|
348
|
+
? "Email looks good!"
|
|
349
|
+
: emailVariant === "error"
|
|
350
|
+
? "Please enter a valid email"
|
|
351
|
+
: "Enter your email address"
|
|
352
|
+
}
|
|
353
|
+
endIcon={
|
|
354
|
+
emailVariant === "success" ? (
|
|
355
|
+
<TickIcon className="h-4 w-4 text-green-500" />
|
|
356
|
+
) : undefined
|
|
357
|
+
}
|
|
358
|
+
required
|
|
359
|
+
fullWidth
|
|
360
|
+
/>
|
|
361
|
+
|
|
362
|
+
<Input
|
|
363
|
+
label="Password"
|
|
364
|
+
type="password"
|
|
365
|
+
placeholder="Enter your password"
|
|
366
|
+
value={password}
|
|
367
|
+
onChange={(e) => setPassword(e.target.value)}
|
|
368
|
+
variant={passwordVariant}
|
|
369
|
+
helperText={
|
|
370
|
+
passwordVariant === "success"
|
|
371
|
+
? "Password strength is good"
|
|
372
|
+
: passwordVariant === "warning"
|
|
373
|
+
? "Password is too short (min 8 characters)"
|
|
374
|
+
: "Enter your password"
|
|
375
|
+
}
|
|
376
|
+
required
|
|
377
|
+
fullWidth
|
|
378
|
+
/>
|
|
379
|
+
|
|
380
|
+
<div className="text-sm text-gray-600">
|
|
381
|
+
Email: {email || "(empty)"}
|
|
382
|
+
<br />
|
|
383
|
+
Password: {"*".repeat(password.length) || "(empty)"}
|
|
384
|
+
</div>
|
|
385
|
+
</div>
|
|
386
|
+
)
|
|
387
|
+
},
|
|
388
|
+
parameters: {
|
|
389
|
+
layout: "centered",
|
|
390
|
+
},
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// Edge cases
|
|
394
|
+
export const EdgeCases: Story = {
|
|
395
|
+
render: () => (
|
|
396
|
+
<div className="w-80 space-y-4">
|
|
397
|
+
<Input
|
|
398
|
+
label="Very Long Label That Might Wrap to Multiple Lines in Some Cases"
|
|
399
|
+
placeholder="Long label test"
|
|
400
|
+
helperText="This demonstrates how the component handles very long labels and helper text that might wrap to multiple lines in constrained spaces"
|
|
401
|
+
variant="default"
|
|
402
|
+
fullWidth
|
|
403
|
+
/>
|
|
404
|
+
|
|
405
|
+
<Input
|
|
406
|
+
label=""
|
|
407
|
+
placeholder="No label provided"
|
|
408
|
+
helperText="Input without label"
|
|
409
|
+
fullWidth
|
|
410
|
+
/>
|
|
411
|
+
|
|
412
|
+
<Input label="No Helper Text" placeholder="Clean input" fullWidth />
|
|
413
|
+
|
|
414
|
+
<Input placeholder="No label, no helper text" fullWidth />
|
|
415
|
+
|
|
416
|
+
<Input
|
|
417
|
+
label="All Features"
|
|
418
|
+
placeholder="Everything enabled"
|
|
419
|
+
startIcon={<AlertIcon className="h-4 w-4 text-blue-500" />}
|
|
420
|
+
endIcon={<TickIcon className="h-4 w-4 text-green-500" />}
|
|
421
|
+
helperText="This input has all features enabled"
|
|
422
|
+
variant="success"
|
|
423
|
+
required
|
|
424
|
+
fullWidth
|
|
425
|
+
/>
|
|
426
|
+
</div>
|
|
427
|
+
),
|
|
428
|
+
parameters: {
|
|
429
|
+
layout: "centered",
|
|
430
|
+
},
|
|
431
|
+
}
|