@polymorphism-tech/morph-spec 3.0.1 → 3.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 (316) hide show
  1. package/CLAUDE.md +561 -63
  2. package/LICENSE +72 -72
  3. package/README.md +275 -79
  4. package/bin/detect-agents.js +3 -1
  5. package/bin/morph-spec.js +60 -1
  6. package/bin/render-template.js +61 -14
  7. package/bin/semantic-detect-agents.js +2 -1
  8. package/bin/{task-manager.js → task-manager.cjs} +113 -8
  9. package/bin/validate-agents-skills.js +10 -4
  10. package/bin/validate-agents.js +4 -3
  11. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  12. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  13. package/docs/api/scripts/collapse.js +38 -38
  14. package/docs/api/scripts/commonNav.js +28 -28
  15. package/docs/api/scripts/linenumber.js +25 -25
  16. package/docs/api/scripts/nav.js +12 -12
  17. package/docs/api/scripts/polyfill.js +3 -3
  18. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  19. package/docs/api/scripts/prettify/lang-css.js +2 -2
  20. package/docs/api/scripts/prettify/prettify.js +28 -28
  21. package/docs/api/scripts/search.js +98 -98
  22. package/docs/api/styles/jsdoc.css +776 -776
  23. package/docs/api/styles/prettify.css +80 -80
  24. package/docs/cli-auto-detection.md +219 -0
  25. package/docs/examples.md +328 -328
  26. package/docs/getting-started.md +3 -3
  27. package/docs/llm-interaction-config.md +735 -0
  28. package/docs/templates.md +418 -418
  29. package/docs/troubleshooting.md +269 -0
  30. package/package.json +7 -3
  31. package/scripts/postinstall.js +132 -132
  32. package/scripts/reorganize-skills.cjs +1 -1
  33. package/scripts/validate-agents-structure.cjs +1 -1
  34. package/scripts/validate-skills.cjs +2 -2
  35. package/src/commands/advance-phase.js +93 -2
  36. package/src/commands/analyze-blazor-concurrency.js +193 -193
  37. package/src/commands/approve.js +221 -0
  38. package/src/commands/capture-pattern.js +121 -0
  39. package/src/commands/create-story.js +5 -2
  40. package/src/commands/deploy.js +780 -780
  41. package/src/commands/detect-agents.js +4 -2
  42. package/src/commands/generate.js +276 -149
  43. package/src/commands/init.js +37 -0
  44. package/src/commands/lint-fluent.js +352 -352
  45. package/src/commands/migrate-state.js +158 -0
  46. package/src/commands/rollback-phase.js +185 -185
  47. package/src/commands/search-patterns.js +126 -0
  48. package/src/commands/session-summary.js +291 -291
  49. package/src/commands/shard-spec.js +224 -224
  50. package/src/commands/spawn-team.js +172 -0
  51. package/src/commands/sprint-status.js +250 -250
  52. package/src/commands/task.js +3 -3
  53. package/src/commands/troubleshoot.js +222 -222
  54. package/src/commands/update.js +36 -0
  55. package/src/commands/upgrade.js +346 -0
  56. package/src/commands/validate-blazor-state.js +210 -210
  57. package/src/commands/validate-blazor.js +156 -156
  58. package/src/commands/validate-css.js +84 -84
  59. package/src/commands/validate-phase.js +221 -221
  60. package/src/generator/.gitkeep +0 -0
  61. package/src/generator/config-generator.js +206 -0
  62. package/src/generator/templates/config.json.template +40 -0
  63. package/src/generator/templates/project.md.template +67 -0
  64. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  65. package/src/lib/blazor-state-validator.js +291 -291
  66. package/src/lib/blazor-validator.js +374 -374
  67. package/src/lib/checkpoint-hooks.js +258 -0
  68. package/src/lib/context-generator.js +7 -4
  69. package/src/lib/css-validator.js +352 -352
  70. package/src/lib/design-system-generator.js +298 -298
  71. package/src/lib/hook-executor.js +2 -1
  72. package/src/lib/learning-system.js +520 -520
  73. package/src/lib/metadata-extractor.js +380 -0
  74. package/src/lib/mockup-generator.js +366 -366
  75. package/src/lib/phase-state-machine.js +214 -0
  76. package/src/lib/stack-resolver.js +148 -0
  77. package/src/lib/standards-context-injector.js +4 -3
  78. package/src/lib/state-manager.js +120 -0
  79. package/src/lib/team-orchestrator.js +2 -1
  80. package/src/lib/template-data-sources.js +325 -0
  81. package/src/lib/troubleshoot-grep.js +204 -194
  82. package/src/lib/troubleshoot-index.js +144 -144
  83. package/src/lib/ui-detector.js +350 -350
  84. package/src/lib/validation-runner.js +2 -1
  85. package/src/lib/validators/architecture-validator.js +387 -387
  86. package/src/lib/validators/content-validator.js +351 -0
  87. package/src/lib/validators/package-validator.js +360 -360
  88. package/src/lib/validators/ui-contrast-validator.js +422 -422
  89. package/src/llm/.gitkeep +0 -0
  90. package/src/llm/analyzer.js +215 -0
  91. package/src/llm/environment-detector.js +43 -0
  92. package/src/llm/few-shot-examples.js +216 -0
  93. package/src/llm/project-config-schema.json +188 -0
  94. package/src/llm/prompt-builder.js +96 -0
  95. package/src/llm/schema-validator.js +121 -0
  96. package/src/orchestrator.js +206 -0
  97. package/src/sanitizer/.gitkeep +0 -0
  98. package/src/sanitizer/context-sanitizer.js +221 -0
  99. package/src/sanitizer/patterns.js +163 -0
  100. package/src/scanner/.gitkeep +0 -0
  101. package/src/scanner/project-scanner.js +242 -0
  102. package/src/types/index.js +477 -0
  103. package/src/ui/.gitkeep +0 -0
  104. package/src/ui/diff-display.js +91 -0
  105. package/src/ui/interactive-wizard.js +96 -0
  106. package/src/ui/user-review.js +211 -0
  107. package/src/ui/wizard-questions.js +190 -0
  108. package/src/utils/file-copier.js +3 -1
  109. package/src/utils/logger.js +32 -32
  110. package/src/utils/version-checker.js +175 -175
  111. package/src/writer/.gitkeep +0 -0
  112. package/src/writer/file-writer.js +86 -0
  113. package/{content → stacks/blazor-azure}/.azure/README.md +2 -2
  114. package/{content → stacks/blazor-azure}/.azure/pipelines/pipeline-variables.yml +1 -1
  115. package/{content → stacks/blazor-azure}/.azure/pipelines/prod-pipeline.yml +1 -1
  116. package/{content → stacks/blazor-azure}/.azure/pipelines/staging-pipeline.yml +1 -1
  117. package/{content → stacks/blazor-azure}/.claude/commands/morph-preflight.md +227 -227
  118. package/{content → stacks/blazor-azure}/.claude/commands/morph-troubleshoot.md +122 -122
  119. package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-setup.md +1 -1
  120. package/{content → stacks/blazor-azure}/.morph/docs/workflows/enforcement-pipeline.md +3 -3
  121. package/{content → stacks/blazor-azure}/.morph/hooks/README.md +12 -12
  122. package/{content → stacks/blazor-azure}/.morph/standards/agent-teams-workflow.md +2 -2
  123. package/{content → stacks/blazor-azure}/.morph/standards/migration-guide.md +2 -2
  124. package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy-checklist.md +426 -426
  125. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +244 -0
  126. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +335 -0
  127. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +189 -0
  128. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +170 -0
  129. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -0
  130. package/stacks/nextjs-supabase/.morph/config/config.template.json +92 -0
  131. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +169 -0
  132. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +247 -0
  133. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +697 -0
  134. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +85 -0
  135. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +86 -0
  136. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +498 -0
  137. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +121 -0
  138. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +138 -0
  139. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +162 -0
  140. package/stacks/nextjs-supabase/.morph/project.md +168 -0
  141. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +191 -0
  142. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +193 -0
  143. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +171 -0
  144. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +164 -0
  145. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +179 -0
  146. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +148 -0
  147. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +173 -0
  148. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +168 -0
  149. package/stacks/nextjs-supabase/.morph/templates/decisions.md +115 -0
  150. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +38 -0
  151. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +48 -0
  152. package/stacks/nextjs-supabase/.morph/templates/proposal.md +145 -0
  153. package/stacks/nextjs-supabase/.morph/templates/recap.md +134 -0
  154. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +57 -0
  155. package/stacks/nextjs-supabase/.morph/templates/spec.md +231 -0
  156. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +100 -0
  157. package/stacks/nextjs-supabase/.morph/templates/tasks.md +257 -0
  158. package/stacks/nextjs-supabase/CLAUDE.md +149 -0
  159. package/stacks/nextjs-supabase/README.md +112 -0
  160. /package/{content → stacks/blazor-azure}/.azure/docs/azure-devops-setup.md +0 -0
  161. /package/{content → stacks/blazor-azure}/.azure/docs/branch-strategy.md +0 -0
  162. /package/{content → stacks/blazor-azure}/.azure/docs/local-development.md +0 -0
  163. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/build-dotnet.yml +0 -0
  164. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-app-service.yml +0 -0
  165. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-container-app.yml +0 -0
  166. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/infra-deploy.yml +0 -0
  167. /package/{content → stacks/blazor-azure}/.claude/commands/morph-apply.md +0 -0
  168. /package/{content → stacks/blazor-azure}/.claude/commands/morph-archive.md +0 -0
  169. /package/{content → stacks/blazor-azure}/.claude/commands/morph-deploy.md +0 -0
  170. /package/{content → stacks/blazor-azure}/.claude/commands/morph-infra.md +0 -0
  171. /package/{content → stacks/blazor-azure}/.claude/commands/morph-proposal.md +0 -0
  172. /package/{content → stacks/blazor-azure}/.claude/commands/morph-status.md +0 -0
  173. /package/{content → stacks/blazor-azure}/.claude/settings.local.json +0 -0
  174. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/README.md +0 -0
  175. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/code-review.md +0 -0
  176. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/morph-checklist.md +0 -0
  177. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/simulation-checklist.md +0 -0
  178. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/README.md +0 -0
  179. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/morph-replicate.md +0 -0
  180. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-clarify.md +0 -0
  181. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-design.md +0 -0
  182. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-tasks.md +0 -0
  183. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-uiux.md +0 -0
  184. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/README.md +0 -0
  185. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -0
  186. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -0
  187. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -0
  188. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -0
  189. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -0
  190. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -0
  191. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -0
  192. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -0
  193. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -0
  194. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -0
  195. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -0
  196. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -0
  197. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -0
  198. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -0
  199. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -0
  200. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -0
  201. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -0
  202. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -0
  203. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -0
  204. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -0
  205. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/resend-email.md +0 -0
  206. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -0
  207. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -0
  208. /package/{content → stacks/blazor-azure}/.claude/skills/level-3-technologies/README.md +0 -0
  209. /package/{content → stacks/blazor-azure}/.claude/skills/level-4-patterns/README.md +0 -0
  210. /package/{content → stacks/blazor-azure}/.morph/.morphversion +0 -0
  211. /package/{content → stacks/blazor-azure}/.morph/archive/.gitkeep +0 -0
  212. /package/{content → stacks/blazor-azure}/.morph/config/agents.json +0 -0
  213. /package/{content → stacks/blazor-azure}/.morph/config/config.template.json +0 -0
  214. /package/{content → stacks/blazor-azure}/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -0
  215. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/design-impl.md +0 -0
  216. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/fast-track.md +0 -0
  217. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/full-morph.md +0 -0
  218. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/standard.md +0 -0
  219. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/ui-refresh.md +0 -0
  220. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/README.md +0 -0
  221. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/contracts.ts +0 -0
  222. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/spec.md +0 -0
  223. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/tasks.md +0 -0
  224. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/README.md +0 -0
  225. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/contracts.cs +0 -0
  226. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/decisions.md +0 -0
  227. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/spec.md +0 -0
  228. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/tasks.md +0 -0
  229. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/README.md +0 -0
  230. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/contracts.cs +0 -0
  231. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/spec.md +0 -0
  232. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/tasks.md +0 -0
  233. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/decisions.md +0 -0
  234. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/proposal.md +0 -0
  235. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/spec.md +0 -0
  236. /package/{content → stacks/blazor-azure}/.morph/examples/state-v3.json +0 -0
  237. /package/{content → stacks/blazor-azure}/.morph/features/.gitkeep +0 -0
  238. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-agents.sh +0 -0
  239. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-all.sh +0 -0
  240. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-specs.sh +0 -0
  241. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-tests.sh +0 -0
  242. /package/{content → stacks/blazor-azure}/.morph/hooks/task-completed.js +0 -0
  243. /package/{content → stacks/blazor-azure}/.morph/hooks/teammate-idle.js +0 -0
  244. /package/{content → stacks/blazor-azure}/.morph/project.md +0 -0
  245. /package/{content → stacks/blazor-azure}/.morph/schemas/agent.schema.json +0 -0
  246. /package/{content → stacks/blazor-azure}/.morph/schemas/tasks.schema.json +0 -0
  247. /package/{content → stacks/blazor-azure}/.morph/specs/.gitkeep +0 -0
  248. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-blazor-ui.md +0 -0
  249. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-production.md +0 -0
  250. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-setup.md +0 -0
  251. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-workflows.md +0 -0
  252. /package/{content → stacks/blazor-azure}/.morph/standards/architecture.md +0 -0
  253. /package/{content → stacks/blazor-azure}/.morph/standards/azure.md +0 -0
  254. /package/{content → stacks/blazor-azure}/.morph/standards/coding.md +0 -0
  255. /package/{content → stacks/blazor-azure}/.morph/standards/dotnet10-migration.md +0 -0
  256. /package/{content → stacks/blazor-azure}/.morph/standards/fluent-ui-setup.md +0 -0
  257. /package/{content → stacks/blazor-azure}/.morph/standards/passkeys-auth.md +0 -0
  258. /package/{content → stacks/blazor-azure}/.morph/standards/vector-search-rag.md +0 -0
  259. /package/{content → stacks/blazor-azure}/.morph/state.json +0 -0
  260. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT-FEATURE.md +0 -0
  261. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT.md +0 -0
  262. /package/{content → stacks/blazor-azure}/.morph/templates/FluentDesignTheme.cs +0 -0
  263. /package/{content → stacks/blazor-azure}/.morph/templates/MudTheme.cs +0 -0
  264. /package/{content → stacks/blazor-azure}/.morph/templates/agent.cs +0 -0
  265. /package/{content → stacks/blazor-azure}/.morph/templates/clarify-questions.md +0 -0
  266. /package/{content → stacks/blazor-azure}/.morph/templates/component.razor +0 -0
  267. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Commands.cs +0 -0
  268. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Entities.cs +0 -0
  269. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Queries.cs +0 -0
  270. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/README.md +0 -0
  271. /package/{content → stacks/blazor-azure}/.morph/templates/contracts.cs +0 -0
  272. /package/{content → stacks/blazor-azure}/.morph/templates/decisions.md +0 -0
  273. /package/{content → stacks/blazor-azure}/.morph/templates/design-system.css +0 -0
  274. /package/{content → stacks/blazor-azure}/.morph/templates/infra/.dockerignore.example +0 -0
  275. /package/{content → stacks/blazor-azure}/.morph/templates/infra/Dockerfile.example +0 -0
  276. /package/{content → stacks/blazor-azure}/.morph/templates/infra/README.md +0 -0
  277. /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-insights.bicep +0 -0
  278. /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-service.bicep +0 -0
  279. /package/{content → stacks/blazor-azure}/.morph/templates/infra/azure-pipelines-deploy.yml +0 -0
  280. /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app-env.bicep +0 -0
  281. /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app.bicep +0 -0
  282. /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.ps1 +0 -0
  283. /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.sh +0 -0
  284. /package/{content → stacks/blazor-azure}/.morph/templates/infra/key-vault.bicep +0 -0
  285. /package/{content → stacks/blazor-azure}/.morph/templates/infra/main.bicep +0 -0
  286. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.dev.json +0 -0
  287. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.prod.json +0 -0
  288. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.staging.json +0 -0
  289. /package/{content → stacks/blazor-azure}/.morph/templates/infra/sql-database.bicep +0 -0
  290. /package/{content → stacks/blazor-azure}/.morph/templates/infra/storage.bicep +0 -0
  291. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-client.cs +0 -0
  292. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-webhook.cs +0 -0
  293. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/azure-identity-config.cs +0 -0
  294. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/clerk-config.cs +0 -0
  295. /package/{content → stacks/blazor-azure}/.morph/templates/job.cs +0 -0
  296. /package/{content → stacks/blazor-azure}/.morph/templates/migration.cs +0 -0
  297. /package/{content → stacks/blazor-azure}/.morph/templates/proposal.md +0 -0
  298. /package/{content → stacks/blazor-azure}/.morph/templates/recap.md +0 -0
  299. /package/{content → stacks/blazor-azure}/.morph/templates/repository.cs +0 -0
  300. /package/{content → stacks/blazor-azure}/.morph/templates/saas/subscription.cs +0 -0
  301. /package/{content → stacks/blazor-azure}/.morph/templates/saas/tenant.cs +0 -0
  302. /package/{content → stacks/blazor-azure}/.morph/templates/service.cs +0 -0
  303. /package/{content → stacks/blazor-azure}/.morph/templates/simulation.md +0 -0
  304. /package/{content → stacks/blazor-azure}/.morph/templates/spec.md +0 -0
  305. /package/{content → stacks/blazor-azure}/.morph/templates/sprint-status.yaml +0 -0
  306. /package/{content → stacks/blazor-azure}/.morph/templates/state.template.json +0 -0
  307. /package/{content → stacks/blazor-azure}/.morph/templates/story.md +0 -0
  308. /package/{content → stacks/blazor-azure}/.morph/templates/tasks.md +0 -0
  309. /package/{content → stacks/blazor-azure}/.morph/templates/test.cs +0 -0
  310. /package/{content → stacks/blazor-azure}/.morph/templates/ui-components.md +0 -0
  311. /package/{content → stacks/blazor-azure}/.morph/templates/ui-design-system.md +0 -0
  312. /package/{content → stacks/blazor-azure}/.morph/templates/ui-flows.md +0 -0
  313. /package/{content → stacks/blazor-azure}/.morph/templates/ui-mockups.md +0 -0
  314. /package/{content → stacks/blazor-azure}/.morph/test-infra/example.bicep +0 -0
  315. /package/{content → stacks/blazor-azure}/CLAUDE.md +0 -0
  316. /package/{content → stacks/blazor-azure}/README.md +0 -0
@@ -1,776 +1,776 @@
1
- * {
2
- box-sizing: border-box
3
- }
4
-
5
- html, body {
6
- height: 100%;
7
- width: 100%;
8
- }
9
-
10
- body {
11
- color: #4d4e53;
12
- background-color: white;
13
- margin: 0 auto;
14
- padding: 0 20px;
15
- font-family: 'Helvetica Neue', Helvetica, sans-serif;
16
- font-size: 16px;
17
- }
18
-
19
- img {
20
- max-width: 100%;
21
- }
22
-
23
- a,
24
- a:active {
25
- color: #606;
26
- text-decoration: none;
27
- }
28
-
29
- a:hover {
30
- text-decoration: none;
31
- }
32
-
33
- article a {
34
- border-bottom: 1px solid #ddd;
35
- }
36
-
37
- article a:hover, article a:active {
38
- border-bottom-color: #222;
39
- }
40
-
41
- article .description a {
42
- word-break: break-word;
43
- }
44
-
45
- p, ul, ol, blockquote {
46
- margin-bottom: 1em;
47
- line-height: 160%;
48
- }
49
-
50
- h1, h2, h3, h4, h5, h6 {
51
- font-family: 'Montserrat', sans-serif;
52
- }
53
-
54
- h1, h2, h3, h4, h5, h6 {
55
- color: #000;
56
- font-weight: 400;
57
- margin: 0;
58
- }
59
-
60
- h1 {
61
- font-weight: 300;
62
- font-size: 48px;
63
- margin: 1em 0 .5em;
64
- }
65
-
66
- h1.page-title {
67
- font-size: 48px;
68
- margin: 1em 30px;
69
- line-height: 100%;
70
- word-wrap: break-word;
71
- }
72
-
73
- h2 {
74
- font-size: 24px;
75
- margin: 1.5em 0 .3em;
76
- }
77
-
78
- h3 {
79
- font-size: 24px;
80
- margin: 1.2em 0 .3em;
81
- }
82
-
83
- h4 {
84
- font-size: 18px;
85
- margin: 1em 0 .2em;
86
- color: #4d4e53;
87
- }
88
-
89
- h4.name {
90
- color: #fff;
91
- background: #6d426d;
92
- box-shadow: 0 .25em .5em #d3d3d3;
93
- border-top: 1px solid #d3d3d3;
94
- border-bottom: 1px solid #d3d3d3;
95
- margin: 1.5em 0 0.5em;
96
- padding: .75em 0 .75em 10px;
97
- }
98
-
99
- h4.name a {
100
- color: #fc83ff;
101
- }
102
-
103
- h4.name a:hover {
104
- border-bottom-color: #fc83ff;
105
- }
106
-
107
- h5, .container-overview .subsection-title {
108
- font-size: 120%;
109
- letter-spacing: -0.01em;
110
- margin: 8px 0 3px 0;
111
- }
112
-
113
- h6 {
114
- font-size: 100%;
115
- letter-spacing: -0.01em;
116
- margin: 6px 0 3px 0;
117
- font-style: italic;
118
- }
119
-
120
- .usertext h1 {
121
- font-family: "Source Sans Pro";
122
- font-size: 24px;
123
- margin: 2.5em 0 1em;
124
- font-weight: 400;
125
- }
126
-
127
- .usertext h2 {
128
- font-family: "Source Sans Pro";
129
- font-size: 18px;
130
- margin: 2em 0 0.5em;
131
- font-weight: 400;
132
-
133
- }
134
-
135
- .usertext h3 {
136
- font-family: "Source Sans Pro";
137
- font-size: 15px;
138
- margin: 1.5em 0 0;
139
- font-weight: 400;
140
- }
141
-
142
- .usertext h4 {
143
- font-family: "Source Sans Pro";
144
- font-size: 14px;
145
- margin: 0 0 0;
146
- font-weight: 400;
147
- }
148
-
149
- .usertext h5 {
150
- font-size: 12px;
151
- margin: 1em 0 0;
152
- font-weight: normal;
153
- color: #666;
154
- }
155
-
156
- .usertext h6 {
157
- font-size: 11px;
158
- margin: 1em 0 0;
159
- font-weight: normal;
160
- font-style: normal;
161
- color: #666;
162
- }
163
-
164
-
165
- tt, code, kbd, samp, pre {
166
- font-family: Consolas, Monaco, 'Andale Mono', monospace;
167
- background: #f4f4f4;
168
- }
169
-
170
- tt, code, kbd, samp{
171
- padding: 1px 5px;
172
- }
173
-
174
- pre {
175
- padding-bottom: 1em;
176
- }
177
-
178
- .class-description {
179
- font-size: 130%;
180
- line-height: 140%;
181
- margin-bottom: 1em;
182
- margin-top: 1em;
183
- }
184
-
185
- .class-description:empty {
186
- margin: 0
187
- }
188
-
189
- #main {
190
- float: right;
191
- width: calc(100% - 240px);
192
- }
193
-
194
- header {
195
- display: block
196
- }
197
-
198
- section {
199
- display: block;
200
- background-color: #fff;
201
- padding: 0 0 0 30px;
202
- }
203
-
204
- .variation {
205
- display: none
206
- }
207
-
208
- .signature-attributes {
209
- font-size: 60%;
210
- color: #eee;
211
- font-style: italic;
212
- font-weight: lighter;
213
- }
214
-
215
- nav {
216
- float: left;
217
- display: block;
218
- width: 250px;
219
- background: #fff;
220
- overflow: auto;
221
- position: fixed;
222
- height: 100%;
223
- }
224
-
225
- nav #nav-search{
226
- width: 210px;
227
- height: 30px;
228
- padding: 5px 10px;
229
- font-size: 12px;
230
- line-height: 1.5;
231
- border-radius: 3px;
232
- margin-right: 20px;
233
- margin-top: 20px;
234
- }
235
-
236
- nav.wrap a{
237
- word-wrap: break-word;
238
- }
239
-
240
- nav h3 {
241
- margin-top: 12px;
242
- font-size: 13px;
243
- text-transform: uppercase;
244
- letter-spacing: 1px;
245
- font-weight: 700;
246
- line-height: 24px;
247
- margin: 15px 0 10px;
248
- padding: 0;
249
- color: #000;
250
- }
251
-
252
- nav h3.collapsed_header {
253
- cursor: pointer;
254
- }
255
-
256
- nav ul {
257
- font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
258
- font-size: 100%;
259
- line-height: 17px;
260
- padding: 0;
261
- margin: 0;
262
- list-style-type: none;
263
- }
264
-
265
- nav ul a,
266
- nav ul a:active {
267
- font-family: 'Montserrat', sans-serif;
268
- line-height: 18px;
269
- padding: 0;
270
- display: block;
271
- font-size: 12px;
272
- }
273
-
274
- nav a:hover,
275
- nav a:active {
276
- color: #606;
277
- }
278
-
279
- nav > ul {
280
- padding: 0 10px;
281
- }
282
-
283
- nav > ul > li > a {
284
- color: #606;
285
- margin-top: 10px;
286
- }
287
-
288
- nav ul ul a {
289
- color: hsl(207, 1%, 60%);
290
- border-left: 1px solid hsl(207, 10%, 86%);
291
- }
292
-
293
- nav ul ul a,
294
- nav ul ul a:active {
295
- padding-left: 20px
296
- }
297
-
298
- nav h2 {
299
- font-size: 13px;
300
- margin: 10px 0 0 0;
301
- padding: 0;
302
- }
303
-
304
- nav > h2 > a {
305
- margin: 10px 0 -10px;
306
- color: #606 !important;
307
- }
308
-
309
- footer {
310
- color: hsl(0, 0%, 28%);
311
- margin-left: 250px;
312
- display: block;
313
- padding: 15px;
314
- font-style: italic;
315
- font-size: 90%;
316
- }
317
-
318
- .ancestors {
319
- color: #999
320
- }
321
-
322
- .ancestors a {
323
- color: #999 !important;
324
- }
325
-
326
- .clear {
327
- clear: both
328
- }
329
-
330
- .important {
331
- font-weight: bold;
332
- color: #950B02;
333
- }
334
-
335
- .yes-def {
336
- text-indent: -1000px
337
- }
338
-
339
- .type-signature {
340
- color: #CA79CA
341
- }
342
-
343
- .type-signature:last-child {
344
- color: #eee;
345
- }
346
-
347
- .name, .signature {
348
- font-family: Consolas, Monaco, 'Andale Mono', monospace
349
- }
350
-
351
- .signature {
352
- color: #fc83ff;
353
- }
354
-
355
- .details {
356
- margin-top: 6px;
357
- border-left: 2px solid #DDD;
358
- line-height: 20px;
359
- font-size: 14px;
360
- }
361
-
362
- .details dt {
363
- width: auto;
364
- float: left;
365
- padding-left: 10px;
366
- }
367
-
368
- .details dd {
369
- margin-left: 70px;
370
- margin-top: 6px;
371
- margin-bottom: 6px;
372
- }
373
-
374
- .details ul {
375
- margin: 0
376
- }
377
-
378
- .details ul {
379
- list-style-type: none
380
- }
381
-
382
- .details pre.prettyprint {
383
- margin: 0
384
- }
385
-
386
- .details .object-value {
387
- padding-top: 0
388
- }
389
-
390
- .description {
391
- margin-bottom: 1em;
392
- margin-top: 1em;
393
- }
394
-
395
- .code-caption {
396
- font-style: italic;
397
- font-size: 107%;
398
- margin: 0;
399
- }
400
-
401
- .prettyprint {
402
- font-size: 14px;
403
- overflow: auto;
404
- }
405
-
406
- .prettyprint.source {
407
- width: inherit;
408
- line-height: 18px;
409
- display: block;
410
- background-color: #0d152a;
411
- color: #aeaeae;
412
- }
413
-
414
- .prettyprint code {
415
- line-height: 18px;
416
- display: block;
417
- background-color: #0d152a;
418
- color: #4D4E53;
419
- }
420
-
421
- .prettyprint > code {
422
- padding: 15px;
423
- }
424
-
425
- .prettyprint .linenums code {
426
- padding: 0 15px
427
- }
428
-
429
- .prettyprint .linenums li:first-of-type code {
430
- padding-top: 15px
431
- }
432
-
433
- .prettyprint code span.line {
434
- display: inline-block
435
- }
436
-
437
- .prettyprint.linenums {
438
- padding-left: 70px;
439
- -webkit-user-select: none;
440
- -moz-user-select: none;
441
- -ms-user-select: none;
442
- user-select: none;
443
- }
444
-
445
- .prettyprint.linenums ol {
446
- padding-left: 0
447
- }
448
-
449
- .prettyprint.linenums li {
450
- border-left: 3px #34446B solid;
451
- }
452
-
453
- .prettyprint.linenums li.selected, .prettyprint.linenums li.selected * {
454
- background-color: #34446B;
455
- }
456
-
457
- .prettyprint.linenums li * {
458
- -webkit-user-select: text;
459
- -moz-user-select: text;
460
- -ms-user-select: text;
461
- user-select: text;
462
- }
463
-
464
- .prettyprint.linenums li code:empty:after {
465
- content:"";
466
- display:inline-block;
467
- width:0px;
468
- }
469
-
470
- table {
471
- border-spacing: 0;
472
- border: 1px solid #ddd;
473
- border-collapse: collapse;
474
- border-radius: 3px;
475
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
476
- width: 100%;
477
- font-size: 14px;
478
- margin: 1em 0;
479
- }
480
-
481
- td, th {
482
- margin: 0px;
483
- text-align: left;
484
- vertical-align: top;
485
- padding: 10px;
486
- display: table-cell;
487
- }
488
-
489
- thead tr, thead tr {
490
- background-color: #fff;
491
- font-weight: bold;
492
- border-bottom: 1px solid #ddd;
493
- }
494
-
495
- .params .type {
496
- white-space: nowrap;
497
- }
498
-
499
- .params code {
500
- white-space: pre;
501
- }
502
-
503
- .params td, .params .name, .props .name, .name code {
504
- color: #4D4E53;
505
- font-family: Consolas, Monaco, 'Andale Mono', monospace;
506
- font-size: 100%;
507
- }
508
-
509
- .params td {
510
- border-top: 1px solid #eee
511
- }
512
-
513
- .params td.description > p:first-child, .props td.description > p:first-child {
514
- margin-top: 0;
515
- padding-top: 0;
516
- }
517
-
518
- .params td.description > p:last-child, .props td.description > p:last-child {
519
- margin-bottom: 0;
520
- padding-bottom: 0;
521
- }
522
-
523
- span.param-type, .params td .param-type, .param-type dd {
524
- color: #606;
525
- font-family: Consolas, Monaco, 'Andale Mono', monospace
526
- }
527
-
528
- .param-type dt, .param-type dd {
529
- display: inline-block
530
- }
531
-
532
- .param-type {
533
- margin: 14px 0;
534
- }
535
-
536
- .disabled {
537
- color: #454545
538
- }
539
-
540
- /* navicon button */
541
- .navicon-button {
542
- display: none;
543
- position: relative;
544
- padding: 2.0625rem 1.5rem;
545
- transition: 0.25s;
546
- cursor: pointer;
547
- -webkit-user-select: none;
548
- -moz-user-select: none;
549
- -ms-user-select: none;
550
- user-select: none;
551
- opacity: .8;
552
- }
553
- .navicon-button .navicon:before, .navicon-button .navicon:after {
554
- transition: 0.25s;
555
- }
556
- .navicon-button:hover {
557
- transition: 0.5s;
558
- opacity: 1;
559
- }
560
- .navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after {
561
- transition: 0.25s;
562
- }
563
- .navicon-button:hover .navicon:before {
564
- top: .825rem;
565
- }
566
- .navicon-button:hover .navicon:after {
567
- top: -.825rem;
568
- }
569
-
570
- /* navicon */
571
- .navicon {
572
- position: relative;
573
- width: 2.5em;
574
- height: .3125rem;
575
- background: #000;
576
- transition: 0.3s;
577
- border-radius: 2.5rem;
578
- }
579
- .navicon:before, .navicon:after {
580
- display: block;
581
- content: "";
582
- height: .3125rem;
583
- width: 2.5rem;
584
- background: #000;
585
- position: absolute;
586
- z-index: -1;
587
- transition: 0.3s 0.25s;
588
- border-radius: 1rem;
589
- }
590
- .navicon:before {
591
- top: .625rem;
592
- }
593
- .navicon:after {
594
- top: -.625rem;
595
- }
596
-
597
- /* open */
598
- .nav-trigger:checked + label:not(.steps) .navicon:before,
599
- .nav-trigger:checked + label:not(.steps) .navicon:after {
600
- top: 0 !important;
601
- }
602
-
603
- .nav-trigger:checked + label .navicon:before,
604
- .nav-trigger:checked + label .navicon:after {
605
- transition: 0.5s;
606
- }
607
-
608
- /* Minus */
609
- .nav-trigger:checked + label {
610
- -webkit-transform: scale(0.75);
611
- transform: scale(0.75);
612
- }
613
-
614
- /* × and + */
615
- .nav-trigger:checked + label.plus .navicon,
616
- .nav-trigger:checked + label.x .navicon {
617
- background: transparent;
618
- }
619
-
620
- .nav-trigger:checked + label.plus .navicon:before,
621
- .nav-trigger:checked + label.x .navicon:before {
622
- -webkit-transform: rotate(-45deg);
623
- transform: rotate(-45deg);
624
- background: #FFF;
625
- }
626
-
627
- .nav-trigger:checked + label.plus .navicon:after,
628
- .nav-trigger:checked + label.x .navicon:after {
629
- -webkit-transform: rotate(45deg);
630
- transform: rotate(45deg);
631
- background: #FFF;
632
- }
633
-
634
- .nav-trigger:checked + label.plus {
635
- -webkit-transform: scale(0.75) rotate(45deg);
636
- transform: scale(0.75) rotate(45deg);
637
- }
638
-
639
- .nav-trigger:checked ~ nav {
640
- left: 0 !important;
641
- }
642
-
643
- .nav-trigger:checked ~ .overlay {
644
- display: block;
645
- }
646
-
647
- .nav-trigger {
648
- position: fixed;
649
- top: 0;
650
- clip: rect(0, 0, 0, 0);
651
- }
652
-
653
- .overlay {
654
- display: none;
655
- position: fixed;
656
- top: 0;
657
- bottom: 0;
658
- left: 0;
659
- right: 0;
660
- width: 100%;
661
- height: 100%;
662
- background: hsla(0, 0%, 0%, 0.5);
663
- z-index: 1;
664
- }
665
-
666
- /* nav level */
667
- .level-hide {
668
- display: none;
669
- }
670
- html[data-search-mode] .level-hide {
671
- display: block;
672
- }
673
-
674
-
675
- @media only screen and (max-width: 680px) {
676
- body {
677
- overflow-x: hidden;
678
- }
679
-
680
- nav {
681
- background: #FFF;
682
- width: 250px;
683
- height: 100%;
684
- position: fixed;
685
- top: 0;
686
- right: 0;
687
- bottom: 0;
688
- left: -250px;
689
- z-index: 3;
690
- padding: 0 10px;
691
- transition: left 0.2s;
692
- }
693
-
694
- .navicon-button {
695
- display: inline-block;
696
- position: fixed;
697
- top: 1.5em;
698
- right: 0;
699
- z-index: 2;
700
- }
701
-
702
- #main {
703
- width: 100%;
704
- }
705
-
706
- #main h1.page-title {
707
- margin: 1em 0;
708
- }
709
-
710
- #main section {
711
- padding: 0;
712
- }
713
-
714
- footer {
715
- margin-left: 0;
716
- }
717
- }
718
-
719
- /** Add a '#' to static members */
720
- [data-type="member"] a::before {
721
- content: '#';
722
- display: inline-block;
723
- margin-left: -14px;
724
- margin-right: 5px;
725
- }
726
-
727
- #disqus_thread{
728
- margin-left: 30px;
729
- }
730
-
731
- @font-face {
732
- font-family: 'Montserrat';
733
- font-style: normal;
734
- font-weight: 400;
735
- src: url('../fonts/Montserrat/Montserrat-Regular.eot'); /* IE9 Compat Modes */
736
- src: url('../fonts/Montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
737
- url('../fonts/Montserrat/Montserrat-Regular.woff2') format('woff2'), /* Super Modern Browsers */
738
- url('../fonts/Montserrat/Montserrat-Regular.woff') format('woff'), /* Pretty Modern Browsers */
739
- url('../fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); /* Safari, Android, iOS */
740
- }
741
-
742
- @font-face {
743
- font-family: 'Montserrat';
744
- font-style: normal;
745
- font-weight: 700;
746
- src: url('../fonts/Montserrat/Montserrat-Bold.eot'); /* IE9 Compat Modes */
747
- src: url('../fonts/Montserrat/Montserrat-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
748
- url('../fonts/Montserrat/Montserrat-Bold.woff2') format('woff2'), /* Super Modern Browsers */
749
- url('../fonts/Montserrat/Montserrat-Bold.woff') format('woff'), /* Pretty Modern Browsers */
750
- url('../fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); /* Safari, Android, iOS */
751
- }
752
-
753
- @font-face {
754
- font-family: 'Source Sans Pro';
755
- src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot');
756
- src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot?#iefix') format('embedded-opentype'),
757
- url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2') format('woff2'),
758
- url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff') format('woff'),
759
- url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf') format('truetype'),
760
- url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg#source_sans_proregular') format('svg');
761
- font-weight: 400;
762
- font-style: normal;
763
- }
764
-
765
- @font-face {
766
- font-family: 'Source Sans Pro';
767
- src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot');
768
- src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot?#iefix') format('embedded-opentype'),
769
- url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2') format('woff2'),
770
- url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff') format('woff'),
771
- url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf') format('truetype'),
772
- url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg#source_sans_prolight') format('svg');
773
- font-weight: 300;
774
- font-style: normal;
775
-
776
- }
1
+ * {
2
+ box-sizing: border-box
3
+ }
4
+
5
+ html, body {
6
+ height: 100%;
7
+ width: 100%;
8
+ }
9
+
10
+ body {
11
+ color: #4d4e53;
12
+ background-color: white;
13
+ margin: 0 auto;
14
+ padding: 0 20px;
15
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
16
+ font-size: 16px;
17
+ }
18
+
19
+ img {
20
+ max-width: 100%;
21
+ }
22
+
23
+ a,
24
+ a:active {
25
+ color: #606;
26
+ text-decoration: none;
27
+ }
28
+
29
+ a:hover {
30
+ text-decoration: none;
31
+ }
32
+
33
+ article a {
34
+ border-bottom: 1px solid #ddd;
35
+ }
36
+
37
+ article a:hover, article a:active {
38
+ border-bottom-color: #222;
39
+ }
40
+
41
+ article .description a {
42
+ word-break: break-word;
43
+ }
44
+
45
+ p, ul, ol, blockquote {
46
+ margin-bottom: 1em;
47
+ line-height: 160%;
48
+ }
49
+
50
+ h1, h2, h3, h4, h5, h6 {
51
+ font-family: 'Montserrat', sans-serif;
52
+ }
53
+
54
+ h1, h2, h3, h4, h5, h6 {
55
+ color: #000;
56
+ font-weight: 400;
57
+ margin: 0;
58
+ }
59
+
60
+ h1 {
61
+ font-weight: 300;
62
+ font-size: 48px;
63
+ margin: 1em 0 .5em;
64
+ }
65
+
66
+ h1.page-title {
67
+ font-size: 48px;
68
+ margin: 1em 30px;
69
+ line-height: 100%;
70
+ word-wrap: break-word;
71
+ }
72
+
73
+ h2 {
74
+ font-size: 24px;
75
+ margin: 1.5em 0 .3em;
76
+ }
77
+
78
+ h3 {
79
+ font-size: 24px;
80
+ margin: 1.2em 0 .3em;
81
+ }
82
+
83
+ h4 {
84
+ font-size: 18px;
85
+ margin: 1em 0 .2em;
86
+ color: #4d4e53;
87
+ }
88
+
89
+ h4.name {
90
+ color: #fff;
91
+ background: #6d426d;
92
+ box-shadow: 0 .25em .5em #d3d3d3;
93
+ border-top: 1px solid #d3d3d3;
94
+ border-bottom: 1px solid #d3d3d3;
95
+ margin: 1.5em 0 0.5em;
96
+ padding: .75em 0 .75em 10px;
97
+ }
98
+
99
+ h4.name a {
100
+ color: #fc83ff;
101
+ }
102
+
103
+ h4.name a:hover {
104
+ border-bottom-color: #fc83ff;
105
+ }
106
+
107
+ h5, .container-overview .subsection-title {
108
+ font-size: 120%;
109
+ letter-spacing: -0.01em;
110
+ margin: 8px 0 3px 0;
111
+ }
112
+
113
+ h6 {
114
+ font-size: 100%;
115
+ letter-spacing: -0.01em;
116
+ margin: 6px 0 3px 0;
117
+ font-style: italic;
118
+ }
119
+
120
+ .usertext h1 {
121
+ font-family: "Source Sans Pro";
122
+ font-size: 24px;
123
+ margin: 2.5em 0 1em;
124
+ font-weight: 400;
125
+ }
126
+
127
+ .usertext h2 {
128
+ font-family: "Source Sans Pro";
129
+ font-size: 18px;
130
+ margin: 2em 0 0.5em;
131
+ font-weight: 400;
132
+
133
+ }
134
+
135
+ .usertext h3 {
136
+ font-family: "Source Sans Pro";
137
+ font-size: 15px;
138
+ margin: 1.5em 0 0;
139
+ font-weight: 400;
140
+ }
141
+
142
+ .usertext h4 {
143
+ font-family: "Source Sans Pro";
144
+ font-size: 14px;
145
+ margin: 0 0 0;
146
+ font-weight: 400;
147
+ }
148
+
149
+ .usertext h5 {
150
+ font-size: 12px;
151
+ margin: 1em 0 0;
152
+ font-weight: normal;
153
+ color: #666;
154
+ }
155
+
156
+ .usertext h6 {
157
+ font-size: 11px;
158
+ margin: 1em 0 0;
159
+ font-weight: normal;
160
+ font-style: normal;
161
+ color: #666;
162
+ }
163
+
164
+
165
+ tt, code, kbd, samp, pre {
166
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
167
+ background: #f4f4f4;
168
+ }
169
+
170
+ tt, code, kbd, samp{
171
+ padding: 1px 5px;
172
+ }
173
+
174
+ pre {
175
+ padding-bottom: 1em;
176
+ }
177
+
178
+ .class-description {
179
+ font-size: 130%;
180
+ line-height: 140%;
181
+ margin-bottom: 1em;
182
+ margin-top: 1em;
183
+ }
184
+
185
+ .class-description:empty {
186
+ margin: 0
187
+ }
188
+
189
+ #main {
190
+ float: right;
191
+ width: calc(100% - 240px);
192
+ }
193
+
194
+ header {
195
+ display: block
196
+ }
197
+
198
+ section {
199
+ display: block;
200
+ background-color: #fff;
201
+ padding: 0 0 0 30px;
202
+ }
203
+
204
+ .variation {
205
+ display: none
206
+ }
207
+
208
+ .signature-attributes {
209
+ font-size: 60%;
210
+ color: #eee;
211
+ font-style: italic;
212
+ font-weight: lighter;
213
+ }
214
+
215
+ nav {
216
+ float: left;
217
+ display: block;
218
+ width: 250px;
219
+ background: #fff;
220
+ overflow: auto;
221
+ position: fixed;
222
+ height: 100%;
223
+ }
224
+
225
+ nav #nav-search{
226
+ width: 210px;
227
+ height: 30px;
228
+ padding: 5px 10px;
229
+ font-size: 12px;
230
+ line-height: 1.5;
231
+ border-radius: 3px;
232
+ margin-right: 20px;
233
+ margin-top: 20px;
234
+ }
235
+
236
+ nav.wrap a{
237
+ word-wrap: break-word;
238
+ }
239
+
240
+ nav h3 {
241
+ margin-top: 12px;
242
+ font-size: 13px;
243
+ text-transform: uppercase;
244
+ letter-spacing: 1px;
245
+ font-weight: 700;
246
+ line-height: 24px;
247
+ margin: 15px 0 10px;
248
+ padding: 0;
249
+ color: #000;
250
+ }
251
+
252
+ nav h3.collapsed_header {
253
+ cursor: pointer;
254
+ }
255
+
256
+ nav ul {
257
+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
258
+ font-size: 100%;
259
+ line-height: 17px;
260
+ padding: 0;
261
+ margin: 0;
262
+ list-style-type: none;
263
+ }
264
+
265
+ nav ul a,
266
+ nav ul a:active {
267
+ font-family: 'Montserrat', sans-serif;
268
+ line-height: 18px;
269
+ padding: 0;
270
+ display: block;
271
+ font-size: 12px;
272
+ }
273
+
274
+ nav a:hover,
275
+ nav a:active {
276
+ color: #606;
277
+ }
278
+
279
+ nav > ul {
280
+ padding: 0 10px;
281
+ }
282
+
283
+ nav > ul > li > a {
284
+ color: #606;
285
+ margin-top: 10px;
286
+ }
287
+
288
+ nav ul ul a {
289
+ color: hsl(207, 1%, 60%);
290
+ border-left: 1px solid hsl(207, 10%, 86%);
291
+ }
292
+
293
+ nav ul ul a,
294
+ nav ul ul a:active {
295
+ padding-left: 20px
296
+ }
297
+
298
+ nav h2 {
299
+ font-size: 13px;
300
+ margin: 10px 0 0 0;
301
+ padding: 0;
302
+ }
303
+
304
+ nav > h2 > a {
305
+ margin: 10px 0 -10px;
306
+ color: #606 !important;
307
+ }
308
+
309
+ footer {
310
+ color: hsl(0, 0%, 28%);
311
+ margin-left: 250px;
312
+ display: block;
313
+ padding: 15px;
314
+ font-style: italic;
315
+ font-size: 90%;
316
+ }
317
+
318
+ .ancestors {
319
+ color: #999
320
+ }
321
+
322
+ .ancestors a {
323
+ color: #999 !important;
324
+ }
325
+
326
+ .clear {
327
+ clear: both
328
+ }
329
+
330
+ .important {
331
+ font-weight: bold;
332
+ color: #950B02;
333
+ }
334
+
335
+ .yes-def {
336
+ text-indent: -1000px
337
+ }
338
+
339
+ .type-signature {
340
+ color: #CA79CA
341
+ }
342
+
343
+ .type-signature:last-child {
344
+ color: #eee;
345
+ }
346
+
347
+ .name, .signature {
348
+ font-family: Consolas, Monaco, 'Andale Mono', monospace
349
+ }
350
+
351
+ .signature {
352
+ color: #fc83ff;
353
+ }
354
+
355
+ .details {
356
+ margin-top: 6px;
357
+ border-left: 2px solid #DDD;
358
+ line-height: 20px;
359
+ font-size: 14px;
360
+ }
361
+
362
+ .details dt {
363
+ width: auto;
364
+ float: left;
365
+ padding-left: 10px;
366
+ }
367
+
368
+ .details dd {
369
+ margin-left: 70px;
370
+ margin-top: 6px;
371
+ margin-bottom: 6px;
372
+ }
373
+
374
+ .details ul {
375
+ margin: 0
376
+ }
377
+
378
+ .details ul {
379
+ list-style-type: none
380
+ }
381
+
382
+ .details pre.prettyprint {
383
+ margin: 0
384
+ }
385
+
386
+ .details .object-value {
387
+ padding-top: 0
388
+ }
389
+
390
+ .description {
391
+ margin-bottom: 1em;
392
+ margin-top: 1em;
393
+ }
394
+
395
+ .code-caption {
396
+ font-style: italic;
397
+ font-size: 107%;
398
+ margin: 0;
399
+ }
400
+
401
+ .prettyprint {
402
+ font-size: 14px;
403
+ overflow: auto;
404
+ }
405
+
406
+ .prettyprint.source {
407
+ width: inherit;
408
+ line-height: 18px;
409
+ display: block;
410
+ background-color: #0d152a;
411
+ color: #aeaeae;
412
+ }
413
+
414
+ .prettyprint code {
415
+ line-height: 18px;
416
+ display: block;
417
+ background-color: #0d152a;
418
+ color: #4D4E53;
419
+ }
420
+
421
+ .prettyprint > code {
422
+ padding: 15px;
423
+ }
424
+
425
+ .prettyprint .linenums code {
426
+ padding: 0 15px
427
+ }
428
+
429
+ .prettyprint .linenums li:first-of-type code {
430
+ padding-top: 15px
431
+ }
432
+
433
+ .prettyprint code span.line {
434
+ display: inline-block
435
+ }
436
+
437
+ .prettyprint.linenums {
438
+ padding-left: 70px;
439
+ -webkit-user-select: none;
440
+ -moz-user-select: none;
441
+ -ms-user-select: none;
442
+ user-select: none;
443
+ }
444
+
445
+ .prettyprint.linenums ol {
446
+ padding-left: 0
447
+ }
448
+
449
+ .prettyprint.linenums li {
450
+ border-left: 3px #34446B solid;
451
+ }
452
+
453
+ .prettyprint.linenums li.selected, .prettyprint.linenums li.selected * {
454
+ background-color: #34446B;
455
+ }
456
+
457
+ .prettyprint.linenums li * {
458
+ -webkit-user-select: text;
459
+ -moz-user-select: text;
460
+ -ms-user-select: text;
461
+ user-select: text;
462
+ }
463
+
464
+ .prettyprint.linenums li code:empty:after {
465
+ content:"";
466
+ display:inline-block;
467
+ width:0px;
468
+ }
469
+
470
+ table {
471
+ border-spacing: 0;
472
+ border: 1px solid #ddd;
473
+ border-collapse: collapse;
474
+ border-radius: 3px;
475
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
476
+ width: 100%;
477
+ font-size: 14px;
478
+ margin: 1em 0;
479
+ }
480
+
481
+ td, th {
482
+ margin: 0px;
483
+ text-align: left;
484
+ vertical-align: top;
485
+ padding: 10px;
486
+ display: table-cell;
487
+ }
488
+
489
+ thead tr, thead tr {
490
+ background-color: #fff;
491
+ font-weight: bold;
492
+ border-bottom: 1px solid #ddd;
493
+ }
494
+
495
+ .params .type {
496
+ white-space: nowrap;
497
+ }
498
+
499
+ .params code {
500
+ white-space: pre;
501
+ }
502
+
503
+ .params td, .params .name, .props .name, .name code {
504
+ color: #4D4E53;
505
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
506
+ font-size: 100%;
507
+ }
508
+
509
+ .params td {
510
+ border-top: 1px solid #eee
511
+ }
512
+
513
+ .params td.description > p:first-child, .props td.description > p:first-child {
514
+ margin-top: 0;
515
+ padding-top: 0;
516
+ }
517
+
518
+ .params td.description > p:last-child, .props td.description > p:last-child {
519
+ margin-bottom: 0;
520
+ padding-bottom: 0;
521
+ }
522
+
523
+ span.param-type, .params td .param-type, .param-type dd {
524
+ color: #606;
525
+ font-family: Consolas, Monaco, 'Andale Mono', monospace
526
+ }
527
+
528
+ .param-type dt, .param-type dd {
529
+ display: inline-block
530
+ }
531
+
532
+ .param-type {
533
+ margin: 14px 0;
534
+ }
535
+
536
+ .disabled {
537
+ color: #454545
538
+ }
539
+
540
+ /* navicon button */
541
+ .navicon-button {
542
+ display: none;
543
+ position: relative;
544
+ padding: 2.0625rem 1.5rem;
545
+ transition: 0.25s;
546
+ cursor: pointer;
547
+ -webkit-user-select: none;
548
+ -moz-user-select: none;
549
+ -ms-user-select: none;
550
+ user-select: none;
551
+ opacity: .8;
552
+ }
553
+ .navicon-button .navicon:before, .navicon-button .navicon:after {
554
+ transition: 0.25s;
555
+ }
556
+ .navicon-button:hover {
557
+ transition: 0.5s;
558
+ opacity: 1;
559
+ }
560
+ .navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after {
561
+ transition: 0.25s;
562
+ }
563
+ .navicon-button:hover .navicon:before {
564
+ top: .825rem;
565
+ }
566
+ .navicon-button:hover .navicon:after {
567
+ top: -.825rem;
568
+ }
569
+
570
+ /* navicon */
571
+ .navicon {
572
+ position: relative;
573
+ width: 2.5em;
574
+ height: .3125rem;
575
+ background: #000;
576
+ transition: 0.3s;
577
+ border-radius: 2.5rem;
578
+ }
579
+ .navicon:before, .navicon:after {
580
+ display: block;
581
+ content: "";
582
+ height: .3125rem;
583
+ width: 2.5rem;
584
+ background: #000;
585
+ position: absolute;
586
+ z-index: -1;
587
+ transition: 0.3s 0.25s;
588
+ border-radius: 1rem;
589
+ }
590
+ .navicon:before {
591
+ top: .625rem;
592
+ }
593
+ .navicon:after {
594
+ top: -.625rem;
595
+ }
596
+
597
+ /* open */
598
+ .nav-trigger:checked + label:not(.steps) .navicon:before,
599
+ .nav-trigger:checked + label:not(.steps) .navicon:after {
600
+ top: 0 !important;
601
+ }
602
+
603
+ .nav-trigger:checked + label .navicon:before,
604
+ .nav-trigger:checked + label .navicon:after {
605
+ transition: 0.5s;
606
+ }
607
+
608
+ /* Minus */
609
+ .nav-trigger:checked + label {
610
+ -webkit-transform: scale(0.75);
611
+ transform: scale(0.75);
612
+ }
613
+
614
+ /* × and + */
615
+ .nav-trigger:checked + label.plus .navicon,
616
+ .nav-trigger:checked + label.x .navicon {
617
+ background: transparent;
618
+ }
619
+
620
+ .nav-trigger:checked + label.plus .navicon:before,
621
+ .nav-trigger:checked + label.x .navicon:before {
622
+ -webkit-transform: rotate(-45deg);
623
+ transform: rotate(-45deg);
624
+ background: #FFF;
625
+ }
626
+
627
+ .nav-trigger:checked + label.plus .navicon:after,
628
+ .nav-trigger:checked + label.x .navicon:after {
629
+ -webkit-transform: rotate(45deg);
630
+ transform: rotate(45deg);
631
+ background: #FFF;
632
+ }
633
+
634
+ .nav-trigger:checked + label.plus {
635
+ -webkit-transform: scale(0.75) rotate(45deg);
636
+ transform: scale(0.75) rotate(45deg);
637
+ }
638
+
639
+ .nav-trigger:checked ~ nav {
640
+ left: 0 !important;
641
+ }
642
+
643
+ .nav-trigger:checked ~ .overlay {
644
+ display: block;
645
+ }
646
+
647
+ .nav-trigger {
648
+ position: fixed;
649
+ top: 0;
650
+ clip: rect(0, 0, 0, 0);
651
+ }
652
+
653
+ .overlay {
654
+ display: none;
655
+ position: fixed;
656
+ top: 0;
657
+ bottom: 0;
658
+ left: 0;
659
+ right: 0;
660
+ width: 100%;
661
+ height: 100%;
662
+ background: hsla(0, 0%, 0%, 0.5);
663
+ z-index: 1;
664
+ }
665
+
666
+ /* nav level */
667
+ .level-hide {
668
+ display: none;
669
+ }
670
+ html[data-search-mode] .level-hide {
671
+ display: block;
672
+ }
673
+
674
+
675
+ @media only screen and (max-width: 680px) {
676
+ body {
677
+ overflow-x: hidden;
678
+ }
679
+
680
+ nav {
681
+ background: #FFF;
682
+ width: 250px;
683
+ height: 100%;
684
+ position: fixed;
685
+ top: 0;
686
+ right: 0;
687
+ bottom: 0;
688
+ left: -250px;
689
+ z-index: 3;
690
+ padding: 0 10px;
691
+ transition: left 0.2s;
692
+ }
693
+
694
+ .navicon-button {
695
+ display: inline-block;
696
+ position: fixed;
697
+ top: 1.5em;
698
+ right: 0;
699
+ z-index: 2;
700
+ }
701
+
702
+ #main {
703
+ width: 100%;
704
+ }
705
+
706
+ #main h1.page-title {
707
+ margin: 1em 0;
708
+ }
709
+
710
+ #main section {
711
+ padding: 0;
712
+ }
713
+
714
+ footer {
715
+ margin-left: 0;
716
+ }
717
+ }
718
+
719
+ /** Add a '#' to static members */
720
+ [data-type="member"] a::before {
721
+ content: '#';
722
+ display: inline-block;
723
+ margin-left: -14px;
724
+ margin-right: 5px;
725
+ }
726
+
727
+ #disqus_thread{
728
+ margin-left: 30px;
729
+ }
730
+
731
+ @font-face {
732
+ font-family: 'Montserrat';
733
+ font-style: normal;
734
+ font-weight: 400;
735
+ src: url('../fonts/Montserrat/Montserrat-Regular.eot'); /* IE9 Compat Modes */
736
+ src: url('../fonts/Montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
737
+ url('../fonts/Montserrat/Montserrat-Regular.woff2') format('woff2'), /* Super Modern Browsers */
738
+ url('../fonts/Montserrat/Montserrat-Regular.woff') format('woff'), /* Pretty Modern Browsers */
739
+ url('../fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); /* Safari, Android, iOS */
740
+ }
741
+
742
+ @font-face {
743
+ font-family: 'Montserrat';
744
+ font-style: normal;
745
+ font-weight: 700;
746
+ src: url('../fonts/Montserrat/Montserrat-Bold.eot'); /* IE9 Compat Modes */
747
+ src: url('../fonts/Montserrat/Montserrat-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
748
+ url('../fonts/Montserrat/Montserrat-Bold.woff2') format('woff2'), /* Super Modern Browsers */
749
+ url('../fonts/Montserrat/Montserrat-Bold.woff') format('woff'), /* Pretty Modern Browsers */
750
+ url('../fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); /* Safari, Android, iOS */
751
+ }
752
+
753
+ @font-face {
754
+ font-family: 'Source Sans Pro';
755
+ src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot');
756
+ src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot?#iefix') format('embedded-opentype'),
757
+ url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2') format('woff2'),
758
+ url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff') format('woff'),
759
+ url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf') format('truetype'),
760
+ url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg#source_sans_proregular') format('svg');
761
+ font-weight: 400;
762
+ font-style: normal;
763
+ }
764
+
765
+ @font-face {
766
+ font-family: 'Source Sans Pro';
767
+ src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot');
768
+ src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot?#iefix') format('embedded-opentype'),
769
+ url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2') format('woff2'),
770
+ url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff') format('woff'),
771
+ url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf') format('truetype'),
772
+ url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg#source_sans_prolight') format('svg');
773
+ font-weight: 300;
774
+ font-style: normal;
775
+
776
+ }