@jini-ai/agent-plugins 0.6.17 → 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 +29 -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,145 @@
|
|
|
1
|
+
# Foundations
|
|
2
|
+
|
|
3
|
+
Use this reference when creating or extending the visual system for a product or feature.
|
|
4
|
+
|
|
5
|
+
This file owns the token, layout, and visual-system contract. `ui-loop.md` owns the
|
|
6
|
+
resulting page/screen quality review; do not treat this reference's decisions or
|
|
7
|
+
anti-patterns as a substitute completion checklist.
|
|
8
|
+
|
|
9
|
+
## Goals
|
|
10
|
+
|
|
11
|
+
- Define a stable visual foundation before designing individual screens.
|
|
12
|
+
- Give Programmer a constrained, reusable system instead of one-off styling decisions.
|
|
13
|
+
- Preserve existing product patterns unless the user explicitly wants a new direction.
|
|
14
|
+
|
|
15
|
+
## Required Decisions
|
|
16
|
+
|
|
17
|
+
1. Visual direction
|
|
18
|
+
2. Color and semantic token system
|
|
19
|
+
3. Typography hierarchy
|
|
20
|
+
4. Spacing scale
|
|
21
|
+
5. Layout/container/grid rules
|
|
22
|
+
6. Breakpoint behavior
|
|
23
|
+
7. Elevation, border, radius, and motion primitives
|
|
24
|
+
|
|
25
|
+
## Minimum Foundation Contract
|
|
26
|
+
|
|
27
|
+
### Visual Direction
|
|
28
|
+
|
|
29
|
+
Define:
|
|
30
|
+
|
|
31
|
+
- product character in 3-5 adjectives
|
|
32
|
+
- intended level of formality
|
|
33
|
+
- density target: compact, balanced, spacious
|
|
34
|
+
- contrast profile: restrained, moderate, bold
|
|
35
|
+
- reuse vs reinvention decision
|
|
36
|
+
|
|
37
|
+
If working within an existing system, document continuation rules instead of inventing a new style.
|
|
38
|
+
|
|
39
|
+
### Token Categories
|
|
40
|
+
|
|
41
|
+
Create or extend tokens for:
|
|
42
|
+
|
|
43
|
+
- surface/background
|
|
44
|
+
- text/foreground
|
|
45
|
+
- border/separator
|
|
46
|
+
- interactive/brand
|
|
47
|
+
- success/warning/error/info
|
|
48
|
+
- focus ring
|
|
49
|
+
- shadow/elevation
|
|
50
|
+
- radius
|
|
51
|
+
- spacing
|
|
52
|
+
- typography
|
|
53
|
+
- motion duration/easing
|
|
54
|
+
|
|
55
|
+
Prefer semantic names over raw color names.
|
|
56
|
+
|
|
57
|
+
### Typography
|
|
58
|
+
|
|
59
|
+
Define:
|
|
60
|
+
|
|
61
|
+
- display or hero style if needed
|
|
62
|
+
- heading scale
|
|
63
|
+
- body sizes
|
|
64
|
+
- caption/supporting text
|
|
65
|
+
- monospace usage if relevant
|
|
66
|
+
- line-height and weight rules
|
|
67
|
+
|
|
68
|
+
### Spacing
|
|
69
|
+
|
|
70
|
+
Use a consistent scale. Typical safe pattern:
|
|
71
|
+
|
|
72
|
+
- `4, 8, 12, 16, 24, 32, 48, 64`
|
|
73
|
+
|
|
74
|
+
Apply the same scale to:
|
|
75
|
+
|
|
76
|
+
- margins
|
|
77
|
+
- padding
|
|
78
|
+
- grid gaps
|
|
79
|
+
- section rhythm
|
|
80
|
+
- component spacing
|
|
81
|
+
|
|
82
|
+
### Layout
|
|
83
|
+
|
|
84
|
+
Define:
|
|
85
|
+
|
|
86
|
+
- max content widths
|
|
87
|
+
- section padding rules
|
|
88
|
+
- grid column behavior
|
|
89
|
+
- stack behavior on narrow screens
|
|
90
|
+
- sticky or persistent UI elements if any
|
|
91
|
+
|
|
92
|
+
Default to mobile-first.
|
|
93
|
+
|
|
94
|
+
### Breakpoints
|
|
95
|
+
|
|
96
|
+
Document behavior at:
|
|
97
|
+
|
|
98
|
+
- mobile
|
|
99
|
+
- tablet
|
|
100
|
+
- desktop
|
|
101
|
+
- large desktop if relevant
|
|
102
|
+
|
|
103
|
+
Describe behavior, not just widths:
|
|
104
|
+
|
|
105
|
+
- navigation changes
|
|
106
|
+
- card/list reflow
|
|
107
|
+
- sidebar collapse/expand
|
|
108
|
+
- media cropping
|
|
109
|
+
- density and spacing adjustments
|
|
110
|
+
|
|
111
|
+
## Theming
|
|
112
|
+
|
|
113
|
+
Do not require multiple themes by default.
|
|
114
|
+
|
|
115
|
+
If theming is in scope, define:
|
|
116
|
+
|
|
117
|
+
- what tokens change
|
|
118
|
+
- contrast rules
|
|
119
|
+
- image/media treatment changes
|
|
120
|
+
- persistence behavior
|
|
121
|
+
|
|
122
|
+
Do not add a theme toggle only because it is possible.
|
|
123
|
+
|
|
124
|
+
## Anti-Patterns
|
|
125
|
+
|
|
126
|
+
- hardcoded one-off colors across components
|
|
127
|
+
- spacing chosen ad hoc per screen
|
|
128
|
+
- headings without a system
|
|
129
|
+
- desktop-first layout that collapses poorly on mobile
|
|
130
|
+
- decorative motion without purpose
|
|
131
|
+
- dark mode or theme switching as mandatory default
|
|
132
|
+
|
|
133
|
+
## Reference-Specific Output
|
|
134
|
+
|
|
135
|
+
Record the applicable foundation decisions in the authorized design artifact or
|
|
136
|
+
living visual `design.md`:
|
|
137
|
+
|
|
138
|
+
- visual direction named
|
|
139
|
+
- semantic token groups defined
|
|
140
|
+
- typography hierarchy defined
|
|
141
|
+
- spacing scale defined
|
|
142
|
+
- breakpoints documented
|
|
143
|
+
- layout rules documented
|
|
144
|
+
- motion/elevation basics documented
|
|
145
|
+
- assumptions and constraints explicitly noted
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Inclusive AI Imagery
|
|
2
|
+
|
|
3
|
+
Use this reference only when image or video generation is part of the design task.
|
|
4
|
+
|
|
5
|
+
## Core Rule
|
|
6
|
+
|
|
7
|
+
Identity is not a decorative adjective. Generated imagery must avoid stereotype defaults, tokenism, and incoherent cultural details.
|
|
8
|
+
|
|
9
|
+
## Prompt Structure
|
|
10
|
+
|
|
11
|
+
Build prompts in layers:
|
|
12
|
+
|
|
13
|
+
1. subject
|
|
14
|
+
2. action or pose
|
|
15
|
+
3. environment and geographic/cultural context
|
|
16
|
+
4. lighting and camera treatment
|
|
17
|
+
5. style or medium
|
|
18
|
+
6. explicit negative constraints
|
|
19
|
+
|
|
20
|
+
## Inclusive Representation Constraints
|
|
21
|
+
|
|
22
|
+
Specify when relevant:
|
|
23
|
+
|
|
24
|
+
- distinct faces, body types, ages, and attire
|
|
25
|
+
- authentic geography and architecture
|
|
26
|
+
- accurate cultural clothing or symbols
|
|
27
|
+
- realistic lighting for different skin tones
|
|
28
|
+
- mobility aids and assistive devices with physical realism
|
|
29
|
+
|
|
30
|
+
## Negative Prompt Themes
|
|
31
|
+
|
|
32
|
+
Block:
|
|
33
|
+
|
|
34
|
+
- clone faces
|
|
35
|
+
- gibberish text or fake signage
|
|
36
|
+
- exoticized or sensationalized framing
|
|
37
|
+
- oversized symbolic props replacing the human subject
|
|
38
|
+
- malformed hands, limbs, or devices
|
|
39
|
+
- futuristic or stock-photo tropes unless intentionally requested
|
|
40
|
+
|
|
41
|
+
## Review Checklist
|
|
42
|
+
|
|
43
|
+
Before approving generated imagery, check:
|
|
44
|
+
|
|
45
|
+
- is the subject depicted with dignity and agency
|
|
46
|
+
- does the environment fit the claimed context
|
|
47
|
+
- are there stereotype shortcuts
|
|
48
|
+
- do multiple people look meaningfully distinct
|
|
49
|
+
- is any text, signage, or symbolism coherent
|
|
50
|
+
- do clothing, hair, and movement obey physical reality
|
|
51
|
+
|
|
52
|
+
## Anti-Patterns
|
|
53
|
+
|
|
54
|
+
- "diverse team" prompts with no specificity
|
|
55
|
+
- relying on ethnicity descriptors without contextual realism
|
|
56
|
+
- using image prompts as a substitute for real brand/art direction
|
|
57
|
+
- importing imagery guidance into tasks that only need UI design
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Kole Jain UI/UX Concepts Notes
|
|
2
|
+
|
|
3
|
+
Source context: extracted from the user-provided transcript `Every UIUX Concept Explained in Under 10 Minutes.txt`, attributed to Kole Jain.
|
|
4
|
+
|
|
5
|
+
## Core Thesis
|
|
6
|
+
|
|
7
|
+
Good UI/UX makes behavior legible without explanation. Interfaces should communicate relationship, importance, state, affordance, and feedback through visual structure: signifiers, hierarchy, whitespace, typography, color, depth, icons, component states, and micro-interactions.
|
|
8
|
+
|
|
9
|
+
## Signifiers And Affordances
|
|
10
|
+
|
|
11
|
+
- Use visible cues to show what an element is, what it can do, and what state it is in.
|
|
12
|
+
- Examples: active nav highlights, selected containers, disabled opacity, button press states, hover states, focus states, and tooltips.
|
|
13
|
+
- A user should often understand interaction rules before reading instructions.
|
|
14
|
+
- Treat missing state feedback as a UX bug, not just a polish gap.
|
|
15
|
+
|
|
16
|
+
## Hierarchy
|
|
17
|
+
|
|
18
|
+
- Use size, position, color, imagery, and contrast to tell users what matters first.
|
|
19
|
+
- Put the most important information near the top or in the strongest visual position.
|
|
20
|
+
- Use images when they materially improve scanning or recognition.
|
|
21
|
+
- Make high-value facts visually distinct: for example, price, status, active item, or primary action.
|
|
22
|
+
- Use icons and visual relationships to reduce unnecessary labels when the meaning is clear.
|
|
23
|
+
|
|
24
|
+
## Layout, Whitespace, And Grids
|
|
25
|
+
|
|
26
|
+
- Treat column grids and spacing systems as guidelines, not hard laws.
|
|
27
|
+
- Use grids most strictly for structured repeated content such as galleries, blogs, lists, and responsive card layouts.
|
|
28
|
+
- For custom landing pages, prioritize breathing room and visual composition over forcing every element into a rigid grid.
|
|
29
|
+
- Use whitespace to group related elements and separate unrelated elements.
|
|
30
|
+
- A 4-point grid can work well because values split cleanly and keep spacing consistent.
|
|
31
|
+
- Keep spacing intentional even when it is not mathematically rigid.
|
|
32
|
+
|
|
33
|
+
## Typography
|
|
34
|
+
|
|
35
|
+
- Most UI is text, so typography carries a large part of the design.
|
|
36
|
+
- One strong sans-serif family is often enough for product UI.
|
|
37
|
+
- Tighten large heading letter spacing slightly and use compact heading line height, roughly 110-120%, when it improves polish and readability.
|
|
38
|
+
- Landing pages can use a broader type range, but keep the number of font sizes limited.
|
|
39
|
+
- Dense dashboards and app screens usually need a tighter type range; large display sizes often become impractical.
|
|
40
|
+
- Spend less time hunting fonts for product UI and more time making hierarchy, spacing, and states work.
|
|
41
|
+
|
|
42
|
+
## Color
|
|
43
|
+
|
|
44
|
+
- Start with one primary brand color and derive lighter backgrounds or darker text treatments from it.
|
|
45
|
+
- Build toward a color ramp when the interface needs chips, states, charts, and repeated semantic uses.
|
|
46
|
+
- Use semantic colors for meaning: danger, warning, success, trust, focus, urgency, or newness.
|
|
47
|
+
- In dark mode, reduce harsh borders and create depth by making foreground surfaces slightly lighter than the background.
|
|
48
|
+
- Dim overly bright chips or accents in dark mode and preserve hierarchy with adjusted saturation, brightness, and text contrast.
|
|
49
|
+
|
|
50
|
+
## Depth And Shadows
|
|
51
|
+
|
|
52
|
+
- In light mode, use shadows to separate layers, but keep them subtle.
|
|
53
|
+
- Reduce shadow opacity and increase blur when shadows feel too harsh.
|
|
54
|
+
- Cards generally need lighter shadows than popovers or surfaces that sit above other content.
|
|
55
|
+
- Use inner and outer shadows when a tactile raised control is appropriate.
|
|
56
|
+
- If the shadow is the first thing the user notices, it is too strong.
|
|
57
|
+
|
|
58
|
+
## Icons And Buttons
|
|
59
|
+
|
|
60
|
+
- Size icons to match the related text line height where practical.
|
|
61
|
+
- Tighten icon-and-label spacing so pairs feel intentional.
|
|
62
|
+
- Treat sidebar links and subtle nav actions as ghost buttons: no background by default, visible response on hover or active state.
|
|
63
|
+
- For button padding, a useful default is more horizontal than vertical padding, often about double.
|
|
64
|
+
- Use icons in buttons when they clarify action, status, or scanability.
|
|
65
|
+
|
|
66
|
+
## States And Feedback
|
|
67
|
+
|
|
68
|
+
- Every user action should produce a response.
|
|
69
|
+
- Buttons need at least default, hover, active/pressed, and disabled states; loading states are needed when work is pending.
|
|
70
|
+
- Inputs need focus, error, and message states; warning states can help with optional or recoverable issues.
|
|
71
|
+
- Data fetching needs loading feedback. Completed actions need success feedback.
|
|
72
|
+
- Swipe, scroll, copy, submit, selection, and navigation actions should make the result visible.
|
|
73
|
+
|
|
74
|
+
## Micro-Interactions
|
|
75
|
+
|
|
76
|
+
- Use micro-interactions as feedback that confirms an action or helps the user understand what changed.
|
|
77
|
+
- Practical examples include a copied confirmation, a small chip animation, a state transition, or a completion cue.
|
|
78
|
+
- Keep playful motion subordinate to clarity and task completion.
|
|
79
|
+
|
|
80
|
+
## Text Over Images
|
|
81
|
+
|
|
82
|
+
- Do not put text directly over images without protecting readability.
|
|
83
|
+
- Use overlays, gradients, or progressive blur to preserve the image while creating a readable text zone.
|
|
84
|
+
- Prefer a directional gradient when the text occupies one side or edge of the image.
|
|
85
|
+
- Ensure the final composition preserves both image quality and text contrast.
|
|
86
|
+
|
|
87
|
+
## Applying These Principles
|
|
88
|
+
|
|
89
|
+
Use `ui-loop.md` for generic design and rendered review, and
|
|
90
|
+
`components-and-states.md` for the implementation-level state matrix. This reference adds
|
|
91
|
+
concrete product-UI treatments for affordances, contextual grids, dark-mode depth,
|
|
92
|
+
shadows, icon/button pairing, micro-interaction feedback, and text over imagery.
|
|
93
|
+
|
|
94
|
+
When these treatments are used, specify their intended affordance, dark-mode depth,
|
|
95
|
+
layer/shadow relationship, icon alignment, outcome-linked feedback, or protected
|
|
96
|
+
text zone so implementation does not require guesswork.
|
|
97
|
+
|
|
98
|
+
## Reference-Specific Output
|
|
99
|
+
|
|
100
|
+
- affordance and action-feedback rules
|
|
101
|
+
- hierarchy, grouping, grid, and whitespace decisions
|
|
102
|
+
- semantic color and dark-mode depth treatment
|
|
103
|
+
- icon/button alignment and component-state notes
|
|
104
|
+
- text-over-image protection when used
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# kUInetic Reference
|
|
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
|
+
Attribute and effect lookup for kUInetic, the declarative `data-kui` animation library.
|
|
7
|
+
`ui-animation.md` owns when to use it and the motion rules; this file only lists what
|
|
8
|
+
exists. Not a tutorial.
|
|
9
|
+
|
|
10
|
+
**Authority:** the kUInetic source, package `kuinetic` v0.2.4 (MIT, kuinetic.com),
|
|
11
|
+
checked at commit `9fc5e54` on 2026-10-30. Every name below is registered in the
|
|
12
|
+
source; each group's `Source:` line is a path inside the kUInetic repo. Where the docs
|
|
13
|
+
and the source disagree, this file follows the source.
|
|
14
|
+
|
|
15
|
+
**Version lag:** a vendored bundle (e.g. `<theme>/vendor/kuinetic/kuinetic.js`) can be
|
|
16
|
+
older than the source. Before relying on a recent option (`direction:rise-mask`, the
|
|
17
|
+
`from:` event source, `wide:`/`narrow:`), grep the shipped bundle for it. Use
|
|
18
|
+
`kuinetic.describe('<effect>')` in the page only for effect parameters; it does not list
|
|
19
|
+
reserved keys, gates or event-source syntax, which live in the parser. An unknown effect is skipped; an unsupported
|
|
20
|
+
parameter or value may fall back to its default, and an invalid breakpoint gate is dropped
|
|
21
|
+
so the effect runs at every width. Nothing throws, and diagnostics appear only with a
|
|
22
|
+
reporter (see Dev warnings).
|
|
23
|
+
|
|
24
|
+
## Detect
|
|
25
|
+
|
|
26
|
+
kUInetic is present when any of these hold:
|
|
27
|
+
|
|
28
|
+
- markup carries `data-kui` (authored) or `data-kui-fx` / `data-kui-state` (stamped at runtime)
|
|
29
|
+
- the page loads `kuinetic.js`, `kuinetic.all.js`, `kuinetic.min.js` or `kuinetic.all.min.js`,
|
|
30
|
+
or the theme ships a `vendor/kuinetic/` folder
|
|
31
|
+
- `package.json` depends on `kuinetic`, or code imports `kuinetic`, `kuinetic/css`, `kuinetic/advanced`
|
|
32
|
+
- `window.__kuinetic` (the auto-started animator) exists in the running page
|
|
33
|
+
|
|
34
|
+
Source: `src/browser/boot.ts`, `src/core/attrs.ts`, `package.json`.
|
|
35
|
+
|
|
36
|
+
## Install And Initialise
|
|
37
|
+
|
|
38
|
+
| Setup | How |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Split bundle (preferred: CSS still works if JS fails) | `<link rel="stylesheet" href="kuinetic.css">` + `<script src="kuinetic.js"></script>`. Auto-starts at `DOMContentLoaded` with `observe: true`; the animator is `window.__kuinetic`. |
|
|
41
|
+
| One tag | `kuinetic.all.js` / `kuinetic.all.min.js` (CSS embedded, same auto-start). |
|
|
42
|
+
| Manual start | `data-kui-manual` on the script tag, then `kuinetic.kuinetic({ observe: true }).start()`. |
|
|
43
|
+
| npm / bundler | `import { kuinetic } from 'kuinetic'`, `import 'kuinetic/css'`, `kuinetic({ observe: true }).start()`. An import never auto-starts. |
|
|
44
|
+
| Dev warnings | Pass `reporter: consoleReporter()` in the options; the default reporter is silent. |
|
|
45
|
+
| Pre-JS hide | `<html data-kui-cloak>` hides cloaked entrances until start; fails open (start, watchdog, CSS release). |
|
|
46
|
+
|
|
47
|
+
Never start a second animator beside an auto-started bundle. Pass custom options before
|
|
48
|
+
auto-start, or use `data-kui-manual` and create exactly one animator; a factory call with
|
|
49
|
+
options after the page has been scanned creates a second animator. Source: `README.md`, `src/browser/boot.ts`,
|
|
50
|
+
`src/css/base.css`, `src/core/reporter.ts`.
|
|
51
|
+
|
|
52
|
+
## Attribute Grammar
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<h2 data-kui="fade-up 700ms 120ms ease-out distance:16px, blur-in 400ms at:-200ms">
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- First token is the effect; then positional **duration → delay → easing**, or
|
|
59
|
+
`duration:` / `delay:` / `ease:`. Effect parameters are `key:value`.
|
|
60
|
+
- Comma-separate effects whose channels don't collide. A collision keeps the first and warns.
|
|
61
|
+
- Quote any value containing spaces or commas: `target:'.stops > li'`.
|
|
62
|
+
- Named bundle: `<template data-kui-define="card-in" data-kui="fade-up 700ms, blur-in 400ms at:-200ms">`,
|
|
63
|
+
then `data-kui="card-in 300ms"`. Local values override the bundle.
|
|
64
|
+
- Longhand attributes (an inline key wins): `data-kui-on`, `data-kui-timeline`,
|
|
65
|
+
`data-kui-threshold`, `data-kui-stagger`. Timing has no longhand. Set reduced motion
|
|
66
|
+
with the `rm:` key.
|
|
67
|
+
- Stamped by the runtime; read, never author: `data-kui-fx`, `data-kui-state`,
|
|
68
|
+
`data-kui-unmatched`, `data-kui-part`, `data-kui-rm` (the compiled reduced-motion policy).
|
|
69
|
+
|
|
70
|
+
Source: `src/core/parse.ts`, `src/core/attrs.ts`, `src/core/bundles.ts`.
|
|
71
|
+
|
|
72
|
+
## Reserved Keys
|
|
73
|
+
|
|
74
|
+
| Key | Values |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `on:` | `enter` (once, default for reveals), `leave`, `load`, `manual`, `hover`/`unhover`, `focus`/`blur`, `click`, any DOM event (`invalid`, `submit`, `cart:updated`), or a forward/back pair `hover/unhover`, `enter/leave`. |
|
|
77
|
+
| `data-kui-on="click from:#copy-btn"` | Listen on another element. Longhand only. |
|
|
78
|
+
| `actions:` | Four scroll crossings, slash-separated: `play` `pause` `resume` `reverse` `reset` `restart` `complete` `none`. |
|
|
79
|
+
| `threshold:` | Fraction visible before `enter` fires: `threshold:30%`. Default `0%`. |
|
|
80
|
+
| `timeline:` | `time` (default), `view`, `scroll`, `pin`. Range: `data-kui-timeline="view entry 0% cover 60%"`. |
|
|
81
|
+
| `at:` | Relative to the previous effect: `-200ms`, `+100ms`, `after`, `with`, `with+150ms`. |
|
|
82
|
+
| `repeat:` / `yoyo:` | Total plays or `infinite`; `yoyo:true` alternates. |
|
|
83
|
+
| `above:` / `below:` | Viewport gate on `sm` `md` `lg` `xl` `2xl`. `wide:` / `narrow:` gate the same scale against the nearest `data-kui-container` ancestor. |
|
|
84
|
+
| `cascade:` / `spread:` | Group stagger step, or total budget, on the **parent** (or `data-kui-stagger="90ms"`). |
|
|
85
|
+
| `order:` / `cols:` / `along:` | `start` `end` `center` `edges` `random`, a child index, or an `x/y` point; `cols:6` or `cols:auto`; `along:x`/`along:y`. |
|
|
86
|
+
| `target:` / `scope:page` | Animate matching descendants (or page matches) instead of the host. |
|
|
87
|
+
| `rm:` | Reduced-motion policy, mildest to strictest `shorten`, `crossfade`, `disable`; may only be stricter than the effect's own. |
|
|
88
|
+
| `func:` | Global function run on `kui:finish`. Never build it from CMS or user input. |
|
|
89
|
+
|
|
90
|
+
`stagger:` on the split-text effects is the gap between generated pieces, not the group
|
|
91
|
+
`cascade:`. Source: `src/core/parse.ts`, `src/core/activation.ts`,
|
|
92
|
+
`src/core/event-sources.ts`, `src/core/types.ts`, `src/core/repeat.ts`, `src/core/breakpoints.ts`,
|
|
93
|
+
`src/core/stagger-config.ts`, `src/core/target.ts`.
|
|
94
|
+
|
|
95
|
+
**Easing keywords:** `linear` `ease` `ease-in` `ease-out` `ease-in-out` `step-start`
|
|
96
|
+
`step-end` `expo-in` `expo-out` `expo-in-out` `back-in` `back-out` `back-in-out`
|
|
97
|
+
`quart-out` `circ-out` `spring` `bounce`; functions `cubic-bezier()` `steps()` `linear()`
|
|
98
|
+
`spring(bounce:0.3)` / `spring(stiffness:400 damping:20 mass:1)` (`bounce` 0–0.85; the
|
|
99
|
+
spring shapes the curve, your duration still holds). Source: `src/core/parse.ts`, `src/core/easing.ts`.
|
|
100
|
+
|
|
101
|
+
**Events and API:** `kui:start`, `kui:finish`, `kui:reverse-finish`, `kui:cancel` bubble
|
|
102
|
+
with `detail { effects, activation, timeline, reason }`. `kui` is `window.__kuinetic` under a
|
|
103
|
+
script tag, or what `kuinetic(...).start()` returns: `kui.play(target, effect, options)`,
|
|
104
|
+
`kui.activate(el)`, `kui.deactivate(el)`, `kui.control(target)` (`pause` `play` `reverse`
|
|
105
|
+
`seek(0..1)` `timeScale`, `progress`, `state`), `kui.process(el)`, `kui.reset(el)`.
|
|
106
|
+
JS-rendered and scroll-driven effects expose no playhead. Source: `src/core/control.ts`,
|
|
107
|
+
`src/core/animator.ts`.
|
|
108
|
+
|
|
109
|
+
## Effects By Family
|
|
110
|
+
|
|
111
|
+
Defaults are the source defaults; override per element.
|
|
112
|
+
|
|
113
|
+
| Family | Names | Source |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| Entrance | `fade-in` `fade-up` `fade-down` `fade-left` `fade-right` `slide-up` `slide-down` `slide-left` `slide-right` `slide-inline-start` `slide-inline-end` `slide-block-start` `slide-block-end` `zoom-in` `zoom-in-up` `zoom-in-down` `pop-in` `flip-in-x` `flip-in-y` `rotate-in` `roll-in` `swing-in` `blur-in` `fade-blur-up` `fade-blur-in` `back-in-up` `back-in-down` `bounce-in` `reveal-once` (same as `fade-up`). Base default `600ms ease-out`, `distance:24px`. Preset exceptions: `slide-*` use `distance:100px` (no fade); `back-in-up`/`back-in-down` use `120px` with `expo-out`; `pop-in` uses scale 0.6 with `back-out`; `bounce-in` starts at scale 0.3 and uses the multi-peak `bounce` curve. | `src/effects/catalog/core.ts` |
|
|
116
|
+
| Exit | `fade-out` `fade-out-up` `fade-out-down` `fade-out-left` `fade-out-right` `slide-out-up` `slide-out-down` `slide-out-left` `slide-out-right` `zoom-out` `pop-out` `blur-out` | `src/effects/catalog/core.ts` |
|
|
117
|
+
| Scroll-linked | `parallax-y` `parallax-x` `parallax-scale` `parallax-rotate` `depth-layer` `scroll-fade` `scroll-desaturate` `scroll-skew` `scroll-progress-bar` `scroll-progress-bar-y` `scroll-progress-ring`. Use `timeline:view`/`scroll`; duration is meaningless there. | `src/effects/catalog/core.ts` |
|
|
118
|
+
| Pin and scroll mechanics | `pin-section` (`distance:100vh`, `offset-top:`, `spacer:true`) `pin-until` `pin-spacer` `stacking-cards` `horizontal-scroll` `scrollytelling-step` (`steps:`, `target:` stamps `data-kui-step-state` before/active/after and `--kui-step`) `scroll-progress` `sequence-scrub` `video-scrub` `scroll-snap-x` `scroll-snap-y` `scroll-spy` `smooth-scroll-to`. Set `--kui-pin-offset` on `:root` to clear a fixed header. | `src/effects/scroll-mechanics/presets.ts` |
|
|
119
|
+
| Text split | `split-chars` (30ms) `split-words` (90ms) `split-lines` (160ms), `direction:fade\|up\|down\|mask\|rise-mask`, `unit:`, `stagger:`; presets `text-reveal-up` `text-reveal-down` (words) `text-reveal-mask` (lines, mask). `rise-mask` slides each unit up 120% inside a stationary clip. `--kui-mask-bleed: 0.1em` protects ascenders under tight leading. | `src/effects/catalog/text.ts`, `text-shared.ts` |
|
|
120
|
+
| Text other | `typewriter` `typewriter-loop` `scramble` `decode` `glitch` `word-cycler` `highlight-sweep` `underline-draw` `gradient-shimmer` `gradient-sweep` `text-outline-fill` `text-wave` `text-jitter` `marquee` `marquee-scroll-linked` `redaction-reveal` `text-3d-extrude` `var-weight` `var-width` `var-slant` `var-axis` | `src/effects/catalog/text.ts` |
|
|
121
|
+
| Media reveal | `wipe-up` `wipe-down` `wipe-left` `wipe-right` `wipe-circle` `wipe-diagonal` `mask-reveal` `curtain-reveal` `before-after-wipe` `ken-burns` `ken-burns-out` `blur-up` `image-parallax-frame` `slat-assemble` `duotone-hover` `grayscale-hover` `saturate-hover` `bg` `background` `video-backdrop` `video-hero` | `src/effects/catalog/media.ts` |
|
|
122
|
+
| Hover and press | `lift` (220ms, `distance:6px`) `lift-shadow` `pop` (`scale:1.06`) `shine-sweep` `split-flap` `border-draw` `border-glow` `beam-border` `underline-slide` `underline-center` `icon-wiggle` `icon-spin` `icon-bounce` `tilt-3d` `tilt-parallax` `cursor-follow` `cursor-lag` `cursor-label` `cursor-spotlight` `cursor-invert` | `src/effects/catalog/interaction.ts` |
|
|
123
|
+
| Press, group, reveal-on-hover | `press-depth` (120ms, `scale:0.96`) `group-dim`; `masked-label-swap` `masked-label-swap-x` `masked-label-swap-diagonal` `hover-intent` `anchored-preview` `anchored-preview-bottom` `anchored-preview-left` `anchored-preview-right` `search-expand`; `proximity-glow` `proximity-field` | `interaction-states.ts`, `interaction-reveal.ts`, `interaction-proximity.ts` (all `src/effects/catalog/`) |
|
|
124
|
+
| Feedback | `skeleton-shimmer` `skeleton-to-content` `spinner` `spinner-dots` `spinner-ring` `progress-indeterminate` `toast-slide-in` `toast-slide-out` `shake-error` `wobble` `ripple` `badge-pop` `count-bump` `heart-burst` `confetti-burst` `copy-confirm` `pull-to-refresh` | `src/effects/catalog/feedback.ts` |
|
|
125
|
+
| Numbers | `count-up` (1600ms, `from:` `to:` `decimals:` `format:` `currency:`) `count-down` `count-currency` `count-percent` `count-compact` `odometer-roll` `progress-ring` `progress-bar` `progress-segments` `gauge-sweep` `star-rating-fill` `sparkline-draw` `donut-sweep` | `src/effects/catalog/numbers.ts` |
|
|
126
|
+
| Forms | `label-float` `input-underline-grow` `focus-ring-grow` `validate-shake` `validate-check` `strength-meter` `toggle-morph` `checkbox-draw` `radio-fill` `range-fill` `submit-to-spinner-to-check` `step-progress` `carousel` | `src/effects/forms/index.ts` |
|
|
127
|
+
| SVG and icons | `draw-stroke` `draw-signature` `draw-underline` `checkmark-draw` `cross-draw` `chart-line-draw` (`length:` sets path length); toggles `hamburger-to-x` (`aria-expanded`) `play-to-pause` (`aria-pressed`) `plus-to-minus` (`aria-expanded`) | `src/effects/svg/index.ts` |
|
|
128
|
+
| Layout (FLIP) | `flip-reorder` `flip-filter` `flip-sort` `flip-shuffle` `accordion-height` `expand-to-modal` `grid-to-list` `tab-indicator-slide` `masonry-reflow`. Motion only; you own `aria-expanded`, focus, keys. | `src/effects/layout/presets.ts` |
|
|
129
|
+
| Open/close from `display: none` | `fade-open` `pop-open` `scale-open` `drop-open` `slide-open-up` `slide-open-down` (`@starting-style`). Each stays hidden until opened: native `<dialog>` and popovers open through their own APIs (`[open]`, `:popover-open`); for an ordinary element, toggle the presence of `data-open` | `src/effects/catalog/discrete.ts` |
|
|
130
|
+
| Page and view | `page-morph` `view-swap` (View Transitions); `page-fade` `page-slide` `curtain-wipe` `loading-bar` | `src/effects/catalog/view-transitions.ts`; `src/effects/three-d/index.ts` |
|
|
131
|
+
| Navigation | `header-shrink` `header-hide-on-scroll` `menu-stagger-open` `menu-fullscreen` `dropdown-open` `drawer-slide` `mega-menu-drop` `back-to-top-fade` | `src/effects/navigation/index.ts` |
|
|
132
|
+
| CSS 3D (core entry) | `card-flip-x` `card-flip-y` `cube-rotate` `fold-panel` `flip-card` `book-page-turn`; ring/stack carousels `carousel-3d` `carousel-stack` | `src/effects/three-d/index.ts`, `src/effects/carousel/` |
|
|
133
|
+
| Ambient loops | `glow-pulse` `aurora` `gradient-mesh` `gradient-border` `gradient-rotate-border` `float` `bob` `orbit` `floating-shapes` `starfield` `dot-grid-drift` `line-grid-drift` `scanline` `spotlight-follow` `wave-blob`; `beam-border-auto` (runs unconditionally and loops forever) | `src/effects/catalog/ambient.ts`; `beam-border-auto` in `src/effects/catalog/interaction.ts` |
|
|
134
|
+
| Gestures | `drag` `drag-x` `drag-y` `drag-inertia` `throwable` `elastic-pull` `rubber-band` `snap-back` `swipe` `swipe-x` `swipe-y` `long-press` `magnetic` `magnetic-snap` | `src/effects/gestures/index.ts` |
|
|
135
|
+
| Generic tween | `tween` (to values) `tween-from` (from values): `tween x:100 opacity:0 rotate:45deg 800ms` | `src/effects/tween/index.ts` |
|
|
136
|
+
| Showcase widgets | `lightbox` `video-lightbox` `compare` `carousel-fade` `carousel-slide` `video-hero-slideshow` `scroll-story` `hotspots` `device-frame` `slow-mo` | `src/showcase/` |
|
|
137
|
+
| Paths, material | `motion-path` `path-arc` `path-loop` `path-swoop` `path-wave`; `glass`; `rotate-static` | `src/effects/motion-path/index.ts`, `src/effects/catalog/materials.ts`, `src/effects/catalog/transforms.ts` |
|
|
138
|
+
|
|
139
|
+
Catalog note (`docs/catalog.md` §I): every hover effect ships a `:focus-visible`
|
|
140
|
+
equivalent and a coarse-pointer fallback.
|
|
141
|
+
|
|
142
|
+
## Reduced Motion
|
|
143
|
+
|
|
144
|
+
Each effect declares a policy; the runtime stamps it as `data-kui-rm`, and
|
|
145
|
+
`src/css/base.css` applies it under `prefers-reduced-motion: reduce`:
|
|
146
|
+
|
|
147
|
+
- `shorten`: CSS animations run at 1ms with no delay. Entrances, hover, feedback, counters.
|
|
148
|
+
JS counters instead finish in one timer tick (~16ms) after any authored delay.
|
|
149
|
+
- `crossfade`: replaced by a 200ms fade. No effect defaults to it; opt in with `rm:crossfade`.
|
|
150
|
+
- `disable`: no animation; the element is forced to its end state (`opacity: 1`, no
|
|
151
|
+
translate/scale/rotate/filter/offset-path). Split text, typewriter, scramble, pins,
|
|
152
|
+
parallax, scroll progress, ambient loops, spinners, cursor and tilt effects, gestures, FLIP layout,
|
|
153
|
+
`toggle-morph`.
|
|
154
|
+
- CSS transitions on every marked element shorten to 1ms under every policy.
|
|
155
|
+
- A skipped effect still emits `kui:finish` with `reason: 'reduced-motion'` (no `kui:start`),
|
|
156
|
+
so chained work still runs.
|
|
157
|
+
- The animator option `reducedMotion: 'ignore'` exists for demos and tests only.
|
|
158
|
+
|
|
159
|
+
Source: `src/core/types.ts` (`ReducedMotionPolicy`), `src/core/animator.ts`,
|
|
160
|
+
`src/core/host-facts.ts`, `src/css/base.css`; per-effect policy is each primitive's
|
|
161
|
+
`reducedMotion` field.
|
|
162
|
+
|
|
163
|
+
## Opt-In Tiers
|
|
164
|
+
|
|
165
|
+
| Tier | Load | Names |
|
|
166
|
+
|---|---|---|
|
|
167
|
+
| Advanced (experimental, WebGL2 / Canvas / Web Audio, API may change without a major) | `<script src="kuinetic.advanced.js">` beside core, either order; or `registerAdvanced(k)` from `kuinetic/advanced` (or `registerShaders`, `registerScenes`, `registerCamera`, `registerParticles`, `registerFluidCursor`, `registerAudio`). No CSS file. | `shaders` `shader-displace` `shader-fluid` `fluid-pointer` `shader-liquid` `liquid-distort` `shader-particles` `particle-field` `shader-morph` `image-morph` `shader-gradient` `gradient-liquid` `gradient-bands` `gradient-holo` `shader-logo` `logo-gradient`; `scene` `scene-step`; `camera-scene` `camera-layer`; `particle-dissolve`; `fluid-trail` `cursor-fluid` `fluid-cursor`; `audio-source` `audio-reactive` `audio-mic` |
|
|
168
|
+
| 3D model | Not published: `src/3d/` is absent from the package `exports` and its renderer is not built. Do not use. | `model-3d` |
|
|
169
|
+
| Notes | Optional `kuinetic.notes.js`, only to add plain-words notes to `describe()` output. | none |
|
|
170
|
+
|
|
171
|
+
Every advanced primitive declares `reducedMotion: 'disable'`. Generative shaders bake one
|
|
172
|
+
still frame, `scene` holds its final frame, and `camera-scene` renders a stationary
|
|
173
|
+
composition. Source: `src/advanced/index.ts` and its modules,
|
|
174
|
+
`docs/advanced-modules.md`, `src/3d/index.ts`.
|
|
175
|
+
|
|
176
|
+
## Gotchas
|
|
177
|
+
|
|
178
|
+
- A hidden element (`display: none`, a closed `<dialog>` or popover) cannot trigger a visible entrance while closed, and `on:enter` may fire only once it opens. For opening transitions, especially repeated ones, prefer the open/close family.
|
|
179
|
+
- Split, typewriter and scramble skip a host that contains a link or control; put them on a leaf.
|
|
180
|
+
- Author counters with the final value as text (`<b data-kui="count-up to:237">237</b>`).
|
|
181
|
+
- `repeat:infinite` is dropped on `view`/`scroll`/`pin` timelines. A `view` timeline stalls while pinned; use `timeline:pin`.
|
|
182
|
+
- `submit-to-spinner-to-check` runs on fixed timers (`load:1200ms`, `hold:1500ms`) with no error stage; it is a demo, not request state.
|
|
183
|
+
- `copy-confirm` fades 0 → 1 → 0 over 1400ms and ends hidden; put it on the status label, not the button. Under reduced motion it inherits `shorten`, runs in about 1ms and ends at opacity 0, so the app must keep its own visible "Copied" status for the hold period.
|
|
184
|
+
- `above:`/`below:` accept only the five named breakpoints. `above:900px` is invalid, and the gate is dropped, so the effect runs at every width.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# OpenAI Frontend Skill Reference
|
|
2
|
+
|
|
3
|
+
Use this reference for visually led landing pages, branded demos, polished prototypes, and other frontend work where composition and art direction matter more than component count.
|
|
4
|
+
|
|
5
|
+
This reference supplies an optional composition language. `ui-loop.md` owns generic
|
|
6
|
+
review, `visual-storytelling.md` owns narrative sequencing, and
|
|
7
|
+
`delight-and-motion.md` owns contextual motion decisions.
|
|
8
|
+
|
|
9
|
+
Source note: adapted into local reference form from OpenAI's curated frontend skill on 2026-03-21 so this repo does not need to fetch it from the web during use.
|
|
10
|
+
|
|
11
|
+
## Activation Guardrail
|
|
12
|
+
|
|
13
|
+
- Hard guard: if you activate this reference, explicitly tell the user in your next reply that you are using `openai-frontend-skill.md`.
|
|
14
|
+
- Say why it was activated in plain language, such as landing-page composition, branded demo direction, or anti-generic UI guidance.
|
|
15
|
+
- Do this before presenting design direction, layout proposals, or stylistic recommendations derived from this reference.
|
|
16
|
+
- If the user does not want this direction, stop using this reference and fall back to the base UX skill plus the other applicable local references.
|
|
17
|
+
|
|
18
|
+
## Working Model
|
|
19
|
+
|
|
20
|
+
Before designing, define:
|
|
21
|
+
|
|
22
|
+
1. visual thesis: the mood, material, and energy
|
|
23
|
+
2. dominant visual plane: what carries the composition before component details
|
|
24
|
+
3. interaction character: how static, tactile, cinematic, or editorial it should feel
|
|
25
|
+
|
|
26
|
+
## Composition Defaults
|
|
27
|
+
|
|
28
|
+
- Start with composition before components.
|
|
29
|
+
- Prefer one strong visual anchor in the first viewport.
|
|
30
|
+
- Treat the first screen like a poster, not a document.
|
|
31
|
+
- Make the brand or product name the loudest text on branded pages.
|
|
32
|
+
- Use spacing, scale, alignment, contrast, and cropping before adding extra UI chrome.
|
|
33
|
+
- Default to cardless layouts unless the card itself is the interaction.
|
|
34
|
+
|
|
35
|
+
## Landing Page Sequence
|
|
36
|
+
|
|
37
|
+
Default structure:
|
|
38
|
+
|
|
39
|
+
1. hero: product or brand, promise, CTA, dominant visual
|
|
40
|
+
2. support: one concrete feature, offer, or proof point
|
|
41
|
+
3. detail: workflow, atmosphere, depth, or story
|
|
42
|
+
4. final CTA: start, contact, convert, or visit
|
|
43
|
+
|
|
44
|
+
## Hero Rules
|
|
45
|
+
|
|
46
|
+
- One composition only.
|
|
47
|
+
- Use a full-bleed image or another dominant visual plane when the brief supports it.
|
|
48
|
+
- Keep the text column narrow and placed over a calm visual area.
|
|
49
|
+
- Keep headlines readable in one glance and protect contrast and tap targets when
|
|
50
|
+
text sits over imagery.
|
|
51
|
+
- Count sticky or fixed headers against the first-viewport budget. Do not stack
|
|
52
|
+
persistent chrome above a `100vh` or `100svh` hero without accounting for it.
|
|
53
|
+
|
|
54
|
+
## Product UI Rules
|
|
55
|
+
|
|
56
|
+
For app surfaces, use restraint:
|
|
57
|
+
|
|
58
|
+
- calm hierarchy
|
|
59
|
+
- strong typography
|
|
60
|
+
- dense but readable information
|
|
61
|
+
- minimal chrome
|
|
62
|
+
- cards only when the card is the interaction
|
|
63
|
+
|
|
64
|
+
Organize product UI around:
|
|
65
|
+
|
|
66
|
+
- primary workspace
|
|
67
|
+
- navigation
|
|
68
|
+
- secondary context or inspector
|
|
69
|
+
- one clear accent for action or state
|
|
70
|
+
|
|
71
|
+
## Imagery Rules
|
|
72
|
+
|
|
73
|
+
- Imagery must do narrative work, not just fill space.
|
|
74
|
+
- Prefer strong, real-looking photography for brands, editorial, venue, or lifestyle surfaces.
|
|
75
|
+
- Choose crops with a stable tonal area for text.
|
|
76
|
+
- Avoid embedded signage, logos, or typography fighting the UI.
|
|
77
|
+
- If several moments are needed, use several images instead of a collage.
|
|
78
|
+
|
|
79
|
+
## Copy Rules
|
|
80
|
+
|
|
81
|
+
- Write in product language, not design commentary.
|
|
82
|
+
- Let the headline carry meaning, keep supporting copy short, and cut repetition
|
|
83
|
+
between sections.
|
|
84
|
+
- Give each section one responsibility: explain, prove, deepen, or convert.
|
|
85
|
+
|
|
86
|
+
For dashboards or operational UI:
|
|
87
|
+
|
|
88
|
+
- prefer utility copy over marketing copy
|
|
89
|
+
- lead with status, action, scope, or decision value
|
|
90
|
+
- avoid homepage-style hero language unless explicitly requested
|
|
91
|
+
|
|
92
|
+
## Motion Recipe
|
|
93
|
+
|
|
94
|
+
For visually led work, explore a small set of intentional motions:
|
|
95
|
+
|
|
96
|
+
- one entrance sequence in the hero
|
|
97
|
+
- one scroll, sticky, or depth effect
|
|
98
|
+
- one hover, reveal, or layout transition
|
|
99
|
+
|
|
100
|
+
Keep the selected motions noticeable enough to support the intended atmosphere,
|
|
101
|
+
fast and smooth on mobile, and consistent across the page. Remove any that are
|
|
102
|
+
merely ornamental. This is an art-direction recipe, not a required motion count;
|
|
103
|
+
`ui-loop.md` owns the final restraint and reduced-motion review.
|
|
104
|
+
|
|
105
|
+
## Composition Anti-Patterns
|
|
106
|
+
|
|
107
|
+
- no cards by default
|
|
108
|
+
- no hero cards by default
|
|
109
|
+
- no boxed center-column hero when the brief wants full bleed
|
|
110
|
+
- no more than one dominant idea per section
|
|
111
|
+
- no filler copy
|
|
112
|
+
- no busy imagery behind text
|
|
113
|
+
- no split-screen hero unless one side stays visually calm
|
|
114
|
+
- no more than two typefaces without a reason
|
|
115
|
+
- no more than one accent color unless the product already has a system
|
|
116
|
+
|
|
117
|
+
## Failure Examples
|
|
118
|
+
|
|
119
|
+
Reject or revise when you see:
|
|
120
|
+
|
|
121
|
+
- generic SaaS card grid as the first impression
|
|
122
|
+
- strong image but weak brand presence
|
|
123
|
+
- strong headline but no clear action
|
|
124
|
+
- repeated mood-setting sections with no informational progression
|
|
125
|
+
- carousel with no narrative purpose
|
|
126
|
+
- app UI built from stacked cards instead of layout
|
|
127
|
+
|
|
128
|
+
## Source Litmus Questions
|
|
129
|
+
|
|
130
|
+
- Is the brand or product unmistakable in the first screen?
|
|
131
|
+
- Is there one strong visual anchor?
|
|
132
|
+
- Can the page be understood by scanning headlines?
|
|
133
|
+
- Does each section have one job?
|
|
134
|
+
- Are cards actually necessary?
|
|
135
|
+
- Does motion improve hierarchy or atmosphere?
|
|
136
|
+
- Would the design still feel strong if shadows and decorative polish were removed?
|
|
137
|
+
|
|
138
|
+
Do not turn these defaults into fixed numeric caps or a second acceptance checklist.
|
|
139
|
+
Use the UI Loop to judge whether the selected composition succeeds in context.
|