@aurea-uds/native 0.31.0 → 0.33.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/actions.d.ts +15 -1
- package/dist/actions.js +40 -17
- package/dist/busca.js +16 -14
- package/dist/display.js +17 -3
- package/dist/escolha.d.ts +121 -0
- package/dist/escolha.js +466 -0
- package/dist/exibicao.d.ts +188 -0
- package/dist/exibicao.js +457 -0
- package/dist/feedback.d.ts +48 -4
- package/dist/feedback.js +92 -28
- package/dist/icon-names.d.ts +7 -1
- package/dist/icon-names.js +2 -0
- package/dist/icon.d.ts +6 -4
- package/dist/icon.js +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.js +10 -1
- package/dist/inputs.d.ts +12 -3
- package/dist/inputs.js +71 -25
- package/dist/layout.d.ts +1 -1
- package/dist/layout.js +3 -0
- package/dist/menu.d.ts +99 -0
- package/dist/menu.js +452 -0
- package/dist/navigation.d.ts +1 -1
- package/dist/navigation.js +35 -18
- package/dist/numero.d.ts +2 -2
- package/dist/numero.js +6 -2
- package/dist/overlays.js +35 -9
- package/dist/sistema.js +15 -10
- package/dist/strings.d.ts +4 -0
- package/dist/strings.js +4 -0
- package/dist/text.js +7 -1
- package/dist/toast.js +9 -12
- package/icons/index.d.ts +1 -0
- package/icons/index.js +2 -1
- package/icons/x-bold.d.ts +6 -0
- package/icons/x-bold.js +10 -0
- package/package.json +2 -2
package/dist/overlays.js
CHANGED
|
@@ -55,11 +55,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
55
55
|
// E o comentário do `.dialog-confirm` (aurea.css:1577-1579) decidiu uma coisa por nós: **o
|
|
56
56
|
// ConfirmDialog é o MESMO `.dialog`**, não uma segunda superfície. Aqui isso vira literalmente a
|
|
57
57
|
// mesma função interna com uma largura diferente.
|
|
58
|
+
//
|
|
59
|
+
// ⚠ 0.32.0 (ADR-0066): o recheio de 24, o cabeçalho em linha com o X e o título em seminegrito, da
|
|
60
|
+
// lista acima, valem hoje só para o `Drawer`. O `Dialog`, o `ConfirmDialog` e o `BottomSheet` seguem
|
|
61
|
+
// as medidas do pacote NATIVO da referência — ver a folha, logo abaixo.
|
|
58
62
|
import * as React from "react";
|
|
59
63
|
import { Animated, Easing, Modal, PanResponder, Pressable, ScrollView, View, } from "react-native";
|
|
60
64
|
import { Button } from "./actions.js";
|
|
61
65
|
import { canto, cantosDeCima, criarFolha } from "./estilos.js";
|
|
62
|
-
import {
|
|
66
|
+
import { CloseButton } from "./actions.js";
|
|
63
67
|
import { RecuoDaFolha } from "./screen.js";
|
|
64
68
|
import { Text } from "./text.js";
|
|
65
69
|
import { useAureaStrings, useTokensDoApp, ForaDaMarca } from "./theme.js";
|
|
@@ -71,8 +75,10 @@ const folha = criarFolha((t) => ({
|
|
|
71
75
|
// contêiner; este só recebe o toque de fora do painel.
|
|
72
76
|
fundoDeToque: { position: "absolute", top: 0, right: 0, bottom: 0, left: 0 },
|
|
73
77
|
centro: { flex: 1, alignItems: "center", justifyContent: "center", padding: 20 },
|
|
78
|
+
// 0.32.0 (ADR-0066): a janela do pacote NATIVO da referência — recheio de 20 (era 24, o da web),
|
|
79
|
+
// título 18 em peso médio e descrição 16 (no componente).
|
|
74
80
|
superficie: {
|
|
75
|
-
width: "100%", maxWidth: 560, padding:
|
|
81
|
+
width: "100%", maxWidth: 560, padding: t.size.space5,
|
|
76
82
|
borderWidth: t.size.borderWidth, borderColor: t.color.border,
|
|
77
83
|
...canto(t.size.radiusCard),
|
|
78
84
|
backgroundColor: t.color.popover,
|
|
@@ -84,13 +90,30 @@ const folha = criarFolha((t) => ({
|
|
|
84
90
|
gap: 16, marginBottom: 16,
|
|
85
91
|
},
|
|
86
92
|
titulo: { flex: 1 },
|
|
93
|
+
// O título do `Dialog` e do `ConfirmDialog` (0.32.0): sozinho no alto, e não mais em linha com o
|
|
94
|
+
// X; 8 até o corpo — o `.dialog-header + .dialog-body` da web desta versão (era 16).
|
|
95
|
+
tituloDaJanela: { marginBottom: t.size.space2 },
|
|
96
|
+
// O X fica no CANTO, solto do fluxo, como o `.dialog-close` da web: a 16 da borda de FORA em cima e
|
|
97
|
+
// no fim (o absoluto conta de dentro da borda de 1). É o `CloseButton`, o círculo de 40 da escala
|
|
98
|
+
// de toque (`touchControlHSm`).
|
|
99
|
+
fechar: {
|
|
100
|
+
position: "absolute",
|
|
101
|
+
top: t.size.space4 - t.size.borderWidth, right: t.size.space4 - t.size.borderWidth,
|
|
102
|
+
},
|
|
103
|
+
// E o título não passa por baixo dele: reserva no fim a largura do X. Da borda de fora, o título
|
|
104
|
+
// acaba em 20 + 1 + 40 = 61 e o X começa em 16 + 40 = 56 — sobram 5 (a diferença entre o recheio
|
|
105
|
+
// e o canto do X, mais a borda).
|
|
106
|
+
tituloComFechar: { paddingRight: t.size.touchControlHSm },
|
|
107
|
+
// Na gaveta não há borda em cima nem do lado da tela (só a de dentro): o X fica a 16 cheios.
|
|
108
|
+
fecharDaGaveta: { top: t.size.space4, right: t.size.space4 },
|
|
87
109
|
corpo: { gap: 14 },
|
|
88
110
|
rodape: {
|
|
89
111
|
flexDirection: "row", justifyContent: "flex-end", gap: t.size.space2,
|
|
90
112
|
marginTop: t.size.space5,
|
|
91
113
|
},
|
|
92
114
|
gaveta: {
|
|
93
|
-
|
|
115
|
+
// 0.32.0: o recheio de 20 do `Dialog` nativo da referência (era 24 cru).
|
|
116
|
+
position: "absolute", top: 0, bottom: 0, width: "92%", maxWidth: 480, padding: t.size.space5,
|
|
94
117
|
backgroundColor: t.color.surface1,
|
|
95
118
|
...(t.shadow.shadowLg ? { boxShadow: [t.shadow.shadowLg] } : null),
|
|
96
119
|
},
|
|
@@ -99,7 +122,10 @@ const folha = criarFolha((t) => ({
|
|
|
99
122
|
folhaBaixo: {
|
|
100
123
|
position: "absolute", left: 0, right: 0, bottom: 0,
|
|
101
124
|
maxHeight: "90%",
|
|
102
|
-
|
|
125
|
+
// 0.32.0 (ADR-0066): recheio de 20, o da folha do pacote nativo da referência (era 24). Em cima,
|
|
126
|
+
// com o puxador, ficam estes 8 e a faixa dele (8 + o puxador de 4 + 8); sem o puxador, vale o
|
|
127
|
+
// `folhaSemPuxador`, 20 (eram estes 8 sozinhos).
|
|
128
|
+
paddingHorizontal: t.size.space5, paddingTop: t.size.space2, paddingBottom: t.size.space5,
|
|
103
129
|
backgroundColor: t.color.popover,
|
|
104
130
|
// HER-03 (06/10/2026, ADR-0058): 32 e não o 22 de painel — a folha acompanha o canto da tela
|
|
105
131
|
// do telefone. Decisão do Victor, olhando as duas na bancada. A lista do `Select` e a folha do
|
|
@@ -108,6 +134,7 @@ const folha = criarFolha((t) => ({
|
|
|
108
134
|
borderTopWidth: t.size.borderWidth, borderTopColor: t.color.border,
|
|
109
135
|
...(t.shadow.shadowLg ? { boxShadow: [t.shadow.shadowLg] } : null),
|
|
110
136
|
},
|
|
137
|
+
folhaSemPuxador: { paddingTop: t.size.space5 },
|
|
111
138
|
puxadorArea: { alignItems: "center", paddingVertical: t.size.space2 },
|
|
112
139
|
puxador: { width: 40, height: 4, ...canto(999), backgroundColor: t.color.borderStrong },
|
|
113
140
|
}));
|
|
@@ -165,9 +192,8 @@ const naoAtravessa = { onStartShouldSetResponder: () => true };
|
|
|
165
192
|
export function Dialog({ open, title, children, footer, onClose, scroll = true, style, testID, }) {
|
|
166
193
|
const t = useTokensDoApp();
|
|
167
194
|
const s = folha(t);
|
|
168
|
-
const strings = useAureaStrings();
|
|
169
195
|
const Corpo = scroll ? ScrollView : View;
|
|
170
|
-
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: "fade", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(View, { style: [s.fundo, s.centro], children: [_jsx(Pressable, { style: s.fundoDeToque, onPress: onClose, accessible: false, testID: testID ? `${testID}-fundo` : undefined }), _jsxs(View, { style: [s.superficie, style], children: [
|
|
196
|
+
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: "fade", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(View, { style: [s.fundo, s.centro], children: [_jsx(Pressable, { style: s.fundoDeToque, onPress: onClose, accessible: false, testID: testID ? `${testID}-fundo` : undefined }), _jsxs(View, { style: [s.superficie, style], children: [_jsx(Text, { size: "lg", weight: 500, accessibilityRole: "header", style: [s.tituloDaJanela, s.tituloComFechar], children: title }), _jsx(View, { style: s.fechar, children: _jsx(CloseButton, { onPress: onClose }) }), _jsx(Corpo, { ...(scroll ? { contentContainerStyle: s.corpo } : { style: s.corpo }), children: children }), footer ? _jsx(View, { style: s.rodape, children: footer }) : null] })] }) }) }));
|
|
171
197
|
}
|
|
172
198
|
/**
|
|
173
199
|
* A decisão que não se desfaz.
|
|
@@ -195,7 +221,7 @@ export function ConfirmDialog({ open, title, description, confirmLabel, cancelLa
|
|
|
195
221
|
const t = useTokensDoApp();
|
|
196
222
|
const s = folha(t);
|
|
197
223
|
const strings = useAureaStrings();
|
|
198
|
-
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: "fade", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onCancel, testID: testID, children: _jsx(View, { style: [s.fundo, s.centro], children: _jsxs(View, { ...naoAtravessa, style: [s.superficie, s.confirmar], children: [_jsx(
|
|
224
|
+
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: "fade", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onCancel, testID: testID, children: _jsx(View, { style: [s.fundo, s.centro], children: _jsxs(View, { ...naoAtravessa, style: [s.superficie, s.confirmar], children: [_jsx(Text, { size: "lg", weight: 500, accessibilityRole: "header", style: s.tituloDaJanela, children: title }), _jsx(View, { style: s.corpo, children: typeof description === "string"
|
|
199
225
|
? _jsx(Text, { size: "md", tone: "muted", children: description })
|
|
200
226
|
: description }), _jsxs(View, { style: s.rodape, children: [_jsx(Button, { appearance: "outline", onPress: onCancel, testID: testID ? `${testID}-cancelar` : undefined, children: cancelLabel ?? strings.confirmCancel }), _jsx(Button, { appearance: "solid", tone: destructive ? "danger" : "brand", onPress: onConfirm, testID: testID ? `${testID}-confirmar` : undefined, children: confirmLabel ?? strings.confirmProceed })] })] }) }) }) }));
|
|
201
227
|
}
|
|
@@ -242,7 +268,7 @@ export function Drawer({ open, title, children, onClose, side = "right", scroll
|
|
|
242
268
|
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: "none", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(View, { style: s.fundo, children: [_jsx(Pressable, { style: s.fundoDeToque, onPress: onClose, accessible: false, testID: testID ? `${testID}-fundo` : undefined }), _jsxs(Animated.View, { style: [
|
|
243
269
|
s.gaveta, side === "right" ? s.gavetaDireita : s.gavetaEsquerda,
|
|
244
270
|
{ transform: [{ translateX: desloca }] }, style,
|
|
245
|
-
], children: [
|
|
271
|
+
], children: [_jsx(Text, { size: "lg", weight: 500, accessibilityRole: "header", style: [s.tituloDaJanela, s.tituloComFechar], children: title }), _jsx(View, { style: [s.fechar, s.fecharDaGaveta], children: _jsx(CloseButton, { label: strings.close, onPress: onClose }) }), _jsx(Corpo, { ...(scroll ? { contentContainerStyle: s.corpo } : { style: s.corpo }), children: children })] })] }) }) }));
|
|
246
272
|
}
|
|
247
273
|
/**
|
|
248
274
|
* A folha que sobe de baixo. **NÃO existe na web** — é o único componente deste lote sem ficha.
|
|
@@ -297,5 +323,5 @@ export function BottomSheet({ open, title, children, onClose, grabber = true, dr
|
|
|
297
323
|
}).start();
|
|
298
324
|
},
|
|
299
325
|
}), [draggable, onClose, arrasto, reduzir, t.easing.easeEmphasized]);
|
|
300
|
-
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: reduzir !== false ? "none" : "slide", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(View, { style: s.fundo, children: [_jsx(Pressable, { style: s.fundoDeToque, onPress: onClose, accessible: false, testID: testID ? `${testID}-fundo` : undefined }), _jsxs(Animated.View, { ...naoAtravessa, ...gestos.panHandlers, onLayout: (e) => { altura.current = e.nativeEvent.layout.height; }, style: [s.folhaBaixo, { transform: [{ translateY: arrasto }] }, style], children: [grabber ? (_jsx(View, { style: s.puxadorArea, accessible: false, importantForAccessibility: "no-hide-descendants", children: _jsx(View, { style: s.puxador }) })) : null, title ? (_jsx(View, { style: s.cabecalho, children: _jsx(Text, { size: "lg", weight:
|
|
326
|
+
return (_jsx(ForaDaMarca, { children: _jsx(Modal, { visible: open, transparent: true, animationType: reduzir !== false ? "none" : "slide", statusBarTranslucent: true, navigationBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(View, { style: s.fundo, children: [_jsx(Pressable, { style: s.fundoDeToque, onPress: onClose, accessible: false, testID: testID ? `${testID}-fundo` : undefined }), _jsxs(Animated.View, { ...naoAtravessa, ...gestos.panHandlers, onLayout: (e) => { altura.current = e.nativeEvent.layout.height; }, style: [s.folhaBaixo, !grabber && s.folhaSemPuxador, { transform: [{ translateY: arrasto }] }, style], children: [grabber ? (_jsx(View, { style: s.puxadorArea, accessible: false, importantForAccessibility: "no-hide-descendants", children: _jsx(View, { style: s.puxador }) })) : null, title ? (_jsx(View, { style: s.cabecalho, children: _jsx(Text, { size: "lg", weight: 500, accessibilityRole: "header", style: s.titulo, children: title }) })) : null, _jsx(Corpo, { ...(scroll ? { contentContainerStyle: s.corpo } : { style: s.corpo }), children: children }), _jsx(RecuoDaFolha, {})] })] }) }) }));
|
|
301
327
|
}
|
package/dist/sistema.js
CHANGED
|
@@ -38,7 +38,7 @@ import { IconButton } from "./actions.js";
|
|
|
38
38
|
import { canto, criarFolha, estadoAcessivel } from "./estilos.js";
|
|
39
39
|
import { Alert } from "./feedback.js";
|
|
40
40
|
import { Icon } from "./icon.js";
|
|
41
|
-
import { useCampo } from "./inputs.js";
|
|
41
|
+
import { alturaDoTamanho, respiroDoTamanho, useCampo } from "./inputs.js";
|
|
42
42
|
import { FotoAmpliada, Image } from "./midia.js";
|
|
43
43
|
import { Text } from "./text.js";
|
|
44
44
|
import { useAureaStrings, useAureaTokens } from "./theme.js";
|
|
@@ -55,10 +55,11 @@ const folha = criarFolha((t) => ({
|
|
|
55
55
|
desabilitado: { opacity: t.size.opacityDisabled },
|
|
56
56
|
// R-22 (02/10/2026), a "B" da prancha: miniatura QUADRADA de 64 — o `Avatar` `lg` da
|
|
57
57
|
// referência, e a medida que o botão de pôr foto passou a ter também (era 72, número à mão) — e o X
|
|
58
|
-
// TODO FORA da foto. O X é o `IconButton` `sm` (
|
|
59
|
-
//
|
|
60
|
-
// canto da foto é (
|
|
61
|
-
// porque no Android o toque fora da caixa do pai
|
|
58
|
+
// TODO FORA da foto. O X é o `IconButton` `sm` (40 desde a 0.32.0) com fundo; a área de toque
|
|
59
|
+
// dele é a maior entre o desenho e o `targetMin` (44), com o desenho no centro, então o
|
|
60
|
+
// deslocamento que põe o canto do DESENHO no canto da foto é (40 + 44) / 2. A grade deixa esse
|
|
61
|
+
// espaço em cima, à direita e entre as linhas, porque no Android o toque fora da caixa do pai
|
|
62
|
+
// não chega.
|
|
62
63
|
galeria: {
|
|
63
64
|
flexDirection: "row", flexWrap: "wrap", columnGap: t.size.space4,
|
|
64
65
|
rowGap: foraDoX(t) + t.size.space2,
|
|
@@ -73,9 +74,12 @@ const folha = criarFolha((t) => ({
|
|
|
73
74
|
borderStyle: "dashed", backgroundColor: t.color.fieldBg,
|
|
74
75
|
},
|
|
75
76
|
}));
|
|
76
|
-
/**
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Quanto o X do `PhotoInput` sai da foto: metade do desenho mais metade do alvo (44). 0.32.0: o
|
|
79
|
+
* `IconButton` `sm` passou à escala de toque (`touchControlHSm`, 40; era o `controlHSm`, 32), e a
|
|
80
|
+
* conta segue o desenho — com a antiga, o X voltava a cobrir 4 da foto.
|
|
81
|
+
*/
|
|
82
|
+
const foraDoX = (t) => (t.size.touchControlHSm + Math.max(t.size.touchControlHSm, t.size.targetMin)) / 2;
|
|
79
83
|
// E16 (09/10/2026) · NO NAVEGADOR, o calendário "deles" é o do NAVEGADOR. A biblioteca de data não
|
|
80
84
|
// tem versão web: o arquivo genérico dela devolve `null` e só avisa no console — tocar no campo não
|
|
81
85
|
// abria nada (achado do app rodando no `react-native-web`). A saída é o `<input type="date">` do
|
|
@@ -163,10 +167,11 @@ export function DatePicker({ value, onChange, mode = "date", minimumDate, maximu
|
|
|
163
167
|
}, [value, mode, minimumDate, maximumDate, receber]);
|
|
164
168
|
const mostrarSeletorIOS = abertoNoIOS && Platform.OS !== "android";
|
|
165
169
|
const conteudo = (_jsxs(_Fragment, { children: [_jsx(Text, { size: tam === "sm" ? "xs" : tam === "lg" ? "base" : "md", tone: value ? "default" : "subtle", numberOfLines: 1, children: texto }), icon && _jsx(Icon, { name: icon, size: "sm", color: t.color.subtleForeground })] }));
|
|
170
|
+
// 0.32.0: a medida do campo vem do `inputs.tsx` — a altura de toque (48 no `md`; era 36) e 12
|
|
171
|
+
// dos lados (era 13). Era uma cópia das contas de lá.
|
|
166
172
|
const pele = [
|
|
167
173
|
s.gatilho,
|
|
168
|
-
{ height: alturaDoTamanho(t, tam),
|
|
169
|
-
paddingHorizontal: tam === "sm" ? t.size.space3 : tam === "lg" ? t.size.space4 : 13 },
|
|
174
|
+
{ height: alturaDoTamanho(t, tam), paddingHorizontal: respiroDoTamanho(t, tam) },
|
|
170
175
|
campo?.invalido && s.invalido,
|
|
171
176
|
inativo && s.desabilitado,
|
|
172
177
|
style,
|
package/dist/strings.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface AureaStrings {
|
|
|
18
18
|
loading: string;
|
|
19
19
|
/** O que o `DataState` mostra em `error` sem `message`. */
|
|
20
20
|
dataError: string;
|
|
21
|
+
/** O que o `DataState catchErrors` mostra quando o conteúdo quebra (MNT-25, 0.32.0). */
|
|
22
|
+
dataCrashed: string;
|
|
23
|
+
/** O botão que desenha de novo o conteúdo que quebrou. */
|
|
24
|
+
dataRetry: string;
|
|
21
25
|
/** O título que o `EmptyState` e o `DataState` usam sem `title`. */
|
|
22
26
|
dataEmpty: string;
|
|
23
27
|
/** O nome da barra inferior para o leitor de tela. */
|
package/dist/strings.js
CHANGED
|
@@ -30,6 +30,8 @@ export const gravidadeDoEstado = (estado) => estado.startsWith("waiting_") ? "in
|
|
|
30
30
|
export const defaultStrings = {
|
|
31
31
|
loading: "Loading",
|
|
32
32
|
dataError: "This could not be loaded.",
|
|
33
|
+
dataCrashed: "Something went wrong here.",
|
|
34
|
+
dataRetry: "Try again",
|
|
33
35
|
dataEmpty: "Nothing here yet",
|
|
34
36
|
bottomNavLabel: "Main",
|
|
35
37
|
tabsLabel: "Tabs",
|
|
@@ -80,6 +82,8 @@ export const defaultStrings = {
|
|
|
80
82
|
export const ptBR = {
|
|
81
83
|
loading: "Carregando",
|
|
82
84
|
dataError: "Não foi possível carregar.",
|
|
85
|
+
dataCrashed: "Algo deu errado aqui.",
|
|
86
|
+
dataRetry: "Tentar de novo",
|
|
83
87
|
dataEmpty: "Ainda não há nada aqui",
|
|
84
88
|
bottomNavLabel: "Principal",
|
|
85
89
|
tabsLabel: "Abas",
|
package/dist/text.js
CHANGED
|
@@ -67,7 +67,13 @@ const ENTRELINHA = {
|
|
|
67
67
|
none: "leadingNone", tight: "leadingTight", normal: "leadingNormal", relaxed: "leadingRelaxed",
|
|
68
68
|
};
|
|
69
69
|
// O título usa o papel `heading` (GAR-16, 0.28.0) — hoje a mesma fonte do texto, no mesmo peso 600.
|
|
70
|
-
|
|
70
|
+
// 0.32.0: a entrelinha é a de CADA tamanho (40 · 36 · 32 · 28 · 28 · 24), como na escala publicada
|
|
71
|
+
// da referência e na web; até aqui era `leadingTight` (1,2) em todos.
|
|
72
|
+
const ENTRELINHA_DO_TITULO = {
|
|
73
|
+
text4xl: "text4xlLeading", text3xl: "text3xlLeading", text2xl: "text2xlLeading",
|
|
74
|
+
textXl: "textXlLeading", textLg: "textLgLeading", textBase: "leadingNormal",
|
|
75
|
+
};
|
|
76
|
+
const titulo = (tamanho) => ({ tamanho, peso: 600, entrelinha: ENTRELINHA_DO_TITULO[tamanho] ?? "leadingTight", fonte: "heading", junto: true });
|
|
71
77
|
const PAPEL = {
|
|
72
78
|
h1: titulo("text4xl"), h2: titulo("text3xl"), h3: titulo("text2xl"),
|
|
73
79
|
h4: titulo("textXl"), h5: titulo("textLg"), h6: titulo("textBase"),
|
package/dist/toast.js
CHANGED
|
@@ -56,7 +56,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
56
56
|
import * as React from "react";
|
|
57
57
|
import { Animated, Easing, View } from "react-native";
|
|
58
58
|
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
59
|
-
import {
|
|
59
|
+
import { CloseButton } from "./actions.js";
|
|
60
60
|
import { canto, criarFolha } from "./estilos.js";
|
|
61
61
|
import { Icon } from "./icon.js";
|
|
62
62
|
import { ICONE_DA_VARIANTE } from "./feedback.js";
|
|
@@ -71,7 +71,8 @@ const folha = criarFolha((t) => ({
|
|
|
71
71
|
zIndex: t.size.zToast,
|
|
72
72
|
},
|
|
73
73
|
aviso: {
|
|
74
|
-
|
|
74
|
+
// 0.32.0: 16 de recheio, o do aviso do nativo da referência (era 14, o da web antiga).
|
|
75
|
+
flexDirection: "row", alignItems: "center", gap: 11, padding: t.size.space4,
|
|
75
76
|
maxWidth: 360, width: "100%", alignSelf: "flex-end",
|
|
76
77
|
borderWidth: t.size.borderWidth, borderColor: t.color.border,
|
|
77
78
|
// HER-02 (06/10/2026): era `radiusLg` (16). O aviso é superfície flutuante, e superfície
|
|
@@ -81,13 +82,9 @@ const folha = criarFolha((t) => ({
|
|
|
81
82
|
...(t.shadow.shadowMd ? { boxShadow: [t.shadow.shadowMd] } : null),
|
|
82
83
|
},
|
|
83
84
|
texto: { flex: 1, minWidth: 0, gap: 2 },
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
aviso_danger: {
|
|
88
|
-
backgroundColor: t.color.dangerBg,
|
|
89
|
-
borderColor: t.color.danger400 ?? t.color.destructive,
|
|
90
|
-
},
|
|
85
|
+
// 0.32.0: o tipo deixou de tingir o fundo e a borda (eram `aviso_info`…`aviso_danger`). Como o aviso
|
|
86
|
+
// da web desta versão e o da referência: o fundo é o da janela, e a cor do tipo vai no ícone e no
|
|
87
|
+
// TÍTULO.
|
|
91
88
|
}));
|
|
92
89
|
/** Quanto um aviso fica na tela sem `duration`. */
|
|
93
90
|
const DURACAO_PADRAO = 5000;
|
|
@@ -201,14 +198,14 @@ export function Toast({ toast, onClose }) {
|
|
|
201
198
|
: (t.color.info400 ?? t.color.info);
|
|
202
199
|
const glifo = toast.icon === false ? null : (toast.icon ?? ICONE_DA_VARIANTE[tipo]);
|
|
203
200
|
return (_jsxs(Animated.View, { accessible: true, ...(tipo === "danger" ? { accessibilityRole: "alert" } : null), accessibilityLiveRegion: tipo === "danger" ? "assertive" : "polite", style: [
|
|
204
|
-
s.aviso,
|
|
201
|
+
s.aviso,
|
|
205
202
|
// Os mesmos 12dp de baixo que o `.toast[data-starting-style]` da web usa.
|
|
206
203
|
{ opacity: entrada, transform: [{ translateY: entrada.interpolate({
|
|
207
204
|
inputRange: [0, 1], outputRange: [12, 0],
|
|
208
205
|
}) }] },
|
|
209
|
-
], testID: `toast-${toast.id}`, children: [glifo ? _jsx(Icon, { name: glifo, size: "md", color: corDoIcone, weight: toast.icon ? undefined : "fill" }) : null, _jsxs(View, { style: s.texto, children: [_jsx(Text, { size: "
|
|
206
|
+
], testID: `toast-${toast.id}`, children: [glifo ? _jsx(Icon, { name: glifo, size: "md", color: corDoIcone, weight: toast.icon ? undefined : "fill" }) : null, _jsxs(View, { style: s.texto, children: [_jsx(Text, { size: "base", weight: 500, style: { color: corDoIcone }, children: toast.title }), toast.description != null
|
|
210
207
|
? (typeof toast.description === "string"
|
|
211
208
|
? _jsx(Text, { size: "sm", tone: "muted", children: toast.description })
|
|
212
209
|
: toast.description)
|
|
213
|
-
: null] }), toast.action, _jsx(
|
|
210
|
+
: null] }), toast.action, _jsx(CloseButton, { label: strings.dismissNotification, onPress: onClose })] }));
|
|
214
211
|
}
|
package/icons/index.d.ts
CHANGED
|
@@ -2858,6 +2858,7 @@ export {default as Wrench} from "./wrench.js";
|
|
|
2858
2858
|
export {default as WrenchFill} from "./wrench-fill.js";
|
|
2859
2859
|
export {default as X} from "./x.js";
|
|
2860
2860
|
export {default as XFill} from "./x-fill.js";
|
|
2861
|
+
export {default as XBold} from "./x-bold.js";
|
|
2861
2862
|
export {default as XCircle} from "./x-circle.js";
|
|
2862
2863
|
export {default as XCircleFill} from "./x-circle-fill.js";
|
|
2863
2864
|
export {default as XSquare} from "./x-square.js";
|
package/icons/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// GERADO por packages/native/build-icons-native.mjs. NÃO EDITAR.
|
|
2
2
|
// Glifo do @phosphor-icons/core (Phosphor Icons, MIT) — ver NOTICE. Desenho copiado sem alteração.
|
|
3
3
|
//
|
|
4
|
-
// ⚠ ESTE BARRIL NÃO É A FORMA DOCUMENTADA. Ele traz os
|
|
4
|
+
// ⚠ ESTE BARRIL NÃO É A FORMA DOCUMENTADA. Ele traz os 2867 ícones ao grafo do bundler
|
|
5
5
|
// a menos que o tree-shaking do Metro (experimental, três flags, só em produção) esteja
|
|
6
6
|
// ligado. A forma que não depende de configuração alheia é o caminho profundo:
|
|
7
7
|
//
|
|
@@ -2865,6 +2865,7 @@ export {default as Wrench} from "./wrench.js";
|
|
|
2865
2865
|
export {default as WrenchFill} from "./wrench-fill.js";
|
|
2866
2866
|
export {default as X} from "./x.js";
|
|
2867
2867
|
export {default as XFill} from "./x-fill.js";
|
|
2868
|
+
export {default as XBold} from "./x-bold.js";
|
|
2868
2869
|
export {default as XCircle} from "./x-circle.js";
|
|
2869
2870
|
export {default as XCircleFill} from "./x-circle-fill.js";
|
|
2870
2871
|
export {default as XSquare} from "./x-square.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// GERADO por packages/native/build-icons-native.mjs. NÃO EDITAR.
|
|
2
|
+
// Glifo do @phosphor-icons/core (Phosphor Icons, MIT) — ver NOTICE. Desenho copiado sem alteração.
|
|
3
|
+
import type * as React from "react";
|
|
4
|
+
import type {AureaIconProps} from "./props.js";
|
|
5
|
+
declare const XBold: (props: AureaIconProps) => React.ReactElement;
|
|
6
|
+
export default XBold;
|
package/icons/x-bold.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// GERADO por packages/native/build-icons-native.mjs. NÃO EDITAR.
|
|
2
|
+
// Glifo do @phosphor-icons/core (Phosphor Icons, MIT) — ver NOTICE. Desenho copiado sem alteração.
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import Svg, {Path} from "react-native-svg";
|
|
5
|
+
|
|
6
|
+
export default function XBold({size = 32, color = "#000000", ...rest}) {
|
|
7
|
+
return React.createElement(Svg, {width: size, height: size, viewBox: "0 0 256 256", ...rest},
|
|
8
|
+
React.createElement(Path, {d: "M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z", fill: color})
|
|
9
|
+
);
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aurea-uds/native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.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.
|
|
58
|
+
"@aurea-uds/tokens": "^0.33.0"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
61
|
"@react-native-community/datetimepicker": ">=8",
|