@polymorphism-tech/morph-spec 3.2.0 → 4.2.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 +352 -7
- package/README.md +1 -14
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +122 -34
- package/bin/validate.js +1 -1
- package/docs/getting-started.md +0 -5
- package/docs/v3.0/AGENTS.md +521 -0
- package/docs/v3.0/ANALYSIS.md +555 -0
- package/docs/v3.0/ARCHITECTURE.md +436 -0
- package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
- package/docs/v3.0/FEATURES.md +688 -0
- package/docs/v3.0/README.md +231 -0
- package/docs/v3.0/ROADMAP.md +801 -0
- package/docs/validation-checklist.md +0 -1
- package/package.json +1 -1
- package/src/commands/agents/index.js +4 -0
- package/src/commands/{spawn-team.js → agents/spawn-team.js} +172 -172
- package/src/commands/{create-story.js → feature/create-story.js} +357 -354
- package/src/commands/feature/index.js +6 -0
- package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
- package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
- package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
- package/src/commands/{generate.js → generation/generate.js} +4 -4
- package/src/commands/generation/index.js +5 -0
- package/src/commands/index.js +16 -0
- package/src/commands/{capture-pattern.js → learning/capture-pattern.js} +121 -121
- package/src/commands/learning/index.js +5 -0
- package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
- package/src/commands/project/detect-workflow.js +174 -0
- package/src/commands/{detect.js → project/detect.js} +104 -104
- package/src/commands/{doctor.js → project/doctor.js} +356 -356
- package/src/commands/project/index.js +10 -0
- package/src/commands/{init.js → project/init.js} +305 -295
- package/src/commands/{sync.js → project/sync.js} +167 -167
- package/src/commands/{update.js → project/update.js} +240 -240
- package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -357
- package/src/commands/{approve.js → state/approve.js} +221 -221
- package/src/commands/state/index.js +8 -0
- package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
- package/src/commands/{state.js → state/state.js} +334 -334
- package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
- package/src/commands/tasks/index.js +4 -0
- package/src/commands/{task.js → tasks/task.js} +78 -78
- package/src/commands/templates/index.js +8 -0
- package/src/commands/templates/template-customize.js +101 -0
- package/src/commands/templates/template-list.js +128 -0
- package/src/commands/templates/template-render.js +95 -0
- package/src/commands/templates/template-show.js +131 -0
- package/src/commands/templates/template-validate.js +91 -0
- package/src/commands/utils/index.js +7 -0
- package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
- package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
- package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
- package/src/commands/validation/index.js +8 -0
- package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
- package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
- package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
- package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
- package/src/core/index.js +10 -0
- package/src/core/registry/command-registry.js +302 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/validator-registry.js +204 -0
- package/src/core/state/index.js +8 -0
- package/src/{lib → core/state}/phase-state-machine.js +214 -214
- package/src/{lib → core/state}/state-manager.js +572 -534
- package/src/core/templates/index.js +9 -0
- package/src/core/templates/template-registry.js +335 -0
- package/src/core/templates/template-renderer.js +477 -0
- package/src/core/templates/template-validator.js +296 -0
- package/src/core/workflows/index.js +7 -0
- package/src/core/workflows/workflow-detector.js +354 -0
- package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
- package/src/lib/analysis/index.js +7 -0
- package/src/lib/{checkpoint-hooks.js → checkpoints/checkpoint-hooks.js} +258 -258
- package/src/lib/checkpoints/index.js +7 -0
- package/src/lib/detectors/config-detector.js +223 -223
- package/src/lib/detectors/conversation-analyzer.js +163 -163
- package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
- package/src/lib/detectors/index.js +87 -84
- package/src/lib/detectors/standards-generator.js +275 -275
- package/src/lib/detectors/structure-detector.js +245 -245
- package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
- package/src/lib/generators/index.js +10 -0
- package/src/lib/{metadata-extractor.js → generators/metadata-extractor.js} +387 -380
- package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
- package/src/lib/learning/index.js +7 -0
- package/src/lib/orchestration/index.js +7 -0
- package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
- package/src/lib/stacks/index.js +7 -0
- package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
- package/src/lib/standards/index.js +7 -0
- package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
- package/src/lib/troubleshooting/index.js +8 -0
- package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
- package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
- package/src/lib/validators/architecture/architecture-validator.js +387 -0
- package/src/lib/validators/architecture/index.js +7 -0
- package/src/lib/validators/architecture-validator.js +40 -367
- package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
- package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
- package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
- package/src/lib/validators/blazor/index.js +9 -0
- package/src/lib/validators/content/content-validator.js +351 -0
- package/src/lib/validators/content/index.js +7 -0
- package/src/lib/validators/content-validator.js +164 -351
- package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
- package/src/lib/validators/contracts/index.js +7 -0
- package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
- package/src/lib/validators/css/index.js +7 -0
- package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
- package/src/lib/validators/design-system/index.js +7 -0
- package/src/lib/validators/package-validator.js +41 -340
- package/src/lib/validators/packages/index.js +7 -0
- package/src/lib/validators/packages/package-validator.js +360 -0
- package/src/lib/validators/shared/index.js +12 -0
- package/src/lib/validators/shared/issue-counter.js +18 -0
- package/src/lib/validators/shared/result-formatter.js +124 -0
- package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
- package/src/lib/validators/ui/index.js +7 -0
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
- package/src/lib/validators/ui-contrast-validator.js +31 -409
- package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
- package/src/ui/wizard-questions.js +0 -2
- package/src/utils/color-utils.js +70 -0
- package/src/utils/file-copier.js +188 -189
- package/src/utils/process-handler.js +97 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
- package/stacks/blazor-azure/.morph/config/agents.json +879 -764
- package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
- package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
- package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
- package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
- package/stacks/nextjs-supabase/README.md +6 -15
- package/bin/render-template.js +0 -349
- package/bin/semantic-detect-agents.js +0 -247
- package/bin/validate-agents-skills.js +0 -257
- package/bin/validate-agents.js +0 -70
- package/bin/validate-phase.js +0 -263
- package/docs/examples.md +0 -328
- package/scripts/reorganize-skills.cjs +0 -175
- package/scripts/validate-agents-structure.cjs +0 -52
- package/scripts/validate-skills.cjs +0 -180
- package/src/commands/deploy.js +0 -780
- package/src/lib/continuous-validator.js +0 -421
- package/src/lib/decision-constraint-loader.js +0 -109
- package/src/lib/design-system-scaffolder.js +0 -299
- package/src/lib/hook-executor.js +0 -257
- package/src/lib/mockup-generator.js +0 -366
- package/src/lib/ui-detector.js +0 -350
- package/src/llm/schema-validator.js +0 -121
- package/src/sanitizer/.gitkeep +0 -0
- package/src/scanner/.gitkeep +0 -0
- package/src/types/index.js +0 -477
- package/src/ui/.gitkeep +0 -0
- package/src/writer/.gitkeep +0 -0
- package/stacks/blazor-azure/.azure/README.md +0 -293
- package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
- package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
- package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
- package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
- package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
- package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
- package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
- package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
- package/stacks/blazor-azure/.claude/settings.local.json +0 -15
- package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
- package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
- package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
- package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
- package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
- package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
- package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
- package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
- package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
- package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
- package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
- package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
- package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
- package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
- package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
- package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
- package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
- package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
- package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
- package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
- package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
- package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
- package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
- package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
- package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
- package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
- package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
- package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
- package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
- package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
- package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
- package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
- package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
- package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
- package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
- package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
- package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
- package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
- package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
- package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
- package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
- package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
- package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
- package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
- package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
- package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
- package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
- package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
- package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
- package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
- package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
- package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
- package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
- package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
- package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
- package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
- package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
- package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
- package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
- package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
- package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
- package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
- package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
- package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
- package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
- package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
- package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
- package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
- package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
- package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
- package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
- package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
- package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
- package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
- package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
- package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
- package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
- package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
- package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
- package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
- package/stacks/blazor-azure/.morph/templates/story.md +0 -143
- package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
- package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
- package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
- package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
- package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
- package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
- package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
- package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
- package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
- package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
- package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
- package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
- package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
- package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
- package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
- package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
- package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
- package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
- package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
- package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
- package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
- package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
- package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
- /package/src/commands/{search-patterns.js → learning/search-patterns.js} +0 -0
- /package/src/commands/{migrate-state.js → utils/migrate-state.js} +0 -0
- /package/src/commands/{upgrade.js → utils/upgrade.js} +0 -0
- /package/src/{lib → core/templates}/template-data-sources.js +0 -0
- /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
- /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
- /package/{src/generator → stacks/blazor-azure/.morph/templates}/.gitkeep +0 -0
- /package/{src/llm → stacks/nextjs-supabase/.morph/templates}/.gitkeep +0 -0
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
# UI Design System - {Project Name}
|
|
2
|
-
|
|
3
|
-
> Design system do projeto: cores, tipografia, espaçamento e padrões visuais.
|
|
4
|
-
> Este arquivo é a fonte da verdade para todos os aspectos visuais do projeto.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 🎨 Paleta de Cores
|
|
9
|
-
|
|
10
|
-
### Cores Principais
|
|
11
|
-
|
|
12
|
-
| Uso | Cor | Hex | RGB | Preview |
|
|
13
|
-
|-----|-----|-----|-----|---------|
|
|
14
|
-
| **Primária** | {Nome da cor} | `#{hex}` | `rgb({r}, {g}, {b})` | ███ |
|
|
15
|
-
| **Secundária** | {Nome da cor} | `#{hex}` | `rgb({r}, {g}, {b})` | ███ |
|
|
16
|
-
|
|
17
|
-
**Exemplo:**
|
|
18
|
-
| Uso | Cor | Hex | RGB | Preview |
|
|
19
|
-
|-----|-----|-----|-----|---------|
|
|
20
|
-
| **Primária** | Blue | `#3b82f6` | `rgb(59, 130, 246)` | 🔵 |
|
|
21
|
-
| **Secundária** | Gray | `#6b7280` | `rgb(107, 114, 128)` | ⚫ |
|
|
22
|
-
|
|
23
|
-
### Cores de Estado
|
|
24
|
-
|
|
25
|
-
| Estado | Cor | Hex | RGB | Uso |
|
|
26
|
-
|--------|-----|-----|-----|-----|
|
|
27
|
-
| **Sucesso** | {Cor} | `#{hex}` | `rgb({r}, {g}, {b})` | Confirmações, operações bem-sucedidas |
|
|
28
|
-
| **Erro** | {Cor} | `#{hex}` | `rgb({r}, {g}, {b})` | Erros, validações falhas |
|
|
29
|
-
| **Warning** | {Cor} | `#{hex}` | `rgb({r}, {g}, {b})` | Avisos, atenção necessária |
|
|
30
|
-
| **Info** | {Cor} | `#{hex}` | `rgb({r}, {g}, {b})` | Informações, dicas |
|
|
31
|
-
|
|
32
|
-
**Exemplo (Tailwind):**
|
|
33
|
-
| Estado | Cor | Hex | RGB | Uso |
|
|
34
|
-
|--------|-----|-----|-----|-----|
|
|
35
|
-
| **Sucesso** | Green | `#10b981` | `rgb(16, 185, 129)` | Confirmações |
|
|
36
|
-
| **Erro** | Red | `#ef4444` | `rgb(239, 68, 68)` | Erros |
|
|
37
|
-
| **Warning** | Amber | `#f59e0b` | `rgb(245, 158, 11)` | Avisos |
|
|
38
|
-
| **Info** | Cyan | `#06b6d4` | `rgb(6, 182, 212)` | Informações |
|
|
39
|
-
|
|
40
|
-
### Escala de Neutros (Cinzas)
|
|
41
|
-
|
|
42
|
-
| Shade | Hex | RGB | Uso |
|
|
43
|
-
|-------|-----|-----|-----|
|
|
44
|
-
| **50** | `#{hex}` | `rgb({r}, {g}, {b})` | Fundos muito claros |
|
|
45
|
-
| **100** | `#{hex}` | `rgb({r}, {g}, {b})` | Fundos claros |
|
|
46
|
-
| **200** | `#{hex}` | `rgb({r}, {g}, {b})` | Bordas suaves |
|
|
47
|
-
| **300** | `#{hex}` | `rgb({r}, {g}, {b})` | Bordas padrão |
|
|
48
|
-
| **400** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto desabilitado |
|
|
49
|
-
| **500** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto secundário |
|
|
50
|
-
| **600** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto placeholder |
|
|
51
|
-
| **700** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto principal |
|
|
52
|
-
| **800** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto ênfase |
|
|
53
|
-
| **900** | `#{hex}` | `rgb({r}, {g}, {b})` | Texto super ênfase |
|
|
54
|
-
|
|
55
|
-
**Exemplo (Tailwind Gray):**
|
|
56
|
-
| Shade | Hex | RGB |
|
|
57
|
-
|-------|-----|-----|
|
|
58
|
-
| **50** | `#f9fafb` | `rgb(249, 250, 251)` |
|
|
59
|
-
| **100** | `#f3f4f6` | `rgb(243, 244, 246)` |
|
|
60
|
-
| **500** | `#6b7280` | `rgb(107, 114, 128)` |
|
|
61
|
-
| **900** | `#111827` | `rgb(17, 24, 39)` |
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 🔤 Tipografia
|
|
66
|
-
|
|
67
|
-
### Fontes
|
|
68
|
-
|
|
69
|
-
| Tipo | Font Family | Stack Completo | Uso |
|
|
70
|
-
|------|-------------|----------------|-----|
|
|
71
|
-
| **Sans-serif** | {Font} | `'{Font}', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif` | Texto principal, UI |
|
|
72
|
-
| **Serif** | {Font} | `'{Font}', Georgia, serif` | Títulos, ênfase (opcional) |
|
|
73
|
-
| **Monospace** | {Font} | `'{Font}', 'Courier New', monospace` | Código, dados técnicos |
|
|
74
|
-
|
|
75
|
-
**Exemplo:**
|
|
76
|
-
| Tipo | Font Family | Stack | Uso |
|
|
77
|
-
|------|-------------|-------|-----|
|
|
78
|
-
| **Sans-serif** | Inter | `'Inter', -apple-system, sans-serif` | Texto principal |
|
|
79
|
-
| **Monospace** | Fira Code | `'Fira Code', 'Courier New', monospace` | Código |
|
|
80
|
-
|
|
81
|
-
### Escala de Tamanhos
|
|
82
|
-
|
|
83
|
-
| Size | Valor | Line Height | Uso |
|
|
84
|
-
|------|-------|-------------|-----|
|
|
85
|
-
| **xs** | `{size}` | `{height}` | Texto muito pequeno, labels |
|
|
86
|
-
| **sm** | `{size}` | `{height}` | Texto pequeno, captions |
|
|
87
|
-
| **base** | `{size}` | `{height}` | Texto padrão, body |
|
|
88
|
-
| **lg** | `{size}` | `{height}` | Texto grande, leads |
|
|
89
|
-
| **xl** | `{size}` | `{height}` | Títulos H4 |
|
|
90
|
-
| **2xl** | `{size}` | `{height}` | Títulos H3 |
|
|
91
|
-
| **3xl** | `{size}` | `{height}` | Títulos H2 |
|
|
92
|
-
| **4xl** | `{size}` | `{height}` | Títulos H1 |
|
|
93
|
-
| **5xl** | `{size}` | `{height}` | Display text |
|
|
94
|
-
|
|
95
|
-
**Exemplo (Tailwind):**
|
|
96
|
-
| Size | Valor | Line Height |
|
|
97
|
-
|------|-------|-------------|
|
|
98
|
-
| **xs** | `0.75rem` (12px) | `1rem` (16px) |
|
|
99
|
-
| **sm** | `0.875rem` (14px) | `1.25rem` (20px) |
|
|
100
|
-
| **base** | `1rem` (16px) | `1.5rem` (24px) |
|
|
101
|
-
| **lg** | `1.125rem` (18px) | `1.75rem` (28px) |
|
|
102
|
-
| **xl** | `1.25rem` (20px) | `1.75rem` (28px) |
|
|
103
|
-
| **4xl** | `2.25rem` (36px) | `2.5rem` (40px) |
|
|
104
|
-
|
|
105
|
-
### Pesos (Font Weight)
|
|
106
|
-
|
|
107
|
-
| Weight | Valor | Uso |
|
|
108
|
-
|--------|-------|-----|
|
|
109
|
-
| **Light** | `300` | Texto decorativo, opcional |
|
|
110
|
-
| **Regular** | `400` | Texto padrão |
|
|
111
|
-
| **Medium** | `500` | Texto com ênfase leve |
|
|
112
|
-
| **Semibold** | `600` | Botões, labels importantes |
|
|
113
|
-
| **Bold** | `700` | Títulos, ênfase forte |
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## 📏 Espaçamento
|
|
118
|
-
|
|
119
|
-
### Sistema Base
|
|
120
|
-
|
|
121
|
-
**Unidade base:** `{value}` (ex: 4px, 8px)
|
|
122
|
-
**Escala:** Múltiplos da unidade base
|
|
123
|
-
|
|
124
|
-
| Token | Valor | Pixels | Uso |
|
|
125
|
-
|-------|-------|--------|-----|
|
|
126
|
-
| **0** | `0` | 0px | Sem espaçamento |
|
|
127
|
-
| **1** | `{base * 1}` | {px} | Espaço mínimo |
|
|
128
|
-
| **2** | `{base * 2}` | {px} | Espaço pequeno |
|
|
129
|
-
| **3** | `{base * 3}` | {px} | Espaço médio-pequeno |
|
|
130
|
-
| **4** | `{base * 4}` | {px} | Espaço médio |
|
|
131
|
-
| **5** | `{base * 5}` | {px} | Espaço médio-grande |
|
|
132
|
-
| **6** | `{base * 6}` | {px} | Espaço grande |
|
|
133
|
-
| **8** | `{base * 8}` | {px} | Espaço muito grande |
|
|
134
|
-
| **10** | `{base * 10}` | {px} | Espaço extra grande |
|
|
135
|
-
| **12** | `{base * 12}` | {px} | Espaço gigante |
|
|
136
|
-
|
|
137
|
-
**Exemplo (base 4px = 0.25rem):**
|
|
138
|
-
| Token | Valor | Pixels | Uso |
|
|
139
|
-
|-------|-------|--------|-----|
|
|
140
|
-
| **1** | `0.25rem` | 4px | Gap mínimo entre ícones |
|
|
141
|
-
| **2** | `0.5rem` | 8px | Padding interno de botões |
|
|
142
|
-
| **4** | `1rem` | 16px | Padding padrão de cards |
|
|
143
|
-
| **6** | `1.5rem` | 24px | Margin entre seções |
|
|
144
|
-
| **8** | `2rem` | 32px | Margin grande entre blocos |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 🔲 Border Radius
|
|
149
|
-
|
|
150
|
-
| Size | Valor | Uso |
|
|
151
|
-
|------|-------|-----|
|
|
152
|
-
| **none** | `0` | Sem arredondamento |
|
|
153
|
-
| **sm** | `{value}` | Arredondamento sutil |
|
|
154
|
-
| **md** | `{value}` | Arredondamento padrão |
|
|
155
|
-
| **lg** | `{value}` | Arredondamento pronunciado |
|
|
156
|
-
| **xl** | `{value}` | Muito arredondado |
|
|
157
|
-
| **full** | `9999px` | Circular (botões redondos, avatares) |
|
|
158
|
-
|
|
159
|
-
**Exemplo:**
|
|
160
|
-
| Size | Valor | Uso |
|
|
161
|
-
|------|-------|-----|
|
|
162
|
-
| **sm** | `0.125rem` (2px) | Inputs, tabelas |
|
|
163
|
-
| **md** | `0.375rem` (6px) | Botões, cards |
|
|
164
|
-
| **lg** | `0.5rem` (8px) | Modais, containers |
|
|
165
|
-
| **full** | `9999px` | Avatares, badges circulares |
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## 🌑 Sombras (Shadows)
|
|
170
|
-
|
|
171
|
-
| Size | Valor | Uso |
|
|
172
|
-
|------|-------|-----|
|
|
173
|
-
| **sm** | `{shadow}` | Sombra sutil (hover) |
|
|
174
|
-
| **md** | `{shadow}` | Sombra padrão (cards) |
|
|
175
|
-
| **lg** | `{shadow}` | Sombra pronunciada (modals) |
|
|
176
|
-
| **xl** | `{shadow}` | Sombra forte (dropdowns) |
|
|
177
|
-
|
|
178
|
-
**Exemplo (Tailwind):**
|
|
179
|
-
| Size | Valor |
|
|
180
|
-
|------|-------|
|
|
181
|
-
| **sm** | `0 1px 2px 0 rgba(0, 0, 0, 0.05)` |
|
|
182
|
-
| **md** | `0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)` |
|
|
183
|
-
| **lg** | `0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)` |
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## 📱 Breakpoints (Responsive)
|
|
188
|
-
|
|
189
|
-
| Breakpoint | Min Width | Dispositivos |
|
|
190
|
-
|------------|-----------|--------------|
|
|
191
|
-
| **xs** | `0px` | Mobile portrait (padrão) |
|
|
192
|
-
| **sm** | `{value}` | Mobile landscape / Tablet pequeno |
|
|
193
|
-
| **md** | `{value}` | Tablet |
|
|
194
|
-
| **lg** | `{value}` | Desktop pequeno |
|
|
195
|
-
| **xl** | `{value}` | Desktop grande |
|
|
196
|
-
| **2xl** | `{value}` | Desktop muito grande |
|
|
197
|
-
|
|
198
|
-
**Exemplo (Tailwind):**
|
|
199
|
-
| Breakpoint | Min Width |
|
|
200
|
-
|------------|-----------|
|
|
201
|
-
| **sm** | `640px` |
|
|
202
|
-
| **md** | `768px` |
|
|
203
|
-
| **lg** | `1024px` |
|
|
204
|
-
| **xl** | `1280px` |
|
|
205
|
-
| **2xl** | `1536px` |
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## 🎯 Aplicação no Código
|
|
210
|
-
|
|
211
|
-
### CSS Variables (Recomendado)
|
|
212
|
-
|
|
213
|
-
Ver template: `design-system.css`
|
|
214
|
-
|
|
215
|
-
```css
|
|
216
|
-
:root {
|
|
217
|
-
/* Cores */
|
|
218
|
-
--color-primary: #{hex};
|
|
219
|
-
--color-secondary: #{hex};
|
|
220
|
-
|
|
221
|
-
/* Tipografia */
|
|
222
|
-
--font-sans: '{Font}', sans-serif;
|
|
223
|
-
--text-base: 1rem;
|
|
224
|
-
|
|
225
|
-
/* Espaçamento */
|
|
226
|
-
--space-4: 1rem;
|
|
227
|
-
}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Fluent UI Theme (se Fluent UI)
|
|
231
|
-
|
|
232
|
-
Ver template: `FluentDesignTheme.cs`
|
|
233
|
-
|
|
234
|
-
```csharp
|
|
235
|
-
public static class FluentDesignTheme
|
|
236
|
-
{
|
|
237
|
-
public static DesignThemePalette GetPalette() => new()
|
|
238
|
-
{
|
|
239
|
-
Primary = "#{cor primária}",
|
|
240
|
-
// ...
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### MudBlazor Theme (se MudBlazor)
|
|
246
|
-
|
|
247
|
-
Ver template: `MudTheme.cs`
|
|
248
|
-
|
|
249
|
-
```csharp
|
|
250
|
-
public static MudTheme Theme => new()
|
|
251
|
-
{
|
|
252
|
-
Palette = new PaletteLight
|
|
253
|
-
{
|
|
254
|
-
Primary = "#{cor primária}",
|
|
255
|
-
// ...
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
## 📋 Checklist de Consistência
|
|
263
|
-
|
|
264
|
-
- [ ] Todas as cores têm hex + rgb documentados
|
|
265
|
-
- [ ] Escala de neutros completa (50-900)
|
|
266
|
-
- [ ] Fontes têm fallback stacks completos
|
|
267
|
-
- [ ] Escala de tamanhos cobre todos os casos (xs até 5xl)
|
|
268
|
-
- [ ] Espaçamento usa múltiplos da unidade base
|
|
269
|
-
- [ ] Border radius tem tamanhos sm, md, lg, full
|
|
270
|
-
- [ ] Sombras têm variações de intensidade
|
|
271
|
-
- [ ] Breakpoints cobrem mobile até desktop grande
|
|
272
|
-
- [ ] Design system será implementado na FASE 5 (arquivos CSS/C#)
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
|
|
276
|
-
## 🔗 Referências
|
|
277
|
-
|
|
278
|
-
- [Fluent Design System](https://fluent2.microsoft.design/)
|
|
279
|
-
- [Material Design](https://m3.material.io/)
|
|
280
|
-
- [Tailwind CSS Palette](https://tailwindcss.com/docs/customizing-colors)
|
|
281
|
-
- [Type Scale](https://type-scale.com/)
|
|
282
|
-
- [Modular Scale](https://www.modularscale.com/)
|
|
283
|
-
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
*Template MORPH-SPEC v2.1.1 by Polymorphism Tech*
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
# UI Flows - {{FEATURE_NAME_TITLE}}
|
|
2
|
-
|
|
3
|
-
> Fluxos de usuário completos mostrando navegação, decisões e edge cases.
|
|
4
|
-
> Documenta COMO o usuário se move pela feature do início ao fim.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Fluxo 1: {Nome do Fluxo Principal}
|
|
9
|
-
|
|
10
|
-
### Contexto
|
|
11
|
-
|
|
12
|
-
**Trigger (Gatilho):**
|
|
13
|
-
{O que inicia este fluxo? Ex: "Usuário clica em [+ Novo Pedido]"}
|
|
14
|
-
|
|
15
|
-
**Pré-condições:**
|
|
16
|
-
- {Condição 1 que deve ser verdadeira para iniciar o fluxo}
|
|
17
|
-
- {Condição 2}
|
|
18
|
-
|
|
19
|
-
**Objetivo:**
|
|
20
|
-
{O que o usuário quer alcançar ao final deste fluxo?}
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
### Happy Path (Caminho Ideal)
|
|
25
|
-
|
|
26
|
-
#### Passos
|
|
27
|
-
|
|
28
|
-
**1. {Tela/Componente Inicial}**: {Ação do usuário}
|
|
29
|
-
- Sistema: {Resposta do sistema}
|
|
30
|
-
- UI: {Mudança visual}
|
|
31
|
-
- Navegação: {Para onde vai}
|
|
32
|
-
|
|
33
|
-
**2. {Próxima Tela/Componente}**: {Próxima ação}
|
|
34
|
-
- Sistema: {Processamento backend}
|
|
35
|
-
- UI: {Feedback visual}
|
|
36
|
-
- Validação: {Regras aplicadas}
|
|
37
|
-
|
|
38
|
-
**3. {Tela/Componente Final}**: {Ação de conclusão}
|
|
39
|
-
- Sistema: {Persistência/salvamento}
|
|
40
|
-
- UI: {Mensagem de sucesso}
|
|
41
|
-
- Navegação: {Retorna para onde}
|
|
42
|
-
|
|
43
|
-
**Tempo estimado:** {X segundos/minutos para usuário completar}
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
### Diagrama de Fluxo (Happy Path)
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
┌─────────────────┐
|
|
51
|
-
│ Tela Inicial │
|
|
52
|
-
│ [Dashboard] │
|
|
53
|
-
└────────┬────────┘
|
|
54
|
-
│
|
|
55
|
-
│ Clica [+ Novo Pedido]
|
|
56
|
-
▼
|
|
57
|
-
┌─────────────────┐
|
|
58
|
-
│ Modal/Wizard │
|
|
59
|
-
│ Aberto │
|
|
60
|
-
└────────┬────────┘
|
|
61
|
-
│
|
|
62
|
-
│ ⟨Step 1⟩ Seleciona Cliente
|
|
63
|
-
▼
|
|
64
|
-
┌─────────────────┐
|
|
65
|
-
│ Cliente │
|
|
66
|
-
│ Selecionado │
|
|
67
|
-
└────────┬────────┘
|
|
68
|
-
│
|
|
69
|
-
│ Clica [Próximo]
|
|
70
|
-
▼
|
|
71
|
-
┌─────────────────┐
|
|
72
|
-
│ ⟨Step 2⟩ │
|
|
73
|
-
│ Produtos │
|
|
74
|
-
└────────┬────────┘
|
|
75
|
-
│
|
|
76
|
-
│ Adiciona Produtos
|
|
77
|
-
│ Total Calculado
|
|
78
|
-
▼
|
|
79
|
-
┌─────────────────┐
|
|
80
|
-
│ Lista de │
|
|
81
|
-
│ Produtos OK │
|
|
82
|
-
└────────┬────────┘
|
|
83
|
-
│
|
|
84
|
-
│ Clica [Próximo]
|
|
85
|
-
▼
|
|
86
|
-
┌─────────────────┐
|
|
87
|
-
│ ⟨Step 3⟩ │
|
|
88
|
-
│ Revisão │
|
|
89
|
-
└────────┬────────┘
|
|
90
|
-
│
|
|
91
|
-
│ Clica [Confirmar]
|
|
92
|
-
▼
|
|
93
|
-
┌─────────────────┐
|
|
94
|
-
│ ✅ Pedido │
|
|
95
|
-
│ Criado! │
|
|
96
|
-
└────────┬────────┘
|
|
97
|
-
│
|
|
98
|
-
│ Toast "Sucesso!"
|
|
99
|
-
│ Navega para Detalhes
|
|
100
|
-
▼
|
|
101
|
-
┌─────────────────┐
|
|
102
|
-
│ Tela Detalhes │
|
|
103
|
-
│ Pedido #12345 │
|
|
104
|
-
└─────────────────┘
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
### Edge Cases (Casos de Exceção)
|
|
110
|
-
|
|
111
|
-
#### 1. {Nome do Edge Case}
|
|
112
|
-
|
|
113
|
-
**Cenário:**
|
|
114
|
-
{Descrição da situação excepcional}
|
|
115
|
-
|
|
116
|
-
**Como o sistema lida:**
|
|
117
|
-
```
|
|
118
|
-
┌─────────────────┐
|
|
119
|
-
│ Passo Normal │
|
|
120
|
-
└────────┬────────┘
|
|
121
|
-
│
|
|
122
|
-
│ ❌ {Erro/Condição}
|
|
123
|
-
▼
|
|
124
|
-
┌─────────────────┐
|
|
125
|
-
│ Mensagem Erro │
|
|
126
|
-
│ FluentDialog │
|
|
127
|
-
└────────┬────────┘
|
|
128
|
-
│
|
|
129
|
-
┌────┴────┐
|
|
130
|
-
│ │
|
|
131
|
-
▼ ▼
|
|
132
|
-
[Tentar] [Cancelar]
|
|
133
|
-
Novamente
|
|
134
|
-
│ │
|
|
135
|
-
│ └──▶ [Volta Dashboard]
|
|
136
|
-
│
|
|
137
|
-
└──▶ [Repete Passo]
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**UI:**
|
|
141
|
-
- Componente: {FluentDialog, FluentMessageBar, etc}
|
|
142
|
-
- Mensagem: "{Texto exato da mensagem}"
|
|
143
|
-
- Ações disponíveis: {Botões/links}
|
|
144
|
-
|
|
145
|
-
**Exemplo de código:**
|
|
146
|
-
```razor
|
|
147
|
-
@if (!string.IsNullOrEmpty(_error))
|
|
148
|
-
{
|
|
149
|
-
<FluentMessageBar Intent="MessageIntent.Error">
|
|
150
|
-
@_error
|
|
151
|
-
<FluentButton OnClick="@Retry">Tentar Novamente</FluentButton>
|
|
152
|
-
</FluentMessageBar>
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
#### 2. {Outro Edge Case}
|
|
159
|
-
|
|
160
|
-
{Repita a estrutura acima}
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
### Fluxos Alternativos
|
|
165
|
-
|
|
166
|
-
#### Alt 1: {Nome do Fluxo Alternativo}
|
|
167
|
-
|
|
168
|
-
**Diverge em:** {Em qual passo do happy path este fluxo se ramifica}
|
|
169
|
-
|
|
170
|
-
**Condição:** {O que causa a divergência}
|
|
171
|
-
|
|
172
|
-
**Passos:**
|
|
173
|
-
1. {Passo alternativo 1}
|
|
174
|
-
2. {Passo alternativo 2}
|
|
175
|
-
3. {Convergência de volta ao happy path OU conclusão diferente}
|
|
176
|
-
|
|
177
|
-
**Diagrama:**
|
|
178
|
-
```
|
|
179
|
-
[Happy Path]
|
|
180
|
-
│
|
|
181
|
-
├─{Condição}──▶ [Fluxo Alt]
|
|
182
|
-
│ │
|
|
183
|
-
│ └──▶ [Converge]
|
|
184
|
-
▼
|
|
185
|
-
[Continua...]
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Fluxo 2: {Segundo Fluxo Importante}
|
|
191
|
-
|
|
192
|
-
{Repita toda a estrutura acima para cada fluxo principal}
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Interações Comuns (Micro-Fluxos)
|
|
197
|
-
|
|
198
|
-
### {Ação Rápida - Ex: "Buscar Item"}
|
|
199
|
-
|
|
200
|
-
**Trigger:** {Usuário digita na search bar}
|
|
201
|
-
|
|
202
|
-
**Fluxo:**
|
|
203
|
-
```
|
|
204
|
-
[Input vazio] ──▶ [Usuário digita] ──▶ [Debounce 300ms] ──▶ [API Call]
|
|
205
|
-
│
|
|
206
|
-
▼
|
|
207
|
-
[Resultados]
|
|
208
|
-
│
|
|
209
|
-
┌─────────────┴──────────┐
|
|
210
|
-
▼ ▼
|
|
211
|
-
[Tem Resultados] [Vazio]
|
|
212
|
-
│ │
|
|
213
|
-
▼ ▼
|
|
214
|
-
[Mostra Lista] [Mostra "Não encontrado"]
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**Componente:** `FluentAutocomplete`
|
|
218
|
-
|
|
219
|
-
**Código:**
|
|
220
|
-
```razor
|
|
221
|
-
<FluentAutocomplete TItem="Item"
|
|
222
|
-
SearchAsync="@SearchItemsAsync"
|
|
223
|
-
Placeholder="Buscar item..."
|
|
224
|
-
MinLength="2"
|
|
225
|
-
Debounce="300">
|
|
226
|
-
<ItemTemplate Context="item">
|
|
227
|
-
@item.Name
|
|
228
|
-
</ItemTemplate>
|
|
229
|
-
</FluentAutocomplete>
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## Mapa de Navegação Completo
|
|
235
|
-
|
|
236
|
-
Visão geral de TODAS as telas e como se conectam:
|
|
237
|
-
|
|
238
|
-
```
|
|
239
|
-
┌──────────────┐
|
|
240
|
-
│ Dashboard │
|
|
241
|
-
└──────┬───────┘
|
|
242
|
-
│
|
|
243
|
-
┌─────────────────┼─────────────────┐
|
|
244
|
-
│ │ │
|
|
245
|
-
▼ ▼ ▼
|
|
246
|
-
┌─────────┐ ┌──────────┐ ┌─────────┐
|
|
247
|
-
│ Pedidos │ │ Clientes │ │Produtos │
|
|
248
|
-
└────┬────┘ └────┬─────┘ └────┬────┘
|
|
249
|
-
│ │ │
|
|
250
|
-
▼ ▼ ▼
|
|
251
|
-
[+ Novo] [+ Novo] [+ Novo]
|
|
252
|
-
│ │ │
|
|
253
|
-
└────────────────┴──────────────────┬┘
|
|
254
|
-
│
|
|
255
|
-
▼
|
|
256
|
-
┌───────────────┐
|
|
257
|
-
│ Modal Wizard │
|
|
258
|
-
│ (3 steps) │
|
|
259
|
-
└───────┬───────┘
|
|
260
|
-
│
|
|
261
|
-
▼
|
|
262
|
-
[Confirmar]
|
|
263
|
-
│
|
|
264
|
-
▼
|
|
265
|
-
┌───────────────┐
|
|
266
|
-
│ Tela Detalhes │
|
|
267
|
-
└───────┬───────┘
|
|
268
|
-
│
|
|
269
|
-
┌───────┴───────┐
|
|
270
|
-
│ │
|
|
271
|
-
▼ ▼
|
|
272
|
-
[Editar] [Voltar]
|
|
273
|
-
│ │
|
|
274
|
-
└───────┬───────┘
|
|
275
|
-
│
|
|
276
|
-
▼
|
|
277
|
-
[Dashboard]
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Estados de Loading
|
|
283
|
-
|
|
284
|
-
### {Onde há loading na feature}
|
|
285
|
-
|
|
286
|
-
**1. Carregamento Inicial:**
|
|
287
|
-
- **Onde:** {Primeira tela ao abrir}
|
|
288
|
-
- **Componente:** `FluentSkeleton` ou `FluentProgress`
|
|
289
|
-
- **Duração esperada:** {X ms}
|
|
290
|
-
|
|
291
|
-
**2. Carregamento de Ação:**
|
|
292
|
-
- **Onde:** {Ao submeter form, por exemplo}
|
|
293
|
-
- **Componente:** `FluentButton` com `Loading="true"`
|
|
294
|
-
- **Duração esperada:** {X ms}
|
|
295
|
-
|
|
296
|
-
**3. Carregamento Incremental:**
|
|
297
|
-
- **Onde:** {Infinite scroll, paginação}
|
|
298
|
-
- **Componente:** `FluentProgress` no rodapé
|
|
299
|
-
- **Duração esperada:** {X ms}
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
## Validações e Feedback
|
|
304
|
-
|
|
305
|
-
### Validações Client-Side
|
|
306
|
-
|
|
307
|
-
| Campo | Validação | Mensagem de Erro | Componente |
|
|
308
|
-
|-------|-----------|------------------|------------|
|
|
309
|
-
| {Nome} | Required | "Campo obrigatório" | FluentTextField |
|
|
310
|
-
| {Email} | Email format | "Email inválido" | FluentTextField |
|
|
311
|
-
| {CPF} | CPF válido | "CPF inválido" | FluentTextField |
|
|
312
|
-
|
|
313
|
-
### Validações Server-Side
|
|
314
|
-
|
|
315
|
-
| Ação | Validação | Erro Possível | Como Mostra |
|
|
316
|
-
|------|-----------|---------------|-------------|
|
|
317
|
-
| Criar Pedido | Cliente ativo | "Cliente inativo" | FluentMessageBar |
|
|
318
|
-
| Adicionar Produto | Estoque > 0 | "Sem estoque" | FluentDialog |
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
|
-
## Checklist de Fluxos
|
|
323
|
-
|
|
324
|
-
- [ ] Happy path documentado com todos os passos
|
|
325
|
-
- [ ] Diagramas ASCII de cada fluxo
|
|
326
|
-
- [ ] Edge cases identificados (erro, vazio, retry)
|
|
327
|
-
- [ ] Fluxos alternativos mapeados
|
|
328
|
-
- [ ] Loading states especificados
|
|
329
|
-
- [ ] Validações client-side e server-side listadas
|
|
330
|
-
- [ ] Mensagens de erro/sucesso definidas
|
|
331
|
-
- [ ] Navegação entre telas clara
|
|
332
|
-
- [ ] Tempo estimado de cada fluxo
|
|
333
|
-
|
|
334
|
-
---
|
|
335
|
-
|
|
336
|
-
*Template MORPH-SPEC v2.1.0 by Polymorphism Tech*
|