structra-ui 0.1.30 → 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.
- package/README.md +25 -23
- package/fesm2022/structra-ui.mjs +2 -2
- package/fesm2022/structra-ui.mjs.map +1 -1
- package/files/roboto-cyrillic-100-italic.woff +0 -0
- package/files/roboto-cyrillic-100-italic.woff2 +0 -0
- package/files/roboto-cyrillic-100-normal.woff +0 -0
- package/files/roboto-cyrillic-100-normal.woff2 +0 -0
- package/files/roboto-cyrillic-200-italic.woff +0 -0
- package/files/roboto-cyrillic-200-italic.woff2 +0 -0
- package/files/roboto-cyrillic-200-normal.woff +0 -0
- package/files/roboto-cyrillic-200-normal.woff2 +0 -0
- package/files/roboto-cyrillic-300-italic.woff +0 -0
- package/files/roboto-cyrillic-300-italic.woff2 +0 -0
- package/files/roboto-cyrillic-300-normal.woff +0 -0
- package/files/roboto-cyrillic-300-normal.woff2 +0 -0
- package/files/roboto-cyrillic-400-italic.woff +0 -0
- package/files/roboto-cyrillic-400-italic.woff2 +0 -0
- package/files/roboto-cyrillic-400-normal.woff +0 -0
- package/files/roboto-cyrillic-400-normal.woff2 +0 -0
- package/files/roboto-cyrillic-500-italic.woff +0 -0
- package/files/roboto-cyrillic-500-italic.woff2 +0 -0
- package/files/roboto-cyrillic-500-normal.woff +0 -0
- package/files/roboto-cyrillic-500-normal.woff2 +0 -0
- package/files/roboto-cyrillic-600-italic.woff +0 -0
- package/files/roboto-cyrillic-600-italic.woff2 +0 -0
- package/files/roboto-cyrillic-600-normal.woff +0 -0
- package/files/roboto-cyrillic-600-normal.woff2 +0 -0
- package/files/roboto-cyrillic-700-italic.woff +0 -0
- package/files/roboto-cyrillic-700-italic.woff2 +0 -0
- package/files/roboto-cyrillic-700-normal.woff +0 -0
- package/files/roboto-cyrillic-700-normal.woff2 +0 -0
- package/files/roboto-cyrillic-800-italic.woff +0 -0
- package/files/roboto-cyrillic-800-italic.woff2 +0 -0
- package/files/roboto-cyrillic-800-normal.woff +0 -0
- package/files/roboto-cyrillic-800-normal.woff2 +0 -0
- package/files/roboto-cyrillic-900-italic.woff +0 -0
- package/files/roboto-cyrillic-900-italic.woff2 +0 -0
- package/files/roboto-cyrillic-900-normal.woff +0 -0
- package/files/roboto-cyrillic-900-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-100-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-100-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-100-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-100-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-200-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-200-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-200-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-200-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-300-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-300-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-300-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-300-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-400-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-400-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-400-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-400-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-500-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-500-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-500-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-500-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-600-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-600-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-600-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-600-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-700-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-700-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-700-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-700-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-800-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-800-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-800-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-800-normal.woff2 +0 -0
- package/files/roboto-cyrillic-ext-900-italic.woff +0 -0
- package/files/roboto-cyrillic-ext-900-italic.woff2 +0 -0
- package/files/roboto-cyrillic-ext-900-normal.woff +0 -0
- package/files/roboto-cyrillic-ext-900-normal.woff2 +0 -0
- package/files/roboto-greek-100-italic.woff +0 -0
- package/files/roboto-greek-100-italic.woff2 +0 -0
- package/files/roboto-greek-100-normal.woff +0 -0
- package/files/roboto-greek-100-normal.woff2 +0 -0
- package/files/roboto-greek-200-italic.woff +0 -0
- package/files/roboto-greek-200-italic.woff2 +0 -0
- package/files/roboto-greek-200-normal.woff +0 -0
- package/files/roboto-greek-200-normal.woff2 +0 -0
- package/files/roboto-greek-300-italic.woff +0 -0
- package/files/roboto-greek-300-italic.woff2 +0 -0
- package/files/roboto-greek-300-normal.woff +0 -0
- package/files/roboto-greek-300-normal.woff2 +0 -0
- package/files/roboto-greek-400-italic.woff +0 -0
- package/files/roboto-greek-400-italic.woff2 +0 -0
- package/files/roboto-greek-400-normal.woff +0 -0
- package/files/roboto-greek-400-normal.woff2 +0 -0
- package/files/roboto-greek-500-italic.woff +0 -0
- package/files/roboto-greek-500-italic.woff2 +0 -0
- package/files/roboto-greek-500-normal.woff +0 -0
- package/files/roboto-greek-500-normal.woff2 +0 -0
- package/files/roboto-greek-600-italic.woff +0 -0
- package/files/roboto-greek-600-italic.woff2 +0 -0
- package/files/roboto-greek-600-normal.woff +0 -0
- package/files/roboto-greek-600-normal.woff2 +0 -0
- package/files/roboto-greek-700-italic.woff +0 -0
- package/files/roboto-greek-700-italic.woff2 +0 -0
- package/files/roboto-greek-700-normal.woff +0 -0
- package/files/roboto-greek-700-normal.woff2 +0 -0
- package/files/roboto-greek-800-italic.woff +0 -0
- package/files/roboto-greek-800-italic.woff2 +0 -0
- package/files/roboto-greek-800-normal.woff +0 -0
- package/files/roboto-greek-800-normal.woff2 +0 -0
- package/files/roboto-greek-900-italic.woff +0 -0
- package/files/roboto-greek-900-italic.woff2 +0 -0
- package/files/roboto-greek-900-normal.woff +0 -0
- package/files/roboto-greek-900-normal.woff2 +0 -0
- package/files/roboto-greek-ext-100-italic.woff +0 -0
- package/files/roboto-greek-ext-100-italic.woff2 +0 -0
- package/files/roboto-greek-ext-100-normal.woff +0 -0
- package/files/roboto-greek-ext-100-normal.woff2 +0 -0
- package/files/roboto-greek-ext-200-italic.woff +0 -0
- package/files/roboto-greek-ext-200-italic.woff2 +0 -0
- package/files/roboto-greek-ext-200-normal.woff +0 -0
- package/files/roboto-greek-ext-200-normal.woff2 +0 -0
- package/files/roboto-greek-ext-300-italic.woff +0 -0
- package/files/roboto-greek-ext-300-italic.woff2 +0 -0
- package/files/roboto-greek-ext-300-normal.woff +0 -0
- package/files/roboto-greek-ext-300-normal.woff2 +0 -0
- package/files/roboto-greek-ext-400-italic.woff +0 -0
- package/files/roboto-greek-ext-400-italic.woff2 +0 -0
- package/files/roboto-greek-ext-400-normal.woff +0 -0
- package/files/roboto-greek-ext-400-normal.woff2 +0 -0
- package/files/roboto-greek-ext-500-italic.woff +0 -0
- package/files/roboto-greek-ext-500-italic.woff2 +0 -0
- package/files/roboto-greek-ext-500-normal.woff +0 -0
- package/files/roboto-greek-ext-500-normal.woff2 +0 -0
- package/files/roboto-greek-ext-600-italic.woff +0 -0
- package/files/roboto-greek-ext-600-italic.woff2 +0 -0
- package/files/roboto-greek-ext-600-normal.woff +0 -0
- package/files/roboto-greek-ext-600-normal.woff2 +0 -0
- package/files/roboto-greek-ext-700-italic.woff +0 -0
- package/files/roboto-greek-ext-700-italic.woff2 +0 -0
- package/files/roboto-greek-ext-700-normal.woff +0 -0
- package/files/roboto-greek-ext-700-normal.woff2 +0 -0
- package/files/roboto-greek-ext-800-italic.woff +0 -0
- package/files/roboto-greek-ext-800-italic.woff2 +0 -0
- package/files/roboto-greek-ext-800-normal.woff +0 -0
- package/files/roboto-greek-ext-800-normal.woff2 +0 -0
- package/files/roboto-greek-ext-900-italic.woff +0 -0
- package/files/roboto-greek-ext-900-italic.woff2 +0 -0
- package/files/roboto-greek-ext-900-normal.woff +0 -0
- package/files/roboto-greek-ext-900-normal.woff2 +0 -0
- package/files/roboto-latin-100-italic.woff +0 -0
- package/files/roboto-latin-100-italic.woff2 +0 -0
- package/files/roboto-latin-100-normal.woff +0 -0
- package/files/roboto-latin-100-normal.woff2 +0 -0
- package/files/roboto-latin-200-italic.woff +0 -0
- package/files/roboto-latin-200-italic.woff2 +0 -0
- package/files/roboto-latin-200-normal.woff +0 -0
- package/files/roboto-latin-200-normal.woff2 +0 -0
- package/files/roboto-latin-300-italic.woff +0 -0
- package/files/roboto-latin-300-italic.woff2 +0 -0
- package/files/roboto-latin-300-normal.woff +0 -0
- package/files/roboto-latin-300-normal.woff2 +0 -0
- package/files/roboto-latin-400-italic.woff +0 -0
- package/files/roboto-latin-400-italic.woff2 +0 -0
- package/files/roboto-latin-400-normal.woff +0 -0
- package/files/roboto-latin-400-normal.woff2 +0 -0
- package/files/roboto-latin-500-italic.woff +0 -0
- package/files/roboto-latin-500-italic.woff2 +0 -0
- package/files/roboto-latin-500-normal.woff +0 -0
- package/files/roboto-latin-500-normal.woff2 +0 -0
- package/files/roboto-latin-600-italic.woff +0 -0
- package/files/roboto-latin-600-italic.woff2 +0 -0
- package/files/roboto-latin-600-normal.woff +0 -0
- package/files/roboto-latin-600-normal.woff2 +0 -0
- package/files/roboto-latin-700-italic.woff +0 -0
- package/files/roboto-latin-700-italic.woff2 +0 -0
- package/files/roboto-latin-700-normal.woff +0 -0
- package/files/roboto-latin-700-normal.woff2 +0 -0
- package/files/roboto-latin-800-italic.woff +0 -0
- package/files/roboto-latin-800-italic.woff2 +0 -0
- package/files/roboto-latin-800-normal.woff +0 -0
- package/files/roboto-latin-800-normal.woff2 +0 -0
- package/files/roboto-latin-900-italic.woff +0 -0
- package/files/roboto-latin-900-italic.woff2 +0 -0
- package/files/roboto-latin-900-normal.woff +0 -0
- package/files/roboto-latin-900-normal.woff2 +0 -0
- package/files/roboto-latin-ext-100-italic.woff +0 -0
- package/files/roboto-latin-ext-100-italic.woff2 +0 -0
- package/files/roboto-latin-ext-100-normal.woff +0 -0
- package/files/roboto-latin-ext-100-normal.woff2 +0 -0
- package/files/roboto-latin-ext-200-italic.woff +0 -0
- package/files/roboto-latin-ext-200-italic.woff2 +0 -0
- package/files/roboto-latin-ext-200-normal.woff +0 -0
- package/files/roboto-latin-ext-200-normal.woff2 +0 -0
- package/files/roboto-latin-ext-300-italic.woff +0 -0
- package/files/roboto-latin-ext-300-italic.woff2 +0 -0
- package/files/roboto-latin-ext-300-normal.woff +0 -0
- package/files/roboto-latin-ext-300-normal.woff2 +0 -0
- package/files/roboto-latin-ext-400-italic.woff +0 -0
- package/files/roboto-latin-ext-400-italic.woff2 +0 -0
- package/files/roboto-latin-ext-400-normal.woff +0 -0
- package/files/roboto-latin-ext-400-normal.woff2 +0 -0
- package/files/roboto-latin-ext-500-italic.woff +0 -0
- package/files/roboto-latin-ext-500-italic.woff2 +0 -0
- package/files/roboto-latin-ext-500-normal.woff +0 -0
- package/files/roboto-latin-ext-500-normal.woff2 +0 -0
- package/files/roboto-latin-ext-600-italic.woff +0 -0
- package/files/roboto-latin-ext-600-italic.woff2 +0 -0
- package/files/roboto-latin-ext-600-normal.woff +0 -0
- package/files/roboto-latin-ext-600-normal.woff2 +0 -0
- package/files/roboto-latin-ext-700-italic.woff +0 -0
- package/files/roboto-latin-ext-700-italic.woff2 +0 -0
- package/files/roboto-latin-ext-700-normal.woff +0 -0
- package/files/roboto-latin-ext-700-normal.woff2 +0 -0
- package/files/roboto-latin-ext-800-italic.woff +0 -0
- package/files/roboto-latin-ext-800-italic.woff2 +0 -0
- package/files/roboto-latin-ext-800-normal.woff +0 -0
- package/files/roboto-latin-ext-800-normal.woff2 +0 -0
- package/files/roboto-latin-ext-900-italic.woff +0 -0
- package/files/roboto-latin-ext-900-italic.woff2 +0 -0
- package/files/roboto-latin-ext-900-normal.woff +0 -0
- package/files/roboto-latin-ext-900-normal.woff2 +0 -0
- package/files/roboto-math-100-italic.woff +0 -0
- package/files/roboto-math-100-italic.woff2 +0 -0
- package/files/roboto-math-100-normal.woff +0 -0
- package/files/roboto-math-100-normal.woff2 +0 -0
- package/files/roboto-math-200-italic.woff +0 -0
- package/files/roboto-math-200-italic.woff2 +0 -0
- package/files/roboto-math-200-normal.woff +0 -0
- package/files/roboto-math-200-normal.woff2 +0 -0
- package/files/roboto-math-300-italic.woff +0 -0
- package/files/roboto-math-300-italic.woff2 +0 -0
- package/files/roboto-math-300-normal.woff +0 -0
- package/files/roboto-math-300-normal.woff2 +0 -0
- package/files/roboto-math-400-italic.woff +0 -0
- package/files/roboto-math-400-italic.woff2 +0 -0
- package/files/roboto-math-400-normal.woff +0 -0
- package/files/roboto-math-400-normal.woff2 +0 -0
- package/files/roboto-math-500-italic.woff +0 -0
- package/files/roboto-math-500-italic.woff2 +0 -0
- package/files/roboto-math-500-normal.woff +0 -0
- package/files/roboto-math-500-normal.woff2 +0 -0
- package/files/roboto-math-600-italic.woff +0 -0
- package/files/roboto-math-600-italic.woff2 +0 -0
- package/files/roboto-math-600-normal.woff +0 -0
- package/files/roboto-math-600-normal.woff2 +0 -0
- package/files/roboto-math-700-italic.woff +0 -0
- package/files/roboto-math-700-italic.woff2 +0 -0
- package/files/roboto-math-700-normal.woff +0 -0
- package/files/roboto-math-700-normal.woff2 +0 -0
- package/files/roboto-math-800-italic.woff +0 -0
- package/files/roboto-math-800-italic.woff2 +0 -0
- package/files/roboto-math-800-normal.woff +0 -0
- package/files/roboto-math-800-normal.woff2 +0 -0
- package/files/roboto-math-900-italic.woff +0 -0
- package/files/roboto-math-900-italic.woff2 +0 -0
- package/files/roboto-math-900-normal.woff +0 -0
- package/files/roboto-math-900-normal.woff2 +0 -0
- package/files/roboto-symbols-100-italic.woff +0 -0
- package/files/roboto-symbols-100-italic.woff2 +0 -0
- package/files/roboto-symbols-100-normal.woff +0 -0
- package/files/roboto-symbols-100-normal.woff2 +0 -0
- package/files/roboto-symbols-200-italic.woff +0 -0
- package/files/roboto-symbols-200-italic.woff2 +0 -0
- package/files/roboto-symbols-200-normal.woff +0 -0
- package/files/roboto-symbols-200-normal.woff2 +0 -0
- package/files/roboto-symbols-300-italic.woff +0 -0
- package/files/roboto-symbols-300-italic.woff2 +0 -0
- package/files/roboto-symbols-300-normal.woff +0 -0
- package/files/roboto-symbols-300-normal.woff2 +0 -0
- package/files/roboto-symbols-400-italic.woff +0 -0
- package/files/roboto-symbols-400-italic.woff2 +0 -0
- package/files/roboto-symbols-400-normal.woff +0 -0
- package/files/roboto-symbols-400-normal.woff2 +0 -0
- package/files/roboto-symbols-500-italic.woff +0 -0
- package/files/roboto-symbols-500-italic.woff2 +0 -0
- package/files/roboto-symbols-500-normal.woff +0 -0
- package/files/roboto-symbols-500-normal.woff2 +0 -0
- package/files/roboto-symbols-600-italic.woff +0 -0
- package/files/roboto-symbols-600-italic.woff2 +0 -0
- package/files/roboto-symbols-600-normal.woff +0 -0
- package/files/roboto-symbols-600-normal.woff2 +0 -0
- package/files/roboto-symbols-700-italic.woff +0 -0
- package/files/roboto-symbols-700-italic.woff2 +0 -0
- package/files/roboto-symbols-700-normal.woff +0 -0
- package/files/roboto-symbols-700-normal.woff2 +0 -0
- package/files/roboto-symbols-800-italic.woff +0 -0
- package/files/roboto-symbols-800-italic.woff2 +0 -0
- package/files/roboto-symbols-800-normal.woff +0 -0
- package/files/roboto-symbols-800-normal.woff2 +0 -0
- package/files/roboto-symbols-900-italic.woff +0 -0
- package/files/roboto-symbols-900-italic.woff2 +0 -0
- package/files/roboto-symbols-900-normal.woff +0 -0
- package/files/roboto-symbols-900-normal.woff2 +0 -0
- package/files/roboto-vietnamese-100-italic.woff +0 -0
- package/files/roboto-vietnamese-100-italic.woff2 +0 -0
- package/files/roboto-vietnamese-100-normal.woff +0 -0
- package/files/roboto-vietnamese-100-normal.woff2 +0 -0
- package/files/roboto-vietnamese-200-italic.woff +0 -0
- package/files/roboto-vietnamese-200-italic.woff2 +0 -0
- package/files/roboto-vietnamese-200-normal.woff +0 -0
- package/files/roboto-vietnamese-200-normal.woff2 +0 -0
- package/files/roboto-vietnamese-300-italic.woff +0 -0
- package/files/roboto-vietnamese-300-italic.woff2 +0 -0
- package/files/roboto-vietnamese-300-normal.woff +0 -0
- package/files/roboto-vietnamese-300-normal.woff2 +0 -0
- package/files/roboto-vietnamese-400-italic.woff +0 -0
- package/files/roboto-vietnamese-400-italic.woff2 +0 -0
- package/files/roboto-vietnamese-400-normal.woff +0 -0
- package/files/roboto-vietnamese-400-normal.woff2 +0 -0
- package/files/roboto-vietnamese-500-italic.woff +0 -0
- package/files/roboto-vietnamese-500-italic.woff2 +0 -0
- package/files/roboto-vietnamese-500-normal.woff +0 -0
- package/files/roboto-vietnamese-500-normal.woff2 +0 -0
- package/files/roboto-vietnamese-600-italic.woff +0 -0
- package/files/roboto-vietnamese-600-italic.woff2 +0 -0
- package/files/roboto-vietnamese-600-normal.woff +0 -0
- package/files/roboto-vietnamese-600-normal.woff2 +0 -0
- package/files/roboto-vietnamese-700-italic.woff +0 -0
- package/files/roboto-vietnamese-700-italic.woff2 +0 -0
- package/files/roboto-vietnamese-700-normal.woff +0 -0
- package/files/roboto-vietnamese-700-normal.woff2 +0 -0
- package/files/roboto-vietnamese-800-italic.woff +0 -0
- package/files/roboto-vietnamese-800-italic.woff2 +0 -0
- package/files/roboto-vietnamese-800-normal.woff +0 -0
- package/files/roboto-vietnamese-800-normal.woff2 +0 -0
- package/files/roboto-vietnamese-900-italic.woff +0 -0
- package/files/roboto-vietnamese-900-italic.woff2 +0 -0
- package/files/roboto-vietnamese-900-normal.woff +0 -0
- package/files/roboto-vietnamese-900-normal.woff2 +0 -0
- package/package.json +2 -1
- package/structra-ui.css +1 -1
package/README.md
CHANGED
|
@@ -1,59 +1,61 @@
|
|
|
1
1
|
# structra-ui
|
|
2
2
|
|
|
3
|
-
Biblioteca **Angular** da
|
|
3
|
+
Biblioteca **Angular 21** da Structra: componentes, formulários e padrões de UI reutilizáveis.
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Exemplos ao vivo:** [StructraLab](https://structralab.com/)
|
|
6
6
|
|
|
7
7
|
## Instalação
|
|
8
8
|
|
|
9
|
-
Com
|
|
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
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
21
|
+
Versões: segue as gamas em `peerDependencies` do `package.json` publicado (Angular **21.2.x**, AG Grid **35.x**, etc.).
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
## AG Grid (grelhas)
|
|
25
24
|
|
|
26
|
-
|
|
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
|
-
|
|
29
|
-
2. O pacote em `node_modules/structra-ui/` tem de conter **`structra-ui.css`**, a pasta **`webfonts/`** (Font Awesome 6 offline) e `fesm2022/structra-ui.mjs`. Os ícones usam classes `fa-solid …` com fontes locais — **sem CDN**.
|
|
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
|
-
|
|
29
|
+
```ts
|
|
30
|
+
import { AllCommunityModule, ModuleRegistry } from 'ag-grid-community';
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
ModuleRegistry.registerModules([AllCommunityModule]);
|
|
33
|
+
```
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
## Estilos globais
|
|
36
36
|
|
|
37
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
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/`
|
|
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 {
|
|
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/fesm2022/structra-ui.mjs
CHANGED
|
@@ -7505,11 +7505,11 @@ class AppDialogComponent {
|
|
|
7505
7505
|
el.title = '';
|
|
7506
7506
|
}
|
|
7507
7507
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7508
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:
|
|
7508
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:inherit;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7509
7509
|
}
|
|
7510
7510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, decorators: [{
|
|
7511
7511
|
type: Component,
|
|
7512
|
-
args: [{ selector: 'app-dialog', imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:
|
|
7512
|
+
args: [{ selector: 'app-dialog', imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:inherit;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
|
|
7513
7513
|
}], propDecorators: { hostThemeClasses: [{
|
|
7514
7514
|
type: HostBinding,
|
|
7515
7515
|
args: ['class']
|