@prestyj/cli 5.4.1 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/README.md +25 -12
  2. package/assets/end-notification.mp3 +0 -0
  3. package/assets/skills/evidence-led-ui/LICENSES.md +68 -0
  4. package/assets/skills/evidence-led-ui/SKILL.md +139 -0
  5. package/{LICENSE → assets/skills/evidence-led-ui/corpus/awesome-design-md/LICENSE} +1 -1
  6. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airbnb/DESIGN.md +545 -0
  7. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airtable/DESIGN.md +554 -0
  8. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/apple/DESIGN.md +562 -0
  9. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/binance/DESIGN.md +634 -0
  10. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw/DESIGN.md +544 -0
  11. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw-m/DESIGN.md +503 -0
  12. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bugatti/DESIGN.md +454 -0
  13. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cal/DESIGN.md +542 -0
  14. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/claude/DESIGN.md +589 -0
  15. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clay/DESIGN.md +541 -0
  16. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clickhouse/DESIGN.md +544 -0
  17. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cohere/DESIGN.md +451 -0
  18. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/coinbase/DESIGN.md +570 -0
  19. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/composio/DESIGN.md +506 -0
  20. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cursor/DESIGN.md +537 -0
  21. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/dell-1996/DESIGN.md +632 -0
  22. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/elevenlabs/DESIGN.md +504 -0
  23. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/expo/DESIGN.md +526 -0
  24. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ferrari/DESIGN.md +531 -0
  25. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/figma/DESIGN.md +578 -0
  26. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/framer/DESIGN.md +544 -0
  27. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hashicorp/DESIGN.md +575 -0
  28. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hp/DESIGN.md +670 -0
  29. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ibm/DESIGN.md +550 -0
  30. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/intercom/DESIGN.md +546 -0
  31. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/kraken/DESIGN.md +125 -0
  32. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lamborghini/DESIGN.md +288 -0
  33. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/linear.app/DESIGN.md +548 -0
  34. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lovable/DESIGN.md +298 -0
  35. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mastercard/DESIGN.md +365 -0
  36. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/meta/DESIGN.md +683 -0
  37. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/minimax/DESIGN.md +746 -0
  38. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mintlify/DESIGN.md +852 -0
  39. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/miro/DESIGN.md +825 -0
  40. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mistral.ai/DESIGN.md +773 -0
  41. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mongodb/DESIGN.md +767 -0
  42. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nike/DESIGN.md +575 -0
  43. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nintendo-2001/DESIGN.md +649 -0
  44. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/notion/DESIGN.md +821 -0
  45. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nvidia/DESIGN.md +640 -0
  46. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ollama/DESIGN.md +539 -0
  47. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/opencode.ai/DESIGN.md +521 -0
  48. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/pinterest/DESIGN.md +597 -0
  49. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/playstation/DESIGN.md +661 -0
  50. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/posthog/DESIGN.md +690 -0
  51. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/raycast/DESIGN.md +669 -0
  52. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/renault/DESIGN.md +589 -0
  53. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/replicate/DESIGN.md +616 -0
  54. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/resend/DESIGN.md +585 -0
  55. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/revolut/DESIGN.md +636 -0
  56. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/runwayml/DESIGN.md +244 -0
  57. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sanity/DESIGN.md +357 -0
  58. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sentry/DESIGN.md +551 -0
  59. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/shopify/DESIGN.md +516 -0
  60. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/slack/DESIGN.md +482 -0
  61. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spacex/DESIGN.md +363 -0
  62. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spotify/DESIGN.md +246 -0
  63. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/starbucks/DESIGN.md +580 -0
  64. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/stripe/DESIGN.md +487 -0
  65. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/supabase/DESIGN.md +462 -0
  66. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/superhuman/DESIGN.md +448 -0
  67. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/tesla/DESIGN.md +286 -0
  68. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/theverge/DESIGN.md +339 -0
  69. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/together.ai/DESIGN.md +633 -0
  70. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/uber/DESIGN.md +636 -0
  71. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vercel/DESIGN.md +736 -0
  72. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vodafone/DESIGN.md +538 -0
  73. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/voltagent/DESIGN.md +521 -0
  74. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/warp/DESIGN.md +526 -0
  75. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/webflow/DESIGN.md +588 -0
  76. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wired/DESIGN.md +497 -0
  77. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wise/DESIGN.md +544 -0
  78. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/x.ai/DESIGN.md +465 -0
  79. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/zapier/DESIGN.md +537 -0
  80. package/assets/skills/evidence-led-ui/data/corpus-manifest.json +768 -0
  81. package/assets/skills/evidence-led-ui/data/observations.json +47053 -0
  82. package/assets/skills/evidence-led-ui/references/anti-defaults.md +203 -0
  83. package/assets/skills/evidence-led-ui/references/archetypes.md +97 -0
  84. package/assets/skills/evidence-led-ui/references/craft-rulings.md +167 -0
  85. package/assets/skills/evidence-led-ui/references/methodology.md +72 -0
  86. package/assets/skills/evidence-led-ui/references/observed-patterns.md +68 -0
  87. package/assets/skills/evidence-led-ui/references/production-contract.md +120 -0
  88. package/assets/skills/evidence-led-ui/references/provenance.md +117 -0
  89. package/assets/skills/evidence-led-ui/references/quality-rubric.md +126 -0
  90. package/dist/app-sidecar.js +272 -74
  91. package/dist/app-sidecar.js.map +1 -1
  92. package/dist/chat-agents/general.d.ts +7 -0
  93. package/dist/chat-agents/general.d.ts.map +1 -0
  94. package/dist/chat-agents/general.js +16 -0
  95. package/dist/chat-agents/general.js.map +1 -0
  96. package/dist/chat-agents/general.test.d.ts +2 -0
  97. package/dist/chat-agents/general.test.d.ts.map +1 -0
  98. package/dist/chat-agents/general.test.js +50 -0
  99. package/dist/chat-agents/general.test.js.map +1 -0
  100. package/dist/chat-agents/index.d.ts +11 -0
  101. package/dist/chat-agents/index.d.ts.map +1 -0
  102. package/dist/chat-agents/index.js +89 -0
  103. package/dist/chat-agents/index.js.map +1 -0
  104. package/dist/chat-agents/jiwa.d.ts +53 -0
  105. package/dist/chat-agents/jiwa.d.ts.map +1 -0
  106. package/dist/chat-agents/jiwa.js +352 -0
  107. package/dist/chat-agents/jiwa.js.map +1 -0
  108. package/dist/chat-agents/jiwa.test.d.ts +2 -0
  109. package/dist/chat-agents/jiwa.test.d.ts.map +1 -0
  110. package/dist/chat-agents/jiwa.test.js +66 -0
  111. package/dist/chat-agents/jiwa.test.js.map +1 -0
  112. package/dist/chat-agents/memory.d.ts +53 -0
  113. package/dist/chat-agents/memory.d.ts.map +1 -0
  114. package/dist/chat-agents/memory.js +362 -0
  115. package/dist/chat-agents/memory.js.map +1 -0
  116. package/dist/chat-agents/memory.test.d.ts +2 -0
  117. package/dist/chat-agents/memory.test.d.ts.map +1 -0
  118. package/dist/chat-agents/memory.test.js +155 -0
  119. package/dist/chat-agents/memory.test.js.map +1 -0
  120. package/dist/chat-agents/research.d.ts +7 -0
  121. package/dist/chat-agents/research.d.ts.map +1 -0
  122. package/dist/chat-agents/research.js +18 -0
  123. package/dist/chat-agents/research.js.map +1 -0
  124. package/dist/chat-agents/shared.d.ts +11 -0
  125. package/dist/chat-agents/shared.d.ts.map +1 -0
  126. package/dist/chat-agents/shared.js +52 -0
  127. package/dist/chat-agents/shared.js.map +1 -0
  128. package/dist/chat-agents/specialists.test.d.ts +2 -0
  129. package/dist/chat-agents/specialists.test.d.ts.map +1 -0
  130. package/dist/chat-agents/specialists.test.js +97 -0
  131. package/dist/chat-agents/specialists.test.js.map +1 -0
  132. package/dist/chat-agents/therapist.d.ts +7 -0
  133. package/dist/chat-agents/therapist.d.ts.map +1 -0
  134. package/dist/chat-agents/therapist.js +20 -0
  135. package/dist/chat-agents/therapist.js.map +1 -0
  136. package/dist/chat-agents/types.d.ts +4 -0
  137. package/dist/chat-agents/types.d.ts.map +1 -0
  138. package/dist/chat-agents/types.js +7 -0
  139. package/dist/chat-agents/types.js.map +1 -0
  140. package/dist/cli/auth.js +1 -1
  141. package/dist/cli/auth.js.map +1 -1
  142. package/dist/cli.d.ts.map +1 -1
  143. package/dist/cli.js +72 -22
  144. package/dist/cli.js.map +1 -1
  145. package/dist/core/agent-session-memory-tail.test.d.ts +2 -0
  146. package/dist/core/agent-session-memory-tail.test.d.ts.map +1 -0
  147. package/dist/core/agent-session-memory-tail.test.js +122 -0
  148. package/dist/core/agent-session-memory-tail.test.js.map +1 -0
  149. package/dist/core/agent-session-subagent-policy.test.d.ts +2 -0
  150. package/dist/core/agent-session-subagent-policy.test.d.ts.map +1 -0
  151. package/dist/core/agent-session-subagent-policy.test.js +36 -0
  152. package/dist/core/agent-session-subagent-policy.test.js.map +1 -0
  153. package/dist/core/agent-session.d.ts +39 -11
  154. package/dist/core/agent-session.d.ts.map +1 -1
  155. package/dist/core/agent-session.js +178 -125
  156. package/dist/core/agent-session.js.map +1 -1
  157. package/dist/core/agents.d.ts +1 -1
  158. package/dist/core/agents.d.ts.map +1 -1
  159. package/dist/core/agents.js +4 -2
  160. package/dist/core/agents.js.map +1 -1
  161. package/dist/core/auth-providers.js +5 -5
  162. package/dist/core/auth-providers.js.map +1 -1
  163. package/dist/core/compaction/compactor.d.ts +7 -0
  164. package/dist/core/compaction/compactor.d.ts.map +1 -1
  165. package/dist/core/compaction/compactor.js +73 -9
  166. package/dist/core/compaction/compactor.js.map +1 -1
  167. package/dist/core/compaction/compactor.test.js +31 -4
  168. package/dist/core/compaction/compactor.test.js.map +1 -1
  169. package/dist/core/event-bus.d.ts +2 -0
  170. package/dist/core/event-bus.d.ts.map +1 -1
  171. package/dist/core/event-bus.js.map +1 -1
  172. package/dist/core/goal-worker.test.js +3 -2
  173. package/dist/core/goal-worker.test.js.map +1 -1
  174. package/dist/core/loop-breaker.d.ts +23 -16
  175. package/dist/core/loop-breaker.d.ts.map +1 -1
  176. package/dist/core/loop-breaker.js +52 -11
  177. package/dist/core/loop-breaker.js.map +1 -1
  178. package/dist/core/loop-breaker.test.js +37 -16
  179. package/dist/core/loop-breaker.test.js.map +1 -1
  180. package/dist/core/mcp/defaults.d.ts +1 -1
  181. package/dist/core/mcp/defaults.js +1 -1
  182. package/dist/core/mcp/store.d.ts +2 -2
  183. package/dist/core/mcp/store.test.js +1 -1
  184. package/dist/core/mcp/store.test.js.map +1 -1
  185. package/dist/core/nolan-prompt.d.ts +3 -3
  186. package/dist/core/nolan-prompt.d.ts.map +1 -1
  187. package/dist/core/nolan-prompt.js +10 -10
  188. package/dist/core/nolan-prompt.js.map +1 -1
  189. package/dist/core/nolan-prompt.test.js +17 -0
  190. package/dist/core/nolan-prompt.test.js.map +1 -1
  191. package/dist/core/progress/rebuild.d.ts +3 -3
  192. package/dist/core/progress/rebuild.d.ts.map +1 -1
  193. package/dist/core/progress/rebuild.js +33 -27
  194. package/dist/core/progress/rebuild.js.map +1 -1
  195. package/dist/core/progress/rebuild.test.js +15 -0
  196. package/dist/core/progress/rebuild.test.js.map +1 -1
  197. package/dist/core/project-discovery.d.ts +1 -1
  198. package/dist/core/project-discovery.d.ts.map +1 -1
  199. package/dist/core/project-discovery.js +5 -6
  200. package/dist/core/project-discovery.js.map +1 -1
  201. package/dist/core/project-discovery.test.js +14 -1
  202. package/dist/core/project-discovery.test.js.map +1 -1
  203. package/dist/core/radio.d.ts +3 -0
  204. package/dist/core/radio.d.ts.map +1 -1
  205. package/dist/core/radio.js +150 -21
  206. package/dist/core/radio.js.map +1 -1
  207. package/dist/core/radio.test.d.ts +2 -0
  208. package/dist/core/radio.test.d.ts.map +1 -0
  209. package/dist/core/radio.test.js +101 -0
  210. package/dist/core/radio.test.js.map +1 -0
  211. package/dist/core/session-history.test.js +1 -1
  212. package/dist/core/session-history.test.js.map +1 -1
  213. package/dist/core/session-manager.d.ts +1 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +2 -1
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/session-manager.test.js +18 -0
  218. package/dist/core/session-manager.test.js.map +1 -1
  219. package/dist/core/settings-manager.d.ts +1 -0
  220. package/dist/core/settings-manager.d.ts.map +1 -1
  221. package/dist/core/settings-manager.js +1 -1
  222. package/dist/core/settings-manager.js.map +1 -1
  223. package/dist/core/skills-routing.test.d.ts +2 -0
  224. package/dist/core/skills-routing.test.d.ts.map +1 -0
  225. package/dist/core/skills-routing.test.js +70 -0
  226. package/dist/core/skills-routing.test.js.map +1 -0
  227. package/dist/core/skills.d.ts +2 -0
  228. package/dist/core/skills.d.ts.map +1 -1
  229. package/dist/core/skills.js +32 -9
  230. package/dist/core/skills.js.map +1 -1
  231. package/dist/core/subagent-manager.d.ts +73 -0
  232. package/dist/core/subagent-manager.d.ts.map +1 -0
  233. package/dist/core/subagent-manager.js +412 -0
  234. package/dist/core/subagent-manager.js.map +1 -0
  235. package/dist/core/subagent-manager.test.d.ts +2 -0
  236. package/dist/core/subagent-manager.test.d.ts.map +1 -0
  237. package/dist/core/subagent-manager.test.js +103 -0
  238. package/dist/core/subagent-manager.test.js.map +1 -0
  239. package/dist/core/subagent-policy.d.ts +4 -0
  240. package/dist/core/subagent-policy.d.ts.map +1 -0
  241. package/dist/core/subagent-policy.js +19 -0
  242. package/dist/core/subagent-policy.js.map +1 -0
  243. package/dist/modes/json-mode.d.ts.map +1 -1
  244. package/dist/modes/json-mode.js +3 -4
  245. package/dist/modes/json-mode.js.map +1 -1
  246. package/dist/modes/subagent-worker-mode.d.ts +14 -0
  247. package/dist/modes/subagent-worker-mode.d.ts.map +1 -0
  248. package/dist/modes/subagent-worker-mode.js +191 -0
  249. package/dist/modes/subagent-worker-mode.js.map +1 -0
  250. package/dist/system-prompt.js +2 -2
  251. package/dist/system-prompt.js.map +1 -1
  252. package/dist/system-prompt.test.js +7 -5
  253. package/dist/system-prompt.test.js.map +1 -1
  254. package/dist/tools/generate-image.d.ts.map +1 -1
  255. package/dist/tools/generate-image.js +12 -5
  256. package/dist/tools/generate-image.js.map +1 -1
  257. package/dist/tools/generate-image.test.js +17 -0
  258. package/dist/tools/generate-image.test.js.map +1 -1
  259. package/dist/tools/goals.d.ts +3 -3
  260. package/dist/tools/index.d.ts +10 -2
  261. package/dist/tools/index.d.ts.map +1 -1
  262. package/dist/tools/index.js +17 -1
  263. package/dist/tools/index.js.map +1 -1
  264. package/dist/tools/skill.d.ts.map +1 -1
  265. package/dist/tools/skill.js +8 -3
  266. package/dist/tools/skill.js.map +1 -1
  267. package/dist/tools/subagent-control.d.ts +6 -0
  268. package/dist/tools/subagent-control.d.ts.map +1 -0
  269. package/dist/tools/subagent-control.js +95 -0
  270. package/dist/tools/subagent-control.js.map +1 -0
  271. package/dist/tools/subagent-control.test.d.ts +2 -0
  272. package/dist/tools/subagent-control.test.d.ts.map +1 -0
  273. package/dist/tools/subagent-control.test.js +40 -0
  274. package/dist/tools/subagent-control.test.js.map +1 -0
  275. package/dist/tools/subagent-shared.d.ts +24 -0
  276. package/dist/tools/subagent-shared.d.ts.map +1 -0
  277. package/dist/tools/subagent-shared.js +53 -0
  278. package/dist/tools/subagent-shared.js.map +1 -0
  279. package/dist/tools/subagent-shared.test.d.ts +2 -0
  280. package/dist/tools/subagent-shared.test.d.ts.map +1 -0
  281. package/dist/tools/subagent-shared.test.js +29 -0
  282. package/dist/tools/subagent-shared.test.js.map +1 -0
  283. package/dist/tools/subagent.d.ts.map +1 -1
  284. package/dist/tools/subagent.js +21 -64
  285. package/dist/tools/subagent.js.map +1 -1
  286. package/dist/tools/subagent.test.js +27 -1
  287. package/dist/tools/subagent.test.js.map +1 -1
  288. package/dist/tools/web-fetch.d.ts +1 -0
  289. package/dist/tools/web-fetch.d.ts.map +1 -1
  290. package/dist/tools/web-fetch.js +112 -35
  291. package/dist/tools/web-fetch.js.map +1 -1
  292. package/dist/tools/web-fetch.test.js +146 -1
  293. package/dist/tools/web-fetch.test.js.map +1 -1
  294. package/dist/tools/web-search.d.ts +10 -0
  295. package/dist/tools/web-search.d.ts.map +1 -1
  296. package/dist/tools/web-search.js +236 -28
  297. package/dist/tools/web-search.js.map +1 -1
  298. package/dist/tools/web-search.test.js +77 -6
  299. package/dist/tools/web-search.test.js.map +1 -1
  300. package/dist/ui/App.d.ts +2 -0
  301. package/dist/ui/App.d.ts.map +1 -1
  302. package/dist/ui/App.js +61 -2
  303. package/dist/ui/App.js.map +1 -1
  304. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  305. package/dist/ui/components/SkillsOverlay.js +8 -3
  306. package/dist/ui/components/SkillsOverlay.js.map +1 -1
  307. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  308. package/dist/ui/hooks/useAgentLoop.js +7 -18
  309. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  310. package/dist/ui/hooks/useAgentLoop.test.js +27 -0
  311. package/dist/ui/hooks/useAgentLoop.test.js.map +1 -1
  312. package/dist/ui/hooks/useModeState.d.ts +4 -2
  313. package/dist/ui/hooks/useModeState.d.ts.map +1 -1
  314. package/dist/ui/hooks/useModeState.js +14 -3
  315. package/dist/ui/hooks/useModeState.js.map +1 -1
  316. package/dist/ui/login.d.ts.map +1 -1
  317. package/dist/ui/login.js +13 -5
  318. package/dist/ui/login.js.map +1 -1
  319. package/dist/ui/render.d.ts +14 -0
  320. package/dist/ui/render.d.ts.map +1 -1
  321. package/dist/ui/render.js +2 -0
  322. package/dist/ui/render.js.map +1 -1
  323. package/dist/ui/render.test.js +17 -0
  324. package/dist/ui/render.test.js.map +1 -1
  325. package/package.json +7 -6
@@ -0,0 +1,649 @@
1
+ ---
2
+ version: alpha
3
+ name: Nintendo.com (2001) Analysis
4
+ description: An analysis of Nintendo.com's 2001 design language — a brushed-periwinkle "console chrome" interface where every panel is a beveled metal plate, navigation glows amber over a halftone-dotted carbon bar, and bold outlined display type sits on circuit-board hero fields. A Y2K hardware aesthetic that treats the web page like the faceplate of a game system.
5
+
6
+ colors:
7
+ primary: "#e60012" # Nintendo Red — racetrack logo, alert
8
+ signal: "#f68d1f" # Signal Orange — forward cues, submit, "Play It On"
9
+ amber: "#ecab37" # Amber — utility buttons, info-box tabs, badges
10
+ nav-gold: "#e48600" # Nav Gold — top-nav menu links
11
+ canvas: "#7a8aba" # Periwinkle metallic — primary interface body
12
+ canvas-soft: "#9fbee7" # Pale Sky — secondary-nav strip, light inset panels
13
+ sky: "#9fbee7" # Pale Sky alias
14
+ lavender: "#acace7" # Pale Lavender — home hero field
15
+ ice: "#c0d5e6" # Pale Ice — news hero field
16
+ periwinkle: "#8ba1d4" # Light Periwinkle — raised mid panels
17
+ chrome-indigo: "#3d4f97" # Chrome Indigo — beveled borders, tab edges
18
+ muted-indigo: "#60619c" # Muted Indigo — inactive tabs, secondary chrome
19
+ platinum: "#dedede" # Platinum Gray — list-row / inset content surface
20
+ surface: "#ffffff" # White — content cards, list-row highlight
21
+ carbon: "#21242e" # Carbon Navy — nav bar, dark buttons, footer, ink
22
+ hairline: "#5a5f8c" # blended bevel divider
23
+ ink: "#21242e" # primary text on light
24
+ ink-soft: "#3d4f97" # secondary text / chrome labels
25
+ on-primary: "#ffffff" # text on dark/red/orange chrome
26
+ systems-teal: "#206479" # Systems hero circuit-board cyan
27
+ games-red: "#a7282b" # Games F-1 racing hero
28
+ error: "#e60012" # validation / destructive (shares brand red)
29
+
30
+ typography:
31
+ nav-link:
32
+ fontFamily: Arial
33
+ fontSize: 13px
34
+ fontWeight: 700
35
+ lineHeight: 1
36
+ letterSpacing: 0.5px
37
+ ui-label:
38
+ fontFamily: Arial
39
+ fontSize: 11px
40
+ fontWeight: 700
41
+ lineHeight: 1.1
42
+ letterSpacing: 0.5px
43
+ display:
44
+ fontFamily: Arial Black
45
+ fontSize: 44px
46
+ fontWeight: 900
47
+ lineHeight: 1
48
+ letterSpacing: 0
49
+ hero-tagline:
50
+ fontFamily: Arial
51
+ fontSize: 15px
52
+ fontWeight: 700
53
+ lineHeight: 1.3
54
+ letterSpacing: 0
55
+ body:
56
+ fontFamily: Arial
57
+ fontSize: 12px
58
+ fontWeight: 400
59
+ lineHeight: 1.4
60
+ letterSpacing: 0
61
+ link:
62
+ fontFamily: Arial
63
+ fontSize: 12px
64
+ fontWeight: 700
65
+ lineHeight: 1.4
66
+ letterSpacing: 0
67
+ micro:
68
+ fontFamily: Arial
69
+ fontSize: 10px
70
+ fontWeight: 400
71
+ lineHeight: 1.3
72
+ letterSpacing: 0
73
+
74
+ rounded:
75
+ none: 0px
76
+ xs: 2px
77
+ sm: 4px
78
+ md: 6px
79
+ lg: 10px
80
+ full: 9999px
81
+
82
+ spacing:
83
+ xxs: 2px
84
+ xs: 4px
85
+ sm: 8px
86
+ md: 12px
87
+ lg: 16px
88
+ xl: 24px
89
+ xxl: 32px
90
+ section: 48px
91
+
92
+ components:
93
+ nav-bar:
94
+ backgroundColor: "{colors.carbon}"
95
+ textColor: "{colors.nav-gold}"
96
+ typography: "{typography.nav-link}"
97
+ rounded: "{rounded.none}"
98
+ padding: "{spacing.sm}"
99
+ height: 28px
100
+ subnav-strip:
101
+ backgroundColor: "{colors.canvas-soft}"
102
+ textColor: "{colors.ink}"
103
+ typography: "{typography.ui-label}"
104
+ rounded: "{rounded.none}"
105
+ padding: "{spacing.xs}"
106
+ logo-pill:
107
+ backgroundColor: "{colors.surface}"
108
+ textColor: "{colors.primary}"
109
+ typography: "{typography.display}"
110
+ rounded: "{rounded.full}"
111
+ padding: "{spacing.xs}"
112
+ button-primary:
113
+ backgroundColor: "{colors.amber}"
114
+ textColor: "{colors.carbon}"
115
+ typography: "{typography.ui-label}"
116
+ rounded: "{rounded.xs}"
117
+ padding: "{spacing.md}"
118
+ button-primary-pressed:
119
+ backgroundColor: "{colors.nav-gold}"
120
+ textColor: "{colors.carbon}"
121
+ typography: "{typography.ui-label}"
122
+ rounded: "{rounded.xs}"
123
+ padding: "{spacing.md}"
124
+ button-submit:
125
+ backgroundColor: "{colors.signal}"
126
+ textColor: "{colors.on-primary}"
127
+ typography: "{typography.ui-label}"
128
+ rounded: "{rounded.xs}"
129
+ padding: "{spacing.lg}"
130
+ button-secondary:
131
+ backgroundColor: "{colors.carbon}"
132
+ textColor: "{colors.on-primary}"
133
+ typography: "{typography.ui-label}"
134
+ rounded: "{rounded.none}"
135
+ padding: "{spacing.md}"
136
+ button-icon-arrow:
137
+ backgroundColor: "{colors.signal}"
138
+ textColor: "{colors.on-primary}"
139
+ rounded: "{rounded.full}"
140
+ size: 22px
141
+ button-arrow-chip:
142
+ backgroundColor: "{colors.signal}"
143
+ textColor: "{colors.on-primary}"
144
+ rounded: "{rounded.xs}"
145
+ padding: "{spacing.xs}"
146
+ size: 18px
147
+ search-field:
148
+ backgroundColor: "{colors.surface}"
149
+ textColor: "{colors.ink}"
150
+ typography: "{typography.body}"
151
+ rounded: "{rounded.xs}"
152
+ padding: "{spacing.xs}"
153
+ height: 20px
154
+ text-input:
155
+ backgroundColor: "{colors.surface}"
156
+ textColor: "{colors.ink}"
157
+ typography: "{typography.body}"
158
+ rounded: "{rounded.xs}"
159
+ padding: "{spacing.xs}"
160
+ height: 20px
161
+ select-dropdown:
162
+ backgroundColor: "{colors.surface}"
163
+ textColor: "{colors.ink}"
164
+ typography: "{typography.body}"
165
+ rounded: "{rounded.xs}"
166
+ padding: "{spacing.xs}"
167
+ height: 24px
168
+ field-label:
169
+ backgroundColor: "{colors.surface}"
170
+ textColor: "{colors.ink}"
171
+ typography: "{typography.link}"
172
+ rounded: "{rounded.none}"
173
+ padding: "{spacing.xxs}"
174
+ form-panel:
175
+ backgroundColor: "{colors.platinum}"
176
+ textColor: "{colors.ink}"
177
+ typography: "{typography.body}"
178
+ rounded: "{rounded.md}"
179
+ padding: "{spacing.lg}"
180
+ dotted-divider:
181
+ backgroundColor: "{colors.muted-indigo}"
182
+ textColor: "{colors.muted-indigo}"
183
+ rounded: "{rounded.none}"
184
+ height: 1px
185
+ hero-panel:
186
+ backgroundColor: "{colors.lavender}"
187
+ textColor: "{colors.surface}"
188
+ typography: "{typography.display}"
189
+ rounded: "{rounded.md}"
190
+ padding: "{spacing.lg}"
191
+ section-label-bar:
192
+ backgroundColor: "{colors.canvas}"
193
+ textColor: "{colors.ink}"
194
+ typography: "{typography.ui-label}"
195
+ rounded: "{rounded.none}"
196
+ padding: "{spacing.sm}"
197
+ news-row:
198
+ backgroundColor: "{colors.platinum}"
199
+ textColor: "{colors.ink-soft}"
200
+ typography: "{typography.link}"
201
+ rounded: "{rounded.sm}"
202
+ padding: "{spacing.sm}"
203
+ featured-tile:
204
+ backgroundColor: "{colors.carbon}"
205
+ textColor: "{colors.on-primary}"
206
+ typography: "{typography.micro}"
207
+ rounded: "{rounded.sm}"
208
+ padding: "{spacing.xxs}"
209
+ poll-panel:
210
+ backgroundColor: "{colors.periwinkle}"
211
+ textColor: "{colors.ink}"
212
+ typography: "{typography.body}"
213
+ rounded: "{rounded.md}"
214
+ padding: "{spacing.md}"
215
+ radio-option:
216
+ backgroundColor: "{colors.surface}"
217
+ textColor: "{colors.ink}"
218
+ typography: "{typography.body}"
219
+ rounded: "{rounded.full}"
220
+ size: 12px
221
+ info-box:
222
+ backgroundColor: "{colors.surface}"
223
+ textColor: "{colors.ink}"
224
+ typography: "{typography.body}"
225
+ rounded: "{rounded.sm}"
226
+ padding: "{spacing.md}"
227
+ promo-card:
228
+ backgroundColor: "{colors.lavender}"
229
+ textColor: "{colors.ink}"
230
+ typography: "{typography.display}"
231
+ rounded: "{rounded.sm}"
232
+ padding: "{spacing.md}"
233
+ system-tile:
234
+ backgroundColor: "{colors.periwinkle}"
235
+ textColor: "{colors.ink}"
236
+ typography: "{typography.ui-label}"
237
+ rounded: "{rounded.sm}"
238
+ padding: "{spacing.sm}"
239
+ link-row-card:
240
+ backgroundColor: "{colors.surface}"
241
+ textColor: "{colors.ink}"
242
+ typography: "{typography.body}"
243
+ rounded: "{rounded.sm}"
244
+ padding: "{spacing.sm}"
245
+ calendar-widget:
246
+ backgroundColor: "{colors.surface}"
247
+ textColor: "{colors.ink}"
248
+ typography: "{typography.micro}"
249
+ rounded: "{rounded.sm}"
250
+ padding: "{spacing.sm}"
251
+ left-rail-tab:
252
+ backgroundColor: "{colors.carbon}"
253
+ textColor: "{colors.canvas-soft}"
254
+ typography: "{typography.ui-label}"
255
+ rounded: "{rounded.none}"
256
+ padding: "{spacing.xs}"
257
+ footer-bar:
258
+ backgroundColor: "{colors.carbon}"
259
+ textColor: "{colors.canvas-soft}"
260
+ typography: "{typography.micro}"
261
+ rounded: "{rounded.none}"
262
+ padding: "{spacing.lg}"
263
+ esrb-badge:
264
+ backgroundColor: "{colors.amber}"
265
+ textColor: "{colors.carbon}"
266
+ typography: "{typography.micro}"
267
+ rounded: "{rounded.xs}"
268
+ padding: "{spacing.xxs}"
269
+ esrb-rating-square:
270
+ backgroundColor: "{colors.surface}"
271
+ textColor: "{colors.carbon}"
272
+ typography: "{typography.ui-label}"
273
+ rounded: "{rounded.xs}"
274
+ size: 20px
275
+ mascot-bubble:
276
+ backgroundColor: "{colors.surface}"
277
+ textColor: "{colors.carbon}"
278
+ typography: "{typography.micro}"
279
+ rounded: "{rounded.lg}"
280
+ padding: "{spacing.sm}"
281
+
282
+ # ─── Examples (illustrative) — kit-mirror demonstration surfaces ───
283
+ ex-pricing-tier:
284
+ description: "Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface."
285
+ backgroundColor: "{colors.canvas-soft}"
286
+ textColor: "{colors.ink}"
287
+ borderColor: "{colors.hairline}"
288
+ rounded: "{rounded.lg}"
289
+ padding: "{spacing.md}"
290
+ ex-pricing-tier-featured:
291
+ description: "Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode)."
292
+ backgroundColor: "{colors.ink}"
293
+ textColor: "{colors.on-primary}"
294
+ rounded: "{rounded.lg}"
295
+ padding: "{spacing.md}"
296
+ ex-product-selector:
297
+ description: "What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery)."
298
+ backgroundColor: "{colors.surface}"
299
+ rounded: "{rounded.lg}"
300
+ padding: "{spacing.md}"
301
+ ex-cart-drawer:
302
+ description: "Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart)."
303
+ backgroundColor: "{colors.surface}"
304
+ rounded: "{rounded.lg}"
305
+ padding: "{spacing.md}"
306
+ item-divider: "{colors.hairline}"
307
+ ex-app-shell-row:
308
+ description: "Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator."
309
+ backgroundColor: "{colors.canvas}"
310
+ activeIndicator: "{colors.primary}"
311
+ rounded: "{rounded.sm}"
312
+ padding: "{spacing.sm} {spacing.md}"
313
+ ex-data-table-cell:
314
+ description: "Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm."
315
+ headerBackground: "{colors.canvas-soft}"
316
+ headerTypography: "{typography.ui-label}"
317
+ bodyTypography: "{typography.body}"
318
+ cellPadding: "{spacing.xs} {spacing.sm}"
319
+ rowBorder: "{colors.hairline}"
320
+ ex-auth-form-card:
321
+ description: "Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside."
322
+ backgroundColor: "{colors.surface}"
323
+ rounded: "{rounded.lg}"
324
+ padding: "{spacing.md}"
325
+ ex-modal-card:
326
+ description: "Modal dialog surface — same chrome as feature-card with elevated shadow."
327
+ backgroundColor: "{colors.surface}"
328
+ rounded: "{rounded.lg}"
329
+ padding: "{spacing.md}"
330
+ ex-empty-state-card:
331
+ description: "Empty-state illustration frame."
332
+ backgroundColor: "{colors.canvas-soft}"
333
+ rounded: "{rounded.lg}"
334
+ padding: "{spacing.xl}"
335
+ captionTypography: "{typography.body}"
336
+ ex-toast:
337
+ description: "Toast notification surface — feature-card shape + medium shadow."
338
+ backgroundColor: "{colors.surface}"
339
+ rounded: "{rounded.md}"
340
+ padding: "{spacing.sm} {spacing.md}"
341
+ typography: "{typography.body}"
342
+
343
+ ---
344
+
345
+
346
+ ## Overview
347
+
348
+ Nintendo.com circa 2001 is the web rendered as **console hardware**. Where most sites of the era reached for either grunge texture or corporate gradients, this interface builds itself out of **brushed-periwinkle metal plates** — every region is a discrete beveled panel, edge-lit with a brighter highlight on top and a `{colors.chrome-indigo}` shadow line beneath, as if stamped from the same injection-molded plastic as a Game Boy. The whole page reads as one machine faceplate: a body of `{colors.canvas}` periwinkle chrome carrying inset modules, with the corners of the largest panels physically **chamfered** (cut at 45°) rather than rounded, reinforcing the manufactured-object feeling.
349
+
350
+ The system runs on a tight three-voice contrast. The structural voice is the cool periwinkle-to-indigo chrome (`{colors.canvas}`, `{colors.periwinkle}`, `{colors.chrome-indigo}`). The authority voice is `{colors.carbon}` carbon-navy — the top navigation bar, the right-rail action buttons, and the footer, all near-black slabs printed with a faint **halftone dot-matrix texture** that evokes a speaker grille. The energy voice is warm and reserved for one job only: telling you where to go. `{colors.nav-gold}` lights the primary menu words, `{colors.amber}` fills the utility chips and badges, and `{colors.signal}` orange marks every "forward" cue — the round arrow buttons, the chevron chips beside each headline, the Submit button. Warmth in this system always means *action*; the cool chrome never carries it.
351
+
352
+ Atmosphere comes from the **hero fields**, which break the periwinkle calm with full-bleed product photography over textured backdrops — a circuit-board cyan on Systems, a motion-blurred racetrack red on Games, a soft lavender wash on Home — each topped with chunky `{typography.display}` wordmarks rendered in white with a heavy outline and hard drop shadow, the visual signature of game-box cover type. A pixel-eared Mario leans in from the masthead with a "Welcome to Nintendo.com!" speech bubble, anchoring the entire machine to the brand's playful character voice.
353
+
354
+ **Key Characteristics:**
355
+ - Every UI region is a **beveled metal plate** in `{colors.canvas}` periwinkle, edge-lit on top and shadow-lined with `{colors.chrome-indigo}` below — the page is assembled, not laid out.
356
+ - **Chamfered (cut-corner) panel geometry** on the largest modules; most chrome is sharp-edged (`{rounded.none}`), with rounding reserved for the logo pill, radio dots, and circle-arrow badges (`{rounded.full}`).
357
+ - A **carbon-navy command layer** (`{colors.carbon}`) with halftone-dot texture carries the top nav, right-rail buttons, and footer.
358
+ - Warmth is rationed as **directional signal only**: `{colors.nav-gold}` for menu words, `{colors.amber}` for utility chips/badges, `{colors.signal}` for every forward/Submit cue.
359
+ - **Photographic hero fields** cycle a page-specific accent tint (`{colors.lavender}` home → `{colors.systems-teal}` systems → `{colors.games-red}` games) under outlined `{typography.display}` box-art wordmarks.
360
+ - A dense, **modular grid** — masthead, dual nav bars, hero, then a two-thirds content column of stacked list/feature panels beside a one-third right action rail — packed with minimal whitespace.
361
+ - **Character-led**: the Mario mascot speech-bubble masthead and ESRB badge frame the chrome with brand personality and regulatory trust marks.
362
+
363
+ ## Colors
364
+
365
+ The palette is a **cool metallic chassis with rationed warm signal**. Read it as three layers: the periwinkle chrome that everything is built from, the carbon command slabs, and the warm wayfinding accents that are the only saturated color in the steady-state interface.
366
+
367
+ ### Brand & Accent
368
+ - **Nintendo Red** (`{colors.primary}` — #e60012): The racetrack logo wordmark and the brand's anchor hue. Used sparingly as pure brand identity and doubled as the validation/alert color. Never a surface fill outside the logo plate.
369
+ - **Signal Orange** (`{colors.signal}` — #f68d1f): The "go forward" color. Fills every round arrow button, every chevron chip beside a headline, the Submit button, and the "Play It On" platform badges. If something advances you, it is orange.
370
+ - **Amber** (`{colors.amber}` — #ecab37): Utility energy. Fills the Code Bank / Game Finder / Go chips, the info-box header tabs, the sweepstakes stars, and the ESRB Privacy-Certified badge. Distinguished from Signal Orange by being more golden and reserved for *tools and marks* rather than *forward motion*.
371
+ - **Nav Gold** (`{colors.nav-gold}` — #e48600): The deeper orange-gold reserved exclusively for the primary navigation words (Games, Systems, News, Nsider, Downloads) glowing on the carbon bar.
372
+
373
+ ### Surface
374
+ - **Periwinkle Metallic** (`{colors.canvas}` — #7a8aba): The primary interface body — the brushed-metal chrome that every module is inset into.
375
+ - **Light Periwinkle** (`{colors.periwinkle}` — #8ba1d4): Raised mid panels (poll panel, system tiles) — one step brighter than canvas for elevation.
376
+ - **Pale Sky** (`{colors.sky}` / `{colors.canvas-soft}` — #9fbee7): The secondary-nav strip and light inset panel fills.
377
+ - **Pale Lavender** (`{colors.lavender}` — #acace7): The home hero field and side promo cards.
378
+ - **Pale Ice** (`{colors.ice}` — #c0d5e6): The News hero panel field.
379
+ - **Chrome Indigo** (`{colors.chrome-indigo}` — #3d4f97): The beveled border / shadow line under every plate, and the leading angled edge of nav tabs.
380
+ - **Muted Indigo** (`{colors.muted-indigo}` — #60619c): Inactive tabs and recessed chrome.
381
+ - **Platinum Gray** (`{colors.platinum}` — #dedede): The list-row and inset content surface — news headlines and archive rows sit on this cool platinum.
382
+ - **White** (`{colors.surface}` — #ffffff): Content cards, form fields, the logo pill, and list-row highlight.
383
+
384
+ ### Text
385
+ - **Carbon Navy** (`{colors.ink}` — #21242e): Primary text on light chrome, and the fill of the dark command layer (nav bar, rail buttons, footer).
386
+ - **Chrome Indigo** (`{colors.ink-soft}` — #3d4f97): Secondary text and small-caps chrome labels.
387
+ - **White** (`{colors.on-primary}` — #ffffff): Text on carbon, red, and orange chrome.
388
+
389
+ ### Semantic
390
+ - **Error / Alert** (`{colors.error}` — #e60012): Validation and destructive states reuse the brand red.
391
+ - **Systems Teal** (`{colors.systems-teal}` — #206479): Page-accent tint — the Systems hero's circuit-board cyan field.
392
+ - **Games Red** (`{colors.games-red}` — #a7282b): Page-accent tint — the Games hero's motion-blurred racetrack field.
393
+
394
+ ## Typography
395
+
396
+ ### Font Family
397
+ The era's web-safe reality is **Arial / Helvetica** throughout — there are no webfonts. The system gets its character not from typeface choice but from *treatment*: tight uppercase tracking on every chrome label, and a heavy outlined-and-shadowed display style for hero wordmarks that mimics console box-art logotype. Body copy is plain small Arial; links are the same family at bold weight in `{colors.ink-soft}`.
398
+
399
+ The micro-labels (vertical left-rail tabs, footer fine print) render with the soft pixelation characteristic of small bitmap-rendered Arial of the period — for a faithful reproduction, pair Arial with a pixel face such as **Silkscreen** or **VT323** at the 10–11px label sizes.
400
+
401
+ ### Hierarchy
402
+
403
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
404
+ |---|---|---|---|---|---|
405
+ | `{typography.display}` | 44px | 900 | 1 | 0 | Hero box-art wordmarks (white, heavy outline + hard drop shadow) |
406
+ | `{typography.hero-tagline}` | 15px | 700 | 1.3 | 0 | Hero supporting line ("Gorgeous graphics, great sound…") |
407
+ | `{typography.nav-link}` | 13px | 700 | 1 | 0.5px | Primary nav menu words, uppercase |
408
+ | `{typography.ui-label}` | 11px | 700 | 1.1 | 0.5px | Section header labels, panel titles, button text — uppercase |
409
+ | `{typography.link}` | 12px | 700 | 1.4 | 0 | News headline links, "Read More" |
410
+ | `{typography.body}` | 12px | 400 | 1.4 | 0 | Descriptions, poll text, info-box copy |
411
+ | `{typography.micro}` | 10px | 400 | 1.3 | 0 | Footer copyright, calendar cells, fine print |
412
+
413
+ ### Principles
414
+ - **Uppercase + tracking is the chrome voice.** Every structural label — nav words, panel headers ("Official News", "Featured Sites", "Player's Poll"), button text — is uppercase Arial Bold with a half-pixel of tracking. It reads like silkscreened legends on a controller.
415
+ - **Display type is outlined, never flat.** Hero wordmarks always carry a thick contrasting outline and a hard offset shadow so they pop off the photographic field — the box-art convention.
416
+ - **Body stays small and quiet.** At 12px, descriptive copy never competes with the chrome; the hierarchy is carried entirely by the labels and the photography.
417
+
418
+ ### Note on Font Substitutes
419
+ Arial is freely available system-wide and needs no substitute. To recreate the period bitmap rendering of micro-labels, layer a pixel font (**Silkscreen**, **VT323**, or **Press Start 2P** for the chunkiest legends) at 10–11px and disable anti-aliasing. The display wordmarks are bespoke logotypes; the closest open substitute is **Archivo Black** (italicized) or **Arial Black** with a CSS text-stroke outline and `text-shadow` offset.
420
+
421
+ ## Layout
422
+
423
+ ### Spacing System
424
+ - **Base unit**: 8px (`{spacing.sm}`) — the gutter rhythm between list rows and grid cells.
425
+ - **Tokens**: `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.section}` 48px
426
+ - Panels carry **12px interior padding** (`{spacing.md}`); larger content modules use **16px** (`{spacing.lg}`). Inter-module gaps run 16–24px. The layout is deliberately dense — whitespace is a structural seam between plates, not a luxury.
427
+
428
+ ### Grid & Container
429
+ - **Fixed-width canvas** ~780–830px wide (a desktop-era fixed table layout, centered). No fluid scaling — the interface is sized to a single target window like an application.
430
+ - **Masthead row**: Mario mascot + speech bubble (left) and search module (right) float above the chrome.
431
+ - **Dual nav bars**: a carbon primary bar (logo + 5 section words + Code Bank / Game Finder utility chips) stacked over a periwinkle secondary strip (Parents, Customer Service, Corporate, Global, Privacy, Store, Contact).
432
+ - **Body**: a full-width hero panel, then a **two-column split** — a ~two-thirds content column of stacked panels (Official News list, Featured Sites 2×2 grid, etc.) beside a ~one-third **right action rail** (Login / Subscribe / Newsletter / Help buttons, an info box, a side promo card).
433
+ - **Left rail**: a thin vertical strip of rotated tabs (Top Ten, Top Rentals, Player's Choice, ESRB Ratings) clipped to the chrome edge.
434
+
435
+ ### Whitespace Philosophy
436
+ Empty space is **engineered seam**, not breathing room. Modules butt against each other separated by thin `{colors.chrome-indigo}` bevel lines and a few pixels of canvas, so the eye reads grouped plates. The density is intentional: it makes the page feel like a packed control panel where everything is one click away.
437
+
438
+ ### Responsive Strategy
439
+
440
+ #### Breakpoints
441
+ | Name | Width | Key Changes |
442
+ |---|---|---|
443
+ | Desktop (only) | ~780–830px fixed | The native, sole target — a fixed-width application-style layout |
444
+ | Narrow window | < 780px | Horizontal scroll (no reflow); the table layout does not collapse |
445
+
446
+ This is a **pre-responsive, fixed-canvas** design. It was authored for a single desktop window size and does not reflow. A faithful *modern* re-implementation would preserve the fixed chrome metaphor on desktop and, below ~720px, stack the right action rail beneath the content column and collapse the dual nav bars into a single carbon bar with a disclosure toggle.
447
+
448
+ #### Touch Targets
449
+ Not a consideration in the original (mouse-only era); buttons and chips are 18–28px tall. A modern port must enlarge the `{components.button-primary}`, `{components.button-icon-arrow}`, and `{components.radio-option}` hit areas to a 44×44px minimum.
450
+
451
+ #### Collapsing Strategy
452
+ On a modern narrow viewport: dual nav bars → single carbon bar + menu disclosure; two-column body → single stacked column with the right rail moving below content; the left rotated-tab strip → a horizontal scroll chip row or removed; fixed hero → fluid full-bleed hero retaining the outlined wordmark.
453
+
454
+ #### Image Behavior
455
+ Hero fields are **full-bleed photographic plates** clipped to the panel's beveled rectangle; featured-site and game tiles are fixed-pixel thumbnails (~95×60px) in a tight grid. No lazy loading (era predates it). Product renders sit on textured backdrops rather than transparent cutouts.
456
+
457
+ ## Elevation & Depth
458
+
459
+ Depth in this system is **physical bevel simulation**, not soft shadow. There is no blurred drop-shadow vocabulary; instead every plate is given the illusion of being a raised piece of molded plastic.
460
+
461
+ | Level | Treatment | Use |
462
+ |---|---|---|
463
+ | 0 — Inset | Recessed into canvas; darker `{colors.chrome-indigo}` top edge, lighter bottom edge | List rows, form fields, the canvas body itself |
464
+ | 1 — Plate | Flush panel; lighter top highlight, `{colors.chrome-indigo}` shadow line beneath | Content panels, system tiles, info box |
465
+ | 2 — Raised chip | Beveled button with bright top edge + hard bottom shadow | Utility chips, Go/Submit buttons, nav tabs |
466
+ | 3 — Command slab | `{colors.carbon}` near-black with halftone texture, sits "above" the chrome | Top nav bar, right-rail buttons, footer |
467
+
468
+ ### Decorative Depth
469
+ Depth is also carried by **texture and photography**: the halftone dot-matrix on carbon slabs reads as a recessed speaker grille; hero fields use motion-blur, circuit-board patterns, and product renders with their own cast shadows to create literal pictorial depth; chamfered corners on the outer chrome suggest a machined faceplate edge. The left-rail rotated tabs appear to tuck *behind* the main chrome, a small but effective layered cue.
470
+
471
+ ## Shapes
472
+
473
+ ### Border Radius Scale
474
+
475
+ | Token | Value | Use |
476
+ |---|---|---|
477
+ | `{rounded.none}` | 0px | The default — nav bar, footer, most chrome plates (sharp / chamfered, not rounded) |
478
+ | `{rounded.xs}` | 2px | Utility buttons, form fields, badges |
479
+ | `{rounded.sm}` | 4px | Small panels, featured tiles, list rows |
480
+ | `{rounded.md}` | 6px | Content panels, hero panel |
481
+ | `{rounded.lg}` | 10px | Outer section panels, mascot bubble |
482
+ | `{rounded.full}` | 9999px | Logo racetrack pill, radio dots, circle-arrow badges |
483
+
484
+ The signature is **sharpness with rationed roundness**. The chrome is hard-edged and frequently *chamfered* (corners cut at 45° rather than curved) — this is the manufactured-faceplate look. Roundness appears only where it signals a physical control: the fully-pill logo, the round radio buttons, and the round Signal-Orange arrow badges. A modern reproduction should resist the urge to soften every corner; the tension between sharp plates and the few pill elements is the whole character.
485
+
486
+ ### Photography Geometry
487
+ Hero photography fills beveled rectangles at roughly 4:1 (banner) and 16:9 proportions, full-bleed within the panel. Featured-site and game thumbnails are near-4:3 fixed tiles (~95×60px) framed by a 1–2px `{colors.chrome-indigo}` edge with `{rounded.sm}` corners. The mascot is a transparent cutout overlapping the masthead, breaking the rectangular grid for personality.
488
+
489
+ ## Components
490
+
491
+ > No hover states are documented. Each spec below covers Default and (where extracted) Pressed/Active. Variants live as separate `components:` entries.
492
+
493
+ ### Navigation
494
+
495
+ **`nav-bar`** — Primary top navigation
496
+ - `{colors.carbon}` slab with a faint halftone-dot texture, ~28px tall, carrying the `{components.logo-pill}` at left, the five `{colors.nav-gold}` section words in `{typography.nav-link}` uppercase, and the amber Code Bank / Game Finder utility chips at right. Sharp corners (`{rounded.none}`), `{spacing.sm}` padding.
497
+
498
+ **`subnav-strip`** — Secondary navigation
499
+ - A `{colors.canvas-soft}` pale-sky strip directly beneath the nav bar, carrying utility links (Parents, Customer Service, Corporate, Global, Privacy, Store, Contact) in `{typography.ui-label}` `{colors.ink}`, separated by thin dividers. Sharp, `{spacing.xs}` padding.
500
+
501
+ **`left-rail-tab`** — Rotated section tabs
502
+ - A thin vertical strip of `{colors.carbon}` tabs (Top Ten, Top Rentals, Player's Choice, ESRB Ratings) with vertically-rotated `{typography.ui-label}` text in `{colors.canvas-soft}`, clipped to the left chrome edge. Sharp corners, `{spacing.xs}` padding.
503
+
504
+ ### Brand & Masthead
505
+
506
+ **`logo-pill`** — Nintendo racetrack logo
507
+ - The wordmark in `{colors.primary}` red set inside a white `{rounded.full}` racetrack pill, outlined. Sits at the left of the nav bar. `{spacing.xs}` padding.
508
+
509
+ **`mascot-bubble`** — Mario welcome speech bubble
510
+ - A white `{rounded.lg}` rounded-rectangle speech bubble with a tail, carrying "Welcome to Nintendo.com!" in `{typography.micro}` `{colors.carbon}`, paired with the Mario cutout in the masthead. `{spacing.sm}` padding.
511
+
512
+ ### Buttons
513
+
514
+ **`button-primary`** — Amber utility / Go chip
515
+ - `{colors.amber}` fill, `{colors.carbon}` text in `{typography.ui-label}`, `{rounded.xs}` corners, `{spacing.md}` padding, with a beveled top highlight. The everyday tool button (Code Bank, Game Finder, Go).
516
+ - Pressed state in **`button-primary-pressed`** — fill deepens to `{colors.nav-gold}`.
517
+
518
+ **`button-submit`** — Forward / Submit
519
+ - `{colors.signal}` orange fill, `{colors.on-primary}` white text in `{typography.ui-label}`, `{rounded.xs}`, `{spacing.lg}` padding. The "commit" action (poll Submit, Go on archives).
520
+
521
+ **`button-secondary`** — Right-rail action button
522
+ - `{colors.carbon}` near-black slab, `{colors.on-primary}` white text in `{typography.ui-label}`, sharp `{rounded.none}` corners, `{spacing.md}` padding, with a small leading icon. Used for Login / Subscribe / Newsletter / Help in the right rail.
523
+
524
+ **`button-icon-arrow`** — Round forward arrow
525
+ - A 22px `{colors.signal}` orange `{rounded.full}` disc with a white chevron — the primary "go" affordance on hero panels and section links.
526
+
527
+ **`button-arrow-chip`** — Headline chevron chip
528
+ - An 18px `{colors.signal}` orange `{rounded.xs}` chip with a white forward chevron, sitting at the right end of each `{components.news-row}` to advance to the article.
529
+
530
+ ### Inputs & Forms
531
+
532
+ **`search-field`** — Masthead search input
533
+ - White `{colors.surface}` field, `{colors.ink}` text in `{typography.body}`, `{rounded.xs}` corners, 1px `{colors.hairline}` border, ~20px tall, paired with an "All" category dropdown and an amber Go chip.
534
+
535
+ **`text-input`** — Generic text field
536
+ - Same chassis as `search-field`: white fill, `{colors.ink}` text, `{rounded.xs}`, `{colors.hairline}` 1px border, `{spacing.xs}` padding. Used in the Login form (Username / Password / E-mail), news-archive keyword, and date fields.
537
+
538
+ **`select-dropdown`** — Native select ("Click to choose")
539
+ - A white `{colors.surface}` field with `{colors.ink}` text in `{typography.body}`, `{rounded.xs}` corners, and a hard 1px `{colors.carbon}` border (sharper than the inputs) closing on a beveled native dropdown-chevron button at the right edge. ~24px tall, `{spacing.xs}` padding. Used for the Register form's Month / Year pickers.
540
+
541
+ **`field-label`** — Inline form label
542
+ - A bold `{colors.ink}` label in `{typography.link}` (Arial Bold 12px) sitting left of its input (Username, Password, E-mail, Month, Year). `{rounded.none}`, `{spacing.xxs}` padding.
543
+
544
+ **`radio-option`** — Poll radio button
545
+ - A 12px white `{rounded.full}` radio dot with a `{colors.hairline}` ring, paired with `{typography.body}` option text. Used in the Player's Poll.
546
+
547
+ **`form-panel`** — Form container (Login / Register)
548
+ - A `{colors.platinum}` light-gray `{rounded.md}` panel holding a form, capped by a `{components.section-label-bar}` header (≡ LOG IN / ≡ REGISTER). `{spacing.lg}` interior. The Login page pairs two side by side.
549
+
550
+ **`dotted-divider`** — Dotted hairline rule
551
+ - A 1px dotted `{colors.muted-indigo}` separator rule used between form sub-sections (the "Note:" line, "Forgot Your Password?"). A recurring Y2K-chrome detail — dotted rather than solid.
552
+
553
+ ### Cards & Panels
554
+
555
+ **`hero-panel`** — Photographic hero plate
556
+ - A `{rounded.md}` beveled rectangle filled with full-bleed product photography over a page-tinted field (`{colors.lavender}` / `{colors.systems-teal}` / `{colors.games-red}`), topped with an outlined `{typography.display}` wordmark and a `{components.button-icon-arrow}` call-to-action. `{spacing.lg}` interior.
557
+
558
+ **`section-label-bar`** — Panel header
559
+ - A `{colors.canvas}` header strip with a small grid/list glyph and an uppercase `{typography.ui-label}` title ("Official News", "Featured Sites", "Player's Poll"). Sharp corners, `{spacing.sm}` padding. Caps every content module.
560
+
561
+ **`news-row`** — Headline list row
562
+ - A `{colors.platinum}` `{rounded.sm}` row with a small category icon, a `{typography.link}` headline in `{colors.ink-soft}`, and a trailing `{components.button-arrow-chip}`. `{spacing.sm}` padding. Stacked into the Official News / Other Headlines lists.
563
+
564
+ **`featured-tile`** — Featured-site thumbnail
565
+ - A `{colors.carbon}`-framed `{rounded.sm}` tile (~95×60px) holding a screenshot thumbnail with a `{typography.micro}` URL caption (e.g. www.pokemon.com). Tight `{spacing.xxs}` padding, arranged in a 2×2 grid.
566
+
567
+ **`poll-panel`** — Player's Poll module
568
+ - A `{colors.periwinkle}` raised `{rounded.md}` panel posing a question, listing `{components.radio-option}` choices, and closing with a `{components.button-submit}`. `{spacing.md}` interior.
569
+
570
+ **`info-box`** — "What Is" explainer card
571
+ - A white `{colors.surface}` `{rounded.sm}` card with an amber header tab ("What Is — Game Finder") and `{typography.body}` explanatory copy. `{spacing.md}` padding. Sits in the right rail.
572
+
573
+ **`promo-card`** — Side product promo
574
+ - A `{colors.lavender}` `{rounded.sm}` card carrying an outlined product wordmark (e.g. Game Boy Advance) over a small product render, in the right rail. `{spacing.md}` padding.
575
+
576
+ **`system-tile`** — Hardware grid tile (Systems page)
577
+ - A `{colors.periwinkle}` `{rounded.sm}` tile holding a console render over a circuit-board backdrop with an outlined system name (Nintendo 64, Super Nintendo, Game Boy). `{spacing.sm}` padding, arranged in a 2×3 grid.
578
+
579
+ **`link-row-card`** — Utility link card (Systems page)
580
+ - A white `{rounded.sm}` card with an amber label tab (Technical Help, Store Locator, Online Store), a character icon, and a one-line `{typography.body}` description. `{spacing.sm}` padding.
581
+
582
+ **`calendar-widget`** — Month calendar (News page)
583
+ - A white `{rounded.sm}` grid calendar in `{typography.micro}`, with a `{colors.carbon}` caption header (e.g. "June 01"), highlighted event dates, and a month-select dropdown. `{spacing.sm}` padding.
584
+
585
+ ### Badges & Footer
586
+
587
+ **`esrb-badge`** — ESRB Privacy-Certified mark
588
+ - A small `{colors.amber}` `{rounded.xs}` badge reading "ESRB — Privacy Certified" in `{typography.micro}` `{colors.carbon}`, pinned in the footer.
589
+
590
+ **`esrb-rating-square`** — Game content-rating square
591
+ - A 20px white `{rounded.xs}` square stamping the content-rating letter (E, T) in `{typography.ui-label}` `{colors.carbon}`, on each game card.
592
+
593
+ **`footer-bar`** — Page footer
594
+ - A `{colors.carbon}` chamfered slab with the "©1997–2001 Nintendo…" copyright in `{typography.micro}` `{colors.canvas-soft}`, the ESRB badge, and a privacy link. Sharp corners, `{spacing.lg}` padding.
595
+
596
+ ### Examples (illustrative)
597
+
598
+ > Kit-mirror demonstration surfaces. Each `ex-*` entry references brand-native primitives so downstream consumers (`/preview-design`, `/generate-kit`) re-skin the same 10 surfaces consistently.
599
+
600
+ **`ex-pricing-tier`** — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.
601
+ - Properties: `backgroundColor`, `textColor`, `borderColor`, `rounded`, `padding`
602
+
603
+ **`ex-pricing-tier-featured`** — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).
604
+ - Properties: `backgroundColor`, `textColor`, `rounded`, `padding`
605
+
606
+ **`ex-product-selector`** — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).
607
+ - Properties: `backgroundColor`, `rounded`, `padding`
608
+
609
+ **`ex-cart-drawer`** — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).
610
+ - Properties: `backgroundColor`, `rounded`, `padding`, `item-divider`
611
+
612
+ **`ex-app-shell-row`** — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.
613
+ - Properties: `backgroundColor`, `activeIndicator`, `rounded`, `padding`
614
+
615
+ **`ex-data-table-cell`** — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.
616
+ - Properties: `headerBackground`, `headerTypography`, `bodyTypography`, `cellPadding`, `rowBorder`
617
+
618
+ **`ex-auth-form-card`** — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.
619
+ - Properties: `backgroundColor`, `rounded`, `padding`
620
+
621
+ **`ex-modal-card`** — Modal dialog surface — same chrome as feature-card with elevated shadow.
622
+ - Properties: `backgroundColor`, `rounded`, `padding`
623
+
624
+ **`ex-empty-state-card`** — Empty-state illustration frame.
625
+ - Properties: `backgroundColor`, `rounded`, `padding`, `captionTypography`
626
+
627
+ **`ex-toast`** — Toast notification surface — feature-card shape + medium shadow.
628
+ - Properties: `backgroundColor`, `rounded`, `padding`, `typography`
629
+
630
+
631
+ ## Do's and Don'ts
632
+
633
+ ### Do
634
+ - Build every region as a **beveled plate**: a `{colors.canvas}` body with a brighter top edge and a `{colors.chrome-indigo}` shadow line beneath. The "assembled machine" feel depends on it.
635
+ - Reserve warm color for **wayfinding only** — `{colors.nav-gold}` for nav words, `{colors.amber}` for utility/badges, `{colors.signal}` for forward/Submit. Cool chrome never carries action color.
636
+ - Keep structural labels **uppercase Arial Bold with 0.5px tracking** (`{typography.ui-label}`) — it is the silkscreen-legend voice of the whole system.
637
+ - Render hero wordmarks as **outlined + drop-shadowed `{typography.display}`** over full-bleed photographic fields tinted per page.
638
+ - Use `{colors.carbon}` with halftone texture for the **command layer** (nav, right rail, footer) to separate "system controls" from "content."
639
+ - Let panels **butt together** with thin bevel seams; density is the intended texture.
640
+ - Default corners to **sharp/chamfered** (`{rounded.none}`); spend roundness only on the logo pill, radio dots, and circle-arrow badges.
641
+
642
+ ### Don't
643
+ - Don't soften every corner — turning the sharp chrome into a uniformly rounded card system erases the manufactured-faceplate identity.
644
+ - Don't introduce a **soft blurred drop-shadow** elevation language; depth here is hard bevels and pictorial photography, not Material elevation.
645
+ - Don't let `{colors.signal}` and `{colors.amber}` bleed into decorative use — warm color must always mean "act here."
646
+ - Don't add accent colors outside the page-tint heroes (`{colors.systems-teal}`, `{colors.games-red}`); the steady-state chrome is strictly cool periwinkle + carbon.
647
+ - Don't widen body copy or whitespace into an airy modern layout; the packed, fixed-canvas density is the brand.
648
+ - Don't flatten the dual-nav structure (gold primary words over the pale secondary strip) into one bar — the layered command hierarchy is signature.
649
+ - Don't render hero or system wordmarks as flat text; without the outline + shadow they lose the box-art reference entirely.