@aurea-uds/native 0.10.0 → 0.10.1
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 +10 -0
- package/dist/icon.d.ts +25 -3
- package/dist/icon.js +20 -2
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -852,6 +852,16 @@ poda nenhuma: módulo que não é importado não entra no grafo.
|
|
|
852
852
|
Os nomes são **os mesmos do sprite da web**, e um gate cobra isso (check 38): o que `<Icon name>`
|
|
853
853
|
desenha lá, `icons/<nome>` desenha aqui.
|
|
854
854
|
|
|
855
|
+
**Um glifo próprio** (o logotipo do app) sai de `criarGlifo`, sem o app importar o
|
|
856
|
+
`react-native-svg`: retângulos, círculos e caminhos, preenchidos ou a traço. A tinta usa os nomes
|
|
857
|
+
do SVG, e `"currentColor"` é a cor do `Icon`:
|
|
858
|
+
|
|
859
|
+
```tsx
|
|
860
|
+
const Logo = criarGlifo({fill: "none", stroke: "currentColor", strokeWidth: 2,
|
|
861
|
+
strokeLinecap: "round", paths: ["M…"]});
|
|
862
|
+
const ICONES = criarRegistroDeIcones({...OS_DO_APP, logo: Logo});
|
|
863
|
+
```
|
|
864
|
+
|
|
855
865
|
## O que este pacote não faz
|
|
856
866
|
|
|
857
867
|
- **Não promete paridade** com a web. O React Native não tem `<p>`, cascata de tipografia,
|
package/dist/icon.d.ts
CHANGED
|
@@ -13,10 +13,25 @@ export type AureaIconRegistry = Readonly<Record<IconName, AureaIconComponent>>;
|
|
|
13
13
|
* render invalidaria o `useMemo` de todo componente que o recebe.
|
|
14
14
|
*/
|
|
15
15
|
export declare const criarRegistroDeIcones: <T extends AureaIconRegistry>(r: T) => T;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* A tinta de uma forma. Sem `fill`, ela pinta com a cor que o `Icon` passar (a do tema, por
|
|
18
|
+
* padrão). Os nomes são os do SVG, para quem copia de um arquivo `.svg` copiar sem traduzir.
|
|
19
|
+
*
|
|
20
|
+
* **`"currentColor"`** em `fill` ou `stroke` quer dizer "a cor do `Icon`", como na web — e é o que
|
|
21
|
+
* faz um desenho a traço trocar de cor com o tema.
|
|
22
|
+
*/
|
|
17
23
|
interface Pintura {
|
|
18
|
-
/** Cor fixa desta forma, ou `"none"` para não pintar. Sem isto,
|
|
24
|
+
/** Cor fixa desta forma, `"currentColor"`, ou `"none"` para não pintar. Sem isto, segue o `color`. */
|
|
19
25
|
fill?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Cor do TRAÇO. Sem isto não há traço. Desenho só de traço leva `fill: "none"`, como no SVG.
|
|
28
|
+
* R-05, a metade que faltava.
|
|
29
|
+
*/
|
|
30
|
+
stroke?: string;
|
|
31
|
+
/** Espessura do traço, na unidade do `viewBox`: cresce e encolhe junto com o glifo. */
|
|
32
|
+
strokeWidth?: number;
|
|
33
|
+
strokeLinecap?: "butt" | "round" | "square";
|
|
34
|
+
strokeLinejoin?: "miter" | "round" | "bevel";
|
|
20
35
|
}
|
|
21
36
|
export interface AureaGlifoCaminho extends Pintura {
|
|
22
37
|
d: string;
|
|
@@ -34,7 +49,11 @@ export interface AureaGlifoRetangulo extends Pintura {
|
|
|
34
49
|
height: number;
|
|
35
50
|
rx?: number;
|
|
36
51
|
}
|
|
37
|
-
|
|
52
|
+
/**
|
|
53
|
+
* A tinta declarada aqui vale para TODAS as formas, como os atributos no `<svg>` raiz de um
|
|
54
|
+
* arquivo. A tinta de cada forma vence a do desenho.
|
|
55
|
+
*/
|
|
56
|
+
export interface AureaGlifoDesenho extends Pintura {
|
|
38
57
|
/** Padrão `"0 0 32 32"`, a caixa dos glifos do Carbon. */
|
|
39
58
|
viewBox?: string;
|
|
40
59
|
rects?: readonly AureaGlifoRetangulo[];
|
|
@@ -48,6 +67,9 @@ export interface AureaGlifoDesenho {
|
|
|
48
67
|
*
|
|
49
68
|
* ```tsx
|
|
50
69
|
* const Marca = criarGlifo({viewBox: "0 0 64 64", circles: [{cx: 32, cy: 32, r: 30}], paths: ["M…"]});
|
|
70
|
+
* // a traço: a tinta no desenho inteiro, como no `<svg>` raiz
|
|
71
|
+
* const Logo = criarGlifo({fill: "none", stroke: "currentColor", strokeWidth: 2,
|
|
72
|
+
* strokeLinecap: "round", paths: ["M…"]});
|
|
51
73
|
* const ICONES = criarRegistroDeIcones({...OS_DO_APP, marca: Marca});
|
|
52
74
|
* <Icon name="marca" size="xl" />
|
|
53
75
|
* ```
|
package/dist/icon.js
CHANGED
|
@@ -28,12 +28,30 @@ import { useAureaTokens } from "./theme.js";
|
|
|
28
28
|
* render invalidaria o `useMemo` de todo componente que o recebe.
|
|
29
29
|
*/
|
|
30
30
|
export const criarRegistroDeIcones = (r) => r;
|
|
31
|
+
/** `"currentColor"` vira a cor do `Icon`; o resto passa como veio. */
|
|
32
|
+
const tinta = (v, color) => (v === "currentColor" ? color : v);
|
|
33
|
+
/** A tinta final de uma forma: a dela, senão a do desenho, senão a cor do `Icon` no `fill`. */
|
|
34
|
+
function pintar(forma, desenho, color) {
|
|
35
|
+
const stroke = tinta(forma.stroke ?? desenho.stroke, color);
|
|
36
|
+
return {
|
|
37
|
+
fill: tinta(forma.fill ?? desenho.fill, color) ?? color,
|
|
38
|
+
...(stroke !== undefined && {
|
|
39
|
+
stroke,
|
|
40
|
+
strokeWidth: forma.strokeWidth ?? desenho.strokeWidth,
|
|
41
|
+
strokeLinecap: forma.strokeLinecap ?? desenho.strokeLinecap,
|
|
42
|
+
strokeLinejoin: forma.strokeLinejoin ?? desenho.strokeLinejoin,
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
31
46
|
/**
|
|
32
47
|
* Um glifo PRÓPRIO do app — um logotipo, por exemplo — desenhado pela Aurea a partir dos dados
|
|
33
48
|
* do desenho. R-05, 24/09/2026.
|
|
34
49
|
*
|
|
35
50
|
* ```tsx
|
|
36
51
|
* const Marca = criarGlifo({viewBox: "0 0 64 64", circles: [{cx: 32, cy: 32, r: 30}], paths: ["M…"]});
|
|
52
|
+
* // a traço: a tinta no desenho inteiro, como no `<svg>` raiz
|
|
53
|
+
* const Logo = criarGlifo({fill: "none", stroke: "currentColor", strokeWidth: 2,
|
|
54
|
+
* strokeLinecap: "round", paths: ["M…"]});
|
|
37
55
|
* const ICONES = criarRegistroDeIcones({...OS_DO_APP, marca: Marca});
|
|
38
56
|
* <Icon name="marca" size="xl" />
|
|
39
57
|
* ```
|
|
@@ -51,9 +69,9 @@ export const criarRegistroDeIcones = (r) => r;
|
|
|
51
69
|
*/
|
|
52
70
|
export function criarGlifo(desenho) {
|
|
53
71
|
const { viewBox = "0 0 32 32", rects = [], circles = [], paths = [] } = desenho;
|
|
54
|
-
const Glifo = ({ size = 32, color = "#000000" }) => (_jsxs(Svg, { width: size, height: size, viewBox: viewBox, children: [rects.map((r, i) => _jsx(Rect, { ...r,
|
|
72
|
+
const Glifo = ({ size = 32, color = "#000000" }) => (_jsxs(Svg, { width: size, height: size, viewBox: viewBox, children: [rects.map((r, i) => _jsx(Rect, { ...r, ...pintar(r, desenho, color) }, `r${i}`)), circles.map((c, i) => _jsx(Circle, { ...c, ...pintar(c, desenho, color) }, `c${i}`)), paths.map((p, i) => {
|
|
55
73
|
const c = typeof p === "string" ? { d: p } : p;
|
|
56
|
-
return _jsx(Path, { ...c,
|
|
74
|
+
return _jsx(Path, { ...c, ...pintar(c, desenho, color) }, `p${i}`);
|
|
57
75
|
})] }));
|
|
58
76
|
return Glifo;
|
|
59
77
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aurea-uds/native",
|
|
3
|
-
"version": "0.10.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.10.1",
|
|
4
|
+
"description": "A Aurea UDS para React Native: o provider de tema e densidade, os componentes e os ícones do Carbon sobre react-native-svg.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aurea",
|
|
7
7
|
"design-system",
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
"url": "git+https://github.com/victor1mor/aurea-uds.git",
|
|
17
17
|
"directory": "packages/native"
|
|
18
18
|
},
|
|
19
|
+
"homepage": "https://github.com/victor1mor/aurea-uds/tree/main/packages/native#readme",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/victor1mor/aurea-uds/issues"
|
|
22
|
+
},
|
|
19
23
|
"publishConfig": {
|
|
20
24
|
"access": "public"
|
|
21
25
|
},
|
|
@@ -47,7 +51,7 @@
|
|
|
47
51
|
"NOTICE"
|
|
48
52
|
],
|
|
49
53
|
"dependencies": {
|
|
50
|
-
"@aurea-uds/tokens": "^0.10.
|
|
54
|
+
"@aurea-uds/tokens": "^0.10.1"
|
|
51
55
|
},
|
|
52
56
|
"peerDependencies": {
|
|
53
57
|
"@react-native-community/datetimepicker": ">=8",
|