Skip to content

Commit edda0e3

Browse files
authored
fix(core): add missing error styles for inputs with errors (#2384)
1 parent cb2e29e commit edda0e3

3 files changed

Lines changed: 49 additions & 6 deletions

File tree

.changeset/crazy-wings-smell.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
"@bigcommerce/catalyst-core": patch
3+
---
4+
5+
Add missing border style for `Input`, `NumberInput` and `DatePicker`.
6+
7+
## Migration
8+
9+
Following convention, add these conditional classes to the fields using `clsx`:
10+
11+
```
12+
{
13+
light:
14+
errors && errors.length > 0
15+
? 'border-[var(--input-light-border-error,hsl(var(--error)))]'
16+
: 'border-[var(--input-light-border,hsl(var(--contrast-100)))]',
17+
dark:
18+
errors && errors.length > 0
19+
? 'border-[var(--input-dark-border-error,hsl(var(--error)))]'
20+
: 'border-[var(--input-dark-border,hsl(var(--contrast-500)))]',
21+
}[colorScheme],
22+
```

core/vibes/soul/form/input/index.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ import { Label } from '@/vibes/soul/form/label';
1313
* --input-light-background: hsl(var(--background));
1414
* --input-light-text: hsl(var(--foreground));
1515
* --input-light-border: hsl(var(--contrast-100));
16+
* --input-light-border-error: hsl(var(--error));
1617
* --input-light-focus: hsl(var(--foreground));
1718
* --input-light-placeholder: hsl(var(--contrast-500));
18-
* --input-light-error: hsl(var(--error));
1919
* --input-dark-background: hsl(var(--foreground));
2020
* --input-dark-text: hsl(var(--background));
2121
* --input-dark-border: hsl(var(--contrast-500));
2222
* --input-dark-focus: hsl(var(--background));
2323
* --input-dark-placeholder: hsl(var(--contrast-100));
24-
* --input-dark-error: hsl(var(--error));
24+
* --input-dark-border-error: hsl(var(--error));
2525
* }
2626
* ```
2727
*/
@@ -48,8 +48,18 @@ export const Input = React.forwardRef<
4848
'relative overflow-hidden rounded-lg border transition-colors duration-200 focus:outline-none',
4949
{
5050
light:
51-
'border-[var(--input-light-border,hsl(var(--contrast-100)))] bg-[var(--input-light-background,hsl(var(--background)))] focus-within:border-[var(--input-light-focus,hsl(var(--foreground)))]',
52-
dark: 'border-[var(--input-dark-border,hsl(var(--contrast-500)))] bg-[var(--input-dark-background,hsl(var(--foreground)))] focus-within:border-[var(--input-dark-focus,hsl(var(--background)))]',
51+
'bg-[var(--input-light-background,hsl(var(--background)))] focus-within:border-[var(--input-light-focus,hsl(var(--foreground)))]',
52+
dark: 'bg-[var(--input-dark-background,hsl(var(--foreground)))] focus-within:border-[var(--input-dark-focus,hsl(var(--background)))]',
53+
}[colorScheme],
54+
{
55+
light:
56+
errors && errors.length > 0
57+
? 'border-[var(--input-light-border-error,hsl(var(--error)))]'
58+
: 'border-[var(--input-light-border,hsl(var(--contrast-100)))]',
59+
dark:
60+
errors && errors.length > 0
61+
? 'border-[var(--input-dark-border-error,hsl(var(--error)))]'
62+
: 'border-[var(--input-dark-border,hsl(var(--contrast-500)))]',
5363
}[colorScheme],
5464
)}
5565
>

core/vibes/soul/form/number-input/index.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ import { Label } from '@/vibes/soul/form/label';
2121
* --number-input-light-button-background: hsl(var(--background));
2222
* --number-input-light-button-background-hover: hsl(var(--contrast-100) / 50%);
2323
* --number-input-light-border: hsl(var(--contrast-100));
24+
* --number-input-light-border-error: hsl(var(--error));
2425
* --number-input-dark-background: hsl(var(--background));
2526
* --number-input-dark-text: hsl(var(--background));
2627
* --number-input-dark-icon: hsl(var(--contrast-300));
2728
* --number-input-dark-icon-hover: hsl(var(--background));
2829
* --number-input-dark-button-background: hsl(var(--foreground));
2930
* --number-input-dark-button-background-hover: hsl(var(--contrast-500) / 50%);
3031
* --number-input-dark-border: hsl(var(--contrast-500));
32+
* --number-input-dark-border-error: hsl(var(--error));
3133
* }
3234
* ```
3335
*/
@@ -67,10 +69,19 @@ export const NumberInput = React.forwardRef<
6769
<div
6870
className={clsx(
6971
'inline-flex items-center rounded-lg border',
72+
{
73+
light: 'bg-[var(--number-input-light-background,hsl(var(--background)))]',
74+
dark: 'bg-[var(--number-input-dark-background,hsl(var(--foreground)))]',
75+
}[colorScheme],
7076
{
7177
light:
72-
'border-[var(--number-input-light-border,hsl(var(--contrast-100)))] bg-[var(--number-input-light-background,hsl(var(--background)))]',
73-
dark: 'border-[var(--number-input-dark-border,hsl(var(--contrast-500)))] bg-[var(--number-input-dark-background,hsl(var(--foreground)))]',
78+
errors && errors.length > 0
79+
? 'border-[var(--number-input-light-border-error,hsl(var(--error)))]'
80+
: 'border-[var(--number-input-light-border,hsl(var(--contrast-100)))]',
81+
dark:
82+
errors && errors.length > 0
83+
? 'border-[var(--number-input-dark-border-error,hsl(var(--error)))]'
84+
: 'border-[var(--number-input-dark-border,hsl(var(--contrast-500)))]',
7485
}[colorScheme],
7586
)}
7687
>

0 commit comments

Comments
 (0)