@a2v2ai/uikit 0.0.37 → 0.0.38

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.
Files changed (182) hide show
  1. package/Alert/Alert.stories.tsx +121 -0
  2. package/Alert/Alert.tsx +71 -0
  3. package/AlertDialog/AlertDialog.stories.tsx +665 -0
  4. package/AlertDialog/AlertDialog.tsx +241 -0
  5. package/Avatar/Avatar.stories.tsx +128 -0
  6. package/Avatar/Avatar.tsx +71 -0
  7. package/Badge/Badge.stories.tsx +76 -0
  8. package/Badge/Badge.tsx +39 -0
  9. package/Breadcrumb/Breadcrumb.stories.tsx +231 -0
  10. package/Breadcrumb/Breadcrumb.tsx +114 -0
  11. package/Button/Button.stories.tsx +684 -0
  12. package/Button/Button.tsx +107 -0
  13. package/Calendar/Calendar.stories.tsx +291 -0
  14. package/Calendar/Calendar.tsx +246 -0
  15. package/Card/Card.stories.tsx +136 -0
  16. package/Card/Card.tsx +96 -0
  17. package/Carousel/Carousel.stories.tsx +256 -0
  18. package/Carousel/Carousel.tsx +301 -0
  19. package/ChatBubble/ChatBubble.stories.tsx +339 -0
  20. package/ChatBubble/ChatBubble.tsx +179 -0
  21. package/Checkbox/Checkbox.stories.tsx +137 -0
  22. package/Checkbox/Checkbox.tsx +53 -0
  23. package/DataTable/DataTable.stories.tsx +400 -0
  24. package/DataTable/DataTable.tsx +207 -0
  25. package/Drawer/Drawer.stories.tsx +721 -0
  26. package/Drawer/Drawer.tsx +201 -0
  27. package/DropdownMenu/DropdownMenu.stories.tsx +251 -0
  28. package/DropdownMenu/DropdownMenu.tsx +199 -0
  29. package/ErrorMessage/ErrorMessage.stories.tsx +159 -0
  30. package/ErrorMessage/ErrorMessage.tsx +55 -0
  31. package/Flex/Flex.stories.tsx +390 -0
  32. package/Flex/Flex.tsx +102 -0
  33. package/IconButton/IconButton.stories.tsx +566 -0
  34. package/IconButton/IconButton.tsx +95 -0
  35. package/Input/Input.stories.tsx +566 -0
  36. package/Input/Input.tsx +168 -0
  37. package/InputOTP/InputOTP.stories.tsx +246 -0
  38. package/InputOTP/InputOTP.tsx +127 -0
  39. package/Label/Label.stories.tsx +110 -0
  40. package/Label/Label.tsx +44 -0
  41. package/Loader/Loader.stories.tsx +170 -0
  42. package/Loader/Loader.tsx +62 -0
  43. package/Menubar/Menubar.stories.tsx +382 -0
  44. package/Menubar/Menubar.tsx +274 -0
  45. package/Menubar/index.ts +18 -0
  46. package/Pagination/Pagination.stories.tsx +196 -0
  47. package/Pagination/Pagination.tsx +122 -0
  48. package/Popover/Popover.stories.tsx +133 -0
  49. package/Popover/Popover.tsx +31 -0
  50. package/Progress/Progress.stories.tsx +146 -0
  51. package/Progress/Progress.tsx +67 -0
  52. package/RadioGroup/RadioGroup.stories.tsx +159 -0
  53. package/RadioGroup/RadioGroup.tsx +68 -0
  54. package/ScrollArea/ScrollArea.stories.tsx +136 -0
  55. package/ScrollArea/ScrollArea.tsx +46 -0
  56. package/Select/Select.stories.tsx +378 -0
  57. package/Select/Select.tsx +230 -0
  58. package/Separator/Separator.stories.tsx +110 -0
  59. package/Separator/Separator.tsx +29 -0
  60. package/Sidebar/Sidebar.stories.tsx +340 -0
  61. package/Sidebar/Sidebar.tsx +414 -0
  62. package/Sidebar/index.ts +28 -0
  63. package/Skeleton/Skeleton.stories.tsx +117 -0
  64. package/Skeleton/Skeleton.tsx +16 -0
  65. package/Slider/Slider.stories.tsx +216 -0
  66. package/Slider/Slider.tsx +29 -0
  67. package/Spinner/Spinner.stories.tsx +210 -0
  68. package/Spinner/Spinner.tsx +78 -0
  69. package/Switch/Switch.stories.tsx +146 -0
  70. package/Switch/Switch.tsx +59 -0
  71. package/Table/Table.stories.tsx +510 -0
  72. package/Table/Table.tsx +114 -0
  73. package/Tabs/Tabs.stories.tsx +197 -0
  74. package/Tabs/Tabs.tsx +74 -0
  75. package/Textarea/Textarea.stories.tsx +187 -0
  76. package/Textarea/Textarea.tsx +73 -0
  77. package/Toast/Toast.stories.tsx +285 -0
  78. package/Toast/Toast.tsx +59 -0
  79. package/Tooltip/Tooltip.stories.tsx +463 -0
  80. package/Tooltip/Tooltip.tsx +96 -0
  81. package/Typography/Typography.stories.tsx +425 -0
  82. package/Typography/Typography.tsx +106 -0
  83. package/helpers.ts +5 -0
  84. package/{icons.js → icons.ts} +1 -1
  85. package/index.ts +217 -0
  86. package/lib/typography-types.ts +223 -0
  87. package/lib/utils.ts +15 -0
  88. package/package.json +5 -2
  89. package/tsconfig.json +22 -0
  90. package/Alert/Alert.d.ts +0 -13
  91. package/Alert/Alert.js +0 -25
  92. package/AlertDialog/AlertDialog.d.ts +0 -43
  93. package/AlertDialog/AlertDialog.js +0 -71
  94. package/Avatar/Avatar.d.ts +0 -14
  95. package/Avatar/Avatar.js +0 -25
  96. package/Badge/Badge.d.ts +0 -11
  97. package/Badge/Badge.js +0 -23
  98. package/Breadcrumb/Breadcrumb.d.ts +0 -19
  99. package/Breadcrumb/Breadcrumb.js +0 -23
  100. package/Button/Button.d.ts +0 -23
  101. package/Button/Button.js +0 -52
  102. package/Calendar/Calendar.d.ts +0 -20
  103. package/Calendar/Calendar.js +0 -78
  104. package/Card/Card.d.ts +0 -16
  105. package/Card/Card.js +0 -28
  106. package/Carousel/Carousel.d.ts +0 -37
  107. package/Carousel/Carousel.js +0 -132
  108. package/ChatBubble/ChatBubble.d.ts +0 -33
  109. package/ChatBubble/ChatBubble.js +0 -107
  110. package/Checkbox/Checkbox.d.ts +0 -12
  111. package/Checkbox/Checkbox.js +0 -20
  112. package/DataTable/DataTable.d.ts +0 -35
  113. package/DataTable/DataTable.js +0 -51
  114. package/Drawer/Drawer.d.ts +0 -33
  115. package/Drawer/Drawer.js +0 -55
  116. package/DropdownMenu/DropdownMenu.d.ts +0 -27
  117. package/DropdownMenu/DropdownMenu.js +0 -35
  118. package/ErrorMessage/ErrorMessage.d.ts +0 -27
  119. package/ErrorMessage/ErrorMessage.js +0 -14
  120. package/Flex/Flex.d.ts +0 -31
  121. package/Flex/Flex.js +0 -64
  122. package/IconButton/IconButton.d.ts +0 -23
  123. package/IconButton/IconButton.js +0 -48
  124. package/Input/Input.d.ts +0 -27
  125. package/Input/Input.js +0 -42
  126. package/InputOTP/InputOTP.d.ts +0 -20
  127. package/InputOTP/InputOTP.js +0 -44
  128. package/Label/Label.d.ts +0 -13
  129. package/Label/Label.js +0 -19
  130. package/Loader/Loader.d.ts +0 -21
  131. package/Loader/Loader.js +0 -30
  132. package/Menubar/Menubar.d.ts +0 -26
  133. package/Menubar/Menubar.js +0 -54
  134. package/Menubar/index.d.ts +0 -1
  135. package/Menubar/index.js +0 -1
  136. package/Pagination/Pagination.d.ts +0 -35
  137. package/Pagination/Pagination.js +0 -37
  138. package/Popover/Popover.d.ts +0 -7
  139. package/Popover/Popover.js +0 -10
  140. package/Progress/Progress.d.ts +0 -17
  141. package/Progress/Progress.js +0 -33
  142. package/RadioGroup/RadioGroup.d.ts +0 -13
  143. package/RadioGroup/RadioGroup.js +0 -26
  144. package/ScrollArea/ScrollArea.d.ts +0 -5
  145. package/ScrollArea/ScrollArea.js +0 -11
  146. package/Select/Select.d.ts +0 -29
  147. package/Select/Select.js +0 -50
  148. package/Separator/Separator.d.ts +0 -4
  149. package/Separator/Separator.js +0 -7
  150. package/Sidebar/Sidebar.d.ts +0 -48
  151. package/Sidebar/Sidebar.js +0 -116
  152. package/Sidebar/index.d.ts +0 -2
  153. package/Sidebar/index.js +0 -1
  154. package/Skeleton/Skeleton.d.ts +0 -4
  155. package/Skeleton/Skeleton.js +0 -7
  156. package/Slider/Slider.d.ts +0 -6
  157. package/Slider/Slider.js +0 -7
  158. package/Spinner/Spinner.d.ts +0 -19
  159. package/Spinner/Spinner.js +0 -31
  160. package/Switch/Switch.d.ts +0 -12
  161. package/Switch/Switch.js +0 -30
  162. package/Table/Table.d.ts +0 -10
  163. package/Table/Table.js +0 -20
  164. package/Tabs/Tabs.d.ts +0 -15
  165. package/Tabs/Tabs.js +0 -24
  166. package/Textarea/Textarea.d.ts +0 -19
  167. package/Textarea/Textarea.js +0 -31
  168. package/Toast/Toast.d.ts +0 -12
  169. package/Toast/Toast.js +0 -25
  170. package/Tooltip/Tooltip.d.ts +0 -17
  171. package/Tooltip/Tooltip.js +0 -29
  172. package/Typography/Typography.d.ts +0 -20
  173. package/Typography/Typography.js +0 -43
  174. package/helpers.d.ts +0 -4
  175. package/helpers.js +0 -5
  176. package/icons.d.ts +0 -1
  177. package/index.d.ts +0 -42
  178. package/index.js +0 -45
  179. package/lib/typography-types.d.ts +0 -4
  180. package/lib/typography-types.js +0 -90
  181. package/lib/utils.d.ts +0 -3
  182. package/lib/utils.js +0 -14
@@ -0,0 +1,566 @@
1
+ import type { Meta, StoryObj } from "@storybook/react"
2
+ import { useState } from "react"
3
+ import { Search, Mail, Eye, EyeOff, Info, User, Lock } from "../icons"
4
+ import { Typography } from "../Typography/Typography"
5
+ import { Flex } from "../Flex/Flex"
6
+ import { Button } from "../Button/Button"
7
+ import { Input } from "./Input"
8
+
9
+ const meta: Meta<typeof Input> = {
10
+ title: "Components/Input",
11
+ component: Input,
12
+ parameters: {
13
+ layout: "centered",
14
+ },
15
+ tags: ["autodocs"],
16
+ argTypes: {
17
+ size: {
18
+ control: "select",
19
+ options: ["mini", "small", "regular", "large"],
20
+ },
21
+ roundness: {
22
+ control: "select",
23
+ options: ["default", "round"],
24
+ },
25
+ variant: {
26
+ control: "select",
27
+ options: ["default", "error"],
28
+ },
29
+ disabled: {
30
+ control: "boolean",
31
+ },
32
+ },
33
+ }
34
+
35
+ export default meta
36
+ type Story = StoryObj<typeof Input>
37
+
38
+ export const Default: Story = {
39
+ args: {
40
+ placeholder: "Enter text...",
41
+ },
42
+ }
43
+
44
+ export const WithBuiltInLabel: Story = {
45
+ render: () => (
46
+ <Flex gap={4} style={{ width: "320px" }}>
47
+ <Input
48
+ id="email"
49
+ label="Email Address"
50
+ labelVariant="body2"
51
+ labelColor="main-800"
52
+ placeholder="Enter your email"
53
+ />
54
+ <Input
55
+ id="password"
56
+ label="Password"
57
+ labelVariant="body2"
58
+ labelColor="main-800"
59
+ type="password"
60
+ placeholder="Enter your password"
61
+ />
62
+ </Flex>
63
+ ),
64
+ }
65
+
66
+ export const WithValue: Story = {
67
+ args: {
68
+ defaultValue: "Hello World",
69
+ },
70
+ }
71
+
72
+ export const Placeholder: Story = {
73
+ args: {
74
+ placeholder: "Type something...",
75
+ },
76
+ }
77
+
78
+ export const Disabled: Story = {
79
+ args: {
80
+ placeholder: "Disabled input",
81
+ disabled: true,
82
+ },
83
+ }
84
+
85
+ export const DisabledWithValue: Story = {
86
+ args: {
87
+ defaultValue: "Cannot edit this",
88
+ disabled: true,
89
+ },
90
+ }
91
+
92
+ export const Error: Story = {
93
+ args: {
94
+ defaultValue: "Invalid value",
95
+ variant: "error",
96
+ },
97
+ }
98
+
99
+ export const ErrorWithMessage: Story = {
100
+ args: {
101
+ defaultValue: "invalid-email",
102
+ error: "Please enter a valid email address",
103
+ },
104
+ }
105
+
106
+ export const ErrorWithIcon: Story = {
107
+ render: () => (
108
+ <Flex style={{ width: "320px" }}>
109
+ <Input
110
+ leftIcon={<Mail size={16} />}
111
+ defaultValue="invalid@"
112
+ error="Please enter a valid email address"
113
+ />
114
+ </Flex>
115
+ ),
116
+ }
117
+
118
+ export const FormikTouchedUntouched: Story = {
119
+ render: function FormikExample() {
120
+ const [values, setValues] = useState({ email: "", password: "" })
121
+ const [touched, setTouched] = useState({ email: false, password: false })
122
+ const [errors] = useState({ email: "Please enter a valid email", password: "Password is required" })
123
+
124
+ const handleBlur = (field: "email" | "password") => {
125
+ setTouched((prev) => ({ ...prev, [field]: true }))
126
+ }
127
+
128
+ const handleChange = (field: "email" | "password", value: string) => {
129
+ setValues((prev) => ({ ...prev, [field]: value }))
130
+ }
131
+
132
+ return (
133
+ <Flex gap={6} style={{ width: "320px" }}>
134
+ <Typography variant="subtitle2" color="main-700">
135
+ Formik-style touched/untouched validation
136
+ </Typography>
137
+ <Typography variant="caption" color="grey-500">
138
+ Error messages only show after field is touched (blurred)
139
+ </Typography>
140
+
141
+ <Flex gap={4}>
142
+ <Flex gap={1}>
143
+ <Typography variant="body3" color="main-600">Email</Typography>
144
+ <Input
145
+ type="email"
146
+ placeholder="Enter email"
147
+ leftIcon={<Mail size={16} />}
148
+ value={values.email}
149
+ onChange={(e) => handleChange("email", e.target.value)}
150
+ onBlur={() => handleBlur("email")}
151
+ error={touched.email && errors.email ? errors.email : undefined}
152
+ />
153
+ <Typography variant="caption" color="grey-400">
154
+ {touched.email ? "Touched" : "Untouched"}
155
+ </Typography>
156
+ </Flex>
157
+
158
+ <Flex gap={1}>
159
+ <Typography variant="body3" color="main-600">Password</Typography>
160
+ <Input
161
+ type="password"
162
+ placeholder="Enter password"
163
+ leftIcon={<Lock size={16} />}
164
+ value={values.password}
165
+ onChange={(e) => handleChange("password", e.target.value)}
166
+ onBlur={() => handleBlur("password")}
167
+ error={touched.password && errors.password ? errors.password : undefined}
168
+ />
169
+ <Typography variant="caption" color="grey-400">
170
+ {touched.password ? "Touched" : "Untouched"}
171
+ </Typography>
172
+ </Flex>
173
+ </Flex>
174
+
175
+ <Button
176
+ variant="secondary"
177
+ size="small"
178
+ onClick={() => setTouched({ email: false, password: false })}
179
+ >
180
+ Reset Touched State
181
+ </Button>
182
+ </Flex>
183
+ )
184
+ },
185
+ }
186
+
187
+ export const WithLeftIcon: Story = {
188
+ args: {
189
+ placeholder: "Search...",
190
+ leftIcon: <Search size={16} />,
191
+ },
192
+ }
193
+
194
+ export const WithRightIcon: Story = {
195
+ args: {
196
+ placeholder: "Enter email",
197
+ rightIcon: <Info size={16} />,
198
+ },
199
+ }
200
+
201
+ export const WithBothIcons: Story = {
202
+ args: {
203
+ placeholder: "Search users...",
204
+ leftIcon: <Search size={16} />,
205
+ rightIcon: <User size={16} />,
206
+ },
207
+ }
208
+
209
+ export const WithAddons: Story = {
210
+ render: () => (
211
+ <Flex gap={4} style={{ width: "320px" }}>
212
+ <Flex gap={2}>
213
+ <Typography variant="body3" color="main-500">URL Input</Typography>
214
+ <Input leftAddon="https://" placeholder="example.com" />
215
+ </Flex>
216
+ <Flex gap={2}>
217
+ <Typography variant="body3" color="main-500">Currency Input</Typography>
218
+ <Input leftAddon="$" rightAddon="USD" placeholder="0.00" />
219
+ </Flex>
220
+ <Flex gap={2}>
221
+ <Typography variant="body3" color="main-500">Email Input</Typography>
222
+ <Input leftIcon={<Mail size={16} />} placeholder="you@example.com" />
223
+ </Flex>
224
+ </Flex>
225
+ ),
226
+ }
227
+
228
+ export const PasswordInput: Story = {
229
+ render: function PasswordInputStory() {
230
+ const [showPassword, setShowPassword] = useState(false)
231
+ return (
232
+ <Flex style={{ width: "320px" }}>
233
+ <Input
234
+ type={showPassword ? "text" : "password"}
235
+ placeholder="Enter password"
236
+ leftIcon={<Lock size={16} />}
237
+ rightIcon={
238
+ <button
239
+ type="button"
240
+ onClick={() => setShowPassword(!showPassword)}
241
+ style={{ background: "none", border: "none", cursor: "pointer", padding: 0 }}
242
+ >
243
+ {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}
244
+ </button>
245
+ }
246
+ />
247
+ </Flex>
248
+ )
249
+ },
250
+ }
251
+
252
+ export const SearchWithButton: Story = {
253
+ render: () => (
254
+ <Flex style={{ width: "320px" }}>
255
+ <Input
256
+ placeholder="Type to search..."
257
+ rightElement={
258
+ <Button size="small" variant="secondary">
259
+ Search
260
+ </Button>
261
+ }
262
+ />
263
+ </Flex>
264
+ ),
265
+ }
266
+
267
+ export const AllVariantsAndSizes: Story = {
268
+ parameters: {
269
+ layout: "fullscreen",
270
+ },
271
+ render: () => (
272
+ <Flex style={{ padding: "32px", backgroundColor: "#ffffff", minHeight: "100vh" }}>
273
+ {/* Header */}
274
+ <Flex style={{ borderBottom: "1px solid #e5e7eb", paddingBottom: "24px", marginBottom: "32px" }}>
275
+ <Typography variant="h3" color="main-950">Input</Typography>
276
+ </Flex>
277
+
278
+ {/* Main Content */}
279
+ <Flex gap={12}>
280
+ {/* Default Roundness Section */}
281
+ <Flex gap={6}>
282
+ <Typography variant="subtitle1" color="main-700">Default Roundness</Typography>
283
+
284
+ {/* Size Headers */}
285
+ <Flex direction="row">
286
+ <Flex style={{ width: "120px" }} />
287
+ <Flex direction="row" gap={4}>
288
+ <Flex justify="center" style={{ width: "200px" }}>
289
+ <Typography variant="body3" color="accent-600">Regular</Typography>
290
+ </Flex>
291
+ <Flex justify="center" style={{ width: "200px" }}>
292
+ <Typography variant="body3" color="accent-600">Large</Typography>
293
+ </Flex>
294
+ <Flex justify="center" style={{ width: "200px" }}>
295
+ <Typography variant="body3" color="accent-600">Small</Typography>
296
+ </Flex>
297
+ <Flex justify="center" style={{ width: "200px" }}>
298
+ <Typography variant="body3" color="accent-600">Mini</Typography>
299
+ </Flex>
300
+ </Flex>
301
+ </Flex>
302
+
303
+ {/* Empty Row */}
304
+ <Flex direction="row" align="center">
305
+ <Flex style={{ width: "120px" }}>
306
+ <Typography variant="body3" color="main-500">Empty</Typography>
307
+ </Flex>
308
+ <Flex direction="row" gap={4}>
309
+ <Flex style={{ width: "200px" }}><Input size="regular" /></Flex>
310
+ <Flex style={{ width: "200px" }}><Input size="large" /></Flex>
311
+ <Flex style={{ width: "200px" }}><Input size="small" /></Flex>
312
+ <Flex style={{ width: "200px" }}><Input size="mini" /></Flex>
313
+ </Flex>
314
+ </Flex>
315
+
316
+ {/* Placeholder Row */}
317
+ <Flex direction="row" align="center">
318
+ <Flex style={{ width: "120px" }}>
319
+ <Typography variant="body3" color="main-500">Placeholder</Typography>
320
+ </Flex>
321
+ <Flex direction="row" gap={4}>
322
+ <Flex style={{ width: "200px" }}><Input size="regular" placeholder="Value" /></Flex>
323
+ <Flex style={{ width: "200px" }}><Input size="large" placeholder="Value" /></Flex>
324
+ <Flex style={{ width: "200px" }}><Input size="small" placeholder="Value" /></Flex>
325
+ <Flex style={{ width: "200px" }}><Input size="mini" placeholder="Value" /></Flex>
326
+ </Flex>
327
+ </Flex>
328
+
329
+ {/* Value Row */}
330
+ <Flex direction="row" align="center">
331
+ <Flex style={{ width: "120px" }}>
332
+ <Typography variant="body3" color="main-500">Value</Typography>
333
+ </Flex>
334
+ <Flex direction="row" gap={4}>
335
+ <Flex style={{ width: "200px" }}><Input size="regular" defaultValue="Value" /></Flex>
336
+ <Flex style={{ width: "200px" }}><Input size="large" defaultValue="Value" /></Flex>
337
+ <Flex style={{ width: "200px" }}><Input size="small" defaultValue="Value" /></Flex>
338
+ <Flex style={{ width: "200px" }}><Input size="mini" defaultValue="Value" /></Flex>
339
+ </Flex>
340
+ </Flex>
341
+
342
+ {/* Focus Row - simulated with ring */}
343
+ <Flex direction="row" align="center">
344
+ <Flex style={{ width: "120px" }}>
345
+ <Typography variant="body3" color="main-500">Focus</Typography>
346
+ </Flex>
347
+ <Flex direction="row" gap={4}>
348
+ <Flex style={{ width: "200px" }}><Input size="regular" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
349
+ <Flex style={{ width: "200px" }}><Input size="large" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
350
+ <Flex style={{ width: "200px" }}><Input size="small" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
351
+ <Flex style={{ width: "200px" }}><Input size="mini" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
352
+ </Flex>
353
+ </Flex>
354
+
355
+ {/* Error Row */}
356
+ <Flex direction="row" align="center">
357
+ <Flex style={{ width: "120px" }}>
358
+ <Typography variant="body3" color="error-500">Error</Typography>
359
+ </Flex>
360
+ <Flex direction="row" gap={4}>
361
+ <Flex style={{ width: "200px" }}><Input size="regular" defaultValue="Value" variant="error" /></Flex>
362
+ <Flex style={{ width: "200px" }}><Input size="large" defaultValue="Value" variant="error" /></Flex>
363
+ <Flex style={{ width: "200px" }}><Input size="small" defaultValue="Value" variant="error" /></Flex>
364
+ <Flex style={{ width: "200px" }}><Input size="mini" defaultValue="Value" variant="error" /></Flex>
365
+ </Flex>
366
+ </Flex>
367
+
368
+ {/* Error Focus Row */}
369
+ <Flex direction="row" align="center">
370
+ <Flex style={{ width: "120px" }}>
371
+ <Typography variant="body3" color="error-500">Error Focus</Typography>
372
+ </Flex>
373
+ <Flex direction="row" gap={4}>
374
+ <Flex style={{ width: "200px" }}><Input size="regular" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
375
+ <Flex style={{ width: "200px" }}><Input size="large" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
376
+ <Flex style={{ width: "200px" }}><Input size="small" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
377
+ <Flex style={{ width: "200px" }}><Input size="mini" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
378
+ </Flex>
379
+ </Flex>
380
+
381
+ {/* Disabled Row */}
382
+ <Flex direction="row" align="center">
383
+ <Flex style={{ width: "120px" }}>
384
+ <Typography variant="body3" color="main-400">Disabled</Typography>
385
+ </Flex>
386
+ <Flex direction="row" gap={4}>
387
+ <Flex style={{ width: "200px" }}><Input size="regular" defaultValue="Value" disabled /></Flex>
388
+ <Flex style={{ width: "200px" }}><Input size="large" defaultValue="Value" disabled /></Flex>
389
+ <Flex style={{ width: "200px" }}><Input size="small" defaultValue="Value" disabled /></Flex>
390
+ <Flex style={{ width: "200px" }}><Input size="mini" defaultValue="Value" disabled /></Flex>
391
+ </Flex>
392
+ </Flex>
393
+ </Flex>
394
+
395
+ {/* Round Section */}
396
+ <Flex gap={6}>
397
+ <Typography variant="subtitle1" color="main-700">Round</Typography>
398
+
399
+ {/* Size Headers */}
400
+ <Flex direction="row">
401
+ <Flex style={{ width: "120px" }} />
402
+ <Flex direction="row" gap={4}>
403
+ <Flex justify="center" style={{ width: "200px" }}>
404
+ <Typography variant="body3" color="accent-600">Regular</Typography>
405
+ </Flex>
406
+ <Flex justify="center" style={{ width: "200px" }}>
407
+ <Typography variant="body3" color="accent-600">Large</Typography>
408
+ </Flex>
409
+ <Flex justify="center" style={{ width: "200px" }}>
410
+ <Typography variant="body3" color="accent-600">Small</Typography>
411
+ </Flex>
412
+ <Flex justify="center" style={{ width: "200px" }}>
413
+ <Typography variant="body3" color="accent-600">Mini</Typography>
414
+ </Flex>
415
+ </Flex>
416
+ </Flex>
417
+
418
+ {/* Empty Row */}
419
+ <Flex direction="row" align="center">
420
+ <Flex style={{ width: "120px" }}>
421
+ <Typography variant="body3" color="main-500">Empty</Typography>
422
+ </Flex>
423
+ <Flex direction="row" gap={4}>
424
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" /></Flex>
425
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" /></Flex>
426
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" /></Flex>
427
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" /></Flex>
428
+ </Flex>
429
+ </Flex>
430
+
431
+ {/* Placeholder Row */}
432
+ <Flex direction="row" align="center">
433
+ <Flex style={{ width: "120px" }}>
434
+ <Typography variant="body3" color="main-500">Placeholder</Typography>
435
+ </Flex>
436
+ <Flex direction="row" gap={4}>
437
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" placeholder="Value" /></Flex>
438
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" placeholder="Value" /></Flex>
439
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" placeholder="Value" /></Flex>
440
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" placeholder="Value" /></Flex>
441
+ </Flex>
442
+ </Flex>
443
+
444
+ {/* Value Row */}
445
+ <Flex direction="row" align="center">
446
+ <Flex style={{ width: "120px" }}>
447
+ <Typography variant="body3" color="main-500">Value</Typography>
448
+ </Flex>
449
+ <Flex direction="row" gap={4}>
450
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" defaultValue="Value" /></Flex>
451
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" defaultValue="Value" /></Flex>
452
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" defaultValue="Value" /></Flex>
453
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" defaultValue="Value" /></Flex>
454
+ </Flex>
455
+ </Flex>
456
+
457
+ {/* Focus Row */}
458
+ <Flex direction="row" align="center">
459
+ <Flex style={{ width: "120px" }}>
460
+ <Typography variant="body3" color="main-500">Focus</Typography>
461
+ </Flex>
462
+ <Flex direction="row" gap={4}>
463
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
464
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
465
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
466
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" defaultValue="Value" className="ring-[3px] ring-grey-300/50" /></Flex>
467
+ </Flex>
468
+ </Flex>
469
+
470
+ {/* Error Row */}
471
+ <Flex direction="row" align="center">
472
+ <Flex style={{ width: "120px" }}>
473
+ <Typography variant="body3" color="error-500">Error</Typography>
474
+ </Flex>
475
+ <Flex direction="row" gap={4}>
476
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" defaultValue="Value" variant="error" /></Flex>
477
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" defaultValue="Value" variant="error" /></Flex>
478
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" defaultValue="Value" variant="error" /></Flex>
479
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" defaultValue="Value" variant="error" /></Flex>
480
+ </Flex>
481
+ </Flex>
482
+
483
+ {/* Error Focus Row */}
484
+ <Flex direction="row" align="center">
485
+ <Flex style={{ width: "120px" }}>
486
+ <Typography variant="body3" color="error-500">Error Focus</Typography>
487
+ </Flex>
488
+ <Flex direction="row" gap={4}>
489
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
490
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
491
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
492
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" defaultValue="Value" variant="error" className="ring-[3px] ring-error-200" /></Flex>
493
+ </Flex>
494
+ </Flex>
495
+
496
+ {/* Disabled Row */}
497
+ <Flex direction="row" align="center">
498
+ <Flex style={{ width: "120px" }}>
499
+ <Typography variant="body3" color="main-400">Disabled</Typography>
500
+ </Flex>
501
+ <Flex direction="row" gap={4}>
502
+ <Flex style={{ width: "200px" }}><Input size="regular" roundness="round" defaultValue="Value" disabled /></Flex>
503
+ <Flex style={{ width: "200px" }}><Input size="large" roundness="round" defaultValue="Value" disabled /></Flex>
504
+ <Flex style={{ width: "200px" }}><Input size="small" roundness="round" defaultValue="Value" disabled /></Flex>
505
+ <Flex style={{ width: "200px" }}><Input size="mini" roundness="round" defaultValue="Value" disabled /></Flex>
506
+ </Flex>
507
+ </Flex>
508
+ </Flex>
509
+
510
+ {/* Examples Section */}
511
+ <Flex gap={6} style={{ marginTop: "24px", paddingTop: "24px", borderTop: "1px solid #e5e7eb" }}>
512
+ <Typography variant="subtitle1" color="main-700">Examples</Typography>
513
+
514
+ <Flex direction="row" gap={6} wrap="wrap">
515
+ {/* Search with results */}
516
+ <Flex gap={2}>
517
+ <Typography variant="body3" color="main-500">Search Input</Typography>
518
+ <Input
519
+ leftIcon={<Search size={16} />}
520
+ defaultValue="Value"
521
+ rightAddon="12 results"
522
+ style={{ width: "280px" }}
523
+ />
524
+ </Flex>
525
+
526
+ {/* URL Input */}
527
+ <Flex gap={2}>
528
+ <Typography variant="body3" color="main-500">URL Input</Typography>
529
+ <Input
530
+ leftAddon="https://"
531
+ defaultValue="example.com"
532
+ rightIcon={<Info size={16} />}
533
+ style={{ width: "280px" }}
534
+ />
535
+ </Flex>
536
+
537
+ {/* Search with Button */}
538
+ <Flex gap={2}>
539
+ <Typography variant="body3" color="main-500">Search with Button</Typography>
540
+ <Input
541
+ placeholder="Type to search..."
542
+ rightElement={
543
+ <Button size="small" variant="secondary">
544
+ Search
545
+ </Button>
546
+ }
547
+ style={{ width: "280px" }}
548
+ />
549
+ </Flex>
550
+
551
+ {/* Currency Input */}
552
+ <Flex gap={2}>
553
+ <Typography variant="body3" color="main-500">Currency Input</Typography>
554
+ <Input
555
+ leftAddon="$"
556
+ defaultValue="0.00"
557
+ rightAddon="USD"
558
+ style={{ width: "280px" }}
559
+ />
560
+ </Flex>
561
+ </Flex>
562
+ </Flex>
563
+ </Flex>
564
+ </Flex>
565
+ ),
566
+ }