@polymorphism-tech/morph-spec 2.4.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +158 -26
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +8 -0
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -0
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
- package/content/.claude/skills/level-0-meta/README.md +7 -0
- package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
- package/content/.claude/skills/level-1-workflows/README.md +7 -0
- package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
- package/content/.claude/skills/level-2-domains/README.md +14 -0
- package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
- package/content/.claude/skills/level-3-technologies/README.md +7 -0
- package/content/.claude/skills/level-4-patterns/README.md +7 -0
- package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
- package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +742 -358
- package/content/.morph/config/config.template.json +33 -0
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
- package/content/.morph/examples/scheduled-reports/spec.md +267 -267
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +158 -0
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/hooks/task-completed.js +73 -0
- package/content/.morph/hooks/teammate-idle.js +68 -0
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -220
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-teams-workflow.md +474 -0
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
- package/content/.morph/templates/CONTEXT.md +170 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/clarify-questions.md +159 -159
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -74
- package/content/.morph/templates/contracts/Entities.cs +25 -25
- package/content/.morph/templates/contracts/Queries.cs +74 -74
- package/content/.morph/templates/contracts/README.md +74 -74
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -426
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/templates.md +418 -418
- package/package.json +1 -1
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +83 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -0
- package/src/commands/detect-agents.js +34 -6
- package/src/commands/detect.js +104 -104
- package/src/commands/generate-context.js +40 -0
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +513 -0
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-detector.js +187 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/design-system-scaffolder.js +299 -0
- package/src/lib/hook-executor.js +256 -0
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/spec-validator.js +258 -0
- package/src/lib/standards-context-injector.js +287 -0
- package/src/lib/team-orchestrator.js +322 -0
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +65 -13
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/design-system-validator.js +231 -0
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +9 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
- /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
- /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
- /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
|
@@ -1,149 +1,149 @@
|
|
|
1
|
-
using Microsoft.FluentUI.AspNetCore.Components;
|
|
2
|
-
|
|
3
|
-
namespace {Namespace}.Themes;
|
|
4
|
-
|
|
5
|
-
/// <summary>
|
|
6
|
-
/// Fluent UI Design Theme customizado para {Project Name}.
|
|
7
|
-
/// Gerado automaticamente baseado em ui-design-system.md
|
|
8
|
-
/// </summary>
|
|
9
|
-
/// <remarks>
|
|
10
|
-
/// Template MORPH-SPEC v2.1.1 by Polymorphism Tech
|
|
11
|
-
/// </remarks>
|
|
12
|
-
public static class FluentDesignTheme
|
|
13
|
-
{
|
|
14
|
-
/// <summary>
|
|
15
|
-
/// Paleta de cores do tema
|
|
16
|
-
/// </summary>
|
|
17
|
-
public static DesignThemePalette GetPalette() => new()
|
|
18
|
-
{
|
|
19
|
-
// Cores Principais
|
|
20
|
-
Primary = "#{hex da cor primária}", // Ex: #3b82f6
|
|
21
|
-
Secondary = "#{hex da cor secundária}", // Ex: #6b7280
|
|
22
|
-
|
|
23
|
-
// Cores de Estado
|
|
24
|
-
Success = "#{hex}", // Ex: #10b981
|
|
25
|
-
Error = "#{hex}", // Ex: #ef4444
|
|
26
|
-
Warning = "#{hex}", // Ex: #f59e0b
|
|
27
|
-
Info = "#{hex}", // Ex: #06b6d4
|
|
28
|
-
|
|
29
|
-
// Neutros
|
|
30
|
-
NeutralLight = "#{hex do gray-50}", // Ex: #f9fafb
|
|
31
|
-
NeutralLighter = "#{hex do gray-100}", // Ex: #f3f4f6
|
|
32
|
-
NeutralDark = "#{hex do gray-800}", // Ex: #1f2937
|
|
33
|
-
NeutralDarker = "#{hex do gray-900}", // Ex: #111827
|
|
34
|
-
|
|
35
|
-
// Background e Foreground
|
|
36
|
-
Background = "#ffffff",
|
|
37
|
-
Foreground = "#{hex do gray-900}", // Texto principal
|
|
38
|
-
|
|
39
|
-
// Accent (geralmente = Primary)
|
|
40
|
-
Accent = "#{hex da cor primária}",
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/// <summary>
|
|
44
|
-
/// Configuração de tipografia
|
|
45
|
-
/// </summary>
|
|
46
|
-
public static DesignThemeTypography GetTypography() => new()
|
|
47
|
-
{
|
|
48
|
-
FontFamily = "'{Font Name}', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
49
|
-
|
|
50
|
-
// Tamanhos
|
|
51
|
-
FontSizeBase = "1rem", // 16px
|
|
52
|
-
FontSizeSmall = "0.875rem", // 14px
|
|
53
|
-
FontSizeLarge = "1.125rem", // 18px
|
|
54
|
-
|
|
55
|
-
// Weights
|
|
56
|
-
FontWeightRegular = 400,
|
|
57
|
-
FontWeightSemibold = 600,
|
|
58
|
-
FontWeightBold = 700,
|
|
59
|
-
|
|
60
|
-
// Line Heights
|
|
61
|
-
LineHeightBase = 1.5,
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/// <summary>
|
|
65
|
-
/// Configuração de espaçamento e layout
|
|
66
|
-
/// </summary>
|
|
67
|
-
public static DesignThemeLayout GetLayout() => new()
|
|
68
|
-
{
|
|
69
|
-
// Espaçamento (baseado em múltiplos de {base}px - ex: 4px)
|
|
70
|
-
SpacingBase = "0.25rem", // 4px
|
|
71
|
-
SpacingSmall = "0.5rem", // 8px
|
|
72
|
-
SpacingMedium = "1rem", // 16px
|
|
73
|
-
SpacingLarge = "1.5rem", // 24px
|
|
74
|
-
|
|
75
|
-
// Border Radius
|
|
76
|
-
BorderRadiusSmall = "0.125rem", // 2px
|
|
77
|
-
BorderRadiusMedium = "0.375rem", // 6px
|
|
78
|
-
BorderRadiusLarge = "0.5rem", // 8px
|
|
79
|
-
|
|
80
|
-
// Shadows (depende da biblioteca - ajustar conforme API)
|
|
81
|
-
Elevation1 = "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
|
|
82
|
-
Elevation2 = "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
83
|
-
Elevation3 = "0 10px 15px -3px rgba(0, 0, 0, 0.1)",
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
/// <summary>
|
|
87
|
-
/// Aplica o tema customizado ao FluentUI
|
|
88
|
-
/// </summary>
|
|
89
|
-
/// <param name="services">Service collection</param>
|
|
90
|
-
public static void AddFluentUIWithCustomTheme(this IServiceCollection services)
|
|
91
|
-
{
|
|
92
|
-
services.AddFluentUIComponents(options =>
|
|
93
|
-
{
|
|
94
|
-
// Aplicar paleta customizada
|
|
95
|
-
options.DesignThemePalette = GetPalette();
|
|
96
|
-
|
|
97
|
-
// Outras configurações do Fluent UI
|
|
98
|
-
// ...
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/// <summary>
|
|
104
|
-
/// Classe de configuração de tipografia
|
|
105
|
-
/// (Ajustar conforme API do Fluent UI Blazor v4.x)
|
|
106
|
-
/// </summary>
|
|
107
|
-
public class DesignThemeTypography
|
|
108
|
-
{
|
|
109
|
-
public string FontFamily { get; set; } = string.Empty;
|
|
110
|
-
public string FontSizeBase { get; set; } = string.Empty;
|
|
111
|
-
public string FontSizeSmall { get; set; } = string.Empty;
|
|
112
|
-
public string FontSizeLarge { get; set; } = string.Empty;
|
|
113
|
-
public int FontWeightRegular { get; set; }
|
|
114
|
-
public int FontWeightSemibold { get; set; }
|
|
115
|
-
public int FontWeightBold { get; set; }
|
|
116
|
-
public double LineHeightBase { get; set; }
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/// <summary>
|
|
120
|
-
/// Classe de configuração de layout
|
|
121
|
-
/// (Ajustar conforme API do Fluent UI Blazor v4.x)
|
|
122
|
-
/// </summary>
|
|
123
|
-
public class DesignThemeLayout
|
|
124
|
-
{
|
|
125
|
-
public string SpacingBase { get; set; } = string.Empty;
|
|
126
|
-
public string SpacingSmall { get; set; } = string.Empty;
|
|
127
|
-
public string SpacingMedium { get; set; } = string.Empty;
|
|
128
|
-
public string SpacingLarge { get; set; } = string.Empty;
|
|
129
|
-
|
|
130
|
-
public string BorderRadiusSmall { get; set; } = string.Empty;
|
|
131
|
-
public string BorderRadiusMedium { get; set; } = string.Empty;
|
|
132
|
-
public string BorderRadiusLarge { get; set; } = string.Empty;
|
|
133
|
-
|
|
134
|
-
public string Elevation1 { get; set; } = string.Empty;
|
|
135
|
-
public string Elevation2 { get; set; } = string.Empty;
|
|
136
|
-
public string Elevation3 { get; set; } = string.Empty;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/// <summary>
|
|
140
|
-
/// EXEMPLO DE USO:
|
|
141
|
-
///
|
|
142
|
-
/// // Program.cs
|
|
143
|
-
/// builder.Services.AddFluentUIWithCustomTheme();
|
|
144
|
-
///
|
|
145
|
-
/// // App.razor ou MainLayout.razor
|
|
146
|
-
/// <FluentDesignTheme Mode="DesignThemeMode.Light" />
|
|
147
|
-
///
|
|
148
|
-
/// // Componentes podem acessar cores via CSS variables ou propriedades do tema
|
|
149
|
-
/// </summary>
|
|
1
|
+
using Microsoft.FluentUI.AspNetCore.Components;
|
|
2
|
+
|
|
3
|
+
namespace {Namespace}.Themes;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// Fluent UI Design Theme customizado para {Project Name}.
|
|
7
|
+
/// Gerado automaticamente baseado em ui-design-system.md
|
|
8
|
+
/// </summary>
|
|
9
|
+
/// <remarks>
|
|
10
|
+
/// Template MORPH-SPEC v2.1.1 by Polymorphism Tech
|
|
11
|
+
/// </remarks>
|
|
12
|
+
public static class FluentDesignTheme
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
/// Paleta de cores do tema
|
|
16
|
+
/// </summary>
|
|
17
|
+
public static DesignThemePalette GetPalette() => new()
|
|
18
|
+
{
|
|
19
|
+
// Cores Principais
|
|
20
|
+
Primary = "#{hex da cor primária}", // Ex: #3b82f6
|
|
21
|
+
Secondary = "#{hex da cor secundária}", // Ex: #6b7280
|
|
22
|
+
|
|
23
|
+
// Cores de Estado
|
|
24
|
+
Success = "#{hex}", // Ex: #10b981
|
|
25
|
+
Error = "#{hex}", // Ex: #ef4444
|
|
26
|
+
Warning = "#{hex}", // Ex: #f59e0b
|
|
27
|
+
Info = "#{hex}", // Ex: #06b6d4
|
|
28
|
+
|
|
29
|
+
// Neutros
|
|
30
|
+
NeutralLight = "#{hex do gray-50}", // Ex: #f9fafb
|
|
31
|
+
NeutralLighter = "#{hex do gray-100}", // Ex: #f3f4f6
|
|
32
|
+
NeutralDark = "#{hex do gray-800}", // Ex: #1f2937
|
|
33
|
+
NeutralDarker = "#{hex do gray-900}", // Ex: #111827
|
|
34
|
+
|
|
35
|
+
// Background e Foreground
|
|
36
|
+
Background = "#ffffff",
|
|
37
|
+
Foreground = "#{hex do gray-900}", // Texto principal
|
|
38
|
+
|
|
39
|
+
// Accent (geralmente = Primary)
|
|
40
|
+
Accent = "#{hex da cor primária}",
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/// <summary>
|
|
44
|
+
/// Configuração de tipografia
|
|
45
|
+
/// </summary>
|
|
46
|
+
public static DesignThemeTypography GetTypography() => new()
|
|
47
|
+
{
|
|
48
|
+
FontFamily = "'{Font Name}', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
49
|
+
|
|
50
|
+
// Tamanhos
|
|
51
|
+
FontSizeBase = "1rem", // 16px
|
|
52
|
+
FontSizeSmall = "0.875rem", // 14px
|
|
53
|
+
FontSizeLarge = "1.125rem", // 18px
|
|
54
|
+
|
|
55
|
+
// Weights
|
|
56
|
+
FontWeightRegular = 400,
|
|
57
|
+
FontWeightSemibold = 600,
|
|
58
|
+
FontWeightBold = 700,
|
|
59
|
+
|
|
60
|
+
// Line Heights
|
|
61
|
+
LineHeightBase = 1.5,
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/// <summary>
|
|
65
|
+
/// Configuração de espaçamento e layout
|
|
66
|
+
/// </summary>
|
|
67
|
+
public static DesignThemeLayout GetLayout() => new()
|
|
68
|
+
{
|
|
69
|
+
// Espaçamento (baseado em múltiplos de {base}px - ex: 4px)
|
|
70
|
+
SpacingBase = "0.25rem", // 4px
|
|
71
|
+
SpacingSmall = "0.5rem", // 8px
|
|
72
|
+
SpacingMedium = "1rem", // 16px
|
|
73
|
+
SpacingLarge = "1.5rem", // 24px
|
|
74
|
+
|
|
75
|
+
// Border Radius
|
|
76
|
+
BorderRadiusSmall = "0.125rem", // 2px
|
|
77
|
+
BorderRadiusMedium = "0.375rem", // 6px
|
|
78
|
+
BorderRadiusLarge = "0.5rem", // 8px
|
|
79
|
+
|
|
80
|
+
// Shadows (depende da biblioteca - ajustar conforme API)
|
|
81
|
+
Elevation1 = "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
|
|
82
|
+
Elevation2 = "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
83
|
+
Elevation3 = "0 10px 15px -3px rgba(0, 0, 0, 0.1)",
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/// <summary>
|
|
87
|
+
/// Aplica o tema customizado ao FluentUI
|
|
88
|
+
/// </summary>
|
|
89
|
+
/// <param name="services">Service collection</param>
|
|
90
|
+
public static void AddFluentUIWithCustomTheme(this IServiceCollection services)
|
|
91
|
+
{
|
|
92
|
+
services.AddFluentUIComponents(options =>
|
|
93
|
+
{
|
|
94
|
+
// Aplicar paleta customizada
|
|
95
|
+
options.DesignThemePalette = GetPalette();
|
|
96
|
+
|
|
97
|
+
// Outras configurações do Fluent UI
|
|
98
|
+
// ...
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/// <summary>
|
|
104
|
+
/// Classe de configuração de tipografia
|
|
105
|
+
/// (Ajustar conforme API do Fluent UI Blazor v4.x)
|
|
106
|
+
/// </summary>
|
|
107
|
+
public class DesignThemeTypography
|
|
108
|
+
{
|
|
109
|
+
public string FontFamily { get; set; } = string.Empty;
|
|
110
|
+
public string FontSizeBase { get; set; } = string.Empty;
|
|
111
|
+
public string FontSizeSmall { get; set; } = string.Empty;
|
|
112
|
+
public string FontSizeLarge { get; set; } = string.Empty;
|
|
113
|
+
public int FontWeightRegular { get; set; }
|
|
114
|
+
public int FontWeightSemibold { get; set; }
|
|
115
|
+
public int FontWeightBold { get; set; }
|
|
116
|
+
public double LineHeightBase { get; set; }
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/// <summary>
|
|
120
|
+
/// Classe de configuração de layout
|
|
121
|
+
/// (Ajustar conforme API do Fluent UI Blazor v4.x)
|
|
122
|
+
/// </summary>
|
|
123
|
+
public class DesignThemeLayout
|
|
124
|
+
{
|
|
125
|
+
public string SpacingBase { get; set; } = string.Empty;
|
|
126
|
+
public string SpacingSmall { get; set; } = string.Empty;
|
|
127
|
+
public string SpacingMedium { get; set; } = string.Empty;
|
|
128
|
+
public string SpacingLarge { get; set; } = string.Empty;
|
|
129
|
+
|
|
130
|
+
public string BorderRadiusSmall { get; set; } = string.Empty;
|
|
131
|
+
public string BorderRadiusMedium { get; set; } = string.Empty;
|
|
132
|
+
public string BorderRadiusLarge { get; set; } = string.Empty;
|
|
133
|
+
|
|
134
|
+
public string Elevation1 { get; set; } = string.Empty;
|
|
135
|
+
public string Elevation2 { get; set; } = string.Empty;
|
|
136
|
+
public string Elevation3 { get; set; } = string.Empty;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// <summary>
|
|
140
|
+
/// EXEMPLO DE USO:
|
|
141
|
+
///
|
|
142
|
+
/// // Program.cs
|
|
143
|
+
/// builder.Services.AddFluentUIWithCustomTheme();
|
|
144
|
+
///
|
|
145
|
+
/// // App.razor ou MainLayout.razor
|
|
146
|
+
/// <FluentDesignTheme Mode="DesignThemeMode.Light" />
|
|
147
|
+
///
|
|
148
|
+
/// // Componentes podem acessar cores via CSS variables ou propriedades do tema
|
|
149
|
+
/// </summary>
|