@seedgrid/ai-toolkit 0.0.0-stage → 0.3.1

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 (226) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -2
  3. package/dist/adapters/claude.js +114 -0
  4. package/dist/adapters/codex.js +108 -0
  5. package/dist/adapters/index.js +17 -0
  6. package/dist/adapters/shared.js +142 -0
  7. package/dist/adapters/types.js +1 -0
  8. package/dist/cli.js +209 -0
  9. package/dist/commands/common.js +98 -0
  10. package/dist/commands/doctor.js +290 -0
  11. package/dist/commands/init.js +9 -0
  12. package/dist/commands/install.js +107 -0
  13. package/dist/commands/remove.js +54 -0
  14. package/dist/commands/review.js +127 -0
  15. package/dist/commands/selfinstall.js +63 -0
  16. package/dist/commands/status.js +73 -0
  17. package/dist/commands/update.js +8 -0
  18. package/dist/commands/validate.js +27 -0
  19. package/dist/core/apply.js +181 -0
  20. package/dist/core/blocks.js +64 -0
  21. package/dist/core/content.js +528 -0
  22. package/dist/core/env.js +40 -0
  23. package/dist/core/frontmatter.js +29 -0
  24. package/dist/core/hash.js +14 -0
  25. package/dist/core/inspect.js +51 -0
  26. package/dist/core/lock.js +124 -0
  27. package/dist/core/paths.js +65 -0
  28. package/dist/core/plan.js +242 -0
  29. package/dist/core/tools.js +62 -0
  30. package/dist/core/types.js +11 -0
  31. package/dist/core/updates.js +121 -0
  32. package/docs/arquitetura.md +80 -0
  33. package/docs/compatibilidade.md +50 -0
  34. package/docs/formato.md +155 -0
  35. package/docs/instalacao.md +105 -0
  36. package/docs/manutencao.md +115 -0
  37. package/package.json +43 -4
  38. package/seedgridKB/SeedGrid/Extensions/Catalogo-de-enums.md +161 -0
  39. package/seedgridKB/SeedGrid/Extensions/Catalogo-de-propriedades.md +971 -0
  40. package/seedgridKB/SeedGrid/Extensions/Indice.md +63 -0
  41. package/seedgridKB/SeedGrid/Extensions/ai-pricing/Configuracao.md +124 -0
  42. package/seedgridKB/SeedGrid/Extensions/ai-pricing/Enums.md +40 -0
  43. package/seedgridKB/SeedGrid/Extensions/ai-pricing/Exemplos.md +97 -0
  44. package/seedgridKB/SeedGrid/Extensions/ai-pricing/Visao-geral.md +114 -0
  45. package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao-Rust.md +69 -0
  46. package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao.md +88 -0
  47. package/seedgridKB/SeedGrid/Extensions/apikeys/Enums.md +33 -0
  48. package/seedgridKB/SeedGrid/Extensions/apikeys/Exemplos.md +121 -0
  49. package/seedgridKB/SeedGrid/Extensions/apikeys/Rust.md +126 -0
  50. package/seedgridKB/SeedGrid/Extensions/apikeys/Visao-geral.md +111 -0
  51. package/seedgridKB/SeedGrid/Extensions/audit/Configuracao-Rust.md +93 -0
  52. package/seedgridKB/SeedGrid/Extensions/audit/Configuracao.md +127 -0
  53. package/seedgridKB/SeedGrid/Extensions/audit/Enums.md +66 -0
  54. package/seedgridKB/SeedGrid/Extensions/audit/Exemplos.md +151 -0
  55. package/seedgridKB/SeedGrid/Extensions/audit/Rust.md +120 -0
  56. package/seedgridKB/SeedGrid/Extensions/audit/Visao-geral.md +114 -0
  57. package/seedgridKB/SeedGrid/Extensions/backup/Configuracao-Rust.md +136 -0
  58. package/seedgridKB/SeedGrid/Extensions/backup/Configuracao.md +319 -0
  59. package/seedgridKB/SeedGrid/Extensions/backup/Enums.md +131 -0
  60. package/seedgridKB/SeedGrid/Extensions/backup/Exemplos.md +210 -0
  61. package/seedgridKB/SeedGrid/Extensions/backup/Rust.md +135 -0
  62. package/seedgridKB/SeedGrid/Extensions/backup/Visao-geral.md +150 -0
  63. package/seedgridKB/SeedGrid/Extensions/billing/Configuracao-Rust.md +86 -0
  64. package/seedgridKB/SeedGrid/Extensions/billing/Configuracao.md +243 -0
  65. package/seedgridKB/SeedGrid/Extensions/billing/Enums.md +165 -0
  66. package/seedgridKB/SeedGrid/Extensions/billing/Exemplos.md +205 -0
  67. package/seedgridKB/SeedGrid/Extensions/billing/Rust.md +109 -0
  68. package/seedgridKB/SeedGrid/Extensions/billing/Visao-geral.md +181 -0
  69. package/seedgridKB/SeedGrid/Extensions/broker/Configuracao-Rust.md +40 -0
  70. package/seedgridKB/SeedGrid/Extensions/broker/Visao-geral.md +114 -0
  71. package/seedgridKB/SeedGrid/Extensions/cache/Configuracao-Rust.md +73 -0
  72. package/seedgridKB/SeedGrid/Extensions/cache/Configuracao.md +112 -0
  73. package/seedgridKB/SeedGrid/Extensions/cache/Enums.md +36 -0
  74. package/seedgridKB/SeedGrid/Extensions/cache/Exemplos.md +149 -0
  75. package/seedgridKB/SeedGrid/Extensions/cache/Rust.md +81 -0
  76. package/seedgridKB/SeedGrid/Extensions/cache/Visao-geral.md +90 -0
  77. package/seedgridKB/SeedGrid/Extensions/commons/Configuracao.md +107 -0
  78. package/seedgridKB/SeedGrid/Extensions/commons/Enums.md +105 -0
  79. package/seedgridKB/SeedGrid/Extensions/commons/Exemplos.md +141 -0
  80. package/seedgridKB/SeedGrid/Extensions/commons/Visao-geral.md +99 -0
  81. package/seedgridKB/SeedGrid/Extensions/exchange/Configuracao.md +122 -0
  82. package/seedgridKB/SeedGrid/Extensions/exchange/Enums.md +29 -0
  83. package/seedgridKB/SeedGrid/Extensions/exchange/Exemplos.md +82 -0
  84. package/seedgridKB/SeedGrid/Extensions/exchange/Visao-geral.md +118 -0
  85. package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao-Rust.md +110 -0
  86. package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao.md +157 -0
  87. package/seedgridKB/SeedGrid/Extensions/filemanagement/Exemplos.md +157 -0
  88. package/seedgridKB/SeedGrid/Extensions/filemanagement/Rust.md +70 -0
  89. package/seedgridKB/SeedGrid/Extensions/filemanagement/Visao-geral.md +88 -0
  90. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao-Rust.md +124 -0
  91. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao.md +195 -0
  92. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Enums.md +71 -0
  93. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Exemplos.md +149 -0
  94. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Rust.md +139 -0
  95. package/seedgridKB/SeedGrid/Extensions/login-tenancy/Visao-geral.md +130 -0
  96. package/seedgridKB/SeedGrid/Extensions/notification/Configuracao.md +141 -0
  97. package/seedgridKB/SeedGrid/Extensions/notification/Enums.md +52 -0
  98. package/seedgridKB/SeedGrid/Extensions/notification/Exemplos.md +141 -0
  99. package/seedgridKB/SeedGrid/Extensions/notification/Visao-geral.md +113 -0
  100. package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao-Rust.md +67 -0
  101. package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao.md +94 -0
  102. package/seedgridKB/SeedGrid/Extensions/privacy/Enums.md +79 -0
  103. package/seedgridKB/SeedGrid/Extensions/privacy/Exemplos.md +172 -0
  104. package/seedgridKB/SeedGrid/Extensions/privacy/Rust.md +107 -0
  105. package/seedgridKB/SeedGrid/Extensions/privacy/Visao-geral.md +90 -0
  106. package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao-Rust.md +72 -0
  107. package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao.md +104 -0
  108. package/seedgridKB/SeedGrid/Extensions/realtime/Exemplos.md +104 -0
  109. package/seedgridKB/SeedGrid/Extensions/realtime/Rust.md +69 -0
  110. package/seedgridKB/SeedGrid/Extensions/realtime/Visao-geral.md +105 -0
  111. package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao-Rust.md +68 -0
  112. package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao.md +186 -0
  113. package/seedgridKB/SeedGrid/Extensions/resilience/Enums.md +96 -0
  114. package/seedgridKB/SeedGrid/Extensions/resilience/Exemplos.md +229 -0
  115. package/seedgridKB/SeedGrid/Extensions/resilience/Rust.md +80 -0
  116. package/seedgridKB/SeedGrid/Extensions/resilience/Visao-geral.md +112 -0
  117. package/seedgridKB/SeedGrid/Extensions/runtime/Configuracao-Rust.md +90 -0
  118. package/seedgridKB/SeedGrid/Extensions/runtime/Visao-geral.md +114 -0
  119. package/seedgridKB/SeedGrid/Extensions/security/Configuracao-Rust.md +327 -0
  120. package/seedgridKB/SeedGrid/Extensions/security/Configuracao.md +510 -0
  121. package/seedgridKB/SeedGrid/Extensions/security/Enums.md +95 -0
  122. package/seedgridKB/SeedGrid/Extensions/security/Exemplos.md +218 -0
  123. package/seedgridKB/SeedGrid/Extensions/security/Rust.md +203 -0
  124. package/seedgridKB/SeedGrid/Extensions/security/Visao-geral.md +131 -0
  125. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao-Rust.md +188 -0
  126. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao.md +345 -0
  127. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Enums.md +117 -0
  128. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Exemplos.md +205 -0
  129. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Rust.md +161 -0
  130. package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Visao-geral.md +142 -0
  131. package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao-Rust.md +75 -0
  132. package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao.md +152 -0
  133. package/seedgridKB/SeedGrid/Extensions/whatsapp/Enums.md +198 -0
  134. package/seedgridKB/SeedGrid/Extensions/whatsapp/Exemplos.md +173 -0
  135. package/seedgridKB/SeedGrid/Extensions/whatsapp/Rust.md +83 -0
  136. package/seedgridKB/SeedGrid/Extensions/whatsapp/Visao-geral.md +99 -0
  137. package/seedgridKB/SeedGrid/Mapa-dos-repositorios.md +112 -0
  138. package/seedgridKB/SeedGrid/SeedGrid-components/Indice.md +323 -0
  139. package/seedgridKB/SeedGrid/SeedGrid-components/buttons/API.md +257 -0
  140. package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Exemplos.md +307 -0
  141. package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Visao-geral.md +51 -0
  142. package/seedgridKB/SeedGrid/SeedGrid-components/datatable/API.md +174 -0
  143. package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Exemplos.md +236 -0
  144. package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Visao-geral.md +76 -0
  145. package/seedgridKB/SeedGrid/SeedGrid-components/digits/API.md +339 -0
  146. package/seedgridKB/SeedGrid/SeedGrid-components/digits/Exemplos.md +311 -0
  147. package/seedgridKB/SeedGrid/SeedGrid-components/digits/Visao-geral.md +57 -0
  148. package/seedgridKB/SeedGrid/SeedGrid-components/editor/API.md +125 -0
  149. package/seedgridKB/SeedGrid/SeedGrid-components/editor/Exemplos.md +116 -0
  150. package/seedgridKB/SeedGrid/SeedGrid-components/editor/Visao-geral.md +86 -0
  151. package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/API.md +490 -0
  152. package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Exemplos.md +544 -0
  153. package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Visao-geral.md +69 -0
  154. package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/API.md +113 -0
  155. package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Exemplos.md +159 -0
  156. package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Visao-geral.md +92 -0
  157. package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/API.md +516 -0
  158. package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Exemplos.md +629 -0
  159. package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Visao-geral.md +80 -0
  160. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/API.md +615 -0
  161. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Exemplos.md +384 -0
  162. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Visao-geral.md +111 -0
  163. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/API.md +661 -0
  164. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Exemplos.md +312 -0
  165. package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Visao-geral.md +123 -0
  166. package/seedgridKB/SeedGrid/SeedGrid-components/layout/API.md +1090 -0
  167. package/seedgridKB/SeedGrid/SeedGrid-components/layout/Exemplos.md +1172 -0
  168. package/seedgridKB/SeedGrid/SeedGrid-components/layout/Visao-geral.md +98 -0
  169. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/Visao-geral.md +98 -0
  170. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-apikeys.md +118 -0
  171. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-audit.md +88 -0
  172. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-backup.md +131 -0
  173. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-platform.md +132 -0
  174. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-user.md +120 -0
  175. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-login-tenancy.md +119 -0
  176. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-security.md +427 -0
  177. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-self-enter.md +104 -0
  178. package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-subdomain-tenancy.md +110 -0
  179. package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/API.md +490 -0
  180. package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Exemplos.md +561 -0
  181. package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Visao-geral.md +82 -0
  182. package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/Visao-geral.md +68 -0
  183. package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-commons.md +61 -0
  184. package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-core.md +140 -0
  185. package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-playground.md +112 -0
  186. package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-theme.md +97 -0
  187. package/seedgridKB/SeedGrid/SeedGrid-components/providers/API.md +177 -0
  188. package/seedgridKB/SeedGrid/SeedGrid-components/providers/Exemplos.md +332 -0
  189. package/seedgridKB/SeedGrid/SeedGrid-components/providers/Visao-geral.md +106 -0
  190. package/seedgridKB/SeedGrid/SeedGrid-components/showcase.md +70 -0
  191. package/seedgridKB/SeedGrid/Toolkit/agents/arquiteto.md +53 -0
  192. package/seedgridKB/SeedGrid/Toolkit/agents/backend-java.md +45 -0
  193. package/seedgridKB/SeedGrid/Toolkit/agents/backend-rust.md +43 -0
  194. package/seedgridKB/SeedGrid/Toolkit/agents/frontend-react.md +41 -0
  195. package/seedgridKB/SeedGrid/Toolkit/agents/qa.md +44 -0
  196. package/seedgridKB/SeedGrid/Toolkit/agents/revisor.md +40 -0
  197. package/seedgridKB/SeedGrid/Toolkit/references/fluxo-de-trabalho.md +78 -0
  198. package/seedgridKB/SeedGrid/Toolkit/references/glossario.md +15 -0
  199. package/seedgridKB/SeedGrid/Toolkit/references/modos-shared-native.md +27 -0
  200. package/seedgridKB/SeedGrid/Toolkit/rules/backend-java-seedgrid.md +54 -0
  201. package/seedgridKB/SeedGrid/Toolkit/rules/coordenacao.md +39 -0
  202. package/seedgridKB/SeedGrid/Toolkit/rules/formato-entrega.md +29 -0
  203. package/seedgridKB/SeedGrid/Toolkit/rules/frontend-seedgrid.md +47 -0
  204. package/seedgridKB/SeedGrid/Toolkit/rules/personalizacao-local.md +22 -0
  205. package/seedgridKB/SeedGrid/Toolkit/skills/planejar-mudanca/SKILL.md +38 -0
  206. package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/SKILL.md +33 -0
  207. package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/references/checklist.md +25 -0
  208. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-backend-crud/SKILL.md +29 -0
  209. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-bump/SKILL.md +26 -0
  210. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/SKILL.md +221 -0
  211. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/agents/openai.yaml +4 -0
  212. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/checklist.md +31 -0
  213. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/patterns.md +185 -0
  214. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/routing.md +66 -0
  215. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/SKILL.md +56 -0
  216. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/agents/openai.yaml +4 -0
  217. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/checklist.md +32 -0
  218. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/steps.md +114 -0
  219. package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-review/SKILL.md +61 -0
  220. package/seedgridKB/SeedGrid/Toolkit/skills/validar-mudanca/SKILL.md +29 -0
  221. package/seedgridKB/SeedGrid/Toolkit/templates/decisao-arquitetura.md +29 -0
  222. package/seedgridKB/SeedGrid/Toolkit/templates/especificacao-tarefa.md +32 -0
  223. package/seedgridKB/SeedGrid/Toolkit/templates/relatorio-validacao.md +30 -0
  224. package/seedgridKB/SeedGrid/Versoes.md +64 -0
  225. package/seedgridKB/SeedGrid/Visao-geral.md +35 -0
  226. package/seedgridKB/manifest.json +142 -0
@@ -0,0 +1,98 @@
1
+ ---
2
+ tags: [seedgrid, front, component, layout]
3
+ fonte: front/seedgrid-fe-components/packages/seedgrid-fe-components/src/layout
4
+ branch: main
5
+ commit: ad30fc11de
6
+ analisado-em: 2026-10-14
7
+ ---
8
+
9
+ # Layout — visão geral
10
+
11
+ Componentes de estrutura de tela do `@seedgrid/fe-components` (pasta `src/layout`): primitivas de composição (pilha, grade, painel com docking, tela), containers (card, accordion, abas, painel expansível, carrossel), navegação (breadcrumb, menu, árvore) e o sistema de **docking** de toolbars (`SgDockLayout`/`SgDockZone`/`SgDockScreen`/`SgToolBar`).
12
+
13
+ - API completa (props, eventos, ref, a11y, funções): [[SeedGrid/SeedGrid-components/layout/API|Layout — API]]
14
+ - Exemplos verificados: [[SeedGrid/SeedGrid-components/layout/Exemplos|Layout — exemplos]]
15
+ - Instalação, CSS, i18n e utilitários: [[SeedGrid/SeedGrid-components/fundamentos/Visao-geral|Fundamentos]]
16
+ - Persistência (`SgEnvironmentProvider`, `useSgPersistence`, `useSgPersistentState`): [[SeedGrid/SeedGrid-components/providers/Visao-geral|Providers]]
17
+
18
+ ## Componentes
19
+
20
+ "Exportado" = presente em `src/index.ts` (barrel do pacote; único entry point JS em `exports["."]` do `package.json`). Rotas do showcase relativas ao app `apps/showcase`.
21
+
22
+ | Componente | Exportado | Para que serve | Showcase |
23
+ |---|---|---|---|
24
+ | `SgStack` | sim | Flex em linha/coluna com `gap`, `justify`, `align`, `wrap`, `grow`. | `/components/sg-stack` |
25
+ | `SgGrid` | sim | Grade CSS com colunas por breakpoint ou `minItemWidth` (auto-fit); respeita `span`/`rowSpan` dos filhos. | `/components/sg-grid` |
26
+ | `SgPanel` | sim | Painel com borda/scroll e **docking** de painéis filhos por `align` (top/left/right/bottom/client). | `/components/sg-panel` |
27
+ | `SgScreen` | sim | Raiz de tela (100% × 100dvh por padrão) com o mesmo docking de `SgPanel`. | `/components/sg-screen` |
28
+ | `SgGroupBox` | sim | `fieldset` + `legend` para agrupar campos. | `/components/sg-group-box` |
29
+ | `SgCard` | sim | Card com cabeçalho/rodapé, clicável, colapsável e arrastável (posição persistida). | `/components/sg-card` |
30
+ | `SgAccordion` | sim | Seções colapsáveis verticais ou horizontais, controladas ou não. | `/components/sg-accordion` |
31
+ | `SgPageControl` | sim | Abas com páginas declarativas; select nativo opcional no celular. | `/components/sg-page-control` |
32
+ | `SgPageControlPage` | sim | Declaração de uma página do `SgPageControl`. | `/components/sg-page-control` |
33
+ | `SgExpandablePanel` | sim | Painel expansível inline ou overlay (drawer) com resize, foco preso e Esc. | `/components/sg-expandable-panel` |
34
+ | `SgCarousel` | sim | Carrossel com vários itens visíveis, circular, autoplay, navegadores e indicadores. | `/components/sg-carousel` |
35
+ | `SgBreadcrumb` | sim | Trilha de navegação com colapso de excedentes ou rolagem. | `/components/sg-breadcrumb` |
36
+ | `SgMenu` | sim | Menu de navegação: sidebar, drawer, inline, híbrido; variantes painel, em camadas e mega menu; busca; encaixe em dock. | `/components/sg-menu` |
37
+ | `SgTreeView` | sim | Árvore com busca, checkboxes em cascata, modo confirmação, trilhas extras e ref imperativa. | `/components/sg-tree-view` |
38
+ | `SgDockLayout` | sim | Provedor de zonas de encaixe e do estado persistido das toolbars. | `/components/sg-dock-layout` |
39
+ | `SgDockZone` | sim | Zona nomeada (`top`/`bottom`/`left`/`right`/`free`) de um `SgDockLayout`. | `/components/sg-dock-layout` |
40
+ | `SgDockScreen` | sim | `SgScreen` + `SgDockLayout` com grade 3×3 pronta. | `/components/sg-dock-screen` |
41
+ | `SgToolBar` | sim | Barra de ferramentas colapsável, arrastável entre zonas ou livre. | `/components/sg-toolbar` |
42
+ | `SgToolbarIconButton` | sim | Botão de toolbar com ícone, rótulo, `hint` (tooltip), severidade e loading automático para `onClick` assíncrono. | `/components/sg-toolbar` |
43
+ | `useSgDockLayout` | não (interno) | Hook do contexto do dock (exportado só de `SgDockLayout.tsx`). | — |
44
+ | `renderDockContent` e helpers de `sgDocking.tsx` | não (interno) | Motor de docking de `SgPanel`/`SgScreen`. | — |
45
+
46
+ ## Funções e tipos exportados relacionados
47
+
48
+ - Árvore: `sgTreeFromJson`, `sgTreeFromJsonWithChecked`; tipos `SgTreeViewRef`, `SgTreeNode`, `SgTreeNodeJson`, `SgTreeIconRegistry`, `SgTreeConfirmBar`, `SgSize`, `SgDensity`, `SgTone`.
49
+ - Lógica pura de menu (`src/layout/menu-logic.ts`): `buildMenuMaps`, `collectMenuSearchEntries`, `collectParentChain`, `computeActiveSets`, `filterMenuNodes`, `flattenVisibleNodes`, `mergeExpandedIdsForActivePath`, `resolveEffectiveActiveId`, `resolveExpandedIdsToggle`, `resolveHorizontalDockAlign`, `resolveMegaMenuActiveNode`, `resolveMegaMenuHoverActiveId`, `resolveMegaMenuInteraction`, `resolveMenuAutocompleteItems`, `resolveMenuHintPosition`, `resolveMenuKeyboardAction`, `resolveMenuLayoutState`, `resolveMenuNodeActionIntent`, `resolveMenuSearchSelectionState`, `resolveTieredActiveState`, `resolveTieredClickState`, `resolveTieredHoverIntent`, `resolveTieredHoverPath`, `resolveTieredNodeClickIntent` (24 funções) + tipos `MenuKeyboardAction`, `MenuVisibleNode`, `MenuLogicNode`.
50
+ - Toolbar (`toolbar-logic.ts`): `buildToolbarLayoutState`, `resolveToolbarDockOrientationDirection`, `resolveToolbarOrientationDirection`.
51
+ - Posição de arraste (`drag-position.ts`): `parseStoredPanelDragPosition`, `buildToolbarStorageKey`, `buildDockMenuStorageKey`.
52
+ - Assinaturas completas: [[SeedGrid/SeedGrid-components/layout/API|API › Funções utilitárias exportadas]].
53
+
54
+ ## Como se compõem
55
+
56
+ ```mermaid
57
+ flowchart TD
58
+ ENV[SgEnvironmentProvider<br/>opcional] -.persistência.-> DL
59
+ DS[SgDockScreen] --> SC[SgScreen]
60
+ DS --> DL[SgDockLayout<br/>estado dock-layout:&lt;id&gt;]
61
+ DL --> DZ[SgDockZone top/left/right/bottom/free]
62
+ DZ --> TB[SgToolBar]
63
+ TB --> TIB[SgToolbarIconButton]
64
+ DL -.portal na zona.-> MN[SgMenu dockable]
65
+ SC --> PN[SgPanel align=...]
66
+ ```
67
+
68
+ - **Docking de painéis** (`SgPanel`/`SgScreen`): sem contexto; o pai inspeciona filhos `SgPanel` com `align` e monta as faixas. **Docking de toolbars** (`SgDockLayout`): contexto React + portal das toolbars/menus na zona atribuída — são mecanismos independentes (Confirmado).
69
+ - **Persistência** (Confirmado): `SgDockLayout` usa `useSgPersistentState` (chave base `dock-layout:<id>`); `SgCard` (`sg-card-pos:<id>` ou `dragPersistKey`), `SgToolBar` com `freeDrag` (`sg-toolbar-pos:<id>`) e `SgMenu` (`sg-menu:<id>:collapsed`) usam `useSgPersistence` quando há `SgEnvironmentProvider` e `localStorage` direto quando não há.
70
+ - **i18n**: textos padrão (rótulos ARIA, "vazio", placeholder de busca) vêm de `useComponentsI18n` — ver [[SeedGrid/SeedGrid-components/fundamentos/API|Fundamentos › i18n]].
71
+ - `SgMenu` reutiliza `SgExpandablePanel` (drawer/hybrid), `SgAutocomplete` (busca), `SgAvatar` e `SgCard` (bloco do usuário).
72
+
73
+ ## Dependências externas
74
+
75
+ - `react` (peer `^18.2.0 || ^19.0.0`), `react-dom` (`createPortal` em `SgExpandablePanel`, `SgMenu`, `SgToolBar`).
76
+ - `lucide-react` (peer): ícones de `SgBreadcrumb`, `SgCarousel`, `SgMenu`.
77
+ - Estilos via classes Tailwind compiladas no CSS do pacote (ver Fundamentos).
78
+
79
+ ## Testes que cobrem o grupo (não executados)
80
+
81
+ | Arquivo | Cobertura relacionada |
82
+ |---|---|
83
+ | `tests/menu-logic.test.mjs` | Todas as funções de `menu-logic.ts` (mapas, cadeia de pais, ativo por id/url, busca, filtro, nós visíveis, teclado, tiered/mega, layout) e que o `SgMenu` consome os helpers. |
84
+ | `tests/buttons-menus.test.mjs` | Rótulos traduzidos/ARIA de `SgMenu`, `SgToolBar`, `SgExpandablePanel`, `SgTreeView`, `SgCard`, `SgCarousel`, `SgBreadcrumb`, `SgPageControl`; helpers de `drag-position.ts` e `toolbar-logic.ts`. |
85
+ | `tests/buttons-menus-dom.test.mjs` | DOM (jsdom): `SgToolBar` alterna conteúdo e notifica colapso; persistência do arraste livre em `localStorage`. |
86
+ | `tests/i18n-components-contract.test.mjs` | Contrato de chaves i18n usadas em `SgMenu`, `SgCard`, `SgToolBar`, `SgExpandablePanel`, `SgCarousel`, `SgBreadcrumb`, `SgPageControl`. |
87
+
88
+ Os testes rodam após `pnpm run build` (script `test` do pacote); não foram executados nesta análise.
89
+
90
+ ## Limitações e lacunas (Confirmado no código, salvo indicação)
91
+
92
+ - `SgTreeView`: sem `role="tree"`/`treeitem` e sem navegação por setas; os tipos `SgTreeTrack*` da prop `tracks` não são exportados pelo barrel.
93
+ - `SgCarousel`: botões anterior/próximo sem `aria-label`; sem teclado; índice não controlável de fora.
94
+ - `SgToolBar`: sem `role="toolbar"`; `hideLabel` de `SgToolbarIconButton` não está em `SgToolbarIconButtonProps` (só na assinatura do componente).
95
+ - `SgMenu`: item com `url` e sem `onNavigate` navega com `window.location.assign` (recarga completa) — em apps SPA passe `onNavigate`. `SgMenuOrientationDirection` não exportado.
96
+ - `SgAccordion` vertical anima `max-height` até 960px (conteúdo maior pode ser cortado — Inferência).
97
+ - `SgDockZone` sem `className` assume grade 3×3; com `className` o posicionamento é todo do chamador.
98
+ - Componentes deste grupo não usam `forwardRef`, exceto `SgExpandablePanel` (`HTMLDivElement`) e `SgTreeView` (`SgTreeViewRef`).
@@ -0,0 +1,98 @@
1
+ ---
2
+ tags: [seedgrid, front, modulo]
3
+ fonte: front/seedgrid-fe-components/packages/modules; front/seedgrid-fe-components/packages/seedgrid-fe-core/src/cli-module-manifest.ts
4
+ branch: main
5
+ commit: ad30fc11de
6
+ analisado-em: 2026-10-14
7
+ ---
8
+
9
+ # Módulos front (`packages/modules/*`)
10
+
11
+ Os módulos são pacotes npm `@seedgrid/fe-<domínio>` que entregam a parte **front-end** de uma funcionalidade de plataforma (autenticação, API keys, auditoria, backup, billing, tenancy, auto-cadastro) para apps Next.js gerados pela **CLI SeedGrid**. Cada um conversa com uma extension backend (Quarkus/Rust) via HTTP.
12
+
13
+ Relacionados: [[SeedGrid/SeedGrid-components/pacotes/fe-core|@seedgrid/fe-core]] (contrato do manifesto e `createApiClient`) · [[SeedGrid/SeedGrid-components/pacotes/Visao-geral|Pacotes de base]].
14
+
15
+ ## Modelo de distribuição: lib + scaffold
16
+
17
+ Decisão registrada em `packages/modules/SECURITY-EXTRACTION-MAP.md` e `FE-SECURITY-PACKAGE-CONTRACT.md` (Confirmado no código):
18
+
19
+ - **Lógica** (sessão, refresh, permissões, DTOs, paths, chamadas HTTP, mensagens i18n) → **lib versionada** em `dist/` (compilada com `tsc`).
20
+ - **Telas** (pages, forms, route handlers, menus) → **`scaffold/`** publicado junto (campo `files`), copiado pela CLI para dentro do app (modelo "shadcn": a lib dá as peças, a tela é do app). As referências `from: "@/modules/<nome>"` dos manifestos apontam para esse código copiado.
21
+ - **Variantes** (ex.: tenancy por login × por subdomínio) são escolhidas na montagem pela CLI (`variantGroup`), não em runtime.
22
+ - **Separação client/server**: a maioria expõe `./server` (código só-servidor: cookies httpOnly, Bearer, refresh) separado do `.` client-safe, para que `next/headers` não vaze para o bundle do browser. O browser fala *same-origin* com route handlers do Next; o servidor do Next segura o token e chama o backend.
23
+
24
+ ## Como se registram no fe-core
25
+
26
+ **Não há registro em runtime** no `SeedGridRegistry` (Confirmado: nenhum módulo chama `registry.add*`). Cada pacote exporta `module: SeedGridCliModuleManifest` em `src/module.ts`; o `postbuild` (`scripts/emit-module-manifest.mjs`) importa `dist/module.js` e grava `dist/module.json`, **único artefato lido pela CLI** (comentário em `fe-core/src/cli-module-manifest.ts`).
27
+
28
+ Campos do contrato: `id`, `requires`, `variantGroup`, `configKey`, `env`, `provider[]`, `navigation`, `messages`, `postAuthResolver` — ver [[SeedGrid/SeedGrid-components/pacotes/fe-core|fe-core › Módulos e registry]].
29
+
30
+ | Pacote | Versão | `id` | `requires` | `variantGroup` | `env` | `provider` | `navigation` | `messages` | `postAuthResolver` | Nota |
31
+ |---|---|---|---|---|---|---|---|---|---|---|
32
+ | `@seedgrid/fe-security` | 2026.7.3 | `security` | — | — | — | `AuthProvider` (`@/modules/security`) | `useSecurityAppShellSections` | `securityMessages` | — | [[SeedGrid/SeedGrid-components/modulos/fe-security\|fe-security]] |
33
+ | `@seedgrid/fe-apikeys` | 2026.7.0 | `api-keys` | `security` | — | — | — | — | — | — | [[SeedGrid/SeedGrid-components/modulos/fe-apikeys\|fe-apikeys]] |
34
+ | `@seedgrid/fe-audit` | 2026.7.0 | `audit` | `security` | — | — | — | — | — | — | [[SeedGrid/SeedGrid-components/modulos/fe-audit\|fe-audit]] |
35
+ | `@seedgrid/fe-backup` | 2026.7.0 | `backup` | `security` | — | — | — | `useBackupAppShellSections` | `backupMessages` | — | [[SeedGrid/SeedGrid-components/modulos/fe-backup\|fe-backup]] |
36
+ | `@seedgrid/fe-billing-platform` | 2026.7.0 | `billing-platform` | `security` | — | — | — | `useBillingPlatformAppShellSections` | `billingPlatformMessages` | — | [[SeedGrid/SeedGrid-components/modulos/fe-billing-platform\|fe-billing-platform]] |
37
+ | `@seedgrid/fe-billing-user` | 2026.7.0 | `billing-user` | `security` | — | — | — | `useBillingUserAppShellSections` | `billingUserMessages` | — | [[SeedGrid/SeedGrid-components/modulos/fe-billing-user\|fe-billing-user]] |
38
+ | `@seedgrid/fe-login-tenancy` | 2026.7.0 | `login-tenancy` | `security` | `tenancy` | — | — | — | `loginTenancyMessages` | `resolveLoginTenancyPostAuthPath` | [[SeedGrid/SeedGrid-components/modulos/fe-login-tenancy\|fe-login-tenancy]] |
39
+ | `@seedgrid/fe-self-enter` | 2026.7.0 | `self-enter` | `security` | — | — | — | — | — | — | [[SeedGrid/SeedGrid-components/modulos/fe-self-enter\|fe-self-enter]] |
40
+ | `@seedgrid/fe-subdomain-tenancy` | 2026.7.0 | `subdomain-tenancy` | `security` | `tenancy` | — | `TenantProvider` (`@seedgrid/fe-subdomain-tenancy/client`) | — | — | — | [[SeedGrid/SeedGrid-components/modulos/fe-subdomain-tenancy\|fe-subdomain-tenancy]] |
41
+
42
+ Todos Confirmados em `packages/modules/<pasta>/src/module.ts`. `configKey` = `id` em todos.
43
+
44
+ ## Pacotes: exports, dependências, scaffold e testes
45
+
46
+ | Pacote | `exports` | peerDependencies | Arquivos em `scaffold/` | Testes (`node --test`, não executados) |
47
+ |---|---|---|---|---|
48
+ | fe-security | `.`, `./server`, `./client`, `./paths` | fe-core, fe-components, `next` (opcional), `react` (opcional) | 56 | `paths`, `module-manifest`, `permissions` |
49
+ | fe-apikeys | `.`, `./server` | fe-core, fe-security | 1 | `module-manifest` |
50
+ | fe-audit | `.`, `./server` | fe-core, fe-security | 0 (sem pasta no `files`) | `module-manifest` |
51
+ | fe-backup | `.`, `./server` | fe-core, fe-security | 17 | `module-manifest`, `export-status` |
52
+ | fe-billing-platform | `.`, `./server` | fe-core, fe-security | 18 | `module-manifest` |
53
+ | fe-billing-user | `.`, `./server` | fe-core, fe-security | 19 | `module-manifest` |
54
+ | fe-login-tenancy | `.`, `./client`, `./server` | fe-components (opcional), fe-core, fe-security, react | 12 | `module-manifest` |
55
+ | fe-self-enter | `.`, `./server` | fe-core, fe-security | 3 | `module-manifest` |
56
+ | fe-subdomain-tenancy | `.`, `./server`, `./client` | fe-core, fe-security, react (opcional) | 10 | `module-manifest`, `subdomain-rules` |
57
+
58
+ Build de todos: `tsc -p tsconfig.json` + `postbuild` `node scripts/emit-module-manifest.mjs`. Contagem de `scaffold/` por `find -type f`.
59
+
60
+ ```mermaid
61
+ graph TD
62
+ core["@seedgrid/fe-core"]
63
+ sec["fe-security"] --> core
64
+ sec --> comp["@seedgrid/fe-components"]
65
+ ak["fe-apikeys"] --> sec
66
+ au["fe-audit"] --> sec
67
+ bk["fe-backup"] --> sec
68
+ bp["fe-billing-platform"] --> sec
69
+ bu["fe-billing-user"] --> sec
70
+ lt["fe-login-tenancy"] --> sec
71
+ se["fe-self-enter"] --> sec
72
+ st["fe-subdomain-tenancy"] --> sec
73
+ lt -. "variantGroup tenancy (exclusivos)" .- st
74
+ ```
75
+
76
+ ## Relação com as extensions backend
77
+
78
+ | Módulo front | Extension backend | Observação |
79
+ |---|---|---|
80
+ | fe-security | [[SeedGrid/Extensions/security/Visao-geral\|security]] | sessão, usuários, roles, companies, 2FA, self-enter, apikeys (paths) |
81
+ | fe-apikeys | [[SeedGrid/Extensions/apikeys/Visao-geral\|apikeys]] | `ApiKeyPaths` espelha `RestControllerPath.java` da extension (Confirmado na nota do módulo) |
82
+ | fe-audit | [[SeedGrid/Extensions/audit/Visao-geral\|audit]] | `/audit-logs` e sub-rotas |
83
+ | fe-backup | [[SeedGrid/Extensions/backup/Visao-geral\|backup]] | `/exports/**` |
84
+ | fe-billing-platform | [[SeedGrid/Extensions/billing/Visao-geral\|billing]] | `/admin/plans/**` (backoffice) |
85
+ | fe-billing-user | [[SeedGrid/Extensions/billing/Visao-geral\|billing]] | `/me/*` do assinante (atenção aos endpoints de uso — ver nota) |
86
+ | fe-login-tenancy | [[SeedGrid/Extensions/login-tenancy/Visao-geral\|login-tenancy]] + [[SeedGrid/Extensions/security/Visao-geral\|security]] | signup de empresa + `/me/companies`, `/me/select-company` |
87
+ | fe-self-enter | [[SeedGrid/Extensions/security/Visao-geral\|security]] | não há extension própria; usa `SecurityPaths.selfEnter` |
88
+ | fe-subdomain-tenancy | [[SeedGrid/Extensions/subdomain-tenancy/Visao-geral\|subdomain-tenancy]] | `/public/tenants`, validação/reenvio de e-mail |
89
+
90
+ Detalhes de endpoints (método + path), permissões e telas em cada nota de módulo.
91
+
92
+ ## Configuração
93
+
94
+ Variáveis de ambiente encontradas (detalhe e tabelas completas nas notas):
95
+ - **fe-security** (scaffold): `NEXT_PUBLIC_SECURITY_SELF_ENTER_ENABLED`, `SEEDGRID_SECURITY_ACCESS_COOKIE_NAME`, `SEEDGRID_SECURITY_REFRESH_COOKIE_NAME`, `SEEDGRID_SECURITY_REFRESH_COOKIE_MAX_AGE_SECONDS`, `NODE_ENV` — ver [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security › Configuração]].
96
+ - **fe-billing-platform**, **fe-billing-user**, **fe-login-tenancy** (scaffold, runtime server): `SEEDGRID_SECURITY_ACCESS_COOKIE_NAME` e `SEEDGRID_SECURITY_REFRESH_COOKIE_NAME` (mesmos nomes de cookie do fe-security).
97
+ - **fe-subdomain-tenancy** (scaffold, runtime server): `SEEDGRID_CITIES_API_USERNAME` e `SEEDGRID_CITIES_API_KEY` 🔒 (API externa de cidades).
98
+ - **fe-apikeys**, **fe-audit**, **fe-backup**, **fe-self-enter**: nenhuma leitura de `process.env` (grep em `src` e `scaffold`); backup usa o objeto `backupConfig`; self-enter depende indiretamente de `NEXT_PUBLIC_SECURITY_SELF_ENTER_ENABLED` (fe-security).
@@ -0,0 +1,118 @@
1
+ ---
2
+ tags: [seedgrid, front, modulo, fe-apikeys]
3
+ fonte: front/seedgrid-fe-components/packages/modules/seedgrid-fe-apikeys
4
+ branch: main
5
+ commit: ad30fc11de
6
+ analisado-em: 2026-10-14
7
+ ---
8
+
9
+ # @seedgrid/fe-apikeys
10
+
11
+ Módulo front de **API keys**: gestão de chaves de integração criadas **por role**, com o segredo exibido uma única vez na criação. Compõe sobre o motor de sessão do [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security]]. Faz parte dos [[SeedGrid/SeedGrid-components/modulos/Visao-geral|Módulos front]].
12
+
13
+ Backend correspondente: [[SeedGrid/Extensions/apikeys/Visao-geral|extension apikeys (Quarkus)]] — `ApiKeyPaths` é declarado como espelho de `RestControllerPath.java` da extensão (**Confirmado**: paths conferidos contra `java/seedgrid-quarkus-ext-apikeys/runtime/src/main/java/br/com/seedgrid/apikeys/controllers/RestControllerPath.java`).
14
+
15
+ ## Pacote
16
+
17
+ | Item | Valor |
18
+ |---|---|
19
+ | Nome npm | `@seedgrid/fe-apikeys` |
20
+ | Versão | `2026.7.0` |
21
+ | `type` | `module` |
22
+ | peerDependencies | `@seedgrid/fe-core: *`, `@seedgrid/fe-security: *` |
23
+ | devDependencies | `@seedgrid/fe-core`, `@seedgrid/fe-security` (`workspace:*`) |
24
+ | `files` publicados | `dist`, `scaffold` |
25
+ | Build | `tsc -p tsconfig.json`; `postbuild` → `node scripts/emit-module-manifest.mjs` (gera `dist/module.json`) |
26
+ | Testes | `pnpm run build && node --test tests/module-manifest.test.mjs` |
27
+
28
+ Campo `exports` do `package.json` (**Confirmado**):
29
+
30
+ | Subpath | types | default | Natureza |
31
+ |---|---|---|---|
32
+ | `.` | `./dist/index.d.ts` | `./dist/index.js` | client-safe (DTOs + paths) |
33
+ | `./server` | `./dist/server/index.d.ts` | `./dist/server/index.js` | SERVER-ONLY |
34
+
35
+ Dependência de módulo: **requer `security`** (peer `@seedgrid/fe-security` + manifesto `requires: ["security"]`). Usa o tipo `SecurityServer` de [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security]].
36
+
37
+ ## Exports públicos
38
+
39
+ | Export | Tipo | Subpath | Descrição | Fonte |
40
+ |---|---|---|---|---|
41
+ | `ApiKeyPaths` | const | `.` | Paths REST: `base`, `byRole(roleName)`, `revoke(publicId)` | `front/seedgrid-fe-components/packages/modules/seedgrid-fe-apikeys/src/paths.ts → ApiKeyPaths` |
42
+ | `ApiKeyCreateRequest` | interface | `.` | `{ name; expiresDays? }` (ausente = sem expiração) | `.../seedgrid-fe-apikeys/src/apikeys.ts → ApiKeyCreateRequest` |
43
+ | `ApiKeyCreateResponse` | interface | `.` | Resposta da criação; único momento em que `apiKey` (segredo cru) aparece | `.../src/apikeys.ts → ApiKeyCreateResponse` |
44
+ | `ApiKeyListItem` | interface | `.` | Item de listagem (só `prefix`/`masked`, `roleName`, `expiresAt`, `revokedAt`, `lastUsedAt`) | `.../src/apikeys.ts → ApiKeyListItem` |
45
+ | `ApiKeyRevokeResponse` | interface | `.` | `{ publicId; revokedAt }` | `.../src/apikeys.ts → ApiKeyRevokeResponse` |
46
+ | `createApiKeysServer` | função | `./server` | `(session: SecurityServer) => ApiKeysServer` | `.../src/server/create-apikeys-server.ts → createApiKeysServer` |
47
+ | `ApiKeysServer` | interface | `./server` | `createForRole`, `listByRole`, `listMine`, `revoke` | `.../src/server/create-apikeys-server.ts → ApiKeysServer` |
48
+
49
+ Contagem: `.` = 5 exports; `./server` = 2 exports. `module` (manifesto) existe em `src/module.ts` mas **não** é reexportado pelo barrel — só é serializado em `dist/module.json`.
50
+
51
+ ## Registro no @seedgrid/fe-core (manifesto do CLI)
52
+
53
+ Não há registro em runtime. O módulo exporta um `SeedGridCliModuleManifest` (tipo de [[SeedGrid/SeedGrid-components/pacotes/fe-core|@seedgrid/fe-core]], `packages/seedgrid-fe-core/src/cli-module-manifest.ts`) que o build serializa em `dist/module.json`, lido pelo SeedGrid CLI (Rust) para copiar o scaffold e fazer o wiring (**Confirmado**).
54
+
55
+ | Campo | Valor |
56
+ |---|---|
57
+ | `id` | `api-keys` |
58
+ | `requires` | `["security"]` |
59
+ | `configKey` | `api-keys` |
60
+ | `navigation` / `messages` / `provider` | não declarados |
61
+
62
+ Comentário em `src/module.ts`: o item de menu e o atalho de dashboard de API keys vivem no scaffold do fe-security (`useSecurityAppShellSections.tsx`/`SecurityDashboard.tsx`), condicionados por `{{#if security_api_keys_enabled}}` (dirigido por `config.is_module_enabled("api-keys")`). **Confirmado** (comentário no código); o template do fe-security não foi verificado aqui.
63
+
64
+ ## Páginas (scaffold) e permissões
65
+
66
+ | Rota | Arquivo | Permissões |
67
+ |---|---|---|
68
+ | `/security/api-keys` | `scaffold/src/app/security/api-keys/page.tsx → ApiKeysPage` | `RouteGuard` com `APIKEY_READ`, `APIKEY_CREATE`, `APIKEY_REVOKE` (`permissionMode="any"`); ações individuais via `usePermission` |
69
+
70
+ A tela importa `securityService`, `securityConfig`, `RouteGuard` etc. de `@/modules/security` (scaffold do fe-security) — **não** usa `createApiKeysServer` nem os DTOs deste pacote (**Confirmado**). Usa componentes `SgButton`, `SgCombobox`, `SgConfirmationDialog`, `SgDatatable`, `SgInputText`.
71
+
72
+ ## APIs backend chamadas
73
+
74
+ Via `createApiKeysServer` (lib, `session.apiFetchSecurity`):
75
+
76
+ | Método | Path | Função |
77
+ |---|---|---|
78
+ | POST | `/apikeys/role/{roleName}` | `createForRole` |
79
+ | GET | `/apikeys/role/{roleName}` | `listByRole` |
80
+ | GET | `/apikeys` | `listMine` |
81
+ | POST | `/apikeys/{publicId}/revoke` | `revoke` |
82
+
83
+ Via scaffold (`securityService` do fe-security): os mesmos 4 + `GET /roles/integration` (`listIntegrationRoles`) — 5 endpoints distintos no total. No backend, `GET /apikeys` é `ApiKeyManagementController#listCurrentUserKeys` (aceita `page`/`size`), `@PermissionsAllowed("APIKEY_READ")` (**Confirmado**).
84
+
85
+ ## Separação client/server
86
+
87
+ - `.`: só tipos e constantes — seguro no client.
88
+ - `./server`: depende de `SecurityServer` (sessão por cookie, server-side). Usar em Route Handler/Server Action.
89
+
90
+ ## Configuração
91
+
92
+ Nenhuma variável de ambiente lida (verificado com `grep process.env` em `src/` e `scaffold/`). Nenhum objeto de configuração próprio; a tela usa `securityConfig.pagination.defaultPageSize` do fe-security.
93
+
94
+ ## Exemplo de uso (fonte: README do pacote)
95
+
96
+ ```ts
97
+ import { createSecurityServer } from "@seedgrid/fe-security/server";
98
+ import { createApiKeysServer } from "@seedgrid/fe-apikeys/server";
99
+
100
+ const session = createSecurityServer({ /* ... */ });
101
+ export const apiKeys = createApiKeysServer(session);
102
+
103
+ const nova = await apiKeys.createForRole("INTEGRATION", { name: "Integração ERP", expiresDays: 90 });
104
+ const chaves = await apiKeys.listByRole("INTEGRATION");
105
+ await apiKeys.revoke(chaves[0].publicId);
106
+ ```
107
+
108
+ Nenhum consumidor em `apps/showcase` (verificado por grep).
109
+
110
+ ## Testes (não executados)
111
+
112
+ - `tests/module-manifest.test.mjs`: verifica `id`, `requires`, `configKey` do `dist/module.json` (exige build prévio).
113
+
114
+ ## Limitações
115
+
116
+ - O segredo da chave criada vem no campo `apiKey` da resposta (`ApiKeyCreateResponse`); o scaffold do fe-security tipa `key?`, então leia `apiKey`.
117
+ - O backend expõe também `GET /apikeys/roles` e `GET /apikeys/me`, sem constante em `ApiKeyPaths`.
118
+
@@ -0,0 +1,88 @@
1
+ ---
2
+ tags: [seedgrid, front, modulo, fe-audit]
3
+ fonte: front/seedgrid-fe-components/packages/modules/seedgrid-fe-audit
4
+ branch: main
5
+ commit: ad30fc11de
6
+ analisado-em: 2026-10-14
7
+ ---
8
+
9
+ # @seedgrid/fe-audit
10
+
11
+ Módulo front de **auditoria**: consulta somente-leitura do trilho de auditoria (audit log) com filtros e detalhe antes/depois. Compõe sobre o motor de sessão do [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security]]. Faz parte dos [[SeedGrid/SeedGrid-components/modulos/Visao-geral|Módulos front]].
12
+
13
+ Backend: [[SeedGrid/Extensions/audit/Visao-geral|extension audit]] — os paths batem com `java/seedgrid-quarkus-ext-audit/seedgrid-quarkus-ext-audit-core/runtime/src/main/java/br/com/seedgrid/audit/core/controllers/RestControllerPath.java` (`/audit-logs`, `/{id}`, `/entities`, `/users`) (**Confirmado**). O README e o comentário de `src/paths.ts` citam o "Audit Log Controller do `seedgrid-report-api`" e a lib `seedgrid-quarkus-lib-audit`; a extension do monorepo expõe os mesmos paths.
14
+
15
+ ## Pacote
16
+
17
+ | Item | Valor |
18
+ |---|---|
19
+ | Nome npm / versão | `@seedgrid/fe-audit` `2026.7.0` |
20
+ | peerDependencies | `@seedgrid/fe-core: *`, `@seedgrid/fe-security: *` |
21
+ | `files` | `dist` (sem `scaffold`) |
22
+ | Build | `tsc -p tsconfig.json` + `postbuild` `emit-module-manifest.mjs` → `dist/module.json` |
23
+ | `exports` | `.` → `./dist/index.{d.ts,js}`; `./server` → `./dist/server/index.{d.ts,js}` |
24
+
25
+ Dependência de módulo: **requer `security`** (usa `SecurityServer` e `PaginatedResult` de `@seedgrid/fe-security`).
26
+
27
+ ## Exports públicos
28
+
29
+ | Export | Tipo | Subpath | Descrição | Fonte |
30
+ |---|---|---|---|---|
31
+ | `AuditPaths` | const | `.` | `logs`, `entities`, `users`, `byId(id)` | `front/seedgrid-fe-components/packages/modules/seedgrid-fe-audit/src/paths.ts → AuditPaths` |
32
+ | `AuditOperation` | type | `.` | `"CREATE" \| "UPDATE" \| "DELETE" \| "READ" \| "OTHER"` | `.../src/audit.ts → AuditOperation` |
33
+ | `AuditLogEntry` | interface | `.` | Registro com `beforeState`/`afterState` (JSON serializado), origem, IP, user-agent, `metadata?` | `.../src/audit.ts → AuditLogEntry` |
34
+ | `AuditLogFilters` | interface | `.` | Filtros do `GET /audit-logs` + `page`/`size` | `.../src/audit.ts → AuditLogFilters` |
35
+ | `AuditLogEntityOption` | interface | `.` | `{ id; entity }` | `.../src/audit.ts → AuditLogEntityOption` |
36
+ | `AuditLogUserOption` | interface | `.` | `{ id; userName }` | `.../src/audit.ts → AuditLogUserOption` |
37
+ | `createAuditServer` | função | `./server` | `(session) => AuditServer` | `.../src/server/create-audit-server.ts → createAuditServer` |
38
+ | `AuditServer` | interface | `./server` | `searchLogs`, `listEntities`, `listUsers`, `getById` | `.../src/server/create-audit-server.ts → AuditServer` |
39
+
40
+ Contagem: `.` = 6; `./server` = 2.
41
+
42
+ ## Registro no @seedgrid/fe-core (manifesto do CLI)
43
+
44
+ `SeedGridCliModuleManifest` (tipo de [[SeedGrid/SeedGrid-components/pacotes/fe-core|@seedgrid/fe-core]]): `id: "audit"`, `requires: ["security"]`, `configKey: "audit"`. Sem `navigation`, `messages`, `provider` (**Confirmado**, `src/module.ts`).
45
+
46
+ ## Páginas, rotas e permissões
47
+
48
+ **Nenhuma tela.** Não há pasta `scaffold/`; as telas de lista/detalhe de auditoria não são entregues pelo pacote ou pelo CLI. Nenhuma permissão é referenciada no pacote.
49
+
50
+ ## APIs backend chamadas (`createAuditServer`)
51
+
52
+ | Método | Path | Função |
53
+ |---|---|---|
54
+ | GET | `/audit-logs?<filtros>` | `searchLogs` (filtros não vazios viram query string) |
55
+ | GET | `/audit-logs/entities` | `listEntities` |
56
+ | GET | `/audit-logs/users` | `listUsers` |
57
+ | GET | `/audit-logs/{id}` | `getById` |
58
+
59
+ ## Separação client/server
60
+
61
+ `.` só tipos/constantes; `./server` SERVER-ONLY (sessão do fe-security). Só leitura — nenhuma mutação.
62
+
63
+ ## Configuração
64
+
65
+ Nenhuma variável de ambiente lida (verificado com `grep process.env`). Sem objetos de configuração.
66
+
67
+ ## Exemplo (fonte: README)
68
+
69
+ ```ts
70
+ import { createSecurityServer } from "@seedgrid/fe-security/server";
71
+ import { createAuditServer } from "@seedgrid/fe-audit/server";
72
+
73
+ const session = createSecurityServer({ /* ... */ });
74
+ export const audit = createAuditServer(session);
75
+ const page = await audit.searchLogs({ entity: "User", operation: "UPDATE", operationDateFrom: "2026-07-01", page: 0, size: 20 });
76
+ ```
77
+
78
+ Sem consumidor em `apps/showcase`.
79
+
80
+ ## Testes (não executados)
81
+
82
+ `tests/module-manifest.test.mjs` — valida `id`, `requires`, `configKey` de `dist/module.json`.
83
+
84
+ ## Limitações
85
+
86
+ - Não há telas de busca/detalhe de auditoria no pacote (o `files` não inclui `scaffold`).
87
+ - As permissões de leitura do audit não são modeladas no front.
88
+
@@ -0,0 +1,131 @@
1
+ ---
2
+ tags: [seedgrid, front, modulo, fe-backup]
3
+ fonte: front/seedgrid-fe-components/packages/modules/seedgrid-fe-backup
4
+ branch: main
5
+ commit: ad30fc11de
6
+ analisado-em: 2026-10-14
7
+ ---
8
+
9
+ # @seedgrid/fe-backup
10
+
11
+ Módulo front de **backup/exportação de dados**: cria jobs de export, acompanha o status com polling, baixa o ZIP gerado e remove jobs. Compõe sobre o motor de sessão do [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security]]. Parte dos [[SeedGrid/SeedGrid-components/modulos/Visao-geral|Módulos front]].
12
+
13
+ Backend: [[SeedGrid/Extensions/backup/Visao-geral|extension backup]] — `BackupPaths` espelha `java/seedgrid-quarkus-ext-backup/runtime/src/main/java/br/com/seedgrid/backup/controllers/RestControllerPath.java` (`/exports`, `/exports/{jobId}`, `/exports/{jobId}/download`) (**Confirmado**). O `scaffold/README.md` registra que `BackupFormat` e `ArtifactInfo.id` foram corrigidos contra `BackupFormat.java`/`ExportResponse.java` reais.
14
+
15
+ ## Pacote
16
+
17
+ | Item | Valor |
18
+ |---|---|
19
+ | Nome npm / versão | `@seedgrid/fe-backup` `2026.7.0` |
20
+ | peerDependencies | `@seedgrid/fe-core: *`, `@seedgrid/fe-security: *` |
21
+ | `files` | `dist`, `scaffold` |
22
+ | Build | `tsc -p tsconfig.json` + `postbuild` `emit-module-manifest.mjs` → `dist/module.json` |
23
+ | Test (script) | `pnpm run build && node --test tests/module-manifest.test.mjs tests/export-status.test.mjs` |
24
+ | `exports` | `.` → `./dist/index.{d.ts,js}`; `./server` → `./dist/server/index.{d.ts,js}` |
25
+
26
+ Dependência de módulo: **requer `security`**.
27
+
28
+ ## Exports públicos
29
+
30
+ | Export | Tipo | Subpath | Descrição | Fonte |
31
+ |---|---|---|---|---|
32
+ | `BackupPaths` | const | `.` | `exports`, `byId(jobId)`, `download(jobId)` | `front/seedgrid-fe-components/packages/modules/seedgrid-fe-backup/src/paths.ts → BackupPaths` |
33
+ | `BackupFormat` | type | `.` | `"CSV_ZIP" \| "SQL_DUMP_ZIP"` | `.../src/backup.ts → BackupFormat` |
34
+ | `ExportScope` | type | `.` | `"CUSTOM" \| "DOMAIN" \| "RAW"` | `.../src/backup.ts → ExportScope` |
35
+ | `ExportStatus` | type | `.` | `REQUESTED`, `QUEUED`, `RUNNING`, `DONE`, `DONE_NOTIFIED`, `FAILED`, `CANCELLED`, `EXPIRED` | `.../src/backup.ts → ExportStatus` |
36
+ | `ExportRequest` | interface | `.` | `{ format; scope; includeAttachments?; options? }` | `.../src/backup.ts → ExportRequest` |
37
+ | `ArtifactInfo` | interface | `.` | Artefato (`id: number`, `filename`, `sizeBytes`, `sha256`…) | `.../src/backup.ts → ArtifactInfo` |
38
+ | `ExportResponse` | type | `.` | Status/resultado do job (`progress`, `downloadable`, `artifacts`…) | `.../src/backup.ts → ExportResponse` |
39
+ | `ExportStatusGroup` | type | `.` | `"pending" \| "running" \| "done" \| "failed" \| "terminal"` | `.../src/export-status.ts → ExportStatusGroup` |
40
+ | `classifyExportStatus` | função | `.` | Mapeia `ExportStatus` → grupo | `.../src/export-status.ts → classifyExportStatus` |
41
+ | `isExportInProgress` | função | `.` | `REQUESTED`/`QUEUED`/`RUNNING` | `.../src/export-status.ts → isExportInProgress` |
42
+ | `isExportDownloadable` | função | `.` | `DONE`/`DONE_NOTIFIED` | `.../src/export-status.ts → isExportDownloadable` |
43
+ | `backupMessages` | const | `.` | i18n: `en`, `es`, `fr`, `pt-BR`, `pt-PT` (merge sobre `en`) | `.../src/messages.ts → backupMessages` |
44
+ | `createBackupServer` | função | `./server` | `(session) => BackupServer` | `.../src/server/create-backup-server.ts → createBackupServer` |
45
+ | `BackupServer` | interface | `./server` | `createExport`, `listExports`, `getExportStatus`, `deleteExport`, `downloadExport` (devolve `Response` cru via `session.fetchWithSession`) | `.../src/server/create-backup-server.ts → BackupServer` |
46
+
47
+ Contagem: `.` = 12; `./server` = 2.
48
+
49
+ ## Registro no @seedgrid/fe-core (manifesto do CLI)
50
+
51
+ `SeedGridCliModuleManifest` ([[SeedGrid/SeedGrid-components/pacotes/fe-core|@seedgrid/fe-core]]), `src/module.ts` (**Confirmado**):
52
+
53
+ | Campo | Valor |
54
+ |---|---|
55
+ | `id` / `configKey` | `backup` / `backup` |
56
+ | `requires` | `["security"]` |
57
+ | `navigation` | `{ import: "useBackupAppShellSections", from: "@/modules/backup" }` |
58
+ | `messages` | `{ import: "backupMessages", from: "@seedgrid/fe-backup" }` |
59
+ | `provider` | ausente |
60
+
61
+ Menu (`scaffold/src/modules/backup/useBackupAppShellSections.tsx`): seção `backup` (order 50) → item `backup-management` → filho `backup-exports` (`/backup/exports`), visível só com `JOB_READ`.
62
+
63
+ ## Páginas (scaffold) e permissões
64
+
65
+ | Rota | Arquivo | Permissão |
66
+ |---|---|---|
67
+ | `/backup/exports` | `scaffold/src/app/backup/exports/(list)/page.tsx` | `RouteGuard` `JOB_READ`; polling a cada `backupConfig.polling.intervalMs` |
68
+ | `/backup/exports/new` | `scaffold/src/app/backup/exports/(create)/new/page.tsx` | `RouteGuard` `JOB_CREATE` |
69
+ | `GET /api/backup/exports/[jobId]/download` (Route Handler) | `scaffold/src/app/api/backup/exports/[jobId]/download/route.ts → GET` | repassa `Authorization`/`Cookie` ao backend; 404/410/502 mapeados |
70
+
71
+ Scaffold extra: `modules/backup/config.ts` (`backupConfig`), `services/backup-api.ts` (`configureBackupApi`, `extractBackupApiMessage`, `isApiClientError`), `services/backup-service.ts` (`backupService`), `components/ExportStatusBadge.tsx`, `types.ts` (reexporta a lib).
72
+
73
+ ## APIs backend chamadas
74
+
75
+ | Método | Path | Onde |
76
+ |---|---|---|
77
+ | POST | `/exports` | `createExport` (lib) / `backupService.createExportJob` (scaffold) |
78
+ | GET | `/exports` (scaffold envia `?page=&size=`) | `listExports` / `listExportJobs` |
79
+ | GET | `/exports/{jobId}` | `getExportStatus` |
80
+ | DELETE | `/exports/{jobId}` | `deleteExport` / `deleteExportJob` |
81
+ | GET | `/exports/{jobId}/download` | `downloadExport` / Route Handler de download |
82
+
83
+ 5 endpoints.
84
+
85
+ ## Separação client/server
86
+
87
+ - Lib `.`: tipos, helpers puros e mensagens — client-safe. `./server`: SERVER-ONLY.
88
+ - Scaffold client: `backupConfig.apiBaseUrl` = `"/api"` quando `window` existe (proxy Next.js "para evitar CORS"); no server usa `appEnvironment.hosts.apiOrigin` (de `@/config/environment` do app).
89
+
90
+ ## Configuração
91
+
92
+ Nenhuma variável de ambiente lida diretamente (verificado com `grep process.env`). Há um objeto de configuração no scaffold:
93
+
94
+ | Propriedade | Tipo | Valores aceitos | Padrão | Obrigatória | Comportamento | Uso | Relações | Fase | Origem |
95
+ |---|---|---|---|---|---|---|---|---|---|
96
+ | `backupConfig.apiBaseUrl` | string | URL ou `/api` | `"/api"` no browser; `appEnvironment.hosts.apiOrigin` no server | Não (calculado) | Base do `createApiClient` do scaffold | `backup-api.ts → privateClient` | depende de `@/config/environment` (app) | runtime client / runtime server | `scaffold/src/modules/backup/config.ts → resolveApiBaseUrl` |
97
+ | `backupConfig.pagination.defaultPageSize` | number | inteiro | `10` | Não | Tamanho de página inicial | telas de lista | — | runtime client | `scaffold/.../config.ts → backupConfig` |
98
+ | `backupConfig.pagination.pageSizeOptions` | number[] | inteiros | `[10, 20, 50]` | Não | Opções do paginador | telas de lista | — | runtime client | idem |
99
+ | `backupConfig.polling.intervalMs` | number | ms | `5000` | Não | Intervalo de polling dos jobs em andamento | `(list)/page.tsx` | `isExportInProgress` | runtime client | idem |
100
+ | `backupConfig.routes.exports` | string | rota | `"/backup/exports"` | Não | Rota da lista / menu | `useBackupAppShellSections` | — | runtime client | idem |
101
+ | `backupConfig.routes.newExport` | string | rota | `"/backup/exports/new"` | Não | Rota de criação | telas | — | runtime client | idem |
102
+
103
+ `appEnvironment.hosts.apiOrigin` vem do app/fe-security (não deste pacote) — ver [[SeedGrid/SeedGrid-components/modulos/fe-security|fe-security]].
104
+
105
+ ## Exemplo (fonte: README)
106
+
107
+ ```ts
108
+ import { createBackupServer } from "@seedgrid/fe-backup/server";
109
+ const backup = createBackupServer(session);
110
+ const job = await backup.createExport({ format: "CSV_ZIP", scope: "DOMAIN" });
111
+ const status = await backup.getExportStatus(job.jobId);
112
+ ```
113
+
114
+ ```ts
115
+ import { classifyExportStatus, isExportDownloadable } from "@seedgrid/fe-backup";
116
+ ```
117
+
118
+ Sem consumidor em `apps/showcase`.
119
+
120
+ ## Testes (não executados)
121
+
122
+ - `tests/module-manifest.test.mjs`: `id`, `requires`, `configKey`, `messages`, `navigation`, `provider === undefined`.
123
+ - `tests/export-status.test.mjs`: classificação dos 8 status, `isExportInProgress`, `isExportDownloadable`.
124
+ - Scaffold (Vitest + Testing Library): `page.test.tsx` (lista e criação), `ExportStatusBadge.test.tsx`, `backup-api.test.ts`, `backup-service.test.ts`, `useBackupAppShellSections.test.tsx`.
125
+
126
+ ## Limitações
127
+
128
+ - O client chama `/api/exports...`; o scaffold só traz o proxy de download, então o app precisa de um proxy genérico `/api/*`.
129
+ - `configureBackupApi` não é chamado no scaffold: ligue o token no seu app.
130
+ - `ExportStatusGroup` assume `pending`, `running`, `done`, `failed` ou `terminal`.
131
+