@dev-tcloud/tcloud-ui 6.15.0 → 6.18.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 (79) 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-revitalizacao/components/_tcloud-ui-table.scss +95 -0
  78. package/scss/tcloud-revitalizacao/tc-rev-styles.scss +1 -1
  79. package/scss/tcloud-revitalizacao/components/_tc-rev-table.scss +0 -57
@@ -0,0 +1,138 @@
1
+ # StatusInfoPipe
2
+
3
+ O pipe `statusinfo` traduz chaves de status do sistema (em inglês) para descrições legíveis em português. Suporta dois temas de tradução: o padrão (`status_default`) e o de propostas (`proposal`), além de um modo especial `ALL` que concatena os valores de todos os temas. A comparação é case-insensitive.
4
+
5
+ ## Características
6
+
7
+ - Tradução de status do sistema para português
8
+ - Dois mapas de tradução: padrão e proposta (`proposal`)
9
+ - Modo `ALL` que busca em todos os mapas e concatena os resultados
10
+ - Comparação case-insensitive
11
+ - Retorna o valor original quando não encontra correspondência
12
+ - Pipe standalone
13
+
14
+ ## Instalação
15
+
16
+ Importe o pipe diretamente no módulo ou componente standalone:
17
+
18
+ ```typescript
19
+ import { StatusInfoPipe } from 'tcloud-ui';
20
+ ```
21
+
22
+ ## API
23
+
24
+ ### Sintaxe do Pipe
25
+
26
+ ```
27
+ {{ valor | statusinfo }}
28
+ {{ valor | statusinfo:'proposal' }}
29
+ {{ valor | statusinfo:'ALL' }}
30
+ ```
31
+
32
+ ### Parâmetros
33
+
34
+ | Parâmetro | Tipo | Obrigatório | Descrição |
35
+ |-----------|----------|-------------|------------------------------------------------------------------------------------------------------|
36
+ | `tema` | `string` | Não | Tema de tradução. Valores: `'proposal'` (mapa de propostas), `'ALL'` (concatena todos os mapas). Sem parâmetro usa o mapa padrão |
37
+
38
+ ### Mapa Padrão (Default)
39
+
40
+ | Chave | Valor |
41
+ |----------------|---------------------|
42
+ | `SUCCEEDED` | Finalizado |
43
+ | `PENDING` | Pendente |
44
+ | `FAILED` | Erro |
45
+ | `RUNNING` | Em andamento |
46
+ | `REGISTRATION` | Cadastro Pendente |
47
+ | `SUCCEED` | Finalizado |
48
+ | `WAITING` | Aguardando |
49
+ | `REJECTED` | Rejeitado |
50
+
51
+ ### Mapa de Propostas (`proposal`)
52
+
53
+ | Chave | Valor |
54
+ |----------------|----------------------------|
55
+ | `SUCCEEDED` | Finalizado |
56
+ | `PENDING` | Aguardando Aprovação |
57
+ | `FAILED` | Erro |
58
+ | `RUNNING` | Provisionando Ambientes |
59
+ | `REGISTRATION` | Cadastro Pendente |
60
+ | `SUCCEED` | Finalizado |
61
+ | `WAITING` | Provisionando Ambientes |
62
+ | `REJECTED` | Rejeitada |
63
+
64
+ ## Exemplos de Uso
65
+
66
+ ### Básico — Status padrão
67
+
68
+ ```html
69
+ <p>{{ 'SUCCEEDED' | statusinfo }}</p>
70
+ <!-- Resultado: Finalizado -->
71
+
72
+ <p>{{ 'PENDING' | statusinfo }}</p>
73
+ <!-- Resultado: Pendente -->
74
+
75
+ <p>{{ 'RUNNING' | statusinfo }}</p>
76
+ <!-- Resultado: Em andamento -->
77
+ ```
78
+
79
+ ```typescript
80
+ import { StatusInfoPipe } from 'tcloud-ui';
81
+
82
+ @Component({
83
+ standalone: true,
84
+ imports: [StatusInfoPipe],
85
+ template: `
86
+ <span>{{ status | statusinfo }}</span>
87
+ `
88
+ })
89
+ export class ExemploBasicoComponent {
90
+ status = 'SUCCEEDED';
91
+ }
92
+ ```
93
+
94
+ ### Avançado — Tema de propostas
95
+
96
+ ```html
97
+ <p>{{ 'PENDING' | statusinfo:'proposal' }}</p>
98
+ <!-- Resultado: Aguardando Aprovação -->
99
+
100
+ <p>{{ 'RUNNING' | statusinfo:'proposal' }}</p>
101
+ <!-- Resultado: Provisionando Ambientes -->
102
+ ```
103
+
104
+ ```typescript
105
+ import { StatusInfoPipe } from 'tcloud-ui';
106
+
107
+ @Component({
108
+ standalone: true,
109
+ imports: [CommonModule, StatusInfoPipe],
110
+ template: `
111
+ <table class="table">
112
+ <thead>
113
+ <tr><th>Proposta</th><th>Status</th></tr>
114
+ </thead>
115
+ <tbody>
116
+ <tr *ngFor="let proposta of propostas">
117
+ <td>{{ proposta.nome }}</td>
118
+ <td>{{ proposta.status | statusinfo:'proposal' }}</td>
119
+ </tr>
120
+ </tbody>
121
+ </table>
122
+ `
123
+ })
124
+ export class ExemploAvancadoComponent {
125
+ propostas = [
126
+ { nome: 'Proposta A', status: 'PENDING' },
127
+ { nome: 'Proposta B', status: 'RUNNING' },
128
+ { nome: 'Proposta C', status: 'REJECTED' }
129
+ ];
130
+ }
131
+ ```
132
+
133
+ ### Avançado — Modo ALL (busca em todos os temas)
134
+
135
+ ```html
136
+ <p>{{ 'PENDING' | statusinfo:'ALL' }}</p>
137
+ <!-- Resultado: Pendente Aguardando Aprovação -->
138
+ ```
@@ -0,0 +1,376 @@
1
+ # Tab Group
2
+
3
+ ## Características
4
+
5
+ O componente `tcloud-ui-tab-group` é um componente de navegação por abas que permite organizar conteúdo em múltiplas abas. Funciona em conjunto com o componente `tcloud-ui-tab-item` para criar interfaces responsivas com scroll horizontal automático em telas grandes e deslize de toque em dispositivos móveis.
6
+
7
+ ## Instalação
8
+
9
+ Para utilizar o componente Tab Group, importe o módulo `TCloudUiModule`:
10
+
11
+ ```typescript
12
+ import { TCloudUiModule } from '@tcloud-ui/lib';
13
+ import { Component } from '@angular/core';
14
+
15
+ @Component({
16
+ selector: 'app-example',
17
+ standalone: true,
18
+ imports: [TCloudUiModule],
19
+ template: `
20
+ <tcloud-ui-tab-group>
21
+ <tcloud-ui-tab-item>Aba 1</tcloud-ui-tab-item>
22
+ <tcloud-ui-tab-item>Aba 2</tcloud-ui-tab-item>
23
+ </tcloud-ui-tab-group>
24
+ `
25
+ })
26
+ export class ExampleComponent {}
27
+ ```
28
+
29
+ Ou importe diretamente os componentes:
30
+
31
+ ```typescript
32
+ import { TCloudUiTabGroupComponent, TCloudUiTabItemComponent } from '@tcloud-ui/lib';
33
+
34
+ @Component({
35
+ selector: 'app-example',
36
+ standalone: true,
37
+ imports: [TCloudUiTabGroupComponent, TCloudUiTabItemComponent],
38
+ template: `...`
39
+ })
40
+ export class ExampleComponent {}
41
+ ```
42
+
43
+ ## Propriedades (API)
44
+
45
+ ### TCloudUiTabGroupComponent
46
+
47
+ O componente principal que envolve as abas com controle de overflow e scroll.
48
+
49
+ **Propriedades:**
50
+ - `isCarouselOverflowed: boolean` - Indica se há overflow horizontal
51
+ - `scrollTabsCarousel(direction: 'left' | 'right'): void` - Método para scroll manual do carousel
52
+
53
+ ### TCloudUiTabItemComponent
54
+
55
+ Componente individual de aba que pode funcionar como botão ou link.
56
+
57
+ **Inputs:**
58
+
59
+ | Nome | Tipo | Descrição | Valor Default |
60
+ |------|------|-----------|---------------|
61
+ | `active` | `boolean` | Estado ativo da aba | `false` |
62
+ | `url` | `string` | URL para navegação. Se vazio, funciona como botão | `''` |
63
+ | `disabled` | `boolean` | Se a aba está desabilitada | `false` |
64
+ | `fullWidth` | `boolean` | Se a aba ocupa toda a largura | `false` |
65
+
66
+ **Outputs:**
67
+
68
+ | Nome | Emite | Descrição |
69
+ |------|-------|-----------|
70
+ | `onClick` | `MouseEvent` | Emitido quando a aba é clicada |
71
+
72
+ ## Exemplos de Uso
73
+
74
+ ### Uso Básico
75
+
76
+ ```typescript
77
+ import { Component } from '@angular/core';
78
+ import { TCloudUiModule } from '@tcloud-ui/lib';
79
+ import { CommonModule } from '@angular/common';
80
+
81
+ @Component({
82
+ selector: 'app-basic-tabs',
83
+ standalone: true,
84
+ imports: [CommonModule, TCloudUiModule],
85
+ template: `
86
+ <tcloud-ui-tab-group>
87
+ <tcloud-ui-tab-item>Aba 1</tcloud-ui-tab-item>
88
+ <tcloud-ui-tab-item>Aba 2</tcloud-ui-tab-item>
89
+ <tcloud-ui-tab-item>Aba 3</tcloud-ui-tab-item>
90
+ <tcloud-ui-tab-item>Aba 4</tcloud-ui-tab-item>
91
+ <tcloud-ui-tab-item>Aba 5</tcloud-ui-tab-item>
92
+ </tcloud-ui-tab-group>
93
+ `
94
+ })
95
+ export class BasicTabsComponent {}
96
+ ```
97
+
98
+ ### Abas com Estados
99
+
100
+ ```typescript
101
+ import { Component, signal } from '@angular/core';
102
+ import { TCloudUiModule } from '@tcloud-ui/lib';
103
+ import { CommonModule } from '@angular/common';
104
+
105
+ @Component({
106
+ selector: 'app-states-tabs',
107
+ standalone: true,
108
+ imports: [CommonModule, TCloudUiModule],
109
+ template: `
110
+ <tcloud-ui-tab-group>
111
+ <tcloud-ui-tab-item
112
+ [active]="activeTab() === 0"
113
+ (onClick)="activeTab.set(0)">
114
+ Dashboard
115
+ </tcloud-ui-tab-item>
116
+ <tcloud-ui-tab-item
117
+ [active]="activeTab() === 1"
118
+ (onClick)="activeTab.set(1)">
119
+ Relatórios
120
+ </tcloud-ui-tab-item>
121
+ <tcloud-ui-tab-item
122
+ [active]="activeTab() === 2"
123
+ (onClick)="activeTab.set(2)">
124
+ Configurações
125
+ </tcloud-ui-tab-item>
126
+ <tcloud-ui-tab-item
127
+ [disabled]="true">
128
+ Desabilitado
129
+ </tcloud-ui-tab-item>
130
+ </tcloud-ui-tab-group>
131
+
132
+ <div class="content">
133
+ @switch (activeTab()) {
134
+ @case (0) {
135
+ Conteúdo do Dashboard
136
+ }
137
+ @case (1) {
138
+ Conteúdo de Relatórios
139
+ }
140
+ @case (2) {
141
+ Conteúdo de Configurações
142
+ }
143
+ }
144
+ </div>
145
+ `,
146
+ styles: [`
147
+ .content {
148
+ padding: 1rem;
149
+ border-top: 1px solid var(--c-neutral-300);
150
+ }
151
+ `]
152
+ })
153
+ export class StatesTabsComponent {
154
+ activeTab = signal<number>(0);
155
+ }
156
+ ```
157
+
158
+ ### Abas com Links de Navegação
159
+
160
+ ```typescript
161
+ import { Component } from '@angular/core';
162
+ import { TCloudUiModule } from '@tcloud-ui/lib';
163
+ import { CommonModule } from '@angular/common';
164
+
165
+ @Component({
166
+ selector: 'app-navigation-tabs',
167
+ standalone: true,
168
+ imports: [CommonModule, TCloudUiModule],
169
+ template: `
170
+ <tcloud-ui-tab-group>
171
+ <tcloud-ui-tab-item
172
+ [url]="'/dashboard'"
173
+ [active]="isActive('/dashboard')">
174
+ Dashboard
175
+ </tcloud-ui-tab-item>
176
+ <tcloud-ui-tab-item
177
+ [url]="'/users'"
178
+ [active]="isActive('/users')">
179
+ Usuários
180
+ </tcloud-ui-tab-item>
181
+ <tcloud-ui-tab-item
182
+ [url]="'/reports'"
183
+ [active]="isActive('/reports')">
184
+ Relatórios
185
+ </tcloud-ui-tab-item>
186
+ <tcloud-ui-tab-item
187
+ [url]="'/settings'"
188
+ [active]="isActive('/settings')">
189
+ Configurações
190
+ </tcloud-ui-tab-item>
191
+ </tcloud-ui-tab-group>
192
+ `
193
+ })
194
+ export class NavigationTabsComponent {
195
+ isActive(url: string): boolean {
196
+ return false; // Implementar lógica real de verificação da rota ativa
197
+ }
198
+ }
199
+ ```
200
+
201
+ ### Abas com Conteúdo Dinâmico
202
+
203
+ ```typescript
204
+ import { Component, signal } from '@angular/core';
205
+ import { TCloudUiModule } from '@tcloud-ui/lib';
206
+ import { CommonModule } from '@angular/common';
207
+
208
+ @Component({
209
+ selector: 'app-dynamic-tabs',
210
+ standalone: true,
211
+ imports: [CommonModule, TCloudUiModule],
212
+ template: `
213
+ <tcloud-ui-tab-group>
214
+ @for (tab of tabs(); track tab.id) {
215
+ <tcloud-ui-tab-item
216
+ [active]="activeTab() === tab.id"
217
+ [disabled]="tab.disabled"
218
+ (onClick)="activeTab.set(tab.id)">
219
+ {{ tab.label }}
220
+ </tcloud-ui-tab-item>
221
+ }
222
+ </tcloud-ui-tab-group>
223
+
224
+ <div class="content">
225
+ @let activeContent = tabs().find(t => t.id === activeTab());
226
+ @if (activeContent) {
227
+ <h3>{{ activeContent.label }}</h3>
228
+ <p>{{ activeContent.content }}</p>
229
+ }
230
+ </div>
231
+ `,
232
+ styles: [`
233
+ .content {
234
+ padding: 1rem;
235
+ border-top: 1px solid var(--c-neutral-300);
236
+ }
237
+ `]
238
+ })
239
+ export class DynamicTabsComponent {
240
+ activeTab = signal<string>('tab1');
241
+
242
+ tabs = signal([
243
+ { id: 'tab1', label: 'Produtos', content: 'Lista de produtos', disabled: false },
244
+ { id: 'tab2', label: 'Categorias', content: 'Gerenciamento de categorias', disabled: false },
245
+ { id: 'tab3', label: 'Estoque', content: 'Controle de estoque', disabled: false },
246
+ { id: 'tab4', label: 'Relatórios', content: 'Geração de relatórios', disabled: true }
247
+ ]);
248
+ }
249
+ ```
250
+
251
+ ### Abas em Largura Cheia
252
+
253
+ ```typescript
254
+ import { Component, signal } from '@angular/core';
255
+ import { TCloudUiModule } from '@tcloud-ui/lib';
256
+ import { CommonModule } from '@angular/common';
257
+
258
+ @Component({
259
+ selector: 'app-fullwidth-tabs',
260
+ standalone: true,
261
+ imports: [CommonModule, TCloudUiModule],
262
+ template: `
263
+ <tcloud-ui-tab-group>
264
+ <tcloud-ui-tab-item
265
+ [fullWidth]="true"
266
+ [active]="activeTab() === 0"
267
+ (onClick)="activeTab.set(0)">
268
+ Opção A
269
+ </tcloud-ui-tab-item>
270
+ <tcloud-ui-tab-item
271
+ [fullWidth]="true"
272
+ [active]="activeTab() === 1"
273
+ (onClick)="activeTab.set(1)">
274
+ Opção B
275
+ </tcloud-ui-tab-item>
276
+ </tcloud-ui-tab-group>
277
+ `
278
+ })
279
+ export class FullWidthTabsComponent {
280
+ activeTab = signal<number>(0);
281
+ }
282
+ ```
283
+
284
+ ### Tratamento de Click em Abas
285
+
286
+ ```typescript
287
+ import { Component } from '@angular/core';
288
+ import { TCloudUiModule } from '@tcloud-ui/lib';
289
+ import { CommonModule } from '@angular/common';
290
+
291
+ @Component({
292
+ selector: 'app-click-handler-tabs',
293
+ standalone: true,
294
+ imports: [CommonModule, TCloudUiModule],
295
+ template: `
296
+ <tcloud-ui-tab-group>
297
+ <tcloud-ui-tab-item
298
+ (onClick)="onTabClick('analytics')">
299
+ Analytics
300
+ </tcloud-ui-tab-item>
301
+ <tcloud-ui-tab-item
302
+ (onClick)="onTabClick('performance')">
303
+ Performance
304
+ </tcloud-ui-tab-item>
305
+ <tcloud-ui-tab-item
306
+ (onClick)="onTabClick('metrics')">
307
+ Métricas
308
+ </tcloud-ui-tab-item>
309
+ </tcloud-ui-tab-group>
310
+
311
+ @if (selectedTab) {
312
+ <p>Aba selecionada: {{ selectedTab }}</p>
313
+ }
314
+ `
315
+ })
316
+ export class ClickHandlerTabsComponent {
317
+ selectedTab: string | null = null;
318
+
319
+ onTabClick(tabName: string): void {
320
+ this.selectedTab = tabName;
321
+ console.log(`Navegando para ${tabName}`);
322
+ }
323
+ }
324
+ ```
325
+
326
+ ## Responsividade
327
+
328
+ O componente `tcloud-ui-tab-group` é totalmente responsivo:
329
+
330
+ - **Desktop**: Exibe botões de scroll esquerda/direita quando há overflow
331
+ - **Mobile**: Permite deslize de toque para navegação entre abas
332
+
333
+ O breakpoint de transição entre os modos é **480px**.
334
+
335
+ ## Comportamentos Especiais
336
+
337
+ 1. **Detecção Automática de Overflow**: O componente detecta automaticamente quando há mais abas do que espaço disponível
338
+ 2. **Scroll Suave**: O scroll é executado com comportamento smooth para melhor UX
339
+ 3. **Estados Visuais**:
340
+ - Normal: Fundo cinza claro
341
+ - Hover/Focus: Fundo cinza mais escuro com texto azul
342
+ - Ativo: Fundo azul claro com borda azul
343
+ - Desabilitado: Cores acinzentadas com cursor not-allowed
344
+
345
+ ## Integração com Roteamento
346
+
347
+ Para integrar com Angular Router, use a propriedade `url`:
348
+
349
+ ```typescript
350
+ import { Component } from '@angular/core';
351
+ import { Router } from '@angular/router';
352
+ import { TCloudUiModule } from '@tcloud-ui/lib';
353
+
354
+ @Component({
355
+ selector: 'app-router-tabs',
356
+ standalone: true,
357
+ imports: [TCloudUiModule],
358
+ template: `
359
+ <tcloud-ui-tab-group>
360
+ <tcloud-ui-tab-item url="/users">Usuários</tcloud-ui-tab-item>
361
+ <tcloud-ui-tab-item url="/products">Produtos</tcloud-ui-tab-item>
362
+ <tcloud-ui-tab-item url="/orders">Pedidos</tcloud-ui-tab-item>
363
+ </tcloud-ui-tab-group>
364
+ `
365
+ })
366
+ export class RouterTabsComponent {}
367
+ ```
368
+
369
+ ## Casos de Uso
370
+
371
+ - Navegação principal de seções de uma aplicação
372
+ - Organização de conteúdo em painel de controle
373
+ - Tabulação de dados relacionados
374
+ - Filtros interativos
375
+ - Exibição de diferentes modos de visualização
376
+ - Configurações por categoria
@@ -0,0 +1,109 @@
1
+ # Tab Menu
2
+
3
+ ## Características
4
+ - Sistema de abas standalone com cabeçalho, títulos/subtítulos e conteúdos associados.
5
+ - Gerencia estado via serviço interno (TabMenuService) com suporte a loading, scroll, linha inferior e modo full.
6
+ - Suporta registrar aba ativa na URL (`registerInUrl`) e alternar aba programaticamente por `active`.
7
+ - Componentes auxiliares: `tcloud-ui-tab-head`, `tcloud-ui-tab-title`, `tcloud-ui-tab-subtitle`, `tcloud-ui-tab-content`.
8
+
9
+ ## Instalação
10
+ ```ts
11
+ import {
12
+ TCloudUiTabMenuComponent,
13
+ TCloudUiTabHeadComponent,
14
+ TCloudUiTabTitleComponent,
15
+ TCloudUiTabSubtitleComponent,
16
+ TCloudUiTabContentComponent
17
+ } from 'projects/tcloud-ui/src/public-api';
18
+
19
+ @Component({
20
+ selector: 'app-example',
21
+ standalone: true,
22
+ imports: [
23
+ TCloudUiTabMenuComponent,
24
+ TCloudUiTabHeadComponent,
25
+ TCloudUiTabTitleComponent,
26
+ TCloudUiTabSubtitleComponent,
27
+ TCloudUiTabContentComponent
28
+ ],
29
+ template: `<tcloud-ui-tab-menu></tcloud-ui-tab-menu>`
30
+ })
31
+ export class ExampleComponent {}
32
+ ```
33
+
34
+ ## Propriedades (API)
35
+ ### `tcloud-ui-tab-menu`
36
+ | Nome | Tipo | Descrição | Valor Default |
37
+ | --- | --- | --- | --- |
38
+ | registerInUrl | boolean | Atualiza query param `tab` com a aba ativa. | false |
39
+ | loading | boolean | Propaga estado de carregamento para abas. | false |
40
+ | active | string | Id da aba ativa inicial (aceita atualização). | '' |
41
+ | full | boolean | Habilita modo full (layout mais largo). | false |
42
+
43
+ ### `tcloud-ui-tab-head`
44
+ | Nome | Tipo | Descrição | Valor Default |
45
+ | --- | --- | --- | --- |
46
+ | scroll | boolean | Controla scroll horizontal do cabeçalho. | true |
47
+ | background | boolean | Aplica fundo padrão. | true |
48
+ | backgroundColor | '#FFFFFF'\|'#F1F1F1'\|'white'\|'transparent' | Cor de fundo quando `background=true`. | 'transparent' (ajustado para branco/cinza) |
49
+ | bottom_line | boolean | Exibe linha inferior. | false |
50
+
51
+ ### `tcloud-ui-tab-title` / `tcloud-ui-tab-subtitle`
52
+ | Nome | Tipo | Descrição | Valor Default |
53
+ | --- | --- | --- | --- |
54
+ | tab | string | Identificador da aba. | '' |
55
+ | disabled | boolean | Desabilita seleção da aba. | false |
56
+
57
+ ### `tcloud-ui-tab-content`
58
+ | Nome | Tipo | Descrição | Valor Default |
59
+ | --- | --- | --- | --- |
60
+ | tab | string | Identificador da aba que o conteúdo representa. | '' |
61
+ | hideContent | boolean | Esconde conteúdo mantendo estrutura. | false |
62
+
63
+ ### Outputs
64
+ `TCloudUiTabMenuComponent`:
65
+ | Nome | Tipo de Evento | Descrição |
66
+ | --- | --- | --- |
67
+ | onChange | EventEmitter<string> | Emite o id da aba ativa ao trocar. |
68
+
69
+ ## Exemplos de Uso
70
+ ### Uso Básico
71
+ ```html
72
+ <tcloud-ui-tab-menu [active]="'tab-1'" (onChange)="onTab($event)">
73
+ <tcloud-ui-tab-head [bottom_line]="true" [background]="true">
74
+ <tcloud-ui-tab-title tab="tab-1">Tab 1</tcloud-ui-tab-title>
75
+ <tcloud-ui-tab-title tab="tab-2">Tab 2</tcloud-ui-tab-title>
76
+ </tcloud-ui-tab-head>
77
+
78
+ <tcloud-ui-tab-content tab="tab-1">Conteúdo 1</tcloud-ui-tab-content>
79
+ <tcloud-ui-tab-content tab="tab-2">Conteúdo 2</tcloud-ui-tab-content>
80
+ </tcloud-ui-tab-menu>
81
+ ```
82
+
83
+ ### Subtítulos, full e desabilitado
84
+ ```html
85
+ <tcloud-ui-tab-menu [active]="'a1'" [full]="true">
86
+ <tcloud-ui-tab-head [bottom_line]="false" [background]="false">
87
+ <tcloud-ui-tab-subtitle tab="a1">Alterar Senha</tcloud-ui-tab-subtitle>
88
+ <tcloud-ui-tab-subtitle tab="a2" [disabled]="true">Excluir usuários</tcloud-ui-tab-subtitle>
89
+ <tcloud-ui-tab-subtitle tab="a3">Aplicativos</tcloud-ui-tab-subtitle>
90
+ </tcloud-ui-tab-head>
91
+
92
+ <tcloud-ui-tab-content tab="a1">Content A1</tcloud-ui-tab-content>
93
+ <tcloud-ui-tab-content tab="a2">Content A2</tcloud-ui-tab-content>
94
+ <tcloud-ui-tab-content tab="a3">Content A3</tcloud-ui-tab-content>
95
+ </tcloud-ui-tab-menu>
96
+ ```
97
+
98
+ ### Com registro na URL
99
+ ```html
100
+ <tcloud-ui-tab-menu [active]="'tab-1'" [registerInUrl]="true"></tcloud-ui-tab-menu>
101
+ ```
102
+
103
+ ## Tipos auxiliares
104
+ ```ts
105
+ export interface ITab {
106
+ id: string;
107
+ disabled: boolean;
108
+ }
109
+ ```