@jaimevalasek/aioson 1.3.0 → 1.4.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 (213) hide show
  1. package/README.md +19 -2
  2. package/docs/pt/README.md +62 -2
  3. package/docs/pt/advisor-spec.md +5 -5
  4. package/docs/pt/agentes-customizados.md +670 -0
  5. package/docs/pt/agentes.md +111 -13
  6. package/docs/pt/automacao-squads.md +407 -0
  7. package/docs/pt/cenarios.md +3 -3
  8. package/docs/pt/clientes-ai.md +62 -0
  9. package/docs/pt/comandos-cli.md +167 -17
  10. package/docs/pt/deyvin.md +115 -0
  11. package/docs/pt/genome-3.0-spec.md +11 -11
  12. package/docs/pt/inicio-rapido.md +45 -0
  13. package/docs/pt/memoria-contexto.md +255 -0
  14. package/docs/pt/output-strategy-delivery.md +655 -0
  15. package/docs/pt/profiler-system.md +17 -17
  16. package/docs/pt/runtime-observability.md +5 -1
  17. package/docs/pt/skills.md +175 -0
  18. package/docs/pt/{squad-genoma.md → squad-genome.md} +81 -75
  19. package/docs/testing/genome-2.0-rollout.md +1 -1
  20. package/package.json +3 -3
  21. package/src/agents.js +21 -5
  22. package/src/backup-provider.js +303 -0
  23. package/src/cli.js +178 -2
  24. package/src/commands/agents.js +22 -4
  25. package/src/commands/backup.js +533 -0
  26. package/src/commands/cloud.js +17 -17
  27. package/src/commands/context-pack.js +45 -0
  28. package/src/commands/implementation-plan.js +340 -0
  29. package/src/commands/learning.js +134 -0
  30. package/src/commands/live.js +1583 -0
  31. package/src/commands/runtime.js +833 -2
  32. package/src/commands/scan-project.js +288 -24
  33. package/src/commands/setup-context.js +23 -0
  34. package/src/commands/skill.js +558 -0
  35. package/src/commands/squad-agent-create.js +788 -0
  36. package/src/commands/squad-doctor.js +51 -1
  37. package/src/commands/squad-investigate.js +261 -0
  38. package/src/commands/squad-learning.js +209 -0
  39. package/src/commands/squad-pipeline.js +247 -1
  40. package/src/commands/squad-plan.js +329 -0
  41. package/src/commands/squad-status.js +1 -1
  42. package/src/commands/squad-validate.js +57 -1
  43. package/src/commands/test-agents.js +6 -1
  44. package/src/commands/workflow-next.js +8 -1
  45. package/src/commands/workflow-status.js +250 -0
  46. package/src/constants.js +80 -16
  47. package/src/context-memory.js +837 -0
  48. package/src/context-writer.js +2 -0
  49. package/src/delivery-runner.js +319 -0
  50. package/src/genome-files.js +1 -1
  51. package/src/genome-format.js +1 -1
  52. package/src/i18n/messages/en.js +206 -7
  53. package/src/i18n/messages/es.js +123 -6
  54. package/src/i18n/messages/fr.js +122 -5
  55. package/src/i18n/messages/pt-BR.js +205 -12
  56. package/src/installer.js +30 -2
  57. package/src/lib/genomes/compat.js +1 -1
  58. package/src/runtime-store.js +780 -42
  59. package/src/session-handoff.js +77 -0
  60. package/template/.aioson/agents/analyst.md +36 -9
  61. package/template/.aioson/agents/architect.md +20 -5
  62. package/template/.aioson/agents/dev.md +135 -15
  63. package/template/.aioson/agents/deyvin.md +166 -0
  64. package/template/.aioson/agents/discovery-design-doc.md +25 -1
  65. package/template/.aioson/agents/{genoma.md → genome.md} +20 -20
  66. package/template/.aioson/agents/orache.md +371 -0
  67. package/template/.aioson/agents/orchestrator.md +37 -2
  68. package/template/.aioson/agents/pair.md +5 -0
  69. package/template/.aioson/agents/pm.md +17 -5
  70. package/template/.aioson/agents/product.md +58 -22
  71. package/template/.aioson/agents/profiler-enricher.md +1 -1
  72. package/template/.aioson/agents/profiler-forge.md +9 -9
  73. package/template/.aioson/agents/profiler-researcher.md +1 -1
  74. package/template/.aioson/agents/qa.md +17 -5
  75. package/template/.aioson/agents/setup.md +81 -5
  76. package/template/.aioson/agents/squad.md +675 -28
  77. package/template/.aioson/agents/ux-ui.md +277 -34
  78. package/template/.aioson/config.md +175 -0
  79. package/template/.aioson/context/spec.md.template +17 -0
  80. package/template/.aioson/genomes/.gitkeep +0 -0
  81. package/template/.aioson/installed-skills/.gitkeep +0 -0
  82. package/template/.aioson/locales/en/agents/analyst.md +26 -4
  83. package/template/.aioson/locales/en/agents/architect.md +10 -0
  84. package/template/.aioson/locales/en/agents/dev.md +89 -4
  85. package/template/.aioson/locales/en/agents/deyvin.md +129 -0
  86. package/template/.aioson/locales/en/agents/{genoma.md → genome.md} +14 -14
  87. package/template/.aioson/locales/en/agents/orchestrator.md +36 -2
  88. package/template/.aioson/locales/en/agents/pair.md +5 -0
  89. package/template/.aioson/locales/en/agents/pm.md +7 -0
  90. package/template/.aioson/locales/en/agents/product.md +35 -17
  91. package/template/.aioson/locales/en/agents/qa.md +7 -0
  92. package/template/.aioson/locales/en/agents/setup.md +51 -5
  93. package/template/.aioson/locales/en/agents/squad.md +203 -15
  94. package/template/.aioson/locales/en/agents/ux-ui.md +375 -35
  95. package/template/.aioson/locales/es/agents/analyst.md +16 -4
  96. package/template/.aioson/locales/es/agents/architect.md +10 -0
  97. package/template/.aioson/locales/es/agents/dev.md +70 -2
  98. package/template/.aioson/locales/es/agents/deyvin.md +89 -0
  99. package/template/.aioson/locales/es/agents/{genoma.md → genome.md} +13 -13
  100. package/template/.aioson/locales/es/agents/orache.md +103 -0
  101. package/template/.aioson/locales/es/agents/orchestrator.md +36 -2
  102. package/template/.aioson/locales/es/agents/pair.md +5 -0
  103. package/template/.aioson/locales/es/agents/pm.md +7 -0
  104. package/template/.aioson/locales/es/agents/product.md +13 -3
  105. package/template/.aioson/locales/es/agents/qa.md +7 -0
  106. package/template/.aioson/locales/es/agents/setup.md +28 -5
  107. package/template/.aioson/locales/es/agents/squad.md +221 -15
  108. package/template/.aioson/locales/es/agents/ux-ui.md +26 -25
  109. package/template/.aioson/locales/fr/agents/analyst.md +16 -4
  110. package/template/.aioson/locales/fr/agents/architect.md +10 -0
  111. package/template/.aioson/locales/fr/agents/dev.md +70 -2
  112. package/template/.aioson/locales/fr/agents/deyvin.md +89 -0
  113. package/template/.aioson/locales/fr/agents/{genoma.md → genome.md} +7 -7
  114. package/template/.aioson/locales/fr/agents/orache.md +104 -0
  115. package/template/.aioson/locales/fr/agents/orchestrator.md +36 -2
  116. package/template/.aioson/locales/fr/agents/pair.md +5 -0
  117. package/template/.aioson/locales/fr/agents/pm.md +7 -0
  118. package/template/.aioson/locales/fr/agents/product.md +13 -3
  119. package/template/.aioson/locales/fr/agents/qa.md +7 -0
  120. package/template/.aioson/locales/fr/agents/setup.md +28 -5
  121. package/template/.aioson/locales/fr/agents/squad.md +216 -10
  122. package/template/.aioson/locales/fr/agents/ux-ui.md +26 -25
  123. package/template/.aioson/locales/pt-BR/agents/analyst.md +26 -4
  124. package/template/.aioson/locales/pt-BR/agents/architect.md +10 -0
  125. package/template/.aioson/locales/pt-BR/agents/dev.md +93 -4
  126. package/template/.aioson/locales/pt-BR/agents/deyvin.md +129 -0
  127. package/template/.aioson/locales/pt-BR/agents/{genoma.md → genome.md} +49 -49
  128. package/template/.aioson/locales/pt-BR/agents/orache.md +137 -0
  129. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +36 -2
  130. package/template/.aioson/locales/pt-BR/agents/pair.md +5 -0
  131. package/template/.aioson/locales/pt-BR/agents/pm.md +7 -0
  132. package/template/.aioson/locales/pt-BR/agents/product.md +35 -17
  133. package/template/.aioson/locales/pt-BR/agents/qa.md +7 -0
  134. package/template/.aioson/locales/pt-BR/agents/setup.md +51 -5
  135. package/template/.aioson/locales/pt-BR/agents/squad.md +486 -47
  136. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +361 -22
  137. package/template/.aioson/my-agents/.gitkeep +0 -0
  138. package/template/.aioson/rules/.gitkeep +0 -0
  139. package/template/.aioson/rules/squad/.gitkeep +0 -0
  140. package/template/.aioson/rules/squad/README.md +50 -0
  141. package/template/.aioson/schemas/genome-meta.schema.json +1 -1
  142. package/template/.aioson/schemas/genome.schema.json +1 -1
  143. package/template/.aioson/schemas/squad-blueprint.schema.json +11 -0
  144. package/template/.aioson/schemas/squad-manifest.schema.json +257 -1
  145. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +157 -0
  146. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +407 -0
  147. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +172 -0
  148. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +490 -0
  149. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +237 -0
  150. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +289 -0
  151. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +350 -0
  152. package/template/.aioson/skills/design/interface-design/SKILL.md +47 -0
  153. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -0
  154. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -0
  155. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +71 -0
  156. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -0
  157. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -0
  158. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +62 -0
  159. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -0
  160. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -0
  161. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -0
  162. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -0
  163. package/template/.aioson/skills/design-system/SKILL.md +92 -0
  164. package/template/.aioson/skills/design-system/cognitive-core-ui.skill +0 -0
  165. package/template/.aioson/skills/design-system/components/SKILL.md +274 -0
  166. package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
  167. package/template/.aioson/skills/design-system/dashboards/SKILL.md +184 -0
  168. package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
  169. package/template/.aioson/skills/design-system/foundations/SKILL.md +250 -0
  170. package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
  171. package/template/.aioson/skills/design-system/motion/SKILL.md +197 -0
  172. package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
  173. package/template/.aioson/skills/design-system/patterns/SKILL.md +231 -0
  174. package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
  175. package/template/.aioson/skills/squad/SKILL.md +58 -0
  176. package/template/.aioson/skills/squad/domains/.gitkeep +0 -0
  177. package/template/.aioson/skills/squad/formats/.gitkeep +0 -0
  178. package/template/.aioson/skills/squad/patterns/.gitkeep +0 -0
  179. package/template/.aioson/skills/squad/references/.gitkeep +0 -0
  180. package/template/.aioson/tasks/implementation-plan.md +288 -0
  181. package/template/.aioson/tasks/squad-create.md +1 -1
  182. package/template/.aioson/tasks/squad-execution-plan.md +279 -0
  183. package/template/.aioson/tasks/squad-export.md +1 -1
  184. package/template/.aioson/tasks/squad-investigate.md +44 -0
  185. package/template/.aioson/tasks/squad-learning-review.md +44 -0
  186. package/template/.aioson/tasks/squad-output-config.md +177 -0
  187. package/template/.aioson/tasks/squad-validate.md +1 -1
  188. package/template/.claude/commands/aioson/agent/deyvin.md +5 -0
  189. package/template/.claude/commands/aioson/agent/discovery-design-doc.md +5 -0
  190. package/template/.claude/commands/aioson/agent/genome.md +5 -0
  191. package/template/.claude/commands/aioson/agent/product.md +5 -0
  192. package/template/.claude/commands/aioson/agent/profiler-enricher.md +5 -0
  193. package/template/.claude/commands/aioson/agent/profiler-forge.md +5 -0
  194. package/template/.claude/commands/aioson/agent/profiler-researcher.md +5 -0
  195. package/template/.claude/commands/aioson/agent/squad.md +5 -0
  196. package/template/.gemini/GEMINI.md +2 -0
  197. package/template/.gemini/commands/aios-deyvin.toml +6 -0
  198. package/template/.gemini/commands/aios-pair.toml +6 -0
  199. package/template/AGENTS.md +34 -6
  200. package/template/CLAUDE.md +31 -4
  201. package/template/OPENCODE.md +6 -2
  202. package/template/squad-searches/.gitkeep +0 -0
  203. package/template/.aioson/skills/static/interface-design.md +0 -372
  204. package/template/.aioson/skills/static/premium-command-center-ui.md +0 -190
  205. /package/template/.aioson/{genomas → docs}/.gitkeep +0 -0
  206. /package/template/.claude/commands/aioson/{analyst.md → agent/analyst.md} +0 -0
  207. /package/template/.claude/commands/aioson/{architect.md → agent/architect.md} +0 -0
  208. /package/template/.claude/commands/aioson/{dev.md → agent/dev.md} +0 -0
  209. /package/template/.claude/commands/aioson/{orchestrator.md → agent/orchestrator.md} +0 -0
  210. /package/template/.claude/commands/aioson/{pm.md → agent/pm.md} +0 -0
  211. /package/template/.claude/commands/aioson/{qa.md → agent/qa.md} +0 -0
  212. /package/template/.claude/commands/aioson/{setup.md → agent/setup.md} +0 -0
  213. /package/template/.claude/commands/aioson/{ux-ui.md → agent/ux-ui.md} +0 -0
@@ -0,0 +1,237 @@
1
+ # Motion — Cognitive Core UI
2
+
3
+ Read after `design-tokens.md`. Add to context only when motion materially improves the result.
4
+
5
+ Motion is **purposeful and restrained**. Dashboards use minimal motion. Landing pages use more dramatic entrances and scroll effects.
6
+
7
+ ---
8
+
9
+ ## Principles
10
+
11
+ 1. **Functional first** — every animation communicates state change or hierarchy
12
+ 2. **Fast transitions** — UI state: 140ms. Theme: 240ms. Entrances: 400–600ms
13
+ 3. **Ease curves** — default `ease`. Entrances: `cubic-bezier(0.16, 1, 0.3, 1)` (smooth decelerate)
14
+ 4. **No bounce, no elastic** — this is a command center, not a toy
15
+ 5. **Always include** `@media (prefers-reduced-motion: reduce)` fallback
16
+
17
+ ---
18
+
19
+ ## CSS Keyframes
20
+
21
+ ```css
22
+ @keyframes fadeInUp {
23
+ from { opacity: 0; transform: translateY(20px); }
24
+ to { opacity: 1; transform: translateY(0); }
25
+ }
26
+ @keyframes fadeInDown {
27
+ from { opacity: 0; transform: translateY(-12px); }
28
+ to { opacity: 1; transform: translateY(0); }
29
+ }
30
+ @keyframes fadeIn {
31
+ from { opacity: 0; }
32
+ to { opacity: 1; }
33
+ }
34
+ @keyframes slideInLeft {
35
+ from { opacity: 0; transform: translateX(-20px); }
36
+ to { opacity: 1; transform: translateX(0); }
37
+ }
38
+ @keyframes slideInRight {
39
+ from { opacity: 0; transform: translateX(20px); }
40
+ to { opacity: 1; transform: translateX(0); }
41
+ }
42
+ @keyframes scaleIn {
43
+ from { opacity: 0; transform: scale(0.95); }
44
+ to { opacity: 1; transform: scale(1); }
45
+ }
46
+ @keyframes pulseGlow {
47
+ 0%, 100% { box-shadow: 0 0 20px var(--accent-glow); }
48
+ 50% { box-shadow: var(--shadow-glow-strong); }
49
+ }
50
+ @keyframes shimmer {
51
+ 0% { background-position: -200% 0; }
52
+ 100% { background-position: 200% 0; }
53
+ }
54
+ @keyframes progressFill {
55
+ from { width: 0%; }
56
+ }
57
+ @keyframes countUp {
58
+ from { opacity: 0; transform: translateY(8px); }
59
+ to { opacity: 1; transform: translateY(0); }
60
+ }
61
+
62
+ /* Reduced motion fallback */
63
+ @media (prefers-reduced-motion: reduce) {
64
+ *, *::before, *::after {
65
+ animation-duration: 0.01ms !important;
66
+ transition-duration: 0.01ms !important;
67
+ }
68
+ }
69
+ ```
70
+
71
+ ---
72
+
73
+ ## Entrance Patterns
74
+
75
+ ### Dashboard Page Load (staggered)
76
+
77
+ ```
78
+ Top bar: fadeInDown 0ms 300ms
79
+ Stats row: fadeInUp 100ms 400ms (each card +80ms delay)
80
+ Tab bar: fadeIn 250ms 300ms
81
+ Sidebar: slideInLeft 200ms 400ms
82
+ Content: fadeInUp 350ms 500ms (each card in grid +60ms stagger)
83
+ ```
84
+
85
+ **React helper:**
86
+ ```jsx
87
+ const stagger = (index, base = 0, step = 60) => ({
88
+ animation: `fadeInUp 500ms cubic-bezier(0.16, 1, 0.3, 1) ${base + index * step}ms both`,
89
+ });
90
+ // Usage on each card: style={{ ...stagger(cardIndex, 350) }}
91
+ ```
92
+
93
+ ### Landing Page Hero
94
+
95
+ ```
96
+ Mono label: fadeInUp 0ms 500ms
97
+ Heading: fadeInUp 150ms 600ms
98
+ Subtitle: fadeInUp 300ms 500ms
99
+ CTA buttons: fadeInUp 450ms 500ms
100
+ ```
101
+
102
+ ### Modal
103
+
104
+ ```css
105
+ .modal-backdrop { animation: fadeIn 200ms ease both; }
106
+ .modal-content { animation: scaleIn 300ms cubic-bezier(0.16, 1, 0.3, 1) both; }
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Hover Effects
112
+
113
+ ### Card Hover
114
+
115
+ ```jsx
116
+ onMouseEnter={e => {
117
+ e.currentTarget.style.borderColor = 'var(--border-medium)';
118
+ e.currentTarget.style.boxShadow = 'var(--shadow-glow)';
119
+ e.currentTarget.style.transform = 'translateY(-2px)';
120
+ }}
121
+ onMouseLeave={e => {
122
+ e.currentTarget.style.borderColor = '';
123
+ e.currentTarget.style.boxShadow = 'none';
124
+ e.currentTarget.style.transform = '';
125
+ }}
126
+ ```
127
+
128
+ Card must have: `transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease`
129
+
130
+ ### Button Hover
131
+ ```
132
+ Primary: background → var(--accent-hover)
133
+ Secondary: borderColor → var(--border-accent), color → var(--text-accent)
134
+ transition: 150ms ease
135
+ ```
136
+
137
+ ### Tab Hover (non-active)
138
+ `background: var(--bg-elevated)`, `border-radius: var(--radius-md) var(--radius-md) 0 0`
139
+
140
+ ### Sidebar Item Hover
141
+ `background: var(--bg-elevated)`, `color: var(--text-primary)`
142
+
143
+ ---
144
+
145
+ ## Loading States
146
+
147
+ ### Skeleton Shimmer
148
+
149
+ ```jsx
150
+ const skeletonStyle = {
151
+ background: `linear-gradient(90deg,
152
+ var(--bg-elevated) 25%,
153
+ var(--bg-overlay) 50%,
154
+ var(--bg-elevated) 75%)`,
155
+ backgroundSize: '200% 100%',
156
+ animation: 'shimmer 1.5s ease-in-out infinite',
157
+ borderRadius: 'var(--radius-md)',
158
+ };
159
+ // Usage: <div style={{ ...skeletonStyle, height: 20, width: '60%', marginBottom: 8 }} />
160
+ ```
161
+
162
+ ### Pulse Glow (Mode Panel when active)
163
+ ```css
164
+ animation: pulseGlow 3s ease-in-out infinite;
165
+ ```
166
+
167
+ ### Progress Bar Fill (on mount)
168
+ ```css
169
+ animation: progressFill 800ms cubic-bezier(0.16, 1, 0.3, 1) both;
170
+ ```
171
+
172
+ ### Stat Number Count-up
173
+ ```css
174
+ animation: countUp 600ms cubic-bezier(0.16, 1, 0.3, 1) both;
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Scroll-Triggered Animations (Landing Pages)
180
+
181
+ ```jsx
182
+ function useScrollReveal(ref, delay = 0) {
183
+ const [visible, setVisible] = useState(false);
184
+ useEffect(() => {
185
+ const obs = new IntersectionObserver(
186
+ ([e]) => { if (e.isIntersecting) { setVisible(true); obs.disconnect(); } },
187
+ { threshold: 0.15 }
188
+ );
189
+ if (ref.current) obs.observe(ref.current);
190
+ return () => obs.disconnect();
191
+ }, []);
192
+ return {
193
+ opacity: visible ? 1 : 0,
194
+ transform: visible ? 'translateY(0)' : 'translateY(24px)',
195
+ transition: `opacity 600ms cubic-bezier(0.16,1,0.3,1) ${delay}ms,
196
+ transform 600ms cubic-bezier(0.16,1,0.3,1) ${delay}ms`,
197
+ };
198
+ }
199
+
200
+ // Usage:
201
+ const ref = useRef(null);
202
+ const reveal = useScrollReveal(ref, 100);
203
+ <div ref={ref} style={reveal}>...</div>
204
+ ```
205
+
206
+ **CSS-only alternative (no JS):**
207
+ ```css
208
+ .reveal {
209
+ opacity: 0; transform: translateY(24px);
210
+ transition: opacity 600ms cubic-bezier(0.16,1,0.3,1), transform 600ms cubic-bezier(0.16,1,0.3,1);
211
+ }
212
+ .reveal.visible { opacity: 1; transform: translateY(0); }
213
+ ```
214
+
215
+ ---
216
+
217
+ ## Theme Transition
218
+
219
+ Apply to ALL themed containers so dark/light switch feels smooth:
220
+
221
+ ```jsx
222
+ const TT = { transition: 'background 240ms ease, color 240ms ease, border-color 240ms ease, box-shadow 240ms ease' };
223
+ // Or in CSS: transition: var(--transition-theme);
224
+ ```
225
+
226
+ ---
227
+
228
+ ## When to Use What
229
+
230
+ | Context | Level | Techniques |
231
+ |---|---|---|
232
+ | Dashboard | Minimal | Card hover, tab switch, theme transition, progress fill |
233
+ | Landing page | Moderate | Staggered entrances, scroll reveals, hero sequence, card hovers |
234
+ | Frontpage | Moderate | Hero entrance, scroll reveals, CTA glow pulse |
235
+ | Modal/Detail | Light | scaleIn entrance, fadeIn backdrop |
236
+ | Loading state | Ambient | Skeleton shimmer, pulse glow |
237
+ | Admin CRUD | None/minimal | Only theme transition + hover states |
@@ -0,0 +1,289 @@
1
+ # Patterns — Page Layouts (Cognitive Core UI)
2
+
3
+ Requires `design-tokens.md` + `components.md` loaded first.
4
+
5
+ These patterns define how to compose full pages. All use CSS variables from design-tokens.md.
6
+
7
+ ---
8
+
9
+ ## 1. Dashboard Shell
10
+
11
+ The base layout for any admin/overview interface.
12
+
13
+ ```
14
+ ┌────────────────────────────────────────────────────────┐
15
+ │ TOP BAR (sticky, bg-void, border-bottom) │
16
+ ├────────────────────────────────────────────────────────┤
17
+ │ STATS ROW: [StatCard] [StatCard] [StatCard] [StatCard]│
18
+ ├────────────────────────────────────────────────────────┤
19
+ │ TAB BAR (full width, border-bottom) │
20
+ ├───────────┬────────────────────────────────────────────┤
21
+ │ SIDEBAR │ CONTENT │
22
+ │ 200px │ ┌─ Section Header ──────────────────┐ │
23
+ │ tree nav │ │ Card Grid (auto-fill, 260px min) │ │
24
+ │ │ └───────────────────────────────────┘ │
25
+ │ │ ┌─ Section Header ──────────────────┐ │
26
+ │ │ │ Card Grid │ │
27
+ │ │ └───────────────────────────────────┘ │
28
+ └───────────┴────────────────────────────────────────────┘
29
+ ```
30
+
31
+ **CSS skeleton:**
32
+ ```css
33
+ .shell { min-height: 100vh; background: var(--bg-base); font-family: var(--font-body); }
34
+ .stats-row { display: flex; gap: var(--space-3); padding: var(--space-5) var(--space-5) 0; flex-wrap: wrap; }
35
+ .main-layout { display: flex; min-height: calc(100vh - 230px); }
36
+ .sidebar { width: 200px; flex-shrink: 0; border-right: 1px solid var(--border-subtle); padding: var(--space-4); transition: var(--transition-theme); }
37
+ .content { flex: 1; padding: var(--space-4) var(--space-5); overflow-y: auto; }
38
+ .card-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
39
+ .section { margin-bottom: var(--space-8); }
40
+ ```
41
+
42
+ **Variant — with feature panels (2-col below stats):**
43
+ ```css
44
+ .feature-row { display: grid; grid-template-columns: 1fr 280px; gap: var(--space-4); padding: var(--space-4) var(--space-5); }
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 2. Detail / Profile Page
50
+
51
+ For viewing a single entity (person, product, contact, project).
52
+
53
+ ```
54
+ ┌────────────────────────────────────────────────────────┐
55
+ │ TOP BAR │
56
+ ├────────────────────────────────────────────────────────┤
57
+ │ Breadcrumbs: Gallery → Entity Name │
58
+ │ PROFILE HEADER │
59
+ │ ┌───────────────────────────────────────────────────┐ │
60
+ │ │ [Avatar 96px] NAME (text-3xl, black) │ │
61
+ │ │ Role (accent, italic) │ │
62
+ │ │ ✦ Tagline │ │
63
+ │ │ │ │
64
+ │ │ [StatCard] [StatCard] [StatCard] [Badge][Badge]│ │
65
+ │ └───────────────────────────────────────────────────┘ │
66
+ ├────────────────────────────────────────────────────────┤
67
+ │ TAB BAR (Geral | DNA | Comunicação | Histórico | ...) │
68
+ ├───────────┬────────────────────────────────────────────┤
69
+ │ SIDEBAR │ TAB CONTENT │
70
+ │ 180px │ Varies per tab: │
71
+ │ │ — Card grid (2-col) │
72
+ │ │ — DNA analysis panels │
73
+ │ │ — History table │
74
+ └───────────┴────────────────────────────────────────────┘
75
+ ```
76
+
77
+ **Profile Header styles:**
78
+ ```css
79
+ .profile-header {
80
+ padding: var(--space-5) var(--space-6);
81
+ background: var(--bg-base);
82
+ border-bottom: 1px solid var(--border-subtle);
83
+ transition: var(--transition-theme);
84
+ }
85
+ .profile-avatar {
86
+ width: 96px; height: 96px;
87
+ border-radius: var(--radius-lg);
88
+ border: 2px solid var(--border-subtle);
89
+ object-fit: cover;
90
+ }
91
+ .profile-name {
92
+ font-family: var(--font-display); font-weight: var(--weight-black);
93
+ font-size: var(--text-3xl); color: var(--text-heading);
94
+ letter-spacing: var(--tracking-tight); line-height: var(--leading-tight);
95
+ }
96
+ .profile-role {
97
+ color: var(--accent); font-style: italic; font-size: var(--text-base);
98
+ }
99
+ .profile-tagline {
100
+ font-family: var(--font-mono); font-size: var(--text-xs);
101
+ color: var(--text-muted); letter-spacing: var(--tracking-wider);
102
+ text-transform: uppercase;
103
+ }
104
+ .profile-stats { display: flex; gap: var(--space-3); margin-top: var(--space-4); flex-wrap: wrap; }
105
+ .profile-badges { display: flex; gap: var(--space-2); align-items: center; }
106
+ ```
107
+
108
+ **Featured quote block (inside tab content):**
109
+ ```css
110
+ .quote-block {
111
+ padding: var(--space-8) var(--space-6);
112
+ text-align: center;
113
+ border-bottom: 1px solid var(--border-subtle);
114
+ }
115
+ .quote-text {
116
+ font-family: var(--font-display); font-size: var(--text-xl);
117
+ font-weight: var(--weight-medium); font-style: italic;
118
+ color: var(--text-primary); line-height: var(--leading-snug);
119
+ max-width: 680px; margin: 0 auto;
120
+ }
121
+ .quote-attribution {
122
+ font-family: var(--font-mono); font-size: var(--text-xs);
123
+ color: var(--text-muted); letter-spacing: var(--tracking-wider);
124
+ text-transform: uppercase; margin-top: var(--space-3);
125
+ }
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 3. Settings / Config Page
131
+
132
+ Apply the **Compact Density** scale from `design-tokens.md` throughout. Settings pages are operational UI, not marketing — no generous whitespace.
133
+
134
+ ```
135
+ ┌────────────────────────────────────────────────────────┐
136
+ │ TOP BAR │
137
+ ├───────────┬────────────────────────────────────────────┤
138
+ │ SIDEBAR │ SETTINGS TITLE (text-2xl, no description) │
139
+ │ │ │
140
+ │ General │ ┌─ Entity grid ──────────────────────┐ │
141
+ │ Security │ │ [Card 280px] [Card 280px] [Card] │ │ ← 3-col auto-fill
142
+ │ Billing │ │ name + ID + status badges │ │
143
+ │ Team │ │ [Ativar btn] [Editar btn] │ │
144
+ │ API │ └─────────────────────────────────────┘ │
145
+ │ │ │
146
+ │ │ ┌─ Section card (p-4 rounded-[22px]) ─┐ │
147
+ │ │ │ eyebrow (mono xs) + title (text-base)│ │
148
+ │ │ │ [row] dot · name model badges Editar│ │ ← divide-y py-2
149
+ │ │ │ [row] dot · name model badges Editar│ │
150
+ │ │ │ ▸ Sync / secondary tool (details) │ │ ← collapsed
151
+ │ │ └─────────────────────────────────────┘ │
152
+ │ │ │
153
+ │ │ ┌─ Danger Zone Card ──────────────────┐ │
154
+ │ │ │ border: var(--semantic-red-dim) │ │
155
+ │ │ └─────────────────────────────────────┘ │
156
+ └───────────┴────────────────────────────────────────────┘
157
+ ```
158
+
159
+ **Page heading:** `text-2xl` max — no verbose description subtitle on the page header.
160
+
161
+ **Entity cards (projects, providers, squads):**
162
+ - Grid: `grid-cols-[repeat(auto-fill,minmax(280px,1fr))]`, `gap: var(--space-3)`
163
+ - Card: `rounded-[18px] p-3`
164
+ - Name: `text-sm font-semibold truncate`
165
+ - ID: `font-mono text-[0.58rem] truncate`
166
+ - Status badges: `px-2 py-0.5 text-[0.58rem]`
167
+ - Actions: compact row at bottom — `py-1.5 text-[0.62rem]`
168
+
169
+ **Add/Edit forms → Modal pattern (not inline expansion):**
170
+ ```
171
+ + Adicionar button → opens modal (max-w-md, centered, backdrop)
172
+ Editar button → opens same modal pre-filled
173
+ Never use accordion/RevealPanel inside entity cards
174
+ ```
175
+
176
+ **Section cards (provider lists, license, LLM config):**
177
+ - Card: `rounded-[22px] p-4`
178
+ - Header row: eyebrow + title + right-side control (select, badge) in one flex row
179
+ - File path or meta: `font-mono text-[0.62rem] truncate` — one line below title, no card for it
180
+ - Row items: `divide-y divide-[border]` with `py-2`, `text-xs` names, `text-[0.65rem]` models
181
+ - Edit button: `px-2.5 py-1 text-[0.65rem] rounded-xl`
182
+
183
+ **Disclosure pattern for secondary tools:**
184
+ ```html
185
+ <details class="rounded-[16px] border bg-elevated mt-3">
186
+ <summary> <!-- flex: label + status badge + action button in one row --> </summary>
187
+ <div class="border-t px-3 pb-3 pt-2">
188
+ <!-- compact diff rows or secondary form -->
189
+ </div>
190
+ </details>
191
+ ```
192
+
193
+ **Form inputs inside modals and cards:**
194
+ - Input/Select: `px-3 py-2 text-xs rounded-xl`
195
+ - Label: `text-[0.65rem] mb-0.5`
196
+ - Submit button: `w-full px-3 py-2 text-xs rounded-xl`
197
+
198
+ ---
199
+
200
+ ## 4. Auth Page (Login / Register)
201
+
202
+ ```
203
+ ┌────────────────────────────────────────────────────────┐
204
+ │ bg-void (full viewport, dark) │
205
+ │ │
206
+ │ ┌─ Card max-w: 420px ─────────────────┐ │
207
+ │ │ [Logo] AppName (mono, weight-bold) │ │
208
+ │ │ SUBTITLE (mono, xs, muted, upper) │ │
209
+ │ │ │ │
210
+ │ │ MONO LABEL: EMAIL │ │
211
+ │ │ [Input] │ │
212
+ │ │ MONO LABEL: PASSWORD │ │
213
+ │ │ [Input] │ │
214
+ │ │ [Primary Button: full width] │ │
215
+ │ │ divider ─── ou ─── │ │
216
+ │ │ [Secondary Button: OAuth] │ │
217
+ │ │ Link: esqueceu / criar conta │ │
218
+ │ └──────────────────────────────────────┘ │
219
+ │ radial glow behind card (accent-glow) │
220
+ └────────────────────────────────────────────────────────┘
221
+ ```
222
+
223
+ ```css
224
+ .auth-shell {
225
+ min-height: 100vh; background: var(--bg-void);
226
+ display: flex; align-items: center; justify-content: center;
227
+ position: relative;
228
+ }
229
+ .auth-glow {
230
+ position: absolute;
231
+ width: 600px; height: 600px; border-radius: 50%;
232
+ background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);
233
+ pointer-events: none;
234
+ }
235
+ .auth-card {
236
+ background: var(--bg-surface); border: 1px solid var(--border-subtle);
237
+ border-radius: var(--radius-xl); padding: var(--space-8);
238
+ width: 100%; max-width: 420px; position: relative; z-index: 1;
239
+ }
240
+ ```
241
+
242
+ ---
243
+
244
+ ## 5. List-Detail (Split View)
245
+
246
+ ```
247
+ ┌────────────────────────────────────────────────────────┐
248
+ │ TOP BAR │
249
+ ├────────────────────────────────────────────────────────┤
250
+ │ TAB BAR + Filter badges │
251
+ ├──────────────────────┬─────────────────────────────────┤
252
+ │ LIST 340px │ DETAIL PANEL (flex: 1) │
253
+ │ ┌──────────────┐ │ Profile Header (compact) │
254
+ │ │ Item (active)│◄───│ border-left: 3px accent │
255
+ │ ├──────────────┤ │ Stat Cards row │
256
+ │ │ Item │ │ Tab sub-navigation │
257
+ │ ├──────────────┤ │ Content (cards, table, DNA) │
258
+ │ │ Item │ │ │
259
+ │ └──────────────┘ │ │
260
+ └──────────────────────┴─────────────────────────────────┘
261
+ ```
262
+
263
+ ```css
264
+ .list-panel { width: 340px; flex-shrink: 0; border-right: 1px solid var(--border-subtle); overflow-y: auto; }
265
+ .list-item { padding: var(--space-4); border-bottom: 1px solid var(--border-subtle); cursor: pointer; transition: var(--transition-theme); }
266
+ .list-item:hover { background: var(--bg-elevated); }
267
+ .list-item.active { background: var(--bg-elevated); border-left: 3px solid var(--accent); }
268
+ .detail-panel { flex: 1; overflow-y: auto; }
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Responsive Rules (all patterns)
274
+
275
+ ```css
276
+ @media (max-width: 768px) {
277
+ .main-layout { flex-direction: column; }
278
+ .sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--border-subtle); }
279
+ .card-grid { grid-template-columns: 1fr; }
280
+ .stats-row { flex-direction: column; }
281
+ .list-panel { width: 100%; border-right: none; border-bottom: 1px solid var(--border-subtle); }
282
+ }
283
+ @media (min-width: 768px) and (max-width: 1024px) {
284
+ .card-grid { grid-template-columns: repeat(2, 1fr); }
285
+ }
286
+ @media (min-width: 1024px) {
287
+ .card-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
288
+ }
289
+ ```