@jini-ai/agent-plugins 0.6.16 → 0.6.19
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 +35 -1
- package/NOTICE +14 -0
- package/README.md +35 -14
- package/charts-echarts/plugin.json +39 -0
- package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
- package/charts-recharts/plugin.json +32 -0
- package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
- package/cloudflare/NOTES.md +16 -0
- package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
- package/cloudflare/lib/api.mjs +96 -0
- package/cloudflare/lib/assets.mjs +65 -0
- package/cloudflare/lib/dns.mjs +32 -0
- package/cloudflare/lib/domain-inventory.mjs +61 -0
- package/cloudflare/lib/domain-status.mjs +48 -0
- package/cloudflare/lib/domains.mjs +95 -0
- package/cloudflare/lib/forms.mjs +254 -0
- package/cloudflare/lib/pages-upload.mjs +51 -0
- package/cloudflare/lib/target.mjs +165 -0
- package/cloudflare/lib/workers-upload.mjs +48 -0
- package/cloudflare/lib/zones.mjs +25 -0
- package/cloudflare/mcp.json +4 -0
- package/cloudflare/plugin.json +96 -0
- package/cloudflare/skills/cloudflare/SKILL.md +57 -0
- package/cloudflare/skills/cloudflare/references/domains.md +31 -0
- package/cloudflare/skills/cloudflare/references/pages.md +18 -0
- package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
- package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
- package/cloudflare/skills/cloudflare/references/workers.md +42 -0
- package/cloudflare/targets/cloudflare-pages.mjs +12 -0
- package/cloudflare/targets/cloudflare-workers.mjs +17 -0
- package/cloudflare/tovu-consent.json +6 -0
- package/cloudflare/tovu-deploy-targets.json +630 -0
- package/cloudflare/tovu-form-destinations.json +12 -0
- package/cloudflare/worker/forms-receiver.mjs +249 -0
- package/composio/mcp.json +10 -0
- package/composio/plugin.json +68 -0
- package/composio/skills/composio/SKILL.md +85 -0
- package/dist/core/identity-namespace.d.ts +12 -0
- package/dist/core/identity-namespace.js +20 -0
- package/dist/folder-zip-node.js +29 -7
- package/dist/lifecycle/bundled-digests.js +4 -3
- package/dist/lifecycle/install.d.ts +7 -0
- package/dist/lifecycle/install.js +45 -3
- package/dist/lifecycle/manifest.d.ts +2 -2
- package/dist/lifecycle/manifest.js +5 -3
- package/dist/lifecycle/node.js +2 -0
- package/dist/lifecycle/persistent-state.js +1 -1
- package/dist/lifecycle/ports.d.ts +8 -0
- package/dist/lifecycle/seed-bundled.js +4 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +3 -2
- package/fly/deploy-configs/fly.mjs +115 -0
- package/fly/deploy-ops/fly.mjs +102 -0
- package/fly/mcp.json +4 -0
- package/fly/plugin.json +81 -0
- package/fly/scripts/render-deploy-workflow.mjs +150 -0
- package/fly/skills/fly/SKILL.md +43 -0
- package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
- package/fly/skills/fly/references/fly.template.toml +81 -0
- package/fly/tovu-credential-schemes.json +11 -0
- package/fly/tovu-deploy-configs.json +21 -0
- package/fly/tovu-deploy-ops.json +14 -0
- package/github/deploy-ops/github-actions.mjs +164 -0
- package/github/deployments/github.mjs +415 -0
- package/github/mcp.json +4 -0
- package/github/plugin.json +105 -0
- package/github/skills/github/SKILL.md +249 -0
- package/github/skills/github/references/actions.md +224 -0
- package/github/skills/github/references/auth-and-tokens.md +140 -0
- package/github/skills/github/references/repo-files.md +135 -0
- package/github/skills/github/references/site-backup.md +159 -0
- package/github/skills/github/references/source-control.md +123 -0
- package/github/source-control/backup-push.mjs +242 -0
- package/github/source-control/commit-site.mjs +459 -0
- package/github/source-control/github.mjs +93 -0
- package/github/source-control/write-files.mjs +468 -0
- package/github/tovu-deploy-ops.json +13 -0
- package/github/tovu-source-control.json +117 -0
- package/github-pages/NOTES.md +19 -0
- package/github-pages/mcp.json +4 -0
- package/github-pages/plugin.json +48 -0
- package/github-pages/skills/github-pages/SKILL.md +44 -0
- package/github-pages/targets/github-pages.mjs +543 -0
- package/github-pages/tovu-deploy-targets.json +327 -0
- package/google-login/exports/google-g.svg +1 -0
- package/google-login/exports/sign-in-button.css +68 -0
- package/google-login/exports/sign-in-button.html +4 -0
- package/google-login/mcp.json +4 -0
- package/google-login/plugin.json +59 -0
- package/google-login/skills/google-login/SKILL.md +96 -0
- package/google-login/tovu-login-providers.json +21 -0
- package/google-workspace/README.md +132 -0
- package/google-workspace/form-destinations/README.md +87 -0
- package/google-workspace/form-destinations/dedupe.mjs +43 -0
- package/google-workspace/form-destinations/delivery-result.mjs +69 -0
- package/google-workspace/form-destinations/mapping.mjs +152 -0
- package/google-workspace/form-destinations/sheets.mjs +202 -0
- package/google-workspace/lib/auth.mjs +81 -0
- package/google-workspace/lib/drive-files.mjs +54 -0
- package/google-workspace/lib/form-destination-settings.mjs +72 -0
- package/google-workspace/lib/http.mjs +168 -0
- package/google-workspace/lib/picker-flow.mjs +171 -0
- package/google-workspace/lib/picker-selection.mjs +107 -0
- package/google-workspace/lib/product-state.mjs +93 -0
- package/google-workspace/lib/request-policy.mjs +163 -0
- package/google-workspace/lib/sheets-a1.mjs +79 -0
- package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
- package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
- package/google-workspace/lib/sheets-client.mjs +286 -0
- package/google-workspace/lib/surface-actions.mjs +107 -0
- package/google-workspace/mcp.json +4 -0
- package/google-workspace/plugin.json +77 -0
- package/google-workspace/products.json +12 -0
- package/google-workspace/skills/google-workspace/SKILL.md +82 -0
- package/google-workspace/skills/google-workspace/references/connection.md +102 -0
- package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
- package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
- package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
- package/google-workspace/tools/account-info.mjs +18 -0
- package/google-workspace/tools/sheets/README.md +54 -0
- package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
- package/google-workspace/tools/sheets/copy.mjs +23 -0
- package/google-workspace/tools/sheets/create.mjs +35 -0
- package/google-workspace/tools/sheets/find-replace.mjs +38 -0
- package/google-workspace/tools/sheets/find.mjs +52 -0
- package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
- package/google-workspace/tools/sheets/get.mjs +22 -0
- package/google-workspace/tools/sheets/values-append.mjs +27 -0
- package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
- package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
- package/google-workspace/tools/sheets/values-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-get.mjs +21 -0
- package/google-workspace/tools/sheets/values-update.mjs +26 -0
- package/google-workspace/tools/sheets-admin/README.md +45 -0
- package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
- package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
- package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
- package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
- package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
- package/google-workspace/tools/sheets-admin/format.mjs +70 -0
- package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
- package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
- package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
- package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
- package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
- package/google-workspace/tovu-admin-surfaces.json +63 -0
- package/google-workspace/tovu-agent-tools.json +1178 -0
- package/google-workspace/tovu-connections.json +35 -0
- package/google-workspace/tovu-form-destinations.json +10 -0
- package/google-workspace/ui/README.md +73 -0
- package/google-workspace/ui/connection-panel.handler.mjs +167 -0
- package/google-workspace/ui/connection-panel.html +17 -0
- package/google-workspace/ui/connection-panel.mjs +189 -0
- package/google-workspace/ui/connection-view.mjs +120 -0
- package/google-workspace/ui/destination-panel.handler.mjs +106 -0
- package/google-workspace/ui/destination-panel.html +17 -0
- package/google-workspace/ui/destination-panel.mjs +150 -0
- package/google-workspace/ui/dom.mjs +140 -0
- package/google-workspace/ui/panel.css +170 -0
- package/google-workspace/ui/picker-flow.mjs +87 -0
- package/google-workspace/ui/picker-view.mjs +44 -0
- package/google-workspace/ui/picker.handler.mjs +56 -0
- package/google-workspace/ui/picker.html +17 -0
- package/google-workspace/ui/picker.mjs +88 -0
- package/google-workspace/ui/surface-client.mjs +227 -0
- package/higgsfield-media/mcp.json +9 -0
- package/higgsfield-media/plugin.json +109 -0
- package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
- package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
- package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
- package/jev/mcp.json +4 -0
- package/jev/plugin.json +44 -0
- package/jev/skills/jev/SKILL.md +308 -0
- package/jev/skills/jev/references/cookbooks.md +197 -0
- package/jev/skills/jev/references/jaggedness.md +135 -0
- package/jev/skills/jev/references/javascript-sdk.md +146 -0
- package/jev/skills/jev/references/patterns.md +123 -0
- package/jev/skills/jev/references/primitives-reference.md +187 -0
- package/langfuse/plugin.json +22 -0
- package/meilisearch/mcp.json +4 -0
- package/meilisearch/plugin.json +54 -0
- package/meilisearch/providers/meilisearch.mjs +651 -0
- package/meilisearch/skills/meilisearch/SKILL.md +43 -0
- package/meilisearch/tovu-search-providers.json +10 -0
- package/netlify/NOTES.md +13 -0
- package/netlify/mcp.json +4 -0
- package/netlify/plugin.json +47 -0
- package/netlify/skills/netlify/SKILL.md +39 -0
- package/netlify/targets/netlify.mjs +384 -0
- package/netlify/tovu-consent.json +6 -0
- package/netlify/tovu-deploy-targets.json +163 -0
- package/opentelemetry/mcp.json +4 -0
- package/opentelemetry/plugin.json +52 -0
- package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
- package/package.json +161 -6
- package/posthog/mcp.json +4 -0
- package/posthog/plugin.json +46 -0
- package/posthog/skills/posthog/SKILL.md +36 -0
- package/railway/deploy-configs/railway.mjs +135 -0
- package/railway/deploy-ops/railway.mjs +167 -0
- package/railway/mcp.json +4 -0
- package/railway/plugin.json +45 -0
- package/railway/skills/railway/SKILL.md +66 -0
- package/railway/tovu-deploy-configs.json +16 -0
- package/railway/tovu-deploy-ops.json +11 -0
- package/render/deploy-configs/render.mjs +141 -0
- package/render/deploy-ops/render.mjs +152 -0
- package/render/mcp.json +4 -0
- package/render/plugin.json +47 -0
- package/render/skills/render/SKILL.md +63 -0
- package/render/tovu-deploy-configs.json +16 -0
- package/render/tovu-deploy-ops.json +11 -0
- package/resend/NOTES.md +52 -0
- package/resend/adapters/resend.mjs +161 -0
- package/resend/lib/domains.mjs +137 -0
- package/resend/lib/errors.mjs +25 -0
- package/resend/lib/feedback.mjs +118 -0
- package/resend/mcp.json +13 -0
- package/resend/plugin.json +192 -0
- package/resend/skills/resend/SKILL.md +107 -0
- package/resend/tovu-mail-adapters.json +22 -0
- package/s3-compatible/NOTES.md +11 -0
- package/s3-compatible/mcp.json +4 -0
- package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
- package/s3-compatible/plugin.json +56 -0
- package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
- package/s3-compatible/targets/s3-compatible.mjs +1054 -0
- package/s3-compatible/tovu-deploy-targets.json +432 -0
- package/s3-compatible/tovu-object-stores.json +29 -0
- package/sentry/mcp.json +4 -0
- package/sentry/plugin.json +49 -0
- package/sentry/skills/sentry/SKILL.md +34 -0
- package/shopify/mcp.json +4 -0
- package/shopify/plugin.json +22 -0
- package/shopify/skills/shopify/SKILL.md +103 -0
- package/shopify/skills/shopify/references/catalog-sync.md +74 -0
- package/shopify/skills/shopify/references/domains.md +26 -0
- package/shopify/skills/shopify/references/live-storefront.md +34 -0
- package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
- package/site-compliance/mcp.json +4 -0
- package/site-compliance/plugin.json +34 -0
- package/site-compliance/skills/site-compliance/SKILL.md +220 -0
- package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
- package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
- package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
- package/site-import/mcp.json +4 -0
- package/site-import/plugin.json +41 -0
- package/site-import/skills/site-import/SKILL.md +232 -0
- package/site-import/skills/site-import/references/content-mapping.md +166 -0
- package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
- package/site-import/skills/site-import/references/theme-extraction.md +34 -0
- package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/slide-design/mcp.json +4 -0
- package/slide-design/plugin.json +26 -0
- package/slide-design/skills/slide-design/SKILL.md +103 -0
- package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
- package/slide-design/skills/slide-design/references/html-deck.md +175 -0
- package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
- package/slide-design/skills/slide-design/references/review.md +93 -0
- package/slide-design/skills/slide-design/references/storyline.md +118 -0
- package/stripe/plugin.json +22 -0
- package/supabase/mcp.json +26 -0
- package/supabase/plugin.json +78 -0
- package/supabase/skills/supabase/SKILL.md +169 -0
- package/supabase/skills/supabase/references/failure-modes.md +101 -0
- package/ui-ux-design/CHANGELOG.md +28 -0
- package/ui-ux-design/LICENSE +201 -0
- package/ui-ux-design/NOTICE +14 -0
- package/ui-ux-design/README.md +62 -0
- package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/ui-ux-design/mcp.json +4 -0
- package/ui-ux-design/plugin.json +26 -0
- package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
- package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
- package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
- package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
- package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
- package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
- package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
- package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
- package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
- package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
- package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
- package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
- package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
- package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
- package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
- package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
- package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
- package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
- package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
- package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
- package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
- package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
- package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
- package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
- package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
- package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
- package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
- package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
- package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
- package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
- package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
- package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
- package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
- package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
- package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
- package/vercel/NOTES.md +23 -0
- package/vercel/mcp.json +4 -0
- package/vercel/object-stores/vercel-blob.mjs +147 -0
- package/vercel/plugin.json +47 -0
- package/vercel/skills/vercel/SKILL.md +48 -0
- package/vercel/targets/vercel.mjs +586 -0
- package/vercel/tovu-consent.json +6 -0
- package/vercel/tovu-deploy-targets.json +219 -0
- package/vercel/tovu-object-stores.json +10 -0
- package/wordpress/NOTES.md +33 -0
- package/wordpress/plugin.json +30 -0
- package/wordpress/skills/wordpress/SKILL.md +43 -0
- package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
- package/wordpress/skills/wordpress/references/subdomain.md +66 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Premium UI
|
|
2
|
+
|
|
3
|
+
Premium web and product UI guidance: raising perceived quality without sacrificing
|
|
4
|
+
clarity, conversion, performance, accessibility, or maintainability.
|
|
5
|
+
|
|
6
|
+
This file routes premium-design methods. It does not define another universal
|
|
7
|
+
workflow, completion checklist, or implementation contract; use `ui-loop.md` for
|
|
8
|
+
completion review. Its final output section only names source-specific decisions to
|
|
9
|
+
capture when these methods are used.
|
|
10
|
+
|
|
11
|
+
Load for websites, landing pages, SaaS screens, hero sections, service pages,
|
|
12
|
+
ecommerce pages, portfolios, dashboards, and UI copy where the ask is a premium,
|
|
13
|
+
expensive, luxury, high-converting, agency-grade, high-trust, or visually elevated
|
|
14
|
+
result.
|
|
15
|
+
|
|
16
|
+
## Choose The Design-School Notes
|
|
17
|
+
|
|
18
|
+
Never gate these notes on the user naming their sources. Select them from the actual
|
|
19
|
+
surface and scope:
|
|
20
|
+
|
|
21
|
+
An earlier version gated them on the user naming a source, a condition that rarely
|
|
22
|
+
fired; premium work then used this summary alone and became templated. The current
|
|
23
|
+
router gates on surface breadth instead. Keep the ambiguous-case default at “load
|
|
24
|
+
all three” so the same failure does not return under a different trigger.
|
|
25
|
+
|
|
26
|
+
- **Broad, open-ended, hybrid marketing/product, ecommerce, or high-stakes premium
|
|
27
|
+
work:** load all three.
|
|
28
|
+
- **Clearly narrow marketing/first-impression work:** load Sam Crawford and
|
|
29
|
+
Self-Made Web Designer.
|
|
30
|
+
- **Clearly narrow product UI, dashboard, or admin work:** load Self-Made Web
|
|
31
|
+
Designer and Kole Jain.
|
|
32
|
+
|
|
33
|
+
When scope is ambiguous or crosses categories, load all three. Together they are
|
|
34
|
+
about 19KB (~5k tokens); the specific methods live in the notes, not this router.
|
|
35
|
+
|
|
36
|
+
| File | What it gives you |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `sam-crawford-premium-websites.md` | Premium-website psychology and constraints — halo effect, cognitive fluency, peak-end moments, bespoke/real assets, commercial filtering, client ownership, and post-launch care. |
|
|
39
|
+
| `self-made-web-designer-core-skills.md` | The repeatable fundamentals — typography, layout, spacing, color, code literacy, conversion thinking — plus fast upgrades to an existing site: font pairing, a focal visual idea, visual rhyming, depth, opacity hierarchy, and forcing divergent variants instead of shipping the first workable one |
|
|
40
|
+
| `kole-jain-uiux-concepts.md` | Product-UI treatments — signifiers and affordances, contextual grids, typography ranges, color semantics, dark mode, shadows, icons/buttons, micro-interactions, and text-over-image overlays |
|
|
41
|
+
|
|
42
|
+
They are design schools, not absolute rules. When they conflict, state the
|
|
43
|
+
tradeoff, pick the advice that best fits the product, audience, and business goal,
|
|
44
|
+
and avoid blending incompatible aesthetics without a clear reason.
|
|
45
|
+
|
|
46
|
+
## Reference-Specific Output
|
|
47
|
+
|
|
48
|
+
When this router is activated, record the applicable premium decisions:
|
|
49
|
+
|
|
50
|
+
- first-impression target
|
|
51
|
+
- visual hierarchy and layout direction
|
|
52
|
+
- asset and imagery plan
|
|
53
|
+
- copy and CTA approach
|
|
54
|
+
- interaction and animation restraint
|
|
55
|
+
- risks or tradeoffs around performance, accessibility, conversion, and maintainability
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Research and Validation
|
|
2
|
+
|
|
3
|
+
Use this reference when the design needs a validation plan, clearer user framing, or a way to separate assumptions from evidence.
|
|
4
|
+
|
|
5
|
+
This file owns proposed evidence-gathering, not visual self-review. Use `ui-loop.md`
|
|
6
|
+
for the design gate.
|
|
7
|
+
|
|
8
|
+
## Important Constraint
|
|
9
|
+
|
|
10
|
+
Do not present invented research as completed research. Use this reference to structure:
|
|
11
|
+
|
|
12
|
+
- proposed research plans
|
|
13
|
+
- user hypotheses
|
|
14
|
+
- validation criteria
|
|
15
|
+
- usability-test plans
|
|
16
|
+
|
|
17
|
+
## Useful Artifacts
|
|
18
|
+
|
|
19
|
+
### Proto-Persona
|
|
20
|
+
|
|
21
|
+
Use when real research does not yet exist.
|
|
22
|
+
|
|
23
|
+
Include:
|
|
24
|
+
|
|
25
|
+
- user type
|
|
26
|
+
- main goals
|
|
27
|
+
- main frustrations
|
|
28
|
+
- environment/context of use
|
|
29
|
+
- skill level
|
|
30
|
+
- critical accessibility considerations
|
|
31
|
+
|
|
32
|
+
Label it explicitly as a working assumption.
|
|
33
|
+
|
|
34
|
+
### Journey Snapshot
|
|
35
|
+
|
|
36
|
+
Map:
|
|
37
|
+
|
|
38
|
+
- trigger
|
|
39
|
+
- entry point
|
|
40
|
+
- main steps
|
|
41
|
+
- friction points
|
|
42
|
+
- moments of uncertainty
|
|
43
|
+
- completion state
|
|
44
|
+
- follow-up state
|
|
45
|
+
|
|
46
|
+
### Usability-Test Plan
|
|
47
|
+
|
|
48
|
+
Define:
|
|
49
|
+
|
|
50
|
+
- research questions
|
|
51
|
+
- participant criteria
|
|
52
|
+
- tasks to complete
|
|
53
|
+
- success criteria
|
|
54
|
+
- metrics to watch
|
|
55
|
+
- qualitative prompts
|
|
56
|
+
|
|
57
|
+
### Validation Plan Contract
|
|
58
|
+
|
|
59
|
+
Map each uncertain user or usability claim to a research question, participant or
|
|
60
|
+
evidence source, task, success criterion, and decision the result would change.
|
|
61
|
+
Keep untested claims labeled as hypotheses.
|
|
62
|
+
|
|
63
|
+
### Reference-Specific Validation Questions
|
|
64
|
+
|
|
65
|
+
Use these to decide what the research or usability plan must observe; do not treat
|
|
66
|
+
untested answers as evidence:
|
|
67
|
+
|
|
68
|
+
- does the layout support the primary user goal quickly
|
|
69
|
+
- are key decisions reversible
|
|
70
|
+
- do labels match user language
|
|
71
|
+
- are errors recoverable
|
|
72
|
+
- is the empty state actionable
|
|
73
|
+
- is keyboard/mobile usage still workable
|
|
74
|
+
|
|
75
|
+
## When This Reference Is Worth Loading
|
|
76
|
+
|
|
77
|
+
- dashboard or workflow-heavy UI
|
|
78
|
+
- ambiguous user roles
|
|
79
|
+
- onboarding flows
|
|
80
|
+
- high-risk UX with multiple steps
|
|
81
|
+
- claims about "user needs" that need structure
|
|
82
|
+
|
|
83
|
+
## Anti-Patterns
|
|
84
|
+
|
|
85
|
+
- pretending empathy maps are evidence
|
|
86
|
+
- writing personas with no behavioral relevance
|
|
87
|
+
- validation plans with no measurable success criteria
|
|
88
|
+
- feature flows optimized for internal assumptions only
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Sam Crawford Premium Website Notes
|
|
2
|
+
|
|
3
|
+
Source context: extracted from user-provided transcript files attributed to Sam Crawford / bycrawford, including:
|
|
4
|
+
|
|
5
|
+
- `Brutally Honest Advice About Web Design in 9 mins.txt`
|
|
6
|
+
- `How To Build a Website SO Premium They Beg You To Buy.txt`
|
|
7
|
+
- `The Psychology of Premium Websites.txt`
|
|
8
|
+
|
|
9
|
+
The duplicate file `Brutally Honest Advice About Web Design in 9 mins (1).txt` was ignored because it matched the non-suffixed file byte-for-byte.
|
|
10
|
+
|
|
11
|
+
The later pasted checklist `How to Build a Website So Premium People Trust You Instantly` was reviewed and treated as redundant with this reference. It restates the same system around intentional first impression, bespoke assets, brand foundations, subtle animation, strategic structure, client autonomy, and handover/post-launch care.
|
|
12
|
+
|
|
13
|
+
## Core Thesis
|
|
14
|
+
|
|
15
|
+
Premium websites create a fast feeling of quality, trust, and authority through intentional first impressions, clarity, bespoke visual systems, and restrained details. The goal is not just to look impressive; the site must help the right visitor understand the offer, trust the business, and take the next action.
|
|
16
|
+
|
|
17
|
+
## Psychological Principles
|
|
18
|
+
|
|
19
|
+
- **Halo effect:** visitors form an initial judgment extremely quickly, and that judgment colors how they interpret the rest of the site. Treat the hero and first viewport as the highest-value real estate.
|
|
20
|
+
- **Cognitive fluency:** people trust experiences that are easy to process. Reduce confusion with simple navigation, strong hierarchy, predictable layouts, clear copy, and generous spacing.
|
|
21
|
+
- **Peak-end rule:** users remember standout moments and the ending more than the average of the whole experience. Use micro-interactions, confirmation states, polished transitions, and good completion moments to create small positive peaks.
|
|
22
|
+
- **First-impression feeling:** name the intended immediate feeling—calm,
|
|
23
|
+
confidence, authority, excitement, exclusivity, technical competence, or another
|
|
24
|
+
product-specific target—before selecting premium signals.
|
|
25
|
+
- **Blink test:** expose the composition only briefly, then check what remains in
|
|
26
|
+
memory. The offer or current task, intended audience, and next action should
|
|
27
|
+
survive the glance.
|
|
28
|
+
|
|
29
|
+
## Premium Signals
|
|
30
|
+
|
|
31
|
+
- Use bespoke assets instead of generic icons, default templates, and disconnected stock imagery.
|
|
32
|
+
- Make graphics serve a purpose: break up content, guide the eye, clarify the message, or reinforce the brand.
|
|
33
|
+
- Use a professional logo, cohesive color palette, and thoughtfully chosen fonts as the foundation.
|
|
34
|
+
- Prefer real imagery, even imperfect real imagery, when it proves that the business is genuine.
|
|
35
|
+
- Use metrics, case studies, real faces, and specific proof where they build trust faster than paragraphs.
|
|
36
|
+
- Give the design a point of view so the business does not look interchangeable with competitors.
|
|
37
|
+
|
|
38
|
+
## Copy And Content
|
|
39
|
+
|
|
40
|
+
- Write for scanners. Use short sections, obvious headings, bolded essentials, and copy that can be understood at a glance.
|
|
41
|
+
- Cut weak copy aggressively. If removing a sentence does not make the page worse, remove it.
|
|
42
|
+
- Sell the result or transformation, not the internal feature list.
|
|
43
|
+
- Make the about page reassure the visitor: credibility, understanding of their problem, proof of having solved it before, and the transformation created.
|
|
44
|
+
- Be explicit about who the offer is for and who it is not for.
|
|
45
|
+
- Where commercially appropriate, show pricing or at least a starting point to filter the wrong leads and attract qualified buyers.
|
|
46
|
+
|
|
47
|
+
## Structure And Conversion
|
|
48
|
+
|
|
49
|
+
- Give each page a purpose and a next step.
|
|
50
|
+
- Make the CTA obvious, easy to find, and easy to take.
|
|
51
|
+
- Use fewer, stronger pages instead of many mediocre pages.
|
|
52
|
+
- Ensure the site map, page hierarchy, internal linking, and content organization make sense for both people and search engines.
|
|
53
|
+
- Do not bury the main action in the footer or force visitors to guess the next logical step.
|
|
54
|
+
- Treat confusion as a conversion leak.
|
|
55
|
+
|
|
56
|
+
## Animation And Interaction
|
|
57
|
+
|
|
58
|
+
- Use subtle motion for feedback, orientation, and attention guidance.
|
|
59
|
+
- Good examples: button hover response, natural content fade-in, smooth transitions, useful form validation feedback.
|
|
60
|
+
- Avoid animation that becomes the thing people notice instead of the offer.
|
|
61
|
+
- Avoid heavy 3D, parallax, or scroll effects when they slow the site, overwhelm the visitor, or distract from the message.
|
|
62
|
+
- Respect reduced-motion preferences and performance budgets.
|
|
63
|
+
|
|
64
|
+
## Performance And Practicality
|
|
65
|
+
|
|
66
|
+
- A premium site must feel fast, especially on mobile and weak connections.
|
|
67
|
+
- Compress images, avoid bloated plugins, and question every unnecessary animation or asset.
|
|
68
|
+
- Test outside the designer's ideal setup: mobile viewport, slower network, and realistic user paths.
|
|
69
|
+
|
|
70
|
+
## Commercial And Ownership Constraints
|
|
71
|
+
|
|
72
|
+
- Avoid black-box builds when client ownership matters. A premium site should be practical to update, not a trap that requires a developer for every content change.
|
|
73
|
+
- Treat launch as the start: collect data, test, optimize, add fresh proof, and keep the site current.
|
|
74
|
+
|
|
75
|
+
## Applying These Principles
|
|
76
|
+
|
|
77
|
+
Use `ui-loop.md` for generic design and rendered review. This reference contributes
|
|
78
|
+
premium psychology, signal selection, copy/conversion techniques,
|
|
79
|
+
motion/performance examples, and commercial/ownership constraints.
|
|
80
|
+
|
|
81
|
+
Client ownership, maintainability after launch, and future optimization remain
|
|
82
|
+
additional product constraints when the brief includes them. Record those in the
|
|
83
|
+
design output rather than turning them into universal visual checks.
|
|
84
|
+
|
|
85
|
+
## Reference-Specific Output
|
|
86
|
+
|
|
87
|
+
- first-impression psychology and selected premium signals
|
|
88
|
+
- scanner-oriented copy, proof, and qualification decisions
|
|
89
|
+
- CTA/page-purpose and information-architecture implications
|
|
90
|
+
- motion and weak-connection performance constraints
|
|
91
|
+
- client ownership and post-launch maintenance requirements
|
|
92
|
+
|
|
93
|
+
## Conflict Handling For Future References
|
|
94
|
+
|
|
95
|
+
If another reference recommends a different direction, resolve the conflict by asking:
|
|
96
|
+
|
|
97
|
+
1. What audience is this for?
|
|
98
|
+
2. What feeling should the first impression create?
|
|
99
|
+
3. What business action should the page drive?
|
|
100
|
+
4. Which advice improves clarity, trust, and conversion for this context?
|
|
101
|
+
5. Which advice introduces avoidable risk in performance, accessibility, or maintainability?
|
|
102
|
+
|
|
103
|
+
Document the chosen direction briefly instead of silently merging incompatible advice.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Self-Made Web Designer Core Skills Notes
|
|
2
|
+
|
|
3
|
+
Source context: extracted from user-provided transcript files attributed to Self-Made Web Designer:
|
|
4
|
+
|
|
5
|
+
- `The Only 5 Web Design Skills That Actually Matter (2025).txt`
|
|
6
|
+
- `6 Tips to 10x ANY Site's Design.txt`
|
|
7
|
+
|
|
8
|
+
## Core Thesis
|
|
9
|
+
|
|
10
|
+
Strong web design comes from a small set of repeatable fundamentals: typography, layout, color, code literacy, and conversion thinking. Premium polish is not just taste; it comes from systems, deliberate focal ideas, and enough iteration to avoid settling for the first workable version.
|
|
11
|
+
|
|
12
|
+
## The Five Skills
|
|
13
|
+
|
|
14
|
+
### Typography
|
|
15
|
+
|
|
16
|
+
- Treat typography as the largest visual surface on most websites.
|
|
17
|
+
- Pick fonts that match the project's personality instead of defaulting to the same overused free fonts.
|
|
18
|
+
- Consider less common free or affordable sources such as Fontshare and Uncut when a project needs more personality.
|
|
19
|
+
- Build a type scale instead of eyeballing sizes. Start with a base body size, often around 16px, then scale headings consistently.
|
|
20
|
+
- Use `rem` values where practical so type scales remain systematic.
|
|
21
|
+
- Keep body text letter spacing at the default for legibility.
|
|
22
|
+
- Tighten heading letter spacing and line height only where the larger type benefits from more impact.
|
|
23
|
+
- Use about 150% line height for paragraph text as a starting point.
|
|
24
|
+
|
|
25
|
+
### Layout
|
|
26
|
+
|
|
27
|
+
- Use systems rather than dragging elements until they feel right.
|
|
28
|
+
- Start from a responsive column grid: 12 columns on desktop, 8 on tablet, and 4 on mobile is a useful default.
|
|
29
|
+
- Use an 8-point spacing system for rhythm: 8, 16, 24, 32, and so on.
|
|
30
|
+
|
|
31
|
+
### Color
|
|
32
|
+
|
|
33
|
+
- Use the 60/30/10 rule as a starting point: neutral/background/text colors, supporting colors, and accent colors for CTAs or emphasis.
|
|
34
|
+
- Prefer opacity and tints from a core color before adding more unrelated colors.
|
|
35
|
+
- Borrow and refine proven palettes rather than inventing every palette from scratch.
|
|
36
|
+
- Use browser tooling such as Chrome DevTools CSS Overview to inspect real sites' color and type systems.
|
|
37
|
+
|
|
38
|
+
### Code Literacy
|
|
39
|
+
|
|
40
|
+
- Learn enough HTML, CSS, JavaScript, and platform-specific basics to understand what the design requires and how to adapt it.
|
|
41
|
+
- A designer does not need to become a full-stack developer, but code literacy separates practical designers from purely visual ones.
|
|
42
|
+
- Start from examples, snippets, CodePen, or generated code that gets most of the way there, then adjust the final behavior and polish.
|
|
43
|
+
- Design with implementation constraints in mind.
|
|
44
|
+
|
|
45
|
+
### Conversion
|
|
46
|
+
|
|
47
|
+
- Design for action, not just looks.
|
|
48
|
+
- Give every page one primary goal: buy, book, sign up, download, or another clear action.
|
|
49
|
+
- Put a clear CTA in the hero, navigation, and at logical intervals down the page.
|
|
50
|
+
- Build trust with clarity, emotion, testimonials, reviews, and social proof.
|
|
51
|
+
- Make users know, like, trust, and feel something from the brand.
|
|
52
|
+
- Do not improve visual style at the cost of the user journey.
|
|
53
|
+
|
|
54
|
+
## Six Fast Upgrade Techniques
|
|
55
|
+
|
|
56
|
+
### 1. Upgrade Typography With Font Pairing
|
|
57
|
+
|
|
58
|
+
- One-font sites can work, but stronger visual character often comes from a better pairing system.
|
|
59
|
+
- Use superfamilies when you want cohesion with low risk.
|
|
60
|
+
- Use separate font families when you need more personality, but ensure they feel from the same world.
|
|
61
|
+
- Choose an anchor font first. For many web pages, the headline font is the best anchor because it sets the personality.
|
|
62
|
+
- Pick supporting fonts that contrast enough to add interest without feeling accidental.
|
|
63
|
+
- Avoid pairings that are almost the same but slightly different; they often look unintentional.
|
|
64
|
+
- Use references such as Fonts In Use to see proven pairings for a chosen anchor font.
|
|
65
|
+
|
|
66
|
+
### 2. Create A Star Of The Show
|
|
67
|
+
|
|
68
|
+
- A website is often the first meeting with a brand, so it should make the visitor feel something.
|
|
69
|
+
- Pick one visual idea that anchors attention long enough for the visitor to understand and act.
|
|
70
|
+
- The star can be a font, image, object, illustration, product visual, gradient, chart motif, or interactive element.
|
|
71
|
+
- Connect the star to the story of the site rather than choosing it only because it looks cool.
|
|
72
|
+
- Let surrounding design decisions grow from that focal idea.
|
|
73
|
+
|
|
74
|
+
### 3. Use Visual Rhyming
|
|
75
|
+
|
|
76
|
+
- Repeat details from the core visual idea across the page so everything feels from the same universe.
|
|
77
|
+
- Rhyming can happen through shapes, colors, textures, gradients, masks, icons, card treatments, buttons, or link details.
|
|
78
|
+
- Pull pieces from the strongest visual element and reuse them in secondary elements.
|
|
79
|
+
- Use repetition to create cohesion, not clutter.
|
|
80
|
+
|
|
81
|
+
### 4. Add Subtle Depth
|
|
82
|
+
|
|
83
|
+
- Use depth to make digital interfaces feel more tangible.
|
|
84
|
+
- Examples include light texture, noise, glass effects, layered cards, shadows, dimensional product elements, or 3D details.
|
|
85
|
+
- Keep depth subordinate to the star of the show.
|
|
86
|
+
- Avoid depth that competes with copy, harms readability, or looks like decoration pasted on top.
|
|
87
|
+
|
|
88
|
+
### 5. Use Opacity For Hierarchy
|
|
89
|
+
|
|
90
|
+
- Do not make every text element equally loud.
|
|
91
|
+
- Keep the most important headline or action at full emphasis.
|
|
92
|
+
- Lower opacity for supporting text, metadata, captions, muted navigation, or less important labels.
|
|
93
|
+
- Use opacity deliberately to help the eye know what to read first, skim second, and ignore unless needed.
|
|
94
|
+
- Maintain sufficient contrast for accessibility.
|
|
95
|
+
|
|
96
|
+
### 6. Explore Strong Variants
|
|
97
|
+
|
|
98
|
+
- Do not keep polishing only the first idea.
|
|
99
|
+
- Create intentionally different versions: light and dark modes, different layout structures, different focal visuals, different font anchors, or different image concepts.
|
|
100
|
+
- Push far enough away from the first version to reveal better possibilities.
|
|
101
|
+
- Compare variants against the page goal, first-impression target, readability, and conversion path.
|
|
102
|
+
|
|
103
|
+
## Applying These Principles
|
|
104
|
+
|
|
105
|
+
The canonical UI Loop handles generic design and rendered review. This reference
|
|
106
|
+
contributes candidate construction heuristics—type scales, grids, spacing, palette
|
|
107
|
+
ratios, font pairing, focal ideas, visual rhyming, depth, and opacity hierarchy—not
|
|
108
|
+
a second definition of quality.
|
|
109
|
+
|
|
110
|
+
The Web Design persona's Principal Direction Pass owns when and how many variants to
|
|
111
|
+
generate. This section supplies possible axes of divergence only.
|
|
112
|
+
|
|
113
|
+
## Reference-Specific Output
|
|
114
|
+
|
|
115
|
+
- selected type-scale, grid, spacing, and palette heuristics
|
|
116
|
+
- font-pairing or single-family decision
|
|
117
|
+
- focal “star of the show” and its connection to the page story
|
|
118
|
+
- visual-rhyming, depth, and opacity-hierarchy rules
|
|
119
|
+
- variant axes explored and the selected direction
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# UI Animation
|
|
2
|
+
|
|
3
|
+
> Maintained in AI-Dev-Shop. Downstream copies are synced from here; edit it in
|
|
4
|
+
> AI-Dev-Shop, not in a downstream copy.
|
|
5
|
+
|
|
6
|
+
Use this reference when implementing any animation: scroll reveals, text reveals,
|
|
7
|
+
transitions, pinned or scroll-linked sections, or micro-interactions.
|
|
8
|
+
|
|
9
|
+
This file owns **how** to animate: library choice, implementation defaults, and
|
|
10
|
+
micro-interaction recipes. It does not restate what siblings own:
|
|
11
|
+
|
|
12
|
+
- `delight-and-motion.md`: where delight belongs, intensity, microcopy.
|
|
13
|
+
- `ui-loop.md`: the final restraint and motion review (category 6) and the
|
|
14
|
+
accessibility baseline (category 8), including "understandable with reduced motion".
|
|
15
|
+
- `components-and-states.md`: which states each component needs and its interaction
|
|
16
|
+
rules (feedback timing, optimistic vs confirmed feedback).
|
|
17
|
+
- `foundations.md`: motion duration and easing as design tokens.
|
|
18
|
+
- `kuinetic-reference.md`: kUInetic syntax and every effect name used below.
|
|
19
|
+
- The `impeccable` skill's `reference/animate.md`, when installed: the motion thesis,
|
|
20
|
+
choosing material by meaning, the duration-by-consequence table, and the default
|
|
21
|
+
arrival curve. Use its numbers; this file does not repeat them.
|
|
22
|
+
|
|
23
|
+
## Library Choice: kUInetic First
|
|
24
|
+
|
|
25
|
+
1. **Detect kUInetic before writing any motion.** Use the signals in
|
|
26
|
+
`kuinetic-reference.md` → Detect: `data-kui` in markup, a `vendor/kuinetic/` folder,
|
|
27
|
+
a `kuinetic*.js` script tag, the `kuinetic` package, or `window.__kuinetic`.
|
|
28
|
+
2. **Present: use its attributes.** Express every effect the catalog names as `data-kui`.
|
|
29
|
+
Do not hand-write CSS or JS for an effect it provides. Do not load GSAP, Motion,
|
|
30
|
+
AOS, Animate.css or any second animation library for something it covers.
|
|
31
|
+
3. **Extend before escaping.** Compose effects with commas, sequence them with `at:`,
|
|
32
|
+
name repeated compositions with `data-kui-define`, retarget with `target:`, and use
|
|
33
|
+
`tween`/`tween-from` for supported properties outside a named preset (it has a fixed
|
|
34
|
+
property list that excludes `width`, `height`, `top`, `left` and skew) before writing
|
|
35
|
+
custom code.
|
|
36
|
+
4. **No matching effect: native CSS.** Transitions, `@keyframes`, `@starting-style`,
|
|
37
|
+
View Transitions, or scroll-driven `animation-timeline` behind `@supports`. Reuse the
|
|
38
|
+
same duration and easing tokens. Never animate a property a `data-kui` effect already
|
|
39
|
+
owns on the same element.
|
|
40
|
+
5. **Absent: native CSS first.** Propose adding kUInetic only when the surface needs
|
|
41
|
+
several of its effects and adding a dependency is in scope; never for one effect.
|
|
42
|
+
6. **Vendored copies lag.** Confirm a recent option exists in the shipped bundle before
|
|
43
|
+
using it (`kuinetic-reference.md` → Version lag).
|
|
44
|
+
|
|
45
|
+
## Implementation Defaults
|
|
46
|
+
|
|
47
|
+
### Timing And Easing
|
|
48
|
+
|
|
49
|
+
- With kUInetic, keep its per-effect defaults (entrance 600ms `ease-out`, hover 220ms,
|
|
50
|
+
press 120ms, counters 1600ms). Override per element only to match a project token.
|
|
51
|
+
- Without it, take durations from impeccable's table and store them as tokens.
|
|
52
|
+
- Match the curve to direction: entering decelerates (`ease-out`, `expo-out`,
|
|
53
|
+
`quart-out`); leaving accelerates (`ease-in`); moving between two on-screen states
|
|
54
|
+
uses `ease-in-out`; `linear` only for continuous rotation, progress, and scrubbing.
|
|
55
|
+
- Overshoot (`back-out`, `spring(bounce:…)`) only on small, rare confirmations such as a
|
|
56
|
+
badge or count bump, never on layout or page-level motion.
|
|
57
|
+
- Entrance travel 8–24px. Longer travel reads as slow, not premium.
|
|
58
|
+
|
|
59
|
+
### Staggering
|
|
60
|
+
|
|
61
|
+
- Stagger only siblings that read as a list or grid. To start the group together, put
|
|
62
|
+
the effect on the parent with `target:`: `data-kui="fade-up target:'.card' cascade:60ms"`.
|
|
63
|
+
The matched children share one activation. `data-kui-stagger` alone only sets delays;
|
|
64
|
+
children with their own `data-kui` keep their own triggers.
|
|
65
|
+
- Step 30–90ms per item. For a list of unknown length, budget the total with
|
|
66
|
+
`spread:` (≤ 600ms) instead of a per-item step.
|
|
67
|
+
- Split text: keep kUInetic's unit defaults (chars 30ms, words 90ms, lines 160ms).
|
|
68
|
+
Prefer lines or words for headlines; chars only for short display text.
|
|
69
|
+
- Use `cols:` with `order:center` only when the grid reads two-dimensionally.
|
|
70
|
+
|
|
71
|
+
### Scroll Reveals
|
|
72
|
+
|
|
73
|
+
- Reveal once (`on:enter`). Use `enter/leave` only for decoration, never for content.
|
|
74
|
+
- Fire when a meaningful part is visible: `threshold:10%`–`30%` (kUInetic default `0%`).
|
|
75
|
+
- Never delay or hide the hero heading, LCP image, or anything visible at load.
|
|
76
|
+
- Content must render without JS. With kUInetic, opt into `<html data-kui-cloak>`,
|
|
77
|
+
which fails open. Hand-written: for a JS-driven reveal, set the hidden from-state only
|
|
78
|
+
under a class that JS adds, never in base CSS. `@supports` alone does not fail open,
|
|
79
|
+
because it stays true when scripts fail; use it alone only when a complete CSS
|
|
80
|
+
animation also restores visibility.
|
|
81
|
+
- Pick one reveal (effect, distance, duration) per page and repeat it; do not invent a
|
|
82
|
+
new entrance per section.
|
|
83
|
+
- A hidden element (`display: none`, a closed `<dialog>` or popover) cannot trigger a
|
|
84
|
+
visible entrance while closed. For opening transitions, especially repeated ones, use
|
|
85
|
+
the open/close family (`fade-open`, `pop-open`) or `@starting-style`.
|
|
86
|
+
|
|
87
|
+
### Pinned And Scroll-Linked Sections
|
|
88
|
+
|
|
89
|
+
- Trigger (time-based, plays on enter) by default. Scrub (`timeline:view`, `scroll`, `pin`)
|
|
90
|
+
only when scroll position is the meaning: progress, scrollytelling steps, before/after.
|
|
91
|
+
- Each pinned viewport of `distance:` must deliver a new step. Budget 1–2 viewports per
|
|
92
|
+
idea; long pins read as broken scroll.
|
|
93
|
+
- Clear fixed headers once with `--kui-pin-offset` on `:root`, not per pin.
|
|
94
|
+
- Animate inside a pin with `timeline:pin`; a `view` timeline stalls while pinned.
|
|
95
|
+
- Size pinned and stacked content to the visible viewport, fixed bars included. Verify
|
|
96
|
+
phones and short viewports with the touch-scroll check in `ui-loop.md` (section 7) and
|
|
97
|
+
`chrome-mobile-test-matrix.md`.
|
|
98
|
+
|
|
99
|
+
### Reduced Motion
|
|
100
|
+
|
|
101
|
+
The baseline is `ui-loop.md`. Animation-specific rules:
|
|
102
|
+
|
|
103
|
+
- Set a policy per effect, not one global `0.01ms` kill. In kUInetic, `rm:` and the
|
|
104
|
+
resolved policy apply to the whole attribute, including its `target:` groups, and the
|
|
105
|
+
strictest policy wins; put effects that need different policies on separate elements. Short state feedback is
|
|
106
|
+
shortened or crossfaded so the change is still visible; spatial, continuous,
|
|
107
|
+
parallax, pinned, autoplaying, and scroll-linked motion is disabled to its end state.
|
|
108
|
+
- Never strand an element at its from-state (`opacity: 0`, offset).
|
|
109
|
+
- kUInetic applies this automatically (`kuinetic-reference.md` → Reduced Motion).
|
|
110
|
+
Tighten one element with `rm:`; do not add your own overrides on `data-kui` elements.
|
|
111
|
+
- A disabled spinner or skeleton shimmer still needs a non-motion loading signal: text,
|
|
112
|
+
`aria-busy`, or a static placeholder.
|
|
113
|
+
- Do not hang logic on `animationend` or `kui:start`. kUInetic still emits `kui:finish`
|
|
114
|
+
(`reason: 'reduced-motion'`) for skipped effects; hand-written code must too.
|
|
115
|
+
- JS-driven motion reads `matchMedia('(prefers-reduced-motion: reduce)')` and listens
|
|
116
|
+
for its `change` event. kUInetic's CSS responds live, but its JS policy is a startup
|
|
117
|
+
snapshot: to honour a mid-session change, the app tears the animator down and recreates
|
|
118
|
+
it with fresh capabilities (`capabilities: detect(true)`).
|
|
119
|
+
|
|
120
|
+
## Micro-Interactions
|
|
121
|
+
|
|
122
|
+
States come from `components-and-states.md`; the recipes below only say how each one
|
|
123
|
+
moves. Durations are ranges; pick one per project and tokenise it.
|
|
124
|
+
|
|
125
|
+
| Interaction | What moves | Duration / easing | Reduced motion | kUInetic | Without kUInetic |
|
|
126
|
+
|---|---|---|---|---|---|
|
|
127
|
+
| Hover | 2–6px lift, tint, underline, or sheen | 150–220ms `ease-out` | Shortened; color change stays | `lift` `lift-shadow` `pop` `underline-slide` `shine-sweep` `border-glow` | `transition` on `translate`/`background-color` inside `@media (hover: hover)` |
|
|
128
|
+
| Press / active | Scale to 0.96–0.98 or 1–2px down | 80–120ms in, ~150ms release, `ease-out` | Instant | `press-depth`; `ripple` for centered click feedback (it scales from the center, not from the pointer) | `:active { scale: 0.97 }` with a short transition |
|
|
129
|
+
| Focus-visible | Ring appears; optional grow | ≤150ms `ease-out` | Ring shown at once | `focus-ring-grow`; hover effects ship focus-visible twins | `:focus-visible` outline plus `outline-offset` transition |
|
|
130
|
+
| Loading | Spinner rotation, shimmer, indeterminate bar | Show after ~300ms; rotate 700–1000ms `linear` | Static placeholder plus text | `spinner` `spinner-dots` `spinner-ring` `skeleton-shimmer` `progress-indeterminate` | `@keyframes` rotate; delayed reveal via class |
|
|
131
|
+
| Loading → content | Content fades in where the skeleton was | 200–300ms `ease-out` | Instant swap | Replace the skeleton through application state; put `skeleton-to-content` on the content node and start it with `kui.activate(el)` when data lands (it fades the content in; it does not crossfade from the skeleton) | Opacity transition on a `data-loaded` attribute |
|
|
132
|
+
| Success | Check draws or label fades in, holds | 200–400ms `ease-out` | Instant | `validate-check` `checkmark-draw` `badge-pop` | `stroke-dashoffset` keyframes |
|
|
133
|
+
| Error | One small horizontal shake | 300–500ms, once | No shake; icon, message, color | `shake-error` (`data-kui-on="invalid"`) `validate-shake` | `translate` x keyframes, ≤ 6px |
|
|
134
|
+
| Toggle / switch | Thumb slides; track color crossfades | 150–250ms `ease-in-out` | Instant; position still shows state | `toggle-morph` (checkbox + `.kui-track > .kui-thumb`) `checkbox-draw` `radio-fill`; `hamburger-to-x` `plus-to-minus` keyed to `aria-expanded` | `:checked ~ .track` transition on `translate` |
|
|
135
|
+
| Counter / ticker | Number counts to its value; bump on change | Count 800–1600ms `ease-out`; bump 200–300ms `back-out` | Final value shown | `count-up` `count-currency` `count-percent` `count-compact` `odometer-roll`; `count-bump` on updates | rAF tween of the text with `font-variant-numeric: tabular-nums` |
|
|
136
|
+
| Copy to clipboard | Label or icon swaps to "Copied", holds 1–2s, reverts | 150ms fade in, ~200ms out | Instant swap; the app keeps "Copied" visible for the hold | The app owns a visible "Copied" status for the hold period; `copy-confirm` (`data-kui-on="manual"`, `kui.activate(label)` after `writeText()` resolves) is extra animation only, since under reduced motion it runs in ~1ms and ends hidden | Toggle a `data-copied` attribute and transition opacity |
|
|
137
|
+
| Optimistic UI | Result applies at once; list items move into place | FLIP 200–300ms `ease-out` | Instant reorder | `flip-reorder` `flip-filter` `flip-sort`; `count-bump` for counts | FLIP with `translate`, or the View Transitions API |
|
|
138
|
+
|
|
139
|
+
Recipe rules:
|
|
140
|
+
|
|
141
|
+
- Count and copy confirmations announce through an `aria-live="polite"` region; the
|
|
142
|
+
motion is not the announcement. kUInetic counters already expose the final value.
|
|
143
|
+
- Author counters with their final value as text, never `0`.
|
|
144
|
+
- Show a copy or optimistic failure as visibly as the success: revert the change, then
|
|
145
|
+
give the error state its own motion and message.
|
|
146
|
+
- `submit-to-spinner-to-check` runs on fixed timers with no error stage. Drive real
|
|
147
|
+
request state yourself.
|
|
148
|
+
- Celebration effects such as `heart-burst` or `confetti-burst` follow
|
|
149
|
+
`delight-and-motion.md`; never add them as routine feedback.
|
|
150
|
+
|
|
151
|
+
## Implementation Anti-Patterns
|
|
152
|
+
|
|
153
|
+
- Hand-writing an effect kUInetic already provides, or loading a second motion library
|
|
154
|
+
beside it.
|
|
155
|
+
- Incidental layout animation: `width`, `height`, `top`, `left`, or margins changing as a
|
|
156
|
+
side effect. Use `transform`/`opacity` or FLIP (the `flip-*` family). Expanding content
|
|
157
|
+
is the deliberate exception: `accordion-height` animates measured pixel heights, and
|
|
158
|
+
`grid-template-rows: 0fr → 1fr` also changes layout. For the grid trick, use one inner
|
|
159
|
+
child with `min-height: 0; overflow: hidden`, and keep collapsed content out of the
|
|
160
|
+
focus order separately (for example `inert`).
|
|
161
|
+
- `transition: all`. It animates layout, theme switches, and properties nobody chose.
|
|
162
|
+
- Blocking input until motion ends: disabled buttons during an entrance, ignored clicks,
|
|
163
|
+
or keyframe animations that cannot be interrupted. Prefer transitions for state, which
|
|
164
|
+
reverse from their current value.
|
|
165
|
+
- Per-item stagger with no total cap, or staggering results the user re-scans (search
|
|
166
|
+
results, table rows, filtered lists).
|
|
167
|
+
- Scroll-driven motion on `scroll` listeners or per-frame `getBoundingClientRect()`.
|
|
168
|
+
Use `animation-timeline`, IntersectionObserver, or kUInetic timelines.
|
|
169
|
+
- Content hidden in base CSS until a script runs, with no fail-open path.
|
|
170
|
+
- A spinner that flashes for operations under ~300ms, or a spinner as the only loading
|
|
171
|
+
signal under reduced motion.
|
|
172
|
+
- Counters without tabular numerals, so the width jitters while counting.
|
|
173
|
+
- Scroll-jacking: replacing native scroll speed.
|