@dev-tcloud/tcloud-ui 6.14.3 → 6.17.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.
Files changed (92) hide show
  1. package/docs/tcloud-ui-accordion.md +345 -0
  2. package/docs/tcloud-ui-actions.md +88 -0
  3. package/docs/tcloud-ui-alert-banner.md +104 -0
  4. package/docs/tcloud-ui-array-to-text.md +361 -0
  5. package/docs/tcloud-ui-breadcrumb.md +103 -0
  6. package/docs/tcloud-ui-bytes.md +109 -0
  7. package/docs/tcloud-ui-calendar.md +387 -0
  8. package/docs/tcloud-ui-card-accordion.md +266 -0
  9. package/docs/tcloud-ui-card-title.md +47 -0
  10. package/docs/tcloud-ui-card.md +40 -0
  11. package/docs/tcloud-ui-choice-issues.md +59 -0
  12. package/docs/tcloud-ui-cnpj.md +102 -0
  13. package/docs/tcloud-ui-container.md +171 -0
  14. package/docs/tcloud-ui-cpf.md +102 -0
  15. package/docs/tcloud-ui-currency.md +271 -0
  16. package/docs/tcloud-ui-data-list.md +91 -0
  17. package/docs/tcloud-ui-datebr.md +139 -0
  18. package/docs/tcloud-ui-datepicker-time.md +191 -0
  19. package/docs/tcloud-ui-datepicker.md +186 -0
  20. package/docs/tcloud-ui-dropdown-multi.md +444 -0
  21. package/docs/tcloud-ui-dropdown.md +369 -0
  22. package/docs/tcloud-ui-el-copy.md +113 -0
  23. package/docs/tcloud-ui-empty-content.md +412 -0
  24. package/docs/tcloud-ui-faq.md +496 -0
  25. package/docs/tcloud-ui-filter-bar.md +86 -0
  26. package/docs/tcloud-ui-filters.md +337 -0
  27. package/docs/tcloud-ui-hover-parent.md +467 -0
  28. package/docs/tcloud-ui-icon-button.md +104 -0
  29. package/docs/tcloud-ui-input-container.md +520 -0
  30. package/docs/tcloud-ui-input-password.md +258 -0
  31. package/docs/tcloud-ui-input-search.md +314 -0
  32. package/docs/tcloud-ui-label-token.md +286 -0
  33. package/docs/tcloud-ui-legend.md +72 -0
  34. package/docs/tcloud-ui-line-step-circle.md +98 -0
  35. package/docs/tcloud-ui-line-step-title.md +194 -0
  36. package/docs/tcloud-ui-linha-logo.md +550 -0
  37. package/docs/tcloud-ui-loading.md +88 -0
  38. package/docs/tcloud-ui-message.md +539 -0
  39. package/docs/tcloud-ui-modal.md +196 -0
  40. package/docs/tcloud-ui-monthname.md +123 -0
  41. package/docs/tcloud-ui-multi-input.md +290 -0
  42. package/docs/tcloud-ui-multi-select.md +311 -0
  43. package/docs/tcloud-ui-multiples-values.md +157 -0
  44. package/docs/tcloud-ui-not-found.md +88 -0
  45. package/docs/tcloud-ui-number-step.md +134 -0
  46. package/docs/tcloud-ui-pagination.md +579 -0
  47. package/docs/tcloud-ui-progress-bar.md +65 -0
  48. package/docs/tcloud-ui-radio.md +83 -0
  49. package/docs/tcloud-ui-reorder-items.md +418 -0
  50. package/docs/tcloud-ui-respective.md +167 -0
  51. package/docs/tcloud-ui-scroll-box.md +109 -0
  52. package/docs/tcloud-ui-search-bar.md +88 -0
  53. package/docs/tcloud-ui-search-in-object.md +143 -0
  54. package/docs/tcloud-ui-search-input.md +74 -0
  55. package/docs/tcloud-ui-skeleton-loading.md +394 -0
  56. package/docs/tcloud-ui-slide-toggle.md +210 -0
  57. package/docs/tcloud-ui-statusinfo.md +138 -0
  58. package/docs/tcloud-ui-tab-group.md +376 -0
  59. package/docs/tcloud-ui-tab-menu.md +109 -0
  60. package/docs/tcloud-ui-table.md +96 -0
  61. package/docs/tcloud-ui-tag.md +379 -0
  62. package/docs/tcloud-ui-tc-badge.md +168 -0
  63. package/docs/tcloud-ui-tc-btn.md +189 -0
  64. package/docs/tcloud-ui-tc-colors.md +204 -0
  65. package/docs/tcloud-ui-tc-form-control.md +200 -0
  66. package/docs/tcloud-ui-tc-text.md +139 -0
  67. package/docs/tcloud-ui-tc-title.md +118 -0
  68. package/docs/tcloud-ui-tcloud-form.md +55 -0
  69. package/docs/tcloud-ui-toast.md +83 -0
  70. package/docs/tcloud-ui-tooltip.md +88 -0
  71. package/docs/tcloud-ui-topology.md +232 -0
  72. package/docs/tcloud-ui-upload-area.md +195 -0
  73. package/docs/tcloud-ui-welcome.md +112 -0
  74. package/docs/tcloud-ui-wizard-steps.md +103 -0
  75. package/js/tcloud-ui-app.js +11 -0
  76. package/package.json +1 -1
  77. package/scss/tcloud-ui/styles/_claus-badge.scss +117 -0
  78. package/scss/tcloud-ui/styles/_claus-btn.scss +207 -0
  79. package/scss/tcloud-ui/styles/_claus-card.scss +12 -0
  80. package/scss/tcloud-ui/styles/_claus-colors.scss +192 -0
  81. package/scss/tcloud-ui/styles/_claus-form.scss +88 -0
  82. package/scss/tcloud-ui/styles/_claus-sizes.scss +28 -0
  83. package/scss/tcloud-ui/styles/_claus-spacers.scss +49 -0
  84. package/scss/tcloud-ui/styles/_claus-themes.scss +36 -0
  85. package/scss/tcloud-ui/styles/_claus-title.scss +24 -0
  86. package/scss/tcloud-ui/styles/_claus-typography.scss +70 -0
  87. package/scss/tcloud-ui/styles/_claus-variables.scss +131 -0
  88. package/scss/tcloud-ui/styles/_colors.scss +123 -0
  89. package/scss/tcloud-ui/styles/_tc-btn.scss +210 -0
  90. package/scss/tcloud-ui/styles/_tc-card.scss +7 -0
  91. package/scss/tcloud-ui/styles/_tc-title.scss +49 -0
  92. package/scss/tcloud-ui/styles.scss +35 -0
@@ -0,0 +1,189 @@
1
+ # Layout — `.tc-btn`
2
+
3
+ ## Características
4
+
5
+ - Classe base para botões e links estilizados, aplicável às tags `<button>` e `<a>`.
6
+ - Cinco variantes **filled** e três variantes **outline**, cobrindo todos os contextos semânticos: ação principal, destrutiva, alerta, sucesso e neutra.
7
+ - Três tamanhos: `tc-btn-sm`, padrão e `tc-btn-lg`.
8
+ - Classe complementar `.tc-link` para links inline com variantes de cor.
9
+ - Compatível com dark mode e variantes de tema — cores baseadas nos tokens `--c-*`.
10
+ - Estado `disabled` com `opacity: 0.45` e `cursor: not-allowed`, aplicável a qualquer variante.
11
+ - Não há componente Angular envolvido — as classes são aplicadas diretamente no HTML.
12
+
13
+ ## Instalação
14
+
15
+ As classes são fornecidas pelo stylesheet global do projeto. Nenhuma importação de módulo Angular é necessária.
16
+ Certifique-se de que o stylesheet principal do `tcloud-ui` está incluído na aplicação:
17
+
18
+ ```ts
19
+ // angular.json — styles
20
+ "styles": [
21
+ "projects/tcloud-ui/assets/scss/tcloud-ui.scss"
22
+ ]
23
+ ```
24
+
25
+ ---
26
+
27
+ ## API — Classes
28
+
29
+ ### Propriedades base — `.tc-btn`
30
+
31
+ | Propriedade CSS | Valor | Descrição |
32
+ |---|---|---|
33
+ | `display` | `inline-flex` | Permite alinhar ícones ao lado do texto |
34
+ | `padding` | `8px 18px` | Espaçamento interno padrão |
35
+ | `border-radius` | `8px` | Bordas arredondadas |
36
+ | `border` | `2px solid transparent` | Reserva espaço para variantes outline sem deslocar layout |
37
+ | `font-weight` | `600` | Texto semi-negrito |
38
+ | `font-size` | `0.9rem` | Tamanho padrão |
39
+ | `transition` | `background, color, border-color, transform, opacity — 0.15s` | Animação suave de estados |
40
+
41
+ ---
42
+
43
+ ### Estados
44
+
45
+ | Estado | Seletor CSS | Comportamento |
46
+ |---|---|---|
47
+ | Default | `.tc-btn` | Estado inicial do botão |
48
+ | Hover | `.tc-btn:hover` | Escurece o background em ~10% |
49
+ | Active | `.tc-btn:active` | Escurece mais e aplica `scale(0.98)` |
50
+ | Focus | `.tc-btn:focus-visible` | Outline de 3px usando `--c-primary-400` |
51
+ | Disabled | `.tc-btn:disabled` | `opacity: 0.45` + `cursor: not-allowed` |
52
+
53
+ ---
54
+
55
+ ### Variantes Filled
56
+
57
+ | Classe completa | Uso recomendado |
58
+ |---|---|
59
+ | `tc-btn tc-btn-primary` | Ação principal da tela |
60
+ | `tc-btn tc-btn-danger` | Ação destrutiva ou irreversível |
61
+ | `tc-btn tc-btn-alert` | Ação que requer atenção |
62
+ | `tc-btn tc-btn-success` | Confirmação ou conclusão |
63
+ | `tc-btn tc-btn-neutral` | Ação secundária sem destaque |
64
+
65
+ ---
66
+
67
+ ### Variantes Outline
68
+
69
+ | Classe completa | Uso recomendado |
70
+ |---|---|
71
+ | `tc-btn tc-btn-outline-primary` | Alternativa à primary com menos peso visual |
72
+ | `tc-btn tc-btn-outline-danger` | Destrutiva de baixo impacto visual |
73
+ | `tc-btn tc-btn-outline-neutral` | Ação terciária discreta |
74
+
75
+ ---
76
+
77
+ ### Tamanhos
78
+
79
+ | Classe modificadora | Descrição |
80
+ |---|---|
81
+ | `tc-btn-sm` | Tamanho pequeno |
82
+ | *(sem modificador)* | Tamanho padrão |
83
+ | `tc-btn-lg` | Tamanho grande |
84
+
85
+ ---
86
+
87
+ ### `.tc-link` — Links inline
88
+
89
+ Classe para links inline. Utiliza `border-bottom` em vez de `text-decoration` para controle preciso de espessura e cor.
90
+
91
+ | Classe completa | Uso recomendado |
92
+ |---|---|
93
+ | `tc-link` | Link padrão — cor primária |
94
+ | `tc-link tc-link-danger` | Link de ação destrutiva |
95
+ | `tc-link tc-link-muted` | Link discreto — ação secundária |
96
+
97
+ ---
98
+
99
+ ## Exemplos de Uso
100
+
101
+ ### Uso Básico
102
+
103
+ ```html
104
+ <!-- Botões filled -->
105
+ <button class="tc-btn tc-btn-primary">Salvar</button>
106
+ <button class="tc-btn tc-btn-danger">Excluir</button>
107
+ <button class="tc-btn tc-btn-success">Confirmar</button>
108
+ <button class="tc-btn tc-btn-neutral">Cancelar</button>
109
+
110
+ <!-- Botões outline -->
111
+ <button class="tc-btn tc-btn-outline-primary">Cancelar</button>
112
+ <button class="tc-btn tc-btn-outline-danger">Remover</button>
113
+
114
+ <!-- Desabilitado -->
115
+ <button class="tc-btn tc-btn-primary" disabled>Processando…</button>
116
+ ```
117
+
118
+ ---
119
+
120
+ ### Uso Avançado
121
+
122
+ #### Tamanhos
123
+
124
+ ```html
125
+ <button class="tc-btn tc-btn-primary tc-btn-sm">Pequeno</button>
126
+ <button class="tc-btn tc-btn-primary">Padrão</button>
127
+ <button class="tc-btn tc-btn-primary tc-btn-lg">Grande</button>
128
+ ```
129
+
130
+ #### Link estilizado como botão
131
+
132
+ ```html
133
+ <a href="/nova-rota" class="tc-btn tc-btn-primary">Navegar</a>
134
+ <a href="/voltar" class="tc-btn tc-btn-outline-neutral">Voltar</a>
135
+ ```
136
+
137
+ #### Links inline
138
+
139
+ ```html
140
+ <p class="f-14 font-regular text-neutral-700">
141
+ Não possui cadastro? <a href="#" class="tc-link">Crie sua conta</a>
142
+ </p>
143
+
144
+ <a href="#" class="tc-link tc-link-danger">Remover item</a>
145
+ <a href="#" class="tc-link tc-link-muted">Ver detalhes</a>
146
+ ```
147
+
148
+ #### Par de ações em formulário (padrão primária + outline)
149
+
150
+ ```html
151
+ <div style="display: flex; gap: 8px;">
152
+ <button class="tc-btn tc-btn-primary" type="submit">Salvar</button>
153
+ <button class="tc-btn tc-btn-outline-neutral" type="button" (click)="cancel()">Cancelar</button>
154
+ </div>
155
+ ```
156
+
157
+ #### Ação destrutiva com confirmação
158
+
159
+ ```html
160
+ <div style="display: flex; gap: 8px;">
161
+ <button class="tc-btn tc-btn-danger" (click)="delete()">Excluir registro</button>
162
+ <button class="tc-btn tc-btn-outline-neutral" (click)="goBack()">Voltar</button>
163
+ </div>
164
+ ```
165
+
166
+ #### Estado de carregamento via classe e `disabled`
167
+
168
+ ```html
169
+ <button
170
+ class="tc-btn tc-btn-primary"
171
+ [disabled]="isLoading"
172
+ (click)="save()"
173
+ >
174
+ {{ isLoading ? 'Salvando…' : 'Salvar' }}
175
+ </button>
176
+ ```
177
+
178
+ ```ts
179
+ export class ExampleComponent {
180
+ isLoading = false;
181
+
182
+ save() {
183
+ this.isLoading = true;
184
+ this.myService.save().subscribe(() => {
185
+ this.isLoading = false;
186
+ });
187
+ }
188
+ }
189
+ ```
@@ -0,0 +1,204 @@
1
+ # Design System — Cores `--c-*`
2
+
3
+ ## Características
4
+
5
+ - Paleta completa de tokens CSS definidos como variáveis `--c-{grupo}-{shade}`, organizados em grupos semânticos: neutros, primária, danger, alert, info e success.
6
+ - Os tokens são remapeados automaticamente no dark mode e nas variantes de tema — componentes não precisam de alterações específicas.
7
+ - Nunca use valores hexadecimais diretamente em componentes — sempre referencie os tokens CSS.
8
+ - Três classes utilitárias geradas automaticamente para cada combinação de cor e shade: `.text-*`, `.bg-*` e `.border-*`.
9
+ - Dark mode ativado pela classe `tc-dark` no `<body>`.
10
+ - Variante **Prime Modern** ativada pela classe `tc-prime-modern` no `<body>`, substituindo apenas os tokens `--c-primary-*` pela paleta roxa.
11
+
12
+ ## Instalação
13
+
14
+ Os tokens e classes utilitárias são fornecidos pelo stylesheet global do projeto. Nenhuma importação de módulo Angular é necessária.
15
+ Certifique-se de que o stylesheet principal do `tcloud-ui` está incluído na aplicação:
16
+
17
+ ```ts
18
+ // angular.json — styles
19
+ "styles": [
20
+ "projects/tcloud-ui/assets/scss/tcloud-ui.scss"
21
+ ]
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Tokens CSS — Paleta completa
27
+
28
+ ### Neutros
29
+
30
+ | Token | Uso recomendado |
31
+ |---|---|
32
+ | `--c-neutral-50` | Fundo principal da página / superfície mais clara |
33
+ | `--c-neutral-100` | Fundo de cards, headers de tabelas |
34
+ | `--c-neutral-200` | Bordas, divisórias, separadores |
35
+ | `--c-neutral-300` | Borda padrão de inputs — estado padrão |
36
+ | `--c-neutral-400` | Ícones, placeholders, textos auxiliares |
37
+ | `--c-neutral-500` | Textos secundários, descrições |
38
+ | `--c-neutral-600` | Textos de ênfase moderada, labels |
39
+ | `--c-neutral-700` | Texto principal — cor base do corpo |
40
+ | `--c-neutral-800` | Texto de alto contraste |
41
+ | `--c-neutral-900` | Máximo contraste — preto absoluto no light |
42
+
43
+ ### Primária
44
+
45
+ | Token | Uso recomendado |
46
+ |---|---|
47
+ | `--c-primary-300` | Fundo de glow de foco, highlight suave |
48
+ | `--c-primary-400` | Variante clara — hover sobre elementos primários |
49
+ | `--c-primary-500` | Cor principal da marca — botões, links, foco |
50
+ | `--c-primary-600` | Hover / pressed sobre elementos primários |
51
+ | `--c-primary-700` | Versão mais escura — alto contraste |
52
+
53
+ ### Danger
54
+
55
+ | Token | Uso recomendado |
56
+ |---|---|
57
+ | `--c-danger-300` | Fundo de campos com erro |
58
+ | `--c-danger-400` | Ícone de erro, badges de alerta |
59
+ | `--c-danger-500` | Borda e texto de erro — ação destrutiva |
60
+ | `--c-danger-600` | Hover de botões destrutivos |
61
+ | `--c-danger-700` | Pressed / alto contraste em danger |
62
+
63
+ ### Alert
64
+
65
+ | Token | Uso recomendado |
66
+ |---|---|
67
+ | `--c-alert-300` | Fundo de notificações de aviso |
68
+ | `--c-alert-400` | Ícone de aviso, badge de atenção |
69
+ | `--c-alert-500` | Cor principal de aviso — atenção necessária |
70
+ | `--c-alert-600` | Hover sobre alertas |
71
+ | `--c-alert-700` | Alto contraste em alert |
72
+
73
+ ### Info
74
+
75
+ | Token | Uso recomendado |
76
+ |---|---|
77
+ | `--c-info-300` | Fundo de banners informativos |
78
+ | `--c-info-400` | Ícone informativo, detalhe suave |
79
+ | `--c-info-500` | Cor principal informativa |
80
+
81
+ ### Success
82
+
83
+ | Token | Uso recomendado |
84
+ |---|---|
85
+ | `--c-success-300` | Fundo de confirmações e sucessos |
86
+ | `--c-success-400` | Ícone de sucesso, badge de confirmação |
87
+ | `--c-success-500` | Cor principal de sucesso — ação concluída |
88
+ | `--c-success-600` | Hover sobre elementos de sucesso |
89
+ | `--c-success-700` | Alto contraste em success |
90
+
91
+ ---
92
+
93
+ ## Classes Utilitárias
94
+
95
+ Geradas automaticamente para cada combinação de cor e shade.
96
+
97
+ | Padrão da classe | Propriedade CSS | Exemplo |
98
+ |---|---|---|
99
+ | `.text-{cor}-{shade}` | `color` | `.text-primary-500` |
100
+ | `.bg-{cor}-{shade}` | `background-color` | `.bg-neutral-100` |
101
+ | `.border-{cor}-{shade}` | `border-color` | `.border-danger-500` |
102
+
103
+ ---
104
+
105
+ ## Temas e Dark Mode
106
+
107
+ ### Dark mode
108
+
109
+ Adicione a classe `tc-dark` ao `<body>` para ativar o tema escuro. Todos os tokens `--c-*` são remapeados automaticamente — nenhum componente precisa de alteração.
110
+
111
+ ```html
112
+ <body class="tc-dark">
113
+ <!-- Toda a aplicação renderiza no tema escuro -->
114
+ </body>
115
+ ```
116
+
117
+ ### Variante Prime Modern
118
+
119
+ Adicione `tc-prime-modern` ao `<body>` para substituir apenas os tokens `--c-primary-*` pela paleta roxa. Compatível com dark mode.
120
+
121
+ ```html
122
+ <!-- Apenas a cor primária é substituída (paleta roxa) -->
123
+ <body class="tc-prime-modern">...</body>
124
+
125
+ <!-- Combinando dark mode + Prime Modern -->
126
+ <body class="tc-dark tc-prime-modern">...</body>
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Exemplos de Uso
132
+
133
+ ### Uso Básico — tokens CSS inline
134
+
135
+ ```html
136
+ <!-- Cor de texto via token -->
137
+ <p style="color: var(--c-primary-500);">Texto em cor primária</p>
138
+
139
+ <!-- Fundo via token -->
140
+ <div style="background-color: var(--c-neutral-100);">Card com fundo neutro</div>
141
+
142
+ <!-- Borda via token -->
143
+ <div style="border: 1px solid var(--c-neutral-300);">Container com borda</div>
144
+ ```
145
+
146
+ ### Uso com classes utilitárias
147
+
148
+ ```html
149
+ <!-- Texto colorido -->
150
+ <span class="text-primary-500">Link ou ação primária</span>
151
+ <span class="text-danger-500">Mensagem de erro</span>
152
+ <span class="text-success-500">Operação concluída</span>
153
+ <span class="text-neutral-500">Texto secundário</span>
154
+
155
+ <!-- Fundo semântico -->
156
+ <div class="bg-success-300 text-success-700">Confirmação realizada com sucesso.</div>
157
+ <div class="bg-danger-300 text-danger-600">Falha ao processar a solicitação.</div>
158
+ <div class="bg-alert-300 text-alert-700">Atenção: verifique os dados antes de prosseguir.</div>
159
+ <div class="bg-info-300 text-info-500">Dica: este campo aceita CPF ou CNPJ.</div>
160
+ ```
161
+
162
+ ### Uso avançado — tokens em CSS customizado
163
+
164
+ ```scss
165
+ // styles.scss — nunca use hex, sempre os tokens
166
+ .meu-componente {
167
+ color: var(--c-neutral-700);
168
+ background-color: var(--c-neutral-50);
169
+ border: 1px solid var(--c-neutral-300);
170
+
171
+ &:hover {
172
+ border-color: var(--c-primary-500);
173
+ background-color: var(--c-primary-300);
174
+ }
175
+
176
+ &.is-error {
177
+ border-color: var(--c-danger-500);
178
+ background-color: var(--c-danger-300);
179
+ color: var(--c-danger-600);
180
+ }
181
+ }
182
+ ```
183
+
184
+ ### Integração com Angular — class binding condicional
185
+
186
+ ```html
187
+ <div
188
+ [class]="'f-14 font-regular ' + (hasError ? 'text-danger-500' : 'text-neutral-700')"
189
+ >
190
+ {{ mensagem }}
191
+ </div>
192
+
193
+ <div
194
+ [ngClass]="{
195
+ 'bg-success-300 text-success-700': status === 'success',
196
+ 'bg-danger-300 text-danger-600': status === 'error',
197
+ 'bg-alert-300 text-alert-700': status === 'warning',
198
+ 'bg-info-300 text-info-500': status === 'info'
199
+ }"
200
+ class="f-14 font-regular"
201
+ >
202
+ {{ mensagem }}
203
+ </div>
204
+ ```
@@ -0,0 +1,200 @@
1
+ # Layout — `.tc-form-control`
2
+
3
+ ## Características
4
+
5
+ - Classe CSS aplicada a qualquer `<input>` para estilização padronizada de campos de texto no projeto.
6
+ - Visual em pílula (`border-radius: 40px`) com altura fixa de `40px` e padding horizontal consistente.
7
+ - Adaptável ao dark mode — `color`, `background` e `border` utilizam tokens CSS do design system.
8
+ - Suporte a estados visuais: padrão, foco, erro e desabilitado.
9
+ - Classe modificadora `.tc-form-control--error` para indicação de validação inválida.
10
+ - Combina com `.tc-form-field` para agrupar label, dica (`.tc-form-hint`) e mensagem de erro (`.tc-form-error`) de forma semântica e acessível.
11
+ - Não há componente Angular envolvido — as classes são aplicadas diretamente no HTML.
12
+
13
+ ## Instalação
14
+
15
+ As classes são fornecidas pelo stylesheet global do projeto. Nenhuma importação de módulo Angular é necessária.
16
+ Certifique-se de que o stylesheet principal do `tcloud-ui` está incluído na aplicação:
17
+
18
+ ```ts
19
+ // angular.json — styles
20
+ "styles": [
21
+ "projects/tcloud-ui/assets/scss/tcloud-ui.scss"
22
+ ]
23
+ ```
24
+
25
+ ---
26
+
27
+ ## API — Classes
28
+
29
+ ### `.tc-form-control`
30
+
31
+ Classe principal aplicada ao `<input>`.
32
+
33
+ | Propriedade CSS | Valor / Token | Descrição |
34
+ |---|---|---|
35
+ | `border` | `1px solid var(--c-neutral-400)` | Borda padrão — cor do token neutral |
36
+ | `border-radius` | `var(--bor-radius-pill)` | Bordas arredondadas em pílula (40px) |
37
+ | `height` | `var(--size-40)` | Altura fixa de 2.5rem (40px) |
38
+ | `padding` | `0 var(--size-16)` | Espaçamento interno horizontal |
39
+ | `font-size` | `var(--f-size-14)` | Tamanho de texto padrão (0.875rem) |
40
+ | `line-height` | `var(--l-height-20)` | Altura de linha (1.43) |
41
+ | `color` | `var(--c-neutral-700)` | Cor do texto — adapta ao dark mode |
42
+ | `background` | `var(--c-neutral-50)` | Fundo — adapta ao dark mode |
43
+ | `transition` | `.2s ease` | Animação suave de estados |
44
+ | `max-width` | `100%` | Respeita o container pai |
45
+
46
+ ---
47
+
48
+ ### Classes modificadoras e auxiliares
49
+
50
+ | Classe | Elemento | Descrição |
51
+ |---|---|---|
52
+ | `.tc-form-control--error` | `<input>` | Aplica borda e fundo com cor `danger` — campo com validação inválida |
53
+ | `.tc-form-field` | `<div>` container | Agrupa label + input + mensagens de forma semântica |
54
+ | `.tc-form-hint` | `<p>` | Texto auxiliar abaixo do campo (dica ou instrução) |
55
+ | `.tc-form-error` | `<p>` | Mensagem de erro de validação abaixo do campo |
56
+
57
+ ---
58
+
59
+ ### Estados
60
+
61
+ | Estado | Descrição |
62
+ |---|---|
63
+ | Padrão | Estado inicial do campo |
64
+ | Com valor | Campo preenchido pelo usuário |
65
+ | Foco | Borda primary + glow — ao clicar no campo |
66
+ | Erro | Borda e fundo danger — validação inválida (`tc-form-control--error`) |
67
+ | Desabilitado | Fundo neutro + cursor `not-allowed` (atributo `disabled`) |
68
+
69
+ ---
70
+
71
+ ### Tipos de input suportados
72
+
73
+ | `type` | Uso recomendado |
74
+ |---|---|
75
+ | `text` | Texto livre — campos genéricos |
76
+ | `email` | Endereço de e-mail |
77
+ | `password` | Senhas — oculta o conteúdo |
78
+ | `number` | Valores numéricos |
79
+ | `search` | Campo de busca |
80
+ | `tel` | Número de telefone |
81
+
82
+ ---
83
+
84
+ ## Exemplos de Uso
85
+
86
+ ### Uso Básico
87
+
88
+ ```html
89
+ <!-- Campo simples -->
90
+ <input class="tc-form-control" type="text" placeholder="Digite algo…" />
91
+
92
+ <!-- Campo desabilitado -->
93
+ <input class="tc-form-control" type="text" disabled placeholder="Campo desabilitado" />
94
+
95
+ <!-- Campo com erro -->
96
+ <input class="tc-form-control tc-form-control--error" type="text" value="dado inválido" />
97
+ ```
98
+
99
+ ---
100
+
101
+ ### Uso Avançado
102
+
103
+ #### Campo completo com `.tc-form-field`, label e dica
104
+
105
+ ```html
106
+ <div class="tc-form-field">
107
+ <label for="nome">Nome completo</label>
108
+ <input class="tc-form-control" id="nome" type="text" placeholder="Ex.: João Silva" />
109
+ <p class="tc-form-hint">Informe seu nome como consta no documento.</p>
110
+ </div>
111
+ ```
112
+
113
+ #### Campo com mensagem de erro de validação
114
+
115
+ ```html
116
+ <div class="tc-form-field">
117
+ <label for="cpf">CPF</label>
118
+ <input
119
+ class="tc-form-control tc-form-control--error"
120
+ id="cpf"
121
+ type="text"
122
+ value="123.456"
123
+ />
124
+ <p class="tc-form-error">CPF inválido. Verifique o número informado.</p>
125
+ </div>
126
+ ```
127
+
128
+ #### Campo somente leitura / gerado automaticamente
129
+
130
+ ```html
131
+ <div class="tc-form-field">
132
+ <label for="codigo">Código de cliente</label>
133
+ <input
134
+ class="tc-form-control"
135
+ id="codigo"
136
+ type="text"
137
+ value="CLI-00421"
138
+ disabled
139
+ />
140
+ <p class="tc-form-hint">Gerado automaticamente — não editável.</p>
141
+ </div>
142
+ ```
143
+
144
+ #### Formulário com múltiplos campos
145
+
146
+ ```html
147
+ <form>
148
+ <div class="tc-form-field">
149
+ <label for="nome">Nome completo</label>
150
+ <input class="tc-form-control" id="nome" type="text" placeholder="Ex.: João Silva" />
151
+ </div>
152
+
153
+ <div class="tc-form-field">
154
+ <label for="email">E-mail</label>
155
+ <input class="tc-form-control" id="email" type="email" placeholder="email@exemplo.com" />
156
+ </div>
157
+
158
+ <div class="tc-form-field">
159
+ <label for="tel">Telefone</label>
160
+ <input class="tc-form-control" id="tel" type="tel" placeholder="(00) 00000-0000" />
161
+ <p class="tc-form-hint">DDD + número com 9 dígitos.</p>
162
+ </div>
163
+
164
+ <div class="tc-form-field">
165
+ <label for="senha">Senha</label>
166
+ <input class="tc-form-control" id="senha" type="password" placeholder="Mínimo 8 caracteres" />
167
+ </div>
168
+ </form>
169
+ ```
170
+
171
+ #### Integração com Angular Reactive Forms
172
+
173
+ ```html
174
+ <form [formGroup]="form">
175
+ <div class="tc-form-field">
176
+ <label for="email">E-mail</label>
177
+ <input
178
+ class="tc-form-control"
179
+ [class.tc-form-control--error]="form.get('email')?.invalid && form.get('email')?.touched"
180
+ id="email"
181
+ type="email"
182
+ formControlName="email"
183
+ placeholder="email@exemplo.com"
184
+ />
185
+ <p class="tc-form-error" *ngIf="form.get('email')?.invalid && form.get('email')?.touched">
186
+ E-mail inválido. Verifique e tente novamente.
187
+ </p>
188
+ </div>
189
+ </form>
190
+ ```
191
+
192
+ ```ts
193
+ export class ExampleComponent {
194
+ form = this.fb.group({
195
+ email: ['', [Validators.required, Validators.email]]
196
+ });
197
+
198
+ constructor(private fb: FormBuilder) {}
199
+ }
200
+ ```