structra-ui 0.1.31 → 0.1.32

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.
Files changed (2) hide show
  1. package/README.md +25 -23
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,59 +1,61 @@
1
1
  # structra-ui
2
2
 
3
- Biblioteca **Angular** da stack **Structra** para interfaces consistentes: componentes, layout de formulários e padrões de UI reutilizáveis entre produtos.
3
+ Biblioteca **Angular 21** da Structra: componentes, formulários e padrões de UI reutilizáveis.
4
4
 
5
- **Documentação e exemplos:** [StructraLab](https://structralab.com/)
5
+ **Exemplos ao vivo:** [StructraLab](https://structralab.com/)
6
6
 
7
7
  ## Instalação
8
8
 
9
- Com **npm 7 ou superior**, um comando instala a lib e resolve os **peer dependencies** obrigatórios na raiz do projeto (Angular, Material, CDK, Router, AG Grid, RxJS, Zone.js):
9
+ **Com npm 7 ou superior** (recomendado): um comando instala a lib e, em geral, os **peer dependencies** na raiz do projeto.
10
10
 
11
11
  ```bash
12
12
  npm install structra-ui
13
13
  ```
14
14
 
15
- Se usar **npm 6 ou anterior**, instale explicitamente os mesmos pacotes e versões indicados em `peerDependencies` no `package.json` do npm.
15
+ Com **npm 6** (ou se os peers não forem instalados), instala explicitamente o que falta. O mínimo extra em relação a uma app Angular 21 típica costuma ser **AG Grid** e **Material/CDK/Router**, se ainda não existirem:
16
16
 
17
- **Compatibilidade**
18
-
19
- - **Angular 21** (`^21.2.7` nos peers): sem suporte para Angular 22.
20
- - **Material e CDK** obrigatórios; **Router** obrigatório; **AG Grid** obrigatório; **RxJS** e **Zone.js** obrigatórios — nada é opcional no `package.json` da lib.
17
+ ```bash
18
+ npm install structra-ui ag-grid-community ag-grid-angular @angular/material @angular/cdk @angular/router
19
+ ```
21
20
 
22
- ## Estilos globais (automático)
21
+ Versões: segue as gamas em `peerDependencies` do `package.json` publicado (Angular **21.2.x**, AG Grid **35.x**, etc.).
23
22
 
24
- **Não precisa** de adicionar nada ao `angular.json` → `styles` por causa da Structra: ao fazer `import { … } from 'structra-ui'`, o bundle publicado (`fesm2022/structra-ui.mjs`) inclui no topo `import '../structra-ui.css'`, e o **Angular Application builder** segue esse import e injeta o tema (tokens, Material, AG Grid, CDK, etc.) na app.
23
+ ## AG Grid (grelhas)
25
24
 
26
- Requisitos no projeto destino:
25
+ Os componentes de **grelha** da lib dependem de **`ag-grid-community`** e **`ag-grid-angular`**. Sem estes pacotes, o build ou o runtime podem falhar ao usar esses componentes.
27
26
 
28
- 1. **`npm run lib:build`** no monorepo antes de publicar (não publique `ng build structra-ui`), senão o `.css` e o patch ao `.mjs` não existem.
29
- 2. O pacote em `node_modules/structra-ui/` tem de conter **`structra-ui.css`**, **`webfonts/`** (Font Awesome), **`files/`** (Roboto via Fontsource) e `fesm2022/structra-ui.mjs`. Tipografia e ícones são **offline**, alinhados ao showcase StructraLab.
27
+ Além disso, o AG Grid 33+ exige **registar os módulos Community uma vez** na aplicação, antes de montar qualquer grelha. Exemplo mínimo (por exemplo em `main.ts`, antes de `bootstrapApplication`):
30
28
 
31
- **Opcional (duplicar tema):** só se quiseres carregar o CSS **antes** de qualquer import TypeScript da lib, podes ainda listar em `angular.json` → `styles` o `node_modules/structra-ui/structra-ui.css` ou a ponte `structra-ui.scss` — não é obrigatório para «funcionar».
29
+ ```ts
30
+ import { AllCommunityModule, ModuleRegistry } from 'ag-grid-community';
32
31
 
33
- **`import 'structra-ui/styles'`** em `main.ts` também funciona (export `./styles` → mesmo CSS), mas **não é necessário** se já importas componentes ou símbolos de `'structra-ui'`.
32
+ ModuleRegistry.registerModules([AllCommunityModule]);
33
+ ```
34
34
 
35
- **Atenção:** `import type { … } from 'structra-ui'` é apagado em compile-time e **não** executa o módulo — o tema **não** carrega. Garante pelo menos um `import { … }` em runtime ou `import 'structra-ui/styles'`.
35
+ ## Estilos globais
36
36
 
37
- **AG Grid 35+:** registe os módulos Community uma vez na app (ex. `ModuleRegistry.registerModules([AllCommunityModule])` em `main.ts`).
37
+ Ao importar algo de `structra-ui` em runtime (por exemplo `import { TextFieldComponent } from 'structra-ui'`), o tema global (Material, tokens, AG Grid, ícones, Roboto, etc.) entra pelo ficheiro publicado `structra-ui.css`. Não é obrigatório repetir isso no `angular.json` → `styles`.
38
38
 
39
- **Importar componentes:** `import { TextFieldComponent } from 'structra-ui';` e use em `imports: [TextFieldComponent, …]` do `@Component`. No `tsconfig.json` da app, prefira `"moduleResolution": "bundler"` ou `"node16"` para o Node resolver o campo `exports` do pacote.
39
+ **Nota:** `import type { } from 'structra-ui'` não carrega o CSS do tema usa um import de valor ou `import 'structra-ui/styles'`.
40
40
 
41
- ## Build do pacote
41
+ ## Build do pacote (mantenedores do monorepo)
42
42
 
43
- A entrada publicada é **`src/structra-public-api.ts`** na raiz do monorepo (ver `ng-package.json`). O comando:
43
+ Na raiz do repositório `web-components`:
44
44
 
45
45
  ```bash
46
46
  npm run lib:build
47
47
  ```
48
48
 
49
- Gera `dist/structra-ui/` (JavaScript com import do tema + tipos + **`structra-ui.css`** + **`structra-ui.scss`** ponte). **Não use só `ng build structra-ui`** para publicar: o `npm run lib:build` corre o ng-packagr e depois gera o CSS, a ponte SCSS e **injeta** `import '../structra-ui.css'` no FESM.
49
+ Gera `dist/structra-ui/` pronto para `npm pack` / `npm publish`. Não uses só `ng build structra-ui` para publicar: o tema global completa-se nesse script.
50
50
 
51
- ## Uso
51
+ ## Uso rápido
52
52
 
53
53
  ```ts
54
- import { STRUCTRA_UI, BaseButtonComponent } from 'structra-ui';
54
+ import { TextFieldComponent } from 'structra-ui';
55
55
  ```
56
56
 
57
+ No `tsconfig` da app, convém `moduleResolution` `bundler` ou `node16` para resolver bem o campo `exports` do npm.
58
+
57
59
  ## Licença
58
60
 
59
61
  MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "structra-ui",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "description": "Biblioteca de componentes Angular da StructraLab (UI reutilizável).",
5
5
  "homepage": "https://structralab.com/",
6
6
  "license": "MIT",