@semacode/cli 2.3.0 → 3.0.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 (267) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +112 -41
  3. package/dist/agentContextPack.js +14 -10
  4. package/dist/agentEntryPoints.d.ts +5 -0
  5. package/dist/agentEntryPoints.js +102 -91
  6. package/dist/angular-consumer-standalone.d.ts +3 -1
  7. package/dist/angular-consumer-standalone.js +12 -8
  8. package/dist/bin.d.ts +6 -0
  9. package/dist/bin.js +130 -0
  10. package/dist/cliArgs.js +4 -4
  11. package/dist/cliControlError.d.ts +12 -0
  12. package/dist/cliControlError.js +47 -0
  13. package/dist/cliGrammar.d.ts +11 -0
  14. package/dist/cliGrammar.js +551 -0
  15. package/dist/cliHelp.d.ts +13 -0
  16. package/dist/cliHelp.js +19 -0
  17. package/dist/cliHelpTexto.d.ts +3 -0
  18. package/dist/cliHelpTexto.js +168 -0
  19. package/dist/cliRuntime.d.ts +2 -0
  20. package/dist/cliRuntime.js +31 -0
  21. package/dist/comandos.js +9 -22
  22. package/dist/contexto.js +5 -5
  23. package/dist/dev/index.d.ts +1 -0
  24. package/dist/dev/index.js +51 -9
  25. package/dist/discovery/catalog.js +3 -3
  26. package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
  27. package/dist/distribuicao/filesystemGlobal.js +701 -0
  28. package/dist/distribuicao/index.d.ts +7 -0
  29. package/dist/distribuicao/index.js +227 -0
  30. package/dist/distribuicao/launcherGlobal.d.ts +53 -0
  31. package/dist/distribuicao/launcherGlobal.js +643 -0
  32. package/dist/distribuicao/launcherWindows.d.ts +28 -0
  33. package/dist/distribuicao/launcherWindows.js +326 -0
  34. package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
  35. package/dist/distribuicao/lockContextGlobal.js +17 -0
  36. package/dist/distribuicao/lockGlobal.d.ts +6 -0
  37. package/dist/distribuicao/lockGlobal.js +520 -0
  38. package/dist/distribuicao/skillGlobal.d.ts +48 -0
  39. package/dist/distribuicao/skillGlobal.js +652 -0
  40. package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
  41. package/dist/distribuicao/skillIntentPolicy.js +115 -0
  42. package/dist/distribuicao/tipos.d.ts +50 -0
  43. package/dist/distribuicao/tipos.js +10 -0
  44. package/dist/distribuicao/versaoSemantica.d.ts +3 -0
  45. package/dist/distribuicao/versaoSemantica.js +62 -0
  46. package/dist/drift.part01.d.ts +34 -2
  47. package/dist/drift.part01.js +3 -0
  48. package/dist/drift.part04.d.ts +12 -2
  49. package/dist/drift.part04.js +89 -15
  50. package/dist/drift.part05.d.ts +2 -1
  51. package/dist/drift.part05.js +9 -6
  52. package/dist/drift.part06.d.ts +2 -1
  53. package/dist/drift.part06.js +115 -24
  54. package/dist/drift.part07.d.ts +11 -10
  55. package/dist/drift.part07.js +261 -255
  56. package/dist/drift.part08.d.ts +2 -1
  57. package/dist/drift.part08.js +35 -25
  58. package/dist/drift.part11.js +279 -32
  59. package/dist/drift.part12.d.ts +1 -1
  60. package/dist/drift.part12.js +196 -11
  61. package/dist/drift.part13.d.ts +18 -2
  62. package/dist/drift.part13.js +654 -76
  63. package/dist/drift.part14.js +21 -7
  64. package/dist/driftCacheCas.d.ts +43 -0
  65. package/dist/driftCacheCas.js +351 -0
  66. package/dist/driftCacheFilesystem.d.ts +64 -0
  67. package/dist/driftCacheFilesystem.js +313 -0
  68. package/dist/driftCacheModes.d.ts +38 -0
  69. package/dist/driftCacheModes.js +147 -0
  70. package/dist/driftCacheStore.d.ts +80 -0
  71. package/dist/driftCacheStore.js +603 -0
  72. package/dist/driftCatalogo.d.ts +65 -0
  73. package/dist/driftCatalogo.js +516 -0
  74. package/dist/driftEscopo.d.ts +21 -0
  75. package/dist/driftEscopo.js +647 -0
  76. package/dist/driftEscopoReferencias.d.ts +8 -0
  77. package/dist/driftEscopoReferencias.js +612 -0
  78. package/dist/driftOrcamento.d.ts +6 -0
  79. package/dist/driftOrcamento.js +20 -3
  80. package/dist/geracaoCore.js +4 -6
  81. package/dist/iaPrompts.d.ts +3 -3
  82. package/dist/iaPrompts.js +13 -14
  83. package/dist/index.d.ts +4 -1
  84. package/dist/index.js +6 -25
  85. package/dist/index.part01.d.ts +21 -14
  86. package/dist/index.part01.js +20 -165
  87. package/dist/index.part02.js +57 -43
  88. package/dist/index.part03.d.ts +23 -1
  89. package/dist/index.part03.js +83 -8
  90. package/dist/index.part04.d.ts +10 -2
  91. package/dist/index.part04.js +48 -14
  92. package/dist/index.part05.d.ts +1 -1
  93. package/dist/index.part05.js +109 -30
  94. package/dist/index.part06.js +34 -16
  95. package/dist/index.part07.js +31 -27
  96. package/dist/index.part08.d.ts +1 -1
  97. package/dist/index.part08.js +23 -28
  98. package/dist/init/templates.part01.js +393 -393
  99. package/dist/init/templates.part02.js +189 -189
  100. package/dist/initCommand.js +5 -1
  101. package/dist/initTemplatesBackend.js +73 -73
  102. package/dist/initTemplatesBase.js +7 -5
  103. package/dist/initTemplatesFlutter.js +137 -137
  104. package/dist/initTemplatesRuntime.js +350 -350
  105. package/dist/initTemplatesWeb.js +309 -309
  106. package/dist/pipelineConteudo/command.d.ts +1 -0
  107. package/dist/pipelineConteudo/command.js +4 -32
  108. package/dist/pipelineConteudo/help.d.ts +2 -0
  109. package/dist/pipelineConteudo/help.js +33 -0
  110. package/dist/profileAuthorCommand.js +3 -7
  111. package/dist/profileCommand.js +3 -7
  112. package/dist/projeto.d.ts +1 -1
  113. package/dist/projetoCarregar.d.ts +2 -2
  114. package/dist/projetoCarregar.js +69 -28
  115. package/dist/projetoCatalogo.d.ts +8 -0
  116. package/dist/projetoCatalogo.js +164 -0
  117. package/dist/projetoOrigens.d.ts +2 -0
  118. package/dist/projetoOrigens.js +65 -9
  119. package/dist/projetoTipos.d.ts +15 -5
  120. package/dist/resultadoCli.d.ts +20 -0
  121. package/dist/resultadoCli.js +57 -0
  122. package/dist/saidaCli.d.ts +35 -0
  123. package/dist/saidaCli.js +118 -0
  124. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  125. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  126. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  127. package/dist/sistemasInterativos/engineObservation.js +438 -0
  128. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  129. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  130. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  131. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  132. package/dist/sistemasInterativos/operations.d.ts +4 -39
  133. package/dist/sistemasInterativos/operations.js +5 -1164
  134. package/dist/skillCommand.d.ts +5 -0
  135. package/dist/skillCommand.js +88 -0
  136. package/dist/sync/index.js +35 -35
  137. package/docs/README.md +11 -7
  138. package/docs/ai-integration.md +18 -11
  139. package/docs/ai-onboarding.md +81 -62
  140. package/docs/ai-workflow.md +10 -4
  141. package/docs/auth.md +26 -26
  142. package/docs/cli.md +197 -79
  143. package/docs/commands.md +30 -6
  144. package/docs/database.md +15 -15
  145. package/docs/deploy.md +54 -41
  146. package/docs/documentation.md +11 -10
  147. package/docs/drift-cache.md +108 -0
  148. package/docs/env.md +16 -16
  149. package/docs/frontend.md +41 -41
  150. package/docs/getting-started.md +82 -57
  151. package/docs/i18n.md +15 -15
  152. package/docs/repositories.md +60 -43
  153. package/docs/rollback.md +38 -31
  154. package/docs/security.md +54 -32
  155. package/docs/sistemas-interativos.md +27 -27
  156. package/docs/support.md +8 -8
  157. package/docs/testing.md +123 -17
  158. package/docs/vocabulary.md +29 -29
  159. package/exemplos/agendamento.sema +1 -1
  160. package/exemplos/assinatura.sema +1 -1
  161. package/exemplos/auditoria.sema +1 -1
  162. package/exemplos/autenticacao.sema +1 -1
  163. package/exemplos/author_obra_comum.sema +1 -1
  164. package/exemplos/author_tema_sensivel.sema +1 -1
  165. package/exemplos/automacao.sema +1 -1
  166. package/exemplos/cadastro_usuario.sema +1 -1
  167. package/exemplos/calculadora.sema +1 -1
  168. package/exemplos/crud_simples.sema +1 -1
  169. package/exemplos/estoque.sema +1 -1
  170. package/exemplos/exportacao.sema +1 -1
  171. package/exemplos/fila.sema +1 -1
  172. package/exemplos/integracao_externa.sema +1 -1
  173. package/exemplos/multi_tenant.sema +1 -1
  174. package/exemplos/notificacao.sema +1 -1
  175. package/exemplos/operacao_estrategia.sema +132 -132
  176. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  177. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  178. package/exemplos/operacao_estrategia_gates.sema +106 -106
  179. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  180. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  181. package/exemplos/pagamento.sema +1 -1
  182. package/exemplos/pagamento_dominio.sema +1 -1
  183. package/exemplos/pedido.sema +1 -1
  184. package/exemplos/permissao.sema +1 -1
  185. package/exemplos/persistencia_vendor_first.sema +1 -1
  186. package/exemplos/profile_conversas.sema +165 -165
  187. package/exemplos/profile_game.sema +1 -1
  188. package/exemplos/profile_legal.sema +1 -1
  189. package/exemplos/profile_ops.sema +1 -1
  190. package/exemplos/profile_research.sema +1 -1
  191. package/exemplos/profile_software.sema +1 -1
  192. package/exemplos/profile_workflow_n8n.sema +1 -1
  193. package/exemplos/relatorio.sema +1 -1
  194. package/exemplos/replica_analitica_erp.sema +1 -1
  195. package/exemplos/testes_embutidos.sema +1 -1
  196. package/exemplos/tratamento_erro.sema +1 -1
  197. package/exemplos/upload_arquivo.sema +1 -1
  198. package/exemplos/webhook.sema +1 -1
  199. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  200. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  201. package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
  202. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  203. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  204. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  205. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  206. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  207. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  208. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  209. package/package.json +7 -2
  210. package/scripts/postinstall.mjs +148 -0
  211. package/skills/sema/SKILL.md +199 -0
  212. package/skills/sema/agents/openai.yaml +4 -0
  213. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  214. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  215. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  216. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  217. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  218. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  219. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  220. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  221. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  222. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  223. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  224. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  225. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  226. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  227. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  228. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  229. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  230. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  231. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  232. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  233. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  234. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  235. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  236. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  237. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  238. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  239. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  240. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  241. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  242. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  243. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  250. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  251. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  252. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  253. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  254. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  255. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  256. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  257. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  258. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  259. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  260. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  261. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  262. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  263. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  264. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  265. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  266. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  267. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -5,466 +5,466 @@ export function gerarCss(modulo) {
5
5
  const entidades = modulo.entities.map(gerarEstilosEntity).join("\n");
6
6
  const tasks = modulo.tasks.map(gerarEstilosTask).join("\n");
7
7
  const enums = modulo.enums.map(gerarEstilosEnum).join("\n");
8
- const css = `${gerarCabecalhoSemaCss(modulo)}
9
- /* ========================================
10
- Design System — Variaveis
11
- ======================================== */
12
- :root {
13
- /* Cores principais */
14
- --sema-cor-primaria: #6366f1;
15
- --sema-cor-primaria-hover: #4f46e5;
16
- --sema-cor-primaria-suave: #eef2ff;
17
- --sema-cor-sucesso: #10b981;
18
- --sema-cor-sucesso-fundo: #ecfdf5;
19
- --sema-cor-erro: #ef4444;
20
- --sema-cor-erro-texto: #991b1b;
21
- --sema-cor-erro-fundo: #fef2f2;
22
- --sema-cor-aviso: #f59e0b;
23
- --sema-cor-info: #3b82f6;
24
- /* Neutros */
25
- --sema-cor-fundo: #fafafa;
26
- --sema-cor-superficie: #ffffff;
27
- --sema-cor-texto: #18181b;
28
- --sema-cor-texto-secundario: #71717a;
29
- --sema-cor-borda: #e4e4e7;
30
- --sema-cor-borda-foco: #a5b4fc;
31
- --sema-cor-entidade: #8b5cf6;
32
- /* Tipografia */
33
- --sema-fonte: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
34
- --sema-fonte-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;
35
- --sema-tamanho-base: 0.9375rem;
36
- --sema-tamanho-titulo: 1.75rem;
37
- --sema-tamanho-subtitulo: 1.25rem;
38
- --sema-tamanho-pequeno: 0.8125rem;
39
- /* Espacamento */
40
- --sema-espacamento-xs: 0.25rem;
41
- --sema-espacamento-sm: 0.5rem;
42
- --sema-espacamento-md: 1rem;
43
- --sema-espacamento-lg: 1.5rem;
44
- --sema-espacamento-xl: 2rem;
45
- /* Bordas e sombras */
46
- --sema-raio: 0.5rem;
47
- --sema-raio-lg: 0.75rem;
48
- --sema-sombra: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
49
- --sema-sombra-lg: 0 4px 12px rgba(0, 0, 0, 0.1);
50
- /* Transicoes */
51
- --sema-transicao: 150ms ease;
52
- --sema-transicao-lenta: 300ms ease;
53
- }
54
- /* ========================================
55
- Dark Mode
56
- ======================================== */
57
- @media (prefers-color-scheme: dark) {
58
- :root {
59
- --sema-cor-primaria: #818cf8;
60
- --sema-cor-primaria-hover: #a5b4fc;
61
- --sema-cor-primaria-suave: #1e1b4b;
62
- --sema-cor-sucesso: #34d399;
63
- --sema-cor-sucesso-fundo: #064e3b;
64
- --sema-cor-erro: #f87171;
65
- --sema-cor-erro-texto: #fecaca;
66
- --sema-cor-erro-fundo: #450a0a;
67
- --sema-cor-fundo: #09090b;
68
- --sema-cor-superficie: #18181b;
69
- --sema-cor-texto: #fafafa;
70
- --sema-cor-texto-secundario: #a1a1aa;
71
- --sema-cor-borda: #3f3f46;
72
- --sema-cor-borda-foco: #6366f1;
73
- --sema-cor-entidade: #a78bfa;
74
- }
75
- }
76
- /* ========================================
77
- Base
78
- ======================================== */
79
- *, *::before, *::after {
80
- box-sizing: border-box;
81
- margin: 0;
82
- padding: 0;
83
- }
84
- body {
85
- font-family: var(--sema-fonte);
86
- font-size: var(--sema-tamanho-base);
87
- line-height: 1.6;
88
- color: var(--sema-cor-texto);
89
- background-color: var(--sema-cor-fundo);
90
- -webkit-font-smoothing: antialiased;
91
- }
92
- /* ========================================
93
- Layout
94
- ======================================== */
95
- .sema-header {
96
- background: var(--sema-cor-superficie);
97
- border-bottom: 1px solid var(--sema-cor-borda);
98
- padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
99
- text-align: center;
100
- }
101
- .sema-header h1 {
102
- font-size: var(--sema-tamanho-titulo);
103
- font-weight: 700;
104
- color: var(--sema-cor-primaria);
105
- letter-spacing: -0.02em;
106
- }
107
- .sema-subtitulo {
108
- color: var(--sema-cor-texto-secundario);
109
- font-size: var(--sema-tamanho-pequeno);
110
- margin-top: var(--sema-espacamento-xs);
111
- }
112
- .sema-main {
113
- max-width: 64rem;
114
- margin: 0 auto;
115
- padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
116
- display: flex;
117
- flex-direction: column;
118
- gap: var(--sema-espacamento-lg);
119
- }
120
- .sema-footer {
121
- text-align: center;
122
- padding: var(--sema-espacamento-lg);
123
- color: var(--sema-cor-texto-secundario);
124
- font-size: var(--sema-tamanho-pequeno);
125
- border-top: 1px solid var(--sema-cor-borda);
126
- }
127
- .sema-footer code {
128
- font-family: var(--sema-fonte-mono);
129
- background: var(--sema-cor-primaria-suave);
130
- padding: 0.125rem 0.375rem;
131
- border-radius: 0.25rem;
132
- font-size: 0.8125rem;
133
- }
134
- /* ========================================
135
- Entities
136
- ======================================== */
137
- .sema-entity,
138
- .sema-task,
139
- .sema-enum,
140
- .sema-state,
141
- .sema-flow,
142
- .sema-route {
143
- background: var(--sema-cor-superficie);
144
- border: 1px solid var(--sema-cor-borda);
145
- border-radius: var(--sema-raio-lg);
146
- padding: var(--sema-espacamento-lg);
147
- box-shadow: var(--sema-sombra);
148
- transition: box-shadow var(--sema-transicao);
149
- }
150
- .sema-entity:hover,
151
- .sema-task:hover,
152
- .sema-route:hover {
153
- box-shadow: var(--sema-sombra-lg);
154
- }
155
- .sema-entity h3,
156
- .sema-task h3,
157
- .sema-enum h3,
158
- .sema-state h3,
159
- .sema-flow h3,
160
- .sema-route h3 {
161
- font-size: var(--sema-tamanho-subtitulo);
162
- font-weight: 600;
163
- margin-bottom: var(--sema-espacamento-md);
164
- color: var(--sema-cor-texto);
165
- }
166
- /* ========================================
167
- Tabelas de Entity
168
- ======================================== */
169
- .sema-tabela {
170
- width: 100%;
171
- border-collapse: collapse;
172
- font-size: var(--sema-tamanho-pequeno);
173
- }
174
- .sema-tabela th {
175
- text-align: left;
176
- padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
177
- background: var(--sema-cor-primaria-suave);
178
- border-bottom: 2px solid var(--sema-cor-borda);
179
- font-weight: 600;
180
- white-space: nowrap;
181
- }
182
- .sema-tabela th small {
183
- color: var(--sema-cor-texto-secundario);
184
- font-weight: 400;
185
- margin-left: 0.25rem;
186
- }
187
- .sema-tabela td {
188
- padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
189
- border-bottom: 1px solid var(--sema-cor-borda);
190
- color: var(--sema-cor-texto-secundario);
191
- }
192
- /* ========================================
193
- Formularios de Task
194
- ======================================== */
195
- .sema-formulario fieldset {
196
- border: 1px solid var(--sema-cor-borda);
197
- border-radius: var(--sema-raio);
198
- padding: var(--sema-espacamento-md);
199
- margin-bottom: var(--sema-espacamento-md);
200
- }
201
- .sema-formulario legend {
202
- font-weight: 600;
203
- font-size: var(--sema-tamanho-pequeno);
204
- color: var(--sema-cor-texto-secundario);
205
- padding: 0 var(--sema-espacamento-xs);
206
- text-transform: uppercase;
207
- letter-spacing: 0.05em;
208
- }
209
- .sema-campo {
210
- margin-bottom: var(--sema-espacamento-md);
211
- }
212
- .sema-campo label {
213
- display: block;
214
- font-weight: 500;
215
- font-size: var(--sema-tamanho-pequeno);
216
- margin-bottom: var(--sema-espacamento-xs);
217
- color: var(--sema-cor-texto);
218
- }
219
- .sema-obrigatorio {
220
- color: var(--sema-cor-erro);
221
- }
222
- .sema-campo input[type="text"],
223
- .sema-campo input[type="number"],
224
- .sema-campo input[type="email"],
225
- .sema-campo input[type="url"],
226
- .sema-campo input[type="date"],
227
- .sema-campo input[type="datetime-local"],
228
- .sema-campo textarea {
229
- width: 100%;
230
- padding: 0.5rem 0.75rem;
231
- font-family: var(--sema-fonte);
232
- font-size: var(--sema-tamanho-base);
233
- color: var(--sema-cor-texto);
234
- background: var(--sema-cor-fundo);
235
- border: 1px solid var(--sema-cor-borda);
236
- border-radius: var(--sema-raio);
237
- outline: none;
238
- transition: border-color var(--sema-transicao), box-shadow var(--sema-transicao);
239
- }
240
- .sema-campo input:focus,
241
- .sema-campo textarea:focus {
242
- border-color: var(--sema-cor-borda-foco);
243
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
244
- }
245
- .sema-campo textarea {
246
- min-height: 5rem;
247
- resize: vertical;
248
- }
249
- .sema-campo-checkbox label {
250
- display: flex;
251
- align-items: center;
252
- gap: var(--sema-espacamento-sm);
253
- cursor: pointer;
254
- }
255
- .sema-campo-checkbox input[type="checkbox"] {
256
- width: 1.125rem;
257
- height: 1.125rem;
258
- accent-color: var(--sema-cor-primaria);
259
- }
260
- /* ========================================
261
- Botoes
262
- ======================================== */
263
- .sema-botao {
264
- display: inline-flex;
265
- align-items: center;
266
- justify-content: center;
267
- padding: 0.625rem 1.25rem;
268
- font-family: var(--sema-fonte);
269
- font-size: var(--sema-tamanho-base);
270
- font-weight: 600;
271
- color: #fff;
272
- background: var(--sema-cor-primaria);
273
- border: none;
274
- border-radius: var(--sema-raio);
275
- cursor: pointer;
276
- transition: background var(--sema-transicao), transform var(--sema-transicao);
277
- }
278
- .sema-botao:hover {
279
- background: var(--sema-cor-primaria-hover);
280
- transform: translateY(-1px);
281
- }
282
- .sema-botao:active {
283
- transform: translateY(0);
284
- }
285
- /* ========================================
286
- Erros
287
- ======================================== */
288
- .sema-erros {
289
- margin-top: var(--sema-espacamento-sm);
290
- }
291
- .sema-erro[hidden] {
292
- display: none;
293
- }
294
- /* ========================================
295
- Saida
296
- ======================================== */
297
- .sema-saida {
298
- margin-top: var(--sema-espacamento-md);
299
- padding: var(--sema-espacamento-md);
300
- background: var(--sema-cor-sucesso-fundo);
301
- border: 1px solid var(--sema-cor-sucesso);
302
- border-radius: var(--sema-raio);
303
- }
304
- .sema-saida[hidden] {
305
- display: none;
306
- }
307
- .sema-saida h4 {
308
- font-size: var(--sema-tamanho-pequeno);
309
- font-weight: 600;
310
- text-transform: uppercase;
311
- letter-spacing: 0.05em;
312
- color: var(--sema-cor-sucesso);
313
- margin-bottom: var(--sema-espacamento-sm);
314
- }
315
- .sema-campo-saida {
316
- padding: var(--sema-espacamento-xs) 0;
317
- font-size: var(--sema-tamanho-pequeno);
318
- }
319
- /* ========================================
320
- Selects (Enums)
321
- ======================================== */
322
- .sema-select {
323
- width: 100%;
324
- padding: 0.5rem 0.75rem;
325
- font-family: var(--sema-fonte);
326
- font-size: var(--sema-tamanho-base);
327
- color: var(--sema-cor-texto);
328
- background: var(--sema-cor-fundo);
329
- border: 1px solid var(--sema-cor-borda);
330
- border-radius: var(--sema-raio);
331
- outline: none;
332
- transition: border-color var(--sema-transicao);
333
- }
334
- .sema-select:focus {
335
- border-color: var(--sema-cor-borda-foco);
336
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
337
- }
338
- /* ========================================
339
- States
340
- ======================================== */
341
- .sema-state {
342
- border-left: 3px solid var(--sema-cor-aviso);
343
- }
344
- .sema-transicoes {
345
- list-style: none;
346
- padding: 0;
347
- }
348
- .sema-transicoes li {
349
- padding: var(--sema-espacamento-sm) 0;
350
- border-bottom: 1px solid var(--sema-cor-borda);
351
- font-size: var(--sema-tamanho-pequeno);
352
- }
353
- .sema-transicoes li:last-child {
354
- border-bottom: none;
355
- }
356
- .sema-estado-origem {
357
- font-weight: 600;
358
- color: var(--sema-cor-texto);
359
- }
360
- .sema-estado-destino {
361
- color: var(--sema-cor-primaria);
362
- font-weight: 600;
363
- }
364
- /* ========================================
365
- Flows
366
- ======================================== */
367
- .sema-flow {
368
- border-left: 3px solid var(--sema-cor-info);
369
- }
370
- .sema-etapas {
371
- padding-left: var(--sema-espacamento-lg);
372
- counter-reset: etapa;
373
- }
374
- .sema-etapas li {
375
- padding: var(--sema-espacamento-sm) 0;
376
- font-size: var(--sema-tamanho-pequeno);
377
- }
378
- .sema-etapa strong {
379
- color: var(--sema-cor-primaria);
380
- }
381
- /* ========================================
382
- Routes
383
- ======================================== */
384
- .sema-route {
385
- border-left: 3px solid var(--sema-cor-sucesso);
386
- }
387
- .sema-route-detalhe {
388
- display: flex;
389
- align-items: center;
390
- gap: var(--sema-espacamento-sm);
391
- flex-wrap: wrap;
392
- margin-bottom: var(--sema-espacamento-sm);
393
- }
394
- .sema-route-metodo {
395
- display: inline-block;
396
- padding: 0.125rem 0.5rem;
397
- font-family: var(--sema-fonte-mono);
398
- font-size: var(--sema-tamanho-pequeno);
399
- font-weight: 700;
400
- color: #fff;
401
- background: var(--sema-cor-sucesso);
402
- border-radius: 0.25rem;
403
- text-transform: uppercase;
404
- }
405
- .sema-route-caminho {
406
- font-family: var(--sema-fonte-mono);
407
- font-size: var(--sema-tamanho-pequeno);
408
- color: var(--sema-cor-texto);
409
- }
410
- .sema-route-task {
411
- font-size: var(--sema-tamanho-pequeno);
412
- color: var(--sema-cor-texto-secundario);
413
- }
414
- .sema-route-io {
415
- margin-top: var(--sema-espacamento-sm);
416
- font-size: var(--sema-tamanho-pequeno);
417
- }
418
- .sema-route-io summary {
419
- cursor: pointer;
420
- font-weight: 500;
421
- color: var(--sema-cor-texto-secundario);
422
- }
423
- .sema-route-io ul {
424
- padding-left: var(--sema-espacamento-lg);
425
- margin-top: var(--sema-espacamento-xs);
426
- }
427
- /* ========================================
428
- Animacoes
429
- ======================================== */
430
- @keyframes sema-surgir {
431
- from {
432
- opacity: 0;
433
- transform: translateY(-4px);
434
- }
435
- to {
436
- opacity: 1;
437
- transform: translateY(0);
438
- }
439
- }
440
- /* ========================================
441
- Responsividade
442
- ======================================== */
443
- @media (max-width: 640px) {
444
- .sema-main {
445
- padding: var(--sema-espacamento-md);
446
- }
447
- .sema-header {
448
- padding: var(--sema-espacamento-lg) var(--sema-espacamento-md);
449
- }
450
- .sema-header h1 {
451
- font-size: 1.375rem;
452
- }
453
- .sema-tabela {
454
- display: block;
455
- overflow-x: auto;
456
- }
457
- .sema-route-detalhe {
458
- flex-direction: column;
459
- align-items: flex-start;
460
- }
461
- }
462
- /* ========================================
463
- Estilos especificos do modulo
464
- ======================================== */
465
- ${entidades}
466
- ${tasks}
467
- ${enums}
8
+ const css = `${gerarCabecalhoSemaCss(modulo)}
9
+ /* ========================================
10
+ Design System — Variaveis
11
+ ======================================== */
12
+ :root {
13
+ /* Cores principais */
14
+ --sema-cor-primaria: #6366f1;
15
+ --sema-cor-primaria-hover: #4f46e5;
16
+ --sema-cor-primaria-suave: #eef2ff;
17
+ --sema-cor-sucesso: #10b981;
18
+ --sema-cor-sucesso-fundo: #ecfdf5;
19
+ --sema-cor-erro: #ef4444;
20
+ --sema-cor-erro-texto: #991b1b;
21
+ --sema-cor-erro-fundo: #fef2f2;
22
+ --sema-cor-aviso: #f59e0b;
23
+ --sema-cor-info: #3b82f6;
24
+ /* Neutros */
25
+ --sema-cor-fundo: #fafafa;
26
+ --sema-cor-superficie: #ffffff;
27
+ --sema-cor-texto: #18181b;
28
+ --sema-cor-texto-secundario: #71717a;
29
+ --sema-cor-borda: #e4e4e7;
30
+ --sema-cor-borda-foco: #a5b4fc;
31
+ --sema-cor-entidade: #8b5cf6;
32
+ /* Tipografia */
33
+ --sema-fonte: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
34
+ --sema-fonte-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;
35
+ --sema-tamanho-base: 0.9375rem;
36
+ --sema-tamanho-titulo: 1.75rem;
37
+ --sema-tamanho-subtitulo: 1.25rem;
38
+ --sema-tamanho-pequeno: 0.8125rem;
39
+ /* Espacamento */
40
+ --sema-espacamento-xs: 0.25rem;
41
+ --sema-espacamento-sm: 0.5rem;
42
+ --sema-espacamento-md: 1rem;
43
+ --sema-espacamento-lg: 1.5rem;
44
+ --sema-espacamento-xl: 2rem;
45
+ /* Bordas e sombras */
46
+ --sema-raio: 0.5rem;
47
+ --sema-raio-lg: 0.75rem;
48
+ --sema-sombra: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
49
+ --sema-sombra-lg: 0 4px 12px rgba(0, 0, 0, 0.1);
50
+ /* Transicoes */
51
+ --sema-transicao: 150ms ease;
52
+ --sema-transicao-lenta: 300ms ease;
53
+ }
54
+ /* ========================================
55
+ Dark Mode
56
+ ======================================== */
57
+ @media (prefers-color-scheme: dark) {
58
+ :root {
59
+ --sema-cor-primaria: #818cf8;
60
+ --sema-cor-primaria-hover: #a5b4fc;
61
+ --sema-cor-primaria-suave: #1e1b4b;
62
+ --sema-cor-sucesso: #34d399;
63
+ --sema-cor-sucesso-fundo: #064e3b;
64
+ --sema-cor-erro: #f87171;
65
+ --sema-cor-erro-texto: #fecaca;
66
+ --sema-cor-erro-fundo: #450a0a;
67
+ --sema-cor-fundo: #09090b;
68
+ --sema-cor-superficie: #18181b;
69
+ --sema-cor-texto: #fafafa;
70
+ --sema-cor-texto-secundario: #a1a1aa;
71
+ --sema-cor-borda: #3f3f46;
72
+ --sema-cor-borda-foco: #6366f1;
73
+ --sema-cor-entidade: #a78bfa;
74
+ }
75
+ }
76
+ /* ========================================
77
+ Base
78
+ ======================================== */
79
+ *, *::before, *::after {
80
+ box-sizing: border-box;
81
+ margin: 0;
82
+ padding: 0;
83
+ }
84
+ body {
85
+ font-family: var(--sema-fonte);
86
+ font-size: var(--sema-tamanho-base);
87
+ line-height: 1.6;
88
+ color: var(--sema-cor-texto);
89
+ background-color: var(--sema-cor-fundo);
90
+ -webkit-font-smoothing: antialiased;
91
+ }
92
+ /* ========================================
93
+ Layout
94
+ ======================================== */
95
+ .sema-header {
96
+ background: var(--sema-cor-superficie);
97
+ border-bottom: 1px solid var(--sema-cor-borda);
98
+ padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
99
+ text-align: center;
100
+ }
101
+ .sema-header h1 {
102
+ font-size: var(--sema-tamanho-titulo);
103
+ font-weight: 700;
104
+ color: var(--sema-cor-primaria);
105
+ letter-spacing: -0.02em;
106
+ }
107
+ .sema-subtitulo {
108
+ color: var(--sema-cor-texto-secundario);
109
+ font-size: var(--sema-tamanho-pequeno);
110
+ margin-top: var(--sema-espacamento-xs);
111
+ }
112
+ .sema-main {
113
+ max-width: 64rem;
114
+ margin: 0 auto;
115
+ padding: var(--sema-espacamento-xl) var(--sema-espacamento-lg);
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: var(--sema-espacamento-lg);
119
+ }
120
+ .sema-footer {
121
+ text-align: center;
122
+ padding: var(--sema-espacamento-lg);
123
+ color: var(--sema-cor-texto-secundario);
124
+ font-size: var(--sema-tamanho-pequeno);
125
+ border-top: 1px solid var(--sema-cor-borda);
126
+ }
127
+ .sema-footer code {
128
+ font-family: var(--sema-fonte-mono);
129
+ background: var(--sema-cor-primaria-suave);
130
+ padding: 0.125rem 0.375rem;
131
+ border-radius: 0.25rem;
132
+ font-size: 0.8125rem;
133
+ }
134
+ /* ========================================
135
+ Entities
136
+ ======================================== */
137
+ .sema-entity,
138
+ .sema-task,
139
+ .sema-enum,
140
+ .sema-state,
141
+ .sema-flow,
142
+ .sema-route {
143
+ background: var(--sema-cor-superficie);
144
+ border: 1px solid var(--sema-cor-borda);
145
+ border-radius: var(--sema-raio-lg);
146
+ padding: var(--sema-espacamento-lg);
147
+ box-shadow: var(--sema-sombra);
148
+ transition: box-shadow var(--sema-transicao);
149
+ }
150
+ .sema-entity:hover,
151
+ .sema-task:hover,
152
+ .sema-route:hover {
153
+ box-shadow: var(--sema-sombra-lg);
154
+ }
155
+ .sema-entity h3,
156
+ .sema-task h3,
157
+ .sema-enum h3,
158
+ .sema-state h3,
159
+ .sema-flow h3,
160
+ .sema-route h3 {
161
+ font-size: var(--sema-tamanho-subtitulo);
162
+ font-weight: 600;
163
+ margin-bottom: var(--sema-espacamento-md);
164
+ color: var(--sema-cor-texto);
165
+ }
166
+ /* ========================================
167
+ Tabelas de Entity
168
+ ======================================== */
169
+ .sema-tabela {
170
+ width: 100%;
171
+ border-collapse: collapse;
172
+ font-size: var(--sema-tamanho-pequeno);
173
+ }
174
+ .sema-tabela th {
175
+ text-align: left;
176
+ padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
177
+ background: var(--sema-cor-primaria-suave);
178
+ border-bottom: 2px solid var(--sema-cor-borda);
179
+ font-weight: 600;
180
+ white-space: nowrap;
181
+ }
182
+ .sema-tabela th small {
183
+ color: var(--sema-cor-texto-secundario);
184
+ font-weight: 400;
185
+ margin-left: 0.25rem;
186
+ }
187
+ .sema-tabela td {
188
+ padding: var(--sema-espacamento-sm) var(--sema-espacamento-md);
189
+ border-bottom: 1px solid var(--sema-cor-borda);
190
+ color: var(--sema-cor-texto-secundario);
191
+ }
192
+ /* ========================================
193
+ Formularios de Task
194
+ ======================================== */
195
+ .sema-formulario fieldset {
196
+ border: 1px solid var(--sema-cor-borda);
197
+ border-radius: var(--sema-raio);
198
+ padding: var(--sema-espacamento-md);
199
+ margin-bottom: var(--sema-espacamento-md);
200
+ }
201
+ .sema-formulario legend {
202
+ font-weight: 600;
203
+ font-size: var(--sema-tamanho-pequeno);
204
+ color: var(--sema-cor-texto-secundario);
205
+ padding: 0 var(--sema-espacamento-xs);
206
+ text-transform: uppercase;
207
+ letter-spacing: 0.05em;
208
+ }
209
+ .sema-campo {
210
+ margin-bottom: var(--sema-espacamento-md);
211
+ }
212
+ .sema-campo label {
213
+ display: block;
214
+ font-weight: 500;
215
+ font-size: var(--sema-tamanho-pequeno);
216
+ margin-bottom: var(--sema-espacamento-xs);
217
+ color: var(--sema-cor-texto);
218
+ }
219
+ .sema-obrigatorio {
220
+ color: var(--sema-cor-erro);
221
+ }
222
+ .sema-campo input[type="text"],
223
+ .sema-campo input[type="number"],
224
+ .sema-campo input[type="email"],
225
+ .sema-campo input[type="url"],
226
+ .sema-campo input[type="date"],
227
+ .sema-campo input[type="datetime-local"],
228
+ .sema-campo textarea {
229
+ width: 100%;
230
+ padding: 0.5rem 0.75rem;
231
+ font-family: var(--sema-fonte);
232
+ font-size: var(--sema-tamanho-base);
233
+ color: var(--sema-cor-texto);
234
+ background: var(--sema-cor-fundo);
235
+ border: 1px solid var(--sema-cor-borda);
236
+ border-radius: var(--sema-raio);
237
+ outline: none;
238
+ transition: border-color var(--sema-transicao), box-shadow var(--sema-transicao);
239
+ }
240
+ .sema-campo input:focus,
241
+ .sema-campo textarea:focus {
242
+ border-color: var(--sema-cor-borda-foco);
243
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
244
+ }
245
+ .sema-campo textarea {
246
+ min-height: 5rem;
247
+ resize: vertical;
248
+ }
249
+ .sema-campo-checkbox label {
250
+ display: flex;
251
+ align-items: center;
252
+ gap: var(--sema-espacamento-sm);
253
+ cursor: pointer;
254
+ }
255
+ .sema-campo-checkbox input[type="checkbox"] {
256
+ width: 1.125rem;
257
+ height: 1.125rem;
258
+ accent-color: var(--sema-cor-primaria);
259
+ }
260
+ /* ========================================
261
+ Botoes
262
+ ======================================== */
263
+ .sema-botao {
264
+ display: inline-flex;
265
+ align-items: center;
266
+ justify-content: center;
267
+ padding: 0.625rem 1.25rem;
268
+ font-family: var(--sema-fonte);
269
+ font-size: var(--sema-tamanho-base);
270
+ font-weight: 600;
271
+ color: #fff;
272
+ background: var(--sema-cor-primaria);
273
+ border: none;
274
+ border-radius: var(--sema-raio);
275
+ cursor: pointer;
276
+ transition: background var(--sema-transicao), transform var(--sema-transicao);
277
+ }
278
+ .sema-botao:hover {
279
+ background: var(--sema-cor-primaria-hover);
280
+ transform: translateY(-1px);
281
+ }
282
+ .sema-botao:active {
283
+ transform: translateY(0);
284
+ }
285
+ /* ========================================
286
+ Erros
287
+ ======================================== */
288
+ .sema-erros {
289
+ margin-top: var(--sema-espacamento-sm);
290
+ }
291
+ .sema-erro[hidden] {
292
+ display: none;
293
+ }
294
+ /* ========================================
295
+ Saida
296
+ ======================================== */
297
+ .sema-saida {
298
+ margin-top: var(--sema-espacamento-md);
299
+ padding: var(--sema-espacamento-md);
300
+ background: var(--sema-cor-sucesso-fundo);
301
+ border: 1px solid var(--sema-cor-sucesso);
302
+ border-radius: var(--sema-raio);
303
+ }
304
+ .sema-saida[hidden] {
305
+ display: none;
306
+ }
307
+ .sema-saida h4 {
308
+ font-size: var(--sema-tamanho-pequeno);
309
+ font-weight: 600;
310
+ text-transform: uppercase;
311
+ letter-spacing: 0.05em;
312
+ color: var(--sema-cor-sucesso);
313
+ margin-bottom: var(--sema-espacamento-sm);
314
+ }
315
+ .sema-campo-saida {
316
+ padding: var(--sema-espacamento-xs) 0;
317
+ font-size: var(--sema-tamanho-pequeno);
318
+ }
319
+ /* ========================================
320
+ Selects (Enums)
321
+ ======================================== */
322
+ .sema-select {
323
+ width: 100%;
324
+ padding: 0.5rem 0.75rem;
325
+ font-family: var(--sema-fonte);
326
+ font-size: var(--sema-tamanho-base);
327
+ color: var(--sema-cor-texto);
328
+ background: var(--sema-cor-fundo);
329
+ border: 1px solid var(--sema-cor-borda);
330
+ border-radius: var(--sema-raio);
331
+ outline: none;
332
+ transition: border-color var(--sema-transicao);
333
+ }
334
+ .sema-select:focus {
335
+ border-color: var(--sema-cor-borda-foco);
336
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
337
+ }
338
+ /* ========================================
339
+ States
340
+ ======================================== */
341
+ .sema-state {
342
+ border-left: 3px solid var(--sema-cor-aviso);
343
+ }
344
+ .sema-transicoes {
345
+ list-style: none;
346
+ padding: 0;
347
+ }
348
+ .sema-transicoes li {
349
+ padding: var(--sema-espacamento-sm) 0;
350
+ border-bottom: 1px solid var(--sema-cor-borda);
351
+ font-size: var(--sema-tamanho-pequeno);
352
+ }
353
+ .sema-transicoes li:last-child {
354
+ border-bottom: none;
355
+ }
356
+ .sema-estado-origem {
357
+ font-weight: 600;
358
+ color: var(--sema-cor-texto);
359
+ }
360
+ .sema-estado-destino {
361
+ color: var(--sema-cor-primaria);
362
+ font-weight: 600;
363
+ }
364
+ /* ========================================
365
+ Flows
366
+ ======================================== */
367
+ .sema-flow {
368
+ border-left: 3px solid var(--sema-cor-info);
369
+ }
370
+ .sema-etapas {
371
+ padding-left: var(--sema-espacamento-lg);
372
+ counter-reset: etapa;
373
+ }
374
+ .sema-etapas li {
375
+ padding: var(--sema-espacamento-sm) 0;
376
+ font-size: var(--sema-tamanho-pequeno);
377
+ }
378
+ .sema-etapa strong {
379
+ color: var(--sema-cor-primaria);
380
+ }
381
+ /* ========================================
382
+ Routes
383
+ ======================================== */
384
+ .sema-route {
385
+ border-left: 3px solid var(--sema-cor-sucesso);
386
+ }
387
+ .sema-route-detalhe {
388
+ display: flex;
389
+ align-items: center;
390
+ gap: var(--sema-espacamento-sm);
391
+ flex-wrap: wrap;
392
+ margin-bottom: var(--sema-espacamento-sm);
393
+ }
394
+ .sema-route-metodo {
395
+ display: inline-block;
396
+ padding: 0.125rem 0.5rem;
397
+ font-family: var(--sema-fonte-mono);
398
+ font-size: var(--sema-tamanho-pequeno);
399
+ font-weight: 700;
400
+ color: #fff;
401
+ background: var(--sema-cor-sucesso);
402
+ border-radius: 0.25rem;
403
+ text-transform: uppercase;
404
+ }
405
+ .sema-route-caminho {
406
+ font-family: var(--sema-fonte-mono);
407
+ font-size: var(--sema-tamanho-pequeno);
408
+ color: var(--sema-cor-texto);
409
+ }
410
+ .sema-route-task {
411
+ font-size: var(--sema-tamanho-pequeno);
412
+ color: var(--sema-cor-texto-secundario);
413
+ }
414
+ .sema-route-io {
415
+ margin-top: var(--sema-espacamento-sm);
416
+ font-size: var(--sema-tamanho-pequeno);
417
+ }
418
+ .sema-route-io summary {
419
+ cursor: pointer;
420
+ font-weight: 500;
421
+ color: var(--sema-cor-texto-secundario);
422
+ }
423
+ .sema-route-io ul {
424
+ padding-left: var(--sema-espacamento-lg);
425
+ margin-top: var(--sema-espacamento-xs);
426
+ }
427
+ /* ========================================
428
+ Animacoes
429
+ ======================================== */
430
+ @keyframes sema-surgir {
431
+ from {
432
+ opacity: 0;
433
+ transform: translateY(-4px);
434
+ }
435
+ to {
436
+ opacity: 1;
437
+ transform: translateY(0);
438
+ }
439
+ }
440
+ /* ========================================
441
+ Responsividade
442
+ ======================================== */
443
+ @media (max-width: 640px) {
444
+ .sema-main {
445
+ padding: var(--sema-espacamento-md);
446
+ }
447
+ .sema-header {
448
+ padding: var(--sema-espacamento-lg) var(--sema-espacamento-md);
449
+ }
450
+ .sema-header h1 {
451
+ font-size: 1.375rem;
452
+ }
453
+ .sema-tabela {
454
+ display: block;
455
+ overflow-x: auto;
456
+ }
457
+ .sema-route-detalhe {
458
+ flex-direction: column;
459
+ align-items: flex-start;
460
+ }
461
+ }
462
+ /* ========================================
463
+ Estilos especificos do modulo
464
+ ======================================== */
465
+ ${entidades}
466
+ ${tasks}
467
+ ${enums}
468
468
  `;
469
469
  return [{ caminhoRelativo: `${nomeBase}.css`, conteudo: css }];
470
470
  }