@polymorphism-tech/morph-spec 4.10.8 → 4.10.10
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.
- package/CLAUDE.md +3 -3
- package/LICENSE +71 -71
- package/README.md +2 -2
- package/bin/morph-spec.js +22 -0
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents/README.md +14 -14
- package/framework/agents/architecture/standards-architect.md +159 -159
- package/framework/agents/infrastructure/azure-architect.md +149 -149
- package/framework/agents/infrastructure/infra-architect.md +48 -48
- package/framework/hooks/README.md +204 -204
- package/framework/hooks/shared/phase-utils.js +139 -139
- package/framework/rules/csharp-standards.md +13 -13
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +16 -16
- package/framework/rules/testing-standards.md +14 -14
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +254 -254
- package/framework/skills/level-0-meta/morph-init/SKILL.md +57 -9
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +49 -16
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/standards/STANDARDS.json +2338 -2041
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +17 -17
- package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +206 -0
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/README.md +814 -814
- package/framework/templates/code/dotnet/contracts/Commands.cs +74 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +25 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +74 -74
- package/framework/templates/code/dotnet/contracts/README.md +74 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -173
- package/framework/templates/code/dotnet/frontend/component.razor +239 -239
- package/framework/templates/code/dotnet/jobs/agent.cs +163 -163
- package/framework/templates/code/dotnet/jobs/job.cs +171 -171
- package/framework/templates/code/dotnet/test.cs +239 -239
- package/framework/templates/code/sql/rls-policy.sql +57 -57
- package/framework/templates/code/sql/supabase-migration.sql +100 -100
- package/framework/templates/code/sql/supabase-migration.template.sql +113 -113
- package/framework/templates/code/typescript/contracts.ts +168 -168
- package/framework/templates/context/CONTEXT.md +181 -181
- package/framework/templates/docs/proposal.md +182 -182
- package/framework/templates/docs/user-stories.md +34 -34
- package/framework/templates/examples/design-system-examples.md +357 -357
- package/framework/templates/examples/spec-examples.md +90 -90
- package/framework/templates/feature/decisions.md +187 -187
- package/framework/templates/feature/recap.md +146 -146
- package/framework/templates/feature/tasks.md +199 -199
- package/framework/templates/infrastructure/azure/README.md +286 -286
- package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -426
- package/framework/templates/infrastructure/azure/parameters.dev.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +29 -29
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -67
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/docker/easypanel.template.json +54 -54
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +17 -0
- package/src/commands/agents/index.js +13 -13
- package/src/commands/agents/project-metrics.js +74 -0
- package/src/commands/project/install-plugin-cmd.js +28 -28
- package/src/commands/project/setup-infra-cmd.js +12 -12
- package/src/commands/standards/context-budget.js +89 -0
- package/src/commands/tasks/index.js +4 -4
- package/src/commands/templates/index.js +5 -5
- package/src/commands/utils/index.js +3 -3
- package/src/commands/validation/index.js +4 -4
- package/src/core/state/phase-state-machine.js +217 -217
- package/src/lib/agents/metrics-aggregator.js +56 -0
- package/src/lib/detectors/design-system-detector.js +73 -31
- package/src/lib/generators/design-system-generator.js +298 -298
- package/src/lib/generators/index.js +10 -10
- package/src/lib/generators/metadata-extractor.js +387 -387
- package/src/lib/stack-filter.js +65 -65
- package/src/lib/standards/digest-builder.js +57 -3
- package/src/lib/standards/index.js +7 -7
- package/src/lib/standards/standards-context-injector.js +302 -302
- package/src/lib/validators/architecture/architecture-validator.js +387 -387
- package/src/lib/validators/architecture/index.js +7 -7
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +316 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +279 -279
- package/src/lib/validators/blazor/blazor-validator.js +369 -369
- package/src/lib/validators/blazor/index.js +9 -9
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/content/index.js +7 -7
- package/src/lib/validators/contracts/index.js +7 -7
- package/src/lib/validators/css/css-validator.js +352 -352
- package/src/lib/validators/css/index.js +7 -7
- package/src/lib/validators/design-system/design-system-validator.js +231 -231
- package/src/lib/validators/design-system/index.js +7 -7
- package/src/lib/validators/nextjs/index.js +6 -6
- package/src/lib/validators/nextjs/next-component-validator.js +183 -183
- package/src/lib/validators/packages/index.js +7 -7
- package/src/lib/validators/packages/package-validator.js +360 -360
- package/src/lib/validators/shared/index.js +12 -12
- package/src/lib/validators/shared/issue-counter.js +18 -18
- package/src/lib/validators/shared/result-formatter.js +124 -124
- package/src/lib/validators/ui/index.js +7 -7
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -422
- package/src/scripts/global-install.js +58 -58
- package/src/scripts/install-plugin.js +126 -126
- package/src/utils/claude-md-injector.js +90 -90
- package/src/utils/file-copier.js +200 -200
- package/src/utils/logger.js +32 -32
- package/src/utils/skills-installer.js +178 -178
- package/src/utils/version-checker.js +175 -175
|
@@ -1,357 +1,357 @@
|
|
|
1
|
-
# Design System CSS Index Template
|
|
2
|
-
|
|
3
|
-
> Template de indice estruturado para arquivos CSS grandes.
|
|
4
|
-
> Copie este header para o inicio do seu `design-system.css`.
|
|
5
|
-
|
|
6
|
-
## Indice Padrao
|
|
7
|
-
|
|
8
|
-
```css
|
|
9
|
-
/* ===========================================================================
|
|
10
|
-
{PROJECT_NAME} Design System
|
|
11
|
-
===========================================================================
|
|
12
|
-
|
|
13
|
-
Indice de Secoes
|
|
14
|
-
================
|
|
15
|
-
|
|
16
|
-
1-99: Tokens e Variaveis CSS
|
|
17
|
-
100-199: Reset e Base Styles
|
|
18
|
-
200-299: Tipografia
|
|
19
|
-
300-399: Layout e Containers
|
|
20
|
-
400-499: Componentes Base (buttons, inputs, cards)
|
|
21
|
-
500-599: Componentes Compostos (forms, tables, lists)
|
|
22
|
-
600-699: Navegacao (header, sidebar, footer, menus)
|
|
23
|
-
700-799: Paginas Especificas
|
|
24
|
-
800-849: Modais e Overlays
|
|
25
|
-
850-899: Animacoes e Keyframes
|
|
26
|
-
900-949: Responsivo e Media Queries
|
|
27
|
-
950-979: Utilities e Helpers
|
|
28
|
-
980-989: Overrides de Fluent UI / MudBlazor
|
|
29
|
-
990-999: Hotfixes e Temporarios
|
|
30
|
-
|
|
31
|
-
Convencoes de Nomenclatura
|
|
32
|
-
==========================
|
|
33
|
-
|
|
34
|
-
Prefixo por Pagina:
|
|
35
|
-
- .home-* : Pagina inicial
|
|
36
|
-
- .checkout-* : Pagina de checkout
|
|
37
|
-
- .dashboard-* : Pagina de dashboard
|
|
38
|
-
- .auth-* : Paginas de autenticacao
|
|
39
|
-
|
|
40
|
-
Prefixo por Componente:
|
|
41
|
-
- .btn-* : Botoes
|
|
42
|
-
- .card-* : Cards
|
|
43
|
-
- .modal-* : Modais
|
|
44
|
-
- .form-* : Formularios
|
|
45
|
-
- .nav-* : Navegacao
|
|
46
|
-
|
|
47
|
-
Sufixos de Estado:
|
|
48
|
-
- *--active : Estado ativo
|
|
49
|
-
- *--disabled : Estado desabilitado
|
|
50
|
-
- *--loading : Estado de loading
|
|
51
|
-
- *--error : Estado de erro
|
|
52
|
-
|
|
53
|
-
Validacao:
|
|
54
|
-
morph-spec validate-css src/MyApp.Web
|
|
55
|
-
|
|
56
|
-
=========================================================================== */
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
/* ===========================================================================
|
|
60
|
-
SECAO 1-99: TOKENS E VARIAVEIS CSS
|
|
61
|
-
=========================================================================== */
|
|
62
|
-
|
|
63
|
-
:root {
|
|
64
|
-
/* Cores Primarias */
|
|
65
|
-
--primary: #3b82f6;
|
|
66
|
-
--primary-hover: #2563eb;
|
|
67
|
-
--primary-active: #1d4ed8;
|
|
68
|
-
|
|
69
|
-
/* Cores Secundarias */
|
|
70
|
-
--secondary: #6b7280;
|
|
71
|
-
--secondary-hover: #4b5563;
|
|
72
|
-
|
|
73
|
-
/* Cores Semanticas */
|
|
74
|
-
--success: #10b981;
|
|
75
|
-
--warning: #f59e0b;
|
|
76
|
-
--error: #ef4444;
|
|
77
|
-
--info: #06b6d4;
|
|
78
|
-
|
|
79
|
-
/* Neutros */
|
|
80
|
-
--neutral-50: #f9fafb;
|
|
81
|
-
--neutral-100: #f3f4f6;
|
|
82
|
-
--neutral-200: #e5e7eb;
|
|
83
|
-
--neutral-300: #d1d5db;
|
|
84
|
-
--neutral-400: #9ca3af;
|
|
85
|
-
--neutral-500: #6b7280;
|
|
86
|
-
--neutral-600: #4b5563;
|
|
87
|
-
--neutral-700: #374151;
|
|
88
|
-
--neutral-800: #1f2937;
|
|
89
|
-
--neutral-900: #111827;
|
|
90
|
-
|
|
91
|
-
/* Tipografia */
|
|
92
|
-
--font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
93
|
-
--font-family-mono: 'JetBrains Mono', monospace;
|
|
94
|
-
|
|
95
|
-
--font-size-xs: 0.75rem; /* 12px */
|
|
96
|
-
--font-size-sm: 0.875rem; /* 14px */
|
|
97
|
-
--font-size-base: 1rem; /* 16px */
|
|
98
|
-
--font-size-lg: 1.125rem; /* 18px */
|
|
99
|
-
--font-size-xl: 1.25rem; /* 20px */
|
|
100
|
-
--font-size-2xl: 1.5rem; /* 24px */
|
|
101
|
-
--font-size-3xl: 1.875rem; /* 30px */
|
|
102
|
-
--font-size-4xl: 2.25rem; /* 36px */
|
|
103
|
-
|
|
104
|
-
/* Espacamento (base 4px) */
|
|
105
|
-
--space-1: 0.25rem; /* 4px */
|
|
106
|
-
--space-2: 0.5rem; /* 8px */
|
|
107
|
-
--space-3: 0.75rem; /* 12px */
|
|
108
|
-
--space-4: 1rem; /* 16px */
|
|
109
|
-
--space-5: 1.25rem; /* 20px */
|
|
110
|
-
--space-6: 1.5rem; /* 24px */
|
|
111
|
-
--space-8: 2rem; /* 32px */
|
|
112
|
-
--space-10: 2.5rem; /* 40px */
|
|
113
|
-
--space-12: 3rem; /* 48px */
|
|
114
|
-
|
|
115
|
-
/* Border Radius */
|
|
116
|
-
--radius-sm: 0.25rem; /* 4px */
|
|
117
|
-
--radius-md: 0.5rem; /* 8px */
|
|
118
|
-
--radius-lg: 0.75rem; /* 12px */
|
|
119
|
-
--radius-xl: 1rem; /* 16px */
|
|
120
|
-
--radius-full: 9999px;
|
|
121
|
-
|
|
122
|
-
/* Sombras */
|
|
123
|
-
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
124
|
-
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
125
|
-
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
126
|
-
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
127
|
-
|
|
128
|
-
/* Transicoes */
|
|
129
|
-
--transition-fast: 150ms ease;
|
|
130
|
-
--transition-normal: 300ms ease;
|
|
131
|
-
--transition-slow: 500ms ease;
|
|
132
|
-
|
|
133
|
-
/* Z-Index */
|
|
134
|
-
--z-dropdown: 1000;
|
|
135
|
-
--z-sticky: 1020;
|
|
136
|
-
--z-fixed: 1030;
|
|
137
|
-
--z-modal-backdrop: 1040;
|
|
138
|
-
--z-modal: 1050;
|
|
139
|
-
--z-popover: 1060;
|
|
140
|
-
--z-tooltip: 1070;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
/* ===========================================================================
|
|
145
|
-
SECAO 100-199: RESET E BASE STYLES
|
|
146
|
-
=========================================================================== */
|
|
147
|
-
|
|
148
|
-
/* ... */
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
/* ===========================================================================
|
|
152
|
-
SECAO 200-299: TIPOGRAFIA
|
|
153
|
-
=========================================================================== */
|
|
154
|
-
|
|
155
|
-
/* ... */
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
/* ===========================================================================
|
|
159
|
-
SECAO 300-399: LAYOUT E CONTAINERS
|
|
160
|
-
=========================================================================== */
|
|
161
|
-
|
|
162
|
-
.page-layout {
|
|
163
|
-
min-height: 100vh;
|
|
164
|
-
display: flex;
|
|
165
|
-
flex-direction: column;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.page-content {
|
|
169
|
-
flex: 1;
|
|
170
|
-
padding: var(--space-6);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.container {
|
|
174
|
-
width: 100%;
|
|
175
|
-
max-width: 1280px;
|
|
176
|
-
margin: 0 auto;
|
|
177
|
-
padding: 0 var(--space-4);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
/* ===========================================================================
|
|
182
|
-
SECAO 400-499: COMPONENTES BASE
|
|
183
|
-
=========================================================================== */
|
|
184
|
-
|
|
185
|
-
/* Botoes */
|
|
186
|
-
.btn-primary { /* ... */ }
|
|
187
|
-
.btn-secondary { /* ... */ }
|
|
188
|
-
|
|
189
|
-
/* Cards */
|
|
190
|
-
.card { /* ... */ }
|
|
191
|
-
.card-premium { /* ... */ }
|
|
192
|
-
|
|
193
|
-
/* Inputs */
|
|
194
|
-
.input { /* ... */ }
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
/* ===========================================================================
|
|
198
|
-
SECAO 500-599: COMPONENTES COMPOSTOS
|
|
199
|
-
=========================================================================== */
|
|
200
|
-
|
|
201
|
-
/* Forms */
|
|
202
|
-
.form-group { /* ... */ }
|
|
203
|
-
.form-label { /* ... */ }
|
|
204
|
-
|
|
205
|
-
/* Tables */
|
|
206
|
-
.data-table { /* ... */ }
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
/* ===========================================================================
|
|
210
|
-
SECAO 600-699: NAVEGACAO
|
|
211
|
-
=========================================================================== */
|
|
212
|
-
|
|
213
|
-
.page-header-nav { /* ... */ }
|
|
214
|
-
.page-footer { /* ... */ }
|
|
215
|
-
.sidebar { /* ... */ }
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
/* ===========================================================================
|
|
219
|
-
SECAO 700-799: PAGINAS ESPECIFICAS
|
|
220
|
-
=========================================================================== */
|
|
221
|
-
|
|
222
|
-
/* Home */
|
|
223
|
-
.home-hero { /* ... */ }
|
|
224
|
-
.home-features { /* ... */ }
|
|
225
|
-
|
|
226
|
-
/* Checkout */
|
|
227
|
-
.checkout-form { /* ... */ }
|
|
228
|
-
.checkout-summary { /* ... */ }
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
/* ===========================================================================
|
|
232
|
-
SECAO 800-849: MODAIS E OVERLAYS
|
|
233
|
-
=========================================================================== */
|
|
234
|
-
|
|
235
|
-
.modal-overlay {
|
|
236
|
-
position: fixed;
|
|
237
|
-
inset: 0;
|
|
238
|
-
background: rgba(0, 0, 0, 0.5);
|
|
239
|
-
backdrop-filter: blur(4px);
|
|
240
|
-
z-index: var(--z-modal-backdrop);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
.modal-container {
|
|
244
|
-
position: fixed;
|
|
245
|
-
top: 50%;
|
|
246
|
-
left: 50%;
|
|
247
|
-
transform: translate(-50%, -50%);
|
|
248
|
-
z-index: var(--z-modal);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
/* ===========================================================================
|
|
253
|
-
SECAO 850-899: ANIMACOES E KEYFRAMES
|
|
254
|
-
=========================================================================== */
|
|
255
|
-
|
|
256
|
-
@keyframes slideInUp {
|
|
257
|
-
from {
|
|
258
|
-
opacity: 0;
|
|
259
|
-
transform: translateY(20px);
|
|
260
|
-
}
|
|
261
|
-
to {
|
|
262
|
-
opacity: 1;
|
|
263
|
-
transform: translateY(0);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
@keyframes scaleIn {
|
|
268
|
-
from {
|
|
269
|
-
opacity: 0;
|
|
270
|
-
transform: scale(0.95);
|
|
271
|
-
}
|
|
272
|
-
to {
|
|
273
|
-
opacity: 1;
|
|
274
|
-
transform: scale(1);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
.animate-slideInUp {
|
|
279
|
-
animation: slideInUp var(--transition-normal) forwards;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
.animate-scaleIn {
|
|
283
|
-
animation: scaleIn var(--transition-fast) forwards;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/* Stagger delays para animacoes em sequencia */
|
|
287
|
-
.stagger-1 { animation-delay: 0.1s; }
|
|
288
|
-
.stagger-2 { animation-delay: 0.2s; }
|
|
289
|
-
.stagger-3 { animation-delay: 0.3s; }
|
|
290
|
-
.stagger-4 { animation-delay: 0.4s; }
|
|
291
|
-
.stagger-5 { animation-delay: 0.5s; }
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
/* ===========================================================================
|
|
295
|
-
SECAO 900-949: RESPONSIVO E MEDIA QUERIES
|
|
296
|
-
=========================================================================== */
|
|
297
|
-
|
|
298
|
-
@media (max-width: 768px) {
|
|
299
|
-
/* Tablet e Mobile */
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
@media (max-width: 480px) {
|
|
303
|
-
/* Mobile */
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
/* ===========================================================================
|
|
308
|
-
SECAO 950-979: UTILITIES E HELPERS
|
|
309
|
-
=========================================================================== */
|
|
310
|
-
|
|
311
|
-
.sr-only {
|
|
312
|
-
position: absolute;
|
|
313
|
-
width: 1px;
|
|
314
|
-
height: 1px;
|
|
315
|
-
padding: 0;
|
|
316
|
-
margin: -1px;
|
|
317
|
-
overflow: hidden;
|
|
318
|
-
clip: rect(0, 0, 0, 0);
|
|
319
|
-
white-space: nowrap;
|
|
320
|
-
border: 0;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
/* ===========================================================================
|
|
325
|
-
SECAO 980-989: OVERRIDES DE FLUENT UI / MUDBLAZOR
|
|
326
|
-
=========================================================================== */
|
|
327
|
-
|
|
328
|
-
/* Fluent UI overrides */
|
|
329
|
-
.fluent-card {
|
|
330
|
-
/* Customizacoes */
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
/* ===========================================================================
|
|
335
|
-
SECAO 990-999: HOTFIXES E TEMPORARIOS
|
|
336
|
-
=========================================================================== */
|
|
337
|
-
|
|
338
|
-
/* TODO: Remover apos fix no componente X */
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
## Uso
|
|
342
|
-
|
|
343
|
-
1. Copie o header para o inicio do seu `design-system.css`
|
|
344
|
-
2. Substitua `{PROJECT_NAME}` pelo nome do seu projeto
|
|
345
|
-
3. Adicione suas classes CSS nas secoes apropriadas
|
|
346
|
-
4. Mantenha o indice atualizado conforme adiciona novas secoes
|
|
347
|
-
|
|
348
|
-
## Beneficios
|
|
349
|
-
|
|
350
|
-
- **Navegacao rapida:** Use Ctrl+G (go to line) para pular para secoes
|
|
351
|
-
- **Organizacao clara:** Cada tipo de componente em sua secao
|
|
352
|
-
- **Facil manutencao:** Encontre onde adicionar novos estilos
|
|
353
|
-
- **Evita conflitos:** Prefixos por pagina previnem colisoes
|
|
354
|
-
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
*Template MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
# Design System CSS Index Template
|
|
2
|
+
|
|
3
|
+
> Template de indice estruturado para arquivos CSS grandes.
|
|
4
|
+
> Copie este header para o inicio do seu `design-system.css`.
|
|
5
|
+
|
|
6
|
+
## Indice Padrao
|
|
7
|
+
|
|
8
|
+
```css
|
|
9
|
+
/* ===========================================================================
|
|
10
|
+
{PROJECT_NAME} Design System
|
|
11
|
+
===========================================================================
|
|
12
|
+
|
|
13
|
+
Indice de Secoes
|
|
14
|
+
================
|
|
15
|
+
|
|
16
|
+
1-99: Tokens e Variaveis CSS
|
|
17
|
+
100-199: Reset e Base Styles
|
|
18
|
+
200-299: Tipografia
|
|
19
|
+
300-399: Layout e Containers
|
|
20
|
+
400-499: Componentes Base (buttons, inputs, cards)
|
|
21
|
+
500-599: Componentes Compostos (forms, tables, lists)
|
|
22
|
+
600-699: Navegacao (header, sidebar, footer, menus)
|
|
23
|
+
700-799: Paginas Especificas
|
|
24
|
+
800-849: Modais e Overlays
|
|
25
|
+
850-899: Animacoes e Keyframes
|
|
26
|
+
900-949: Responsivo e Media Queries
|
|
27
|
+
950-979: Utilities e Helpers
|
|
28
|
+
980-989: Overrides de Fluent UI / MudBlazor
|
|
29
|
+
990-999: Hotfixes e Temporarios
|
|
30
|
+
|
|
31
|
+
Convencoes de Nomenclatura
|
|
32
|
+
==========================
|
|
33
|
+
|
|
34
|
+
Prefixo por Pagina:
|
|
35
|
+
- .home-* : Pagina inicial
|
|
36
|
+
- .checkout-* : Pagina de checkout
|
|
37
|
+
- .dashboard-* : Pagina de dashboard
|
|
38
|
+
- .auth-* : Paginas de autenticacao
|
|
39
|
+
|
|
40
|
+
Prefixo por Componente:
|
|
41
|
+
- .btn-* : Botoes
|
|
42
|
+
- .card-* : Cards
|
|
43
|
+
- .modal-* : Modais
|
|
44
|
+
- .form-* : Formularios
|
|
45
|
+
- .nav-* : Navegacao
|
|
46
|
+
|
|
47
|
+
Sufixos de Estado:
|
|
48
|
+
- *--active : Estado ativo
|
|
49
|
+
- *--disabled : Estado desabilitado
|
|
50
|
+
- *--loading : Estado de loading
|
|
51
|
+
- *--error : Estado de erro
|
|
52
|
+
|
|
53
|
+
Validacao:
|
|
54
|
+
morph-spec validate-css src/MyApp.Web
|
|
55
|
+
|
|
56
|
+
=========================================================================== */
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/* ===========================================================================
|
|
60
|
+
SECAO 1-99: TOKENS E VARIAVEIS CSS
|
|
61
|
+
=========================================================================== */
|
|
62
|
+
|
|
63
|
+
:root {
|
|
64
|
+
/* Cores Primarias */
|
|
65
|
+
--primary: #3b82f6;
|
|
66
|
+
--primary-hover: #2563eb;
|
|
67
|
+
--primary-active: #1d4ed8;
|
|
68
|
+
|
|
69
|
+
/* Cores Secundarias */
|
|
70
|
+
--secondary: #6b7280;
|
|
71
|
+
--secondary-hover: #4b5563;
|
|
72
|
+
|
|
73
|
+
/* Cores Semanticas */
|
|
74
|
+
--success: #10b981;
|
|
75
|
+
--warning: #f59e0b;
|
|
76
|
+
--error: #ef4444;
|
|
77
|
+
--info: #06b6d4;
|
|
78
|
+
|
|
79
|
+
/* Neutros */
|
|
80
|
+
--neutral-50: #f9fafb;
|
|
81
|
+
--neutral-100: #f3f4f6;
|
|
82
|
+
--neutral-200: #e5e7eb;
|
|
83
|
+
--neutral-300: #d1d5db;
|
|
84
|
+
--neutral-400: #9ca3af;
|
|
85
|
+
--neutral-500: #6b7280;
|
|
86
|
+
--neutral-600: #4b5563;
|
|
87
|
+
--neutral-700: #374151;
|
|
88
|
+
--neutral-800: #1f2937;
|
|
89
|
+
--neutral-900: #111827;
|
|
90
|
+
|
|
91
|
+
/* Tipografia */
|
|
92
|
+
--font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
93
|
+
--font-family-mono: 'JetBrains Mono', monospace;
|
|
94
|
+
|
|
95
|
+
--font-size-xs: 0.75rem; /* 12px */
|
|
96
|
+
--font-size-sm: 0.875rem; /* 14px */
|
|
97
|
+
--font-size-base: 1rem; /* 16px */
|
|
98
|
+
--font-size-lg: 1.125rem; /* 18px */
|
|
99
|
+
--font-size-xl: 1.25rem; /* 20px */
|
|
100
|
+
--font-size-2xl: 1.5rem; /* 24px */
|
|
101
|
+
--font-size-3xl: 1.875rem; /* 30px */
|
|
102
|
+
--font-size-4xl: 2.25rem; /* 36px */
|
|
103
|
+
|
|
104
|
+
/* Espacamento (base 4px) */
|
|
105
|
+
--space-1: 0.25rem; /* 4px */
|
|
106
|
+
--space-2: 0.5rem; /* 8px */
|
|
107
|
+
--space-3: 0.75rem; /* 12px */
|
|
108
|
+
--space-4: 1rem; /* 16px */
|
|
109
|
+
--space-5: 1.25rem; /* 20px */
|
|
110
|
+
--space-6: 1.5rem; /* 24px */
|
|
111
|
+
--space-8: 2rem; /* 32px */
|
|
112
|
+
--space-10: 2.5rem; /* 40px */
|
|
113
|
+
--space-12: 3rem; /* 48px */
|
|
114
|
+
|
|
115
|
+
/* Border Radius */
|
|
116
|
+
--radius-sm: 0.25rem; /* 4px */
|
|
117
|
+
--radius-md: 0.5rem; /* 8px */
|
|
118
|
+
--radius-lg: 0.75rem; /* 12px */
|
|
119
|
+
--radius-xl: 1rem; /* 16px */
|
|
120
|
+
--radius-full: 9999px;
|
|
121
|
+
|
|
122
|
+
/* Sombras */
|
|
123
|
+
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
124
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
125
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
126
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
127
|
+
|
|
128
|
+
/* Transicoes */
|
|
129
|
+
--transition-fast: 150ms ease;
|
|
130
|
+
--transition-normal: 300ms ease;
|
|
131
|
+
--transition-slow: 500ms ease;
|
|
132
|
+
|
|
133
|
+
/* Z-Index */
|
|
134
|
+
--z-dropdown: 1000;
|
|
135
|
+
--z-sticky: 1020;
|
|
136
|
+
--z-fixed: 1030;
|
|
137
|
+
--z-modal-backdrop: 1040;
|
|
138
|
+
--z-modal: 1050;
|
|
139
|
+
--z-popover: 1060;
|
|
140
|
+
--z-tooltip: 1070;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/* ===========================================================================
|
|
145
|
+
SECAO 100-199: RESET E BASE STYLES
|
|
146
|
+
=========================================================================== */
|
|
147
|
+
|
|
148
|
+
/* ... */
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/* ===========================================================================
|
|
152
|
+
SECAO 200-299: TIPOGRAFIA
|
|
153
|
+
=========================================================================== */
|
|
154
|
+
|
|
155
|
+
/* ... */
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
/* ===========================================================================
|
|
159
|
+
SECAO 300-399: LAYOUT E CONTAINERS
|
|
160
|
+
=========================================================================== */
|
|
161
|
+
|
|
162
|
+
.page-layout {
|
|
163
|
+
min-height: 100vh;
|
|
164
|
+
display: flex;
|
|
165
|
+
flex-direction: column;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.page-content {
|
|
169
|
+
flex: 1;
|
|
170
|
+
padding: var(--space-6);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.container {
|
|
174
|
+
width: 100%;
|
|
175
|
+
max-width: 1280px;
|
|
176
|
+
margin: 0 auto;
|
|
177
|
+
padding: 0 var(--space-4);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
/* ===========================================================================
|
|
182
|
+
SECAO 400-499: COMPONENTES BASE
|
|
183
|
+
=========================================================================== */
|
|
184
|
+
|
|
185
|
+
/* Botoes */
|
|
186
|
+
.btn-primary { /* ... */ }
|
|
187
|
+
.btn-secondary { /* ... */ }
|
|
188
|
+
|
|
189
|
+
/* Cards */
|
|
190
|
+
.card { /* ... */ }
|
|
191
|
+
.card-premium { /* ... */ }
|
|
192
|
+
|
|
193
|
+
/* Inputs */
|
|
194
|
+
.input { /* ... */ }
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
/* ===========================================================================
|
|
198
|
+
SECAO 500-599: COMPONENTES COMPOSTOS
|
|
199
|
+
=========================================================================== */
|
|
200
|
+
|
|
201
|
+
/* Forms */
|
|
202
|
+
.form-group { /* ... */ }
|
|
203
|
+
.form-label { /* ... */ }
|
|
204
|
+
|
|
205
|
+
/* Tables */
|
|
206
|
+
.data-table { /* ... */ }
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
/* ===========================================================================
|
|
210
|
+
SECAO 600-699: NAVEGACAO
|
|
211
|
+
=========================================================================== */
|
|
212
|
+
|
|
213
|
+
.page-header-nav { /* ... */ }
|
|
214
|
+
.page-footer { /* ... */ }
|
|
215
|
+
.sidebar { /* ... */ }
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
/* ===========================================================================
|
|
219
|
+
SECAO 700-799: PAGINAS ESPECIFICAS
|
|
220
|
+
=========================================================================== */
|
|
221
|
+
|
|
222
|
+
/* Home */
|
|
223
|
+
.home-hero { /* ... */ }
|
|
224
|
+
.home-features { /* ... */ }
|
|
225
|
+
|
|
226
|
+
/* Checkout */
|
|
227
|
+
.checkout-form { /* ... */ }
|
|
228
|
+
.checkout-summary { /* ... */ }
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
/* ===========================================================================
|
|
232
|
+
SECAO 800-849: MODAIS E OVERLAYS
|
|
233
|
+
=========================================================================== */
|
|
234
|
+
|
|
235
|
+
.modal-overlay {
|
|
236
|
+
position: fixed;
|
|
237
|
+
inset: 0;
|
|
238
|
+
background: rgba(0, 0, 0, 0.5);
|
|
239
|
+
backdrop-filter: blur(4px);
|
|
240
|
+
z-index: var(--z-modal-backdrop);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.modal-container {
|
|
244
|
+
position: fixed;
|
|
245
|
+
top: 50%;
|
|
246
|
+
left: 50%;
|
|
247
|
+
transform: translate(-50%, -50%);
|
|
248
|
+
z-index: var(--z-modal);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
/* ===========================================================================
|
|
253
|
+
SECAO 850-899: ANIMACOES E KEYFRAMES
|
|
254
|
+
=========================================================================== */
|
|
255
|
+
|
|
256
|
+
@keyframes slideInUp {
|
|
257
|
+
from {
|
|
258
|
+
opacity: 0;
|
|
259
|
+
transform: translateY(20px);
|
|
260
|
+
}
|
|
261
|
+
to {
|
|
262
|
+
opacity: 1;
|
|
263
|
+
transform: translateY(0);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
@keyframes scaleIn {
|
|
268
|
+
from {
|
|
269
|
+
opacity: 0;
|
|
270
|
+
transform: scale(0.95);
|
|
271
|
+
}
|
|
272
|
+
to {
|
|
273
|
+
opacity: 1;
|
|
274
|
+
transform: scale(1);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.animate-slideInUp {
|
|
279
|
+
animation: slideInUp var(--transition-normal) forwards;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.animate-scaleIn {
|
|
283
|
+
animation: scaleIn var(--transition-fast) forwards;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* Stagger delays para animacoes em sequencia */
|
|
287
|
+
.stagger-1 { animation-delay: 0.1s; }
|
|
288
|
+
.stagger-2 { animation-delay: 0.2s; }
|
|
289
|
+
.stagger-3 { animation-delay: 0.3s; }
|
|
290
|
+
.stagger-4 { animation-delay: 0.4s; }
|
|
291
|
+
.stagger-5 { animation-delay: 0.5s; }
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
/* ===========================================================================
|
|
295
|
+
SECAO 900-949: RESPONSIVO E MEDIA QUERIES
|
|
296
|
+
=========================================================================== */
|
|
297
|
+
|
|
298
|
+
@media (max-width: 768px) {
|
|
299
|
+
/* Tablet e Mobile */
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
@media (max-width: 480px) {
|
|
303
|
+
/* Mobile */
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
/* ===========================================================================
|
|
308
|
+
SECAO 950-979: UTILITIES E HELPERS
|
|
309
|
+
=========================================================================== */
|
|
310
|
+
|
|
311
|
+
.sr-only {
|
|
312
|
+
position: absolute;
|
|
313
|
+
width: 1px;
|
|
314
|
+
height: 1px;
|
|
315
|
+
padding: 0;
|
|
316
|
+
margin: -1px;
|
|
317
|
+
overflow: hidden;
|
|
318
|
+
clip: rect(0, 0, 0, 0);
|
|
319
|
+
white-space: nowrap;
|
|
320
|
+
border: 0;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
/* ===========================================================================
|
|
325
|
+
SECAO 980-989: OVERRIDES DE FLUENT UI / MUDBLAZOR
|
|
326
|
+
=========================================================================== */
|
|
327
|
+
|
|
328
|
+
/* Fluent UI overrides */
|
|
329
|
+
.fluent-card {
|
|
330
|
+
/* Customizacoes */
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
/* ===========================================================================
|
|
335
|
+
SECAO 990-999: HOTFIXES E TEMPORARIOS
|
|
336
|
+
=========================================================================== */
|
|
337
|
+
|
|
338
|
+
/* TODO: Remover apos fix no componente X */
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Uso
|
|
342
|
+
|
|
343
|
+
1. Copie o header para o inicio do seu `design-system.css`
|
|
344
|
+
2. Substitua `{PROJECT_NAME}` pelo nome do seu projeto
|
|
345
|
+
3. Adicione suas classes CSS nas secoes apropriadas
|
|
346
|
+
4. Mantenha o indice atualizado conforme adiciona novas secoes
|
|
347
|
+
|
|
348
|
+
## Beneficios
|
|
349
|
+
|
|
350
|
+
- **Navegacao rapida:** Use Ctrl+G (go to line) para pular para secoes
|
|
351
|
+
- **Organizacao clara:** Cada tipo de componente em sua secao
|
|
352
|
+
- **Facil manutencao:** Encontre onde adicionar novos estilos
|
|
353
|
+
- **Evita conflitos:** Prefixos por pagina previnem colisoes
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
*Template MORPH-SPEC by Polymorphism Tech*
|