@aurea-uds/native 0.35.0 → 0.36.0

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/display.d.ts CHANGED
@@ -64,6 +64,10 @@ export interface BadgeProps extends ViewProps {
64
64
  children?: React.ReactNode;
65
65
  }
66
66
  export declare function Badge({ tone, emphasis, size, dot, count, max, showZero, leading, trailing, fit, anchor, badgeContent, invisible, children, style, ...rest }: BadgeProps): React.JSX.Element;
67
+ /** `Chip` é outro nome do `Badge` (GAR-20, 19/10/2026): o nome que a referência dá à mesma peça. Igual em tudo. */
68
+ export type ChipProps = BadgeProps;
69
+ /** `Chip` é outro nome do `Badge` (GAR-20, 19/10/2026): o nome que a referência dá à mesma peça. Igual em tudo. */
70
+ export declare function Chip(props: BadgeProps): React.JSX.Element;
67
71
  export type AureaStatusVariant = "neutral" | "online" | "offline" | "busy" | "away" | "success" | "warning" | "danger" | "info";
68
72
  export interface StatusProps extends ViewProps {
69
73
  variant?: AureaStatusVariant;
package/dist/display.js CHANGED
@@ -132,7 +132,9 @@ export function Badge({ tone = "neutral", emphasis = "soft", size = "md", dot, c
132
132
  // a de sempre caía abaixo de 4,5:1 (o verde do claro, o `success` do escuro). O par da web é o `.badge-outline`.
133
133
  const letra = tone === "neutral" ? t.color.secondaryForeground : acento;
134
134
  const corDoTexto = emphasis === "solid" ? (cheio ? cheio[1] : t.color.background)
135
- : emphasis === "outline" ? misturaOpaca(letra, t.color.foreground, 0.8) : letra;
135
+ // Menos o primário (ADR-0073, "A", 18/10/2026): a letra é o próprio amarelo, a mesma do suave — misturado ao texto, ele
136
+ // virava mostarda só nesta peça. O nativo não tem marca (`data-brand`), então vale sempre.
137
+ : emphasis === "outline" && tone !== "primary" ? misturaOpaca(letra, t.color.foreground, 0.8) : letra;
136
138
  const numero = count != null ? formatarContagem(count, max) : undefined;
137
139
  const miolo = anchor ? (numero ?? badgeContent) : (numero ?? children);
138
140
  // Ponto puro: `dot` sem nada para mostrar. Aí o selo não tem conteúdo e ganha medida própria.
@@ -176,6 +178,10 @@ export function Badge({ tone = "neutral", emphasis = "soft", size = "md", dot, c
176
178
  const escondido = invisible || (count === 0 && !showZero) || (miolo == null && !dot);
177
179
  return _jsxs(View, { style: s.ancora, ...rest, children: [children, !escondido && selo] });
178
180
  }
181
+ /** `Chip` é outro nome do `Badge` (GAR-20, 19/10/2026): o nome que a referência dá à mesma peça. Igual em tudo. */
182
+ export function Chip(props) {
183
+ return _jsx(Badge, { ...props });
184
+ }
179
185
  const CATEGORIAS = new Set(["red", "orange", "green", "teal", "cyan", "blue", "violet", "pink"]);
180
186
  const ehCategoria = (tom) => CATEGORIAS.has(tom);
181
187
  /**
package/dist/escolha.js CHANGED
@@ -45,7 +45,7 @@ const folha = criarFolha((t) => ({
45
45
  backgroundColor: t.color.controlSelected },
46
46
  alcaDeitada: { width: t.size.space7, height: t.size.space5 },
47
47
  alcaEmPe: { width: t.size.space5, height: t.size.space7 },
48
- bolinha: { flex: 1, ...canto(t.size.radiusFull), backgroundColor: t.color.controlSelectedForeground,
48
+ bolinha: { flex: 1, ...canto(t.size.radiusFull), backgroundColor: t.color.primaryMark,
49
49
  boxShadow: [...t.shadowLayers.shadowSm] },
50
50
  // ── OTPField ────────────────────────────────────────────────────────────────────────────────
51
51
  // A referência: casas de 44 × 48 com 8 entre elas. A altura é a do campo (`touchControlHMd`, a
package/dist/estilos.d.ts CHANGED
@@ -103,8 +103,10 @@ export declare const acentoDoTom: (t: AureaTokens, tom: TomDeCor) => string;
103
103
  export declare const letraDoToken: (t: AureaTokens, token: string) => string | undefined;
104
104
  /**
105
105
  * O FUNDO CHEIO de um tom de estado e a letra em cima dele — o par do botão cheio (ADR-0061, 0.27.0):
106
- * o selo cheio é o botão cheio do mesmo tom. `primary` e `neutral` não têm o par: `undefined`, e
107
- * quem chama enche com o acento, como antes.
106
+ * o selo cheio é o botão cheio do mesmo tom. O `primary` enche com o acento e escreve com a letra do
107
+ * botão amarelo (`primaryForeground`, a tinta cinza-escura): desde a ADR-0073 o acento do claro é o
108
+ * próprio amarelo, e a letra de antes (`background`, clara) media 1,75:1 em cima dele. O `neutral` não
109
+ * tem o par: `undefined`, e quem chama enche com o acento, como antes.
108
110
  */
109
111
  export declare const preenchimentoDoTom: (t: AureaTokens, tom: TomDeCor) => [string, string] | undefined;
110
112
  /** O fundo SUAVE de um tom (`--<tom>-bg`). `primary` e `neutral` não têm token: `undefined`. */
package/dist/estilos.js CHANGED
@@ -131,14 +131,17 @@ const PAR_DE_LETRA = {
131
131
  export const letraDoToken = (t, token) => (PAR_DE_LETRA[token] ? t.color[PAR_DE_LETRA[token]] : undefined) ?? t.color[token];
132
132
  /**
133
133
  * O FUNDO CHEIO de um tom de estado e a letra em cima dele — o par do botão cheio (ADR-0061, 0.27.0):
134
- * o selo cheio é o botão cheio do mesmo tom. `primary` e `neutral` não têm o par: `undefined`, e
135
- * quem chama enche com o acento, como antes.
134
+ * o selo cheio é o botão cheio do mesmo tom. O `primary` enche com o acento e escreve com a letra do
135
+ * botão amarelo (`primaryForeground`, a tinta cinza-escura): desde a ADR-0073 o acento do claro é o
136
+ * próprio amarelo, e a letra de antes (`background`, clara) media 1,75:1 em cima dele. O `neutral` não
137
+ * tem o par: `undefined`, e quem chama enche com o acento, como antes.
136
138
  */
137
- export const preenchimentoDoTom = (t, tom) => tom === "success" ? [t.color.success, t.color.successForeground]
138
- : tom === "warning" ? [t.color.warning, t.color.warningForeground]
139
- : tom === "info" ? [t.color.info, t.color.infoForeground]
140
- : tom === "danger" ? [t.color.destructive, t.color.destructiveForeground]
141
- : undefined;
139
+ export const preenchimentoDoTom = (t, tom) => tom === "primary" ? [t.color.primaryEmphasis, t.color.primaryForeground]
140
+ : tom === "success" ? [t.color.success, t.color.successForeground]
141
+ : tom === "warning" ? [t.color.warning, t.color.warningForeground]
142
+ : tom === "info" ? [t.color.info, t.color.infoForeground]
143
+ : tom === "danger" ? [t.color.destructive, t.color.destructiveForeground]
144
+ : undefined;
142
145
  /** O fundo SUAVE de um tom (`--<tom>-bg`). `primary` e `neutral` não têm token: `undefined`. */
143
146
  export const fundoDoTom = (t, tom) => tom === "info" ? t.color.infoBg
144
147
  : tom === "success" ? t.color.successBg
package/dist/index.d.ts CHANGED
@@ -16,8 +16,8 @@ export { Button, IconButton, LinkButton, ThemeToggle, CloseButton } from "./acti
16
16
  export type { ButtonProps, IconButtonProps, LinkButtonProps, ThemeToggleProps, CloseButtonProps, AureaButtonAppearance, AureaButtonSize, AureaButtonTone, AureaShareData, } from "./actions.js";
17
17
  export { Spinner, Skeleton, Progress, Alert, EmptyState, DataState, ICONE_DA_VARIANTE } from "./feedback.js";
18
18
  export type { SpinnerProps, SkeletonProps, ProgressProps, AlertProps, EmptyStateProps, DataStateProps, AureaSpinnerSize, AureaAlertVariant, AureaDataStateValue, AureaProgressTone, } from "./feedback.js";
19
- export { Badge, Status, Avatar, KPI, formatarContagem } from "./display.js";
20
- export type { BadgeProps, StatusProps, AvatarProps, KPIProps, AureaKPIDirection, AureaKPITone, AureaKPIVariant, AureaBadgeAnchor, AureaBadgeCategory, AureaBadgeEmphasis, AureaBadgeFit, AureaBadgeSize, AureaBadgeTone, AureaStatusVariant, AureaAvatarSize, } from "./display.js";
19
+ export { Badge, Chip, Status, Avatar, KPI, formatarContagem } from "./display.js";
20
+ export type { BadgeProps, ChipProps, StatusProps, AvatarProps, KPIProps, AureaKPIDirection, AureaKPITone, AureaKPIVariant, AureaBadgeAnchor, AureaBadgeCategory, AureaBadgeEmphasis, AureaBadgeFit, AureaBadgeSize, AureaBadgeTone, AureaStatusVariant, AureaAvatarSize, } from "./display.js";
21
21
  export { useAureaStrings } from "./theme.js";
22
22
  export { defaultStrings, ptBR, gravidadeDoEstado, AUREA_UNIVERSAL_STATES } from "./strings.js";
23
23
  export type { AureaStrings, AureaUniversalState } from "./strings.js";
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ export { Stack, Cluster, Grid, Card, Separator } from "./layout.js";
40
40
  export { Button, IconButton, LinkButton, ThemeToggle, CloseButton } from "./actions.js";
41
41
  // ── Lote 2 — o painel, que é só leitura ────────────────────────────────────────────────────
42
42
  export { Spinner, Skeleton, Progress, Alert, EmptyState, DataState, ICONE_DA_VARIANTE } from "./feedback.js";
43
- export { Badge, Status, Avatar, KPI, formatarContagem } from "./display.js";
43
+ export { Badge, Chip, Status, Avatar, KPI, formatarContagem } from "./display.js";
44
44
  // As frases visíveis, e o hook que as lê. A tabela é do tamanho do que o alvo nativo desenha —
45
45
  // ver o cabeçalho de `strings.ts`, que escreve por que ela NÃO é a da web.
46
46
  export { useAureaStrings } from "./theme.js";
package/dist/inputs.d.ts CHANGED
@@ -387,7 +387,7 @@ export declare function SegmentedControl({ items, value, onChange, label, disabl
387
387
  /**
388
388
  * O indicador da opção escolhida, nas listas do `Select` e do `Combobox` (0.32.0): o da referência
389
389
  * — a caixa de 20 com o `check` de 16 — e o mesmo glifo da coluna `.combobox-check` da web. A cor
390
- * é a do destaque que se lê como ícone nos dois temas (`primaryEmphasis`, ADR-0054). Sai do
390
+ * é a do destaque (`primaryEmphasis`): o amarelo da marca nos dois temas, desde a ADR-0073. Sai do
391
391
  * arquivo, não do pacote — e é função, não componente, para não contar como peça nova. ⚠ Pede o
392
392
  * `check` no registro de ícones do app; sem ele, o aviso de desenvolvimento do `Icon` diz o import.
393
393
  */
package/dist/inputs.js CHANGED
@@ -398,10 +398,10 @@ function ControleMarcado({ papel, label, description, checked, onChange, disable
398
398
  ...canto(papel === "radio" ? t.size.radiusFull : t.size.radiusXs) },
399
399
  checked && { backgroundColor: t.color.controlSelected, borderColor: "transparent" },
400
400
  ], children: checked && (papel === "radio"
401
- // O ponto do rádio é da cor de primeiro plano da seleção, sobre a marca já pintada.
401
+ // O ponto do rádio é branco, sobre a marca já pintada (decisão do Victor, 17/10/2026).
402
402
  // 0.32.0: 10, o ponto da referência e o do `RadioGroup` (`space2 + space05`); era 8.
403
403
  ? _jsx(View, { style: { width: t.size.space2 + t.size.space05, height: t.size.space2 + t.size.space05,
404
- ...canto(t.size.radiusFull), backgroundColor: t.color.controlSelectedForeground } })
404
+ ...canto(t.size.radiusFull), backgroundColor: t.color.controlSelectedDot } })
405
405
  // O visto. Era desenhado com DUAS BORDAS de um retângulo girado; sem linha (16/10/2026), ele é
406
406
  // um glifo, o mesmo da web (a máscara do `.checkbox` no `aurea.css`), sobre o `react-native-svg`
407
407
  // que o pacote já usa — sem depender do registro de ícones do app.
@@ -447,7 +447,7 @@ function ItemDoGrupoDeRadio({ value, label, description, disabled, invalid, indi
447
447
  escolhido && { backgroundColor: erro ? perigo : t.color.controlSelected,
448
448
  borderColor: "transparent" },
449
449
  ], children: escolhido && _jsx(View, { style: { width: ponto, height: ponto, ...canto(t.size.radiusFull),
450
- backgroundColor: t.color.controlSelectedForeground } }) }, "marca"));
450
+ backgroundColor: t.color.controlSelectedDot } }) }, "marca"));
451
451
  // O ícone é decorativo: o rótulo já diz o que a opção é, e o `Icon` sem `label` sai da árvore
452
452
  // de acessibilidade. A cor acompanha a do rótulo, inclusive no erro.
453
453
  const glifo = icon != null && (_jsx(Icon, { name: icon, size: "lg", weight: escolhido ? "fill" : "regular", color: erro ? perigo : t.color.foreground }, "icone"));
@@ -550,7 +550,7 @@ export function Switch({ label, description, checked, onChange, disabled, size,
550
550
  ], children: _jsx(Animated.View, { style: [
551
551
  s.polegar,
552
552
  { width: larguraDoPolegar, height: alturaDoPolegar,
553
- backgroundColor: checked ? t.color.controlSelectedForeground : t.color.mutedForeground,
553
+ backgroundColor: checked ? t.color.primaryMark : t.color.mutedForeground,
554
554
  transform: [{ translateX: pos.interpolate({ inputRange: [0, 1], outputRange: [0, curso] }) }] },
555
555
  ] }) }), temTexto && (_jsxs(View, { style: { flex: 1 }, children: [typeof label === "string" ? _jsx(Text, { size: "sm", children: label }) : label, description != null && (typeof description === "string"
556
556
  ? _jsx(Text, { size: "xs", tone: "muted", children: description }) : description)] }))] }));
@@ -599,7 +599,7 @@ export function SegmentedControl({ items, value, onChange, label, disabled, just
599
599
  /**
600
600
  * O indicador da opção escolhida, nas listas do `Select` e do `Combobox` (0.32.0): o da referência
601
601
  * — a caixa de 20 com o `check` de 16 — e o mesmo glifo da coluna `.combobox-check` da web. A cor
602
- * é a do destaque que se lê como ícone nos dois temas (`primaryEmphasis`, ADR-0054). Sai do
602
+ * é a do destaque (`primaryEmphasis`): o amarelo da marca nos dois temas, desde a ADR-0073. Sai do
603
603
  * arquivo, não do pacote — e é função, não componente, para não contar como peça nova. ⚠ Pede o
604
604
  * `check` no registro de ícones do app; sem ele, o aviso de desenvolvimento do `Icon` diz o import.
605
605
  */
@@ -355,12 +355,13 @@ export function BottomNav({ items, current, variant = "floating", indicator = "n
355
355
  const ativo = it.id === current;
356
356
  const corDoTexto = !ativo ? t.color.mutedForeground
357
357
  : indicator === "none" ? t.color.primaryEmphasis
358
- : indicator === "circle-bold" || indicator === "expand" ? t.color.primaryForeground
358
+ : indicator === "circle-bold" || indicator === "expand" ? t.color.primaryMark
359
359
  : indicator === "subtle" || indicator === "pill" ? t.color.primaryEmphasis
360
360
  : redondo ? t.color.primaryEmphasis
361
361
  : t.color.foreground;
362
- // Na `capsule` o ícone está SOBRE o amarelo e o rótulo não: cada um tem a sua cor.
363
- const corDoIcone = ativo && capsula ? t.color.primaryForeground : corDoTexto;
362
+ // Na `capsule` o ícone está SOBRE o amarelo e o rótulo não: cada um tem a sua cor. Sobre o
363
+ // amarelo, a marca marrom (`primaryMark`), e não a tinta escura (decisão do Victor, 17/10/2026).
364
+ const corDoIcone = ativo && capsula ? t.color.primaryMark : corDoTexto;
364
365
  // No `expand` o nome só aparece no escolhido; nos outros ele vira o nome do item para o
365
366
  // leitor de tela (o texto simples) ou fica na árvore sem ocupar lugar (o que não é texto).
366
367
  const nomeVisivel = !expande || ativo;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/native",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "A Aurea UDS para React Native: o provider de tema e densidade, os componentes e os ícones do Phosphor sobre react-native-svg.",
5
5
  "keywords": [
6
6
  "aurea",
@@ -55,7 +55,7 @@
55
55
  "NOTICE"
56
56
  ],
57
57
  "dependencies": {
58
- "@aurea-uds/tokens": "^0.35.0"
58
+ "@aurea-uds/tokens": "^0.36.0"
59
59
  },
60
60
  "peerDependencies": {
61
61
  "@react-native-community/datetimepicker": ">=8",