@dev-tcloud/tcloud-ui 6.15.0 → 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.
- package/docs/tcloud-ui-accordion.md +345 -0
- package/docs/tcloud-ui-actions.md +88 -0
- package/docs/tcloud-ui-alert-banner.md +104 -0
- package/docs/tcloud-ui-array-to-text.md +361 -0
- package/docs/tcloud-ui-breadcrumb.md +103 -0
- package/docs/tcloud-ui-bytes.md +109 -0
- package/docs/tcloud-ui-calendar.md +387 -0
- package/docs/tcloud-ui-card-accordion.md +266 -0
- package/docs/tcloud-ui-card-title.md +47 -0
- package/docs/tcloud-ui-card.md +40 -0
- package/docs/tcloud-ui-choice-issues.md +59 -0
- package/docs/tcloud-ui-cnpj.md +102 -0
- package/docs/tcloud-ui-container.md +171 -0
- package/docs/tcloud-ui-cpf.md +102 -0
- package/docs/tcloud-ui-currency.md +271 -0
- package/docs/tcloud-ui-data-list.md +91 -0
- package/docs/tcloud-ui-datebr.md +139 -0
- package/docs/tcloud-ui-datepicker-time.md +191 -0
- package/docs/tcloud-ui-datepicker.md +186 -0
- package/docs/tcloud-ui-dropdown-multi.md +444 -0
- package/docs/tcloud-ui-dropdown.md +369 -0
- package/docs/tcloud-ui-el-copy.md +113 -0
- package/docs/tcloud-ui-empty-content.md +412 -0
- package/docs/tcloud-ui-faq.md +496 -0
- package/docs/tcloud-ui-filter-bar.md +86 -0
- package/docs/tcloud-ui-filters.md +337 -0
- package/docs/tcloud-ui-hover-parent.md +467 -0
- package/docs/tcloud-ui-icon-button.md +104 -0
- package/docs/tcloud-ui-input-container.md +520 -0
- package/docs/tcloud-ui-input-password.md +258 -0
- package/docs/tcloud-ui-input-search.md +314 -0
- package/docs/tcloud-ui-label-token.md +286 -0
- package/docs/tcloud-ui-legend.md +72 -0
- package/docs/tcloud-ui-line-step-circle.md +98 -0
- package/docs/tcloud-ui-line-step-title.md +194 -0
- package/docs/tcloud-ui-linha-logo.md +550 -0
- package/docs/tcloud-ui-loading.md +88 -0
- package/docs/tcloud-ui-message.md +539 -0
- package/docs/tcloud-ui-modal.md +196 -0
- package/docs/tcloud-ui-monthname.md +123 -0
- package/docs/tcloud-ui-multi-input.md +290 -0
- package/docs/tcloud-ui-multi-select.md +311 -0
- package/docs/tcloud-ui-multiples-values.md +157 -0
- package/docs/tcloud-ui-not-found.md +88 -0
- package/docs/tcloud-ui-number-step.md +134 -0
- package/docs/tcloud-ui-pagination.md +579 -0
- package/docs/tcloud-ui-progress-bar.md +65 -0
- package/docs/tcloud-ui-radio.md +83 -0
- package/docs/tcloud-ui-reorder-items.md +418 -0
- package/docs/tcloud-ui-respective.md +167 -0
- package/docs/tcloud-ui-scroll-box.md +109 -0
- package/docs/tcloud-ui-search-bar.md +88 -0
- package/docs/tcloud-ui-search-in-object.md +143 -0
- package/docs/tcloud-ui-search-input.md +74 -0
- package/docs/tcloud-ui-skeleton-loading.md +394 -0
- package/docs/tcloud-ui-slide-toggle.md +210 -0
- package/docs/tcloud-ui-statusinfo.md +138 -0
- package/docs/tcloud-ui-tab-group.md +376 -0
- package/docs/tcloud-ui-tab-menu.md +109 -0
- package/docs/tcloud-ui-table.md +96 -0
- package/docs/tcloud-ui-tag.md +379 -0
- package/docs/tcloud-ui-tc-badge.md +168 -0
- package/docs/tcloud-ui-tc-btn.md +189 -0
- package/docs/tcloud-ui-tc-colors.md +204 -0
- package/docs/tcloud-ui-tc-form-control.md +200 -0
- package/docs/tcloud-ui-tc-text.md +139 -0
- package/docs/tcloud-ui-tc-title.md +118 -0
- package/docs/tcloud-ui-tcloud-form.md +55 -0
- package/docs/tcloud-ui-toast.md +83 -0
- package/docs/tcloud-ui-tooltip.md +88 -0
- package/docs/tcloud-ui-topology.md +232 -0
- package/docs/tcloud-ui-upload-area.md +195 -0
- package/docs/tcloud-ui-welcome.md +112 -0
- package/docs/tcloud-ui-wizard-steps.md +103 -0
- package/js/tcloud-ui-app.js +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# TCloud UI Table
|
|
2
|
+
|
|
3
|
+
Componente Angular standalone que encapsula uma tabela estilizada com projeção de conteúdo, suporte a tabela zebrada e classe responsiva para adaptação em telas menores.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- ✅ Projeção via `ng-content` para `<thead>` e `<tbody>` usando seletores `tc-thead` e `tc-tbody`
|
|
8
|
+
- ✅ Habilita classe responsiva opcional (`tc-table-responsive`) para melhor visualização em mobile
|
|
9
|
+
- ✅ Suporte a linhas zebradas (`tc-table-striped`) configurável por input
|
|
10
|
+
- ✅ Standalone, mas também exportado pelo `TCloudUiModule`
|
|
11
|
+
|
|
12
|
+
## Instalação
|
|
13
|
+
|
|
14
|
+
Importe o módulo agregador:
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { TCloudUiModule } from 'projects/tcloud-ui/src/public-api';
|
|
18
|
+
|
|
19
|
+
@NgModule({
|
|
20
|
+
imports: [TCloudUiModule]
|
|
21
|
+
})
|
|
22
|
+
export class MyModule {}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Ou importe apenas o componente standalone:
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { TCloudUiTableComponent } from 'projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.component';
|
|
29
|
+
|
|
30
|
+
@Component({
|
|
31
|
+
standalone: true,
|
|
32
|
+
imports: [TCloudUiTableComponent]
|
|
33
|
+
})
|
|
34
|
+
export class MyStandaloneComponent {}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Uso Básico
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<tcloud-ui-table>
|
|
41
|
+
<thead tc-thead>
|
|
42
|
+
<tr>
|
|
43
|
+
<th>Nome</th>
|
|
44
|
+
<th>Email</th>
|
|
45
|
+
</tr>
|
|
46
|
+
</thead>
|
|
47
|
+
<tbody tc-tbody>
|
|
48
|
+
<tr>
|
|
49
|
+
<td>Ana</td>
|
|
50
|
+
<td>ana@email.com</td>
|
|
51
|
+
</tr>
|
|
52
|
+
<tr>
|
|
53
|
+
<td>Bruno</td>
|
|
54
|
+
<td>bruno@email.com</td>
|
|
55
|
+
</tr>
|
|
56
|
+
</tbody>
|
|
57
|
+
</tcloud-ui-table>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Uso Avançado
|
|
61
|
+
|
|
62
|
+
Tabela responsiva, com linhas zebradas e labels de dados para mobile:
|
|
63
|
+
|
|
64
|
+
```html
|
|
65
|
+
<tcloud-ui-table [responsive]="true" [striped]="true">
|
|
66
|
+
<thead tc-thead>
|
|
67
|
+
<tr>
|
|
68
|
+
<th TCalign="start">Nome</th>
|
|
69
|
+
<th TCalign="end">Email</th>
|
|
70
|
+
<th>Status</th>
|
|
71
|
+
</tr>
|
|
72
|
+
</thead>
|
|
73
|
+
<tbody tc-tbody>
|
|
74
|
+
<tr>
|
|
75
|
+
<td TCalign="start" tc-data-label="Nome">Info</td>
|
|
76
|
+
<td TCalign="end" tc-data-label="Email">info@email.com</td>
|
|
77
|
+
<td tc-data-label="Status">Ativo</td>
|
|
78
|
+
</tr>
|
|
79
|
+
</tbody>
|
|
80
|
+
</tcloud-ui-table>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## API
|
|
84
|
+
|
|
85
|
+
### Componente: `tcloud-ui-table`
|
|
86
|
+
|
|
87
|
+
#### Inputs
|
|
88
|
+
|
|
89
|
+
| Propriedade | Tipo | Padrão | Descrição | Obrigatório |
|
|
90
|
+
|-------------|------|--------|-----------|-------------|
|
|
91
|
+
| `responsive` | `boolean` | `true` | Adiciona classe responsiva para melhorar exibição em telas pequenas. | ❌ |
|
|
92
|
+
| `striped` | `boolean` | `false` | Ativa listras alternadas nas linhas da tabela. | ❌ |
|
|
93
|
+
|
|
94
|
+
#### Outputs
|
|
95
|
+
|
|
96
|
+
Nenhum output público disponível.
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
# Tag
|
|
2
|
+
|
|
3
|
+
## Características
|
|
4
|
+
|
|
5
|
+
O componente `tcloud-ui-tag` é um componente versátil para exibir tags/badges customizáveis com suporte a múltiplas cores, variantes (filled/outline), tamanhos (sm/md/lg) e formatos (rectangle/pill). Ideal para categorizar informações, indicar status ou destacar conteúdo importante.
|
|
6
|
+
|
|
7
|
+
## Instalação
|
|
8
|
+
|
|
9
|
+
Para utilizar o componente Tag, 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: `<tcloud-ui-tag ...>Texto da Tag</tcloud-ui-tag>`
|
|
20
|
+
})
|
|
21
|
+
export class ExampleComponent {}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Ou importe diretamente o componente e a enum de cores:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { TCloudUiTagComponent, TagColorsEnum } from '@tcloud-ui/lib';
|
|
28
|
+
|
|
29
|
+
@Component({
|
|
30
|
+
selector: 'app-example',
|
|
31
|
+
standalone: true,
|
|
32
|
+
imports: [TCloudUiTagComponent],
|
|
33
|
+
template: `<tcloud-ui-tag ...>Texto da Tag</tcloud-ui-tag>`
|
|
34
|
+
})
|
|
35
|
+
export class ExampleComponent {}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Propriedades (API)
|
|
39
|
+
|
|
40
|
+
### Inputs
|
|
41
|
+
|
|
42
|
+
| Nome | Tipo | Descrição | Valor Default |
|
|
43
|
+
|------|------|-----------|---------------|
|
|
44
|
+
| `size` | `'sm' \| 'md' \| 'lg' \| 'regular'` | Tamanho da tag | `'md'` |
|
|
45
|
+
| `color` | `TagColorsEnum \| string` | Cor da tag (veja enum abaixo) | `'primary-500'` |
|
|
46
|
+
| `variant` | `'filled' \| 'outline' \| ''` | Estilo visual da tag | `'filled'` |
|
|
47
|
+
| `shape` | `'pill' \| 'rectangle'` | Formato da tag | `'rectangle'` |
|
|
48
|
+
| `fullWidth` | `boolean` | Se a tag ocupa toda a largura do container | `false` |
|
|
49
|
+
|
|
50
|
+
### Enum de Cores Disponíveis
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
export enum TagColorsEnum {
|
|
54
|
+
'neutral-50', 'neutral-100', 'neutral-200', 'neutral-300', 'neutral-400',
|
|
55
|
+
'neutral-500', 'neutral-600', 'neutral-700', 'neutral-800', 'neutral-900',
|
|
56
|
+
'primary-300', 'primary-400', 'primary-500', 'primary-600', 'primary-700',
|
|
57
|
+
'danger-300', 'danger-400', 'danger-500',
|
|
58
|
+
'alert-300', 'alert-400', 'alert-500',
|
|
59
|
+
'info-300', 'info-400', 'info-500',
|
|
60
|
+
'success-300', 'success-400', 'success-500'
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Exemplos de Uso
|
|
65
|
+
|
|
66
|
+
### Uso Básico
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { Component } from '@angular/core';
|
|
70
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
71
|
+
|
|
72
|
+
@Component({
|
|
73
|
+
selector: 'app-basic-tag',
|
|
74
|
+
standalone: true,
|
|
75
|
+
imports: [TCloudUiModule],
|
|
76
|
+
template: `
|
|
77
|
+
<tcloud-ui-tag>Informação</tcloud-ui-tag>
|
|
78
|
+
<tcloud-ui-tag [color]="'danger-500'">Erro</tcloud-ui-tag>
|
|
79
|
+
<tcloud-ui-tag [color]="'success-500'">Sucesso</tcloud-ui-tag>
|
|
80
|
+
`
|
|
81
|
+
})
|
|
82
|
+
export class BasicTagComponent {}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Tags com Diferentes Tamanhos
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { Component } from '@angular/core';
|
|
89
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
90
|
+
|
|
91
|
+
@Component({
|
|
92
|
+
selector: 'app-sizes-tag',
|
|
93
|
+
standalone: true,
|
|
94
|
+
imports: [TCloudUiModule],
|
|
95
|
+
template: `
|
|
96
|
+
<div class="container">
|
|
97
|
+
<tcloud-ui-tag size="sm">Pequeno</tcloud-ui-tag>
|
|
98
|
+
<tcloud-ui-tag size="md">Médio</tcloud-ui-tag>
|
|
99
|
+
<tcloud-ui-tag size="lg">Grande</tcloud-ui-tag>
|
|
100
|
+
</div>
|
|
101
|
+
`,
|
|
102
|
+
styles: [`
|
|
103
|
+
.container {
|
|
104
|
+
display: flex;
|
|
105
|
+
gap: 1rem;
|
|
106
|
+
align-items: center;
|
|
107
|
+
}
|
|
108
|
+
`]
|
|
109
|
+
})
|
|
110
|
+
export class SizesTagComponent {}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Variantes Filled e Outline
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { Component } from '@angular/core';
|
|
117
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
118
|
+
|
|
119
|
+
@Component({
|
|
120
|
+
selector: 'app-variants-tag',
|
|
121
|
+
standalone: true,
|
|
122
|
+
imports: [TCloudUiModule],
|
|
123
|
+
template: `
|
|
124
|
+
<div>
|
|
125
|
+
<div class="group">
|
|
126
|
+
<h4>Variante Filled (preenchida)</h4>
|
|
127
|
+
<tcloud-ui-tag variant="filled" [color]="'primary-500'">Primária</tcloud-ui-tag>
|
|
128
|
+
<tcloud-ui-tag variant="filled" [color]="'success-500'">Sucesso</tcloud-ui-tag>
|
|
129
|
+
<tcloud-ui-tag variant="filled" [color]="'danger-500'">Perigo</tcloud-ui-tag>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<div class="group">
|
|
133
|
+
<h4>Variante Outline (só contorno)</h4>
|
|
134
|
+
<tcloud-ui-tag variant="outline" [color]="'primary-500'">Primária</tcloud-ui-tag>
|
|
135
|
+
<tcloud-ui-tag variant="outline" [color]="'success-500'">Sucesso</tcloud-ui-tag>
|
|
136
|
+
<tcloud-ui-tag variant="outline" [color]="'danger-500'">Perigo</tcloud-ui-tag>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
`,
|
|
140
|
+
styles: [`
|
|
141
|
+
.group {
|
|
142
|
+
display: flex;
|
|
143
|
+
gap: 0.5rem;
|
|
144
|
+
margin-bottom: 1rem;
|
|
145
|
+
align-items: center;
|
|
146
|
+
}
|
|
147
|
+
`]
|
|
148
|
+
})
|
|
149
|
+
export class VariantsTagComponent {}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Formatos Pill e Rectangle
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
import { Component } from '@angular/core';
|
|
156
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
157
|
+
|
|
158
|
+
@Component({
|
|
159
|
+
selector: 'app-shapes-tag',
|
|
160
|
+
standalone: true,
|
|
161
|
+
imports: [TCloudUiModule],
|
|
162
|
+
template: `
|
|
163
|
+
<div class="container">
|
|
164
|
+
<div class="group">
|
|
165
|
+
<h4>Rectangle (padrão)</h4>
|
|
166
|
+
<tcloud-ui-tag shape="rectangle">Normal</tcloud-ui-tag>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<div class="group">
|
|
170
|
+
<h4>Pill (arredondado)</h4>
|
|
171
|
+
<tcloud-ui-tag shape="pill">Arredondado</tcloud-ui-tag>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
`,
|
|
175
|
+
styles: [`
|
|
176
|
+
.container {
|
|
177
|
+
display: flex;
|
|
178
|
+
gap: 2rem;
|
|
179
|
+
}
|
|
180
|
+
.group h4 {
|
|
181
|
+
margin-bottom: 0.5rem;
|
|
182
|
+
}
|
|
183
|
+
`]
|
|
184
|
+
})
|
|
185
|
+
export class ShapesTagComponent {}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Tags para Status
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { Component } from '@angular/core';
|
|
192
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
193
|
+
|
|
194
|
+
@Component({
|
|
195
|
+
selector: 'app-status-tags',
|
|
196
|
+
standalone: true,
|
|
197
|
+
imports: [TCloudUiModule],
|
|
198
|
+
template: `
|
|
199
|
+
<div class="container">
|
|
200
|
+
<div class="item">
|
|
201
|
+
<p>Status: Ativo</p>
|
|
202
|
+
<tcloud-ui-tag [color]="'success-500'" shape="pill">✓ Ativo</tcloud-ui-tag>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div class="item">
|
|
206
|
+
<p>Status: Pendente</p>
|
|
207
|
+
<tcloud-ui-tag [color]="'alert-500'" shape="pill">⏱ Pendente</tcloud-ui-tag>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<div class="item">
|
|
211
|
+
<p>Status: Inativo</p>
|
|
212
|
+
<tcloud-ui-tag [color]="'neutral-500'" shape="pill">✗ Inativo</tcloud-ui-tag>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div class="item">
|
|
216
|
+
<p>Status: Erro</p>
|
|
217
|
+
<tcloud-ui-tag [color]="'danger-500'" shape="pill">✗ Erro</tcloud-ui-tag>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
`,
|
|
221
|
+
styles: [`
|
|
222
|
+
.container {
|
|
223
|
+
display: grid;
|
|
224
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
225
|
+
gap: 1.5rem;
|
|
226
|
+
}
|
|
227
|
+
.item p {
|
|
228
|
+
margin: 0 0 0.5rem 0;
|
|
229
|
+
font-weight: 500;
|
|
230
|
+
}
|
|
231
|
+
`]
|
|
232
|
+
})
|
|
233
|
+
export class StatusTagsComponent {}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Cores Disponíveis
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
import { Component } from '@angular/core';
|
|
240
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
241
|
+
|
|
242
|
+
@Component({
|
|
243
|
+
selector: 'app-color-palette',
|
|
244
|
+
standalone: true,
|
|
245
|
+
imports: [TCloudUiModule],
|
|
246
|
+
template: `
|
|
247
|
+
<div class="color-grid">
|
|
248
|
+
<!-- Neutras -->
|
|
249
|
+
<div>
|
|
250
|
+
<h5>Neutras</h5>
|
|
251
|
+
<tcloud-ui-tag [color]="'neutral-300'">neutral-300</tcloud-ui-tag>
|
|
252
|
+
<tcloud-ui-tag [color]="'neutral-500'">neutral-500</tcloud-ui-tag>
|
|
253
|
+
<tcloud-ui-tag [color]="'neutral-700'">neutral-700</tcloud-ui-tag>
|
|
254
|
+
</div>
|
|
255
|
+
|
|
256
|
+
<!-- Primárias -->
|
|
257
|
+
<div>
|
|
258
|
+
<h5>Primárias</h5>
|
|
259
|
+
<tcloud-ui-tag [color]="'primary-300'">primary-300</tcloud-ui-tag>
|
|
260
|
+
<tcloud-ui-tag [color]="'primary-500'">primary-500</tcloud-ui-tag>
|
|
261
|
+
<tcloud-ui-tag [color]="'primary-700'">primary-700</tcloud-ui-tag>
|
|
262
|
+
</div>
|
|
263
|
+
|
|
264
|
+
<!-- Danger -->
|
|
265
|
+
<div>
|
|
266
|
+
<h5>Risco/Erro</h5>
|
|
267
|
+
<tcloud-ui-tag [color]="'danger-300'">danger-300</tcloud-ui-tag>
|
|
268
|
+
<tcloud-ui-tag [color]="'danger-500'">danger-500</tcloud-ui-tag>
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
<!-- Success -->
|
|
272
|
+
<div>
|
|
273
|
+
<h5>Sucesso</h5>
|
|
274
|
+
<tcloud-ui-tag [color]="'success-300'">success-300</tcloud-ui-tag>
|
|
275
|
+
<tcloud-ui-tag [color]="'success-500'">success-500</tcloud-ui-tag>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<!-- Info -->
|
|
279
|
+
<div>
|
|
280
|
+
<h5>Informação</h5>
|
|
281
|
+
<tcloud-ui-tag [color]="'info-300'">info-300</tcloud-ui-tag>
|
|
282
|
+
<tcloud-ui-tag [color]="'info-500'">info-500</tcloud-ui-tag>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<!-- Alert -->
|
|
286
|
+
<div>
|
|
287
|
+
<h5>Alerta</h5>
|
|
288
|
+
<tcloud-ui-tag [color]="'alert-300'">alert-300</tcloud-ui-tag>
|
|
289
|
+
<tcloud-ui-tag [color]="'alert-500'">alert-500</tcloud-ui-tag>
|
|
290
|
+
</div>
|
|
291
|
+
</div>
|
|
292
|
+
`,
|
|
293
|
+
styles: [`
|
|
294
|
+
.color-grid {
|
|
295
|
+
display: grid;
|
|
296
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
297
|
+
gap: 1.5rem;
|
|
298
|
+
}
|
|
299
|
+
.color-grid div {
|
|
300
|
+
display: flex;
|
|
301
|
+
flex-direction: column;
|
|
302
|
+
gap: 0.5rem;
|
|
303
|
+
}
|
|
304
|
+
.color-grid h5 {
|
|
305
|
+
margin: 0 0 0.5rem 0;
|
|
306
|
+
font-size: 0.875rem;
|
|
307
|
+
font-weight: 600;
|
|
308
|
+
color: var(--c-neutral-600);
|
|
309
|
+
}
|
|
310
|
+
`]
|
|
311
|
+
})
|
|
312
|
+
export class ColorPaletteComponent {}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Tags de Categoria
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
import { Component } from '@angular/core';
|
|
319
|
+
import { TCloudUiModule } from '@tcloud-ui/lib';
|
|
320
|
+
import { CommonModule } from '@angular/common';
|
|
321
|
+
|
|
322
|
+
@Component({
|
|
323
|
+
selector: 'app-category-tags',
|
|
324
|
+
standalone: true,
|
|
325
|
+
imports: [CommonModule, TCloudUiModule],
|
|
326
|
+
template: `
|
|
327
|
+
<div class="categories">
|
|
328
|
+
<h4>Categorias de Produto</h4>
|
|
329
|
+
<div class="tag-list">
|
|
330
|
+
<tcloud-ui-tag
|
|
331
|
+
*ngFor="let category of categories"
|
|
332
|
+
[color]="category.color"
|
|
333
|
+
shape="pill"
|
|
334
|
+
variant="filled"
|
|
335
|
+
>
|
|
336
|
+
{{ category.label }}
|
|
337
|
+
</tcloud-ui-tag>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
`,
|
|
341
|
+
styles: [`
|
|
342
|
+
.categories {
|
|
343
|
+
padding: 1rem;
|
|
344
|
+
}
|
|
345
|
+
.tag-list {
|
|
346
|
+
display: flex;
|
|
347
|
+
gap: 0.5rem;
|
|
348
|
+
flex-wrap: wrap;
|
|
349
|
+
}
|
|
350
|
+
`]
|
|
351
|
+
})
|
|
352
|
+
export class CategoryTagsComponent {
|
|
353
|
+
categories = [
|
|
354
|
+
{ label: 'Eletrônicos', color: 'primary-500' },
|
|
355
|
+
{ label: 'Livros', color: 'info-500' },
|
|
356
|
+
{ label: 'Roupas', color: 'alert-500' },
|
|
357
|
+
{ label: 'Alimentos', color: 'success-500' },
|
|
358
|
+
{ label: 'Beleza', color: 'primary-300' }
|
|
359
|
+
];
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Notas de Implementação
|
|
364
|
+
|
|
365
|
+
- O componente usa Angular signals (input) para reatividade
|
|
366
|
+
- As cores são combinadas dinamicamente usando interpolação de classes CSS
|
|
367
|
+
- O componente suporta `<ng-content>` para conteúdo flexível
|
|
368
|
+
- O `:host` display é `block`, permitindo controle de layout
|
|
369
|
+
- As variantes filled e outline combinam cores de background e texto de forma dinâmica
|
|
370
|
+
- O formato pill usa `border-radius: var(--bor-radius-pill)` para arredondamento máximo
|
|
371
|
+
- Tags preenchem a largura do container quando `fullWidth=true`
|
|
372
|
+
|
|
373
|
+
## Casos de Uso
|
|
374
|
+
|
|
375
|
+
- Indicar status (ativo/inativo, sucesso/erro)
|
|
376
|
+
- Categorizar conteúdo (tags de artikel, labels de categoria)
|
|
377
|
+
- Destacar informações importantes (badges, notificações)
|
|
378
|
+
- Mostrar tecnologias ou skills (em profiles)
|
|
379
|
+
- Filtros visuais em listas
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Layout — `.tc-badge`
|
|
2
|
+
|
|
3
|
+
## Características
|
|
4
|
+
|
|
5
|
+
- Labels coloridas para indicar status, categorias e metadados inline.
|
|
6
|
+
- Seis variantes semânticas: `primary`, `success`, `danger`, `alert`, `info` e `neutral`.
|
|
7
|
+
- Dois estilos visuais: **filled** (padrão — fundo suave com borda) e **solid** (fundo cheio) via `.tc-badge-solid`.
|
|
8
|
+
- Três tamanhos: `tc-badge-sm`, padrão e `tc-badge-lg`.
|
|
9
|
+
- Estado desabilitado via `.tc-badge-disabled` — reduz opacidade e bloqueia interação.
|
|
10
|
+
- Cores baseadas nos tokens `--c-*` do design system — adapta-se automaticamente ao dark mode.
|
|
11
|
+
- Não há componente Angular envolvido — as classes são aplicadas diretamente em `<span>` ou qualquer tag inline.
|
|
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
|
+
### Variantes de cor
|
|
30
|
+
|
|
31
|
+
| Classe completa | Tokens usados | Uso recomendado |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `tc-badge tc-badge-primary` | `--c-primary-300 / 400 / 700` | Informação principal — identificação de categoria |
|
|
34
|
+
| `tc-badge tc-badge-success` | `--c-success-300 / 400 / 700` | Confirmação — status ativo, aprovado, concluído |
|
|
35
|
+
| `tc-badge tc-badge-danger` | `--c-danger-300 / 400 / 700` | Alerta crítico — erro, expirado, rejeitado |
|
|
36
|
+
| `tc-badge tc-badge-alert` | `--c-alert-300 / 400 / 700` | Atenção — pendente, em revisão |
|
|
37
|
+
| `tc-badge tc-badge-info` | `--c-info-300 / 400 / 700` | Informativo — novidade, dica |
|
|
38
|
+
| `tc-badge tc-badge-neutral` | `--c-neutral-200 / 300 / 600` | Neutro — rascunho, inativo |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### Estilo solid — `.tc-badge-solid`
|
|
43
|
+
|
|
44
|
+
Adicione `.tc-badge-solid` junto à classe de cor para obter fundo cheio em vez do estilo suave padrão.
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
<span class="tc-badge tc-badge-solid tc-badge-primary">Label</span>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Tamanhos
|
|
53
|
+
|
|
54
|
+
| Modificador | `padding` | `font-size` |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| `tc-badge-sm` | `1px 7px` | `0.6875rem` |
|
|
57
|
+
| *(padrão)* | `2px 10px` | `0.75rem` |
|
|
58
|
+
| `tc-badge-lg` | `4px 14px` | `0.875rem` |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Estado desabilitado — `.tc-badge-disabled`
|
|
63
|
+
|
|
64
|
+
Aplique `.tc-badge-disabled` para reduzir a opacidade e bloquear interação do usuário. Compatível com todas as variantes de cor.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Exemplos de Uso
|
|
69
|
+
|
|
70
|
+
### Uso Básico
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- Filled (padrão) -->
|
|
74
|
+
<span class="tc-badge tc-badge-primary">Primary</span>
|
|
75
|
+
<span class="tc-badge tc-badge-success">Ativo</span>
|
|
76
|
+
<span class="tc-badge tc-badge-danger">Expirado</span>
|
|
77
|
+
<span class="tc-badge tc-badge-alert">Pendente</span>
|
|
78
|
+
<span class="tc-badge tc-badge-info">Novidade</span>
|
|
79
|
+
<span class="tc-badge tc-badge-neutral">Rascunho</span>
|
|
80
|
+
|
|
81
|
+
<!-- Solid (fundo cheio) -->
|
|
82
|
+
<span class="tc-badge tc-badge-solid tc-badge-primary">Design</span>
|
|
83
|
+
<span class="tc-badge tc-badge-solid tc-badge-success">Frontend</span>
|
|
84
|
+
|
|
85
|
+
<!-- Tamanhos -->
|
|
86
|
+
<span class="tc-badge tc-badge-primary tc-badge-sm">Pequeno</span>
|
|
87
|
+
<span class="tc-badge tc-badge-primary">Padrão</span>
|
|
88
|
+
<span class="tc-badge tc-badge-primary tc-badge-lg">Grande</span>
|
|
89
|
+
|
|
90
|
+
<!-- Desabilitado -->
|
|
91
|
+
<span class="tc-badge tc-badge-primary tc-badge-disabled">Desabilitado</span>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Uso Avançado
|
|
97
|
+
|
|
98
|
+
#### Status de pedido em tabela
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<table>
|
|
102
|
+
<tbody>
|
|
103
|
+
<tr>
|
|
104
|
+
<td>Pedido #1042</td>
|
|
105
|
+
<td><span class="tc-badge tc-badge-alert">Pendente</span></td>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<td>Pedido #1043</td>
|
|
109
|
+
<td><span class="tc-badge tc-badge-primary">Em análise</span></td>
|
|
110
|
+
</tr>
|
|
111
|
+
<tr>
|
|
112
|
+
<td>Pedido #1044</td>
|
|
113
|
+
<td><span class="tc-badge tc-badge-success">Aprovado</span></td>
|
|
114
|
+
</tr>
|
|
115
|
+
<tr>
|
|
116
|
+
<td>Pedido #1045</td>
|
|
117
|
+
<td><span class="tc-badge tc-badge-danger">Cancelado</span></td>
|
|
118
|
+
</tr>
|
|
119
|
+
</tbody>
|
|
120
|
+
</table>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Categorias com solid em lista de cards
|
|
124
|
+
|
|
125
|
+
```html
|
|
126
|
+
<div class="card">
|
|
127
|
+
<h4 class="tc-title">Componente de Botão</h4>
|
|
128
|
+
<div style="display: flex; gap: 6px; margin-top: 8px;">
|
|
129
|
+
<span class="tc-badge tc-badge-solid tc-badge-primary">Design</span>
|
|
130
|
+
<span class="tc-badge tc-badge-solid tc-badge-success">Frontend</span>
|
|
131
|
+
<span class="tc-badge tc-badge-solid tc-badge-info">Documentado</span>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
#### Badge dinâmico com Angular — class binding
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<span
|
|
140
|
+
class="tc-badge"
|
|
141
|
+
[ngClass]="{
|
|
142
|
+
'tc-badge-success': status === 'ativo',
|
|
143
|
+
'tc-badge-danger': status === 'inativo',
|
|
144
|
+
'tc-badge-alert': status === 'pendente',
|
|
145
|
+
'tc-badge-neutral': status === 'rascunho'
|
|
146
|
+
}"
|
|
147
|
+
>
|
|
148
|
+
{{ status | titlecase }}
|
|
149
|
+
</span>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
export class ExampleComponent {
|
|
154
|
+
status: 'ativo' | 'inativo' | 'pendente' | 'rascunho' = 'pendente';
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### Badge para contagem (notificações)
|
|
159
|
+
|
|
160
|
+
```html
|
|
161
|
+
<div style="position: relative; display: inline-flex;">
|
|
162
|
+
<button class="tc-btn tc-btn-outline-neutral">Notificações</button>
|
|
163
|
+
<span class="tc-badge tc-badge-solid tc-badge-danger tc-badge-sm"
|
|
164
|
+
style="position: absolute; top: -6px; right: -6px;">
|
|
165
|
+
3
|
|
166
|
+
</span>
|
|
167
|
+
</div>
|
|
168
|
+
```
|