@wellingtonhlc/shared-ui 0.25.6 → 0.25.8
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 +34 -0
- package/dist/components/Button.js +4 -4
- package/dist/components/FieldControl.js +1 -1
- package/dist/components/FieldGroup.d.ts +2 -1
- package/dist/components/FieldGroup.d.ts.map +1 -1
- package/dist/components/FieldGroup.js +2 -2
- package/dist/components/RadioGroup.d.ts +2 -1
- package/dist/components/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup.js +37 -2
- package/dist/components/form-control-helpers.d.ts +1 -1
- package/dist/components/form-control-helpers.d.ts.map +1 -1
- package/dist/components/form-control-helpers.js +1 -1
- package/dist/styles.css +63 -41
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -205,6 +205,40 @@ para declarar o formato esperado pelo campo:
|
|
|
205
205
|
|
|
206
206
|
`enableTime` permanece suportado como alias legado para `mode="dateTime"`.
|
|
207
207
|
|
|
208
|
+
## FieldGroup
|
|
209
|
+
|
|
210
|
+
`FieldGroup` renderiza um grupo visual de campos com legenda. A borda vem ativa por
|
|
211
|
+
padrao; use `bordered={false}` quando o consumidor precisar manter a semantica de
|
|
212
|
+
grupo sem adicionar contorno visual.
|
|
213
|
+
|
|
214
|
+
```tsx
|
|
215
|
+
import { FieldGroup, TextField } from '@wellingtonhlc/shared-ui';
|
|
216
|
+
|
|
217
|
+
<FieldGroup title="Endereco" bordered={false}>
|
|
218
|
+
<TextField label="CEP" />
|
|
219
|
+
<TextField label="Cidade" />
|
|
220
|
+
</FieldGroup>;
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## RadioGroup
|
|
224
|
+
|
|
225
|
+
`RadioGroup` segue a mesma escala de altura dos campos base (`xs`, `sm`, `md`,
|
|
226
|
+
`lg`) para alinhar visualmente com `TextField`, `SelectField` e demais controles
|
|
227
|
+
na mesma linha de formulario.
|
|
228
|
+
|
|
229
|
+
O padrao `boxed` renderiza um `fieldset` com legenda, fazendo a borda contornar
|
|
230
|
+
o grupo a partir da label. Use `variant="plain"` quando precisar do grupo sem
|
|
231
|
+
borda.
|
|
232
|
+
|
|
233
|
+
```tsx
|
|
234
|
+
import { RadioGroup } from '@wellingtonhlc/shared-ui';
|
|
235
|
+
|
|
236
|
+
<RadioGroup label="Tipo Pessoa" value={1} onChange={setType}>
|
|
237
|
+
<RadioGroup.Item value={1} label="Fisica" />
|
|
238
|
+
<RadioGroup.Item value={2} label="Juridica" />
|
|
239
|
+
</RadioGroup>;
|
|
240
|
+
```
|
|
241
|
+
|
|
208
242
|
## AppShell.Topbar.Button
|
|
209
243
|
|
|
210
244
|
Use `AppShell.Topbar.Button` para acoes de icone na barra superior, como notificacoes,
|
|
@@ -6,10 +6,10 @@ const variantClasses = {
|
|
|
6
6
|
secondary: 'border-[color-mix(in_srgb,var(--brand)_34%,var(--app-border))] bg-[color-mix(in_srgb,var(--brand)_12%,var(--surface))] text-[color-mix(in_srgb,var(--brand)_88%,var(--foreground))] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--brand)_8%,transparent)] hover:border-[color-mix(in_srgb,var(--brand)_48%,var(--app-border))] hover:bg-[color-mix(in_srgb,var(--brand)_18%,var(--surface))] dark:border-[color-mix(in_srgb,var(--brand)_42%,var(--app-border))] dark:bg-[color-mix(in_srgb,var(--brand)_18%,var(--surface))] dark:text-[color-mix(in_srgb,var(--brand)_42%,#fff)] dark:hover:bg-[color-mix(in_srgb,var(--brand)_24%,var(--surface))] dark:hover:text-[color-mix(in_srgb,var(--brand)_30%,#fff)]',
|
|
7
7
|
ghost: 'border-transparent bg-transparent text-foreground-muted hover:bg-[color-mix(in_srgb,var(--brand)_10%,transparent)] hover:text-[color-mix(in_srgb,var(--brand)_86%,var(--foreground))] dark:hover:bg-[color-mix(in_srgb,var(--brand)_14%,transparent)] dark:hover:text-[color-mix(in_srgb,var(--brand)_78%,#fff)]',
|
|
8
8
|
outline: 'border-app-border bg-transparent text-foreground hover:border-[color-mix(in_srgb,var(--brand)_46%,var(--app-border))] hover:bg-[color-mix(in_srgb,var(--brand)_8%,transparent)] hover:text-[color-mix(in_srgb,var(--brand)_86%,var(--foreground))] dark:hover:border-[color-mix(in_srgb,var(--brand)_54%,var(--app-border))] dark:hover:bg-[color-mix(in_srgb,var(--brand)_12%,transparent)] dark:hover:text-[color-mix(in_srgb,var(--brand)_78%,#fff)]',
|
|
9
|
-
information: 'border-
|
|
10
|
-
success: 'border-
|
|
11
|
-
warning: 'border-
|
|
12
|
-
danger: 'border-
|
|
9
|
+
information: 'border-[var(--status-info-border,#93c5fd)] bg-[var(--status-info-bg,rgba(219,234,254,0.8))] text-[var(--status-info-text,#1d4ed8)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--status-info-border,#93c5fd)_18%,transparent)] hover:bg-[color-mix(in_srgb,var(--status-info-bg,rgba(219,234,254,0.8))_78%,var(--status-info-border,#93c5fd))]',
|
|
10
|
+
success: 'border-[var(--status-success-border,#86efac)] bg-[var(--status-success-bg,rgba(220,252,231,0.8))] text-[var(--status-success-text,#15803d)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--status-success-border,#86efac)_18%,transparent)] hover:bg-[color-mix(in_srgb,var(--status-success-bg,rgba(220,252,231,0.8))_78%,var(--status-success-border,#86efac))]',
|
|
11
|
+
warning: 'border-[var(--status-warning-border,#fcd34d)] bg-[var(--status-warning-bg,rgba(254,243,199,0.8))] text-[var(--status-warning-text,#92400e)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--status-warning-border,#fcd34d)_18%,transparent)] hover:bg-[color-mix(in_srgb,var(--status-warning-bg,rgba(254,243,199,0.8))_78%,var(--status-warning-border,#fcd34d))]',
|
|
12
|
+
danger: 'border-[var(--status-danger-border,#fca5a5)] bg-[var(--status-danger-bg,rgba(254,202,202,0.8))] text-[var(--status-danger-text,#b91c1c)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--status-danger-border,#fca5a5)_18%,transparent)] hover:bg-[color-mix(in_srgb,var(--status-danger-bg,rgba(254,202,202,0.8))_78%,var(--status-danger-border,#fca5a5))]',
|
|
13
13
|
destructive: 'border-transparent bg-[var(--destructive)] text-white hover:bg-[color-mix(in_srgb,var(--destructive)_88%,#000)]',
|
|
14
14
|
sidebar: 'border-transparent bg-transparent text-foreground-muted hover:bg-[color-mix(in_srgb,var(--brand)_10%,transparent)] hover:text-[var(--brand)]',
|
|
15
15
|
};
|
|
@@ -12,7 +12,7 @@ export const FieldControl = ({ label, id, wrapperClassName, labelClassName = '',
|
|
|
12
12
|
const roundedClass = roundedFull ? 'fc-rounded-full' : '';
|
|
13
13
|
const isHorizontal = labelPosition === 'left' || labelPosition === 'right';
|
|
14
14
|
const labelSizeClassMap = {
|
|
15
|
-
xs: 'text-[10px]
|
|
15
|
+
xs: 'text-[10px]',
|
|
16
16
|
sm: 'text-xs',
|
|
17
17
|
md: 'text-sm',
|
|
18
18
|
lg: 'text-base',
|
|
@@ -3,8 +3,9 @@ export interface FieldGroupProps {
|
|
|
3
3
|
title: string;
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
className?: string;
|
|
6
|
+
bordered?: boolean;
|
|
6
7
|
titleAlign?: 'left' | 'center' | 'right';
|
|
7
8
|
}
|
|
8
|
-
export declare function FieldGroup({ children, className, title, titleAlign }: FieldGroupProps): import("react").JSX.Element;
|
|
9
|
+
export declare function FieldGroup({ bordered, children, className, title, titleAlign }: FieldGroupProps): import("react").JSX.Element;
|
|
9
10
|
export declare const FormSection: typeof FieldGroup;
|
|
10
11
|
//# sourceMappingURL=FieldGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldGroup.d.ts","sourceRoot":"","sources":["../../src/components/FieldGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC1C;AAQD,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAmB,EAAE,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"FieldGroup.d.ts","sourceRoot":"","sources":["../../src/components/FieldGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC1C;AAQD,wBAAgB,UAAU,CAAC,EAAE,QAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAmB,EAAE,EAAE,eAAe,+BAS/G;AAED,eAAO,MAAM,WAAW,mBAAa,CAAC"}
|
|
@@ -5,7 +5,7 @@ const titleAlignClass = {
|
|
|
5
5
|
center: 'mx-auto',
|
|
6
6
|
right: 'ml-auto',
|
|
7
7
|
};
|
|
8
|
-
export function FieldGroup({ children, className, title, titleAlign = 'left' }) {
|
|
9
|
-
return (_jsxs("fieldset", { className: cn('
|
|
8
|
+
export function FieldGroup({ bordered = true, children, className, title, titleAlign = 'left' }) {
|
|
9
|
+
return (_jsxs("fieldset", { className: cn('rounded-xl px-4 pb-4 pt-2', bordered && 'border-app-border border', className), children: [_jsx("legend", { className: cn('text-foreground-muted px-2 text-xs font-medium', titleAlignClass[titleAlign]), children: title }), children] }));
|
|
10
10
|
}
|
|
11
11
|
export const FormSection = FieldGroup;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type FieldValues } from 'react-hook-form';
|
|
3
|
-
import type
|
|
3
|
+
import { type FormControlSize } from './form-control-helpers';
|
|
4
4
|
export interface RadioGroupProps<TFieldValues extends FieldValues = FieldValues> {
|
|
5
5
|
value?: string | number | null;
|
|
6
6
|
onChange?: (value: string | number) => void;
|
|
@@ -12,6 +12,7 @@ export interface RadioGroupProps<TFieldValues extends FieldValues = FieldValues>
|
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
size?: FormControlSize;
|
|
14
14
|
direction?: 'row' | 'column';
|
|
15
|
+
variant?: 'plain' | 'boxed';
|
|
15
16
|
children?: React.ReactNode;
|
|
16
17
|
control?: unknown;
|
|
17
18
|
rules?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAe5E,MAAM,WAAW,eAAe,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2JD,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,mBAAmB,qBA6BrF;AAaD,iBAAS,cAAc,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,qBAM3G;AAED,eAAO,MAAM,UAAU;;CAA0C,CAAC"}
|
|
@@ -3,6 +3,8 @@ import React from 'react';
|
|
|
3
3
|
import { useController, } from 'react-hook-form';
|
|
4
4
|
import { cn } from '../utils/cn';
|
|
5
5
|
import { FieldControl } from './FieldControl';
|
|
6
|
+
import { FieldValidationError } from './FieldValidationError';
|
|
7
|
+
import { fieldWrapper } from './form-control-helpers';
|
|
6
8
|
const RadioGroupContext = React.createContext({
|
|
7
9
|
size: 'sm',
|
|
8
10
|
onChange: () => { },
|
|
@@ -13,15 +15,48 @@ const sizeStyles = {
|
|
|
13
15
|
md: { outer: 'h-5 w-5', dot: 'h-2.5 w-2.5', text: 'text-sm' },
|
|
14
16
|
lg: { outer: 'h-6 w-6', dot: 'h-3 w-3', text: 'text-base' },
|
|
15
17
|
};
|
|
16
|
-
|
|
18
|
+
const groupHeightStyles = {
|
|
19
|
+
xs: 'h-7',
|
|
20
|
+
sm: 'h-9',
|
|
21
|
+
md: 'h-12',
|
|
22
|
+
lg: 'h-14',
|
|
23
|
+
};
|
|
24
|
+
const groupMinHeightStyles = {
|
|
25
|
+
xs: 'min-h-7',
|
|
26
|
+
sm: 'min-h-9',
|
|
27
|
+
md: 'min-h-12',
|
|
28
|
+
lg: 'min-h-14',
|
|
29
|
+
};
|
|
30
|
+
const groupPaddingStyles = {
|
|
31
|
+
xs: 'px-2',
|
|
32
|
+
sm: 'px-3',
|
|
33
|
+
md: 'px-4',
|
|
34
|
+
lg: 'px-6',
|
|
35
|
+
};
|
|
36
|
+
const boxedFieldsetHeightStyles = {
|
|
37
|
+
xs: 'min-h-12',
|
|
38
|
+
sm: 'min-h-14',
|
|
39
|
+
md: 'min-h-[4.25rem]',
|
|
40
|
+
lg: 'min-h-[4.75rem]',
|
|
41
|
+
};
|
|
42
|
+
function RadioGroupBase({ children, direction = 'row', disabled = false, errorMessage, inputDisabled, inputName, inputOnBlur, inputValue, label, labelClassName = '', name, onChange, onValueChange, size = 'sm', value, variant = 'boxed', wrapperClassName, }) {
|
|
43
|
+
const generatedId = React.useId().replace(/:/g, '');
|
|
17
44
|
const resolvedValue = inputValue ?? value;
|
|
18
45
|
const resolvedName = inputName ?? name;
|
|
19
46
|
const resolvedDisabled = inputDisabled ?? disabled;
|
|
47
|
+
const legendId = `rg-${generatedId}-legend`;
|
|
48
|
+
const errorId = `rg-${generatedId}-error`;
|
|
49
|
+
const describedBy = errorMessage ? errorId : undefined;
|
|
20
50
|
function handleChange(nextValue) {
|
|
21
51
|
onValueChange?.(nextValue);
|
|
22
52
|
onChange?.(nextValue);
|
|
23
53
|
}
|
|
24
|
-
|
|
54
|
+
const groupClassName = cn('flex gap-3', direction === 'column' ? groupMinHeightStyles[size] : groupHeightStyles[size], direction === 'column' ? 'flex-col items-start justify-center' : 'flex-row flex-wrap items-center');
|
|
55
|
+
const boxedGroupClassName = cn(groupClassName, direction === 'row' && 'justify-around', groupPaddingStyles[size]);
|
|
56
|
+
if (variant === 'plain') {
|
|
57
|
+
return (_jsx(RadioGroupContext.Provider, { value: { name: resolvedName, value: resolvedValue, disabled: resolvedDisabled, size, onChange: handleChange }, children: _jsx(FieldControl, { label: label, wrapperClassName: wrapperClassName, labelClassName: labelClassName, errorMessage: errorMessage, size: size, disabled: resolvedDisabled, children: () => (_jsx("div", { role: "radiogroup", "aria-label": label, "aria-describedby": describedBy, onBlur: inputOnBlur, className: groupClassName, children: children })) }) }));
|
|
58
|
+
}
|
|
59
|
+
return (_jsx(RadioGroupContext.Provider, { value: { name: resolvedName, value: resolvedValue, disabled: resolvedDisabled, size, onChange: handleChange }, children: _jsxs("div", { className: cn(fieldWrapper, wrapperClassName), "data-disabled": resolvedDisabled || undefined, "data-invalid": !!errorMessage || undefined, children: [_jsxs("fieldset", { className: cn('border-app-border flex h-full flex-1 flex-col justify-center rounded-xl border px-3 pb-2 pt-0 transition-[background-color,border-color,box-shadow,color] duration-200', boxedFieldsetHeightStyles[size], resolvedDisabled && 'cursor-not-allowed opacity-60', errorMessage && 'border-red-500 dark:border-red-400'), children: [label ? (_jsx("legend", { id: legendId, className: cn('text-foreground-muted px-2 text-xs font-medium transition-colors', resolvedDisabled && 'cursor-not-allowed opacity-70', errorMessage && 'text-red-600 dark:text-red-400', labelClassName), children: label })) : null, _jsx("div", { role: "radiogroup", "aria-label": label ? undefined : resolvedName, "aria-labelledby": label ? legendId : undefined, "aria-describedby": describedBy, onBlur: inputOnBlur, className: boxedGroupClassName, children: children })] }), _jsx(FieldValidationError, { id: errorId, message: errorMessage })] }) }));
|
|
25
60
|
}
|
|
26
61
|
function Item({ className, disabled: itemDisabled, label, value }) {
|
|
27
62
|
const { value: groupValue, disabled: groupDisabled, size, onChange } = React.useContext(RadioGroupContext);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const fieldWrapper = "flex w-full flex-col space-y-1";
|
|
2
|
-
export declare const labelBase = "
|
|
2
|
+
export declare const labelBase = "text-md font-medium";
|
|
3
3
|
export type FormControlVariant = 'default' | 'filled' | 'ghost' | 'neutral';
|
|
4
4
|
interface ControlClassOptions {
|
|
5
5
|
errorMessage?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-control-helpers.d.ts","sourceRoot":"","sources":["../../src/components/form-control-helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAE7D,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"form-control-helpers.d.ts","sourceRoot":"","sources":["../../src/components/form-control-helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAE7D,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAgC5E,UAAU,mBAAmB;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;AAClG,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cn } from '../utils/cn';
|
|
2
2
|
export const fieldWrapper = 'flex w-full flex-col space-y-1';
|
|
3
|
-
export const labelBase = '
|
|
3
|
+
export const labelBase = 'text-md font-medium';
|
|
4
4
|
const controlShared = cn('text-foreground placeholder:text-foreground-muted w-full rounded-md px-3 py-2 font-medium border', 'transition-[background-color,border-color,box-shadow,color] duration-200', 'disabled:cursor-not-allowed disabled:opacity-60');
|
|
5
5
|
const controlDefault = cn(controlShared, 'bg-surface border-app-border', 'enabled:hover:border-brand', 'focus:outline-none focus:bg-surface focus:border-brand focus:ring-2 focus:ring-inset focus:ring-brand/35', 'disabled:bg-input-bg disabled:border-app-border');
|
|
6
6
|
const controlFilled = cn(controlShared, 'bg-input-bg border-app-border', 'enabled:hover:border-brand enabled:hover:bg-[color-mix(in_srgb,var(--input-bg)_75%,var(--surface))]', 'focus:outline-none focus:bg-surface focus:border-brand focus:ring-2 focus:ring-inset focus:ring-brand/35', 'disabled:bg-input-bg disabled:border-app-border');
|
package/dist/styles.css
CHANGED
|
@@ -956,6 +956,9 @@ h2.react-datepicker__current-month {
|
|
|
956
956
|
.order-3 {
|
|
957
957
|
order: 3;
|
|
958
958
|
}
|
|
959
|
+
.col-span-4 {
|
|
960
|
+
grid-column: span 4 / span 4;
|
|
961
|
+
}
|
|
959
962
|
.col-span-12 {
|
|
960
963
|
grid-column: span 12 / span 12;
|
|
961
964
|
}
|
|
@@ -1019,9 +1022,6 @@ h2.react-datepicker__current-month {
|
|
|
1019
1022
|
.mb-0 {
|
|
1020
1023
|
margin-bottom: calc(var(--spacing) * 0);
|
|
1021
1024
|
}
|
|
1022
|
-
.mb-0\.5 {
|
|
1023
|
-
margin-bottom: calc(var(--spacing) * 0.5);
|
|
1024
|
-
}
|
|
1025
1025
|
.mb-1 {
|
|
1026
1026
|
margin-bottom: calc(var(--spacing) * 1);
|
|
1027
1027
|
}
|
|
@@ -1289,6 +1289,12 @@ h2.react-datepicker__current-month {
|
|
|
1289
1289
|
.min-h-\[2rem\] {
|
|
1290
1290
|
min-height: 2rem;
|
|
1291
1291
|
}
|
|
1292
|
+
.min-h-\[4\.25rem\] {
|
|
1293
|
+
min-height: 4.25rem;
|
|
1294
|
+
}
|
|
1295
|
+
.min-h-\[4\.75rem\] {
|
|
1296
|
+
min-height: 4.75rem;
|
|
1297
|
+
}
|
|
1292
1298
|
.min-h-\[10rem\] {
|
|
1293
1299
|
min-height: 10rem;
|
|
1294
1300
|
}
|
|
@@ -1591,6 +1597,9 @@ h2.react-datepicker__current-month {
|
|
|
1591
1597
|
.grid-cols-2 {
|
|
1592
1598
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1593
1599
|
}
|
|
1600
|
+
.grid-cols-12 {
|
|
1601
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
1602
|
+
}
|
|
1594
1603
|
.grid-cols-\[8rem_minmax\(0\,1fr\)\] {
|
|
1595
1604
|
grid-template-columns: 8rem minmax(0,1fr);
|
|
1596
1605
|
}
|
|
@@ -1642,6 +1651,9 @@ h2.react-datepicker__current-month {
|
|
|
1642
1651
|
.items-stretch {
|
|
1643
1652
|
align-items: stretch;
|
|
1644
1653
|
}
|
|
1654
|
+
.justify-around {
|
|
1655
|
+
justify-content: space-around;
|
|
1656
|
+
}
|
|
1645
1657
|
.justify-between {
|
|
1646
1658
|
justify-content: space-between;
|
|
1647
1659
|
}
|
|
@@ -1989,27 +2001,15 @@ h2.react-datepicker__current-month {
|
|
|
1989
2001
|
.bg-\[var\(--status-danger-bg\,rgba\(254\,202\,202\,0\.8\)\)\] {
|
|
1990
2002
|
background-color: var(--status-danger-bg,rgba(254,202,202,0.8));
|
|
1991
2003
|
}
|
|
1992
|
-
.bg-\[var\(--status-danger-text\,\#b91c1c\)\] {
|
|
1993
|
-
background-color: var(--status-danger-text,#b91c1c);
|
|
1994
|
-
}
|
|
1995
2004
|
.bg-\[var\(--status-info-bg\,rgba\(219\,234\,254\,0\.8\)\)\] {
|
|
1996
2005
|
background-color: var(--status-info-bg,rgba(219,234,254,0.8));
|
|
1997
2006
|
}
|
|
1998
|
-
.bg-\[var\(--status-info-text\,\#1d4ed8\)\] {
|
|
1999
|
-
background-color: var(--status-info-text,#1d4ed8);
|
|
2000
|
-
}
|
|
2001
2007
|
.bg-\[var\(--status-success-bg\,rgba\(220\,252\,231\,0\.8\)\)\] {
|
|
2002
2008
|
background-color: var(--status-success-bg,rgba(220,252,231,0.8));
|
|
2003
2009
|
}
|
|
2004
|
-
.bg-\[var\(--status-success-text\,\#15803d\)\] {
|
|
2005
|
-
background-color: var(--status-success-text,#15803d);
|
|
2006
|
-
}
|
|
2007
2010
|
.bg-\[var\(--status-warning-bg\,rgba\(254\,243\,199\,0\.8\)\)\] {
|
|
2008
2011
|
background-color: var(--status-warning-bg,rgba(254,243,199,0.8));
|
|
2009
2012
|
}
|
|
2010
|
-
.bg-\[var\(--status-warning-text\,\#92400e\)\] {
|
|
2011
|
-
background-color: var(--status-warning-text,#92400e);
|
|
2012
|
-
}
|
|
2013
2013
|
.bg-app-border {
|
|
2014
2014
|
background-color: var(--color-app-border);
|
|
2015
2015
|
}
|
|
@@ -2181,6 +2181,9 @@ h2.react-datepicker__current-month {
|
|
|
2181
2181
|
.py-10 {
|
|
2182
2182
|
padding-block: calc(var(--spacing) * 10);
|
|
2183
2183
|
}
|
|
2184
|
+
.pt-0 {
|
|
2185
|
+
padding-top: calc(var(--spacing) * 0);
|
|
2186
|
+
}
|
|
2184
2187
|
.pt-2 {
|
|
2185
2188
|
padding-top: calc(var(--spacing) * 2);
|
|
2186
2189
|
}
|
|
@@ -2618,20 +2621,6 @@ h2.react-datepicker__current-month {
|
|
|
2618
2621
|
}
|
|
2619
2622
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2620
2623
|
}
|
|
2621
|
-
.shadow-\[0_10px_22px_-16px_color-mix\(in_srgb\,var\(--status-info-text\,\#1d4ed8\)_70\%\,\#000\)\] {
|
|
2622
|
-
--tw-shadow: 0 10px 22px -16px var(--tw-shadow-color, var(--status-info-text,#1d4ed8));
|
|
2623
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2624
|
-
--tw-shadow: 0 10px 22px -16px var(--tw-shadow-color, color-mix(in srgb,var(--status-info-text,#1d4ed8) 70%,#000));
|
|
2625
|
-
}
|
|
2626
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2627
|
-
}
|
|
2628
|
-
.shadow-\[0_10px_22px_-16px_color-mix\(in_srgb\,var\(--status-warning-text\,\#92400e\)_70\%\,\#000\)\] {
|
|
2629
|
-
--tw-shadow: 0 10px 22px -16px var(--tw-shadow-color, var(--status-warning-text,#92400e));
|
|
2630
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2631
|
-
--tw-shadow: 0 10px 22px -16px var(--tw-shadow-color, color-mix(in srgb,var(--status-warning-text,#92400e) 70%,#000));
|
|
2632
|
-
}
|
|
2633
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2634
|
-
}
|
|
2635
2624
|
.shadow-\[0_12px_32px_rgba\(15\,23\,42\,0\.06\)\] {
|
|
2636
2625
|
--tw-shadow: 0 12px 32px var(--tw-shadow-color, rgba(15,23,42,0.06));
|
|
2637
2626
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -2658,6 +2647,34 @@ h2.react-datepicker__current-month {
|
|
|
2658
2647
|
}
|
|
2659
2648
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2660
2649
|
}
|
|
2650
|
+
.shadow-\[inset_0_0_0_1px_color-mix\(in_srgb\,var\(--status-danger-border\,\#fca5a5\)_18\%\,transparent\)\] {
|
|
2651
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--status-danger-border,#fca5a5));
|
|
2652
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2653
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb,var(--status-danger-border,#fca5a5) 18%,transparent));
|
|
2654
|
+
}
|
|
2655
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2656
|
+
}
|
|
2657
|
+
.shadow-\[inset_0_0_0_1px_color-mix\(in_srgb\,var\(--status-info-border\,\#93c5fd\)_18\%\,transparent\)\] {
|
|
2658
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--status-info-border,#93c5fd));
|
|
2659
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2660
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb,var(--status-info-border,#93c5fd) 18%,transparent));
|
|
2661
|
+
}
|
|
2662
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2663
|
+
}
|
|
2664
|
+
.shadow-\[inset_0_0_0_1px_color-mix\(in_srgb\,var\(--status-success-border\,\#86efac\)_18\%\,transparent\)\] {
|
|
2665
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--status-success-border,#86efac));
|
|
2666
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2667
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb,var(--status-success-border,#86efac) 18%,transparent));
|
|
2668
|
+
}
|
|
2669
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2670
|
+
}
|
|
2671
|
+
.shadow-\[inset_0_0_0_1px_color-mix\(in_srgb\,var\(--status-warning-border\,\#fcd34d\)_18\%\,transparent\)\] {
|
|
2672
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--status-warning-border,#fcd34d));
|
|
2673
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2674
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb,var(--status-warning-border,#fcd34d) 18%,transparent));
|
|
2675
|
+
}
|
|
2676
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2677
|
+
}
|
|
2661
2678
|
.shadow-\[inset_0_0_0_1px_rgb\(var\(--color-brand\)\/0\.10\)\] {
|
|
2662
2679
|
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, rgb(var(--color-brand)/0.10));
|
|
2663
2680
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -3077,42 +3094,42 @@ h2.react-datepicker__current-month {
|
|
|
3077
3094
|
}
|
|
3078
3095
|
}
|
|
3079
3096
|
}
|
|
3080
|
-
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-danger-
|
|
3097
|
+
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-danger-bg\,rgba\(254\,202\,202\,0\.8\)\)_78\%\,var\(--status-danger-border\,\#fca5a5\)\)\] {
|
|
3081
3098
|
&:hover {
|
|
3082
3099
|
@media (hover: hover) {
|
|
3083
|
-
background-color: var(--status-danger-
|
|
3100
|
+
background-color: var(--status-danger-bg,rgba(254,202,202,0.8));
|
|
3084
3101
|
@supports (color: color-mix(in lab, red, red)) {
|
|
3085
|
-
background-color: color-mix(in srgb,var(--status-danger-
|
|
3102
|
+
background-color: color-mix(in srgb,var(--status-danger-bg,rgba(254,202,202,0.8)) 78%,var(--status-danger-border,#fca5a5));
|
|
3086
3103
|
}
|
|
3087
3104
|
}
|
|
3088
3105
|
}
|
|
3089
3106
|
}
|
|
3090
|
-
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-info-
|
|
3107
|
+
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-info-bg\,rgba\(219\,234\,254\,0\.8\)\)_78\%\,var\(--status-info-border\,\#93c5fd\)\)\] {
|
|
3091
3108
|
&:hover {
|
|
3092
3109
|
@media (hover: hover) {
|
|
3093
|
-
background-color: var(--status-info-
|
|
3110
|
+
background-color: var(--status-info-bg,rgba(219,234,254,0.8));
|
|
3094
3111
|
@supports (color: color-mix(in lab, red, red)) {
|
|
3095
|
-
background-color: color-mix(in srgb,var(--status-info-
|
|
3112
|
+
background-color: color-mix(in srgb,var(--status-info-bg,rgba(219,234,254,0.8)) 78%,var(--status-info-border,#93c5fd));
|
|
3096
3113
|
}
|
|
3097
3114
|
}
|
|
3098
3115
|
}
|
|
3099
3116
|
}
|
|
3100
|
-
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-success-
|
|
3117
|
+
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-success-bg\,rgba\(220\,252\,231\,0\.8\)\)_78\%\,var\(--status-success-border\,\#86efac\)\)\] {
|
|
3101
3118
|
&:hover {
|
|
3102
3119
|
@media (hover: hover) {
|
|
3103
|
-
background-color: var(--status-success-
|
|
3120
|
+
background-color: var(--status-success-bg,rgba(220,252,231,0.8));
|
|
3104
3121
|
@supports (color: color-mix(in lab, red, red)) {
|
|
3105
|
-
background-color: color-mix(in srgb,var(--status-success-
|
|
3122
|
+
background-color: color-mix(in srgb,var(--status-success-bg,rgba(220,252,231,0.8)) 78%,var(--status-success-border,#86efac));
|
|
3106
3123
|
}
|
|
3107
3124
|
}
|
|
3108
3125
|
}
|
|
3109
3126
|
}
|
|
3110
|
-
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-warning-
|
|
3127
|
+
.hover\:bg-\[color-mix\(in_srgb\,var\(--status-warning-bg\,rgba\(254\,243\,199\,0\.8\)\)_78\%\,var\(--status-warning-border\,\#fcd34d\)\)\] {
|
|
3111
3128
|
&:hover {
|
|
3112
3129
|
@media (hover: hover) {
|
|
3113
|
-
background-color: var(--status-warning-
|
|
3130
|
+
background-color: var(--status-warning-bg,rgba(254,243,199,0.8));
|
|
3114
3131
|
@supports (color: color-mix(in lab, red, red)) {
|
|
3115
|
-
background-color: color-mix(in srgb,var(--status-warning-
|
|
3132
|
+
background-color: color-mix(in srgb,var(--status-warning-bg,rgba(254,243,199,0.8)) 78%,var(--status-warning-border,#fcd34d));
|
|
3116
3133
|
}
|
|
3117
3134
|
}
|
|
3118
3135
|
}
|
|
@@ -3839,6 +3856,11 @@ h2.react-datepicker__current-month {
|
|
|
3839
3856
|
}
|
|
3840
3857
|
}
|
|
3841
3858
|
}
|
|
3859
|
+
.dark\:border-red-400 {
|
|
3860
|
+
@media (prefers-color-scheme: dark) {
|
|
3861
|
+
border-color: var(--color-red-400);
|
|
3862
|
+
}
|
|
3863
|
+
}
|
|
3842
3864
|
.dark\:\!bg-\[rgb\(var\(--color-brand\)\/0\.13\)\] {
|
|
3843
3865
|
@media (prefers-color-scheme: dark) {
|
|
3844
3866
|
background-color: rgb(var(--color-brand)/0.13) !important;
|