@rovula/ui 0.0.68 → 0.0.69

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 (27) hide show
  1. package/dist/cjs/bundle.css +44 -0
  2. package/dist/cjs/bundle.js +3 -3
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/Dropdown/Dropdown.stories.d.ts +2 -0
  5. package/dist/cjs/types/components/InputFilter/InputFilter.stories.d.ts +2 -0
  6. package/dist/cjs/types/components/Search/Search.stories.d.ts +2 -0
  7. package/dist/cjs/types/components/TextInput/TextInput.d.ts +4 -0
  8. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +11 -0
  9. package/dist/cjs/types/components/TextInput/TextInput.styles.d.ts +1 -0
  10. package/dist/components/TextInput/TextInput.js +66 -14
  11. package/dist/components/TextInput/TextInput.stories.js +15 -0
  12. package/dist/components/TextInput/TextInput.styles.js +116 -7
  13. package/dist/esm/bundle.css +44 -0
  14. package/dist/esm/bundle.js +2 -2
  15. package/dist/esm/bundle.js.map +1 -1
  16. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +2 -0
  17. package/dist/esm/types/components/InputFilter/InputFilter.stories.d.ts +2 -0
  18. package/dist/esm/types/components/Search/Search.stories.d.ts +2 -0
  19. package/dist/esm/types/components/TextInput/TextInput.d.ts +4 -0
  20. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +11 -0
  21. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +1 -0
  22. package/dist/index.d.ts +4 -0
  23. package/dist/src/theme/global.css +56 -0
  24. package/package.json +1 -1
  25. package/src/components/TextInput/TextInput.stories.tsx +83 -0
  26. package/src/components/TextInput/TextInput.styles.ts +117 -7
  27. package/src/components/TextInput/TextInput.tsx +115 -21
@@ -359,10 +359,12 @@ declare const meta: {
359
359
  placeholder?: string | undefined | undefined;
360
360
  readOnly?: boolean | undefined | undefined;
361
361
  src?: string | undefined | undefined;
362
+ iconMode?: "flat" | "solid" | undefined;
362
363
  keepCloseIconOnValue?: boolean | undefined;
363
364
  labelClassName?: string | undefined;
364
365
  onClickStartIcon?: (() => void) | undefined;
365
366
  onClickEndIcon?: (() => void) | undefined;
367
+ renderStartIcon?: (() => React.ReactNode) | undefined;
366
368
  renderEndIcon?: (() => React.ReactNode) | undefined;
367
369
  ref?: React.LegacyRef<HTMLInputElement> | undefined;
368
370
  key?: React.Key | null | undefined;
@@ -349,10 +349,12 @@ declare const meta: {
349
349
  placeholder?: string | undefined | undefined;
350
350
  readOnly?: boolean | undefined | undefined;
351
351
  src?: string | undefined | undefined;
352
+ iconMode?: "flat" | "solid" | undefined;
352
353
  keepCloseIconOnValue?: boolean | undefined;
353
354
  labelClassName?: string | undefined;
354
355
  onClickStartIcon?: (() => void) | undefined;
355
356
  onClickEndIcon?: (() => void) | undefined;
357
+ renderStartIcon?: (() => React.ReactNode) | undefined;
356
358
  renderEndIcon?: (() => React.ReactNode) | undefined;
357
359
  ref?: React.LegacyRef<HTMLInputElement> | undefined;
358
360
  key?: React.Key | null | undefined;
@@ -310,11 +310,13 @@ declare const meta: {
310
310
  required?: boolean | undefined;
311
311
  src?: string | undefined | undefined;
312
312
  label?: string | undefined;
313
+ iconMode?: "flat" | "solid" | undefined;
313
314
  helperText?: string | undefined;
314
315
  errorMessage?: string | undefined;
315
316
  labelClassName?: string | undefined;
316
317
  onClickStartIcon?: (() => void) | undefined;
317
318
  onClickEndIcon?: (() => void) | undefined;
319
+ renderStartIcon?: (() => React.ReactNode) | undefined;
318
320
  renderEndIcon?: (() => React.ReactNode) | undefined;
319
321
  modal?: boolean | undefined;
320
322
  optionContainerClassName?: string | undefined;
@@ -5,6 +5,7 @@ export type InputProps = {
5
5
  size?: "sm" | "md" | "lg";
6
6
  rounded?: "none" | "normal" | "full";
7
7
  variant?: "flat" | "outline" | "underline";
8
+ iconMode?: "flat" | "solid";
8
9
  type?: React.HTMLInputTypeAttribute;
9
10
  helperText?: string;
10
11
  errorMessage?: string;
@@ -22,6 +23,7 @@ export type InputProps = {
22
23
  labelClassName?: string;
23
24
  onClickStartIcon?: () => void;
24
25
  onClickEndIcon?: () => void;
26
+ renderStartIcon?: () => ReactNode;
25
27
  renderEndIcon?: () => ReactNode;
26
28
  } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">;
27
29
  export declare const TextInput: React.ForwardRefExoticComponent<{
@@ -30,6 +32,7 @@ export declare const TextInput: React.ForwardRefExoticComponent<{
30
32
  size?: "sm" | "md" | "lg";
31
33
  rounded?: "none" | "normal" | "full";
32
34
  variant?: "flat" | "outline" | "underline";
35
+ iconMode?: "flat" | "solid";
33
36
  type?: React.HTMLInputTypeAttribute;
34
37
  helperText?: string;
35
38
  errorMessage?: string;
@@ -47,6 +50,7 @@ export declare const TextInput: React.ForwardRefExoticComponent<{
47
50
  labelClassName?: string;
48
51
  onClickStartIcon?: () => void;
49
52
  onClickEndIcon?: () => void;
53
+ renderStartIcon?: () => ReactNode;
50
54
  renderEndIcon?: () => ReactNode;
51
55
  } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> & React.RefAttributes<HTMLInputElement>>;
52
56
  export default TextInput;
@@ -7,6 +7,7 @@ declare const meta: {
7
7
  size?: "sm" | "md" | "lg";
8
8
  rounded?: "none" | "normal" | "full";
9
9
  variant?: "flat" | "outline" | "underline";
10
+ iconMode?: "flat" | "solid";
10
11
  type?: React.HTMLInputTypeAttribute;
11
12
  helperText?: string;
12
13
  errorMessage?: string;
@@ -24,6 +25,7 @@ declare const meta: {
24
25
  labelClassName?: string;
25
26
  onClickStartIcon?: () => void;
26
27
  onClickEndIcon?: () => void;
28
+ renderStartIcon?: () => React.ReactNode;
27
29
  renderEndIcon?: () => React.ReactNode;
28
30
  } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> & React.RefAttributes<HTMLInputElement>>;
29
31
  tags: string[];
@@ -36,6 +38,7 @@ declare const meta: {
36
38
  size?: "sm" | "md" | "lg" | undefined;
37
39
  rounded?: "none" | "normal" | "full" | undefined;
38
40
  variant?: "flat" | "outline" | "underline" | undefined;
41
+ iconMode?: "flat" | "solid" | undefined;
39
42
  type?: React.HTMLInputTypeAttribute | undefined;
40
43
  helperText?: string | undefined;
41
44
  errorMessage?: string | undefined;
@@ -53,6 +56,7 @@ declare const meta: {
53
56
  labelClassName?: string | undefined;
54
57
  onClickStartIcon?: (() => void) | undefined;
55
58
  onClickEndIcon?: (() => void) | undefined;
59
+ renderStartIcon?: (() => React.ReactNode) | undefined;
56
60
  renderEndIcon?: (() => React.ReactNode) | undefined;
57
61
  suppressHydrationWarning?: boolean | undefined | undefined;
58
62
  color?: string | undefined | undefined;
@@ -371,3 +375,10 @@ export declare const FuctionInput: {
371
375
  };
372
376
  render: (args: {}) => import("react/jsx-runtime").JSX.Element;
373
377
  };
378
+ export declare const CustomIcon: {
379
+ args: {
380
+ label: string;
381
+ disabled: boolean;
382
+ };
383
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
384
+ };
@@ -15,6 +15,7 @@ export declare const labelVariant: (props?: ({
15
15
  disabled?: boolean | null | undefined;
16
16
  error?: boolean | null | undefined;
17
17
  hasSearchIcon?: boolean | null | undefined;
18
+ hasLeftSectionIcon?: boolean | null | undefined;
18
19
  isFloatingLabel?: boolean | null | undefined;
19
20
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
20
21
  export declare const helperTextVariant: (props?: ({
package/dist/index.d.ts CHANGED
@@ -49,6 +49,7 @@ type InputProps = {
49
49
  size?: "sm" | "md" | "lg";
50
50
  rounded?: "none" | "normal" | "full";
51
51
  variant?: "flat" | "outline" | "underline";
52
+ iconMode?: "flat" | "solid";
52
53
  type?: React__default.HTMLInputTypeAttribute;
53
54
  helperText?: string;
54
55
  errorMessage?: string;
@@ -66,6 +67,7 @@ type InputProps = {
66
67
  labelClassName?: string;
67
68
  onClickStartIcon?: () => void;
68
69
  onClickEndIcon?: () => void;
70
+ renderStartIcon?: () => ReactNode;
69
71
  renderEndIcon?: () => ReactNode;
70
72
  } & Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size">;
71
73
  declare const TextInput: React__default.ForwardRefExoticComponent<{
@@ -74,6 +76,7 @@ declare const TextInput: React__default.ForwardRefExoticComponent<{
74
76
  size?: "sm" | "md" | "lg";
75
77
  rounded?: "none" | "normal" | "full";
76
78
  variant?: "flat" | "outline" | "underline";
79
+ iconMode?: "flat" | "solid";
77
80
  type?: React__default.HTMLInputTypeAttribute;
78
81
  helperText?: string;
79
82
  errorMessage?: string;
@@ -91,6 +94,7 @@ declare const TextInput: React__default.ForwardRefExoticComponent<{
91
94
  labelClassName?: string;
92
95
  onClickStartIcon?: () => void;
93
96
  onClickEndIcon?: () => void;
97
+ renderStartIcon?: () => ReactNode;
94
98
  renderEndIcon?: () => ReactNode;
95
99
  } & Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size"> & React__default.RefAttributes<HTMLInputElement>>;
96
100
 
@@ -2284,10 +2284,22 @@ input[type=number] {
2284
2284
  left: 2.25rem;
2285
2285
  }
2286
2286
 
2287
+ .left-\[38px\] {
2288
+ left: 38px;
2289
+ }
2290
+
2291
+ .left-\[46px\] {
2292
+ left: 46px;
2293
+ }
2294
+
2287
2295
  .left-\[50\%\] {
2288
2296
  left: 50%;
2289
2297
  }
2290
2298
 
2299
+ .left-\[72px\] {
2300
+ left: 72px;
2301
+ }
2302
+
2291
2303
  .right-0 {
2292
2304
  right: 0px;
2293
2305
  }
@@ -3047,6 +3059,21 @@ input[type=number] {
3047
3059
  border-radius: var(--radius-radius-xs);
3048
3060
  }
3049
3061
 
3062
+ .rounded-l-full {
3063
+ border-top-left-radius: 9999px;
3064
+ border-bottom-left-radius: 9999px;
3065
+ }
3066
+
3067
+ .rounded-l-none {
3068
+ border-top-left-radius: 0px;
3069
+ border-bottom-left-radius: 0px;
3070
+ }
3071
+
3072
+ .rounded-l-xl {
3073
+ border-top-left-radius: var(--radius-radius-xl);
3074
+ border-bottom-left-radius: var(--radius-radius-xl);
3075
+ }
3076
+
3050
3077
  .rounded-r-full {
3051
3078
  border-top-right-radius: 9999px;
3052
3079
  border-bottom-right-radius: 9999px;
@@ -3094,6 +3121,10 @@ input[type=number] {
3094
3121
  border-left-width: 1px;
3095
3122
  }
3096
3123
 
3124
+ .border-r {
3125
+ border-right-width: 1px;
3126
+ }
3127
+
3097
3128
  .border-t {
3098
3129
  border-top-width: 1px;
3099
3130
  }
@@ -3359,6 +3390,16 @@ input[type=number] {
3359
3390
  border-left-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-border-opacity, 1)), transparent);
3360
3391
  }
3361
3392
 
3393
+ .border-r-input-default-stroke {
3394
+ --tw-border-opacity: 1;
3395
+ border-right-color: color-mix(in srgb, var(--input-color-default-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
3396
+ }
3397
+
3398
+ .border-r-input-error {
3399
+ --tw-border-opacity: 1;
3400
+ border-right-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-border-opacity, 1)), transparent);
3401
+ }
3402
+
3362
3403
  .border-t-secondary {
3363
3404
  --tw-border-opacity: 1;
3364
3405
  border-top-color: color-mix(in srgb, var(--state-color-secondary-default) calc(100% * var(--tw-border-opacity, 1)), transparent);
@@ -7977,6 +8018,11 @@ input[type=number] {
7977
8018
  border-left-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
7978
8019
  }
7979
8020
 
8021
+ .peer:hover ~ .peer-hover\:border-r-input-active-stroke {
8022
+ --tw-border-opacity: 1;
8023
+ border-right-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8024
+ }
8025
+
7980
8026
  .peer:hover ~ .peer-hover\:fill-input-filled-text {
7981
8027
  fill: color-mix(in srgb, var(--input-color-filled-text) calc(100% * 1), transparent);
7982
8028
  }
@@ -8006,6 +8052,11 @@ input[type=number] {
8006
8052
  border-left-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8007
8053
  }
8008
8054
 
8055
+ .peer:focus ~ .peer-focus\:border-r-input-active-stroke {
8056
+ --tw-border-opacity: 1;
8057
+ border-right-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8058
+ }
8059
+
8009
8060
  .peer:focus ~ .peer-focus\:bg-input-label-bg {
8010
8061
  --tw-bg-opacity: 1;
8011
8062
  background-color: color-mix(in srgb, var(--input-color-label-bg) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -8062,6 +8113,11 @@ input[type=number] {
8062
8113
  border-left-color: color-mix(in srgb, var(--input-color-disable-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8063
8114
  }
8064
8115
 
8116
+ .peer:disabled ~ .peer-disabled\:border-r-input-disable-stroke {
8117
+ --tw-border-opacity: 1;
8118
+ border-right-color: color-mix(in srgb, var(--input-color-disable-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8119
+ }
8120
+
8065
8121
  .peer:disabled ~ .peer-disabled\:fill-input-disable-stroke {
8066
8122
  fill: color-mix(in srgb, var(--input-color-disable-stroke) calc(100% * 1), transparent);
8067
8123
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovula/ui",
3
- "version": "0.0.68",
3
+ "version": "0.0.69",
4
4
  "main": "dist/cjs/bundle.js",
5
5
  "module": "dist/esm/bundle.js",
6
6
  "types": "dist/index.d.ts",
@@ -2,6 +2,7 @@ import React, { useRef } from "react";
2
2
  import type { Meta, StoryObj } from "@storybook/react";
3
3
  import TextInput from "./TextInput";
4
4
  import { CalendarIcon } from "@heroicons/react/16/solid";
5
+ import Icon from "../Icon/Icon";
5
6
 
6
7
  // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
7
8
  const meta = {
@@ -124,3 +125,85 @@ export const FuctionInput = {
124
125
  );
125
126
  },
126
127
  } satisfies StoryObj;
128
+
129
+ export const CustomIcon = {
130
+ args: {
131
+ label: "Placeholder Text",
132
+ // value: "",
133
+ disabled: true,
134
+ },
135
+ render: (args) => {
136
+ console.log("args ", args);
137
+ const props: typeof args = {
138
+ ...args,
139
+ };
140
+ return (
141
+ <div className="flex flex-col gap-4 w-full">
142
+ <div>
143
+ <h4>Icon mode: solid:</h4>
144
+ </div>
145
+ <div className="flex flex-row gap-4 w-full">
146
+ <TextInput
147
+ id="1"
148
+ size="lg"
149
+ {...args}
150
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
151
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
152
+ />
153
+ <TextInput
154
+ id="2"
155
+ size="md"
156
+ {...args}
157
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
158
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
159
+ />
160
+ <TextInput
161
+ id="3"
162
+ size="sm"
163
+ {...args}
164
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
165
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
166
+ />
167
+ </div>
168
+ <div>
169
+ <h4>Icon mode: flat:</h4>
170
+ </div>
171
+ <div className="flex flex-row gap-4 w-full">
172
+ <TextInput
173
+ id="1"
174
+ size="lg"
175
+ {...args}
176
+ iconMode="flat"
177
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
178
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
179
+ />
180
+ <TextInput
181
+ id="2"
182
+ size="md"
183
+ {...args}
184
+ iconMode="flat"
185
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
186
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
187
+ />
188
+ <TextInput
189
+ id="3"
190
+ size="sm"
191
+ {...args}
192
+ iconMode="flat"
193
+ startIcon={<CalendarIcon className="size-full" fill="inherit" />}
194
+ endIcon={<CalendarIcon className="size-full" fill="inherit" />}
195
+ />
196
+ </div>
197
+ <TextInput
198
+ id="1"
199
+ size="lg"
200
+ {...args}
201
+ iconMode="flat"
202
+ startIcon={<Icon name="magnifying-glass" fill="inherit" />}
203
+ // <MagnifyingGlassIcon className="size-full" fill="inherit" />
204
+ hasClearIcon
205
+ />
206
+ </div>
207
+ );
208
+ },
209
+ } satisfies StoryObj;
@@ -156,6 +156,9 @@ export const labelVariant = cva(
156
156
  hasSearchIcon: {
157
157
  false: "",
158
158
  },
159
+ hasLeftSectionIcon: {
160
+ false: "",
161
+ },
159
162
  isFloatingLabel: {
160
163
  false: "hidden peer-placeholder-shown:block peer-focus:bg-transparent",
161
164
  },
@@ -268,12 +271,70 @@ export const labelVariant = cva(
268
271
  "left-11 peer-placeholder-shown:top-4 peer-placeholder-shown:typography-subtitile1",
269
272
  ],
270
273
  },
274
+
275
+ // -------- hasLeftSectionIcon ------
276
+ {
277
+ isFloatingLabel: true,
278
+ hasLeftSectionIcon: true,
279
+ size: "sm",
280
+ className: [
281
+ "left-[38px] -top-1.5 typography-label2 bg-input-label-bg",
282
+ "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-small1 peer-placeholder-shown:bg-transparent",
283
+ "peer-focus:-top-1.5 peer-focus:typography-label2",
284
+ ],
285
+ },
286
+ {
287
+ isFloatingLabel: true,
288
+ hasLeftSectionIcon: true,
289
+ size: "md",
290
+ className: [
291
+ "left-[46px] -top-1.5 typography-label1 bg-input-label-bg",
292
+ "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-subtitile4 peer-placeholder-shown:bg-transparent",
293
+ "peer-focus:-top-1.5 peer-focus:typography-label1",
294
+ ],
295
+ },
296
+ {
297
+ isFloatingLabel: true,
298
+ hasLeftSectionIcon: true,
299
+ size: "lg",
300
+ className: [
301
+ "left-[72px] -top-1.5 typography-label1 bg-input-label-bg",
302
+ "peer-placeholder-shown:top-4 peer-placeholder-shown:typography-subtitile1 peer-placeholder-shown:bg-transparent",
303
+ "peer-focus:-top-1.5 peer-focus:typography-label1",
304
+ ],
305
+ },
306
+ // floating = false and has search icon
307
+ {
308
+ isFloatingLabel: false,
309
+ hasLeftSectionIcon: true,
310
+ size: "sm",
311
+ className: [
312
+ "left-[38px] peer-placeholder-shown:top-2 peer-placeholder-shown:typography-small1",
313
+ ],
314
+ },
315
+ {
316
+ isFloatingLabel: false,
317
+ hasLeftSectionIcon: true,
318
+ size: "md",
319
+ className: [
320
+ "left-[46px] peer-placeholder-shown:top-2 peer-placeholder-shown:typography-subtitile4",
321
+ ],
322
+ },
323
+ {
324
+ isFloatingLabel: false,
325
+ hasLeftSectionIcon: true,
326
+ size: "lg",
327
+ className: [
328
+ "left-[72px] peer-placeholder-shown:top-4 peer-placeholder-shown:typography-subtitile1",
329
+ ],
330
+ },
271
331
  ],
272
332
  defaultVariants: {
273
333
  size: "md",
274
334
  disabled: false,
275
335
  error: false,
276
336
  hasSearchIcon: false,
337
+ hasLeftSectionIcon: false,
277
338
  isFloatingLabel: true,
278
339
  },
279
340
  }
@@ -360,7 +421,6 @@ export const sectionIconWrapperVariant = cva(
360
421
  [
361
422
  "cursor-pointer",
362
423
  "absolute items-center justify-center flex",
363
- "border-l border-l-input-default-stroke peer-hover:border-l-input-active-stroke peer-focus:border-l-input-active-stroke peer-disabled:border-l-input-disable-stroke",
364
424
  "fill-input-default-text peer-hover:fill-input-filled-text peer-focus:fill-input-filled-text peer-disabled:fill-input-disable-stroke",
365
425
  ],
366
426
  {
@@ -371,18 +431,68 @@ export const sectionIconWrapperVariant = cva(
371
431
  lg: "p-3 size-14",
372
432
  },
373
433
  rounded: {
374
- none: "rounded-r-none",
375
- normal: "rounded-r-xl",
376
- full: "rounded-r-full",
434
+ none: "",
435
+ normal: "",
436
+ full: "",
377
437
  },
378
438
  error: {
379
- true: "border-l-input-error",
439
+ false: "",
380
440
  },
381
441
  position: {
382
- start: "inset-y-0 left-0 ",
383
- end: "inset-y-0 right-0 ",
442
+ start: [
443
+ "inset-y-0 left-0 ",
444
+ "border-r border-r-input-default-stroke peer-hover:border-r-input-active-stroke peer-focus:border-r-input-active-stroke peer-disabled:border-r-input-disable-stroke",
445
+ ],
446
+ end: [
447
+ "inset-y-0 right-0 ",
448
+ "border-l border-l-input-default-stroke peer-hover:border-l-input-active-stroke peer-focus:border-l-input-active-stroke peer-disabled:border-l-input-disable-stroke",
449
+ ],
384
450
  },
385
451
  },
452
+ compoundVariants: [
453
+ // --- start rounded ---
454
+ {
455
+ position: "start",
456
+ rounded: "none",
457
+ className: "rounded-l-none",
458
+ },
459
+ {
460
+ position: "start",
461
+ rounded: "normal",
462
+ className: "rounded-l-xl",
463
+ },
464
+ {
465
+ position: "start",
466
+ rounded: "full",
467
+ className: "rounded-l-full",
468
+ },
469
+ {
470
+ position: "end",
471
+ rounded: "none",
472
+ className: "rounded-r-none",
473
+ },
474
+ {
475
+ position: "end",
476
+ rounded: "normal",
477
+ className: "rounded-r-xl",
478
+ },
479
+ {
480
+ position: "end",
481
+ rounded: "full",
482
+ className: "rounded-r-full",
483
+ },
484
+ // --- Error start ---
485
+ {
486
+ position: "start",
487
+ error: true,
488
+ className: "border-r-input-error",
489
+ },
490
+ {
491
+ position: "end",
492
+ error: true,
493
+ className: "border-l-input-error",
494
+ },
495
+ ],
386
496
  defaultVariants: {
387
497
  size: "md",
388
498
  rounded: "normal",