@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.
Files changed (335) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/NOTICE +14 -0
  3. package/README.md +35 -14
  4. package/charts-echarts/plugin.json +39 -0
  5. package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
  6. package/charts-recharts/plugin.json +32 -0
  7. package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
  8. package/cloudflare/NOTES.md +16 -0
  9. package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
  10. package/cloudflare/lib/api.mjs +96 -0
  11. package/cloudflare/lib/assets.mjs +65 -0
  12. package/cloudflare/lib/dns.mjs +32 -0
  13. package/cloudflare/lib/domain-inventory.mjs +61 -0
  14. package/cloudflare/lib/domain-status.mjs +48 -0
  15. package/cloudflare/lib/domains.mjs +95 -0
  16. package/cloudflare/lib/forms.mjs +254 -0
  17. package/cloudflare/lib/pages-upload.mjs +51 -0
  18. package/cloudflare/lib/target.mjs +165 -0
  19. package/cloudflare/lib/workers-upload.mjs +48 -0
  20. package/cloudflare/lib/zones.mjs +25 -0
  21. package/cloudflare/mcp.json +4 -0
  22. package/cloudflare/plugin.json +96 -0
  23. package/cloudflare/skills/cloudflare/SKILL.md +57 -0
  24. package/cloudflare/skills/cloudflare/references/domains.md +31 -0
  25. package/cloudflare/skills/cloudflare/references/pages.md +18 -0
  26. package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
  27. package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
  28. package/cloudflare/skills/cloudflare/references/workers.md +42 -0
  29. package/cloudflare/targets/cloudflare-pages.mjs +12 -0
  30. package/cloudflare/targets/cloudflare-workers.mjs +17 -0
  31. package/cloudflare/tovu-consent.json +6 -0
  32. package/cloudflare/tovu-deploy-targets.json +630 -0
  33. package/cloudflare/tovu-form-destinations.json +12 -0
  34. package/cloudflare/worker/forms-receiver.mjs +249 -0
  35. package/composio/mcp.json +10 -0
  36. package/composio/plugin.json +68 -0
  37. package/composio/skills/composio/SKILL.md +85 -0
  38. package/dist/core/identity-namespace.d.ts +12 -0
  39. package/dist/core/identity-namespace.js +20 -0
  40. package/dist/folder-zip-node.js +29 -7
  41. package/dist/lifecycle/bundled-digests.js +4 -3
  42. package/dist/lifecycle/install.d.ts +7 -0
  43. package/dist/lifecycle/install.js +45 -3
  44. package/dist/lifecycle/manifest.d.ts +2 -2
  45. package/dist/lifecycle/manifest.js +5 -3
  46. package/dist/lifecycle/node.js +2 -0
  47. package/dist/lifecycle/persistent-state.js +1 -1
  48. package/dist/lifecycle/ports.d.ts +8 -0
  49. package/dist/lifecycle/seed-bundled.js +4 -1
  50. package/dist/manifest.d.ts +1 -1
  51. package/dist/manifest.js +3 -2
  52. package/fly/deploy-configs/fly.mjs +115 -0
  53. package/fly/deploy-ops/fly.mjs +102 -0
  54. package/fly/mcp.json +4 -0
  55. package/fly/plugin.json +81 -0
  56. package/fly/scripts/render-deploy-workflow.mjs +150 -0
  57. package/fly/skills/fly/SKILL.md +43 -0
  58. package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
  59. package/fly/skills/fly/references/fly.template.toml +81 -0
  60. package/fly/tovu-credential-schemes.json +11 -0
  61. package/fly/tovu-deploy-configs.json +21 -0
  62. package/fly/tovu-deploy-ops.json +14 -0
  63. package/github/deploy-ops/github-actions.mjs +164 -0
  64. package/github/deployments/github.mjs +415 -0
  65. package/github/mcp.json +4 -0
  66. package/github/plugin.json +105 -0
  67. package/github/skills/github/SKILL.md +249 -0
  68. package/github/skills/github/references/actions.md +224 -0
  69. package/github/skills/github/references/auth-and-tokens.md +140 -0
  70. package/github/skills/github/references/repo-files.md +135 -0
  71. package/github/skills/github/references/site-backup.md +159 -0
  72. package/github/skills/github/references/source-control.md +123 -0
  73. package/github/source-control/backup-push.mjs +242 -0
  74. package/github/source-control/commit-site.mjs +459 -0
  75. package/github/source-control/github.mjs +93 -0
  76. package/github/source-control/write-files.mjs +468 -0
  77. package/github/tovu-deploy-ops.json +13 -0
  78. package/github/tovu-source-control.json +117 -0
  79. package/github-pages/NOTES.md +19 -0
  80. package/github-pages/mcp.json +4 -0
  81. package/github-pages/plugin.json +48 -0
  82. package/github-pages/skills/github-pages/SKILL.md +44 -0
  83. package/github-pages/targets/github-pages.mjs +543 -0
  84. package/github-pages/tovu-deploy-targets.json +327 -0
  85. package/google-login/exports/google-g.svg +1 -0
  86. package/google-login/exports/sign-in-button.css +68 -0
  87. package/google-login/exports/sign-in-button.html +4 -0
  88. package/google-login/mcp.json +4 -0
  89. package/google-login/plugin.json +59 -0
  90. package/google-login/skills/google-login/SKILL.md +96 -0
  91. package/google-login/tovu-login-providers.json +21 -0
  92. package/google-workspace/README.md +132 -0
  93. package/google-workspace/form-destinations/README.md +87 -0
  94. package/google-workspace/form-destinations/dedupe.mjs +43 -0
  95. package/google-workspace/form-destinations/delivery-result.mjs +69 -0
  96. package/google-workspace/form-destinations/mapping.mjs +152 -0
  97. package/google-workspace/form-destinations/sheets.mjs +202 -0
  98. package/google-workspace/lib/auth.mjs +81 -0
  99. package/google-workspace/lib/drive-files.mjs +54 -0
  100. package/google-workspace/lib/form-destination-settings.mjs +72 -0
  101. package/google-workspace/lib/http.mjs +168 -0
  102. package/google-workspace/lib/picker-flow.mjs +171 -0
  103. package/google-workspace/lib/picker-selection.mjs +107 -0
  104. package/google-workspace/lib/product-state.mjs +93 -0
  105. package/google-workspace/lib/request-policy.mjs +163 -0
  106. package/google-workspace/lib/sheets-a1.mjs +79 -0
  107. package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
  108. package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
  109. package/google-workspace/lib/sheets-client.mjs +286 -0
  110. package/google-workspace/lib/surface-actions.mjs +107 -0
  111. package/google-workspace/mcp.json +4 -0
  112. package/google-workspace/plugin.json +77 -0
  113. package/google-workspace/products.json +12 -0
  114. package/google-workspace/skills/google-workspace/SKILL.md +82 -0
  115. package/google-workspace/skills/google-workspace/references/connection.md +102 -0
  116. package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
  117. package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
  118. package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
  119. package/google-workspace/tools/account-info.mjs +18 -0
  120. package/google-workspace/tools/sheets/README.md +54 -0
  121. package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
  122. package/google-workspace/tools/sheets/copy.mjs +23 -0
  123. package/google-workspace/tools/sheets/create.mjs +35 -0
  124. package/google-workspace/tools/sheets/find-replace.mjs +38 -0
  125. package/google-workspace/tools/sheets/find.mjs +52 -0
  126. package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
  127. package/google-workspace/tools/sheets/get.mjs +22 -0
  128. package/google-workspace/tools/sheets/values-append.mjs +27 -0
  129. package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
  130. package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
  131. package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
  132. package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
  133. package/google-workspace/tools/sheets/values-clear.mjs +20 -0
  134. package/google-workspace/tools/sheets/values-get.mjs +21 -0
  135. package/google-workspace/tools/sheets/values-update.mjs +26 -0
  136. package/google-workspace/tools/sheets-admin/README.md +45 -0
  137. package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
  138. package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
  139. package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
  140. package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
  141. package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
  142. package/google-workspace/tools/sheets-admin/format.mjs +70 -0
  143. package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
  144. package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
  145. package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
  146. package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
  147. package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
  148. package/google-workspace/tovu-admin-surfaces.json +63 -0
  149. package/google-workspace/tovu-agent-tools.json +1178 -0
  150. package/google-workspace/tovu-connections.json +35 -0
  151. package/google-workspace/tovu-form-destinations.json +10 -0
  152. package/google-workspace/ui/README.md +73 -0
  153. package/google-workspace/ui/connection-panel.handler.mjs +167 -0
  154. package/google-workspace/ui/connection-panel.html +17 -0
  155. package/google-workspace/ui/connection-panel.mjs +189 -0
  156. package/google-workspace/ui/connection-view.mjs +120 -0
  157. package/google-workspace/ui/destination-panel.handler.mjs +106 -0
  158. package/google-workspace/ui/destination-panel.html +17 -0
  159. package/google-workspace/ui/destination-panel.mjs +150 -0
  160. package/google-workspace/ui/dom.mjs +140 -0
  161. package/google-workspace/ui/panel.css +170 -0
  162. package/google-workspace/ui/picker-flow.mjs +87 -0
  163. package/google-workspace/ui/picker-view.mjs +44 -0
  164. package/google-workspace/ui/picker.handler.mjs +56 -0
  165. package/google-workspace/ui/picker.html +17 -0
  166. package/google-workspace/ui/picker.mjs +88 -0
  167. package/google-workspace/ui/surface-client.mjs +227 -0
  168. package/higgsfield-media/mcp.json +9 -0
  169. package/higgsfield-media/plugin.json +109 -0
  170. package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
  171. package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
  172. package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
  173. package/jev/mcp.json +4 -0
  174. package/jev/plugin.json +44 -0
  175. package/jev/skills/jev/SKILL.md +308 -0
  176. package/jev/skills/jev/references/cookbooks.md +197 -0
  177. package/jev/skills/jev/references/jaggedness.md +135 -0
  178. package/jev/skills/jev/references/javascript-sdk.md +146 -0
  179. package/jev/skills/jev/references/patterns.md +123 -0
  180. package/jev/skills/jev/references/primitives-reference.md +187 -0
  181. package/langfuse/plugin.json +22 -0
  182. package/meilisearch/mcp.json +4 -0
  183. package/meilisearch/plugin.json +54 -0
  184. package/meilisearch/providers/meilisearch.mjs +651 -0
  185. package/meilisearch/skills/meilisearch/SKILL.md +43 -0
  186. package/meilisearch/tovu-search-providers.json +10 -0
  187. package/netlify/NOTES.md +13 -0
  188. package/netlify/mcp.json +4 -0
  189. package/netlify/plugin.json +47 -0
  190. package/netlify/skills/netlify/SKILL.md +39 -0
  191. package/netlify/targets/netlify.mjs +384 -0
  192. package/netlify/tovu-consent.json +6 -0
  193. package/netlify/tovu-deploy-targets.json +163 -0
  194. package/opentelemetry/mcp.json +4 -0
  195. package/opentelemetry/plugin.json +52 -0
  196. package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
  197. package/package.json +161 -6
  198. package/posthog/mcp.json +4 -0
  199. package/posthog/plugin.json +46 -0
  200. package/posthog/skills/posthog/SKILL.md +36 -0
  201. package/railway/deploy-configs/railway.mjs +135 -0
  202. package/railway/deploy-ops/railway.mjs +167 -0
  203. package/railway/mcp.json +4 -0
  204. package/railway/plugin.json +45 -0
  205. package/railway/skills/railway/SKILL.md +66 -0
  206. package/railway/tovu-deploy-configs.json +16 -0
  207. package/railway/tovu-deploy-ops.json +11 -0
  208. package/render/deploy-configs/render.mjs +141 -0
  209. package/render/deploy-ops/render.mjs +152 -0
  210. package/render/mcp.json +4 -0
  211. package/render/plugin.json +47 -0
  212. package/render/skills/render/SKILL.md +63 -0
  213. package/render/tovu-deploy-configs.json +16 -0
  214. package/render/tovu-deploy-ops.json +11 -0
  215. package/resend/NOTES.md +52 -0
  216. package/resend/adapters/resend.mjs +161 -0
  217. package/resend/lib/domains.mjs +137 -0
  218. package/resend/lib/errors.mjs +25 -0
  219. package/resend/lib/feedback.mjs +118 -0
  220. package/resend/mcp.json +13 -0
  221. package/resend/plugin.json +192 -0
  222. package/resend/skills/resend/SKILL.md +107 -0
  223. package/resend/tovu-mail-adapters.json +22 -0
  224. package/s3-compatible/NOTES.md +11 -0
  225. package/s3-compatible/mcp.json +4 -0
  226. package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
  227. package/s3-compatible/plugin.json +56 -0
  228. package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
  229. package/s3-compatible/targets/s3-compatible.mjs +1054 -0
  230. package/s3-compatible/tovu-deploy-targets.json +432 -0
  231. package/s3-compatible/tovu-object-stores.json +29 -0
  232. package/sentry/mcp.json +4 -0
  233. package/sentry/plugin.json +49 -0
  234. package/sentry/skills/sentry/SKILL.md +34 -0
  235. package/shopify/mcp.json +4 -0
  236. package/shopify/plugin.json +22 -0
  237. package/shopify/skills/shopify/SKILL.md +103 -0
  238. package/shopify/skills/shopify/references/catalog-sync.md +74 -0
  239. package/shopify/skills/shopify/references/domains.md +26 -0
  240. package/shopify/skills/shopify/references/live-storefront.md +34 -0
  241. package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
  242. package/site-compliance/mcp.json +4 -0
  243. package/site-compliance/plugin.json +34 -0
  244. package/site-compliance/skills/site-compliance/SKILL.md +220 -0
  245. package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
  246. package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
  247. package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
  248. package/site-import/mcp.json +4 -0
  249. package/site-import/plugin.json +41 -0
  250. package/site-import/skills/site-import/SKILL.md +232 -0
  251. package/site-import/skills/site-import/references/content-mapping.md +166 -0
  252. package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
  253. package/site-import/skills/site-import/references/theme-extraction.md +34 -0
  254. package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  255. package/slide-design/mcp.json +4 -0
  256. package/slide-design/plugin.json +26 -0
  257. package/slide-design/skills/slide-design/SKILL.md +103 -0
  258. package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
  259. package/slide-design/skills/slide-design/references/html-deck.md +175 -0
  260. package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
  261. package/slide-design/skills/slide-design/references/review.md +93 -0
  262. package/slide-design/skills/slide-design/references/storyline.md +118 -0
  263. package/stripe/plugin.json +22 -0
  264. package/supabase/mcp.json +26 -0
  265. package/supabase/plugin.json +78 -0
  266. package/supabase/skills/supabase/SKILL.md +169 -0
  267. package/supabase/skills/supabase/references/failure-modes.md +101 -0
  268. package/ui-ux-design/CHANGELOG.md +28 -0
  269. package/ui-ux-design/LICENSE +201 -0
  270. package/ui-ux-design/NOTICE +14 -0
  271. package/ui-ux-design/README.md +62 -0
  272. package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  273. package/ui-ux-design/mcp.json +4 -0
  274. package/ui-ux-design/plugin.json +26 -0
  275. package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
  276. package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
  277. package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
  278. package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
  279. package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
  280. package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
  281. package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
  282. package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
  283. package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
  284. package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
  285. package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
  286. package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
  287. package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
  288. package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
  289. package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
  290. package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
  291. package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
  292. package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
  293. package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
  294. package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  295. package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
  296. package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  297. package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
  298. package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
  299. package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
  300. package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
  301. package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  302. package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
  303. package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
  304. package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
  305. package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
  306. package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
  307. package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
  308. package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
  309. package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
  310. package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
  311. package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
  312. package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
  313. package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
  314. package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
  315. package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
  316. package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
  317. package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
  318. package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
  319. package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
  320. package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
  321. package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
  322. package/vercel/NOTES.md +23 -0
  323. package/vercel/mcp.json +4 -0
  324. package/vercel/object-stores/vercel-blob.mjs +147 -0
  325. package/vercel/plugin.json +47 -0
  326. package/vercel/skills/vercel/SKILL.md +48 -0
  327. package/vercel/targets/vercel.mjs +586 -0
  328. package/vercel/tovu-consent.json +6 -0
  329. package/vercel/tovu-deploy-targets.json +219 -0
  330. package/vercel/tovu-object-stores.json +10 -0
  331. package/wordpress/NOTES.md +33 -0
  332. package/wordpress/plugin.json +30 -0
  333. package/wordpress/skills/wordpress/SKILL.md +43 -0
  334. package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
  335. 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.