@polymorphism-tech/morph-spec 3.1.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.
Files changed (333) hide show
  1. package/CLAUDE.md +882 -3
  2. package/README.md +79 -18
  3. package/bin/detect-agents.js +1 -1
  4. package/bin/morph-spec.js +163 -26
  5. package/bin/task-manager.cjs +101 -7
  6. package/bin/validate.js +1 -1
  7. package/docs/cli-auto-detection.md +219 -0
  8. package/docs/getting-started.md +0 -5
  9. package/docs/llm-interaction-config.md +735 -0
  10. package/docs/troubleshooting.md +269 -0
  11. package/docs/v3.0/AGENTS.md +521 -0
  12. package/docs/v3.0/ANALYSIS.md +555 -0
  13. package/docs/v3.0/ARCHITECTURE.md +436 -0
  14. package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
  15. package/docs/v3.0/FEATURES.md +688 -0
  16. package/docs/v3.0/README.md +231 -0
  17. package/docs/v3.0/ROADMAP.md +801 -0
  18. package/docs/validation-checklist.md +0 -1
  19. package/package.json +5 -1
  20. package/src/commands/agents/index.js +4 -0
  21. package/src/commands/agents/spawn-team.js +172 -0
  22. package/src/commands/{create-story.js → feature/create-story.js} +357 -354
  23. package/src/commands/feature/index.js +6 -0
  24. package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
  25. package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
  26. package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
  27. package/src/commands/{generate.js → generation/generate.js} +130 -3
  28. package/src/commands/generation/index.js +5 -0
  29. package/src/commands/index.js +16 -0
  30. package/src/commands/learning/capture-pattern.js +121 -0
  31. package/src/commands/learning/index.js +5 -0
  32. package/src/commands/learning/search-patterns.js +126 -0
  33. package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
  34. package/src/commands/project/detect-workflow.js +174 -0
  35. package/src/commands/{detect.js → project/detect.js} +104 -104
  36. package/src/commands/{doctor.js → project/doctor.js} +356 -356
  37. package/src/commands/project/index.js +10 -0
  38. package/src/commands/{init.js → project/init.js} +305 -258
  39. package/src/commands/{sync.js → project/sync.js} +167 -167
  40. package/src/commands/{update.js → project/update.js} +240 -204
  41. package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -266
  42. package/src/commands/state/approve.js +221 -0
  43. package/src/commands/state/index.js +8 -0
  44. package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
  45. package/src/commands/{state.js → state/state.js} +334 -334
  46. package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
  47. package/src/commands/tasks/index.js +4 -0
  48. package/src/commands/{task.js → tasks/task.js} +78 -78
  49. package/src/commands/templates/index.js +8 -0
  50. package/src/commands/templates/template-customize.js +101 -0
  51. package/src/commands/templates/template-list.js +128 -0
  52. package/src/commands/templates/template-render.js +95 -0
  53. package/src/commands/templates/template-show.js +131 -0
  54. package/src/commands/templates/template-validate.js +91 -0
  55. package/src/commands/utils/index.js +7 -0
  56. package/src/commands/utils/migrate-state.js +158 -0
  57. package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
  58. package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
  59. package/src/commands/utils/upgrade.js +346 -0
  60. package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
  61. package/src/commands/validation/index.js +8 -0
  62. package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
  63. package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
  64. package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
  65. package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
  66. package/src/core/index.js +10 -0
  67. package/src/core/registry/command-registry.js +302 -0
  68. package/src/core/registry/index.js +8 -0
  69. package/src/core/registry/validator-registry.js +204 -0
  70. package/src/core/state/index.js +8 -0
  71. package/src/core/state/phase-state-machine.js +214 -0
  72. package/src/{lib → core/state}/state-manager.js +572 -414
  73. package/src/core/templates/index.js +9 -0
  74. package/src/core/templates/template-data-sources.js +325 -0
  75. package/src/core/templates/template-registry.js +335 -0
  76. package/src/core/templates/template-renderer.js +477 -0
  77. package/src/core/templates/template-validator.js +296 -0
  78. package/src/core/workflows/index.js +7 -0
  79. package/src/core/workflows/workflow-detector.js +354 -0
  80. package/src/generator/config-generator.js +206 -0
  81. package/src/generator/templates/config.json.template +40 -0
  82. package/src/generator/templates/project.md.template +67 -0
  83. package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
  84. package/src/lib/analysis/index.js +7 -0
  85. package/src/lib/checkpoints/checkpoint-hooks.js +258 -0
  86. package/src/lib/checkpoints/index.js +7 -0
  87. package/src/lib/detectors/config-detector.js +223 -223
  88. package/src/lib/detectors/conversation-analyzer.js +163 -163
  89. package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
  90. package/src/lib/detectors/index.js +87 -84
  91. package/src/lib/detectors/standards-generator.js +275 -275
  92. package/src/lib/detectors/structure-detector.js +245 -245
  93. package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
  94. package/src/lib/generators/index.js +10 -0
  95. package/src/lib/generators/metadata-extractor.js +387 -0
  96. package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
  97. package/src/lib/learning/index.js +7 -0
  98. package/src/lib/orchestration/index.js +7 -0
  99. package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
  100. package/src/lib/stacks/index.js +7 -0
  101. package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
  102. package/src/lib/standards/index.js +7 -0
  103. package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
  104. package/src/lib/troubleshooting/index.js +8 -0
  105. package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
  106. package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
  107. package/src/lib/validators/architecture/architecture-validator.js +387 -0
  108. package/src/lib/validators/architecture/index.js +7 -0
  109. package/src/lib/validators/architecture-validator.js +40 -367
  110. package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
  111. package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
  112. package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
  113. package/src/lib/validators/blazor/index.js +9 -0
  114. package/src/lib/validators/content/content-validator.js +351 -0
  115. package/src/lib/validators/content/index.js +7 -0
  116. package/src/lib/validators/content-validator.js +164 -0
  117. package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
  118. package/src/lib/validators/contracts/index.js +7 -0
  119. package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
  120. package/src/lib/validators/css/index.js +7 -0
  121. package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
  122. package/src/lib/validators/design-system/index.js +7 -0
  123. package/src/lib/validators/package-validator.js +41 -340
  124. package/src/lib/validators/packages/index.js +7 -0
  125. package/src/lib/validators/packages/package-validator.js +360 -0
  126. package/src/lib/validators/shared/index.js +12 -0
  127. package/src/lib/validators/shared/issue-counter.js +18 -0
  128. package/src/lib/validators/shared/result-formatter.js +124 -0
  129. package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
  130. package/src/lib/validators/ui/index.js +7 -0
  131. package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
  132. package/src/lib/validators/ui-contrast-validator.js +31 -409
  133. package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
  134. package/src/llm/analyzer.js +215 -0
  135. package/src/llm/environment-detector.js +43 -0
  136. package/src/llm/few-shot-examples.js +216 -0
  137. package/src/llm/project-config-schema.json +188 -0
  138. package/src/llm/prompt-builder.js +96 -0
  139. package/src/orchestrator.js +206 -0
  140. package/src/sanitizer/context-sanitizer.js +221 -0
  141. package/src/sanitizer/patterns.js +163 -0
  142. package/src/scanner/project-scanner.js +242 -0
  143. package/src/ui/diff-display.js +91 -0
  144. package/src/ui/interactive-wizard.js +96 -0
  145. package/src/ui/user-review.js +211 -0
  146. package/src/ui/wizard-questions.js +188 -0
  147. package/src/utils/color-utils.js +70 -0
  148. package/src/utils/file-copier.js +188 -189
  149. package/src/utils/process-handler.js +97 -0
  150. package/src/writer/file-writer.js +86 -0
  151. package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
  152. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
  153. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
  154. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
  155. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
  156. package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
  157. package/stacks/blazor-azure/.morph/config/agents.json +879 -764
  158. package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
  159. package/stacks/blazor-azure/.morph/templates/.gitkeep +0 -0
  160. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
  161. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
  162. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
  163. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
  164. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
  165. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
  166. package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
  167. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
  168. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
  169. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
  170. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
  171. package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
  172. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
  173. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
  174. package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
  175. package/stacks/nextjs-supabase/.morph/templates/.gitkeep +0 -0
  176. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
  177. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
  178. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
  179. package/stacks/nextjs-supabase/README.md +6 -15
  180. package/bin/render-template.js +0 -303
  181. package/bin/semantic-detect-agents.js +0 -247
  182. package/bin/validate-agents-skills.js +0 -257
  183. package/bin/validate-agents.js +0 -70
  184. package/bin/validate-phase.js +0 -263
  185. package/docs/examples.md +0 -328
  186. package/scripts/reorganize-skills.cjs +0 -175
  187. package/scripts/validate-agents-structure.cjs +0 -52
  188. package/scripts/validate-skills.cjs +0 -180
  189. package/src/commands/deploy.js +0 -780
  190. package/src/lib/continuous-validator.js +0 -421
  191. package/src/lib/decision-constraint-loader.js +0 -109
  192. package/src/lib/design-system-scaffolder.js +0 -299
  193. package/src/lib/hook-executor.js +0 -257
  194. package/src/lib/mockup-generator.js +0 -366
  195. package/src/lib/ui-detector.js +0 -350
  196. package/stacks/blazor-azure/.azure/README.md +0 -293
  197. package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
  198. package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
  199. package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
  200. package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
  201. package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
  202. package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
  203. package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
  204. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
  205. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
  206. package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
  207. package/stacks/blazor-azure/.claude/settings.local.json +0 -15
  208. package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
  209. package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
  210. package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
  211. package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
  212. package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
  213. package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
  214. package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
  215. package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
  216. package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
  217. package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
  218. package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
  219. package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
  220. package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
  221. package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
  222. package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
  223. package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
  224. package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
  225. package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
  226. package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
  227. package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
  228. package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
  229. package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
  230. package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
  231. package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
  232. package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
  233. package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
  234. package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
  235. package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
  236. package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
  237. package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
  238. package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
  239. package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
  240. package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
  241. package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
  242. package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
  243. package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
  244. package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
  245. package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
  246. package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
  247. package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
  248. package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
  249. package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
  250. package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
  251. package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
  252. package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
  253. package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
  254. package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
  255. package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
  256. package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
  257. package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
  258. package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
  259. package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
  260. package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
  261. package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
  262. package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
  263. package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
  264. package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
  265. package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
  266. package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
  267. package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
  268. package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
  269. package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
  270. package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
  271. package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
  272. package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
  273. package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
  274. package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
  275. package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
  276. package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
  277. package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
  278. package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
  279. package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
  280. package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
  281. package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
  282. package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
  283. package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
  284. package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
  285. package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
  286. package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
  287. package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
  288. package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
  289. package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
  290. package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
  291. package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
  292. package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
  293. package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
  294. package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
  295. package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
  296. package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
  297. package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
  298. package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
  299. package/stacks/blazor-azure/.morph/templates/story.md +0 -143
  300. package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
  301. package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
  302. package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
  303. package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
  304. package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
  305. package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
  306. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
  307. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
  308. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
  309. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
  310. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
  311. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
  312. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
  313. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
  314. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
  315. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
  316. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
  317. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
  318. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
  319. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
  320. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
  321. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
  322. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
  323. package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
  324. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
  325. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
  326. package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
  327. package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
  328. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
  329. package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
  330. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
  331. package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
  332. /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
  333. /package/src/lib/{learning-system.js → learning/learning-system.js} +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*