@aurea-uds/react 0.8.8 → 0.8.10

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/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { cx, defaultStrings, ptBR, defaultSpriteUrl, gridStateToParams, gridStat
2
2
  export { useAureaStrings, useSpriteUrl, useTheme, useDensity } from "./internal.js";
3
3
  export { type Responsive, type Breakpoint, type ContainerBreakpoint, type Orientation, ESCALA, ESCALA_CONTAINER } from "./pure.js";
4
4
  export { ContainerScope, useValorResponsivo } from "./responsivo-runtime.js";
5
- export { AspectRatio, InputGroup, InputGroupAddon, Label, Card, Stack, Cluster, Grid, KPI, DataList, Timeline, Prose, Badge, Progress, Skeleton, AvatarGroup, LogStream, MediaPlayerShell, Topbar, Kbd, Select, Textarea, Checkbox, Radio, Switch, Range, formatBadgeCount, type BadgeVariant, type BadgeEmphasis, type BadgeSize, type BadgePlacement, type BadgeProps, type AvatarSize, type TopbarVariant } from "./markup.js";
5
+ export { AspectRatio, InputGroup, InputGroupAddon, Label, Card, Stack, Cluster, Grid, KPI, DataList, Timeline, Prose, Badge, Progress, Skeleton, AvatarGroup, LogStream, MediaPlayerShell, Topbar, Kbd, Textarea, Checkbox, Radio, Switch, Range, formatBadgeCount, type BadgeVariant, type BadgeEmphasis, type BadgeSize, type BadgePlacement, type BadgeProps, type AvatarSize, type TopbarVariant } from "./markup.js";
6
6
  export * from "./system.js";
7
7
  export * from "./actions.js";
8
8
  export * from "./feedback.js";
package/dist/index.js CHANGED
@@ -51,7 +51,7 @@ export { ContainerScope, useValorResponsivo } from "./responsivo-runtime.js";
51
51
  // inteiro). O que muda é de ONDE ele vem — do módulo com a diretiva —, e aí ele volta a chegar
52
52
  // como referência de CLIENTE e os 118,5 KB voltam com ele. Não é um erro: é o ganho do item O1
53
53
  // se desfazendo em silêncio. É isso, exatamente isso, que o check 35 pega.
54
- export { AspectRatio, InputGroup, InputGroupAddon, Label, Card, Stack, Cluster, Grid, KPI, DataList, Timeline, Prose, Badge, Progress, Skeleton, AvatarGroup, LogStream, MediaPlayerShell, Topbar, Kbd, Select, Textarea, Checkbox, Radio, Switch, Range, formatBadgeCount } from "./markup.js";
54
+ export { AspectRatio, InputGroup, InputGroupAddon, Label, Card, Stack, Cluster, Grid, KPI, DataList, Timeline, Prose, Badge, Progress, Skeleton, AvatarGroup, LogStream, MediaPlayerShell, Topbar, Kbd, Textarea, Checkbox, Radio, Switch, Range, formatBadgeCount } from "./markup.js";
55
55
  export * from "./system.js";
56
56
  export * from "./actions.js";
57
57
  export * from "./feedback.js";
@@ -1,17 +1,19 @@
1
- import React, { type HTMLAttributes, type InputHTMLAttributes, type RefAttributes, type ReactNode } from "react";
1
+ import React, { type ButtonHTMLAttributes, type HTMLAttributes, type InputHTMLAttributes, type RefAttributes, type ReactNode } from "react";
2
2
  import { type Responsive } from "./pure.js";
3
3
  import { type FieldSize } from "./markup.js";
4
4
  import { type IconName } from "./system.js";
5
5
  export { FileInput, matchesAccept, type FileRejection, type UploadContext, type UploadFn } from "./file-input.js";
6
6
  export type FieldOrientation = "vertical" | "horizontal";
7
+ export type FieldLabelWidth = "auto" | (string & {});
7
8
  export interface FieldProps extends HTMLAttributes<HTMLDivElement>, RefAttributes<HTMLDivElement> {
8
9
  label: string;
9
10
  hint?: ReactNode;
10
11
  error?: ReactNode;
11
12
  name?: string;
12
13
  orientation?: Responsive<FieldOrientation>;
14
+ labelWidth?: FieldLabelWidth;
13
15
  }
14
- export declare function Field({ label, hint, error, children, className, id, name, orientation, ...props }: FieldProps): React.JSX.Element;
16
+ export declare function Field({ label, hint, error, children, className, id, name, orientation, labelWidth, style, ...props }: FieldProps): React.JSX.Element;
15
17
  export declare function Form({ errors, onSubmit, children, className, ...props }: Omit<React.FormHTMLAttributes<HTMLFormElement>, "onSubmit"> & RefAttributes<HTMLFormElement> & {
16
18
  errors?: Record<string, string | string[]>;
17
19
  onSubmit?: (values: Record<string, unknown>) => void;
@@ -103,6 +105,37 @@ export declare function MultiCombobox({ items, value, onValueChange, onInputChan
103
105
  "aria-describedby"?: string;
104
106
  "aria-invalid"?: boolean | "true" | "false";
105
107
  }): React.JSX.Element;
108
+ export interface SelectOption {
109
+ value: string;
110
+ label: ReactNode;
111
+ disabled?: boolean;
112
+ }
113
+ export interface SelectOptGroup {
114
+ label: ReactNode;
115
+ items: SelectOption[];
116
+ }
117
+ type SelectChange = {
118
+ target: {
119
+ value: string;
120
+ name?: string;
121
+ };
122
+ currentTarget: {
123
+ value: string;
124
+ name?: string;
125
+ };
126
+ };
127
+ export interface SelectProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" | "defaultValue" | "onChange" | "name">, RefAttributes<HTMLButtonElement> {
128
+ items?: SelectOption[] | SelectOptGroup[];
129
+ value?: string;
130
+ defaultValue?: string;
131
+ onChange?: (e: SelectChange) => void;
132
+ onValueChange?: (value: string) => void;
133
+ placeholder?: ReactNode;
134
+ name?: string;
135
+ required?: boolean;
136
+ size?: Responsive<FieldSize>;
137
+ }
138
+ export declare const Select: React.ForwardRefExoticComponent<Omit<SelectProps, "ref"> & RefAttributes<HTMLButtonElement>>;
106
139
  export interface EditorBlock {
107
140
  id: string;
108
141
  kind?: ReactNode;
@@ -6,6 +6,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
6
6
  import React, { forwardRef } from "react";
7
7
  import { valorBase, peleDoEixo, soOValor } from "./pure.js";
8
8
  import { Combobox as BaseCombobox } from "@base-ui/react/combobox";
9
+ import { Select as BaseSelect } from "@base-ui/react/select";
9
10
  import { Form as BaseForm } from "@base-ui/react/form";
10
11
  import { Field as BaseField } from "@base-ui/react/field";
11
12
  import { NumberField as BaseNumberField } from "@base-ui/react/number-field";
@@ -17,7 +18,7 @@ import { cx, useAureaStrings, usePortalContainer, useReorder } from "./internal.
17
18
  // diretiva — são marcação, e quem escuta `onChange` é o consumidor. Voltam IMPORTADOS e não só
18
19
  // reexportados porque o `ehControle` do `Field` compara por IDENTIDADE de referência: dois
19
20
  // objetos diferentes com o mesmo nome quebrariam o rótulo do campo em silêncio.
20
- import { Select, Textarea, Checkbox, Radio, Switch, Range, InputGroup, InputGroupAddon } from "./markup.js";
21
+ import { Textarea, Checkbox, Radio, Switch, Range, InputGroup, InputGroupAddon } from "./markup.js";
21
22
  import { Icon } from "./system.js";
22
23
  import { IconButton } from "./actions.js";
23
24
  // FileInput mora em arquivo próprio (132 linhas — upload real, aborto, progresso) e é público
@@ -78,7 +79,7 @@ function elementoRotulavel(tipo) {
78
79
  // regra que os outros: recebe `id` e espalha `...props` no `Input`, que é o nó focal.
79
80
  return [Input, Select, Textarea, SearchField, PasswordField, Checkbox, Radio, Switch, Range, Combobox, MultiCombobox].includes(tipo);
80
81
  }
81
- export function Field({ label, hint, error, children, className, id, name, orientation, ...props }) {
82
+ export function Field({ label, hint, error, children, className, id, name, orientation, labelWidth, style, ...props }) {
82
83
  const auto = React.useId();
83
84
  // Fragment não cria nó no DOM. Um Fragment com um só controle é só sintaxe; com vários,
84
85
  // Field precisa voltar para grupo em vez de pendurar `htmlFor` num id que nunca existirá.
@@ -122,7 +123,8 @@ export function Field({ label, hint, error, children, className, id, name, orien
122
123
  // embrulho o `Field.Root` recebe o erro e não tem a quem entregá-lo, e o campo fica válido na
123
124
  // árvore de acessibilidade enquanto a frase de erro aparece na tela. Pior que não mostrar.
124
125
  const controleFinal = name ? _jsx(BaseField.Control, { render: controle }) : controle;
125
- const corpo = _jsxs("div", { className: cx("field", peleDoEixo("field", orientation, "vertical", "field"), className), ...(nomeAqui ? {} : { role: "group", "aria-labelledby": idRotulo, ...(rotulavel ? {} : { "aria-describedby": descrito }) }), ...props, children: [_jsxs("span", { className: "label", children: [nomeAqui ? _jsx("label", { htmlFor: idControle, children: label }) : _jsx("span", { id: idRotulo, children: label }), hint && _jsx("span", { className: "hint", id: idHint, children: hint })] }), controleFinal, error && _jsx("span", { className: "field-error", id: idErro, children: error }), name && _jsx(BaseField.Error, { className: "field-error" })] });
126
+ const estilo = labelWidth ? { ...style, "--field-label-width": labelWidth === "auto" ? "max-content" : labelWidth } : style;
127
+ const corpo = _jsxs("div", { className: cx("field", peleDoEixo("field", orientation, "vertical", "field"), className), ...(nomeAqui ? {} : { role: "group", "aria-labelledby": idRotulo, ...(rotulavel ? {} : { "aria-describedby": descrito }) }), style: estilo, ...props, children: [_jsxs("span", { className: "label", children: [nomeAqui ? _jsx("label", { htmlFor: idControle, children: label }) : _jsx("span", { id: idRotulo, children: label }), hint && _jsx("span", { className: "hint", id: idHint, children: hint })] }), controleFinal, error && _jsx("span", { className: "field-error", id: idErro, children: error }), name && _jsx(BaseField.Error, { className: "field-error" })] });
126
128
  // `Field.Root` do motor entra SÓ quando há `name`: é ele que liga o campo à chave de `errors`
127
129
  // do formulário. Ele não desenha nada — é contexto — então a pele não muda.
128
130
  return name ? _jsx(BaseField.Root, { name: name, invalid: error ? true : undefined, render: corpo }) : corpo;
@@ -273,6 +275,38 @@ export function MultiCombobox({ items, value, onValueChange, onInputChange, load
273
275
  return _jsxs(BaseCombobox.Root, { multiple: true, items: items, value: value, onValueChange: soOValor(onValueChange), disabled: disabled, itemToStringLabel: (i) => i.label, filter: onInputChange ? null : undefined, onInputValueChange: onInputChange ? ((v, d) => { if (d.reason !== "item-press")
274
276
  onInputChange(v); }) : undefined, children: [_jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs(BaseCombobox.InputGroup, { className: "combobox-multi", children: [_jsx(BaseCombobox.Chips, { className: "combobox-chips", children: _jsx(BaseCombobox.Value, { children: (selected) => _jsxs(_Fragment, { children: [selected.map((item) => _jsxs(BaseCombobox.Chip, { className: "combobox-chip", children: [item.label, _jsx(BaseCombobox.ChipRemove, { className: "combobox-chip-remove", "aria-label": `${s.comboboxRemove} ${item.label}`, children: _jsx(Icon, { name: "close", size: "sm" }) })] }, item.value)), _jsx(BaseCombobox.Input, { id: inputId, placeholder: selected.length ? undefined : placeholder, className: "combobox-chip-input", "aria-describedby": descrito, "aria-invalid": invalido })] }) }) }), _jsxs("span", { className: "combobox-actions", children: [_jsx(BaseCombobox.Clear, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: s.comboboxClear }) }), _jsx(BaseCombobox.Trigger, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "chevron--down", label: s.comboboxOpen }) })] })] })] }), _jsx(BaseCombobox.Portal, { container: portal, children: _jsx(BaseCombobox.Positioner, { sideOffset: 6, children: _jsxs(BaseCombobox.Popup, { className: "menu combobox-popup", children: [_jsx(BaseCombobox.Empty, { className: "combobox-empty", children: loading ? s.comboboxLoading : (empty ?? s.comboboxEmpty) }), listaCombobox(items)] }) }) })] });
275
277
  }
278
+ const ehGrupoDoSelect = (i) => typeof i === "object" && i != null && "items" in i;
279
+ // Lê `<option>`/`<optgroup>` como o navegador lê: `value` ausente vale o TEXTO da opção.
280
+ function opcoesDosFilhos(children) {
281
+ const lista = [];
282
+ React.Children.forEach(children, filho => {
283
+ if (!React.isValidElement(filho))
284
+ return;
285
+ const pr = filho.props;
286
+ if (filho.type === "option")
287
+ lista.push({ value: String(pr.value ?? React.Children.toArray(pr.children).join("")), label: pr.children, disabled: pr.disabled });
288
+ else if (filho.type === "optgroup")
289
+ lista.push({ label: pr.label, items: opcoesDosFilhos(pr.children) });
290
+ else if (filho.type === React.Fragment)
291
+ lista.push(...opcoesDosFilhos(pr.children));
292
+ });
293
+ return lista;
294
+ }
295
+ const itemDoSelect = (o) => _jsxs(BaseSelect.Item, { value: o.value, disabled: o.disabled, className: "menu-item combobox-item", children: [_jsx("span", { className: "combobox-check", "aria-hidden": "true", children: _jsx(BaseSelect.ItemIndicator, { children: _jsx(Icon, { name: "checkmark", size: "sm" }) }) }), _jsx(BaseSelect.ItemText, { children: o.label })] }, o.value);
296
+ export const Select = forwardRef(function Select({ items, children, value, defaultValue, onChange, onValueChange, placeholder, name, required, disabled, size, className, ...props }, ref) {
297
+ const portal = usePortalContainer();
298
+ const lista = items ?? opcoesDosFilhos(children);
299
+ const planas = lista.flatMap(i => ehGrupoDoSelect(i) ? i.items : [i]);
300
+ const inicial = value === undefined && defaultValue === undefined && placeholder === undefined ? planas.find(o => !o.disabled)?.value : defaultValue;
301
+ const mudar = (v) => {
302
+ const valor = v ?? "";
303
+ onValueChange?.(valor);
304
+ onChange?.({ target: { value: valor, name }, currentTarget: { value: valor, name } });
305
+ };
306
+ return _jsxs(BaseSelect.Root, { items: planas.map(o => ({ value: o.value, label: o.label })), ...(value !== undefined ? { value } : { defaultValue: inicial }), onValueChange: v => mudar(v), name: name, required: required, disabled: disabled, children: [_jsx(BaseSelect.Trigger, { ref: ref, className: cx("select", "select-trigger", peleDoEixo("select", size), className), ...props, children: _jsx(BaseSelect.Value, { placeholder: placeholder, className: "select-value" }) }), _jsx(BaseSelect.Portal, { container: portal, children: _jsx(BaseSelect.Positioner, { sideOffset: 6, alignItemWithTrigger: false, children: _jsx(BaseSelect.Popup, { className: "menu combobox-popup", children: _jsx(BaseSelect.List, { children: lista.map((i, n) => ehGrupoDoSelect(i)
307
+ ? _jsxs(BaseSelect.Group, { className: "combobox-section", children: [_jsx(BaseSelect.GroupLabel, { className: "combobox-group-label", children: i.label }), i.items.map(itemDoSelect)] }, n)
308
+ : itemDoSelect(i)) }) }) }) })] });
309
+ });
276
310
  export function BlockEditor({ blocks, onReorder, onRemove, label, className, ...props }) {
277
311
  const s = useAureaStrings();
278
312
  const bid = React.useId();
package/dist/inputs.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from "./inputs-client.js";
2
- export { Select, Textarea, Checkbox, Radio, Switch, Range } from "./markup.js";
2
+ export { Textarea, Checkbox, Radio, Switch, Range } from "./markup.js";
3
3
  export { Label, InputGroup, InputGroupAddon, type AddonSide, type AddonLayout, type FieldSize } from "./markup.js";
package/dist/inputs.js CHANGED
@@ -6,7 +6,7 @@
6
6
  // `ehControle` do `Field` compara por IDENTIDADE de referência, e dois objetos com o mesmo nome
7
7
  // quebrariam o rótulo do campo em silêncio. Um caminho de import, um objeto.
8
8
  export * from "./inputs-client.js";
9
- export { Select, Textarea, Checkbox, Radio, Switch, Range } from "./markup.js";
9
+ export { Textarea, Checkbox, Radio, Switch, Range } from "./markup.js";
10
10
  // PORTADOS no merge de 28/08/2026, da linhagem da ATIVIDADE-2 — não existiam na `main`.
11
11
  // Saem do `markup` pela mesma razão dos seis acima: nenhum usa hook, então chegam como
12
12
  // componente de SERVIDOR e não arrastam a fronteira de cliente com eles.
@@ -1,9 +1,12 @@
1
1
  import { type HTMLAttributes, type RefAttributes, type ReactNode } from "react";
2
2
  import { type Orientation, type Responsive } from "./pure.js";
3
- import { type TopbarVariant, type SidebarVariant } from "./navigation.js";
4
- export declare function AppShell({ brand, navigation, topbar, topbarVariant, sidebarVariant, sidebarCollapsed, children, className, ...props }: HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement> & {
3
+ import { type TopbarVariant, type SidebarVariant, type SidebarItem } from "./navigation.js";
4
+ export declare function AppShell({ brand, navigation, navItems, currentNavId, navLabel, topbar, topbarVariant, sidebarVariant, sidebarCollapsed, children, className, ...props }: HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement> & {
5
5
  brand: ReactNode;
6
- navigation: ReactNode;
6
+ navigation?: ReactNode;
7
+ navItems?: SidebarItem[];
8
+ currentNavId?: string;
9
+ navLabel?: string;
7
10
  topbar?: ReactNode;
8
11
  topbarVariant?: Exclude<TopbarVariant, "pill">;
9
12
  sidebarVariant?: SidebarVariant;
@@ -109,10 +109,17 @@ function useGavetaFechaNoDesktop() {
109
109
  return () => mq.removeEventListener?.("change", aoMudar);
110
110
  }, []);
111
111
  }
112
- export function AppShell({ brand, navigation, topbar, topbarVariant = "floating", sidebarVariant, sidebarCollapsed, children, className, ...props }) {
112
+ // A LISTA DA LATERAL ENTRA PELO SHELL (A-03, 24/09/2026). O shell cria o `<Sidebar>` e só
113
+ // repassava `children`; quem queria a lista declarativa (`items` + `current`) tinha de passar OUTRO
114
+ // `<Sidebar>` como `navigation`, e saíam dois `<aside class="sidebar">` aninhados — duas bordas,
115
+ // dois fundos, dois raios de 22px. Com a escala de letras da 0.8.8 a caixa de dentro passou a CORTAR
116
+ // texto ("8.174" virava "8.17"), medido num app real a 1400px. `navItems`/`currentNavId` vão para o
117
+ // Sidebar que o shell já cria, e a caixa dupla deixa de ser o único caminho. `navigation` continua
118
+ // valendo para quem escreve a navegação à mão, e as duas se somam: a lista vem antes.
119
+ export function AppShell({ brand, navigation, navItems, currentNavId, navLabel, topbar, topbarVariant = "floating", sidebarVariant, sidebarCollapsed, children, className, ...props }) {
113
120
  const s = useAureaStrings();
114
121
  useGavetaFechaNoDesktop();
115
- return _jsxs("div", { className: cx("app-shell", topbarVariant === "flush" && "app-shell-flush", className), ...props, children: [_jsx("a", { className: "skip-link", href: `#${SHELL_MAIN_ID}`, children: s.skipToContent }), _jsx(Topbar, { variant: topbarVariant, brand: _jsxs(_Fragment, { children: [_jsx(IconButton, { className: "nav-toggle", icon: "menu", label: s.navigationToggle, popoverTarget: SHELL_NAV_ID }), brand] }), children: topbar }), _jsx(Sidebar, { id: SHELL_NAV_ID, popover: "auto", variant: sidebarVariant, collapsed: sidebarCollapsed, onToggle: focoDaGaveta, children: navigation }), _jsx("main", { id: SHELL_MAIN_ID, tabIndex: -1, className: "content", children: children })] });
122
+ return _jsxs("div", { className: cx("app-shell", topbarVariant === "flush" && "app-shell-flush", className), ...props, children: [_jsx("a", { className: "skip-link", href: `#${SHELL_MAIN_ID}`, children: s.skipToContent }), _jsx(Topbar, { variant: topbarVariant, brand: _jsxs(_Fragment, { children: [_jsx(IconButton, { className: "nav-toggle", icon: "menu", label: s.navigationToggle, popoverTarget: SHELL_NAV_ID }), brand] }), children: topbar }), _jsx(Sidebar, { id: SHELL_NAV_ID, popover: "auto", variant: sidebarVariant, collapsed: sidebarCollapsed, items: navItems, current: currentNavId, label: navLabel, onToggle: focoDaGaveta, children: navigation }), _jsx("main", { id: SHELL_MAIN_ID, tabIndex: -1, className: "content", children: children })] });
116
123
  }
117
124
  // ── Separator ────────────────────────────────────────────────────────────────────────────────
118
125
  // A LINHA DO SISTEMA, e ela é de CLIENTE por necessidade, não por vizinhança.
package/dist/markup.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { type HTMLAttributes, type InputHTMLAttributes, type ReactElement, type ReactNode, type RefAttributes, type SelectHTMLAttributes, type TextareaHTMLAttributes } from "react";
1
+ import React, { type HTMLAttributes, type InputHTMLAttributes, type ReactElement, type ReactNode, type RefAttributes, type TextareaHTMLAttributes } from "react";
2
2
  import { type Responsive } from "./pure.js";
3
3
  import type { ComponentSize } from "./actions.js";
4
4
  export type BadgeVariant = "neutral" | "primary" | "info" | "success" | "warning" | "danger" | "running" | "paused" | "offline" | "review";
@@ -92,10 +92,6 @@ export declare function Topbar({ variant, brand, children, className, ...props }
92
92
  brand?: ReactNode;
93
93
  }): React.JSX.Element;
94
94
  export declare function Kbd({ children, className, ...props }: HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement>): React.JSX.Element;
95
- export interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, "size">, RefAttributes<HTMLSelectElement> {
96
- size?: Responsive<FieldSize>;
97
- }
98
- export declare const Select: React.ForwardRefExoticComponent<Omit<SelectProps, "ref"> & RefAttributes<HTMLSelectElement>>;
99
95
  export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, RefAttributes<HTMLTextAreaElement> {
100
96
  size?: Responsive<FieldSize>;
101
97
  }
package/dist/markup.js CHANGED
@@ -127,7 +127,6 @@ export function Topbar({ variant = "floating", brand, children, className, ...pr
127
127
  // morava fora da casa dele (no `internal.tsx`, por causa do `Button`); agora mora aqui, pelo
128
128
  // mesmo motivo elevado a regra.
129
129
  export function Kbd({ children, className, ...props }) { return _jsx("kbd", { className: cx("kbd", className), ...props, children: children }); }
130
- export const Select = forwardRef(function Select({ className, size, ...props }, ref) { return _jsx("select", { ref: ref, className: cx("select", peleDoEixo("select", size), className), ...props }); });
131
130
  export const Textarea = forwardRef(function Textarea({ className, size, ...props }, ref) { return _jsx("textarea", { ref: ref, className: cx("textarea", peleDoEixo("textarea", size), className), ...props }); });
132
131
  // `size` nos três marcáveis pela mesma razão do campo: uma linha de formulário com um campo `sm`
133
132
  // e um checkbox de tamanho fixo ao lado desalinha. O degrau vai na MARCA, não no rótulo.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/react",
3
- "version": "0.8.8",
3
+ "version": "0.8.10",
4
4
  "description": "React components for Aurea UDS. Import @aurea-uds/fonts/css and @aurea-uds/core/css alongside.",
5
5
  "keywords": [
6
6
  "aurea",