@bluefly/openstandardagents 0.2.5-RC → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devfile.yaml +1 -1
- package/.env.example +1 -1
- package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
- package/.github/workflows/dependabot-comment.yml +34 -0
- package/.github/workflows/pr-comment.yml +33 -0
- package/.husky/pre-commit +5 -0
- package/.kiro/config.json +21 -0
- package/.kiro/settings/mcp.json +61 -0
- package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
- package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
- package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
- package/.kiro/specs/website-brand-identity/tasks.md +981 -0
- package/.version.json +2 -2
- package/.wiki-config.json +24 -0
- package/CHANGELOG.md +34 -18
- package/CODEOWNERS +75 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +176 -239
- package/bin/ossa-dev +42 -0
- package/bin/ossa-export +32 -0
- package/bin/ossa-generate +60 -0
- package/bin/ossa-health +40 -0
- package/bin/ossa-init +26 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +6 -1
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +63 -36
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/github-sync/github-client.d.ts +14 -0
- package/dist/services/github-sync/github-client.d.ts.map +1 -0
- package/dist/services/github-sync/github-client.js +41 -0
- package/dist/services/github-sync/github-client.js.map +1 -0
- package/dist/services/github-sync/gitlab-client.d.ts +17 -0
- package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
- package/dist/services/github-sync/gitlab-client.js +42 -0
- package/dist/services/github-sync/gitlab-client.js.map +1 -0
- package/dist/services/github-sync/schemas.d.ts +46 -0
- package/dist/services/github-sync/schemas.d.ts.map +1 -0
- package/dist/services/github-sync/schemas.js +36 -0
- package/dist/services/github-sync/schemas.js.map +1 -0
- package/dist/services/github-sync/sync.service.d.ts +27 -0
- package/dist/services/github-sync/sync.service.d.ts.map +1 -0
- package/dist/services/github-sync/sync.service.js +99 -0
- package/dist/services/github-sync/sync.service.js.map +1 -0
- package/dist/services/migration.service.d.ts +4 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +11 -10
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -1
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.js +245 -0
- package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.js +287 -0
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.js +169 -0
- package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
- package/dist/services/runtime/claude/types.d.ts +115 -0
- package/dist/services/runtime/claude/types.d.ts.map +1 -0
- package/dist/services/runtime/claude/types.js +6 -0
- package/dist/services/runtime/claude/types.js.map +1 -0
- package/dist/services/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +12 -1
- package/dist/services/validation.service.js.map +1 -1
- package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.6/README.md +72 -0
- package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/dist/spec/v0.2.6-dev/README.md +75 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
- package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.8/README.md +72 -0
- package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/version.d.ts +68 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +156 -0
- package/dist/utils/version.js.map +1 -0
- package/docs/brand-guide/01-brand-overview.md +37 -0
- package/docs/brand-guide/02-logo-usage.md +43 -0
- package/docs/brand-guide/03-color-palette.md +70 -0
- package/docs/brand-guide/04-typography.md +82 -0
- package/docs/brand-guide/05-voice-and-tone.md +108 -0
- package/docs/brand-guide/06-visual-elements.md +137 -0
- package/docs/brand-guide/07-application-examples.md +153 -0
- package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
- package/docs/brand-guide/OssaLogo/brand.af +0 -0
- package/docs/brand-guide/README.md +107 -0
- package/docs/comparison.md +315 -0
- package/docs/operations/automation-roadmap.md +245 -0
- package/docs/operations/github-sync-strategy.md +357 -0
- package/eslint-report.json +1 -0
- package/examples/adk-integration/code-review-workflow.yml +1 -1
- package/examples/adk-integration/customer-support.yml +1 -1
- package/examples/adk-integration/data-pipeline.yml +1 -1
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
- package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
- package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
- package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
- package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
- package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
- package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
- package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
- package/examples/anthropic/claude-assistant.ossa.json +5 -4
- package/examples/autogen/multi-agent.ossa.json +6 -4
- package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
- package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
- package/examples/common_npm/agent-router.ossa.yaml +1 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/kagent/compliance-validator.ossa.yaml +1 -1
- package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
- package/examples/kagent/documentation-agent.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
- package/examples/kagent/security-scanner.ossa.yaml +1 -1
- package/examples/langchain/chain-agent.ossa.json +21 -5
- package/examples/langflow/workflow-agent.ossa.json +2 -3
- package/examples/langgraph/state-machine-agent.ossa.json +2 -3
- package/examples/llamaindex/rag-agent.ossa.json +2 -3
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/README.md +74 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
- package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +33 -10
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/spec-examples/audit-agent.yml +1 -1
- package/examples/spec-examples/chat-agent.yml +1 -1
- package/examples/spec-examples/compliance-agent.yml +1 -1
- package/examples/spec-examples/monitoring-agent.yml +1 -1
- package/examples/spec-examples/workflow-agent.yml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/gl-code-quality-report.json +62 -0
- package/llms-ctx-full.txt +39 -0
- package/llms-ctx.txt +39 -0
- package/llms.txt +47 -0
- package/openapi/github-sync.yaml +115 -0
- package/package.json +26 -4
- package/scripts/README.md +103 -0
- package/scripts/auto-rebase-mrs.ts +106 -0
- package/scripts/batch-dependabot.sh +57 -0
- package/scripts/configure-gitlab-branch-protection.ts +95 -0
- package/scripts/create-issue-helper.ts +238 -0
- package/scripts/create-milestone-issue.ts +73 -0
- package/scripts/eslint-to-codequality.cjs +34 -0
- package/scripts/fix-schema-formats.js +82 -0
- package/scripts/generate-agents-catalog.ts +77 -0
- package/scripts/generate-api-docs.ts +218 -0
- package/scripts/generate-cli-docs.ts +410 -0
- package/scripts/generate-config-docs.ts +109 -0
- package/scripts/generate-errors-docs.ts +76 -0
- package/scripts/generate-examples-docs.ts +99 -0
- package/scripts/generate-llms-ctx.sh +17 -0
- package/scripts/generate-schema-docs.ts +317 -0
- package/scripts/generate-types-docs.ts +48 -0
- package/scripts/lowercase-docs.ts +43 -0
- package/scripts/manage-milestone-mrs.ts +279 -0
- package/scripts/rebase-all-mrs.sh +75 -0
- package/scripts/sync-github-pr.sh +48 -0
- package/scripts/sync-version.js +32 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/scripts/validate-schema.ts +2 -1
- package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/spec/v0.2.6/CHANGELOG.md +401 -0
- package/spec/v0.2.6/README.md +72 -0
- package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/spec/v0.2.6-dev/README.md +75 -0
- package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/spec/v0.2.7/core/agentgraph.md +324 -0
- package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/spec/v0.2.8/CHANGELOG.md +401 -0
- package/spec/v0.2.8/README.md +72 -0
- package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/test-results/junit.xml +299 -0
- package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
- package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
- package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
- package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
- package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
- package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
- package/bin/validate-ossa-0.2.5-RC.ts +0 -244
- package/docs/issue-19-completion-summary.md +0 -648
- package/docs/issue-19-validation.md +0 -351
- package/scripts/lib/exec.ts +0 -37
- package/scripts/lib/file-ops.ts +0 -58
- package/scripts/lib/version.ts +0 -83
- package/website/.lighthouserc.ts +0 -24
- package/website/.prettierrc +0 -10
- package/website/Dockerfile +0 -30
- package/website/app/about/page.tsx +0 -295
- package/website/app/blog/[slug]/page.tsx +0 -208
- package/website/app/blog/page.tsx +0 -249
- package/website/app/design-guide/page.tsx +0 -511
- package/website/app/docs/[[...slug]]/page.tsx +0 -847
- package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
- package/website/app/ecosystem/page.tsx +0 -375
- package/website/app/examples/page.tsx +0 -133
- package/website/app/globals.scss +0 -135
- package/website/app/layout.tsx +0 -106
- package/website/app/license/page.tsx +0 -183
- package/website/app/not-found.tsx +0 -18
- package/website/app/page.tsx +0 -474
- package/website/app/playground/page.tsx +0 -487
- package/website/app/robots.ts +0 -19
- package/website/app/rss.xml/route.ts +0 -74
- package/website/app/schema/page.tsx +0 -1001
- package/website/app/sitemap.ts +0 -56
- package/website/app/specification/page.tsx +0 -287
- package/website/components/InstallCommand.tsx +0 -96
- package/website/components/Logo.tsx +0 -97
- package/website/components/StructuredData.tsx +0 -65
- package/website/components/docs/DocsSearch.tsx +0 -104
- package/website/components/docs/DocsSidebar.tsx +0 -155
- package/website/components/docs/MarkdownContent.tsx +0 -401
- package/website/components/docs/VersionSelector.tsx +0 -105
- package/website/components/examples/ExamplesViewer.tsx +0 -293
- package/website/components/layout/Footer.tsx +0 -116
- package/website/components/layout/Header.tsx +0 -168
- package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
- package/website/components/schema/SchemaExplorer.tsx +0 -213
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
- package/website/content/blog/introducing-ossa-framework.md +0 -328
- package/website/content/blog/ossa-production-results.md +0 -279
- package/website/content/blog/welcome-to-ossa.md +0 -43
- package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
- package/website/content/docs/00-HOME.md +0 -153
- package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- package/website/content/docs/Examples.md +0 -71
- package/website/content/docs/OpenAPI-Extensions.md +0 -934
- package/website/content/docs/adapters/openai-adapter.md +0 -693
- package/website/content/docs/architecture/execution-flow.md +0 -335
- package/website/content/docs/architecture/multi-agent-systems.md +0 -737
- package/website/content/docs/architecture/overview.md +0 -121
- package/website/content/docs/architecture/stack-integration.md +0 -461
- package/website/content/docs/changelog.md +0 -246
- package/website/content/docs/contributing.md +0 -599
- package/website/content/docs/core-concepts/Project-Structure.md +0 -348
- package/website/content/docs/ecosystem/framework-support.md +0 -819
- package/website/content/docs/ecosystem/overview.md +0 -366
- package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- package/website/content/docs/examples/Migration-Guides.md +0 -214
- package/website/content/docs/for-audiences/Architects.md +0 -224
- package/website/content/docs/for-audiences/Developers.md +0 -220
- package/website/content/docs/for-audiences/Enterprises.md +0 -256
- package/website/content/docs/for-audiences/Students-Researchers.md +0 -122
- package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
- package/website/content/docs/getting-started/First-Agent.md +0 -196
- package/website/content/docs/getting-started/Hello-World.md +0 -184
- package/website/content/docs/getting-started/Installation.md +0 -155
- package/website/content/docs/getting-started/index.md +0 -92
- package/website/content/docs/getting-started/running-agents.md +0 -309
- package/website/content/docs/getting-started.md +0 -91
- package/website/content/docs/integrations/aiflow.md +0 -104
- package/website/content/docs/integrations/drupal.md +0 -105
- package/website/content/docs/migration-guides/00-INDEX.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
- package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
- package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
- package/website/content/docs/migration-guides/index.md +0 -133
- package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
- package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
- package/website/content/docs/migration-guides/migration-manifest.json +0 -64
- package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
- package/website/content/docs/openapi-extensions/examples.md +0 -550
- package/website/content/docs/openapi-extensions/index.md +0 -551
- package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
- package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
- package/website/content/docs/ossa-compliant-badge.md +0 -251
- package/website/content/docs/pre-release/index.md +0 -175
- package/website/content/docs/quick-reference.md +0 -17
- package/website/content/docs/readme.md +0 -35
- package/website/content/docs/schema-reference/agent-spec.md +0 -406
- package/website/content/docs/schema-reference/autonomy.md +0 -568
- package/website/content/docs/schema-reference/constraints.md +0 -543
- package/website/content/docs/schema-reference/index.md +0 -176
- package/website/content/docs/schema-reference/llm-config.md +0 -445
- package/website/content/docs/schema-reference/observability.md +0 -654
- package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
- package/website/content/docs/schema-reference/taxonomy.md +0 -509
- package/website/content/docs/schema-reference/tools.md +0 -628
- package/website/content/docs/templates/blog-post.md +0 -43
- package/website/content/docs/use-cases/00-index.md +0 -395
- package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
- package/website/content/docs/use-cases/customer-support.md +0 -1234
- package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
- package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
- package/website/content/docs/versioning.md +0 -288
- package/website/lib/version.ts +0 -35
- package/website/lib/versions.json +0 -78
- package/website/next.config.ts +0 -18
- package/website/nginx.conf +0 -32
- package/website/package-lock.json +0 -9679
- package/website/package.json +0 -59
- package/website/postcss.config.mjs +0 -9
- package/website/scripts/fetch-versions.js +0 -166
- package/website/scripts/generate-examples-index.js +0 -163
- package/website/scripts/merge-docs-to-wiki.ts +0 -207
- package/website/scripts/sync-version.js +0 -72
- package/website/scripts/sync-wiki.ts +0 -322
- package/website/scripts/upload-wiki.ts +0 -199
- package/website/styles/_variables.scss +0 -36
- package/website/tailwind.config.ts +0 -136
- /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
- /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
|
@@ -677,3 +677,384 @@ By implementing the recommendations in this document, the website will achieve:
|
|
|
677
677
|
- **Scalability** for future growth
|
|
678
678
|
|
|
679
679
|
The proposed 12-week implementation roadmap provides a clear path forward, with measurable success metrics at each phase.
|
|
680
|
+
# Design Document: Brand Identity MVP for v0.2.6 Release
|
|
681
|
+
|
|
682
|
+
## Overview
|
|
683
|
+
|
|
684
|
+
This design document outlines the technical approach for completing the Brand Identity MVP (Issue #44) for the OSSA v0.2.6 release. The implementation focuses on six critical areas: Button component completion, navigation active states, CodeBlock interactivity, homepage enterprise messaging, mobile navigation UX, and accessibility compliance.
|
|
685
|
+
|
|
686
|
+
The design leverages the existing Next.js 14 (App Router) architecture, React 18, TypeScript, and Tailwind CSS infrastructure already in place.
|
|
687
|
+
|
|
688
|
+
## Architecture
|
|
689
|
+
|
|
690
|
+
### Technology Stack
|
|
691
|
+
|
|
692
|
+
- **Framework**: Next.js 14 with App Router
|
|
693
|
+
- **UI Library**: React 18 with TypeScript
|
|
694
|
+
- **Styling**: Tailwind CSS + SCSS modules
|
|
695
|
+
- **Icons**: Lucide React
|
|
696
|
+
- **State Management**: React hooks (useState, useEffect)
|
|
697
|
+
- **Clipboard API**: Native browser Clipboard API
|
|
698
|
+
|
|
699
|
+
### Component Architecture
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
website/
|
|
703
|
+
├── components/
|
|
704
|
+
│ ├── ui/
|
|
705
|
+
│ │ ├── Button.tsx (existing - enhance)
|
|
706
|
+
│ │ ├── Card.tsx (existing)
|
|
707
|
+
│ │ ├── Badge.tsx (existing)
|
|
708
|
+
│ │ └── CodeBlock.tsx (new)
|
|
709
|
+
│ ├── layout/
|
|
710
|
+
│ │ ├── Header.tsx (existing - enhance)
|
|
711
|
+
│ │ ├── MobileNav.tsx (existing - enhance)
|
|
712
|
+
│ │ └── Sidebar.tsx (existing - enhance)
|
|
713
|
+
│ └── home/
|
|
714
|
+
│ ├── HeroSection.tsx (existing - enhance)
|
|
715
|
+
│ ├── ComparisonMatrix.tsx (new)
|
|
716
|
+
│ └── WhyItMatters.tsx (existing - enhance)
|
|
717
|
+
├── app/
|
|
718
|
+
│ ├── page.tsx (homepage - enhance)
|
|
719
|
+
│ └── docs/
|
|
720
|
+
│ └── [...slug]/page.tsx (docs pages)
|
|
721
|
+
└── styles/
|
|
722
|
+
└── _variables.scss (existing design tokens)
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
## Components and Interfaces
|
|
726
|
+
|
|
727
|
+
### 1. Button Component Enhancement
|
|
728
|
+
|
|
729
|
+
**File**: `website/components/ui/Button.tsx`
|
|
730
|
+
|
|
731
|
+
**Current State**: Basic Button component exists with variants
|
|
732
|
+
|
|
733
|
+
**Enhancements Needed**:
|
|
734
|
+
|
|
735
|
+
- Ensure all 6 variants are properly styled (primary, secondary, outline, ghost, danger, success)
|
|
736
|
+
- Add loading state with spinner
|
|
737
|
+
- Improve focus ring visibility for WCAG compliance
|
|
738
|
+
- Add icon positioning support (left/right)
|
|
739
|
+
|
|
740
|
+
**Interface**:
|
|
741
|
+
|
|
742
|
+
```typescript
|
|
743
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
744
|
+
variant?:
|
|
745
|
+
| 'primary'
|
|
746
|
+
| 'secondary'
|
|
747
|
+
| 'outline'
|
|
748
|
+
| 'ghost'
|
|
749
|
+
| 'danger'
|
|
750
|
+
| 'success';
|
|
751
|
+
size?: 'sm' | 'md' | 'lg';
|
|
752
|
+
loading?: boolean;
|
|
753
|
+
icon?: React.ReactNode;
|
|
754
|
+
iconPosition?: 'left' | 'right';
|
|
755
|
+
fullWidth?: boolean;
|
|
756
|
+
}
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
### 2. CodeBlock Component (New)
|
|
760
|
+
|
|
761
|
+
**File**: `website/components/ui/CodeBlock.tsx`
|
|
762
|
+
|
|
763
|
+
**Purpose**: Display code examples with syntax highlighting and copy functionality
|
|
764
|
+
|
|
765
|
+
**Interface**:
|
|
766
|
+
|
|
767
|
+
```typescript
|
|
768
|
+
interface CodeBlockProps {
|
|
769
|
+
code: string;
|
|
770
|
+
language?: string;
|
|
771
|
+
filename?: string;
|
|
772
|
+
showLineNumbers?: boolean;
|
|
773
|
+
highlightLines?: number[];
|
|
774
|
+
}
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
**Features**:
|
|
778
|
+
|
|
779
|
+
- Syntax highlighting using existing highlighting library
|
|
780
|
+
- Copy button in top-right corner
|
|
781
|
+
- Tooltip on hover ("Copy code")
|
|
782
|
+
- Success feedback (checkmark icon for 2 seconds)
|
|
783
|
+
- Proper scrolling for long code blocks
|
|
784
|
+
|
|
785
|
+
### 3. Header Component Enhancement
|
|
786
|
+
|
|
787
|
+
**File**: `website/components/layout/Header.tsx`
|
|
788
|
+
|
|
789
|
+
**Current State**: Basic header with navigation links
|
|
790
|
+
|
|
791
|
+
**Enhancements Needed**:
|
|
792
|
+
|
|
793
|
+
- Add active state detection using Next.js `usePathname()` hook
|
|
794
|
+
- Apply distinct styling to active navigation items
|
|
795
|
+
- Maintain hover states distinct from active states
|
|
796
|
+
- Ensure keyboard focus visibility
|
|
797
|
+
|
|
798
|
+
**Active State Logic**:
|
|
799
|
+
|
|
800
|
+
```typescript
|
|
801
|
+
const pathname = usePathname();
|
|
802
|
+
const isActive = (path: string) => {
|
|
803
|
+
if (path === '/') return pathname === '/';
|
|
804
|
+
return pathname.startsWith(path);
|
|
805
|
+
};
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
### 4. Mobile Navigation Enhancement
|
|
809
|
+
|
|
810
|
+
**File**: `website/components/layout/MobileNav.tsx`
|
|
811
|
+
|
|
812
|
+
**Current State**: Basic mobile menu
|
|
813
|
+
|
|
814
|
+
**Enhancements Needed**:
|
|
815
|
+
|
|
816
|
+
- Smooth open/close animations using Tailwind transitions
|
|
817
|
+
- Body scroll lock when menu is open
|
|
818
|
+
- Close on navigation
|
|
819
|
+
- Overlay click to dismiss
|
|
820
|
+
- Active state indicators in mobile menu
|
|
821
|
+
|
|
822
|
+
**State Management**:
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
826
|
+
|
|
827
|
+
useEffect(() => {
|
|
828
|
+
if (isOpen) {
|
|
829
|
+
document.body.style.overflow = 'hidden';
|
|
830
|
+
} else {
|
|
831
|
+
document.body.style.overflow = 'unset';
|
|
832
|
+
}
|
|
833
|
+
return () => {
|
|
834
|
+
document.body.style.overflow = 'unset';
|
|
835
|
+
};
|
|
836
|
+
}, [isOpen]);
|
|
837
|
+
```
|
|
838
|
+
|
|
839
|
+
### 5. Sidebar Navigation Enhancement
|
|
840
|
+
|
|
841
|
+
**File**: `website/components/layout/Sidebar.tsx`
|
|
842
|
+
|
|
843
|
+
**Current State**: Documentation sidebar exists
|
|
844
|
+
|
|
845
|
+
**Enhancements Needed**:
|
|
846
|
+
|
|
847
|
+
- Add active state detection for current doc page
|
|
848
|
+
- Highlight active section
|
|
849
|
+
- Smooth scroll to active item on page load
|
|
850
|
+
|
|
851
|
+
### 6. Homepage Components
|
|
852
|
+
|
|
853
|
+
#### HeroSection Enhancement
|
|
854
|
+
|
|
855
|
+
**File**: `website/components/home/HeroSection.tsx`
|
|
856
|
+
|
|
857
|
+
**Enhancements**:
|
|
858
|
+
|
|
859
|
+
- Update messaging to emphasize: vendor-neutrality, compliance-ready, enterprise-grade
|
|
860
|
+
- Highlight key benefits: portability, compliance, governance, multi-runtime
|
|
861
|
+
- Ensure mobile responsiveness
|
|
862
|
+
|
|
863
|
+
#### ComparisonMatrix (New)
|
|
864
|
+
|
|
865
|
+
**File**: `website/components/home/ComparisonMatrix.tsx`
|
|
866
|
+
|
|
867
|
+
**Purpose**: Display comparison table of OSSA vs alternatives
|
|
868
|
+
|
|
869
|
+
**Interface**:
|
|
870
|
+
|
|
871
|
+
```typescript
|
|
872
|
+
interface ComparisonData {
|
|
873
|
+
feature: string;
|
|
874
|
+
ossa: string | boolean;
|
|
875
|
+
langchain: string | boolean;
|
|
876
|
+
autogen: string | boolean;
|
|
877
|
+
mcp: string | boolean;
|
|
878
|
+
semanticKernel: string | boolean;
|
|
879
|
+
}
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
**Features**:
|
|
883
|
+
|
|
884
|
+
- Desktop: Full table with all columns
|
|
885
|
+
- Mobile: Accordion or card-based layout
|
|
886
|
+
- Visual indicators (checkmarks, X marks)
|
|
887
|
+
- Responsive design
|
|
888
|
+
|
|
889
|
+
#### WhyItMatters Enhancement
|
|
890
|
+
|
|
891
|
+
**File**: `website/components/home/WhyItMatters.tsx`
|
|
892
|
+
|
|
893
|
+
**Enhancements**:
|
|
894
|
+
|
|
895
|
+
- Use Card components for each benefit
|
|
896
|
+
- Improve visual hierarchy
|
|
897
|
+
- Add icons for each benefit
|
|
898
|
+
- Ensure proper spacing and contrast
|
|
899
|
+
|
|
900
|
+
## Data Models
|
|
901
|
+
|
|
902
|
+
### Navigation Item
|
|
903
|
+
|
|
904
|
+
```typescript
|
|
905
|
+
interface NavItem {
|
|
906
|
+
label: string;
|
|
907
|
+
href: string;
|
|
908
|
+
icon?: React.ReactNode;
|
|
909
|
+
children?: NavItem[];
|
|
910
|
+
}
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
### Comparison Feature
|
|
914
|
+
|
|
915
|
+
```typescript
|
|
916
|
+
interface ComparisonFeature {
|
|
917
|
+
feature: string;
|
|
918
|
+
description?: string;
|
|
919
|
+
ossa: ComparisonValue;
|
|
920
|
+
competitors: {
|
|
921
|
+
[key: string]: ComparisonValue;
|
|
922
|
+
};
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
type ComparisonValue =
|
|
926
|
+
| boolean
|
|
927
|
+
| string
|
|
928
|
+
| {
|
|
929
|
+
value: string;
|
|
930
|
+
note?: string;
|
|
931
|
+
};
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
## Correctness Properties
|
|
935
|
+
|
|
936
|
+
_A property is a characteristic or behavior that should hold true across all valid executions of a system-essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees._
|
|
937
|
+
|
|
938
|
+
### Property 1: Button accessibility
|
|
939
|
+
|
|
940
|
+
_For any_ Button component rendered, it should have a visible focus ring that meets WCAG 2.1 AA contrast requirements when focused via keyboard navigation
|
|
941
|
+
**Validates: Requirements 1.3**
|
|
942
|
+
|
|
943
|
+
### Property 2: Copy button feedback
|
|
944
|
+
|
|
945
|
+
_For any_ CodeBlock component, clicking the copy button should copy the code to clipboard and display success feedback (checkmark) for exactly 2 seconds before reverting
|
|
946
|
+
**Validates: Requirements 3.2, 3.4**
|
|
947
|
+
|
|
948
|
+
### Property 3: Navigation active state uniqueness
|
|
949
|
+
|
|
950
|
+
_For any_ page in the website, exactly one navigation item in the header should have the active state styling applied
|
|
951
|
+
**Validates: Requirements 2.1**
|
|
952
|
+
|
|
953
|
+
### Property 4: Mobile menu body scroll lock
|
|
954
|
+
|
|
955
|
+
_For any_ state where the mobile menu is open, the body element should have `overflow: hidden` applied, and when closed, it should be removed
|
|
956
|
+
**Validates: Requirements 5.2**
|
|
957
|
+
|
|
958
|
+
### Property 5: Active state persistence
|
|
959
|
+
|
|
960
|
+
_For any_ navigation component (header, sidebar, mobile menu), the active state should persist across re-renders and match the current URL path
|
|
961
|
+
**Validates: Requirements 2.1, 2.2**
|
|
962
|
+
|
|
963
|
+
### Property 6: Contrast ratio compliance
|
|
964
|
+
|
|
965
|
+
_For any_ text displayed on colored backgrounds, the contrast ratio should meet or exceed WCAG AA standards (4.5:1 for normal text, 3:1 for large text)
|
|
966
|
+
**Validates: Requirements 6.3**
|
|
967
|
+
|
|
968
|
+
### Property 7: ARIA label presence
|
|
969
|
+
|
|
970
|
+
_For any_ interactive component (Button, CodeBlock copy button, navigation items), proper ARIA labels should be present for screen reader accessibility
|
|
971
|
+
**Validates: Requirements 6.2**
|
|
972
|
+
|
|
973
|
+
## Error Handling
|
|
974
|
+
|
|
975
|
+
### Clipboard API Errors
|
|
976
|
+
|
|
977
|
+
- **Scenario**: Clipboard API not supported or permission denied
|
|
978
|
+
- **Handling**: Display fallback message "Please copy manually" and log error
|
|
979
|
+
- **User Feedback**: Toast notification with error message
|
|
980
|
+
|
|
981
|
+
### Navigation State Errors
|
|
982
|
+
|
|
983
|
+
- **Scenario**: Invalid pathname or route not found
|
|
984
|
+
- **Handling**: Default to no active state, log warning
|
|
985
|
+
- **User Feedback**: No visual error (graceful degradation)
|
|
986
|
+
|
|
987
|
+
### Component Render Errors
|
|
988
|
+
|
|
989
|
+
- **Scenario**: Component fails to render due to missing props or data
|
|
990
|
+
- **Handling**: Error boundary catches and displays fallback UI
|
|
991
|
+
- **User Feedback**: Generic error message with retry option
|
|
992
|
+
|
|
993
|
+
## Testing Strategy
|
|
994
|
+
|
|
995
|
+
### Unit Tests
|
|
996
|
+
|
|
997
|
+
- Button component variants and states
|
|
998
|
+
- CodeBlock copy functionality (mocked Clipboard API)
|
|
999
|
+
- Active state detection logic
|
|
1000
|
+
- Mobile menu state management
|
|
1001
|
+
- Contrast ratio calculations
|
|
1002
|
+
|
|
1003
|
+
### Property-Based Tests
|
|
1004
|
+
|
|
1005
|
+
- **Library**: fast-check (TypeScript property-based testing)
|
|
1006
|
+
- **Configuration**: Minimum 100 iterations per property
|
|
1007
|
+
- **Coverage**: All 7 correctness properties listed above
|
|
1008
|
+
|
|
1009
|
+
### Integration Tests
|
|
1010
|
+
|
|
1011
|
+
- Navigation flow (click navigation → page loads → active state updates)
|
|
1012
|
+
- Mobile menu interaction (open → navigate → close)
|
|
1013
|
+
- CodeBlock copy flow (click → copy → feedback → reset)
|
|
1014
|
+
|
|
1015
|
+
### Accessibility Tests
|
|
1016
|
+
|
|
1017
|
+
- Keyboard navigation through all interactive elements
|
|
1018
|
+
- Screen reader compatibility (ARIA labels)
|
|
1019
|
+
- Focus indicator visibility
|
|
1020
|
+
- Contrast ratio verification using automated tools
|
|
1021
|
+
|
|
1022
|
+
### Manual Testing Checklist
|
|
1023
|
+
|
|
1024
|
+
- Test on mobile devices (iOS Safari, Android Chrome)
|
|
1025
|
+
- Test with keyboard only (no mouse)
|
|
1026
|
+
- Test with screen reader (VoiceOver, NVDA)
|
|
1027
|
+
- Test in different viewport sizes
|
|
1028
|
+
- Test with reduced motion preferences
|
|
1029
|
+
|
|
1030
|
+
## Implementation Notes
|
|
1031
|
+
|
|
1032
|
+
### Design Tokens Usage
|
|
1033
|
+
|
|
1034
|
+
All components must use existing SCSS variables from `website/styles/_variables.scss`:
|
|
1035
|
+
|
|
1036
|
+
- Colors: `$primary-*`, `$secondary-*`, `$accent-*`
|
|
1037
|
+
- Typography: `$font-display`, `$font-heading`, `$font-body`, `$font-mono`
|
|
1038
|
+
- Spacing: Tailwind spacing scale (4, 8, 12, 16, 24, 32, 48, 64, 96)
|
|
1039
|
+
- Transitions: `transition-all duration-300 ease-in-out`
|
|
1040
|
+
|
|
1041
|
+
### Accessibility Requirements
|
|
1042
|
+
|
|
1043
|
+
- All interactive elements must have minimum 44x44px touch target
|
|
1044
|
+
- Focus indicators must be visible with 3:1 contrast against background
|
|
1045
|
+
- All images must have descriptive alt text
|
|
1046
|
+
- All buttons must have accessible names (text or aria-label)
|
|
1047
|
+
- Color must not be the only means of conveying information
|
|
1048
|
+
|
|
1049
|
+
### Performance Considerations
|
|
1050
|
+
|
|
1051
|
+
- Code syntax highlighting should be lazy-loaded
|
|
1052
|
+
- Mobile menu animations should use CSS transforms (GPU-accelerated)
|
|
1053
|
+
- Comparison matrix should use CSS Grid for optimal layout performance
|
|
1054
|
+
- Images should use Next.js Image component with proper sizing
|
|
1055
|
+
|
|
1056
|
+
### Browser Support
|
|
1057
|
+
|
|
1058
|
+
- Modern browsers (Chrome, Firefox, Safari, Edge) - last 2 versions
|
|
1059
|
+
- Mobile browsers (iOS Safari 14+, Chrome Android)
|
|
1060
|
+
- Graceful degradation for older browsers
|
|
@@ -197,3 +197,91 @@ This document outlines requirements for a comprehensive design system audit and
|
|
|
197
197
|
3. WHEN viewing the OSSA logo THEN the System SHALL display it with the gradient text treatment
|
|
198
198
|
4. WHEN on mobile THEN the System SHALL scale logos appropriately for smaller screens
|
|
199
199
|
5. WHEN loading logos THEN the System SHALL use optimized SVG or WebP formats
|
|
200
|
+
# Requirements Document: Brand Identity MVP for v0.2.6 Release
|
|
201
|
+
|
|
202
|
+
## Introduction
|
|
203
|
+
|
|
204
|
+
This document defines the minimum viable product (MVP) scope for completing Issue #44 (Brand Identity & Brand Guide Development) for the v0.2.6 release. This focuses on the highest-priority items needed to establish a professional, consistent brand presence on the OSSA website.
|
|
205
|
+
|
|
206
|
+
## Glossary
|
|
207
|
+
|
|
208
|
+
- **Website**: The OSSA marketing and documentation website at openstandardagents.org
|
|
209
|
+
- **Component**: A reusable UI element (Button, Card, Badge, etc.)
|
|
210
|
+
- **Design Token**: A centralized variable for colors, typography, spacing, etc.
|
|
211
|
+
- **WCAG 2.1 AA**: Web Content Accessibility Guidelines level AA compliance
|
|
212
|
+
- **Active State**: Visual indicator showing the current page in navigation
|
|
213
|
+
- **Interactive Feature**: User-triggered functionality like copy buttons or tooltips
|
|
214
|
+
|
|
215
|
+
## Requirements
|
|
216
|
+
|
|
217
|
+
### Requirement 1: Complete Button Component System
|
|
218
|
+
|
|
219
|
+
**User Story:** As a website visitor, I want consistent, accessible buttons across all pages, so that I can easily identify and interact with calls-to-action.
|
|
220
|
+
|
|
221
|
+
#### Acceptance Criteria
|
|
222
|
+
|
|
223
|
+
1. WHEN viewing any button THEN the Website SHALL display it using the Button component with proper variant (primary, secondary, outline, ghost, danger, success)
|
|
224
|
+
2. WHEN hovering over a button THEN the Website SHALL provide smooth visual feedback with appropriate color transitions
|
|
225
|
+
3. WHEN using keyboard navigation THEN the Website SHALL display visible focus rings on all buttons meeting WCAG 2.1 AA standards
|
|
226
|
+
4. WHEN a button is in loading state THEN the Website SHALL display a spinner and disable interaction
|
|
227
|
+
5. WHEN buttons contain icons THEN the Website SHALL position them consistently (left or right) with proper spacing
|
|
228
|
+
|
|
229
|
+
### Requirement 2: Navigation Active States
|
|
230
|
+
|
|
231
|
+
**User Story:** As a user navigating the website, I want to see which page I'm currently on, so that I can maintain context and orientation.
|
|
232
|
+
|
|
233
|
+
#### Acceptance Criteria
|
|
234
|
+
|
|
235
|
+
1. WHEN viewing the header navigation THEN the Website SHALL highlight the active page link with distinct visual styling
|
|
236
|
+
2. WHEN on a documentation page THEN the Website SHALL highlight the active section in the sidebar navigation
|
|
237
|
+
3. WHEN hovering over navigation links THEN the Website SHALL provide visual feedback distinct from the active state
|
|
238
|
+
4. WHEN using keyboard navigation THEN the Website SHALL maintain visible focus states on navigation items
|
|
239
|
+
5. WHEN on mobile devices THEN the Website SHALL show active states in the mobile menu
|
|
240
|
+
|
|
241
|
+
### Requirement 3: Enhanced CodeBlock Interactivity
|
|
242
|
+
|
|
243
|
+
**User Story:** As a developer reading documentation, I want to easily copy code examples, so that I can quickly implement OSSA in my projects.
|
|
244
|
+
|
|
245
|
+
#### Acceptance Criteria
|
|
246
|
+
|
|
247
|
+
1. WHEN viewing a code block THEN the Website SHALL display a copy button in the top-right corner
|
|
248
|
+
2. WHEN clicking the copy button THEN the Website SHALL copy the code to clipboard and show success feedback
|
|
249
|
+
3. WHEN hovering over the copy button THEN the Website SHALL display a tooltip indicating "Copy code"
|
|
250
|
+
4. WHEN code is successfully copied THEN the Website SHALL change the button icon to a checkmark for 2 seconds
|
|
251
|
+
5. WHEN viewing long code blocks THEN the Website SHALL provide proper scrolling with visible scrollbars
|
|
252
|
+
|
|
253
|
+
### Requirement 4: Homepage Enterprise Messaging
|
|
254
|
+
|
|
255
|
+
**User Story:** As an enterprise decision-maker, I want to quickly understand OSSA's value proposition, so that I can evaluate it for my organization.
|
|
256
|
+
|
|
257
|
+
#### Acceptance Criteria
|
|
258
|
+
|
|
259
|
+
1. WHEN viewing the homepage hero THEN the Website SHALL display enterprise-focused messaging emphasizing vendor-neutrality, compliance, and governance
|
|
260
|
+
2. WHEN scrolling to the comparison section THEN the Website SHALL display a clear matrix comparing OSSA to alternatives (LangChain, AutoGen, MCP, Semantic Kernel)
|
|
261
|
+
3. WHEN viewing the "Why Does This Matter?" section THEN the Website SHALL use Card components with clear visual hierarchy
|
|
262
|
+
4. WHEN on mobile devices THEN the Website SHALL adapt the comparison matrix to a mobile-friendly format
|
|
263
|
+
5. WHEN viewing key benefits THEN the Website SHALL highlight portability, compliance, governance, and multi-runtime support
|
|
264
|
+
|
|
265
|
+
### Requirement 5: Mobile Navigation UX
|
|
266
|
+
|
|
267
|
+
**User Story:** As a mobile user, I want smooth, intuitive navigation, so that I can easily explore the website on my phone.
|
|
268
|
+
|
|
269
|
+
#### Acceptance Criteria
|
|
270
|
+
|
|
271
|
+
1. WHEN opening the mobile menu THEN the Website SHALL animate the menu with smooth transitions
|
|
272
|
+
2. WHEN the mobile menu is open THEN the Website SHALL prevent body scrolling
|
|
273
|
+
3. WHEN clicking a mobile menu item THEN the Website SHALL close the menu and navigate to the page
|
|
274
|
+
4. WHEN the mobile menu is open THEN the Website SHALL display a close button or overlay to dismiss it
|
|
275
|
+
5. WHEN rotating the device THEN the Website SHALL adapt the navigation layout appropriately
|
|
276
|
+
|
|
277
|
+
### Requirement 6: Accessibility Compliance
|
|
278
|
+
|
|
279
|
+
**User Story:** As a user with disabilities, I want an accessible website, so that I can navigate and understand content regardless of my abilities.
|
|
280
|
+
|
|
281
|
+
#### Acceptance Criteria
|
|
282
|
+
|
|
283
|
+
1. WHEN using keyboard navigation THEN the Website SHALL provide visible focus indicators on all interactive elements
|
|
284
|
+
2. WHEN using a screen reader THEN the Website SHALL provide proper ARIA labels on all components
|
|
285
|
+
3. WHEN viewing text on colored backgrounds THEN the Website SHALL maintain WCAG AA contrast ratios (4.5:1 minimum)
|
|
286
|
+
4. WHEN interactive elements are disabled THEN the Website SHALL communicate the disabled state to assistive technologies
|
|
287
|
+
5. WHEN images are displayed THEN the Website SHALL provide descriptive alt text for all meaningful images
|