@jaimevalasek/aioson 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -1
- package/LICENSE +661 -21
- package/README.md +9 -1
- package/docs/design-previews/aurora-command-ui-website.html +884 -0
- package/docs/design-previews/aurora-command-ui.html +682 -0
- package/docs/design-previews/bold-editorial-ui-website.html +658 -0
- package/docs/design-previews/bold-editorial-ui.html +717 -0
- package/docs/design-previews/clean-saas-ui-website.html +1202 -0
- package/docs/design-previews/clean-saas-ui.html +549 -0
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
- package/docs/design-previews/cognitive-core-ui.html +463 -0
- package/docs/design-previews/glassmorphism-ui-website.html +572 -0
- package/docs/design-previews/glassmorphism-ui.html +886 -0
- package/docs/design-previews/index.html +699 -0
- package/docs/design-previews/interface-design-website.html +1187 -0
- package/docs/design-previews/interface-design.html +513 -0
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
- package/docs/design-previews/neo-brutalist-ui.html +797 -0
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
- package/docs/design-previews/premium-command-center-ui.html +552 -0
- package/docs/design-previews/warm-craft-ui-website.html +684 -0
- package/docs/design-previews/warm-craft-ui.html +739 -0
- package/docs/en/cli-reference.md +20 -9
- package/docs/en/squad-dashboard.md +372 -0
- package/docs/openclaw-bridge.md +308 -0
- package/docs/pt/README.md +7 -0
- package/docs/pt/agent-sharding.md +132 -0
- package/docs/pt/agentes.md +131 -11
- package/docs/pt/busca-de-contexto.md +129 -0
- package/docs/pt/cache-de-contexto.md +156 -0
- package/docs/pt/cenarios.md +46 -2
- package/docs/pt/comandos-cli.md +88 -1
- package/docs/pt/design-hybrid-forge.md +107 -0
- package/docs/pt/inicio-rapido.md +72 -5
- package/docs/pt/inteligencia-adaptativa.md +324 -0
- package/docs/pt/monitor-de-contexto.md +104 -0
- package/docs/pt/recuperacao-de-sessao.md +125 -0
- package/docs/pt/sandbox.md +125 -0
- package/docs/pt/skills.md +98 -6
- package/docs/pt/squad-dashboard.md +373 -0
- package/docs/testing/genome-2.0-matrix.md +5 -5
- package/docs/testing/genome-2.0-rollout.md +9 -9
- package/package.json +2 -2
- package/src/agent-loader.js +280 -0
- package/src/backup-local.js +74 -0
- package/src/cli.js +192 -0
- package/src/commands/agent-loader.js +85 -0
- package/src/commands/backup-local-cmd.js +25 -0
- package/src/commands/context-cache.js +90 -0
- package/src/commands/context-monitor.js +92 -0
- package/src/commands/context-search.js +66 -0
- package/src/commands/design-hybrid-options.js +385 -0
- package/src/commands/health.js +214 -0
- package/src/commands/init.js +54 -13
- package/src/commands/install.js +52 -13
- package/src/commands/learning-evolve.js +355 -0
- package/src/commands/live.js +34 -0
- package/src/commands/recovery.js +43 -0
- package/src/commands/runtime.js +242 -0
- package/src/commands/sandbox.js +37 -0
- package/src/commands/setup-context.js +29 -4
- package/src/commands/setup.js +178 -0
- package/src/commands/skill.js +79 -32
- package/src/commands/squad-daemon.js +209 -0
- package/src/commands/squad-dashboard.js +39 -0
- package/src/commands/squad-deploy.js +64 -0
- package/src/commands/squad-doctor.js +52 -0
- package/src/commands/squad-mcp.js +270 -0
- package/src/commands/squad-processes.js +56 -0
- package/src/commands/squad-recovery.js +42 -0
- package/src/commands/squad-roi.js +291 -0
- package/src/commands/squad-score.js +250 -0
- package/src/commands/squad-status.js +37 -1
- package/src/commands/squad-validate.js +62 -1
- package/src/commands/squad-webhook.js +160 -0
- package/src/commands/squad-worker.js +191 -0
- package/src/commands/squad-worktrees.js +75 -0
- package/src/commands/tool-registry-cmd.js +232 -0
- package/src/commands/update.js +7 -0
- package/src/commands/web-map.js +70 -0
- package/src/commands/web-scrape.js +71 -0
- package/src/constants.js +17 -0
- package/src/context-cache.js +159 -0
- package/src/context-search.js +326 -0
- package/src/context-writer.js +45 -1
- package/src/design-variation-catalog.js +503 -0
- package/src/i18n/messages/en.js +159 -3
- package/src/i18n/messages/es.js +147 -2
- package/src/i18n/messages/fr.js +147 -2
- package/src/i18n/messages/pt-BR.js +158 -3
- package/src/install-animation.js +260 -0
- package/src/install-profile.js +143 -0
- package/src/install-wizard.js +474 -0
- package/src/installer.js +38 -10
- package/src/lib/webhook-server.js +328 -0
- package/src/mcp-connectors/registry.js +602 -0
- package/src/parser.js +7 -1
- package/src/recovery-context-session.js +154 -0
- package/src/runtime-store.js +355 -2
- package/src/sandbox.js +177 -0
- package/src/squad/external-session.js +180 -0
- package/src/squad/inter-squad.js +74 -0
- package/src/squad/recovery-context.js +201 -0
- package/src/squad/worktree-manager.js +114 -0
- package/src/squad-daemon.js +490 -0
- package/src/squad-dashboard/api.js +223 -0
- package/src/squad-dashboard/attachment-handler.js +93 -0
- package/src/squad-dashboard/context-monitor.js +157 -0
- package/src/squad-dashboard/execution-logs.js +115 -0
- package/src/squad-dashboard/hunk-review.js +209 -0
- package/src/squad-dashboard/metrics.js +133 -0
- package/src/squad-dashboard/process-monitor.js +125 -0
- package/src/squad-dashboard/renderer.js +858 -0
- package/src/squad-dashboard/server.js +232 -0
- package/src/squad-dashboard/styles.js +525 -0
- package/src/squad-dashboard/token-tracker.js +99 -0
- package/src/tool-executor.js +94 -0
- package/src/updater.js +11 -3
- package/src/web.js +284 -0
- package/src/worker-runner.js +339 -0
- package/template/.aioson/agents/analyst.md +62 -3
- package/template/.aioson/agents/architect.md +42 -0
- package/template/.aioson/agents/design-hybrid-forge.md +127 -0
- package/template/.aioson/agents/dev.md +223 -11
- package/template/.aioson/agents/deyvin.md +65 -0
- package/template/.aioson/agents/neo.md +152 -0
- package/template/.aioson/agents/orache.md +17 -0
- package/template/.aioson/agents/orchestrator.md +26 -0
- package/template/.aioson/agents/pm.md +58 -0
- package/template/.aioson/agents/product.md +88 -12
- package/template/.aioson/agents/qa.md +80 -0
- package/template/.aioson/agents/setup.md +128 -22
- package/template/.aioson/agents/sheldon.md +704 -0
- package/template/.aioson/agents/squad.md +191 -0
- package/template/.aioson/agents/tester.md +410 -0
- package/template/.aioson/agents/ux-ui.md +12 -0
- package/template/.aioson/config.md +21 -0
- package/template/.aioson/context/forensics/.gitkeep +0 -0
- package/template/.aioson/context/seeds/seed-example.md +27 -0
- package/template/.aioson/context/user-profile.md +42 -0
- package/template/.aioson/locales/en/agents/analyst.md +8 -0
- package/template/.aioson/locales/en/agents/architect.md +8 -0
- package/template/.aioson/locales/en/agents/dev.md +66 -7
- package/template/.aioson/locales/en/agents/deyvin.md +8 -0
- package/template/.aioson/locales/en/agents/neo.md +8 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/en/agents/qa.md +49 -0
- package/template/.aioson/locales/en/agents/setup.md +35 -2
- package/template/.aioson/locales/en/agents/sheldon.md +340 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/es/agents/analyst.md +8 -0
- package/template/.aioson/locales/es/agents/architect.md +8 -0
- package/template/.aioson/locales/es/agents/dev.md +66 -7
- package/template/.aioson/locales/es/agents/deyvin.md +8 -0
- package/template/.aioson/locales/es/agents/neo.md +48 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/qa.md +26 -0
- package/template/.aioson/locales/es/agents/setup.md +35 -2
- package/template/.aioson/locales/es/agents/sheldon.md +192 -0
- package/template/.aioson/locales/es/agents/squad.md +63 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/fr/agents/analyst.md +8 -0
- package/template/.aioson/locales/fr/agents/architect.md +8 -0
- package/template/.aioson/locales/fr/agents/dev.md +66 -7
- package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
- package/template/.aioson/locales/fr/agents/neo.md +48 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/qa.md +26 -0
- package/template/.aioson/locales/fr/agents/setup.md +35 -2
- package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
- package/template/.aioson/locales/fr/agents/squad.md +63 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
- package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +35 -2
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
- package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
- package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
- package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
- package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
- package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
- package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
- package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
- package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
- package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
- package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
- package/template/.aioson/skills/squad/formats/catalog.json +15 -0
- package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
- package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
- package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
- package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
- package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
- package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
- package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
- package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
- package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
- package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
- package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
- package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
- package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
- package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
- package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
- package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
- package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
- package/template/.aioson/skills/static/debugging-protocol.md +42 -0
- package/template/.aioson/skills/static/git-worktrees.md +36 -0
- package/template/.aioson/tasks/implementation-plan.md +19 -0
- package/template/.aioson/tasks/squad-design.md +28 -0
- package/template/.aioson/tasks/squad-profile.md +48 -0
- package/template/.aioson/tasks/squad-review.md +61 -0
- package/template/.aioson/tasks/squad-task-decompose.md +66 -0
- package/template/.claude/commands/aioson/agent/neo.md +5 -0
- package/template/.claude/commands/aioson/agent/tester.md +5 -0
- package/template/.gemini/GEMINI.md +1 -0
- package/template/.gemini/commands/aios-neo.toml +4 -0
- package/template/.gemini/commands/aios-tester.toml +6 -0
- package/template/AGENTS.md +26 -1
- package/template/CLAUDE.md +6 -2
- package/template/OPENCODE.md +2 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Website Layouts — Warm Craft UI
|
|
2
|
+
|
|
3
|
+
Composition guides for landing pages, product pages, and institutional websites. Uses tokens from `design-tokens.md` and components from `components.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## General Website Rules
|
|
8
|
+
|
|
9
|
+
1. **Hero is the first impression.** It must feel crafted, not templated. Never a centered headline + two buttons + stock image.
|
|
10
|
+
2. **Editorial pacing.** Alternate between high-impact sections and breathing room. Never repeat the same card grid four times.
|
|
11
|
+
3. **Serif drives the narrative.** Headlines, pull quotes, and hero text use `var(--font-display)`. This is what makes it feel warm, not the colors.
|
|
12
|
+
4. **Warm backgrounds, not white.** Use `var(--bg-void)` for section alternation, never pure white sections.
|
|
13
|
+
5. **One accent, used sparingly.** Terracotta for CTAs and key highlights only. Never accent borders, accent backgrounds on sections, or accent everything.
|
|
14
|
+
6. **Illustrations over icons.** Where possible, use warm, hand-drawn-style illustrations. Cold geometric SVG icons are for apps, not marketing pages.
|
|
15
|
+
7. **Real copy only.** No Lorem ipsum. Write real headlines, descriptions, and CTAs that sound like a human wrote them.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Hero Patterns
|
|
20
|
+
|
|
21
|
+
### Pattern A: Split Hero
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
+---------------------------+---------------------------+
|
|
25
|
+
| | |
|
|
26
|
+
| OVERLINE | PRODUCT SHOT or |
|
|
27
|
+
| (text-sm, accent, | ILLUSTRATION |
|
|
28
|
+
| tracking-wide) | (warm tones, soft |
|
|
29
|
+
| | shadow, slight tilt) |
|
|
30
|
+
| HEADLINE | |
|
|
31
|
+
| (font-display, text-5xl, | |
|
|
32
|
+
| weight-bold, heading) | |
|
|
33
|
+
| | |
|
|
34
|
+
| SUBTITLE | |
|
|
35
|
+
| (text-lg, secondary, | |
|
|
36
|
+
| max-width 480px) | |
|
|
37
|
+
| | |
|
|
38
|
+
| [CTA Primary] [CTA Sec] | |
|
|
39
|
+
| | |
|
|
40
|
+
+---------------------------+---------------------------+
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use when: product has a strong visual to show. Most common warm hero.
|
|
44
|
+
|
|
45
|
+
### Pattern B: Editorial Hero
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
+-----------------------------------------------------------+
|
|
49
|
+
| centered, max-width: 720px |
|
|
50
|
+
| |
|
|
51
|
+
| OVERLINE (accent badge or small label) |
|
|
52
|
+
| |
|
|
53
|
+
| HEADLINE |
|
|
54
|
+
| (font-display, text-5xl, weight-bold, text-align: center)|
|
|
55
|
+
| letter-spacing: var(--tracking-tight) |
|
|
56
|
+
| |
|
|
57
|
+
| SUBTITLE |
|
|
58
|
+
| (text-xl, secondary, text-align: center, max-width 560px)|
|
|
59
|
+
| |
|
|
60
|
+
| [CTA Primary] |
|
|
61
|
+
| |
|
|
62
|
+
| SOCIAL PROOF LINE |
|
|
63
|
+
| (avatar cluster + "Trusted by 2,000+ teams") |
|
|
64
|
+
| |
|
|
65
|
+
+-----------------------------------------------------------+
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use when: message is the product. No visual needed above the fold.
|
|
69
|
+
|
|
70
|
+
### Pattern C: Immersive Hero
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
+-----------------------------------------------------------+
|
|
74
|
+
| full-width background: warm gradient or warm photography |
|
|
75
|
+
| (subtle warm overlay if image is cold) |
|
|
76
|
+
| |
|
|
77
|
+
| centered content, max-width: 640px |
|
|
78
|
+
| |
|
|
79
|
+
| HEADLINE (white or light text if on dark background) |
|
|
80
|
+
| SUBTITLE |
|
|
81
|
+
| [CTA on warm background] |
|
|
82
|
+
| |
|
|
83
|
+
+-----------------------------------------------------------+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Use when: brand-heavy, emotional product, premium feel.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Section Patterns
|
|
91
|
+
|
|
92
|
+
### Feature Grid
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
SECTION HEADER
|
|
96
|
+
overline: var(--text-sm), var(--accent), var(--tracking-wider), uppercase
|
|
97
|
+
title: var(--font-display), var(--text-3xl), var(--weight-bold)
|
|
98
|
+
subtitle: var(--text-lg), var(--text-secondary), max-width 600px
|
|
99
|
+
text-align: center or left
|
|
100
|
+
margin-bottom: var(--space-12)
|
|
101
|
+
|
|
102
|
+
GRID
|
|
103
|
+
display: grid
|
|
104
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))
|
|
105
|
+
gap: var(--space-6)
|
|
106
|
+
uses: Feature Card component
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Rules:
|
|
110
|
+
- Max 6 features in a grid. If more, group into categories.
|
|
111
|
+
- Each feature card should have a warm icon area (not just an icon floating in space).
|
|
112
|
+
|
|
113
|
+
### Alternating Feature Sections
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
SECTION 1 (image left, text right)
|
|
117
|
+
+---------------------------+---------------------------+
|
|
118
|
+
| [Product screenshot | OVERLINE |
|
|
119
|
+
| or illustration, | TITLE (serif, 2xl) |
|
|
120
|
+
| rounded-2xl, | DESCRIPTION |
|
|
121
|
+
| warm shadow] | BULLET POINTS |
|
|
122
|
+
| | [CTA link →] |
|
|
123
|
+
+---------------------------+---------------------------+
|
|
124
|
+
|
|
125
|
+
SECTION 2 (text left, image right)
|
|
126
|
+
+---------------------------+---------------------------+
|
|
127
|
+
| OVERLINE | [Product screenshot |
|
|
128
|
+
| TITLE | different angle] |
|
|
129
|
+
| DESCRIPTION | |
|
|
130
|
+
+---------------------------+---------------------------+
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Rules:
|
|
134
|
+
- Always alternate sides.
|
|
135
|
+
- Images should be real product screenshots with warm treatment (rounded corners, soft shadow, slight warm tint).
|
|
136
|
+
- Vertical padding between sections: `var(--space-20)` or `var(--space-24)`.
|
|
137
|
+
|
|
138
|
+
### Testimonials
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Option A — Pull Quote:
|
|
142
|
+
font: var(--font-display), var(--text-2xl), italic
|
|
143
|
+
color: var(--text-heading)
|
|
144
|
+
max-width: 640px
|
|
145
|
+
text-align: center
|
|
146
|
+
warm accent bar on left or oversized opening quote mark
|
|
147
|
+
|
|
148
|
+
attribution:
|
|
149
|
+
avatar (48px) + name + title + company
|
|
150
|
+
font: var(--font-body), var(--text-sm)
|
|
151
|
+
margin-top: var(--space-6)
|
|
152
|
+
|
|
153
|
+
Option B — Card Grid:
|
|
154
|
+
3 columns of testimonial cards
|
|
155
|
+
Each: quote + avatar + name + role
|
|
156
|
+
background: var(--bg-surface)
|
|
157
|
+
border: 1px solid var(--border-subtle)
|
|
158
|
+
border-radius: var(--radius-2xl)
|
|
159
|
+
padding: var(--space-6)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Rules:
|
|
163
|
+
- Pull quote is preferred for warm aesthetic. Card grid is acceptable for volume.
|
|
164
|
+
- Never more than one testimonial section per page.
|
|
165
|
+
|
|
166
|
+
### Social Proof Strip
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
horizontal row of logos or metrics
|
|
170
|
+
"Trusted by teams at [Logo] [Logo] [Logo] [Logo]"
|
|
171
|
+
logos: grayscale, opacity 0.5, warm-tinted
|
|
172
|
+
hover: opacity 1
|
|
173
|
+
|
|
174
|
+
or metrics:
|
|
175
|
+
"10K+ users | 4.9/5 rating | 50+ countries"
|
|
176
|
+
font: var(--font-body), var(--text-lg), var(--weight-semibold)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Pricing Section
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
SECTION HEADER (centered)
|
|
183
|
+
title: "Simple, transparent pricing"
|
|
184
|
+
subtitle: "No hidden fees. Cancel anytime."
|
|
185
|
+
|
|
186
|
+
PRICING CARDS (2-3 columns, centered)
|
|
187
|
+
each card:
|
|
188
|
+
background: var(--bg-surface)
|
|
189
|
+
border: 1px solid var(--border-subtle)
|
|
190
|
+
border-radius: var(--radius-2xl)
|
|
191
|
+
padding: var(--space-8)
|
|
192
|
+
|
|
193
|
+
plan name: var(--text-lg), var(--weight-semibold)
|
|
194
|
+
price: var(--font-display), var(--text-4xl), var(--weight-bold)
|
|
195
|
+
per period: var(--text-sm), var(--text-secondary)
|
|
196
|
+
feature list: checkmarks with var(--semantic-green)
|
|
197
|
+
CTA: Primary or Secondary Button (full width)
|
|
198
|
+
|
|
199
|
+
recommended card:
|
|
200
|
+
border: 2px solid var(--accent)
|
|
201
|
+
shadow: var(--shadow-lg)
|
|
202
|
+
"Most Popular" badge above card
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### CTA Section (before footer)
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
background: var(--bg-void)
|
|
209
|
+
border-radius: var(--radius-3xl)
|
|
210
|
+
padding: var(--space-16) var(--space-8)
|
|
211
|
+
text-align: center
|
|
212
|
+
margin: var(--space-16) auto
|
|
213
|
+
max-width: var(--content-lg)
|
|
214
|
+
|
|
215
|
+
title: var(--font-display), var(--text-3xl), var(--weight-bold)
|
|
216
|
+
subtitle: var(--text-lg), var(--text-secondary)
|
|
217
|
+
[CTA Primary — Large variant] + [CTA Secondary]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Footer
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
background: var(--bg-void)
|
|
226
|
+
border-top: 1px solid var(--border-subtle)
|
|
227
|
+
padding: var(--space-16) var(--space-8) var(--space-8)
|
|
228
|
+
|
|
229
|
+
LAYOUT (4 columns on desktop, stacked on mobile)
|
|
230
|
+
Column 1: Logo + tagline + social icons
|
|
231
|
+
Columns 2-4: Link groups (Product, Company, Resources)
|
|
232
|
+
|
|
233
|
+
link group title:
|
|
234
|
+
font: var(--font-body), var(--text-sm), var(--weight-semibold)
|
|
235
|
+
color: var(--text-heading)
|
|
236
|
+
margin-bottom: var(--space-4)
|
|
237
|
+
|
|
238
|
+
links:
|
|
239
|
+
font: var(--text-sm), var(--text-secondary)
|
|
240
|
+
hover: var(--text-heading)
|
|
241
|
+
line-height: 2
|
|
242
|
+
|
|
243
|
+
BOTTOM BAR
|
|
244
|
+
border-top: 1px solid var(--border-subtle)
|
|
245
|
+
margin-top: var(--space-8)
|
|
246
|
+
padding-top: var(--space-6)
|
|
247
|
+
display: flex; justify-content: space-between
|
|
248
|
+
copyright: var(--text-xs), var(--text-muted)
|
|
249
|
+
legal links: var(--text-xs), var(--text-secondary)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Navigation (Websites)
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
STICKY HEADER
|
|
258
|
+
height: 72px
|
|
259
|
+
background: rgba(253, 252, 250, 0.85) /* bg-base with blur */
|
|
260
|
+
backdrop-filter: blur(12px)
|
|
261
|
+
border-bottom: 1px solid var(--border-subtle)
|
|
262
|
+
position: sticky; top: 0
|
|
263
|
+
z-index: var(--z-sticky)
|
|
264
|
+
|
|
265
|
+
logo (left): max-height 32px
|
|
266
|
+
nav links (center): var(--text-sm), var(--weight-medium), var(--text-secondary)
|
|
267
|
+
hover: var(--text-heading)
|
|
268
|
+
active: var(--text-heading) + subtle underline
|
|
269
|
+
CTA (right): Primary Button (compact variant)
|
|
270
|
+
|
|
271
|
+
MOBILE (< 768px)
|
|
272
|
+
hamburger icon → slide-in drawer from right
|
|
273
|
+
full-height, var(--bg-surface)
|
|
274
|
+
nav items stacked vertically
|
|
275
|
+
CTA at bottom of drawer
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Anti-Patterns (Never Do This)
|
|
281
|
+
|
|
282
|
+
1. **Generic hero:** Centered headline, two buttons, abstract gradient background. This is every AI-generated landing page.
|
|
283
|
+
2. **Icon grid features:** 6 features as icon + title + one-line description in a 3x2 grid. Lazy and undifferentiated.
|
|
284
|
+
3. **Blue accent on warm page:** Blue CTAs or links break the warm system. Use terracotta or sage.
|
|
285
|
+
4. **Stock photography without warm treatment:** Raw stock photos feel cold. Apply rounded corners, soft shadow, warm tint overlay if needed.
|
|
286
|
+
5. **Testimonials as afterthought:** Generic quote in a gray box at the bottom. Either make it editorial (serif, large) or skip it.
|
|
287
|
+
6. **Dense footer:** Footer should breathe like the rest of the page. Generous padding, warm background.
|
|
288
|
+
7. **Multiple CTAs competing:** One primary CTA per viewport. Secondary CTAs use Ghost or Secondary button style.
|
|
289
|
+
8. **Repeating the same layout:** If sections 2, 3, and 4 all use the same card grid, the page feels generated. Vary the composition.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: premium-visual-design
|
|
3
|
+
version: 2.1.0
|
|
4
|
+
description: Premium Visual Design System v2.1 — Dark-first design language for AIOSON Squad Dashboard. Provides tokens, patterns, and components for inter-squad UI: agent threads, dependency graphs, review workflows, notification center, team switcher. Use when building or reviewing any Squad Dashboard UI, inter-squad communication interface, or task/review workflow screens. Triggers on: "squad dashboard UI", "agent message thread", "task dependency", "hunk review", "notification center", "team switcher", "@mention", "review workflow".
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Premium Visual Design System v2.1
|
|
8
|
+
|
|
9
|
+
Design system for AIOSON Squad Dashboard v3 and inter-squad UI. Dark-first, density-optimized, terminal-adjacent aesthetic.
|
|
10
|
+
|
|
11
|
+
## What's in v2.1
|
|
12
|
+
|
|
13
|
+
### Additions in v2.1.0
|
|
14
|
+
- `tokens/status-extended.md` — blocked/ready/solo/auto/human/review state tokens
|
|
15
|
+
- `patterns/agent-message-thread.md` — inter-squad feed with @mentions and reactions
|
|
16
|
+
- `patterns/task-dependency-graph.md` — SVG-based DAG with zero external deps
|
|
17
|
+
- `patterns/review-workflow-ui.md` — hunk-level code review with approve/reject flow
|
|
18
|
+
- `patterns/notification-panel.md` — notification center with filters and grouping
|
|
19
|
+
- `components/team-switcher.md` — sidebar squad navigation component
|
|
20
|
+
- `components/mention-autocomplete.md` — @agent, @squad, #task autocomplete
|
|
21
|
+
- `components/notification-center.md` — bell icon + badge + dropdown panel
|
|
22
|
+
- `components/dependency-node.md` — individual DAG node component
|
|
23
|
+
- `components/review-action-bar.md` — approve/reject/comment action bar
|
|
24
|
+
- `components/agent-badge.md` — auto/human/solo agent type indicator
|
|
25
|
+
|
|
26
|
+
## Architecture
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
skills/premium-visual-design/
|
|
30
|
+
├── SKILL.md ← Router (this file)
|
|
31
|
+
├── tokens/
|
|
32
|
+
│ └── status-extended.md ← State & status color tokens
|
|
33
|
+
├── patterns/
|
|
34
|
+
│ ├── agent-message-thread.md ← Inter-squad message feed
|
|
35
|
+
│ ├── task-dependency-graph.md ← DAG visualization
|
|
36
|
+
│ ├── review-workflow-ui.md ← Review + diff + hunks
|
|
37
|
+
│ └── notification-panel.md ← Notification list with filters
|
|
38
|
+
└── components/
|
|
39
|
+
├── agent-badge.md ← Agent type badge
|
|
40
|
+
├── team-switcher.md ← Squad sidebar nav
|
|
41
|
+
├── mention-autocomplete.md ← @mention dropdown
|
|
42
|
+
├── notification-center.md ← Bell + badge + panel
|
|
43
|
+
├── dependency-node.md ← DAG node
|
|
44
|
+
└── review-action-bar.md ← Approve/reject bar
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Design Language
|
|
48
|
+
|
|
49
|
+
**Aesthetic**: Dark terminal-adjacent. Dense but not cluttered. Monospace accents.
|
|
50
|
+
|
|
51
|
+
**Color foundation** (CSS variables, dark theme):
|
|
52
|
+
```css
|
|
53
|
+
--bg: #0f1117; /* deep background */
|
|
54
|
+
--bg-card: #1a1d27; /* card surface */
|
|
55
|
+
--bg-hover: #222632; /* hover/elevated */
|
|
56
|
+
--border: #2a2e3a; /* subtle borders */
|
|
57
|
+
--text: #e1e4eb; /* primary text */
|
|
58
|
+
--text-muted: #8b8fa3; /* secondary text */
|
|
59
|
+
--accent: #6c8aff; /* primary accent (indigo) */
|
|
60
|
+
--accent-dim: rgba(108,138,255,0.15);
|
|
61
|
+
--success: #4ade80; /* green */
|
|
62
|
+
--warning: #fbbf24; /* amber */
|
|
63
|
+
--danger: #f87171; /* red */
|
|
64
|
+
--cyan: #22d3ee; /* cyan accent */
|
|
65
|
+
--purple: #c084fc; /* purple accent */
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Loading guide for agents
|
|
69
|
+
|
|
70
|
+
| Task | Load |
|
|
71
|
+
|------|------|
|
|
72
|
+
| Agent message feed | tokens/status-extended → components/agent-badge → components/mention-autocomplete → patterns/agent-message-thread |
|
|
73
|
+
| Task dependencies | tokens/status-extended → components/dependency-node → patterns/task-dependency-graph |
|
|
74
|
+
| Code review | tokens/status-extended → components/review-action-bar → patterns/review-workflow-ui |
|
|
75
|
+
| Notifications | tokens/status-extended → components/notification-center → patterns/notification-panel |
|
|
76
|
+
| Squad nav | tokens/status-extended → components/team-switcher |
|
|
77
|
+
| Full dashboard | Load all in order: tokens → components → patterns |
|
|
78
|
+
|
|
79
|
+
## Changelog
|
|
80
|
+
|
|
81
|
+
### v2.1.0 (2026-03-24)
|
|
82
|
+
- Added 11 new artefacts: 1 token file, 4 patterns, 6 components
|
|
83
|
+
- All artefacts target Squad Dashboard v3 (PRD 19.2) and inter-squad communication UI
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Agent Badge Component
|
|
2
|
+
|
|
3
|
+
Visual badge identifying the execution type of an agent: `auto`, `human`, or `solo`.
|
|
4
|
+
|
|
5
|
+
## Anatomy
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
9
|
+
│ ⚡ auto │ │ 👤 human │ │ ◆ solo │
|
|
10
|
+
└──────────┘ └──────────┘ └──────────┘
|
|
11
|
+
cyan amber muted
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Types
|
|
15
|
+
|
|
16
|
+
| Type | Icon | Color token | Meaning |
|
|
17
|
+
|------|------|------------|---------|
|
|
18
|
+
| `auto` | ⚡ | `--state-auto` (#22d3ee) | Fully autonomous — no human gates |
|
|
19
|
+
| `human` | 👤 | `--state-human` (#fbbf24) | Human-in-the-loop agent |
|
|
20
|
+
| `solo` | ◆ | `--state-solo` (#8b8fa3) | Single agent, no squad context |
|
|
21
|
+
|
|
22
|
+
## Sizes
|
|
23
|
+
|
|
24
|
+
| Size class | Height | Font |
|
|
25
|
+
|-----------|--------|------|
|
|
26
|
+
| `sm` | 18px | 10px |
|
|
27
|
+
| (default) | 24px | 12px |
|
|
28
|
+
| `lg` | 32px | 14px |
|
|
29
|
+
|
|
30
|
+
## CSS
|
|
31
|
+
|
|
32
|
+
```css
|
|
33
|
+
.agent-badge {
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
gap: 4px;
|
|
37
|
+
padding: 2px 8px;
|
|
38
|
+
border-radius: 4px;
|
|
39
|
+
font-size: 12px;
|
|
40
|
+
font-weight: 500;
|
|
41
|
+
border: 1px solid transparent;
|
|
42
|
+
white-space: nowrap;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.agent-badge-auto {
|
|
46
|
+
background: rgba(34, 211, 238, 0.12);
|
|
47
|
+
color: var(--state-auto, #22d3ee);
|
|
48
|
+
border-color: rgba(34, 211, 238, 0.25);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.agent-badge-human {
|
|
52
|
+
background: rgba(251, 191, 36, 0.12);
|
|
53
|
+
color: var(--state-human, #fbbf24);
|
|
54
|
+
border-color: rgba(251, 191, 36, 0.25);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.agent-badge-solo {
|
|
58
|
+
background: rgba(139, 143, 163, 0.12);
|
|
59
|
+
color: var(--state-solo, #8b8fa3);
|
|
60
|
+
border-color: rgba(139, 143, 163, 0.25);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Sizes */
|
|
64
|
+
.agent-badge.sm { padding: 1px 6px; font-size: 10px; }
|
|
65
|
+
.agent-badge.lg { padding: 4px 12px; font-size: 14px; }
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## HTML Examples
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<!-- Default sizes -->
|
|
72
|
+
<span class="agent-badge agent-badge-auto">⚡ auto</span>
|
|
73
|
+
<span class="agent-badge agent-badge-human">👤 human</span>
|
|
74
|
+
<span class="agent-badge agent-badge-solo">◆ solo</span>
|
|
75
|
+
|
|
76
|
+
<!-- Small (in team-switcher or compact lists) -->
|
|
77
|
+
<span class="agent-badge agent-badge-auto sm">⚡</span>
|
|
78
|
+
|
|
79
|
+
<!-- Large (agent profile header) -->
|
|
80
|
+
<span class="agent-badge agent-badge-human lg">👤 human-gate</span>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Usage in context
|
|
84
|
+
|
|
85
|
+
**In agent card header**: place badge after agent name, same line.
|
|
86
|
+
```html
|
|
87
|
+
<h4>planner <span class="agent-badge agent-badge-auto sm">⚡ auto</span></h4>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**In team-switcher**: use `sm` to avoid crowding the sidebar item.
|
|
91
|
+
|
|
92
|
+
**In process list**: show alongside agent slug in the Processes tab.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Dependency Node Component
|
|
2
|
+
|
|
3
|
+
Individual node in the task dependency graph. Rendered as an SVG `<g>` element.
|
|
4
|
+
|
|
5
|
+
## Dimensions
|
|
6
|
+
|
|
7
|
+
- Width: `120px`
|
|
8
|
+
- Height: `44px`
|
|
9
|
+
- Corner radius: `6px`
|
|
10
|
+
- Status bar: left `4px` wide, full height
|
|
11
|
+
|
|
12
|
+
## Anatomy
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
┌─┬────────────────────────┐
|
|
16
|
+
│█│ write-prd [▶] │ ← task slug + status icon (right)
|
|
17
|
+
│█│ planner │ ← agent slug (muted, smaller)
|
|
18
|
+
└─┴────────────────────────┘
|
|
19
|
+
↑ 4px status bar (color by state)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## SVG Structure
|
|
23
|
+
|
|
24
|
+
```svg
|
|
25
|
+
<g class="dep-node" data-status="running" data-task="write-prd">
|
|
26
|
+
<!-- Background rect -->
|
|
27
|
+
<rect width="120" height="44" rx="6"
|
|
28
|
+
fill="#1a1d27" stroke="#2a2e3a" stroke-width="1"/>
|
|
29
|
+
|
|
30
|
+
<!-- Status bar (left edge) -->
|
|
31
|
+
<rect width="4" height="44" rx="2"
|
|
32
|
+
fill="#6c8aff"/> <!-- color changes by status -->
|
|
33
|
+
|
|
34
|
+
<!-- Task slug -->
|
|
35
|
+
<text x="16" y="18"
|
|
36
|
+
font-size="12" font-weight="600" fill="#e1e4eb"
|
|
37
|
+
font-family="monospace">write-prd</text>
|
|
38
|
+
|
|
39
|
+
<!-- Agent label -->
|
|
40
|
+
<text x="16" y="32"
|
|
41
|
+
font-size="10" fill="#8b8fa3"
|
|
42
|
+
font-family="monospace">planner</text>
|
|
43
|
+
|
|
44
|
+
<!-- Status label (right side) -->
|
|
45
|
+
<text x="112" y="18"
|
|
46
|
+
font-size="9" fill="#6c8aff"
|
|
47
|
+
text-anchor="end">running</text>
|
|
48
|
+
|
|
49
|
+
<!-- Connector port — left (incoming edges) -->
|
|
50
|
+
<circle cx="0" cy="22" r="3" fill="#2a2e3a" stroke="#6c8aff" stroke-width="1"/>
|
|
51
|
+
|
|
52
|
+
<!-- Connector port — right (outgoing edges) -->
|
|
53
|
+
<circle cx="120" cy="22" r="3" fill="#2a2e3a" stroke="#6c8aff" stroke-width="1"/>
|
|
54
|
+
</g>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Status Bar Colors
|
|
58
|
+
|
|
59
|
+
Map from `status-extended.md` tokens:
|
|
60
|
+
|
|
61
|
+
| Status | Color | Hex |
|
|
62
|
+
|--------|-------|-----|
|
|
63
|
+
| `pending` | `--state-idle` | `#8b8fa3` |
|
|
64
|
+
| `ready` | `--state-ready` | `#4ade80` |
|
|
65
|
+
| `running` | `--state-running` | `#6c8aff` |
|
|
66
|
+
| `blocked` | `--state-blocked` | `#f87171` |
|
|
67
|
+
| `done` | `--state-done` | `#4ade80` |
|
|
68
|
+
| `error` | `--state-error` | `#f87171` |
|
|
69
|
+
| `review` | `--state-review` | `#c084fc` |
|
|
70
|
+
|
|
71
|
+
## CSS (applied to SVG via class)
|
|
72
|
+
|
|
73
|
+
```css
|
|
74
|
+
.dep-node rect:first-of-type {
|
|
75
|
+
transition: stroke 0.15s, stroke-width 0.15s;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.dep-node:hover rect:first-of-type {
|
|
79
|
+
stroke: var(--accent);
|
|
80
|
+
stroke-width: 1.5;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.dep-node.selected rect:first-of-type {
|
|
84
|
+
stroke: var(--accent);
|
|
85
|
+
stroke-width: 2;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.dep-node { cursor: pointer; }
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Connector Ports
|
|
92
|
+
|
|
93
|
+
Ports are small circles at `(0, 22)` (left, for incoming) and `(120, 22)` (right, outgoing). Show on hover using CSS opacity:
|
|
94
|
+
|
|
95
|
+
```css
|
|
96
|
+
.dep-node circle { opacity: 0; transition: opacity 0.15s; }
|
|
97
|
+
.dep-node:hover circle { opacity: 1; }
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Usage
|
|
101
|
+
|
|
102
|
+
Used inside the task dependency graph pattern (`task-dependency-graph.md`). Each node is a `<g>` positioned by the layout algorithm at `transform="translate(x, y)"`.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Mention Autocomplete Component
|
|
2
|
+
|
|
3
|
+
Dropdown that appears when typing `@` (agents/squads) or `#` (tasks) in any text input.
|
|
4
|
+
|
|
5
|
+
## Anatomy
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─ @write ──────────────────────────┐
|
|
9
|
+
│ Agents │
|
|
10
|
+
│ ● writer alpha-squad │ ← highlighted (keyboard/hover)
|
|
11
|
+
│ planner alpha-squad │
|
|
12
|
+
│ Squads │
|
|
13
|
+
│ bravo-squad │
|
|
14
|
+
└────────────────────────────────────┘
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Trigger rules
|
|
18
|
+
|
|
19
|
+
| Character | Shows | Groups |
|
|
20
|
+
|-----------|-------|--------|
|
|
21
|
+
| `@` | Agents, then Squads | "Agents" / "Squads" |
|
|
22
|
+
| `#` | Tasks | "Tasks" |
|
|
23
|
+
|
|
24
|
+
Filter list in real-time as user types after the trigger character.
|
|
25
|
+
|
|
26
|
+
## HTML Structure
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<div class="mention-dropdown" id="mention-dropdown" hidden>
|
|
30
|
+
<!-- Agents group -->
|
|
31
|
+
<div class="mention-group-label">Agents</div>
|
|
32
|
+
<div class="mention-item selected" data-value="@writer" tabindex="-1">
|
|
33
|
+
<span class="mention-item-icon">🤖</span>
|
|
34
|
+
<span class="mention-item-name">writer</span>
|
|
35
|
+
<span class="mention-item-sub">alpha-squad</span>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="mention-item" data-value="@planner" tabindex="-1">
|
|
38
|
+
<span class="mention-item-icon">🤖</span>
|
|
39
|
+
<span class="mention-item-name">planner</span>
|
|
40
|
+
<span class="mention-item-sub">alpha-squad</span>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- Squads group -->
|
|
44
|
+
<div class="mention-group-label">Squads</div>
|
|
45
|
+
<div class="mention-item" data-value="@bravo-squad" tabindex="-1">
|
|
46
|
+
<span class="mention-item-icon">👥</span>
|
|
47
|
+
<span class="mention-item-name">bravo-squad</span>
|
|
48
|
+
<span class="mention-item-sub">squad</span>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## CSS
|
|
54
|
+
|
|
55
|
+
```css
|
|
56
|
+
.mention-dropdown {
|
|
57
|
+
position: absolute;
|
|
58
|
+
background: var(--bg-card);
|
|
59
|
+
border: 1px solid var(--border);
|
|
60
|
+
border-radius: 6px;
|
|
61
|
+
width: 260px;
|
|
62
|
+
max-height: 240px;
|
|
63
|
+
overflow-y: auto;
|
|
64
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
65
|
+
z-index: 1000;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.mention-group-label {
|
|
69
|
+
font-size: 10px;
|
|
70
|
+
text-transform: uppercase;
|
|
71
|
+
color: var(--text-muted);
|
|
72
|
+
padding: 6px 12px 2px;
|
|
73
|
+
letter-spacing: 0.4px;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.mention-item {
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
gap: 8px;
|
|
80
|
+
padding: 7px 12px;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
font-size: 13px;
|
|
83
|
+
transition: background 0.1s;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.mention-item:hover,
|
|
87
|
+
.mention-item.selected {
|
|
88
|
+
background: var(--accent-dim);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.mention-item-icon {
|
|
92
|
+
font-size: 14px;
|
|
93
|
+
flex-shrink: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.mention-item-name {
|
|
97
|
+
font-weight: 500;
|
|
98
|
+
flex: 1;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.mention-item-sub {
|
|
102
|
+
font-size: 11px;
|
|
103
|
+
color: var(--text-muted);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Keyboard navigation (JS spec)
|
|
108
|
+
|
|
109
|
+
1. `@` or `#` typed in the input → show dropdown, filter to matching items
|
|
110
|
+
2. `ArrowDown` / `ArrowUp` → move `.selected` class between `.mention-item` rows
|
|
111
|
+
3. `Enter` → insert selected item's `data-value` + trailing space into the input, close dropdown
|
|
112
|
+
4. `Escape` → close dropdown without inserting
|
|
113
|
+
5. Click on `.mention-item` → same as Enter
|
|
114
|
+
6. Any non-matching char → re-filter, hide if no results
|
|
115
|
+
|
|
116
|
+
## Resulting inline markup
|
|
117
|
+
|
|
118
|
+
After insertion, wrap the mention in a `<span>`:
|
|
119
|
+
|
|
120
|
+
```html
|
|
121
|
+
<!-- Agent mention -->
|
|
122
|
+
<span class="mention mention-agent" data-slug="writer">@writer</span>
|
|
123
|
+
|
|
124
|
+
<!-- Squad mention -->
|
|
125
|
+
<span class="mention mention-squad" data-slug="bravo-squad">@bravo-squad</span>
|
|
126
|
+
|
|
127
|
+
<!-- Task mention -->
|
|
128
|
+
<span class="mention mention-task" data-slug="write-prd">#write-prd</span>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
```css
|
|
132
|
+
.mention { padding: 1px 4px; border-radius: 3px; font-weight: 500; }
|
|
133
|
+
.mention-agent { background: var(--accent-dim); color: var(--accent); }
|
|
134
|
+
.mention-squad { background: rgba(34,211,238,0.10); color: var(--cyan, #22d3ee); }
|
|
135
|
+
.mention-task { background: rgba(192,132,252,0.10); color: var(--purple, #c084fc); }
|
|
136
|
+
```
|