@semacode/cli 1.3.1 → 1.3.2

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