@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,520 @@
1
+ # Input Container
2
+
3
+ ## Características
4
+
5
+ O componente `tcloud-ui-input-container` é um wrapper visual que envolve inputs, checkboxes, radios e outros elementos de formulário, fornecendo um label customizável com posicionamento flexível. Ideal para criar layouts de formulário consistentes e acessíveis.
6
+
7
+ ## Instalação
8
+
9
+ Para utilizar o componente Input Container, 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-input-container label="Nome" labelPosition="top">
21
+ <input type="text" placeholder="Digite seu nome">
22
+ </tcloud-ui-input-container>
23
+ `
24
+ })
25
+ export class ExampleComponent {}
26
+ ```
27
+
28
+ Ou importe diretamente o componente:
29
+
30
+ ```typescript
31
+ import { TCloudUiInputContainerComponent } from '@tcloud-ui/lib';
32
+
33
+ @Component({
34
+ selector: 'app-example',
35
+ standalone: true,
36
+ imports: [TCloudUiInputContainerComponent],
37
+ template: `...`
38
+ })
39
+ export class ExampleComponent {}
40
+ ```
41
+
42
+ ## Propriedades (API)
43
+
44
+ ### Inputs
45
+
46
+ | Nome | Tipo | Descrição | Valor Default |
47
+ |------|------|-----------|---------------|
48
+ | `label` | `string` | Texto do label exibido com o input | `''` (vazio) |
49
+ | `inputId` | `string` | ID do input para associação com label via atributo `for` | `''` |
50
+ | `labelPosition` | `'top' \| 'right' \| 'bottom' \| 'left'` | Posição do label em relação ao input | `'top'` |
51
+ | `required` | `boolean` | Exibe asterisco vermelho indicando campo obrigatório | `false` |
52
+ | `fullWidth` | `boolean` | Faz o container ocupar 100% da largura disponível | `false` |
53
+
54
+ ## Características Técnicas
55
+
56
+ - **Flexbox Layout**: Utiliza flexbox para posicionamento flexível do label
57
+ - **ng-content**: Aceita qualquer elemento HTML como conteúdo
58
+ - **Label Acessível**: Suporta associação com input via atributo `for` quando `inputId` é fornecido
59
+ - **Indicador Obrigatório**: Asterisco customizável para campos requeridos
60
+ - **Responsive**: Adapta-se a diferentes tamanhos de viewport
61
+
62
+ ## Exemplos de Uso
63
+
64
+ ### Uso Básico
65
+
66
+ ```typescript
67
+ import { Component } from '@angular/core';
68
+ import { TCloudUiModule } from '@tcloud-ui/lib';
69
+
70
+ @Component({
71
+ selector: 'app-basic-input-container',
72
+ standalone: true,
73
+ imports: [TCloudUiModule],
74
+ template: `
75
+ <tcloud-ui-input-container
76
+ label="Nome"
77
+ inputId="name-input"
78
+ labelPosition="top">
79
+ <input id="name-input" type="text" placeholder="Digite seu nome">
80
+ </tcloud-ui-input-container>
81
+
82
+ <tcloud-ui-input-container
83
+ label="Email"
84
+ inputId="email-input"
85
+ labelPosition="top"
86
+ [required]="true">
87
+ <input id="email-input" type="email" placeholder="Digite seu email">
88
+ </tcloud-ui-input-container>
89
+ `
90
+ })
91
+ export class BasicInputContainerComponent {}
92
+ ```
93
+
94
+ ### Posições do Label
95
+
96
+ ```typescript
97
+ import { Component } from '@angular/core';
98
+ import { TCloudUiModule } from '@tcloud-ui/lib';
99
+
100
+ @Component({
101
+ selector: 'app-label-positions',
102
+ standalone: true,
103
+ imports: [TCloudUiModule],
104
+ template: `
105
+ <div class="position-examples">
106
+ <!-- Label Acima (TOP) -->
107
+ <tcloud-ui-input-container
108
+ label="Acima"
109
+ labelPosition="top">
110
+ <input type="text" placeholder="Label no topo">
111
+ </tcloud-ui-input-container>
112
+
113
+ <!-- Label à Direita (RIGHT) -->
114
+ <tcloud-ui-input-container
115
+ label="Direita"
116
+ labelPosition="right">
117
+ <input type="text" placeholder="Label à direita">
118
+ </tcloud-ui-input-container>
119
+
120
+ <!-- Label Abaixo (BOTTOM) -->
121
+ <tcloud-ui-input-container
122
+ label="Abaixo"
123
+ labelPosition="bottom">
124
+ <input type="text" placeholder="Label abaixo">
125
+ </tcloud-ui-input-container>
126
+
127
+ <!-- Label à Esquerda (LEFT) -->
128
+ <tcloud-ui-input-container
129
+ label="Esquerda"
130
+ labelPosition="left">
131
+ <input type="text" placeholder="Label à esquerda">
132
+ </tcloud-ui-input-container>
133
+ </div>
134
+ `,
135
+ styles: [`
136
+ .position-examples {
137
+ display: grid;
138
+ grid-template-columns: repeat(2, 1fr);
139
+ gap: 2rem;
140
+ }
141
+ `]
142
+ })
143
+ export class LabelPositionsComponent {}
144
+ ```
145
+
146
+ ### Com Checkboxes
147
+
148
+ ```typescript
149
+ import { Component } from '@angular/core';
150
+ import { TCloudUiModule } from '@tcloud-ui/lib';
151
+ import { CommonModule } from '@angular/common';
152
+
153
+ @Component({
154
+ selector: 'app-checkbox-container',
155
+ standalone: true,
156
+ imports: [CommonModule, TCloudUiModule],
157
+ template: `
158
+ <div class="checkbox-group">
159
+ <tcloud-ui-input-container
160
+ label="Concordo com os termos"
161
+ labelPosition="left">
162
+ <input type="checkbox" id="terms">
163
+ </tcloud-ui-input-container>
164
+
165
+ <tcloud-ui-input-container
166
+ label="Receber notificações"
167
+ labelPosition="left">
168
+ <input type="checkbox" id="notifications">
169
+ </tcloud-ui-input-container>
170
+
171
+ <tcloud-ui-input-container
172
+ label="Ativar autenticação 2FA"
173
+ labelPosition="left"
174
+ [required]="true">
175
+ <input type="checkbox" id="2fa">
176
+ </tcloud-ui-input-container>
177
+ </div>
178
+ `,
179
+ styles: [`
180
+ .checkbox-group {
181
+ display: flex;
182
+ flex-direction: column;
183
+ gap: 1rem;
184
+ }
185
+ `]
186
+ })
187
+ export class CheckboxContainerComponent {}
188
+ ```
189
+
190
+ ### Com Radio Buttons
191
+
192
+ ```typescript
193
+ import { Component } from '@angular/core';
194
+ import { TCloudUiModule } from '@tcloud-ui/lib';
195
+
196
+ @Component({
197
+ selector: 'app-radio-container',
198
+ standalone: true,
199
+ imports: [TCloudUiModule],
200
+ template: `
201
+ <div class="radio-group">
202
+ <tcloud-ui-input-container
203
+ label="Opção 1"
204
+ labelPosition="left">
205
+ <input type="radio" name="options" id="option1" value="opt1">
206
+ </tcloud-ui-input-container>
207
+
208
+ <tcloud-ui-input-container
209
+ label="Opção 2"
210
+ labelPosition="left">
211
+ <input type="radio" name="options" id="option2" value="opt2">
212
+ </tcloud-ui-input-container>
213
+
214
+ <tcloud-ui-input-container
215
+ label="Opção 3"
216
+ labelPosition="left">
217
+ <input type="radio" name="options" id="option3" value="opt3">
218
+ </tcloud-ui-input-container>
219
+ </div>
220
+ `,
221
+ styles: [`
222
+ .radio-group {
223
+ display: flex;
224
+ flex-direction: column;
225
+ gap: 1rem;
226
+ }
227
+ `]
228
+ })
229
+ export class RadioContainerComponent {}
230
+ ```
231
+
232
+ ### Campos Obrigatórios
233
+
234
+ ```typescript
235
+ import { Component, signal } from '@angular/core';
236
+ import { TCloudUiModule } from '@tcloud-ui/lib';
237
+ import { CommonModule } from '@angular/common';
238
+
239
+ @Component({
240
+ selector: 'app-required-fields',
241
+ standalone: true,
242
+ imports: [CommonModule, TCloudUiModule],
243
+ template: `
244
+ <form class="form-group">
245
+ <tcloud-ui-input-container
246
+ label="Nome Completo"
247
+ inputId="full-name"
248
+ labelPosition="top"
249
+ [required]="true">
250
+ <input
251
+ id="full-name"
252
+ type="text"
253
+ placeholder="Digite seu nome completo"
254
+ [(ngModel)]="formData.fullName"
255
+ (ngModelChange)="validateField('fullName')">
256
+ </tcloud-ui-input-container>
257
+
258
+ <tcloud-ui-input-container
259
+ label="Email"
260
+ inputId="email"
261
+ labelPosition="top"
262
+ [required]="true">
263
+ <input
264
+ id="email"
265
+ type="email"
266
+ placeholder="Digite seu email"
267
+ [(ngModel)]="formData.email"
268
+ (ngModelChange)="validateField('email')">
269
+ </tcloud-ui-input-container>
270
+
271
+ <tcloud-ui-input-container
272
+ label="Telefone"
273
+ inputId="phone"
274
+ labelPosition="top">
275
+ <input
276
+ id="phone"
277
+ type="tel"
278
+ placeholder="Digite seu telefone">
279
+ </tcloud-ui-input-container>
280
+
281
+ <button (click)="submitForm()">Enviar</button>
282
+ </form>
283
+ `,
284
+ styles: [`
285
+ .form-group {
286
+ display: flex;
287
+ flex-direction: column;
288
+ gap: 1.5rem;
289
+ max-width: 500px;
290
+ }
291
+
292
+ button {
293
+ padding: 0.75rem 1.5rem;
294
+ background: var(--c-primary-500);
295
+ color: white;
296
+ border: none;
297
+ border-radius: var(--bor-radius-4);
298
+ cursor: pointer;
299
+ font-weight: 600;
300
+ }
301
+
302
+ button:hover {
303
+ background: var(--c-primary-600);
304
+ }
305
+ `]
306
+ })
307
+ export class RequiredFieldsComponent {
308
+ formData = {
309
+ fullName: '',
310
+ email: '',
311
+ phone: ''
312
+ };
313
+
314
+ validateField(fieldName: string): void {
315
+ console.log(`Validando campo: ${fieldName}`);
316
+ }
317
+
318
+ submitForm(): void {
319
+ console.log('Form data:', this.formData);
320
+ }
321
+ }
322
+ ```
323
+
324
+ ### Largura Completa
325
+
326
+ ```typescript
327
+ import { Component } from '@angular/core';
328
+ import { TCloudUiModule } from '@tcloud-ui/lib';
329
+
330
+ @Component({
331
+ selector: 'app-full-width-form',
332
+ standalone: true,
333
+ imports: [TCloudUiModule],
334
+ template: `
335
+ <form class="form-container">
336
+ <tcloud-ui-input-container
337
+ label="Nome"
338
+ inputId="name"
339
+ labelPosition="top"
340
+ [fullWidth]="true">
341
+ <input id="name" type="text" placeholder="Seu nome">
342
+ </tcloud-ui-input-container>
343
+
344
+ <tcloud-ui-input-container
345
+ label="Descri​ção"
346
+ inputId="description"
347
+ labelPosition="top"
348
+ [fullWidth]="true">
349
+ <textarea id="description" placeholder="Descreva..."></textarea>
350
+ </tcloud-ui-input-container>
351
+
352
+ <tcloud-ui-input-container
353
+ label="Qual é sua experiência?"
354
+ labelPosition="top"
355
+ [fullWidth]="true">
356
+ <select>
357
+ <option>Iniciante</option>
358
+ <option>Intermediário</option>
359
+ <option>Avançado</option>
360
+ </select>
361
+ </tcloud-ui-input-container>
362
+ </form>
363
+ `,
364
+ styles: [`
365
+ .form-container {
366
+ display: flex;
367
+ flex-direction: column;
368
+ gap: 1.5rem;
369
+ }
370
+
371
+ input, textarea, select {
372
+ width: 100%;
373
+ padding: 0.75rem;
374
+ border: 1px solid var(--c-neutral-300);
375
+ border-radius: var(--bor-radius-4);
376
+ font-family: var(--f-family);
377
+ }
378
+ `]
379
+ })
380
+ export class FullWidthFormComponent {}
381
+ ```
382
+
383
+ ### Form Complexo com Layout
384
+
385
+ ```typescript
386
+ import { Component } from '@angular/core';
387
+ import { TCloudUiModule } from '@tcloud-ui/lib';
388
+ import { CommonModule } from '@angular/common';
389
+
390
+ @Component({
391
+ selector: 'app-complex-form',
392
+ standalone: true,
393
+ imports: [CommonModule, TCloudUiModule],
394
+ template: `
395
+ <form class="complex-form">
396
+ <section class="form-section">
397
+ <h3>Informações Pessoais</h3>
398
+
399
+ <div class="form-row">
400
+ <tcloud-ui-input-container
401
+ label="Primeiro Nome"
402
+ labelPosition="top"
403
+ [fullWidth]="true">
404
+ <input type="text" placeholder="João">
405
+ </tcloud-ui-input-container>
406
+
407
+ <tcloud-ui-input-container
408
+ label="Último Nome"
409
+ labelPosition="top"
410
+ [fullWidth]="true">
411
+ <input type="text" placeholder="Silva">
412
+ </tcloud-ui-input-container>
413
+ </div>
414
+
415
+ <tcloud-ui-input-container
416
+ label="Email"
417
+ inputId="email"
418
+ labelPosition="top"
419
+ [required]="true"
420
+ [fullWidth]="true">
421
+ <input id="email" type="email" placeholder="seu@email.com">
422
+ </tcloud-ui-input-container>
423
+ </section>
424
+
425
+ <section class="form-section">
426
+ <h3>Preferências</h3>
427
+
428
+ <tcloud-ui-input-container
429
+ label="Receber newsletter"
430
+ labelPosition="left">
431
+ <input type="checkbox">
432
+ </tcloud-ui-input-container>
433
+
434
+ <tcloud-ui-input-container
435
+ label="Receber notificações por email"
436
+ labelPosition="left">
437
+ <input type="checkbox" checked>
438
+ </tcloud-ui-input-container>
439
+ </section>
440
+ </form>
441
+ `,
442
+ styles: [`
443
+ .complex-form {
444
+ max-width: 600px;
445
+ padding: 2rem;
446
+ border: 1px solid var(--c-neutral-200);
447
+ border-radius: var(--bor-radius-8);
448
+ }
449
+
450
+ .form-section {
451
+ margin-bottom: 2rem;
452
+ }
453
+
454
+ .form-section h3 {
455
+ margin: 0 0 1rem 0;
456
+ font-size: var(--f-size-18);
457
+ font-weight: var(--f-weight-700);
458
+ color: var(--c-neutral-900);
459
+ }
460
+
461
+ .form-row {
462
+ display: grid;
463
+ grid-template-columns: 1fr 1fr;
464
+ gap: 1rem;
465
+ margin-bottom: 1.5rem;
466
+ }
467
+
468
+ @media (max-width: 600px) {
469
+ .form-row {
470
+ grid-template-columns: 1fr;
471
+ }
472
+ }
473
+
474
+ input, textarea, select {
475
+ width: 100%;
476
+ padding: 0.75rem;
477
+ border: 1px solid var(--c-neutral-300);
478
+ border-radius: var(--bor-radius-4);
479
+ font-family: var(--f-family);
480
+ }
481
+
482
+ tcloud-ui-input-container {
483
+ margin-bottom: 1.5rem;
484
+ }
485
+ `]
486
+ })
487
+ export class ComplexFormComponent {}
488
+ ```
489
+
490
+ ## Boas Práticas
491
+
492
+ 1. **Sempre use inputId**: Quando possível, forneça o atributo `inputId` para melhor acessibilidade
493
+ 2. **Posição apropriada**: Escolha a posição do label baseado no contexto:
494
+ - `top`: Padrão para inputs texto (email, senha, etc.)
495
+ - `left`: Ideal para checkboxes e radio buttons
496
+ - `right`: Menos comum, use com cuidado
497
+ - `bottom`: Raro, evite usar
498
+
499
+ 3. **Marque campos obrigatórios**: Use `required="true"` para indicar visualmente campos obrigatórios
500
+ 4. **Use fullWidth com moderação**: Ideal em formulários verticais mas pode quebrar layouts horizontais
501
+
502
+ ## Acessibilidade
503
+
504
+ - O componente suporta o atributo `for` no label quando `inputId` é fornecido
505
+ - Labels descritivos melhoram a usabilidade e acessibilidade
506
+ - Asterisco para campos obrigatórios melhora a compreensão
507
+
508
+ ## Responsividade
509
+
510
+ O componente é totalmente responsivo e se adapta a diferentes tamanhos de tela através do Flexbox.
511
+
512
+ ## Compatibilidade
513
+
514
+ - **Angular**: 16+
515
+ - **Browsers**: Todos os navegadores modernos
516
+ - **CSS Variables**: Utiliza variáveis CSS do sistema de design
517
+
518
+ ## Suporte
519
+
520
+ Para reportar problemas, sugestões ou criar pull requests, visite o repositório oficial do projeto.