@aexol/spectral 0.9.269 → 0.9.271
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/dist/agent/index.d.ts +10 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +26 -10
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +29 -5
- package/dist/commands/update.d.ts +2 -2
- package/dist/commands/update.js +3 -3
- package/dist/designer/index.d.ts +13 -18
- package/dist/designer/index.d.ts.map +1 -1
- package/dist/designer/index.js +128 -201
- package/dist/extensions/aexol-mcp.d.ts.map +1 -1
- package/dist/extensions/aexol-mcp.js +23 -0
- package/dist/extensions/dataset-uploader/cleaner.js +1 -1
- package/dist/extensions/dataset-uploader/scrubber.d.ts +2 -0
- package/dist/extensions/dataset-uploader/scrubber.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/scrubber.js +30 -1
- package/dist/generated/zeus/index.d.ts +0 -4
- package/dist/generated/zeus/index.d.ts.map +1 -1
- package/dist/memory/debug-log.d.ts.map +1 -1
- package/dist/memory/debug-log.js +20 -2
- package/dist/memory/tools/compact-context.d.ts +1 -1
- package/dist/memory/tools/compact-context.d.ts.map +1 -1
- package/dist/memory/tools/compact-context.js +4 -1
- package/dist/memory/tools/recall-observation.d.ts +3 -3
- package/dist/memory/tools/recall-observation.d.ts.map +1 -1
- package/dist/memory/tools/recall-observation.js +4 -1
- package/dist/memory/tools/receive-agent-observations.d.ts +3 -3
- package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
- package/dist/memory/tools/receive-agent-observations.js +4 -1
- package/dist/memory/tools/share-project-observation.d.ts +3 -3
- package/dist/memory/tools/share-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/share-project-observation.js +4 -1
- package/dist/memory/tools/write-project-observation.d.ts +3 -3
- package/dist/memory/tools/write-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/write-project-observation.js +4 -1
- package/dist/relay/client.d.ts.map +1 -1
- package/dist/relay/client.js +5 -2
- package/dist/sdk/ai/env-api-keys.js +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.js +31 -3
- package/dist/sdk/coding-agent/core/theme.js +1 -1
- package/dist/server/handlers/agent-settings.d.ts.map +1 -1
- package/dist/server/handlers/agent-settings.js +4 -1
- package/dist/server/handlers/settings-lock.d.ts.map +1 -1
- package/dist/server/handlers/settings-lock.js +4 -1
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +13 -1
- package/dist/utils/serve-state.d.ts +17 -0
- package/dist/utils/serve-state.d.ts.map +1 -1
- package/dist/utils/serve-state.js +73 -0
- package/package.json +1 -1
- package/dist/designer/data/skills/blog-post.d.ts +0 -3
- package/dist/designer/data/skills/blog-post.d.ts.map +0 -1
- package/dist/designer/data/skills/blog-post.js +0 -84
- package/dist/designer/data/skills/blog-post.ts +0 -87
- package/dist/designer/data/skills/critique.d.ts +0 -3
- package/dist/designer/data/skills/critique.d.ts.map +0 -1
- package/dist/designer/data/skills/critique.js +0 -109
- package/dist/designer/data/skills/critique.ts +0 -112
- package/dist/designer/data/skills/dashboard.d.ts +0 -3
- package/dist/designer/data/skills/dashboard.d.ts.map +0 -1
- package/dist/designer/data/skills/dashboard.js +0 -165
- package/dist/designer/data/skills/dashboard.ts +0 -168
- package/dist/designer/data/skills/design-brief.d.ts +0 -3
- package/dist/designer/data/skills/design-brief.d.ts.map +0 -1
- package/dist/designer/data/skills/design-brief.js +0 -141
- package/dist/designer/data/skills/design-brief.ts +0 -144
- package/dist/designer/data/skills/design-skill.d.ts +0 -10
- package/dist/designer/data/skills/design-skill.d.ts.map +0 -1
- package/dist/designer/data/skills/design-skill.js +0 -1
- package/dist/designer/data/skills/design-skill.ts +0 -9
- package/dist/designer/data/skills/docs-page.d.ts +0 -3
- package/dist/designer/data/skills/docs-page.d.ts.map +0 -1
- package/dist/designer/data/skills/docs-page.js +0 -68
- package/dist/designer/data/skills/docs-page.ts +0 -71
- package/dist/designer/data/skills/index.d.ts +0 -3
- package/dist/designer/data/skills/index.d.ts.map +0 -1
- package/dist/designer/data/skills/index.js +0 -28
- package/dist/designer/data/skills/index.ts +0 -30
- package/dist/designer/data/skills/magazine-poster.d.ts +0 -3
- package/dist/designer/data/skills/magazine-poster.d.ts.map +0 -1
- package/dist/designer/data/skills/magazine-poster.js +0 -70
- package/dist/designer/data/skills/magazine-poster.ts +0 -73
- package/dist/designer/data/skills/mobile-app.d.ts +0 -3
- package/dist/designer/data/skills/mobile-app.d.ts.map +0 -1
- package/dist/designer/data/skills/mobile-app.js +0 -229
- package/dist/designer/data/skills/mobile-app.ts +0 -232
- package/dist/designer/data/skills/motion-frames.d.ts +0 -3
- package/dist/designer/data/skills/motion-frames.d.ts.map +0 -1
- package/dist/designer/data/skills/motion-frames.js +0 -121
- package/dist/designer/data/skills/motion-frames.ts +0 -124
- package/dist/designer/data/skills/pricing-page.d.ts +0 -3
- package/dist/designer/data/skills/pricing-page.d.ts.map +0 -1
- package/dist/designer/data/skills/pricing-page.js +0 -76
- package/dist/designer/data/skills/pricing-page.ts +0 -79
- package/dist/designer/data/skills/saas-landing.d.ts +0 -3
- package/dist/designer/data/skills/saas-landing.d.ts.map +0 -1
- package/dist/designer/data/skills/saas-landing.js +0 -71
- package/dist/designer/data/skills/saas-landing.ts +0 -74
- package/dist/designer/data/skills/slide-deck.d.ts +0 -3
- package/dist/designer/data/skills/slide-deck.d.ts.map +0 -1
- package/dist/designer/data/skills/slide-deck.js +0 -213
- package/dist/designer/data/skills/slide-deck.ts +0 -216
- package/dist/designer/data/skills/social-carousel.d.ts +0 -3
- package/dist/designer/data/skills/social-carousel.d.ts.map +0 -1
- package/dist/designer/data/skills/social-carousel.js +0 -135
- package/dist/designer/data/skills/social-carousel.ts +0 -138
- package/dist/designer/data/skills/web-prototype.d.ts +0 -3
- package/dist/designer/data/skills/web-prototype.d.ts.map +0 -1
- package/dist/designer/data/skills/web-prototype.js +0 -159
- package/dist/designer/data/skills/web-prototype.ts +0 -162
- package/dist/designer/data/systems/agentic/DESIGN.md +0 -71
- package/dist/designer/data/systems/agentic/components.html +0 -154
- package/dist/designer/data/systems/agentic/tokens.css +0 -63
- package/dist/designer/data/systems/airbnb/DESIGN.md +0 -393
- package/dist/designer/data/systems/airbnb/components.html +0 -1373
- package/dist/designer/data/systems/airbnb/tokens.css +0 -261
- package/dist/designer/data/systems/airtable/DESIGN.md +0 -92
- package/dist/designer/data/systems/airtable/components.html +0 -489
- package/dist/designer/data/systems/airtable/tokens.css +0 -261
- package/dist/designer/data/systems/ant/DESIGN.md +0 -71
- package/dist/designer/data/systems/ant/components.html +0 -154
- package/dist/designer/data/systems/ant/tokens.css +0 -63
- package/dist/designer/data/systems/apple/DESIGN.md +0 -250
- package/dist/designer/data/systems/apple/components.html +0 -749
- package/dist/designer/data/systems/apple/tokens.css +0 -286
- package/dist/designer/data/systems/application/DESIGN.md +0 -71
- package/dist/designer/data/systems/application/components.html +0 -154
- package/dist/designer/data/systems/application/tokens.css +0 -63
- package/dist/designer/data/systems/arc/DESIGN.md +0 -152
- package/dist/designer/data/systems/arc/components.html +0 -432
- package/dist/designer/data/systems/arc/tokens.css +0 -137
- package/dist/designer/data/systems/artistic/DESIGN.md +0 -71
- package/dist/designer/data/systems/artistic/components.html +0 -136
- package/dist/designer/data/systems/artistic/tokens.css +0 -63
- package/dist/designer/data/systems/atelier-zero/DESIGN.md +0 -316
- package/dist/designer/data/systems/atelier-zero/components.html +0 -136
- package/dist/designer/data/systems/atelier-zero/tokens.css +0 -63
- package/dist/designer/data/systems/bento/DESIGN.md +0 -71
- package/dist/designer/data/systems/bento/components.html +0 -136
- package/dist/designer/data/systems/bento/tokens.css +0 -63
- package/dist/designer/data/systems/binance/DESIGN.md +0 -348
- package/dist/designer/data/systems/binance/components.html +0 -550
- package/dist/designer/data/systems/binance/tokens.css +0 -255
- package/dist/designer/data/systems/bmw/DESIGN.md +0 -183
- package/dist/designer/data/systems/bmw/components.html +0 -551
- package/dist/designer/data/systems/bmw/tokens.css +0 -179
- package/dist/designer/data/systems/bmw-m/DESIGN.md +0 -246
- package/dist/designer/data/systems/bmw-m/components.html +0 -342
- package/dist/designer/data/systems/bmw-m/tokens.css +0 -64
- package/dist/designer/data/systems/bold/DESIGN.md +0 -71
- package/dist/designer/data/systems/bold/components.html +0 -136
- package/dist/designer/data/systems/bold/tokens.css +0 -63
- package/dist/designer/data/systems/brutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/brutalism/components.html +0 -154
- package/dist/designer/data/systems/brutalism/tokens.css +0 -63
- package/dist/designer/data/systems/bugatti/DESIGN.md +0 -271
- package/dist/designer/data/systems/bugatti/components.html +0 -342
- package/dist/designer/data/systems/bugatti/tokens.css +0 -64
- package/dist/designer/data/systems/cafe/DESIGN.md +0 -71
- package/dist/designer/data/systems/cafe/components.html +0 -136
- package/dist/designer/data/systems/cafe/tokens.css +0 -63
- package/dist/designer/data/systems/cal/DESIGN.md +0 -262
- package/dist/designer/data/systems/cal/components.html +0 -376
- package/dist/designer/data/systems/cal/tokens.css +0 -265
- package/dist/designer/data/systems/canva/DESIGN.md +0 -157
- package/dist/designer/data/systems/canva/components.html +0 -461
- package/dist/designer/data/systems/canva/tokens.css +0 -147
- package/dist/designer/data/systems/cisco/DESIGN.md +0 -201
- package/dist/designer/data/systems/cisco/components.html +0 -342
- package/dist/designer/data/systems/cisco/tokens.css +0 -64
- package/dist/designer/data/systems/claude/DESIGN.md +0 -315
- package/dist/designer/data/systems/claude/components.html +0 -483
- package/dist/designer/data/systems/claude/tokens.css +0 -130
- package/dist/designer/data/systems/clay/DESIGN.md +0 -307
- package/dist/designer/data/systems/clay/components.html +0 -136
- package/dist/designer/data/systems/clay/tokens.css +0 -63
- package/dist/designer/data/systems/claymorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/claymorphism/components.html +0 -136
- package/dist/designer/data/systems/claymorphism/tokens.css +0 -63
- package/dist/designer/data/systems/clean/DESIGN.md +0 -71
- package/dist/designer/data/systems/clean/components.html +0 -136
- package/dist/designer/data/systems/clean/tokens.css +0 -63
- package/dist/designer/data/systems/clickhouse/DESIGN.md +0 -284
- package/dist/designer/data/systems/clickhouse/components.html +0 -506
- package/dist/designer/data/systems/clickhouse/tokens.css +0 -135
- package/dist/designer/data/systems/cohere/DESIGN.md +0 -269
- package/dist/designer/data/systems/cohere/components.html +0 -353
- package/dist/designer/data/systems/cohere/tokens.css +0 -126
- package/dist/designer/data/systems/coinbase/DESIGN.md +0 -132
- package/dist/designer/data/systems/coinbase/components.html +0 -501
- package/dist/designer/data/systems/coinbase/tokens.css +0 -257
- package/dist/designer/data/systems/colorful/DESIGN.md +0 -71
- package/dist/designer/data/systems/colorful/components.html +0 -136
- package/dist/designer/data/systems/colorful/tokens.css +0 -63
- package/dist/designer/data/systems/composio/DESIGN.md +0 -310
- package/dist/designer/data/systems/composio/components.html +0 -342
- package/dist/designer/data/systems/composio/tokens.css +0 -64
- package/dist/designer/data/systems/contemporary/DESIGN.md +0 -71
- package/dist/designer/data/systems/contemporary/components.html +0 -136
- package/dist/designer/data/systems/contemporary/tokens.css +0 -63
- package/dist/designer/data/systems/corporate/DESIGN.md +0 -71
- package/dist/designer/data/systems/corporate/components.html +0 -136
- package/dist/designer/data/systems/corporate/tokens.css +0 -63
- package/dist/designer/data/systems/cosmic/DESIGN.md +0 -71
- package/dist/designer/data/systems/cosmic/components.html +0 -136
- package/dist/designer/data/systems/cosmic/tokens.css +0 -63
- package/dist/designer/data/systems/creative/DESIGN.md +0 -71
- package/dist/designer/data/systems/creative/components.html +0 -136
- package/dist/designer/data/systems/creative/tokens.css +0 -63
- package/dist/designer/data/systems/cursor/DESIGN.md +0 -312
- package/dist/designer/data/systems/cursor/components.html +0 -654
- package/dist/designer/data/systems/cursor/tokens.css +0 -218
- package/dist/designer/data/systems/dashboard/DESIGN.md +0 -71
- package/dist/designer/data/systems/dashboard/components.html +0 -154
- package/dist/designer/data/systems/dashboard/tokens.css +0 -63
- package/dist/designer/data/systems/default/DESIGN.md +0 -62
- package/dist/designer/data/systems/default/components.html +0 -523
- package/dist/designer/data/systems/default/tokens.css +0 -200
- package/dist/designer/data/systems/discord/DESIGN.md +0 -162
- package/dist/designer/data/systems/discord/components.html +0 -359
- package/dist/designer/data/systems/discord/tokens.css +0 -125
- package/dist/designer/data/systems/dithered/DESIGN.md +0 -71
- package/dist/designer/data/systems/dithered/components.html +0 -136
- package/dist/designer/data/systems/dithered/tokens.css +0 -63
- package/dist/designer/data/systems/doodle/DESIGN.md +0 -71
- package/dist/designer/data/systems/doodle/components.html +0 -136
- package/dist/designer/data/systems/doodle/tokens.css +0 -63
- package/dist/designer/data/systems/dramatic/DESIGN.md +0 -71
- package/dist/designer/data/systems/dramatic/components.html +0 -136
- package/dist/designer/data/systems/dramatic/tokens.css +0 -63
- package/dist/designer/data/systems/duolingo/DESIGN.md +0 -154
- package/dist/designer/data/systems/duolingo/components.html +0 -532
- package/dist/designer/data/systems/duolingo/tokens.css +0 -130
- package/dist/designer/data/systems/editorial/DESIGN.md +0 -71
- package/dist/designer/data/systems/editorial/components.html +0 -154
- package/dist/designer/data/systems/editorial/tokens.css +0 -63
- package/dist/designer/data/systems/elegant/DESIGN.md +0 -71
- package/dist/designer/data/systems/elegant/components.html +0 -136
- package/dist/designer/data/systems/elegant/tokens.css +0 -63
- package/dist/designer/data/systems/elevenlabs/DESIGN.md +0 -268
- package/dist/designer/data/systems/elevenlabs/components.html +0 -342
- package/dist/designer/data/systems/elevenlabs/tokens.css +0 -127
- package/dist/designer/data/systems/energetic/DESIGN.md +0 -72
- package/dist/designer/data/systems/energetic/components.html +0 -136
- package/dist/designer/data/systems/energetic/tokens.css +0 -63
- package/dist/designer/data/systems/enterprise/DESIGN.md +0 -71
- package/dist/designer/data/systems/enterprise/components.html +0 -154
- package/dist/designer/data/systems/enterprise/tokens.css +0 -63
- package/dist/designer/data/systems/expo/DESIGN.md +0 -284
- package/dist/designer/data/systems/expo/components.html +0 -342
- package/dist/designer/data/systems/expo/tokens.css +0 -64
- package/dist/designer/data/systems/expressive/DESIGN.md +0 -71
- package/dist/designer/data/systems/expressive/components.html +0 -136
- package/dist/designer/data/systems/expressive/tokens.css +0 -63
- package/dist/designer/data/systems/fantasy/DESIGN.md +0 -71
- package/dist/designer/data/systems/fantasy/components.html +0 -136
- package/dist/designer/data/systems/fantasy/tokens.css +0 -63
- package/dist/designer/data/systems/ferrari/DESIGN.md +0 -317
- package/dist/designer/data/systems/ferrari/components.html +0 -342
- package/dist/designer/data/systems/ferrari/tokens.css +0 -64
- package/dist/designer/data/systems/figma/DESIGN.md +0 -223
- package/dist/designer/data/systems/figma/components.html +0 -344
- package/dist/designer/data/systems/figma/tokens.css +0 -126
- package/dist/designer/data/systems/flat/DESIGN.md +0 -71
- package/dist/designer/data/systems/flat/components.html +0 -136
- package/dist/designer/data/systems/flat/tokens.css +0 -63
- package/dist/designer/data/systems/framer/DESIGN.md +0 -249
- package/dist/designer/data/systems/framer/components.html +0 -438
- package/dist/designer/data/systems/framer/tokens.css +0 -238
- package/dist/designer/data/systems/friendly/DESIGN.md +0 -71
- package/dist/designer/data/systems/friendly/components.html +0 -136
- package/dist/designer/data/systems/friendly/tokens.css +0 -63
- package/dist/designer/data/systems/futuristic/DESIGN.md +0 -71
- package/dist/designer/data/systems/futuristic/components.html +0 -136
- package/dist/designer/data/systems/futuristic/tokens.css +0 -63
- package/dist/designer/data/systems/github/DESIGN.md +0 -155
- package/dist/designer/data/systems/github/components.html +0 -383
- package/dist/designer/data/systems/github/tokens.css +0 -125
- package/dist/designer/data/systems/glassmorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/glassmorphism/components.html +0 -154
- package/dist/designer/data/systems/glassmorphism/tokens.css +0 -63
- package/dist/designer/data/systems/gradient/DESIGN.md +0 -71
- package/dist/designer/data/systems/gradient/components.html +0 -154
- package/dist/designer/data/systems/gradient/tokens.css +0 -63
- package/dist/designer/data/systems/hashicorp/DESIGN.md +0 -281
- package/dist/designer/data/systems/hashicorp/components.html +0 -502
- package/dist/designer/data/systems/hashicorp/tokens.css +0 -272
- package/dist/designer/data/systems/hud/DESIGN.md +0 -173
- package/dist/designer/data/systems/hud/components.html +0 -136
- package/dist/designer/data/systems/hud/tokens.css +0 -63
- package/dist/designer/data/systems/huggingface/DESIGN.md +0 -149
- package/dist/designer/data/systems/huggingface/components.html +0 -346
- package/dist/designer/data/systems/huggingface/tokens.css +0 -125
- package/dist/designer/data/systems/ibm/DESIGN.md +0 -335
- package/dist/designer/data/systems/ibm/components.html +0 -342
- package/dist/designer/data/systems/ibm/tokens.css +0 -64
- package/dist/designer/data/systems/intercom/DESIGN.md +0 -149
- package/dist/designer/data/systems/intercom/components.html +0 -557
- package/dist/designer/data/systems/intercom/tokens.css +0 -150
- package/dist/designer/data/systems/kami/DESIGN.md +0 -410
- package/dist/designer/data/systems/kami/components.html +0 -601
- package/dist/designer/data/systems/kami/tokens.css +0 -272
- package/dist/designer/data/systems/kraken/DESIGN.md +0 -128
- package/dist/designer/data/systems/kraken/components.html +0 -342
- package/dist/designer/data/systems/kraken/tokens.css +0 -64
- package/dist/designer/data/systems/lamborghini/DESIGN.md +0 -291
- package/dist/designer/data/systems/lamborghini/components.html +0 -342
- package/dist/designer/data/systems/lamborghini/tokens.css +0 -64
- package/dist/designer/data/systems/levels/DESIGN.md +0 -71
- package/dist/designer/data/systems/levels/components.html +0 -154
- package/dist/designer/data/systems/levels/tokens.css +0 -63
- package/dist/designer/data/systems/linear-app/DESIGN.md +0 -370
- package/dist/designer/data/systems/linear-app/components.html +0 -370
- package/dist/designer/data/systems/linear-app/tokens.css +0 -130
- package/dist/designer/data/systems/lingo/DESIGN.md +0 -71
- package/dist/designer/data/systems/lingo/components.html +0 -154
- package/dist/designer/data/systems/lingo/tokens.css +0 -63
- package/dist/designer/data/systems/loom/DESIGN.md +0 -201
- package/dist/designer/data/systems/loom/components.html +0 -446
- package/dist/designer/data/systems/loom/tokens.css +0 -138
- package/dist/designer/data/systems/lovable/DESIGN.md +0 -301
- package/dist/designer/data/systems/lovable/components.html +0 -441
- package/dist/designer/data/systems/lovable/tokens.css +0 -258
- package/dist/designer/data/systems/luxury/DESIGN.md +0 -71
- package/dist/designer/data/systems/luxury/components.html +0 -154
- package/dist/designer/data/systems/luxury/tokens.css +0 -63
- package/dist/designer/data/systems/mastercard/DESIGN.md +0 -368
- package/dist/designer/data/systems/mastercard/components.html +0 -342
- package/dist/designer/data/systems/mastercard/tokens.css +0 -64
- package/dist/designer/data/systems/material/DESIGN.md +0 -71
- package/dist/designer/data/systems/material/components.html +0 -154
- package/dist/designer/data/systems/material/tokens.css +0 -63
- package/dist/designer/data/systems/meta/DESIGN.md +0 -369
- package/dist/designer/data/systems/meta/components.html +0 -398
- package/dist/designer/data/systems/meta/tokens.css +0 -263
- package/dist/designer/data/systems/minimal/DESIGN.md +0 -71
- package/dist/designer/data/systems/minimal/components.html +0 -154
- package/dist/designer/data/systems/minimal/tokens.css +0 -63
- package/dist/designer/data/systems/minimax/DESIGN.md +0 -260
- package/dist/designer/data/systems/minimax/components.html +0 -590
- package/dist/designer/data/systems/minimax/tokens.css +0 -148
- package/dist/designer/data/systems/mintlify/DESIGN.md +0 -329
- package/dist/designer/data/systems/mintlify/components.html +0 -737
- package/dist/designer/data/systems/mintlify/tokens.css +0 -256
- package/dist/designer/data/systems/miro/DESIGN.md +0 -111
- package/dist/designer/data/systems/miro/components.html +0 -342
- package/dist/designer/data/systems/miro/tokens.css +0 -64
- package/dist/designer/data/systems/mission-control/DESIGN.md +0 -474
- package/dist/designer/data/systems/mission-control/components.html +0 -136
- package/dist/designer/data/systems/mission-control/tokens.css +0 -63
- package/dist/designer/data/systems/mistral-ai/DESIGN.md +0 -264
- package/dist/designer/data/systems/mistral-ai/components.html +0 -338
- package/dist/designer/data/systems/mistral-ai/tokens.css +0 -125
- package/dist/designer/data/systems/modern/DESIGN.md +0 -71
- package/dist/designer/data/systems/modern/components.html +0 -154
- package/dist/designer/data/systems/modern/tokens.css +0 -63
- package/dist/designer/data/systems/mongodb/DESIGN.md +0 -269
- package/dist/designer/data/systems/mongodb/components.html +0 -462
- package/dist/designer/data/systems/mongodb/tokens.css +0 -176
- package/dist/designer/data/systems/mono/DESIGN.md +0 -71
- package/dist/designer/data/systems/mono/components.html +0 -136
- package/dist/designer/data/systems/mono/tokens.css +0 -63
- package/dist/designer/data/systems/neobrutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neobrutalism/components.html +0 -136
- package/dist/designer/data/systems/neobrutalism/tokens.css +0 -63
- package/dist/designer/data/systems/neon/DESIGN.md +0 -71
- package/dist/designer/data/systems/neon/components.html +0 -136
- package/dist/designer/data/systems/neon/tokens.css +0 -63
- package/dist/designer/data/systems/neumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neumorphism/components.html +0 -136
- package/dist/designer/data/systems/neumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/nike/DESIGN.md +0 -366
- package/dist/designer/data/systems/nike/components.html +0 -512
- package/dist/designer/data/systems/nike/tokens.css +0 -304
- package/dist/designer/data/systems/notion/DESIGN.md +0 -312
- package/dist/designer/data/systems/notion/components.html +0 -413
- package/dist/designer/data/systems/notion/tokens.css +0 -130
- package/dist/designer/data/systems/nvidia/DESIGN.md +0 -296
- package/dist/designer/data/systems/nvidia/components.html +0 -414
- package/dist/designer/data/systems/nvidia/tokens.css +0 -133
- package/dist/designer/data/systems/ollama/DESIGN.md +0 -270
- package/dist/designer/data/systems/ollama/components.html +0 -700
- package/dist/designer/data/systems/ollama/tokens.css +0 -242
- package/dist/designer/data/systems/openai/DESIGN.md +0 -140
- package/dist/designer/data/systems/openai/components.html +0 -382
- package/dist/designer/data/systems/openai/tokens.css +0 -133
- package/dist/designer/data/systems/opencode-ai/DESIGN.md +0 -284
- package/dist/designer/data/systems/opencode-ai/components.html +0 -389
- package/dist/designer/data/systems/opencode-ai/tokens.css +0 -126
- package/dist/designer/data/systems/pacman/DESIGN.md +0 -71
- package/dist/designer/data/systems/pacman/components.html +0 -342
- package/dist/designer/data/systems/pacman/tokens.css +0 -64
- package/dist/designer/data/systems/paper/DESIGN.md +0 -71
- package/dist/designer/data/systems/paper/components.html +0 -136
- package/dist/designer/data/systems/paper/tokens.css +0 -63
- package/dist/designer/data/systems/perplexity/DESIGN.md +0 -286
- package/dist/designer/data/systems/perplexity/components.html +0 -455
- package/dist/designer/data/systems/perplexity/tokens.css +0 -151
- package/dist/designer/data/systems/perspective/DESIGN.md +0 -71
- package/dist/designer/data/systems/perspective/components.html +0 -136
- package/dist/designer/data/systems/perspective/tokens.css +0 -63
- package/dist/designer/data/systems/pinterest/DESIGN.md +0 -233
- package/dist/designer/data/systems/pinterest/components.html +0 -865
- package/dist/designer/data/systems/pinterest/tokens.css +0 -262
- package/dist/designer/data/systems/playstation/DESIGN.md +0 -367
- package/dist/designer/data/systems/playstation/components.html +0 -414
- package/dist/designer/data/systems/playstation/tokens.css +0 -150
- package/dist/designer/data/systems/posthog/DESIGN.md +0 -259
- package/dist/designer/data/systems/posthog/components.html +0 -827
- package/dist/designer/data/systems/posthog/tokens.css +0 -272
- package/dist/designer/data/systems/premium/DESIGN.md +0 -71
- package/dist/designer/data/systems/premium/components.html +0 -154
- package/dist/designer/data/systems/premium/tokens.css +0 -63
- package/dist/designer/data/systems/professional/DESIGN.md +0 -71
- package/dist/designer/data/systems/professional/components.html +0 -136
- package/dist/designer/data/systems/professional/tokens.css +0 -63
- package/dist/designer/data/systems/publication/DESIGN.md +0 -71
- package/dist/designer/data/systems/publication/components.html +0 -154
- package/dist/designer/data/systems/publication/tokens.css +0 -63
- package/dist/designer/data/systems/raycast/DESIGN.md +0 -271
- package/dist/designer/data/systems/raycast/components.html +0 -507
- package/dist/designer/data/systems/raycast/tokens.css +0 -143
- package/dist/designer/data/systems/refined/DESIGN.md +0 -71
- package/dist/designer/data/systems/refined/components.html +0 -136
- package/dist/designer/data/systems/refined/tokens.css +0 -63
- package/dist/designer/data/systems/renault/DESIGN.md +0 -314
- package/dist/designer/data/systems/renault/components.html +0 -154
- package/dist/designer/data/systems/renault/tokens.css +0 -63
- package/dist/designer/data/systems/replicate/DESIGN.md +0 -264
- package/dist/designer/data/systems/replicate/components.html +0 -340
- package/dist/designer/data/systems/replicate/tokens.css +0 -125
- package/dist/designer/data/systems/resend/DESIGN.md +0 -306
- package/dist/designer/data/systems/resend/components.html +0 -839
- package/dist/designer/data/systems/resend/tokens.css +0 -353
- package/dist/designer/data/systems/retro/DESIGN.md +0 -71
- package/dist/designer/data/systems/retro/components.html +0 -136
- package/dist/designer/data/systems/retro/tokens.css +0 -63
- package/dist/designer/data/systems/revolut/DESIGN.md +0 -188
- package/dist/designer/data/systems/revolut/components.html +0 -342
- package/dist/designer/data/systems/revolut/tokens.css +0 -64
- package/dist/designer/data/systems/runwayml/DESIGN.md +0 -247
- package/dist/designer/data/systems/runwayml/components.html +0 -638
- package/dist/designer/data/systems/runwayml/tokens.css +0 -204
- package/dist/designer/data/systems/sanity/DESIGN.md +0 -360
- package/dist/designer/data/systems/sanity/components.html +0 -342
- package/dist/designer/data/systems/sanity/tokens.css +0 -64
- package/dist/designer/data/systems/sentry/DESIGN.md +0 -265
- package/dist/designer/data/systems/sentry/components.html +0 -387
- package/dist/designer/data/systems/sentry/tokens.css +0 -219
- package/dist/designer/data/systems/shadcn/DESIGN.md +0 -71
- package/dist/designer/data/systems/shadcn/components.html +0 -732
- package/dist/designer/data/systems/shadcn/tokens.css +0 -255
- package/dist/designer/data/systems/shopify/DESIGN.md +0 -353
- package/dist/designer/data/systems/shopify/components.html +0 -342
- package/dist/designer/data/systems/shopify/tokens.css +0 -141
- package/dist/designer/data/systems/simple/DESIGN.md +0 -71
- package/dist/designer/data/systems/simple/components.html +0 -136
- package/dist/designer/data/systems/simple/tokens.css +0 -63
- package/dist/designer/data/systems/skeumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/skeumorphism/components.html +0 -136
- package/dist/designer/data/systems/skeumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/slack/DESIGN.md +0 -363
- package/dist/designer/data/systems/slack/components.html +0 -387
- package/dist/designer/data/systems/slack/tokens.css +0 -127
- package/dist/designer/data/systems/sleek/DESIGN.md +0 -71
- package/dist/designer/data/systems/sleek/components.html +0 -136
- package/dist/designer/data/systems/sleek/tokens.css +0 -63
- package/dist/designer/data/systems/spacex/DESIGN.md +0 -197
- package/dist/designer/data/systems/spacex/components.html +0 -496
- package/dist/designer/data/systems/spacex/tokens.css +0 -154
- package/dist/designer/data/systems/spacious/DESIGN.md +0 -71
- package/dist/designer/data/systems/spacious/components.html +0 -136
- package/dist/designer/data/systems/spacious/tokens.css +0 -63
- package/dist/designer/data/systems/spotify/DESIGN.md +0 -249
- package/dist/designer/data/systems/spotify/components.html +0 -365
- package/dist/designer/data/systems/spotify/tokens.css +0 -127
- package/dist/designer/data/systems/starbucks/DESIGN.md +0 -583
- package/dist/designer/data/systems/starbucks/components.html +0 -493
- package/dist/designer/data/systems/starbucks/tokens.css +0 -182
- package/dist/designer/data/systems/storytelling/DESIGN.md +0 -71
- package/dist/designer/data/systems/storytelling/components.html +0 -136
- package/dist/designer/data/systems/storytelling/tokens.css +0 -63
- package/dist/designer/data/systems/stripe/DESIGN.md +0 -325
- package/dist/designer/data/systems/stripe/components.html +0 -1018
- package/dist/designer/data/systems/stripe/tokens.css +0 -295
- package/dist/designer/data/systems/supabase/DESIGN.md +0 -258
- package/dist/designer/data/systems/supabase/components.html +0 -741
- package/dist/designer/data/systems/supabase/tokens.css +0 -294
- package/dist/designer/data/systems/superhuman/DESIGN.md +0 -255
- package/dist/designer/data/systems/superhuman/components.html +0 -537
- package/dist/designer/data/systems/superhuman/tokens.css +0 -160
- package/dist/designer/data/systems/tesla/DESIGN.md +0 -289
- package/dist/designer/data/systems/tesla/components.html +0 -724
- package/dist/designer/data/systems/tesla/tokens.css +0 -285
- package/dist/designer/data/systems/tetris/DESIGN.md +0 -71
- package/dist/designer/data/systems/tetris/components.html +0 -342
- package/dist/designer/data/systems/tetris/tokens.css +0 -64
- package/dist/designer/data/systems/theverge/DESIGN.md +0 -342
- package/dist/designer/data/systems/theverge/components.html +0 -342
- package/dist/designer/data/systems/theverge/tokens.css +0 -64
- package/dist/designer/data/systems/together-ai/DESIGN.md +0 -266
- package/dist/designer/data/systems/together-ai/components.html +0 -422
- package/dist/designer/data/systems/together-ai/tokens.css +0 -127
- package/dist/designer/data/systems/totality-festival/DESIGN.md +0 -206
- package/dist/designer/data/systems/totality-festival/components.html +0 -136
- package/dist/designer/data/systems/totality-festival/tokens.css +0 -63
- package/dist/designer/data/systems/trading-terminal/DESIGN.md +0 -178
- package/dist/designer/data/systems/trading-terminal/components.html +0 -154
- package/dist/designer/data/systems/trading-terminal/tokens.css +0 -63
- package/dist/designer/data/systems/uber/DESIGN.md +0 -298
- package/dist/designer/data/systems/uber/components.html +0 -347
- package/dist/designer/data/systems/uber/tokens.css +0 -131
- package/dist/designer/data/systems/urdu/DESIGN.md +0 -1002
- package/dist/designer/data/systems/urdu/components.html +0 -136
- package/dist/designer/data/systems/urdu/tokens.css +0 -63
- package/dist/designer/data/systems/vercel/DESIGN.md +0 -313
- package/dist/designer/data/systems/vercel/components.html +0 -839
- package/dist/designer/data/systems/vercel/tokens.css +0 -270
- package/dist/designer/data/systems/vibrant/DESIGN.md +0 -71
- package/dist/designer/data/systems/vibrant/components.html +0 -136
- package/dist/designer/data/systems/vibrant/tokens.css +0 -63
- package/dist/designer/data/systems/vintage/DESIGN.md +0 -71
- package/dist/designer/data/systems/vintage/components.html +0 -136
- package/dist/designer/data/systems/vintage/tokens.css +0 -63
- package/dist/designer/data/systems/vodafone/DESIGN.md +0 -426
- package/dist/designer/data/systems/vodafone/components.html +0 -342
- package/dist/designer/data/systems/vodafone/tokens.css +0 -64
- package/dist/designer/data/systems/voltagent/DESIGN.md +0 -326
- package/dist/designer/data/systems/voltagent/components.html +0 -154
- package/dist/designer/data/systems/voltagent/tokens.css +0 -63
- package/dist/designer/data/systems/warm-editorial/DESIGN.md +0 -65
- package/dist/designer/data/systems/warm-editorial/components.html +0 -136
- package/dist/designer/data/systems/warm-editorial/tokens.css +0 -63
- package/dist/designer/data/systems/warp/DESIGN.md +0 -256
- package/dist/designer/data/systems/warp/components.html +0 -411
- package/dist/designer/data/systems/warp/tokens.css +0 -156
- package/dist/designer/data/systems/webex/DESIGN.md +0 -207
- package/dist/designer/data/systems/webex/components.html +0 -342
- package/dist/designer/data/systems/webex/tokens.css +0 -64
- package/dist/designer/data/systems/webflow/DESIGN.md +0 -95
- package/dist/designer/data/systems/webflow/components.html +0 -413
- package/dist/designer/data/systems/webflow/tokens.css +0 -191
- package/dist/designer/data/systems/wechat/DESIGN.md +0 -302
- package/dist/designer/data/systems/wechat/components.html +0 -507
- package/dist/designer/data/systems/wechat/tokens.css +0 -176
- package/dist/designer/data/systems/wired/DESIGN.md +0 -281
- package/dist/designer/data/systems/wired/components.html +0 -342
- package/dist/designer/data/systems/wired/tokens.css +0 -64
- package/dist/designer/data/systems/wise/DESIGN.md +0 -176
- package/dist/designer/data/systems/wise/components.html +0 -365
- package/dist/designer/data/systems/wise/tokens.css +0 -141
- package/dist/designer/data/systems/x-ai/DESIGN.md +0 -260
- package/dist/designer/data/systems/x-ai/components.html +0 -460
- package/dist/designer/data/systems/x-ai/tokens.css +0 -268
- package/dist/designer/data/systems/xiaohongshu/DESIGN.md +0 -402
- package/dist/designer/data/systems/xiaohongshu/components.html +0 -865
- package/dist/designer/data/systems/xiaohongshu/tokens.css +0 -193
- package/dist/designer/data/systems/zapier/DESIGN.md +0 -331
- package/dist/designer/data/systems/zapier/components.html +0 -342
- package/dist/designer/data/systems/zapier/tokens.css +0 -64
- package/dist/designer/guidelines.d.ts +0 -23
- package/dist/designer/guidelines.d.ts.map +0 -1
- package/dist/designer/guidelines.js +0 -176
- package/dist/designer/philosophies.d.ts +0 -33
- package/dist/designer/philosophies.d.ts.map +0 -1
- package/dist/designer/philosophies.js +0 -668
- package/dist/designer/skills.d.ts +0 -21
- package/dist/designer/skills.d.ts.map +0 -1
- package/dist/designer/skills.js +0 -34
- package/dist/designer/systems.d.ts +0 -36
- package/dist/designer/systems.d.ts.map +0 -1
- package/dist/designer/systems.js +0 -221
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
export const motionFrames = {
|
|
2
|
-
name: "motion-frames",
|
|
3
|
-
scenario: "creative",
|
|
4
|
-
description: "CSS animation and motion design frames. Keyframe-driven animations, scroll-triggered reveals, staggered lists, loading states, and page transitions — all CSS-only where possible.",
|
|
5
|
-
outputKind: "html",
|
|
6
|
-
workflow: `# Motion Frames Skill
|
|
7
|
-
|
|
8
|
-
Produce a motion design showcase as a single HTML file. CSS keyframe animations, scroll-triggered effects, and subtle micro-interactions — no JavaScript libraries.
|
|
9
|
-
|
|
10
|
-
## Phase 1 — Animation Vocabulary
|
|
11
|
-
|
|
12
|
-
### Entrance Animations
|
|
13
|
-
\`\`\`css
|
|
14
|
-
/* Fade up */
|
|
15
|
-
@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
|
|
16
|
-
|
|
17
|
-
/* Scale in */
|
|
18
|
-
@keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } }
|
|
19
|
-
|
|
20
|
-
/* Slide from left */
|
|
21
|
-
@keyframes slideLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } }
|
|
22
|
-
|
|
23
|
-
/* Reveal by clip-path */
|
|
24
|
-
@keyframes clipReveal { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
27
|
-
### Scroll-Triggered Reveals
|
|
28
|
-
\`\`\`css
|
|
29
|
-
/* Use scroll-driven animations (modern browsers) */
|
|
30
|
-
.reveal {
|
|
31
|
-
animation: fadeUp 0.6s ease-out;
|
|
32
|
-
animation-timeline: view();
|
|
33
|
-
animation-range: entry 20% cover 40%;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* Fallback: use Intersection Observer pattern in a small script */
|
|
37
|
-
.reveal-on-scroll { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
|
|
38
|
-
.reveal-on-scroll.visible { opacity: 1; transform: translateY(0); }
|
|
39
|
-
\`\`\`
|
|
40
|
-
|
|
41
|
-
### Staggered Lists
|
|
42
|
-
\`\`\`css
|
|
43
|
-
.stagger-list > * { opacity: 0; animation: fadeUp 0.4s ease-out forwards; }
|
|
44
|
-
.stagger-list > *:nth-child(1) { animation-delay: 0ms; }
|
|
45
|
-
.stagger-list > *:nth-child(2) { animation-delay: 80ms; }
|
|
46
|
-
.stagger-list > *:nth-child(3) { animation-delay: 160ms; }
|
|
47
|
-
.stagger-list > *:nth-child(4) { animation-delay: 240ms; }
|
|
48
|
-
.stagger-list > *:nth-child(5) { animation-delay: 320ms; }
|
|
49
|
-
.stagger-list > *:nth-child(6) { animation-delay: 400ms; }
|
|
50
|
-
/* Continue pattern: delay = (n-1) * 80ms up to n=20 */
|
|
51
|
-
\`\`\`
|
|
52
|
-
|
|
53
|
-
### Loading States
|
|
54
|
-
\`\`\`css
|
|
55
|
-
/* Spinner */
|
|
56
|
-
@keyframes spin { to { transform: rotate(360deg); } }
|
|
57
|
-
.spinner { width: 24px; height: 24px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.6s linear infinite; }
|
|
58
|
-
|
|
59
|
-
/* Skeleton pulse */
|
|
60
|
-
@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
|
|
61
|
-
.skeleton { background: linear-gradient(90deg, var(--surface) 25%, color-mix(in oklab, var(--surface) 50%, var(--bg)) 50%, var(--surface) 75%); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; border-radius: 4px; }
|
|
62
|
-
|
|
63
|
-
/* Progress bar */
|
|
64
|
-
@keyframes progress { from { width: 0%; } to { width: 100%; } }
|
|
65
|
-
.progress-bar { height: 4px; background: var(--surface); border-radius: 2px; overflow: hidden; }
|
|
66
|
-
.progress-bar-fill { height: 100%; background: var(--accent); border-radius: 2px; animation: progress 2s ease-out forwards; }
|
|
67
|
-
\`\`\`
|
|
68
|
-
|
|
69
|
-
### Hover Micro-Interactions
|
|
70
|
-
\`\`\`css
|
|
71
|
-
/* Subtle card lift */
|
|
72
|
-
.card-hover { transition: transform 0.2s ease, box-shadow 0.2s ease; }
|
|
73
|
-
.card-hover:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.1); }
|
|
74
|
-
|
|
75
|
-
/* Button press */
|
|
76
|
-
.btn-press { transition: transform 0.1s ease; }
|
|
77
|
-
.btn-press:active { transform: scale(0.97); }
|
|
78
|
-
|
|
79
|
-
/* Link underline slide */
|
|
80
|
-
.link-slide { position: relative; text-decoration: none; }
|
|
81
|
-
.link-slide::after { content: ""; position: absolute; bottom: -1px; left: 0; width: 0; height: 1.5px; background: var(--accent); transition: width 0.3s ease; }
|
|
82
|
-
.link-slide:hover::after { width: 100%; }
|
|
83
|
-
|
|
84
|
-
/* Image zoom */
|
|
85
|
-
.img-zoom { overflow: hidden; border-radius: 8px; }
|
|
86
|
-
.img-zoom img { transition: transform 0.3s ease; }
|
|
87
|
-
.img-zoom:hover img { transform: scale(1.05); }
|
|
88
|
-
\`\`\`
|
|
89
|
-
|
|
90
|
-
### Page Transitions (View Transitions API)
|
|
91
|
-
\`\`\`css
|
|
92
|
-
/* Add to :root for cross-fade transitions */
|
|
93
|
-
::view-transition-old(root),
|
|
94
|
-
::view-transition-new(root) {
|
|
95
|
-
animation-duration: 0.4s;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* Named transitions for specific elements */
|
|
99
|
-
.hero-title { view-transition-name: hero-title; }
|
|
100
|
-
.hero-image { view-transition-name: hero-image; }
|
|
101
|
-
\`\`\`
|
|
102
|
-
|
|
103
|
-
## Phase 2 — Showcase Layout
|
|
104
|
-
|
|
105
|
-
Build a single HTML page demonstrating each animation category:
|
|
106
|
-
1. **Entrance section** — cards/stats that animate in on load
|
|
107
|
-
2. **Scroll reveal section** — content that appears as you scroll
|
|
108
|
-
3. **Staggered list** — feature list with cascading reveal
|
|
109
|
-
4. **Loading section** — skeleton screens next to real content
|
|
110
|
-
5. **Hover gallery** — cards with different hover treatments
|
|
111
|
-
6. **Interactive section** — buttons and links with micro-interactions
|
|
112
|
-
|
|
113
|
-
## Phase 3 — Motion Design Rules
|
|
114
|
-
- **Duration**: 150-400ms for micro-interactions; 400-800ms for entrances; DON'T use values above 1s
|
|
115
|
-
- **Easing**: ease-out for entrances (fast start, settle gracefully); ease-in-out for continuous animations
|
|
116
|
-
- **Stagger**: 60-100ms between children; maximum 20 items in a stagger
|
|
117
|
-
- **Performance**: animate transform and opacity only (no width/height/margin animations)
|
|
118
|
-
- **Respect reduced motion**: wrap animations in @media (prefers-reduced-motion: no-preference)
|
|
119
|
-
- **No animation on every element** — pick 2-3 key moments per page
|
|
120
|
-
- **Animation should communicate** — loading state, new content arriving, affordance — not just decoration`,
|
|
121
|
-
};
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const motionFrames: DesignSkill = {
|
|
4
|
-
name: "motion-frames",
|
|
5
|
-
scenario: "creative",
|
|
6
|
-
description:
|
|
7
|
-
"CSS animation and motion design frames. Keyframe-driven animations, scroll-triggered reveals, staggered lists, loading states, and page transitions — all CSS-only where possible.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# Motion Frames Skill
|
|
10
|
-
|
|
11
|
-
Produce a motion design showcase as a single HTML file. CSS keyframe animations, scroll-triggered effects, and subtle micro-interactions — no JavaScript libraries.
|
|
12
|
-
|
|
13
|
-
## Phase 1 — Animation Vocabulary
|
|
14
|
-
|
|
15
|
-
### Entrance Animations
|
|
16
|
-
\`\`\`css
|
|
17
|
-
/* Fade up */
|
|
18
|
-
@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
|
|
19
|
-
|
|
20
|
-
/* Scale in */
|
|
21
|
-
@keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } }
|
|
22
|
-
|
|
23
|
-
/* Slide from left */
|
|
24
|
-
@keyframes slideLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } }
|
|
25
|
-
|
|
26
|
-
/* Reveal by clip-path */
|
|
27
|
-
@keyframes clipReveal { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
|
|
28
|
-
\`\`\`
|
|
29
|
-
|
|
30
|
-
### Scroll-Triggered Reveals
|
|
31
|
-
\`\`\`css
|
|
32
|
-
/* Use scroll-driven animations (modern browsers) */
|
|
33
|
-
.reveal {
|
|
34
|
-
animation: fadeUp 0.6s ease-out;
|
|
35
|
-
animation-timeline: view();
|
|
36
|
-
animation-range: entry 20% cover 40%;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* Fallback: use Intersection Observer pattern in a small script */
|
|
40
|
-
.reveal-on-scroll { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
|
|
41
|
-
.reveal-on-scroll.visible { opacity: 1; transform: translateY(0); }
|
|
42
|
-
\`\`\`
|
|
43
|
-
|
|
44
|
-
### Staggered Lists
|
|
45
|
-
\`\`\`css
|
|
46
|
-
.stagger-list > * { opacity: 0; animation: fadeUp 0.4s ease-out forwards; }
|
|
47
|
-
.stagger-list > *:nth-child(1) { animation-delay: 0ms; }
|
|
48
|
-
.stagger-list > *:nth-child(2) { animation-delay: 80ms; }
|
|
49
|
-
.stagger-list > *:nth-child(3) { animation-delay: 160ms; }
|
|
50
|
-
.stagger-list > *:nth-child(4) { animation-delay: 240ms; }
|
|
51
|
-
.stagger-list > *:nth-child(5) { animation-delay: 320ms; }
|
|
52
|
-
.stagger-list > *:nth-child(6) { animation-delay: 400ms; }
|
|
53
|
-
/* Continue pattern: delay = (n-1) * 80ms up to n=20 */
|
|
54
|
-
\`\`\`
|
|
55
|
-
|
|
56
|
-
### Loading States
|
|
57
|
-
\`\`\`css
|
|
58
|
-
/* Spinner */
|
|
59
|
-
@keyframes spin { to { transform: rotate(360deg); } }
|
|
60
|
-
.spinner { width: 24px; height: 24px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.6s linear infinite; }
|
|
61
|
-
|
|
62
|
-
/* Skeleton pulse */
|
|
63
|
-
@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
|
|
64
|
-
.skeleton { background: linear-gradient(90deg, var(--surface) 25%, color-mix(in oklab, var(--surface) 50%, var(--bg)) 50%, var(--surface) 75%); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; border-radius: 4px; }
|
|
65
|
-
|
|
66
|
-
/* Progress bar */
|
|
67
|
-
@keyframes progress { from { width: 0%; } to { width: 100%; } }
|
|
68
|
-
.progress-bar { height: 4px; background: var(--surface); border-radius: 2px; overflow: hidden; }
|
|
69
|
-
.progress-bar-fill { height: 100%; background: var(--accent); border-radius: 2px; animation: progress 2s ease-out forwards; }
|
|
70
|
-
\`\`\`
|
|
71
|
-
|
|
72
|
-
### Hover Micro-Interactions
|
|
73
|
-
\`\`\`css
|
|
74
|
-
/* Subtle card lift */
|
|
75
|
-
.card-hover { transition: transform 0.2s ease, box-shadow 0.2s ease; }
|
|
76
|
-
.card-hover:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.1); }
|
|
77
|
-
|
|
78
|
-
/* Button press */
|
|
79
|
-
.btn-press { transition: transform 0.1s ease; }
|
|
80
|
-
.btn-press:active { transform: scale(0.97); }
|
|
81
|
-
|
|
82
|
-
/* Link underline slide */
|
|
83
|
-
.link-slide { position: relative; text-decoration: none; }
|
|
84
|
-
.link-slide::after { content: ""; position: absolute; bottom: -1px; left: 0; width: 0; height: 1.5px; background: var(--accent); transition: width 0.3s ease; }
|
|
85
|
-
.link-slide:hover::after { width: 100%; }
|
|
86
|
-
|
|
87
|
-
/* Image zoom */
|
|
88
|
-
.img-zoom { overflow: hidden; border-radius: 8px; }
|
|
89
|
-
.img-zoom img { transition: transform 0.3s ease; }
|
|
90
|
-
.img-zoom:hover img { transform: scale(1.05); }
|
|
91
|
-
\`\`\`
|
|
92
|
-
|
|
93
|
-
### Page Transitions (View Transitions API)
|
|
94
|
-
\`\`\`css
|
|
95
|
-
/* Add to :root for cross-fade transitions */
|
|
96
|
-
::view-transition-old(root),
|
|
97
|
-
::view-transition-new(root) {
|
|
98
|
-
animation-duration: 0.4s;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/* Named transitions for specific elements */
|
|
102
|
-
.hero-title { view-transition-name: hero-title; }
|
|
103
|
-
.hero-image { view-transition-name: hero-image; }
|
|
104
|
-
\`\`\`
|
|
105
|
-
|
|
106
|
-
## Phase 2 — Showcase Layout
|
|
107
|
-
|
|
108
|
-
Build a single HTML page demonstrating each animation category:
|
|
109
|
-
1. **Entrance section** — cards/stats that animate in on load
|
|
110
|
-
2. **Scroll reveal section** — content that appears as you scroll
|
|
111
|
-
3. **Staggered list** — feature list with cascading reveal
|
|
112
|
-
4. **Loading section** — skeleton screens next to real content
|
|
113
|
-
5. **Hover gallery** — cards with different hover treatments
|
|
114
|
-
6. **Interactive section** — buttons and links with micro-interactions
|
|
115
|
-
|
|
116
|
-
## Phase 3 — Motion Design Rules
|
|
117
|
-
- **Duration**: 150-400ms for micro-interactions; 400-800ms for entrances; DON'T use values above 1s
|
|
118
|
-
- **Easing**: ease-out for entrances (fast start, settle gracefully); ease-in-out for continuous animations
|
|
119
|
-
- **Stagger**: 60-100ms between children; maximum 20 items in a stagger
|
|
120
|
-
- **Performance**: animate transform and opacity only (no width/height/margin animations)
|
|
121
|
-
- **Respect reduced motion**: wrap animations in @media (prefers-reduced-motion: no-preference)
|
|
122
|
-
- **No animation on every element** — pick 2-3 key moments per page
|
|
123
|
-
- **Animation should communicate** — loading state, new content arriving, affordance — not just decoration`,
|
|
124
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pricing-page.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/pricing-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WA4EvB,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
export const pricingPage = {
|
|
2
|
-
name: "pricing-page",
|
|
3
|
-
scenario: "marketing",
|
|
4
|
-
description: "Standalone pricing page — header, plan tier cards, feature comparison table, and FAQ. Uses CSS Grid for plan rows and comparison table. 2-4 tiers with recommended tier accent.",
|
|
5
|
-
outputKind: "html",
|
|
6
|
-
workflow: `# Pricing Page Skill
|
|
7
|
-
|
|
8
|
-
Produce a single-screen pricing page that respects the active design system.
|
|
9
|
-
|
|
10
|
-
## Phase 1 — Classify the product
|
|
11
|
-
|
|
12
|
-
Pick a tier shape based on the brief:
|
|
13
|
-
- **3-tier** (most common): Free / Pro / Team or Starter / Growth / Enterprise
|
|
14
|
-
- **4-tier** when the brief says "scale" or "enterprise plus"
|
|
15
|
-
- **2-tier** when it says "individual / business" or "personal / pro"
|
|
16
|
-
|
|
17
|
-
## Phase 2 — Sections (in order)
|
|
18
|
-
|
|
19
|
-
1. **Hero** — page title (e.g. "Pricing"), one-line subhead, optional monthly/annual toggle.
|
|
20
|
-
\`\`\`css
|
|
21
|
-
.pricing-hero { text-align: center; padding: 80px 0 48px; }
|
|
22
|
-
.toggle { display: inline-flex; border-radius: 999px; background: var(--surface); padding: 4px; margin-top: 24px; }
|
|
23
|
-
.toggle button { padding: 8px 20px; border-radius: 999px; border: none; cursor: pointer; font-size: 14px; font-weight: 500; }
|
|
24
|
-
.toggle button.active { background: var(--fg); color: var(--bg); }
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
27
|
-
2. **Plan cards** — one card per tier. Each card: tier name, price (display font + larger scale for the number), 1-line positioning, 4-6 bullet features, primary CTA.
|
|
28
|
-
\`\`\`css
|
|
29
|
-
.plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; max-width: 1100px; margin: 0 auto; padding: 0 24px; }
|
|
30
|
-
.plan-card { background: var(--surface, var(--bg)); border: 1px solid var(--border); border-radius: 12px; padding: 40px 32px; display: flex; flex-direction: column; }
|
|
31
|
-
.plan-card.recommended { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); position: relative; }
|
|
32
|
-
.plan-card.recommended::before { content: "Popular"; position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--accent); color: var(--accent-on, white); padding: 4px 16px; border-radius: 999px; font-size: 12px; font-weight: 600; }
|
|
33
|
-
.plan-name { font-size: 20px; font-weight: 600; }
|
|
34
|
-
.plan-price { font-size: 48px; font-weight: 800; line-height: 1; margin: 16px 0 4px; font-family: var(--font-display, var(--font-body)); }
|
|
35
|
-
.plan-price span { font-size: 16px; font-weight: 400; color: var(--muted); }
|
|
36
|
-
.plan-features { list-style: none; padding: 0; margin: 24px 0; flex: 1; }
|
|
37
|
-
.plan-features li { padding: 8px 0; font-size: 14px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
38
|
-
\`\`\`
|
|
39
|
-
|
|
40
|
-
3. **Comparison table** — feature rows × tier columns, ✓ / — / value cells. Group features into 2-3 logical sections (Core, Collaboration, Support, Security). Sticky header.
|
|
41
|
-
\`\`\`css
|
|
42
|
-
.comparison { max-width: 1100px; margin: 64px auto; padding: 0 24px; }
|
|
43
|
-
.comparison h2 { text-align: center; margin-bottom: 32px; }
|
|
44
|
-
.comparison-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
45
|
-
.comparison-table th { text-align: left; padding: 12px 16px; font-weight: 600; border-bottom: 2px solid var(--border); }
|
|
46
|
-
.comparison-table th:not(:first-child) { text-align: center; }
|
|
47
|
-
.comparison-table td { padding: 12px 16px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
48
|
-
.comparison-table td:not(:first-child) { text-align: center; }
|
|
49
|
-
.section-header td { font-weight: 600; background: var(--surface); font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
50
|
-
\`\`\`
|
|
51
|
-
|
|
52
|
-
4. **FAQ** — 4-6 collapsible Q&A items using \`<details><summary>\` (no JS needed).
|
|
53
|
-
\`\`\`css
|
|
54
|
-
.faq { max-width: 720px; margin: 64px auto; padding: 0 24px; }
|
|
55
|
-
.faq h2 { text-align: center; margin-bottom: 32px; }
|
|
56
|
-
.faq details { border-bottom: 1px solid var(--border-soft, var(--border)); padding: 20px 0; }
|
|
57
|
-
.faq summary { font-weight: 600; cursor: pointer; font-size: 16px; list-style: none; display: flex; justify-content: space-between; align-items: center; }
|
|
58
|
-
.faq summary::after { content: "+"; font-size: 20px; }
|
|
59
|
-
.faq details[open] summary::after { content: "−"; }
|
|
60
|
-
.faq p { margin-top: 12px; font-size: 15px; color: var(--muted); line-height: 1.6; }
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
5. **Footer CTA** — single line + button.
|
|
64
|
-
|
|
65
|
-
## Phase 3 — Content Rules
|
|
66
|
-
- Prices are plausible for the product (not "$X / month")
|
|
67
|
-
- Accent appears on the recommended tier and one CTA only
|
|
68
|
-
- No fake feature names — every row reads as something a real product would offer
|
|
69
|
-
- Comparison table renders cleanly at 1024px and stacks readably below 768px (scroll-x or stacked)
|
|
70
|
-
|
|
71
|
-
## Phase 4 — Anti-Slop Check
|
|
72
|
-
- [ ] Prices use specific numbers ($29, $79, $199)
|
|
73
|
-
- [ ] Recommended tier is visually distinct
|
|
74
|
-
- [ ] FAQ answers are concrete, not generic
|
|
75
|
-
- [ ] No price-related emoji (💸, 💰, 🤑)`,
|
|
76
|
-
};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const pricingPage: DesignSkill = {
|
|
4
|
-
name: "pricing-page",
|
|
5
|
-
scenario: "marketing",
|
|
6
|
-
description:
|
|
7
|
-
"Standalone pricing page — header, plan tier cards, feature comparison table, and FAQ. Uses CSS Grid for plan rows and comparison table. 2-4 tiers with recommended tier accent.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# Pricing Page Skill
|
|
10
|
-
|
|
11
|
-
Produce a single-screen pricing page that respects the active design system.
|
|
12
|
-
|
|
13
|
-
## Phase 1 — Classify the product
|
|
14
|
-
|
|
15
|
-
Pick a tier shape based on the brief:
|
|
16
|
-
- **3-tier** (most common): Free / Pro / Team or Starter / Growth / Enterprise
|
|
17
|
-
- **4-tier** when the brief says "scale" or "enterprise plus"
|
|
18
|
-
- **2-tier** when it says "individual / business" or "personal / pro"
|
|
19
|
-
|
|
20
|
-
## Phase 2 — Sections (in order)
|
|
21
|
-
|
|
22
|
-
1. **Hero** — page title (e.g. "Pricing"), one-line subhead, optional monthly/annual toggle.
|
|
23
|
-
\`\`\`css
|
|
24
|
-
.pricing-hero { text-align: center; padding: 80px 0 48px; }
|
|
25
|
-
.toggle { display: inline-flex; border-radius: 999px; background: var(--surface); padding: 4px; margin-top: 24px; }
|
|
26
|
-
.toggle button { padding: 8px 20px; border-radius: 999px; border: none; cursor: pointer; font-size: 14px; font-weight: 500; }
|
|
27
|
-
.toggle button.active { background: var(--fg); color: var(--bg); }
|
|
28
|
-
\`\`\`
|
|
29
|
-
|
|
30
|
-
2. **Plan cards** — one card per tier. Each card: tier name, price (display font + larger scale for the number), 1-line positioning, 4-6 bullet features, primary CTA.
|
|
31
|
-
\`\`\`css
|
|
32
|
-
.plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; max-width: 1100px; margin: 0 auto; padding: 0 24px; }
|
|
33
|
-
.plan-card { background: var(--surface, var(--bg)); border: 1px solid var(--border); border-radius: 12px; padding: 40px 32px; display: flex; flex-direction: column; }
|
|
34
|
-
.plan-card.recommended { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); position: relative; }
|
|
35
|
-
.plan-card.recommended::before { content: "Popular"; position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--accent); color: var(--accent-on, white); padding: 4px 16px; border-radius: 999px; font-size: 12px; font-weight: 600; }
|
|
36
|
-
.plan-name { font-size: 20px; font-weight: 600; }
|
|
37
|
-
.plan-price { font-size: 48px; font-weight: 800; line-height: 1; margin: 16px 0 4px; font-family: var(--font-display, var(--font-body)); }
|
|
38
|
-
.plan-price span { font-size: 16px; font-weight: 400; color: var(--muted); }
|
|
39
|
-
.plan-features { list-style: none; padding: 0; margin: 24px 0; flex: 1; }
|
|
40
|
-
.plan-features li { padding: 8px 0; font-size: 14px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
41
|
-
\`\`\`
|
|
42
|
-
|
|
43
|
-
3. **Comparison table** — feature rows × tier columns, ✓ / — / value cells. Group features into 2-3 logical sections (Core, Collaboration, Support, Security). Sticky header.
|
|
44
|
-
\`\`\`css
|
|
45
|
-
.comparison { max-width: 1100px; margin: 64px auto; padding: 0 24px; }
|
|
46
|
-
.comparison h2 { text-align: center; margin-bottom: 32px; }
|
|
47
|
-
.comparison-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
48
|
-
.comparison-table th { text-align: left; padding: 12px 16px; font-weight: 600; border-bottom: 2px solid var(--border); }
|
|
49
|
-
.comparison-table th:not(:first-child) { text-align: center; }
|
|
50
|
-
.comparison-table td { padding: 12px 16px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
51
|
-
.comparison-table td:not(:first-child) { text-align: center; }
|
|
52
|
-
.section-header td { font-weight: 600; background: var(--surface); font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
53
|
-
\`\`\`
|
|
54
|
-
|
|
55
|
-
4. **FAQ** — 4-6 collapsible Q&A items using \`<details><summary>\` (no JS needed).
|
|
56
|
-
\`\`\`css
|
|
57
|
-
.faq { max-width: 720px; margin: 64px auto; padding: 0 24px; }
|
|
58
|
-
.faq h2 { text-align: center; margin-bottom: 32px; }
|
|
59
|
-
.faq details { border-bottom: 1px solid var(--border-soft, var(--border)); padding: 20px 0; }
|
|
60
|
-
.faq summary { font-weight: 600; cursor: pointer; font-size: 16px; list-style: none; display: flex; justify-content: space-between; align-items: center; }
|
|
61
|
-
.faq summary::after { content: "+"; font-size: 20px; }
|
|
62
|
-
.faq details[open] summary::after { content: "−"; }
|
|
63
|
-
.faq p { margin-top: 12px; font-size: 15px; color: var(--muted); line-height: 1.6; }
|
|
64
|
-
\`\`\`
|
|
65
|
-
|
|
66
|
-
5. **Footer CTA** — single line + button.
|
|
67
|
-
|
|
68
|
-
## Phase 3 — Content Rules
|
|
69
|
-
- Prices are plausible for the product (not "$X / month")
|
|
70
|
-
- Accent appears on the recommended tier and one CTA only
|
|
71
|
-
- No fake feature names — every row reads as something a real product would offer
|
|
72
|
-
- Comparison table renders cleanly at 1024px and stacks readably below 768px (scroll-x or stacked)
|
|
73
|
-
|
|
74
|
-
## Phase 4 — Anti-Slop Check
|
|
75
|
-
- [ ] Prices use specific numbers ($29, $79, $199)
|
|
76
|
-
- [ ] Recommended tier is visually distinct
|
|
77
|
-
- [ ] FAQ answers are concrete, not generic
|
|
78
|
-
- [ ] No price-related emoji (💸, 💰, 🤑)`,
|
|
79
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"saas-landing.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/saas-landing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WAuEvB,CAAC"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
export const saasLanding = {
|
|
2
|
-
name: "saas-landing",
|
|
3
|
-
scenario: "marketing",
|
|
4
|
-
description: "Single-page SaaS landing with hero, features, social proof, pricing, and CTA. Production-ready marketing page structure.",
|
|
5
|
-
outputKind: "html",
|
|
6
|
-
workflow: `# SaaS Landing Skill
|
|
7
|
-
|
|
8
|
-
Produce a single-page SaaS landing page. This is your workflow — follow it exactly.
|
|
9
|
-
|
|
10
|
-
## Phase 0 — Pre-flight
|
|
11
|
-
|
|
12
|
-
1. Read the design system. Map all color tokens.
|
|
13
|
-
2. Determine: product name, tagline, audience, has pricing? how many social proof items?
|
|
14
|
-
3. Vocalize: "I'll build a SaaS landing for [product] using the [system] design system. Sections: hero, features (6), social proof (3 logos + quote), pricing (3 tiers), CTA."
|
|
15
|
-
|
|
16
|
-
## Phase 1 — Shell
|
|
17
|
-
|
|
18
|
-
Create \`index.html\` with the same skeleton as web-prototype, but use this section order:
|
|
19
|
-
|
|
20
|
-
1. **Navigation** — Sticky top, 64px height. Logo left, nav links right (Features, Pricing, Docs), "Sign In" + "Get Started" CTA.
|
|
21
|
-
2. **Hero** — Two-column: left = headline + subtext + CTA + "no credit card" badge, right = product screenshot or illustration.
|
|
22
|
-
3. **Trust Strip** — 5-6 company logos, grayscale, 80px height each.
|
|
23
|
-
4. **Features** — 3×2 grid. Each card: icon, title, description. Focus on benefits, not specs.
|
|
24
|
-
5. **How It Works** — 3-step horizontal flow. Number + title + short description.
|
|
25
|
-
6. **Social Proof** — Quote block + person attribution.
|
|
26
|
-
7. **Pricing** — 3-tier cards. Highlight the middle tier with a "Popular" badge.
|
|
27
|
-
8. **FAQ** — Accordion or simple Q&A list, 4-6 items.
|
|
28
|
-
9. **CTA Footer** — Full-width, centered, strong headline.
|
|
29
|
-
10. **Footer** — Logo, copyright, link columns.
|
|
30
|
-
|
|
31
|
-
## Phase 2 — Key Component Styles
|
|
32
|
-
|
|
33
|
-
### Navigation
|
|
34
|
-
\`\`\`css
|
|
35
|
-
.nav { position: sticky; top: 0; z-index: 100; height: 64px; background: var(--color-bg-primary); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; backdrop-filter: blur(12px); }
|
|
36
|
-
.nav-inner { display: flex; justify-content: space-between; align-items: center; width: 100%; }
|
|
37
|
-
.nav-links { display: flex; gap: 32px; align-items: center; }
|
|
38
|
-
\`\`\`
|
|
39
|
-
|
|
40
|
-
### Hero
|
|
41
|
-
\`\`\`css
|
|
42
|
-
.hero { padding: 120px 0 80px; }
|
|
43
|
-
.hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
|
|
44
|
-
.hero h1 { font-size: 56px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
|
|
45
|
-
.hero p { font-size: 20px; color: var(--color-text-secondary); margin: 24px 0 32px; max-width: 480px; }
|
|
46
|
-
\`\`\`
|
|
47
|
-
|
|
48
|
-
### Pricing Cards
|
|
49
|
-
\`\`\`css
|
|
50
|
-
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
|
|
51
|
-
.pricing-card { padding: 40px 32px; border-radius: var(--radius); border: 1px solid var(--color-border); background: var(--color-bg-surface); }
|
|
52
|
-
.pricing-card.featured { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); transform: scale(1.03); }
|
|
53
|
-
.price { font-size: 48px; font-weight: 800; margin: 16px 0; }
|
|
54
|
-
.price span { font-size: 16px; font-weight: 400; color: var(--color-text-secondary); }
|
|
55
|
-
\`\`\`
|
|
56
|
-
|
|
57
|
-
## Phase 3 — Content Rules
|
|
58
|
-
|
|
59
|
-
- Every headline sells a benefit, not describes a feature
|
|
60
|
-
- Pricing: use specific numbers ($29, $79, $199) not "Free / Pro / Enterprise" placeholders
|
|
61
|
-
- Social proof: realistic company names, real-sounding quote
|
|
62
|
-
- CTA button text: action-oriented — "Start Building", "Get Early Access", "See Plans"
|
|
63
|
-
- No lorem ipsum, no placeholder images that look like placeholders — use gradient shapes
|
|
64
|
-
|
|
65
|
-
## Phase 4 — Anti-Slop Check
|
|
66
|
-
|
|
67
|
-
Same checklist as web-prototype, plus:
|
|
68
|
-
- [ ] Pricing cards don't all look identical — featured tier is visually distinct
|
|
69
|
-
- [ ] Hero doesn't use a gradient background (use solid, pattern, or image)
|
|
70
|
-
- [ ] Trust logos are monochrome, same height, evenly spaced`,
|
|
71
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const saasLanding: DesignSkill = {
|
|
4
|
-
name: "saas-landing",
|
|
5
|
-
scenario: "marketing",
|
|
6
|
-
description:
|
|
7
|
-
"Single-page SaaS landing with hero, features, social proof, pricing, and CTA. Production-ready marketing page structure.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# SaaS Landing Skill
|
|
10
|
-
|
|
11
|
-
Produce a single-page SaaS landing page. This is your workflow — follow it exactly.
|
|
12
|
-
|
|
13
|
-
## Phase 0 — Pre-flight
|
|
14
|
-
|
|
15
|
-
1. Read the design system. Map all color tokens.
|
|
16
|
-
2. Determine: product name, tagline, audience, has pricing? how many social proof items?
|
|
17
|
-
3. Vocalize: "I'll build a SaaS landing for [product] using the [system] design system. Sections: hero, features (6), social proof (3 logos + quote), pricing (3 tiers), CTA."
|
|
18
|
-
|
|
19
|
-
## Phase 1 — Shell
|
|
20
|
-
|
|
21
|
-
Create \`index.html\` with the same skeleton as web-prototype, but use this section order:
|
|
22
|
-
|
|
23
|
-
1. **Navigation** — Sticky top, 64px height. Logo left, nav links right (Features, Pricing, Docs), "Sign In" + "Get Started" CTA.
|
|
24
|
-
2. **Hero** — Two-column: left = headline + subtext + CTA + "no credit card" badge, right = product screenshot or illustration.
|
|
25
|
-
3. **Trust Strip** — 5-6 company logos, grayscale, 80px height each.
|
|
26
|
-
4. **Features** — 3×2 grid. Each card: icon, title, description. Focus on benefits, not specs.
|
|
27
|
-
5. **How It Works** — 3-step horizontal flow. Number + title + short description.
|
|
28
|
-
6. **Social Proof** — Quote block + person attribution.
|
|
29
|
-
7. **Pricing** — 3-tier cards. Highlight the middle tier with a "Popular" badge.
|
|
30
|
-
8. **FAQ** — Accordion or simple Q&A list, 4-6 items.
|
|
31
|
-
9. **CTA Footer** — Full-width, centered, strong headline.
|
|
32
|
-
10. **Footer** — Logo, copyright, link columns.
|
|
33
|
-
|
|
34
|
-
## Phase 2 — Key Component Styles
|
|
35
|
-
|
|
36
|
-
### Navigation
|
|
37
|
-
\`\`\`css
|
|
38
|
-
.nav { position: sticky; top: 0; z-index: 100; height: 64px; background: var(--color-bg-primary); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; backdrop-filter: blur(12px); }
|
|
39
|
-
.nav-inner { display: flex; justify-content: space-between; align-items: center; width: 100%; }
|
|
40
|
-
.nav-links { display: flex; gap: 32px; align-items: center; }
|
|
41
|
-
\`\`\`
|
|
42
|
-
|
|
43
|
-
### Hero
|
|
44
|
-
\`\`\`css
|
|
45
|
-
.hero { padding: 120px 0 80px; }
|
|
46
|
-
.hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
|
|
47
|
-
.hero h1 { font-size: 56px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
|
|
48
|
-
.hero p { font-size: 20px; color: var(--color-text-secondary); margin: 24px 0 32px; max-width: 480px; }
|
|
49
|
-
\`\`\`
|
|
50
|
-
|
|
51
|
-
### Pricing Cards
|
|
52
|
-
\`\`\`css
|
|
53
|
-
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
|
|
54
|
-
.pricing-card { padding: 40px 32px; border-radius: var(--radius); border: 1px solid var(--color-border); background: var(--color-bg-surface); }
|
|
55
|
-
.pricing-card.featured { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); transform: scale(1.03); }
|
|
56
|
-
.price { font-size: 48px; font-weight: 800; margin: 16px 0; }
|
|
57
|
-
.price span { font-size: 16px; font-weight: 400; color: var(--color-text-secondary); }
|
|
58
|
-
\`\`\`
|
|
59
|
-
|
|
60
|
-
## Phase 3 — Content Rules
|
|
61
|
-
|
|
62
|
-
- Every headline sells a benefit, not describes a feature
|
|
63
|
-
- Pricing: use specific numbers ($29, $79, $199) not "Free / Pro / Enterprise" placeholders
|
|
64
|
-
- Social proof: realistic company names, real-sounding quote
|
|
65
|
-
- CTA button text: action-oriented — "Start Building", "Get Early Access", "See Plans"
|
|
66
|
-
- No lorem ipsum, no placeholder images that look like placeholders — use gradient shapes
|
|
67
|
-
|
|
68
|
-
## Phase 4 — Anti-Slop Check
|
|
69
|
-
|
|
70
|
-
Same checklist as web-prototype, plus:
|
|
71
|
-
- [ ] Pricing cards don't all look identical — featured tier is visually distinct
|
|
72
|
-
- [ ] Hero doesn't use a gradient background (use solid, pattern, or image)
|
|
73
|
-
- [ ] Trust logos are monochrome, same height, evenly spaced`,
|
|
74
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slide-deck.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/slide-deck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,SAAS,EAAE,WAqNrB,CAAC"}
|