@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,550 @@
1
+ # TCloud UI Linha Logo
2
+
3
+ Componente Angular standalone para exibir logo de linha de produtos TOTVS com dimensionamento automático e URL configurável. Renderiza imagens SVG de logos de linhas de produtos com resposta adaptativa.
4
+
5
+ ## Características
6
+
7
+ - ✅ **Logo responsivo** - Imagens SVG dinâmicas ajustadas ao container
8
+ - ✅ **URL configurável** - Aponta para AWS S3 da Ateleia por padrão
9
+ - ✅ **Standalone** - Componente independente sem dependências
10
+ - ✅ **Otimizado** - Apenas renderiza se `product` estiver preenchido
11
+ - ✅ **Nomeação automática** - Converte nome do produto para nome do arquivo
12
+ - ✅ **Alt text automático** - Acessibilidade garantida
13
+
14
+ ## Informações Técnicas
15
+
16
+ | Propriedade | Valor |
17
+ |------------|-------|
18
+ | **Dimensão** | 150px de largura (responsiva) |
19
+ | **Formato** | SVG |
20
+ | **URL Padrão** | `https://ateleia-email.s3-sa-east-1.amazonaws.com/` |
21
+ | **Template** | `logo-linha-{produto}.svg` |
22
+ | **Renderização** | Condicional (*ngIf product !== '') |
23
+
24
+ ## Instalação
25
+
26
+ O componente já está disponível no módulo `TCloudUiModule`:
27
+
28
+ ```typescript
29
+ import { TCloudUiModule } from 'projects/tcloud-ui/src/public-api';
30
+
31
+ @NgModule({
32
+ imports: [TCloudUiModule]
33
+ })
34
+ export class MyModule { }
35
+ ```
36
+
37
+ Ou importar direto como component standalone:
38
+
39
+ ```typescript
40
+ import { TCloudUiLinhaLogoComponent } from 'projects/tcloud-ui/src/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component';
41
+
42
+ @Component({
43
+ imports: [TCloudUiLinhaLogoComponent]
44
+ })
45
+ export class MyComponent { }
46
+ ```
47
+
48
+ ## Uso Básico
49
+
50
+ ### Exemplo Simples - Logo do Protheus
51
+
52
+ ```typescript
53
+ @Component({
54
+ selector: 'app-product-logo',
55
+ standalone: true,
56
+ imports: [TCloudUiLinhaLogoComponent],
57
+ template: `<tcloud-ui-linha-logo [product]="'protheus'"></tcloud-ui-linha-logo>`
58
+ })
59
+ export class ProductLogoComponent { }
60
+ ```
61
+
62
+ **Resultado HTML:**
63
+ ```html
64
+ <div class="tcloud-ui-linha-logo logo-product">
65
+ <img class="img-logo"
66
+ src="https://ateleia-email.s3-sa-east-1.amazonaws.com/logo-linha-protheus.svg"
67
+ alt="PROTHEUS">
68
+ </div>
69
+ ```
70
+
71
+ ### Exemplo com Propriedade Binária
72
+
73
+ ```typescript
74
+ @Component({
75
+ selector: 'app-my-component',
76
+ standalone: true,
77
+ imports: [CommonModule, TCloudUiLinhaLogoComponent],
78
+ template: `
79
+ <tcloud-ui-linha-logo [product]="selectedProduct"></tcloud-ui-linha-logo>
80
+ <button (click)="changeProduct('rm')">Mudar para RM</button>
81
+ `
82
+ })
83
+ export class MyComponent {
84
+ selectedProduct: string = 'protheus';
85
+
86
+ changeProduct(product: string) {
87
+ this.selectedProduct = product;
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### Exemplo com URL Customizada
93
+
94
+ ```typescript
95
+ @Component({
96
+ standalone: true,
97
+ imports: [TCloudUiLinhaLogoComponent],
98
+ template: `
99
+ <tcloud-ui-linha-logo
100
+ [product]="'fluig'"
101
+ [url]="'https://seu-servidor.com/logos/'">
102
+ </tcloud-ui-linha-logo>
103
+ `
104
+ })
105
+ export class CustomUrlComponent {
106
+ // Renderizará: https://seu-servidor.com/logos/logo-linha-fluig.svg
107
+ }
108
+ ```
109
+
110
+ ### Exemplo Avançado - Grid de Produtos
111
+
112
+ ```typescript
113
+ @Component({
114
+ selector: 'app-product-grid',
115
+ standalone: true,
116
+ imports: [CommonModule, TCloudUiLinhaLogoComponent],
117
+ template: `
118
+ <div class="product-grid">
119
+ <div class="product-item" *ngFor="let product of products">
120
+ <tcloud-ui-linha-logo
121
+ [product]="product"
122
+ (click)="selectProduct(product)">
123
+ </tcloud-ui-linha-logo>
124
+ <p class="product-label">{{ product | titlecase }}</p>
125
+ </div>
126
+ </div>
127
+ `,
128
+ styles: [`
129
+ .product-grid {
130
+ display: grid;
131
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
132
+ gap: 20px;
133
+ padding: 20px;
134
+ }
135
+ .product-item {
136
+ text-align: center;
137
+ cursor: pointer;
138
+ transition: transform 0.2s;
139
+ }
140
+ .product-item:hover {
141
+ transform: scale(1.05);
142
+ }
143
+ .product-label {
144
+ margin-top: 10px;
145
+ font-weight: 600;
146
+ color: #333;
147
+ }
148
+ `]
149
+ })
150
+ export class ProductGridComponent {
151
+ products = ['protheus', 'rm', 'fluig', 'datasul', 'consinco'];
152
+
153
+ selectProduct(product: string) {
154
+ console.log('Produto selecionado:', product);
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## API
160
+
161
+ ### Componente: `tcloud-ui-linha-logo`
162
+
163
+ #### Inputs
164
+
165
+ | Propriedade | Tipo | Padrão | Obrigatório | Descrição |
166
+ |-----------|------|--------|-----------|-----------|
167
+ | `product` | `string` | `''` | ❌ | Nome do produto (ex: 'protheus', 'rm') |
168
+ | `url` | `string` | AWS S3 Ateleia | ❌ | URL base para os logos SVG |
169
+
170
+ #### Propriedades Internas (somente leitura)
171
+
172
+ | Propriedade | Tipo | Descrição |
173
+ |-----------|------|-----------|
174
+ | `logo_name` | `string` | Nome do arquivo gerado (ex: 'logo-linha-protheus') |
175
+ | `product_name` | `string` | Nome do produto formatado (utilizado internamente) |
176
+ | `alt_product_name` | `string` | Nome em UPPERCASE para atributo alt da imagem |
177
+ | `font_size` | `string` | Tamanho da fonte (legado, não utilizado na renderização atual) |
178
+
179
+ ## Lógica de Processamento
180
+
181
+ ### 1. Transformação de Nome do Produto
182
+
183
+ O componente converte o nome do produto para o nome do arquivo:
184
+
185
+ ```typescript
186
+ // Entrada e transformação
187
+ 'protheus' → 'logo-linha-protheus'
188
+ 'rm' → 'logo-linha-rm'
189
+ 'fluig' → 'logo-linha-fluig'
190
+ 'datasul_grande' → 'logo-linha-datasul-grande' // underscores → hífens
191
+ 'RM' → 'logo-linha-rm' // maiúsculas → minúsculas
192
+ ```
193
+
194
+ **Método:** `getLogoName()`
195
+ - Substitui `_` por `-`
196
+ - Converte para minúsculas
197
+ - Prepend `logo-linha-`
198
+
199
+ ```typescript
200
+ export class MyComponent {
201
+ product: string = 'rm';
202
+ customUrl: string = 'https://seu-dominio.com/logos/';
203
+ }
204
+ ```
205
+
206
+ ```html
207
+ <tcloud-ui-linha-logo
208
+ [product]="product"
209
+ [url]="customUrl">
210
+ </tcloud-ui-linha-logo>
211
+ ```
212
+
213
+ ### Exemplo Avançado - Múltiplos Produtos
214
+
215
+ ```typescript
216
+ export class MyComponent {
217
+ produtos: string[] = [
218
+ 'protheus',
219
+ 'rm',
220
+ 'fluig',
221
+ 'datasul',
222
+ 'consinco',
223
+ 'winthor',
224
+ 'taf',
225
+ 'tss',
226
+ 'license'
227
+ ];
228
+
229
+ customUrl: string = 'https://ateleia-email.s3-sa-east-1.amazonaws.com/';
230
+ }
231
+ ```
232
+
233
+ ```html
234
+ <div class="logo-grid">
235
+ <tcloud-ui-linha-logo
236
+ *ngFor="let produto of produtos"
237
+ [product]="produto"
238
+ [url]="customUrl">
239
+ </tcloud-ui-linha-logo>
240
+ </div>
241
+ ```
242
+
243
+ ## API
244
+
245
+ ### Componente: `tcloud-ui-linha-logo`
246
+
247
+ #### Inputs
248
+
249
+ | Propriedade | Tipo | Padrão | Descrição |
250
+ |-----------|------|--------|-----------|
251
+ | `product` | `string` | `''` | Nome do produto (obrigatório) |
252
+ | `url` | `string` | AWS S3 padrão | URL base para as imagens SVG |
253
+
254
+ #### Saídas
255
+
256
+ Nenhuma saída de evento.
257
+
258
+ #### Propriedades Internas
259
+
260
+ | Propriedade | Tipo | Descrição |
261
+ |-----------|------|-----------|
262
+ | `logo_name` | `string` | Nome do arquivo do logo gerado |
263
+ | `product_name` | `string` | Nome do produto formatado |
264
+ | `alt_product_name` | `string` | Nome do produto em UPPERCASE para alt text |
265
+ | `font_size` | `string` | Tamanho da fonte calculado dinamicamente |
266
+
267
+ ## Comportamento Detalhado
268
+
269
+ ### Nomeação de Logo
270
+
271
+ O componente converte o `product` para o nome do arquivo:
272
+
273
+ ```typescript
274
+ // Entrada: 'protheus'
275
+ // Nome gerado: 'logo-linha-protheus'
276
+ // URL final: '{url}logo-linha-protheus.svg'
277
+ ```
278
+
279
+ Conversões realizadas:
280
+ - Underscores (`_`) são convertidos para hífens (`-`)
281
+ - Tudo é convertido para minúsculas
282
+ - Prefixo `logo-linha-` é adicionado
283
+
284
+ ### Dimensionamento Automático
285
+
286
+ O `font_size` é calculado baseado no comprimento do nome do produto:
287
+
288
+ | Comprimento | Tamanho | Cálculo |
289
+ |------------|--------|---------|
290
+ | ≤ 8 caracteres | 28px | Tamanho padrão |
291
+ | 9-12 caracteres | 28px | Tamanho padrão |
292
+ | 13-15 caracteres | ~19-24px | 28 - (28 * (5 + len*2) / 100) |
293
+ | > 15 caracteres | ~16-22px | 28 - (28 * (10 + len*2) / 100) |
294
+
295
+ Exemplo:
296
+ ```
297
+ - 'protheus' (8 chars) → 28px
298
+ - 'fluig' (5 chars) → 28px
299
+ - 'consinco' (8 chars) → 28px
300
+ - 'winthor_super_mega_produto' (26 chars) → reduzido dinamicamente
301
+ ```
302
+
303
+ ### Estrutura HTML Renderizada
304
+
305
+ ```html
306
+ <div class="tcloud-ui-linha-logo logo-product">
307
+ <img class="img-logo"
308
+ data-name-image="logo-linha-protheus"
309
+ src="https://ateleia-email.s3-sa-east-1.amazonaws.com/logo-linha-protheus.svg"
310
+ alt="PROTHEUS">
311
+ </div>
312
+ ```
313
+
314
+ ## Exemplos Práticos
315
+
316
+ ### 1. Seletor de Produtos com Logo
317
+
318
+ ```typescript
319
+ @Component({
320
+ selector: 'app-product-selector',
321
+ standalone: true,
322
+ imports: [CommonModule, TCloudUiLinhaLogoComponent],
323
+ template: `
324
+ <div class="product-selector">
325
+ <h2>Escolha um Produto</h2>
326
+ <div class="products-grid">
327
+ <div class="product-card" *ngFor="let prod of availableProducts">
328
+ <tcloud-ui-linha-logo [product]="prod"></tcloud-ui-linha-logo>
329
+ <p class="product-name">{{ prod | titlecase }}</p>
330
+ <button (click)="selectProduct(prod)">Selecionar</button>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ `
335
+ })
336
+ export class ProductSelectorComponent {
337
+ availableProducts = ['protheus', 'rm', 'fluig', 'datasul'];
338
+
339
+ selectProduct(product: string) {
340
+ console.log('Produto selecionado:', product);
341
+ }
342
+ }
343
+ ```
344
+
345
+ ### 2. Logo em Header com Branding
346
+
347
+ ```typescript
348
+ @Component({
349
+ selector: 'app-header',
350
+ standalone: true,
351
+ imports: [CommonModule, TCloudUiLinhaLogoComponent],
352
+ template: `
353
+ <header class="app-header">
354
+ <div class="logo-section">
355
+ <img src="/assets/totvs-logo.svg" alt="TOTVS" class="main-logo">
356
+ <div class="product-line">
357
+ <span class="line-text">Linha</span>
358
+ <tcloud-ui-linha-logo [product]="currentProduct"></tcloud-ui-linha-logo>
359
+ </div>
360
+ </div>
361
+ <nav class="navigation">
362
+ <!-- Navegação aqui -->
363
+ </nav>
364
+ </header>
365
+ `,
366
+ styles: [`
367
+ .app-header {
368
+ display: flex;
369
+ justify-content: space-between;
370
+ align-items: center;
371
+ padding: 16px;
372
+ border-bottom: 1px solid #ddd;
373
+ }
374
+ .logo-section {
375
+ display: flex;
376
+ align-items: center;
377
+ gap: 24px;
378
+ }
379
+ .main-logo {
380
+ height: 40px;
381
+ }
382
+ .product-line {
383
+ display: flex;
384
+ align-items: center;
385
+ gap: 12px;
386
+ }
387
+ `]
388
+ })
389
+ export class HeaderComponent {
390
+ currentProduct = 'protheus';
391
+ }
392
+ ```
393
+
394
+ ### 3. Tooltip com Logo
395
+
396
+ ```typescript
397
+ @Component({
398
+ selector: 'app-logo-tooltip',
399
+ standalone: true,
400
+ imports: [CommonModule, TCloudUiLinhaLogoComponent, NgFor],
401
+ template: `
402
+ <div class="logo-display">
403
+ <tcloud-ui-linha-logo
404
+ [product]="selectedProduct"
405
+ (mouseenter)="showInfo = true"
406
+ (mouseleave)="showInfo = false">
407
+ </tcloud-ui-linha-logo>
408
+
409
+ <div class="tooltip" *ngIf="showInfo">
410
+ <p><strong>Produto:</strong> {{ selectedProduct | uppercase }}</p>
411
+ <p><strong>URL:</strong> {{ baseUrl }}logo-linha-{{ selectedProduct }}.svg</p>
412
+ </div>
413
+ </div>
414
+ `,
415
+ styles: [`
416
+ .logo-display {
417
+ position: relative;
418
+ display: inline-block;
419
+ }
420
+ .tooltip {
421
+ position: absolute;
422
+ bottom: 100%;
423
+ left: 0;
424
+ background: #333;
425
+ color: white;
426
+ padding: 12px;
427
+ border-radius: 4px;
428
+ white-space: nowrap;
429
+ font-size: 12px;
430
+ }
431
+ `]
432
+ })
433
+ export class LogoTooltipComponent {
434
+ selectedProduct = 'fluig';
435
+ baseUrl = 'https://ateleia-email.s3-sa-east-1.amazonaws.com/';
436
+ showInfo = false;
437
+ }
438
+ ```
439
+
440
+ ## Produtos Suportados
441
+
442
+ Os seguintes produtos têm logos disponíveis na AWS S3:
443
+
444
+ - ✅ `protheus` - Protheus
445
+ - ✅ `rm` - RM
446
+ - ✅ `fluig` - Fluig
447
+ - ✅ `datasul` - Datasul
448
+ - ✅ `consinco` - Consinco
449
+ - ✅ `winthor` - Winthor
450
+ - ✅ `taf` - TAF (Tax)
451
+ - ✅ `tss` - TSS
452
+ - ✅ `license` - License Manager
453
+
454
+ ## Customização de URL
455
+
456
+ Se você quiser hospedar os logos em seu próprio servidor:
457
+
458
+ ```typescript
459
+ const customBaseUrl = 'https://seu-servidor.com/logos/';
460
+
461
+ @Component({
462
+ template: `
463
+ <tcloud-ui-linha-logo
464
+ product="protheus"
465
+ [url]="customBaseUrl">
466
+ </tcloud-ui-linha-logo>
467
+ `
468
+ })
469
+ export class MyComponent {
470
+ customBaseUrl = customBaseUrl;
471
+ }
472
+ ```
473
+
474
+ **Importante:** Os arquivos SVG devem estar nomeados como:
475
+ - `logo-linha-{produto}.svg`
476
+
477
+ Exemplo: `logo-linha-protheus.svg`, `logo-linha-rm.svg`, etc.
478
+
479
+ ## Tratamento de Erros
480
+
481
+ ### Produto Vazio
482
+
483
+ Se `product` estiver vazio, o componente não renderiza nada:
484
+
485
+ ```html
486
+ <!-- Isso não renderiza nada -->
487
+ <tcloud-ui-linha-logo product=""></tcloud-ui-linha-logo>
488
+
489
+ <!-- Valide antes de usar -->
490
+ <tcloud-ui-linha-logo *ngIf="product" [product]="product"></tcloud-ui-linha-logo>
491
+ ```
492
+
493
+ ### Arquivo Não Encontrado
494
+
495
+ Se o arquivo SVG não existir, o navegador exibirá um ícone de erro:
496
+
497
+ ```typescript
498
+ // Certifique-se de que os arquivos existem em:
499
+ // {url}logo-linha-{produto}.svg
500
+ ```
501
+
502
+ ## Boas Práticas
503
+
504
+ 1. **Sempre trate produtos vazios** com `*ngIf`
505
+ 2. **Use URLs HTTPS** para evitar avisos de segurança
506
+ 3. **Mantenha nomes de produtos consistentes** (minúsculas, sem espaços)
507
+ 4. **Armazene em cache** se usar URL customizada
508
+ 5. **Forneça alt text** válido (feito automaticamente)
509
+
510
+ ## Styling
511
+
512
+ Para customizar a aparência:
513
+
514
+ ```scss
515
+ // Estilo global
516
+ .tcloud-ui-linha-logo {
517
+ &.logo-product {
518
+ .img-logo {
519
+ max-width: 100%;
520
+ height: auto;
521
+ display: block;
522
+ }
523
+ }
524
+ }
525
+
526
+ // Ou no escopo do componente
527
+ :host {
528
+ --logo-max-width: 200px;
529
+ --logo-height: auto;
530
+ }
531
+ ```
532
+
533
+ ## Troubleshooting
534
+
535
+ | Problema | Solução |
536
+ |----------|---------|
537
+ | Logo não aparece | Verifique se `product` não está vazio |
538
+ | URL 404 | Confirme que o arquivo SVG existe no caminho correto |
539
+ | Logo muito pequeno/grande | Ajuste via CSS ou verifique o comprimento do nome |
540
+ | Imagem quebrada | Verifique a URL base e a conexão com a internet |
541
+
542
+ ## Versionamento
543
+
544
+ | Versão | Data | Mudanças |
545
+ |--------|------|----------|
546
+ | 1.0.0 | 2026-02-12 | Versão inicial com suporte a logos de linha |
547
+
548
+ ## Licença
549
+
550
+ Parte do TCloud UI Component Library
@@ -0,0 +1,88 @@
1
+ # Loading
2
+
3
+ ## Características
4
+ - Indicador de carregamento standalone com suportes: ícone isolado, inline e overlay (parcial ou full-screen).
5
+ - Modo `mode` auxilia conveniência: `icon` ativa `onlyIcon`; `inline` ativa `onlyInline`.
6
+ - Suporta múltiplos tipos de animação através da propriedade `gif`: `'circle'` (spinner) ou `'totvs'` (logo TOTVS animado).
7
+ - Permite sobrepor container relativo ou tela inteira (`full=true`).
8
+ - Componentes internos: `tcloud-ui-circle` (default) e `tcloud-ui-totvs` disponíveis.
9
+ - Independente de z-index ou posicionamento, o overlay se ajusta ao contexto do container pai.
10
+
11
+ ## Instalação
12
+ ```ts
13
+ import { TCloudUiLoadingComponent } from 'projects/tcloud-ui/src/public-api';
14
+
15
+ @Component({
16
+ selector: 'app-example',
17
+ standalone: true,
18
+ imports: [TCloudUiLoadingComponent],
19
+ template: `<tcloud-ui-loading [loading]="true"></tcloud-ui-loading>`
20
+ })
21
+ export class ExampleComponent {}
22
+ ```
23
+
24
+ ## Propriedades (API)
25
+ ### Inputs
26
+ | Nome | Tipo | Descrição | Valor Default |
27
+ | --- | --- | --- | --- |
28
+ | gif | 'totvs' \| 'circle' | Define o tipo de animação exibida. `'circle'` = spinner circular; `'totvs'` = logo TOTVS animado. | 'circle' |
29
+ | mode | string | Conveniência: `'icon'` força `onlyIcon=true`; `'inline'` força `onlyInline=true`. | '' |
30
+ | onlyInline | boolean | Mostra loader inline (conteúdo compacto). | false |
31
+ | onlyIcon | boolean | Mostra apenas o ícone (mini). | false |
32
+ | full | boolean | Mostra overlay em tela cheia. | false |
33
+ | loading | boolean | Controla exibição do loader. | false |
34
+
35
+ ### Outputs
36
+ | Nome | Tipo de Evento | Descrição |
37
+ | --- | --- | --- |
38
+ | (não possui) | - | Componente não emite eventos. |
39
+
40
+ ## Exemplos de Uso
41
+ ### Uso Básico (overlay padrão)
42
+ ```html
43
+ <tcloud-ui-loading [loading]="loading"></tcloud-ui-loading>
44
+ <button type="button" (click)="loading = true">Start</button>
45
+ ```
46
+
47
+ ### Com animação TOTVS
48
+ ```html
49
+ <tcloud-ui-loading [loading]="true" [gif]="'totvs'"></tcloud-ui-loading>
50
+ ```
51
+
52
+ ### Ícone isolado
53
+ ```html
54
+ <tcloud-ui-loading [loading]="true" [onlyIcon]="true"></tcloud-ui-loading>
55
+ <!-- ou -->
56
+ <tcloud-ui-loading [loading]="true" mode="icon"></tcloud-ui-loading>
57
+ ```
58
+
59
+ ### Ícone isolado com TOTVS
60
+ ```html
61
+ <tcloud-ui-loading [loading]="true" [onlyIcon]="true" [gif]="'totvs'"></tcloud-ui-loading>
62
+ ```
63
+
64
+ ### Inline
65
+ ```html
66
+ <tcloud-ui-loading [loading]="true" [onlyInline]="true"></tcloud-ui-loading>
67
+ <!-- ou -->
68
+ <tcloud-ui-loading [loading]="true" mode="inline"></tcloud-ui-loading>
69
+ ```
70
+
71
+ ### Inline com TOTVS
72
+ ```html
73
+ <tcloud-ui-loading [loading]="true" [onlyInline]="true" [gif]="'totvs'"></tcloud-ui-loading>
74
+ ```
75
+
76
+ ### Full-screen
77
+ ```html
78
+ <tcloud-ui-loading [loading]="loadingFull" [full]="true"></tcloud-ui-loading>
79
+ <button type="button" (click)="loadingFull = true">Start full</button>
80
+ ```
81
+
82
+ ### Dentro de container relativo
83
+ ```html
84
+ <div style="position: relative; width: 200px; height: 120px;">
85
+ <tcloud-ui-loading [loading]="loadingRelative"></tcloud-ui-loading>
86
+ </div>
87
+ <button type="button" (click)="loadingRelative = true">Start</button>
88
+ ```