@semacode/cli 1.5.29 → 1.5.30

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 (85) hide show
  1. package/dist/comandos.js +36 -0
  2. package/dist/comandos.js.map +1 -1
  3. package/dist/guard.d.ts +35 -0
  4. package/dist/guard.js +164 -0
  5. package/dist/guard.js.map +1 -0
  6. package/exemplos/.prepack-generated +1 -0
  7. package/node_modules/@sema/gerador-css/package.json +14 -7
  8. package/node_modules/@sema/gerador-css/src/index.ts +605 -0
  9. package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
  10. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
  11. package/node_modules/@sema/gerador-dart/package.json +14 -7
  12. package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
  13. package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
  14. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
  15. package/node_modules/@sema/gerador-html/package.json +14 -7
  16. package/node_modules/@sema/gerador-html/src/index.ts +185 -0
  17. package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
  18. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
  19. package/node_modules/@sema/gerador-javascript/package.json +14 -7
  20. package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
  21. package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
  22. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
  23. package/node_modules/@sema/gerador-lua/package.json +14 -7
  24. package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
  25. package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
  26. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
  27. package/node_modules/@sema/gerador-python/package.json +14 -7
  28. package/node_modules/@sema/gerador-python/src/index.ts +850 -0
  29. package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
  30. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
  31. package/node_modules/@sema/gerador-typescript/package.json +14 -7
  32. package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
  33. package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
  34. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
  35. package/node_modules/@sema/nucleo/package.json +10 -7
  36. package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
  37. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
  38. package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
  39. package/node_modules/@sema/nucleo/src/index.ts +183 -0
  40. package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
  41. package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
  42. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
  43. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
  44. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
  45. package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
  46. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
  47. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
  48. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
  49. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
  50. package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
  51. package/node_modules/@sema/nucleo/tsconfig.json +9 -0
  52. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
  53. package/node_modules/@sema/padroes/package.json +10 -7
  54. package/node_modules/@sema/padroes/src/index.ts +382 -0
  55. package/node_modules/@sema/padroes/tsconfig.json +9 -0
  56. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
  57. package/package.json +74 -75
  58. package/AGENTS.md +0 -294
  59. package/AGENT_CONTEXT_PACK.json +0 -164
  60. package/LICENSE +0 -22
  61. package/SEMA_BRIEF.curto.txt +0 -11
  62. package/SEMA_BRIEF.md +0 -511
  63. package/SEMA_BRIEF.micro.txt +0 -9
  64. package/SEMA_INDEX.json +0 -7588
  65. package/docs/AGENT_STARTER.md +0 -109
  66. package/docs/api.md +0 -82
  67. package/docs/cli.md +0 -175
  68. package/docs/como-ensinar-a-sema-para-ia.md +0 -155
  69. package/docs/deploy.md +0 -93
  70. package/docs/documentacao.md +0 -88
  71. package/docs/env.md +0 -105
  72. package/docs/extensao-vscode.md +0 -53
  73. package/docs/fluxo-pratico-ia-sema.md +0 -187
  74. package/docs/instalacao-e-primeiro-uso.md +0 -134
  75. package/docs/integracao-com-ia.md +0 -110
  76. package/docs/mcp.md +0 -292
  77. package/docs/pagamento-ponta-a-ponta.md +0 -171
  78. package/docs/persistencia-vendor-first.md +0 -151
  79. package/docs/prompt-base-ia-sema.md +0 -111
  80. package/docs/repositories.md +0 -54
  81. package/docs/rollback.md +0 -49
  82. package/docs/seguranca.md +0 -126
  83. package/docs/sintaxe.md +0 -218
  84. package/llms-full.txt +0 -35
  85. package/llms.txt +0 -18
@@ -0,0 +1,605 @@
1
+ // @ts-nocheck
2
+ import type { IrModulo } from "@sema/nucleo";
3
+ import {
4
+ normalizarNomeModulo,
5
+ normalizarNomeParaSimbolo,
6
+ type ArquivoGerado,
7
+ } from "@sema/padroes";
8
+
9
+ function gerarEstilosEntity(entity) {
10
+ const nome = normalizarNomeParaSimbolo(entity.nome);
11
+ return `.sema-entity[data-entity="${entity.nome}"] {
12
+ border-left: 3px solid var(--sema-cor-entidade);
13
+ }
14
+ `;
15
+ }
16
+
17
+ function gerarEstilosTask(task) {
18
+ const erros = Object.keys(task.errors);
19
+ const erroEstilos = erros.map((nomeErro) => `.sema-erro[data-erro="${nomeErro}"] {
20
+ display: block;
21
+ color: var(--sema-cor-erro-texto);
22
+ background: var(--sema-cor-erro-fundo);
23
+ border-left: 3px solid var(--sema-cor-erro);
24
+ padding: 0.5rem 0.75rem;
25
+ margin-top: 0.5rem;
26
+ border-radius: var(--sema-raio);
27
+ font-size: 0.875rem;
28
+ animation: sema-surgir 0.3s ease;
29
+ }
30
+ `).join("\n");
31
+ return erroEstilos;
32
+ }
33
+
34
+ function gerarEstilosState(state) {
35
+ const estilos = [];
36
+ for (const transicao of state.transicoes) {
37
+ estilos.push(`.sema-estado-origem:has(+ .sema-estado-destino) { font-weight: 600; }`);
38
+ }
39
+ return estilos.join("\n");
40
+ }
41
+
42
+ function gerarEstilosEnum(enumeracao) {
43
+ return enumeracao.valores.map((valor) => `.sema-select option[value="${valor}"] {
44
+ color: var(--sema-cor-texto);
45
+ }
46
+ `).join("");
47
+ }
48
+
49
+ export function gerarCss(modulo: IrModulo): ArquivoGerado[] {
50
+ const nomeBase = normalizarNomeModulo(modulo.nome).replace(/\./g, "_");
51
+
52
+ const entidades = modulo.entities.map(gerarEstilosEntity).join("\n");
53
+ const tasks = modulo.tasks.map(gerarEstilosTask).join("\n");
54
+ const enums = modulo.enums.map(gerarEstilosEnum).join("\n");
55
+
56
+ const css = `/* Arquivo gerado automaticamente pela Sema. */
57
+ /* Modulo de origem: ${modulo.nome} */
58
+
59
+ /* ========================================
60
+ Design System — Variaveis
61
+ ======================================== */
62
+
63
+ :root {
64
+ /* Cores principais */
65
+ --sema-cor-primaria: #6366f1;
66
+ --sema-cor-primaria-hover: #4f46e5;
67
+ --sema-cor-primaria-suave: #eef2ff;
68
+ --sema-cor-sucesso: #10b981;
69
+ --sema-cor-sucesso-fundo: #ecfdf5;
70
+ --sema-cor-erro: #ef4444;
71
+ --sema-cor-erro-texto: #991b1b;
72
+ --sema-cor-erro-fundo: #fef2f2;
73
+ --sema-cor-aviso: #f59e0b;
74
+ --sema-cor-info: #3b82f6;
75
+
76
+ /* Neutros */
77
+ --sema-cor-fundo: #fafafa;
78
+ --sema-cor-superficie: #ffffff;
79
+ --sema-cor-texto: #18181b;
80
+ --sema-cor-texto-secundario: #71717a;
81
+ --sema-cor-borda: #e4e4e7;
82
+ --sema-cor-borda-foco: #a5b4fc;
83
+ --sema-cor-entidade: #8b5cf6;
84
+
85
+ /* Tipografia */
86
+ --sema-fonte: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
87
+ --sema-fonte-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;
88
+ --sema-tamanho-base: 0.9375rem;
89
+ --sema-tamanho-titulo: 1.75rem;
90
+ --sema-tamanho-subtitulo: 1.25rem;
91
+ --sema-tamanho-pequeno: 0.8125rem;
92
+
93
+ /* Espacamento */
94
+ --sema-espacamento-xs: 0.25rem;
95
+ --sema-espacamento-sm: 0.5rem;
96
+ --sema-espacamento-md: 1rem;
97
+ --sema-espacamento-lg: 1.5rem;
98
+ --sema-espacamento-xl: 2rem;
99
+
100
+ /* Bordas e sombras */
101
+ --sema-raio: 0.5rem;
102
+ --sema-raio-lg: 0.75rem;
103
+ --sema-sombra: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
104
+ --sema-sombra-lg: 0 4px 12px rgba(0, 0, 0, 0.1);
105
+
106
+ /* Transicoes */
107
+ --sema-transicao: 150ms ease;
108
+ --sema-transicao-lenta: 300ms ease;
109
+ }
110
+
111
+ /* ========================================
112
+ Dark Mode
113
+ ======================================== */
114
+
115
+ @media (prefers-color-scheme: dark) {
116
+ :root {
117
+ --sema-cor-primaria: #818cf8;
118
+ --sema-cor-primaria-hover: #a5b4fc;
119
+ --sema-cor-primaria-suave: #1e1b4b;
120
+ --sema-cor-sucesso: #34d399;
121
+ --sema-cor-sucesso-fundo: #064e3b;
122
+ --sema-cor-erro: #f87171;
123
+ --sema-cor-erro-texto: #fecaca;
124
+ --sema-cor-erro-fundo: #450a0a;
125
+ --sema-cor-fundo: #09090b;
126
+ --sema-cor-superficie: #18181b;
127
+ --sema-cor-texto: #fafafa;
128
+ --sema-cor-texto-secundario: #a1a1aa;
129
+ --sema-cor-borda: #3f3f46;
130
+ --sema-cor-borda-foco: #6366f1;
131
+ --sema-cor-entidade: #a78bfa;
132
+ }
133
+ }
134
+
135
+ /* ========================================
136
+ Base
137
+ ======================================== */
138
+
139
+ *, *::before, *::after {
140
+ box-sizing: border-box;
141
+ margin: 0;
142
+ padding: 0;
143
+ }
144
+
145
+ body {
146
+ font-family: var(--sema-fonte);
147
+ font-size: var(--sema-tamanho-base);
148
+ line-height: 1.6;
149
+ color: var(--sema-cor-texto);
150
+ background-color: var(--sema-cor-fundo);
151
+ -webkit-font-smoothing: antialiased;
152
+ }
153
+
154
+ /* ========================================
155
+ Layout
156
+ ======================================== */
157
+
158
+ .sema-header {
159
+ background: var(--sema-cor-superficie);
160
+ border-bottom: 1px solid var(--sema-cor-borda);
161
+ padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
162
+ text-align: center;
163
+ }
164
+
165
+ .sema-header h1 {
166
+ font-size: var(--sema-tamanho-titulo);
167
+ font-weight: 700;
168
+ color: var(--sema-cor-primaria);
169
+ letter-spacing: -0.02em;
170
+ }
171
+
172
+ .sema-subtitulo {
173
+ color: var(--sema-cor-texto-secundario);
174
+ font-size: var(--sema-tamanho-pequeno);
175
+ margin-top: var(--sema-espacamento-xs);
176
+ }
177
+
178
+ .sema-main {
179
+ max-width: 64rem;
180
+ margin: 0 auto;
181
+ padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
182
+ display: flex;
183
+ flex-direction: column;
184
+ gap: var(--sema-espacamento-lg);
185
+ }
186
+
187
+ .sema-footer {
188
+ text-align: center;
189
+ padding: var(--sema-espacamento-lg);
190
+ color: var(--sema-cor-texto-secundario);
191
+ font-size: var(--sema-tamanho-pequeno);
192
+ border-top: 1px solid var(--sema-cor-borda);
193
+ }
194
+
195
+ .sema-footer code {
196
+ font-family: var(--sema-fonte-mono);
197
+ background: var(--sema-cor-primaria-suave);
198
+ padding: 0.125rem 0.375rem;
199
+ border-radius: 0.25rem;
200
+ font-size: 0.8125rem;
201
+ }
202
+
203
+ /* ========================================
204
+ Entities
205
+ ======================================== */
206
+
207
+ .sema-entity,
208
+ .sema-task,
209
+ .sema-enum,
210
+ .sema-state,
211
+ .sema-flow,
212
+ .sema-route {
213
+ background: var(--sema-cor-superficie);
214
+ border: 1px solid var(--sema-cor-borda);
215
+ border-radius: var(--sema-raio-lg);
216
+ padding: var(--sema-espacamento-lg);
217
+ box-shadow: var(--sema-sombra);
218
+ transition: box-shadow var(--sema-transicao);
219
+ }
220
+
221
+ .sema-entity:hover,
222
+ .sema-task:hover,
223
+ .sema-route:hover {
224
+ box-shadow: var(--sema-sombra-lg);
225
+ }
226
+
227
+ .sema-entity h3,
228
+ .sema-task h3,
229
+ .sema-enum h3,
230
+ .sema-state h3,
231
+ .sema-flow h3,
232
+ .sema-route h3 {
233
+ font-size: var(--sema-tamanho-subtitulo);
234
+ font-weight: 600;
235
+ margin-bottom: var(--sema-espacamento-md);
236
+ color: var(--sema-cor-texto);
237
+ }
238
+
239
+ /* ========================================
240
+ Tabelas de Entity
241
+ ======================================== */
242
+
243
+ .sema-tabela {
244
+ width: 100%;
245
+ border-collapse: collapse;
246
+ font-size: var(--sema-tamanho-pequeno);
247
+ }
248
+
249
+ .sema-tabela th {
250
+ text-align: left;
251
+ padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
252
+ background: var(--sema-cor-primaria-suave);
253
+ border-bottom: 2px solid var(--sema-cor-borda);
254
+ font-weight: 600;
255
+ white-space: nowrap;
256
+ }
257
+
258
+ .sema-tabela th small {
259
+ color: var(--sema-cor-texto-secundario);
260
+ font-weight: 400;
261
+ margin-left: 0.25rem;
262
+ }
263
+
264
+ .sema-tabela td {
265
+ padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
266
+ border-bottom: 1px solid var(--sema-cor-borda);
267
+ color: var(--sema-cor-texto-secundario);
268
+ }
269
+
270
+ /* ========================================
271
+ Formularios de Task
272
+ ======================================== */
273
+
274
+ .sema-formulario fieldset {
275
+ border: 1px solid var(--sema-cor-borda);
276
+ border-radius: var(--sema-raio);
277
+ padding: var(--sema-espacamento-md);
278
+ margin-bottom: var(--sema-espacamento-md);
279
+ }
280
+
281
+ .sema-formulario legend {
282
+ font-weight: 600;
283
+ font-size: var(--sema-tamanho-pequeno);
284
+ color: var(--sema-cor-texto-secundario);
285
+ padding: 0 var(--sema-espacamento-xs);
286
+ text-transform: uppercase;
287
+ letter-spacing: 0.05em;
288
+ }
289
+
290
+ .sema-campo {
291
+ margin-bottom: var(--sema-espacamento-md);
292
+ }
293
+
294
+ .sema-campo label {
295
+ display: block;
296
+ font-weight: 500;
297
+ font-size: var(--sema-tamanho-pequeno);
298
+ margin-bottom: var(--sema-espacamento-xs);
299
+ color: var(--sema-cor-texto);
300
+ }
301
+
302
+ .sema-obrigatorio {
303
+ color: var(--sema-cor-erro);
304
+ }
305
+
306
+ .sema-campo input[type="text"],
307
+ .sema-campo input[type="number"],
308
+ .sema-campo input[type="email"],
309
+ .sema-campo input[type="url"],
310
+ .sema-campo input[type="date"],
311
+ .sema-campo input[type="datetime-local"],
312
+ .sema-campo textarea {
313
+ width: 100%;
314
+ padding: 0.5rem 0.75rem;
315
+ font-family: var(--sema-fonte);
316
+ font-size: var(--sema-tamanho-base);
317
+ color: var(--sema-cor-texto);
318
+ background: var(--sema-cor-fundo);
319
+ border: 1px solid var(--sema-cor-borda);
320
+ border-radius: var(--sema-raio);
321
+ outline: none;
322
+ transition: border-color var(--sema-transicao), box-shadow var(--sema-transicao);
323
+ }
324
+
325
+ .sema-campo input:focus,
326
+ .sema-campo textarea:focus {
327
+ border-color: var(--sema-cor-borda-foco);
328
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
329
+ }
330
+
331
+ .sema-campo textarea {
332
+ min-height: 5rem;
333
+ resize: vertical;
334
+ }
335
+
336
+ .sema-campo-checkbox label {
337
+ display: flex;
338
+ align-items: center;
339
+ gap: var(--sema-espacamento-sm);
340
+ cursor: pointer;
341
+ }
342
+
343
+ .sema-campo-checkbox input[type="checkbox"] {
344
+ width: 1.125rem;
345
+ height: 1.125rem;
346
+ accent-color: var(--sema-cor-primaria);
347
+ }
348
+
349
+ /* ========================================
350
+ Botoes
351
+ ======================================== */
352
+
353
+ .sema-botao {
354
+ display: inline-flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ padding: 0.625rem 1.25rem;
358
+ font-family: var(--sema-fonte);
359
+ font-size: var(--sema-tamanho-base);
360
+ font-weight: 600;
361
+ color: #fff;
362
+ background: var(--sema-cor-primaria);
363
+ border: none;
364
+ border-radius: var(--sema-raio);
365
+ cursor: pointer;
366
+ transition: background var(--sema-transicao), transform var(--sema-transicao);
367
+ }
368
+
369
+ .sema-botao:hover {
370
+ background: var(--sema-cor-primaria-hover);
371
+ transform: translateY(-1px);
372
+ }
373
+
374
+ .sema-botao:active {
375
+ transform: translateY(0);
376
+ }
377
+
378
+ /* ========================================
379
+ Erros
380
+ ======================================== */
381
+
382
+ .sema-erros {
383
+ margin-top: var(--sema-espacamento-sm);
384
+ }
385
+
386
+ .sema-erro[hidden] {
387
+ display: none;
388
+ }
389
+
390
+ /* ========================================
391
+ Saida
392
+ ======================================== */
393
+
394
+ .sema-saida {
395
+ margin-top: var(--sema-espacamento-md);
396
+ padding: var(--sema-espacamento-md);
397
+ background: var(--sema-cor-sucesso-fundo);
398
+ border: 1px solid var(--sema-cor-sucesso);
399
+ border-radius: var(--sema-raio);
400
+ }
401
+
402
+ .sema-saida[hidden] {
403
+ display: none;
404
+ }
405
+
406
+ .sema-saida h4 {
407
+ font-size: var(--sema-tamanho-pequeno);
408
+ font-weight: 600;
409
+ text-transform: uppercase;
410
+ letter-spacing: 0.05em;
411
+ color: var(--sema-cor-sucesso);
412
+ margin-bottom: var(--sema-espacamento-sm);
413
+ }
414
+
415
+ .sema-campo-saida {
416
+ padding: var(--sema-espacamento-xs) 0;
417
+ font-size: var(--sema-tamanho-pequeno);
418
+ }
419
+
420
+ /* ========================================
421
+ Selects (Enums)
422
+ ======================================== */
423
+
424
+ .sema-select {
425
+ width: 100%;
426
+ padding: 0.5rem 0.75rem;
427
+ font-family: var(--sema-fonte);
428
+ font-size: var(--sema-tamanho-base);
429
+ color: var(--sema-cor-texto);
430
+ background: var(--sema-cor-fundo);
431
+ border: 1px solid var(--sema-cor-borda);
432
+ border-radius: var(--sema-raio);
433
+ outline: none;
434
+ transition: border-color var(--sema-transicao);
435
+ }
436
+
437
+ .sema-select:focus {
438
+ border-color: var(--sema-cor-borda-foco);
439
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
440
+ }
441
+
442
+ /* ========================================
443
+ States
444
+ ======================================== */
445
+
446
+ .sema-state {
447
+ border-left: 3px solid var(--sema-cor-aviso);
448
+ }
449
+
450
+ .sema-transicoes {
451
+ list-style: none;
452
+ padding: 0;
453
+ }
454
+
455
+ .sema-transicoes li {
456
+ padding: var(--sema-espacamento-sm) 0;
457
+ border-bottom: 1px solid var(--sema-cor-borda);
458
+ font-size: var(--sema-tamanho-pequeno);
459
+ }
460
+
461
+ .sema-transicoes li:last-child {
462
+ border-bottom: none;
463
+ }
464
+
465
+ .sema-estado-origem {
466
+ font-weight: 600;
467
+ color: var(--sema-cor-texto);
468
+ }
469
+
470
+ .sema-estado-destino {
471
+ color: var(--sema-cor-primaria);
472
+ font-weight: 600;
473
+ }
474
+
475
+ /* ========================================
476
+ Flows
477
+ ======================================== */
478
+
479
+ .sema-flow {
480
+ border-left: 3px solid var(--sema-cor-info);
481
+ }
482
+
483
+ .sema-etapas {
484
+ padding-left: var(--sema-espacamento-lg);
485
+ counter-reset: etapa;
486
+ }
487
+
488
+ .sema-etapas li {
489
+ padding: var(--sema-espacamento-sm) 0;
490
+ font-size: var(--sema-tamanho-pequeno);
491
+ }
492
+
493
+ .sema-etapa strong {
494
+ color: var(--sema-cor-primaria);
495
+ }
496
+
497
+ /* ========================================
498
+ Routes
499
+ ======================================== */
500
+
501
+ .sema-route {
502
+ border-left: 3px solid var(--sema-cor-sucesso);
503
+ }
504
+
505
+ .sema-route-detalhe {
506
+ display: flex;
507
+ align-items: center;
508
+ gap: var(--sema-espacamento-sm);
509
+ flex-wrap: wrap;
510
+ margin-bottom: var(--sema-espacamento-sm);
511
+ }
512
+
513
+ .sema-route-metodo {
514
+ display: inline-block;
515
+ padding: 0.125rem 0.5rem;
516
+ font-family: var(--sema-fonte-mono);
517
+ font-size: var(--sema-tamanho-pequeno);
518
+ font-weight: 700;
519
+ color: #fff;
520
+ background: var(--sema-cor-sucesso);
521
+ border-radius: 0.25rem;
522
+ text-transform: uppercase;
523
+ }
524
+
525
+ .sema-route-caminho {
526
+ font-family: var(--sema-fonte-mono);
527
+ font-size: var(--sema-tamanho-pequeno);
528
+ color: var(--sema-cor-texto);
529
+ }
530
+
531
+ .sema-route-task {
532
+ font-size: var(--sema-tamanho-pequeno);
533
+ color: var(--sema-cor-texto-secundario);
534
+ }
535
+
536
+ .sema-route-io {
537
+ margin-top: var(--sema-espacamento-sm);
538
+ font-size: var(--sema-tamanho-pequeno);
539
+ }
540
+
541
+ .sema-route-io summary {
542
+ cursor: pointer;
543
+ font-weight: 500;
544
+ color: var(--sema-cor-texto-secundario);
545
+ }
546
+
547
+ .sema-route-io ul {
548
+ padding-left: var(--sema-espacamento-lg);
549
+ margin-top: var(--sema-espacamento-xs);
550
+ }
551
+
552
+ /* ========================================
553
+ Animacoes
554
+ ======================================== */
555
+
556
+ @keyframes sema-surgir {
557
+ from {
558
+ opacity: 0;
559
+ transform: translateY(-4px);
560
+ }
561
+ to {
562
+ opacity: 1;
563
+ transform: translateY(0);
564
+ }
565
+ }
566
+
567
+ /* ========================================
568
+ Responsividade
569
+ ======================================== */
570
+
571
+ @media (max-width: 640px) {
572
+ .sema-main {
573
+ padding: var(--sema-espacamento-md);
574
+ }
575
+
576
+ .sema-header {
577
+ padding: var(--sema-espacamento-lg) var(--sema-espacamento-md);
578
+ }
579
+
580
+ .sema-header h1 {
581
+ font-size: 1.375rem;
582
+ }
583
+
584
+ .sema-tabela {
585
+ display: block;
586
+ overflow-x: auto;
587
+ }
588
+
589
+ .sema-route-detalhe {
590
+ flex-direction: column;
591
+ align-items: flex-start;
592
+ }
593
+ }
594
+
595
+ /* ========================================
596
+ Estilos especificos do modulo
597
+ ======================================== */
598
+
599
+ ${entidades}
600
+ ${tasks}
601
+ ${enums}
602
+ `;
603
+
604
+ return [{ caminhoRelativo: `${nomeBase}.css`, conteudo: css }];
605
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "composite": true,
5
+ "rootDir": "src",
6
+ "outDir": "dist"
7
+ },
8
+ "references": [
9
+ { "path": "../nucleo" },
10
+ { "path": "../padroes" }
11
+ ],
12
+ "include": ["src/**/*"]
13
+ }