@aexol/spectral 0.7.0 → 0.7.3

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 (671) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/agent/agents.js +1 -1
  3. package/dist/agent/index.js +269 -479
  4. package/dist/cli.js +11 -0
  5. package/dist/commands/serve.js +0 -3
  6. package/dist/designer/data/systems/agentic/DESIGN.md +71 -0
  7. package/dist/designer/data/systems/agentic/components.html +154 -0
  8. package/dist/designer/data/systems/agentic/tokens.css +63 -0
  9. package/dist/designer/data/systems/airbnb/DESIGN.md +393 -0
  10. package/dist/designer/data/systems/airbnb/components.html +1373 -0
  11. package/dist/designer/data/systems/airbnb/tokens.css +261 -0
  12. package/dist/designer/data/systems/airtable/DESIGN.md +92 -0
  13. package/dist/designer/data/systems/airtable/components.html +489 -0
  14. package/dist/designer/data/systems/airtable/tokens.css +261 -0
  15. package/dist/designer/data/systems/ant/DESIGN.md +71 -0
  16. package/dist/designer/data/systems/ant/components.html +154 -0
  17. package/dist/designer/data/systems/ant/tokens.css +63 -0
  18. package/dist/designer/data/systems/apple/DESIGN.md +250 -0
  19. package/dist/designer/data/systems/apple/components.html +749 -0
  20. package/dist/designer/data/systems/apple/tokens.css +286 -0
  21. package/dist/designer/data/systems/application/DESIGN.md +71 -0
  22. package/dist/designer/data/systems/application/components.html +154 -0
  23. package/dist/designer/data/systems/application/tokens.css +63 -0
  24. package/dist/designer/data/systems/arc/DESIGN.md +152 -0
  25. package/dist/designer/data/systems/arc/components.html +432 -0
  26. package/dist/designer/data/systems/arc/tokens.css +137 -0
  27. package/dist/designer/data/systems/artistic/DESIGN.md +71 -0
  28. package/dist/designer/data/systems/artistic/components.html +136 -0
  29. package/dist/designer/data/systems/artistic/tokens.css +63 -0
  30. package/dist/designer/data/systems/atelier-zero/DESIGN.md +316 -0
  31. package/dist/designer/data/systems/atelier-zero/components.html +136 -0
  32. package/dist/designer/data/systems/atelier-zero/tokens.css +63 -0
  33. package/dist/designer/data/systems/bento/DESIGN.md +71 -0
  34. package/dist/designer/data/systems/bento/components.html +136 -0
  35. package/dist/designer/data/systems/bento/tokens.css +63 -0
  36. package/dist/designer/data/systems/binance/DESIGN.md +348 -0
  37. package/dist/designer/data/systems/binance/components.html +550 -0
  38. package/dist/designer/data/systems/binance/tokens.css +255 -0
  39. package/dist/designer/data/systems/bmw/DESIGN.md +183 -0
  40. package/dist/designer/data/systems/bmw/components.html +551 -0
  41. package/dist/designer/data/systems/bmw/tokens.css +179 -0
  42. package/dist/designer/data/systems/bmw-m/DESIGN.md +246 -0
  43. package/dist/designer/data/systems/bmw-m/components.html +342 -0
  44. package/dist/designer/data/systems/bmw-m/tokens.css +64 -0
  45. package/dist/designer/data/systems/bold/DESIGN.md +71 -0
  46. package/dist/designer/data/systems/bold/components.html +136 -0
  47. package/dist/designer/data/systems/bold/tokens.css +63 -0
  48. package/dist/designer/data/systems/brutalism/DESIGN.md +71 -0
  49. package/dist/designer/data/systems/brutalism/components.html +154 -0
  50. package/dist/designer/data/systems/brutalism/tokens.css +63 -0
  51. package/dist/designer/data/systems/bugatti/DESIGN.md +271 -0
  52. package/dist/designer/data/systems/bugatti/components.html +342 -0
  53. package/dist/designer/data/systems/bugatti/tokens.css +64 -0
  54. package/dist/designer/data/systems/cafe/DESIGN.md +71 -0
  55. package/dist/designer/data/systems/cafe/components.html +136 -0
  56. package/dist/designer/data/systems/cafe/tokens.css +63 -0
  57. package/dist/designer/data/systems/cal/DESIGN.md +262 -0
  58. package/dist/designer/data/systems/cal/components.html +376 -0
  59. package/dist/designer/data/systems/cal/tokens.css +265 -0
  60. package/dist/designer/data/systems/canva/DESIGN.md +157 -0
  61. package/dist/designer/data/systems/canva/components.html +461 -0
  62. package/dist/designer/data/systems/canva/tokens.css +147 -0
  63. package/dist/designer/data/systems/cisco/DESIGN.md +201 -0
  64. package/dist/designer/data/systems/cisco/components.html +342 -0
  65. package/dist/designer/data/systems/cisco/tokens.css +64 -0
  66. package/dist/designer/data/systems/claude/DESIGN.md +315 -0
  67. package/dist/designer/data/systems/claude/components.html +483 -0
  68. package/dist/designer/data/systems/claude/tokens.css +130 -0
  69. package/dist/designer/data/systems/clay/DESIGN.md +307 -0
  70. package/dist/designer/data/systems/clay/components.html +136 -0
  71. package/dist/designer/data/systems/clay/tokens.css +63 -0
  72. package/dist/designer/data/systems/claymorphism/DESIGN.md +71 -0
  73. package/dist/designer/data/systems/claymorphism/components.html +136 -0
  74. package/dist/designer/data/systems/claymorphism/tokens.css +63 -0
  75. package/dist/designer/data/systems/clean/DESIGN.md +71 -0
  76. package/dist/designer/data/systems/clean/components.html +136 -0
  77. package/dist/designer/data/systems/clean/tokens.css +63 -0
  78. package/dist/designer/data/systems/clickhouse/DESIGN.md +284 -0
  79. package/dist/designer/data/systems/clickhouse/components.html +506 -0
  80. package/dist/designer/data/systems/clickhouse/tokens.css +135 -0
  81. package/dist/designer/data/systems/cohere/DESIGN.md +269 -0
  82. package/dist/designer/data/systems/cohere/components.html +353 -0
  83. package/dist/designer/data/systems/cohere/tokens.css +126 -0
  84. package/dist/designer/data/systems/coinbase/DESIGN.md +132 -0
  85. package/dist/designer/data/systems/coinbase/components.html +501 -0
  86. package/dist/designer/data/systems/coinbase/tokens.css +257 -0
  87. package/dist/designer/data/systems/colorful/DESIGN.md +71 -0
  88. package/dist/designer/data/systems/colorful/components.html +136 -0
  89. package/dist/designer/data/systems/colorful/tokens.css +63 -0
  90. package/dist/designer/data/systems/composio/DESIGN.md +310 -0
  91. package/dist/designer/data/systems/composio/components.html +342 -0
  92. package/dist/designer/data/systems/composio/tokens.css +64 -0
  93. package/dist/designer/data/systems/contemporary/DESIGN.md +71 -0
  94. package/dist/designer/data/systems/contemporary/components.html +136 -0
  95. package/dist/designer/data/systems/contemporary/tokens.css +63 -0
  96. package/dist/designer/data/systems/corporate/DESIGN.md +71 -0
  97. package/dist/designer/data/systems/corporate/components.html +136 -0
  98. package/dist/designer/data/systems/corporate/tokens.css +63 -0
  99. package/dist/designer/data/systems/cosmic/DESIGN.md +71 -0
  100. package/dist/designer/data/systems/cosmic/components.html +136 -0
  101. package/dist/designer/data/systems/cosmic/tokens.css +63 -0
  102. package/dist/designer/data/systems/creative/DESIGN.md +71 -0
  103. package/dist/designer/data/systems/creative/components.html +136 -0
  104. package/dist/designer/data/systems/creative/tokens.css +63 -0
  105. package/dist/designer/data/systems/cursor/DESIGN.md +312 -0
  106. package/dist/designer/data/systems/cursor/components.html +654 -0
  107. package/dist/designer/data/systems/cursor/tokens.css +218 -0
  108. package/dist/designer/data/systems/dashboard/DESIGN.md +71 -0
  109. package/dist/designer/data/systems/dashboard/components.html +154 -0
  110. package/dist/designer/data/systems/dashboard/tokens.css +63 -0
  111. package/dist/designer/data/systems/default/DESIGN.md +62 -0
  112. package/dist/designer/data/systems/default/components.html +523 -0
  113. package/dist/designer/data/systems/default/tokens.css +200 -0
  114. package/dist/designer/data/systems/discord/DESIGN.md +162 -0
  115. package/dist/designer/data/systems/discord/components.html +359 -0
  116. package/dist/designer/data/systems/discord/tokens.css +125 -0
  117. package/dist/designer/data/systems/dithered/DESIGN.md +71 -0
  118. package/dist/designer/data/systems/dithered/components.html +136 -0
  119. package/dist/designer/data/systems/dithered/tokens.css +63 -0
  120. package/dist/designer/data/systems/doodle/DESIGN.md +71 -0
  121. package/dist/designer/data/systems/doodle/components.html +136 -0
  122. package/dist/designer/data/systems/doodle/tokens.css +63 -0
  123. package/dist/designer/data/systems/dramatic/DESIGN.md +71 -0
  124. package/dist/designer/data/systems/dramatic/components.html +136 -0
  125. package/dist/designer/data/systems/dramatic/tokens.css +63 -0
  126. package/dist/designer/data/systems/duolingo/DESIGN.md +154 -0
  127. package/dist/designer/data/systems/duolingo/components.html +532 -0
  128. package/dist/designer/data/systems/duolingo/tokens.css +130 -0
  129. package/dist/designer/data/systems/editorial/DESIGN.md +71 -0
  130. package/dist/designer/data/systems/editorial/components.html +154 -0
  131. package/dist/designer/data/systems/editorial/tokens.css +63 -0
  132. package/dist/designer/data/systems/elegant/DESIGN.md +71 -0
  133. package/dist/designer/data/systems/elegant/components.html +136 -0
  134. package/dist/designer/data/systems/elegant/tokens.css +63 -0
  135. package/dist/designer/data/systems/elevenlabs/DESIGN.md +268 -0
  136. package/dist/designer/data/systems/elevenlabs/components.html +342 -0
  137. package/dist/designer/data/systems/elevenlabs/tokens.css +127 -0
  138. package/dist/designer/data/systems/energetic/DESIGN.md +72 -0
  139. package/dist/designer/data/systems/energetic/components.html +136 -0
  140. package/dist/designer/data/systems/energetic/tokens.css +63 -0
  141. package/dist/designer/data/systems/enterprise/DESIGN.md +71 -0
  142. package/dist/designer/data/systems/enterprise/components.html +154 -0
  143. package/dist/designer/data/systems/enterprise/tokens.css +63 -0
  144. package/dist/designer/data/systems/expo/DESIGN.md +284 -0
  145. package/dist/designer/data/systems/expo/components.html +342 -0
  146. package/dist/designer/data/systems/expo/tokens.css +64 -0
  147. package/dist/designer/data/systems/expressive/DESIGN.md +71 -0
  148. package/dist/designer/data/systems/expressive/components.html +136 -0
  149. package/dist/designer/data/systems/expressive/tokens.css +63 -0
  150. package/dist/designer/data/systems/fantasy/DESIGN.md +71 -0
  151. package/dist/designer/data/systems/fantasy/components.html +136 -0
  152. package/dist/designer/data/systems/fantasy/tokens.css +63 -0
  153. package/dist/designer/data/systems/ferrari/DESIGN.md +317 -0
  154. package/dist/designer/data/systems/ferrari/components.html +342 -0
  155. package/dist/designer/data/systems/ferrari/tokens.css +64 -0
  156. package/dist/designer/data/systems/figma/DESIGN.md +223 -0
  157. package/dist/designer/data/systems/figma/components.html +344 -0
  158. package/dist/designer/data/systems/figma/tokens.css +126 -0
  159. package/dist/designer/data/systems/flat/DESIGN.md +71 -0
  160. package/dist/designer/data/systems/flat/components.html +136 -0
  161. package/dist/designer/data/systems/flat/tokens.css +63 -0
  162. package/dist/designer/data/systems/framer/DESIGN.md +249 -0
  163. package/dist/designer/data/systems/framer/components.html +438 -0
  164. package/dist/designer/data/systems/framer/tokens.css +238 -0
  165. package/dist/designer/data/systems/friendly/DESIGN.md +71 -0
  166. package/dist/designer/data/systems/friendly/components.html +136 -0
  167. package/dist/designer/data/systems/friendly/tokens.css +63 -0
  168. package/dist/designer/data/systems/futuristic/DESIGN.md +71 -0
  169. package/dist/designer/data/systems/futuristic/components.html +136 -0
  170. package/dist/designer/data/systems/futuristic/tokens.css +63 -0
  171. package/dist/designer/data/systems/github/DESIGN.md +155 -0
  172. package/dist/designer/data/systems/github/components.html +383 -0
  173. package/dist/designer/data/systems/github/tokens.css +125 -0
  174. package/dist/designer/data/systems/glassmorphism/DESIGN.md +71 -0
  175. package/dist/designer/data/systems/glassmorphism/components.html +154 -0
  176. package/dist/designer/data/systems/glassmorphism/tokens.css +63 -0
  177. package/dist/designer/data/systems/gradient/DESIGN.md +71 -0
  178. package/dist/designer/data/systems/gradient/components.html +154 -0
  179. package/dist/designer/data/systems/gradient/tokens.css +63 -0
  180. package/dist/designer/data/systems/hashicorp/DESIGN.md +281 -0
  181. package/dist/designer/data/systems/hashicorp/components.html +502 -0
  182. package/dist/designer/data/systems/hashicorp/tokens.css +272 -0
  183. package/dist/designer/data/systems/hud/DESIGN.md +173 -0
  184. package/dist/designer/data/systems/hud/components.html +136 -0
  185. package/dist/designer/data/systems/hud/tokens.css +63 -0
  186. package/dist/designer/data/systems/huggingface/DESIGN.md +149 -0
  187. package/dist/designer/data/systems/huggingface/components.html +346 -0
  188. package/dist/designer/data/systems/huggingface/tokens.css +125 -0
  189. package/dist/designer/data/systems/ibm/DESIGN.md +335 -0
  190. package/dist/designer/data/systems/ibm/components.html +342 -0
  191. package/dist/designer/data/systems/ibm/tokens.css +64 -0
  192. package/dist/designer/data/systems/intercom/DESIGN.md +149 -0
  193. package/dist/designer/data/systems/intercom/components.html +557 -0
  194. package/dist/designer/data/systems/intercom/tokens.css +150 -0
  195. package/dist/designer/data/systems/kami/DESIGN.md +410 -0
  196. package/dist/designer/data/systems/kami/components.html +601 -0
  197. package/dist/designer/data/systems/kami/tokens.css +272 -0
  198. package/dist/designer/data/systems/kraken/DESIGN.md +128 -0
  199. package/dist/designer/data/systems/kraken/components.html +342 -0
  200. package/dist/designer/data/systems/kraken/tokens.css +64 -0
  201. package/dist/designer/data/systems/lamborghini/DESIGN.md +291 -0
  202. package/dist/designer/data/systems/lamborghini/components.html +342 -0
  203. package/dist/designer/data/systems/lamborghini/tokens.css +64 -0
  204. package/dist/designer/data/systems/levels/DESIGN.md +71 -0
  205. package/dist/designer/data/systems/levels/components.html +154 -0
  206. package/dist/designer/data/systems/levels/tokens.css +63 -0
  207. package/dist/designer/data/systems/linear-app/DESIGN.md +370 -0
  208. package/dist/designer/data/systems/linear-app/components.html +370 -0
  209. package/dist/designer/data/systems/linear-app/tokens.css +130 -0
  210. package/dist/designer/data/systems/lingo/DESIGN.md +71 -0
  211. package/dist/designer/data/systems/lingo/components.html +154 -0
  212. package/dist/designer/data/systems/lingo/tokens.css +63 -0
  213. package/dist/designer/data/systems/loom/DESIGN.md +201 -0
  214. package/dist/designer/data/systems/loom/components.html +446 -0
  215. package/dist/designer/data/systems/loom/tokens.css +138 -0
  216. package/dist/designer/data/systems/lovable/DESIGN.md +301 -0
  217. package/dist/designer/data/systems/lovable/components.html +441 -0
  218. package/dist/designer/data/systems/lovable/tokens.css +258 -0
  219. package/dist/designer/data/systems/luxury/DESIGN.md +71 -0
  220. package/dist/designer/data/systems/luxury/components.html +154 -0
  221. package/dist/designer/data/systems/luxury/tokens.css +63 -0
  222. package/dist/designer/data/systems/mastercard/DESIGN.md +368 -0
  223. package/dist/designer/data/systems/mastercard/components.html +342 -0
  224. package/dist/designer/data/systems/mastercard/tokens.css +64 -0
  225. package/dist/designer/data/systems/material/DESIGN.md +71 -0
  226. package/dist/designer/data/systems/material/components.html +154 -0
  227. package/dist/designer/data/systems/material/tokens.css +63 -0
  228. package/dist/designer/data/systems/meta/DESIGN.md +369 -0
  229. package/dist/designer/data/systems/meta/components.html +398 -0
  230. package/dist/designer/data/systems/meta/tokens.css +263 -0
  231. package/dist/designer/data/systems/minimal/DESIGN.md +71 -0
  232. package/dist/designer/data/systems/minimal/components.html +154 -0
  233. package/dist/designer/data/systems/minimal/tokens.css +63 -0
  234. package/dist/designer/data/systems/minimax/DESIGN.md +260 -0
  235. package/dist/designer/data/systems/minimax/components.html +590 -0
  236. package/dist/designer/data/systems/minimax/tokens.css +148 -0
  237. package/dist/designer/data/systems/mintlify/DESIGN.md +329 -0
  238. package/dist/designer/data/systems/mintlify/components.html +737 -0
  239. package/dist/designer/data/systems/mintlify/tokens.css +256 -0
  240. package/dist/designer/data/systems/miro/DESIGN.md +111 -0
  241. package/dist/designer/data/systems/miro/components.html +342 -0
  242. package/dist/designer/data/systems/miro/tokens.css +64 -0
  243. package/dist/designer/data/systems/mission-control/DESIGN.md +474 -0
  244. package/dist/designer/data/systems/mission-control/components.html +136 -0
  245. package/dist/designer/data/systems/mission-control/tokens.css +63 -0
  246. package/dist/designer/data/systems/mistral-ai/DESIGN.md +264 -0
  247. package/dist/designer/data/systems/mistral-ai/components.html +338 -0
  248. package/dist/designer/data/systems/mistral-ai/tokens.css +125 -0
  249. package/dist/designer/data/systems/modern/DESIGN.md +71 -0
  250. package/dist/designer/data/systems/modern/components.html +154 -0
  251. package/dist/designer/data/systems/modern/tokens.css +63 -0
  252. package/dist/designer/data/systems/mongodb/DESIGN.md +269 -0
  253. package/dist/designer/data/systems/mongodb/components.html +462 -0
  254. package/dist/designer/data/systems/mongodb/tokens.css +176 -0
  255. package/dist/designer/data/systems/mono/DESIGN.md +71 -0
  256. package/dist/designer/data/systems/mono/components.html +136 -0
  257. package/dist/designer/data/systems/mono/tokens.css +63 -0
  258. package/dist/designer/data/systems/neobrutalism/DESIGN.md +71 -0
  259. package/dist/designer/data/systems/neobrutalism/components.html +136 -0
  260. package/dist/designer/data/systems/neobrutalism/tokens.css +63 -0
  261. package/dist/designer/data/systems/neon/DESIGN.md +71 -0
  262. package/dist/designer/data/systems/neon/components.html +136 -0
  263. package/dist/designer/data/systems/neon/tokens.css +63 -0
  264. package/dist/designer/data/systems/neumorphism/DESIGN.md +71 -0
  265. package/dist/designer/data/systems/neumorphism/components.html +136 -0
  266. package/dist/designer/data/systems/neumorphism/tokens.css +63 -0
  267. package/dist/designer/data/systems/nike/DESIGN.md +366 -0
  268. package/dist/designer/data/systems/nike/components.html +512 -0
  269. package/dist/designer/data/systems/nike/tokens.css +304 -0
  270. package/dist/designer/data/systems/notion/DESIGN.md +312 -0
  271. package/dist/designer/data/systems/notion/components.html +413 -0
  272. package/dist/designer/data/systems/notion/tokens.css +130 -0
  273. package/dist/designer/data/systems/nvidia/DESIGN.md +296 -0
  274. package/dist/designer/data/systems/nvidia/components.html +414 -0
  275. package/dist/designer/data/systems/nvidia/tokens.css +133 -0
  276. package/dist/designer/data/systems/ollama/DESIGN.md +270 -0
  277. package/dist/designer/data/systems/ollama/components.html +700 -0
  278. package/dist/designer/data/systems/ollama/tokens.css +242 -0
  279. package/dist/designer/data/systems/openai/DESIGN.md +140 -0
  280. package/dist/designer/data/systems/openai/components.html +382 -0
  281. package/dist/designer/data/systems/openai/tokens.css +133 -0
  282. package/dist/designer/data/systems/opencode-ai/DESIGN.md +284 -0
  283. package/dist/designer/data/systems/opencode-ai/components.html +389 -0
  284. package/dist/designer/data/systems/opencode-ai/tokens.css +126 -0
  285. package/dist/designer/data/systems/pacman/DESIGN.md +71 -0
  286. package/dist/designer/data/systems/pacman/components.html +342 -0
  287. package/dist/designer/data/systems/pacman/tokens.css +64 -0
  288. package/dist/designer/data/systems/paper/DESIGN.md +71 -0
  289. package/dist/designer/data/systems/paper/components.html +136 -0
  290. package/dist/designer/data/systems/paper/tokens.css +63 -0
  291. package/dist/designer/data/systems/perplexity/DESIGN.md +286 -0
  292. package/dist/designer/data/systems/perplexity/components.html +455 -0
  293. package/dist/designer/data/systems/perplexity/tokens.css +151 -0
  294. package/dist/designer/data/systems/perspective/DESIGN.md +71 -0
  295. package/dist/designer/data/systems/perspective/components.html +136 -0
  296. package/dist/designer/data/systems/perspective/tokens.css +63 -0
  297. package/dist/designer/data/systems/pinterest/DESIGN.md +233 -0
  298. package/dist/designer/data/systems/pinterest/components.html +865 -0
  299. package/dist/designer/data/systems/pinterest/tokens.css +262 -0
  300. package/dist/designer/data/systems/playstation/DESIGN.md +367 -0
  301. package/dist/designer/data/systems/playstation/components.html +414 -0
  302. package/dist/designer/data/systems/playstation/tokens.css +150 -0
  303. package/dist/designer/data/systems/posthog/DESIGN.md +259 -0
  304. package/dist/designer/data/systems/posthog/components.html +827 -0
  305. package/dist/designer/data/systems/posthog/tokens.css +272 -0
  306. package/dist/designer/data/systems/premium/DESIGN.md +71 -0
  307. package/dist/designer/data/systems/premium/components.html +154 -0
  308. package/dist/designer/data/systems/premium/tokens.css +63 -0
  309. package/dist/designer/data/systems/professional/DESIGN.md +71 -0
  310. package/dist/designer/data/systems/professional/components.html +136 -0
  311. package/dist/designer/data/systems/professional/tokens.css +63 -0
  312. package/dist/designer/data/systems/publication/DESIGN.md +71 -0
  313. package/dist/designer/data/systems/publication/components.html +154 -0
  314. package/dist/designer/data/systems/publication/tokens.css +63 -0
  315. package/dist/designer/data/systems/raycast/DESIGN.md +271 -0
  316. package/dist/designer/data/systems/raycast/components.html +507 -0
  317. package/dist/designer/data/systems/raycast/tokens.css +143 -0
  318. package/dist/designer/data/systems/refined/DESIGN.md +71 -0
  319. package/dist/designer/data/systems/refined/components.html +136 -0
  320. package/dist/designer/data/systems/refined/tokens.css +63 -0
  321. package/dist/designer/data/systems/renault/DESIGN.md +314 -0
  322. package/dist/designer/data/systems/renault/components.html +154 -0
  323. package/dist/designer/data/systems/renault/tokens.css +63 -0
  324. package/dist/designer/data/systems/replicate/DESIGN.md +264 -0
  325. package/dist/designer/data/systems/replicate/components.html +340 -0
  326. package/dist/designer/data/systems/replicate/tokens.css +125 -0
  327. package/dist/designer/data/systems/resend/DESIGN.md +306 -0
  328. package/dist/designer/data/systems/resend/components.html +839 -0
  329. package/dist/designer/data/systems/resend/tokens.css +353 -0
  330. package/dist/designer/data/systems/retro/DESIGN.md +71 -0
  331. package/dist/designer/data/systems/retro/components.html +136 -0
  332. package/dist/designer/data/systems/retro/tokens.css +63 -0
  333. package/dist/designer/data/systems/revolut/DESIGN.md +188 -0
  334. package/dist/designer/data/systems/revolut/components.html +342 -0
  335. package/dist/designer/data/systems/revolut/tokens.css +64 -0
  336. package/dist/designer/data/systems/runwayml/DESIGN.md +247 -0
  337. package/dist/designer/data/systems/runwayml/components.html +638 -0
  338. package/dist/designer/data/systems/runwayml/tokens.css +204 -0
  339. package/dist/designer/data/systems/sanity/DESIGN.md +360 -0
  340. package/dist/designer/data/systems/sanity/components.html +342 -0
  341. package/dist/designer/data/systems/sanity/tokens.css +64 -0
  342. package/dist/designer/data/systems/sentry/DESIGN.md +265 -0
  343. package/dist/designer/data/systems/sentry/components.html +387 -0
  344. package/dist/designer/data/systems/sentry/tokens.css +219 -0
  345. package/dist/designer/data/systems/shadcn/DESIGN.md +71 -0
  346. package/dist/designer/data/systems/shadcn/components.html +732 -0
  347. package/dist/designer/data/systems/shadcn/tokens.css +255 -0
  348. package/dist/designer/data/systems/shopify/DESIGN.md +353 -0
  349. package/dist/designer/data/systems/shopify/components.html +342 -0
  350. package/dist/designer/data/systems/shopify/tokens.css +141 -0
  351. package/dist/designer/data/systems/simple/DESIGN.md +71 -0
  352. package/dist/designer/data/systems/simple/components.html +136 -0
  353. package/dist/designer/data/systems/simple/tokens.css +63 -0
  354. package/dist/designer/data/systems/skeumorphism/DESIGN.md +71 -0
  355. package/dist/designer/data/systems/skeumorphism/components.html +136 -0
  356. package/dist/designer/data/systems/skeumorphism/tokens.css +63 -0
  357. package/dist/designer/data/systems/slack/DESIGN.md +363 -0
  358. package/dist/designer/data/systems/slack/components.html +387 -0
  359. package/dist/designer/data/systems/slack/tokens.css +127 -0
  360. package/dist/designer/data/systems/sleek/DESIGN.md +71 -0
  361. package/dist/designer/data/systems/sleek/components.html +136 -0
  362. package/dist/designer/data/systems/sleek/tokens.css +63 -0
  363. package/dist/designer/data/systems/spacex/DESIGN.md +197 -0
  364. package/dist/designer/data/systems/spacex/components.html +496 -0
  365. package/dist/designer/data/systems/spacex/tokens.css +154 -0
  366. package/dist/designer/data/systems/spacious/DESIGN.md +71 -0
  367. package/dist/designer/data/systems/spacious/components.html +136 -0
  368. package/dist/designer/data/systems/spacious/tokens.css +63 -0
  369. package/dist/designer/data/systems/spotify/DESIGN.md +249 -0
  370. package/dist/designer/data/systems/spotify/components.html +365 -0
  371. package/dist/designer/data/systems/spotify/tokens.css +127 -0
  372. package/dist/designer/data/systems/starbucks/DESIGN.md +583 -0
  373. package/dist/designer/data/systems/starbucks/components.html +493 -0
  374. package/dist/designer/data/systems/starbucks/tokens.css +182 -0
  375. package/dist/designer/data/systems/storytelling/DESIGN.md +71 -0
  376. package/dist/designer/data/systems/storytelling/components.html +136 -0
  377. package/dist/designer/data/systems/storytelling/tokens.css +63 -0
  378. package/dist/designer/data/systems/stripe/DESIGN.md +325 -0
  379. package/dist/designer/data/systems/stripe/components.html +1018 -0
  380. package/dist/designer/data/systems/stripe/tokens.css +295 -0
  381. package/dist/designer/data/systems/supabase/DESIGN.md +258 -0
  382. package/dist/designer/data/systems/supabase/components.html +741 -0
  383. package/dist/designer/data/systems/supabase/tokens.css +294 -0
  384. package/dist/designer/data/systems/superhuman/DESIGN.md +255 -0
  385. package/dist/designer/data/systems/superhuman/components.html +537 -0
  386. package/dist/designer/data/systems/superhuman/tokens.css +160 -0
  387. package/dist/designer/data/systems/tesla/DESIGN.md +289 -0
  388. package/dist/designer/data/systems/tesla/components.html +724 -0
  389. package/dist/designer/data/systems/tesla/tokens.css +285 -0
  390. package/dist/designer/data/systems/tetris/DESIGN.md +71 -0
  391. package/dist/designer/data/systems/tetris/components.html +342 -0
  392. package/dist/designer/data/systems/tetris/tokens.css +64 -0
  393. package/dist/designer/data/systems/theverge/DESIGN.md +342 -0
  394. package/dist/designer/data/systems/theverge/components.html +342 -0
  395. package/dist/designer/data/systems/theverge/tokens.css +64 -0
  396. package/dist/designer/data/systems/together-ai/DESIGN.md +266 -0
  397. package/dist/designer/data/systems/together-ai/components.html +422 -0
  398. package/dist/designer/data/systems/together-ai/tokens.css +127 -0
  399. package/dist/designer/data/systems/totality-festival/DESIGN.md +206 -0
  400. package/dist/designer/data/systems/totality-festival/components.html +136 -0
  401. package/dist/designer/data/systems/totality-festival/tokens.css +63 -0
  402. package/dist/designer/data/systems/trading-terminal/DESIGN.md +178 -0
  403. package/dist/designer/data/systems/trading-terminal/components.html +154 -0
  404. package/dist/designer/data/systems/trading-terminal/tokens.css +63 -0
  405. package/dist/designer/data/systems/uber/DESIGN.md +298 -0
  406. package/dist/designer/data/systems/uber/components.html +347 -0
  407. package/dist/designer/data/systems/uber/tokens.css +131 -0
  408. package/dist/designer/data/systems/urdu/DESIGN.md +1002 -0
  409. package/dist/designer/data/systems/urdu/components.html +136 -0
  410. package/dist/designer/data/systems/urdu/tokens.css +63 -0
  411. package/dist/designer/data/systems/vercel/DESIGN.md +313 -0
  412. package/dist/designer/data/systems/vercel/components.html +839 -0
  413. package/dist/designer/data/systems/vercel/tokens.css +270 -0
  414. package/dist/designer/data/systems/vibrant/DESIGN.md +71 -0
  415. package/dist/designer/data/systems/vibrant/components.html +136 -0
  416. package/dist/designer/data/systems/vibrant/tokens.css +63 -0
  417. package/dist/designer/data/systems/vintage/DESIGN.md +71 -0
  418. package/dist/designer/data/systems/vintage/components.html +136 -0
  419. package/dist/designer/data/systems/vintage/tokens.css +63 -0
  420. package/dist/designer/data/systems/vodafone/DESIGN.md +426 -0
  421. package/dist/designer/data/systems/vodafone/components.html +342 -0
  422. package/dist/designer/data/systems/vodafone/tokens.css +64 -0
  423. package/dist/designer/data/systems/voltagent/DESIGN.md +326 -0
  424. package/dist/designer/data/systems/voltagent/components.html +154 -0
  425. package/dist/designer/data/systems/voltagent/tokens.css +63 -0
  426. package/dist/designer/data/systems/warm-editorial/DESIGN.md +65 -0
  427. package/dist/designer/data/systems/warm-editorial/components.html +136 -0
  428. package/dist/designer/data/systems/warm-editorial/tokens.css +63 -0
  429. package/dist/designer/data/systems/warp/DESIGN.md +256 -0
  430. package/dist/designer/data/systems/warp/components.html +411 -0
  431. package/dist/designer/data/systems/warp/tokens.css +156 -0
  432. package/dist/designer/data/systems/webex/DESIGN.md +207 -0
  433. package/dist/designer/data/systems/webex/components.html +342 -0
  434. package/dist/designer/data/systems/webex/tokens.css +64 -0
  435. package/dist/designer/data/systems/webflow/DESIGN.md +95 -0
  436. package/dist/designer/data/systems/webflow/components.html +413 -0
  437. package/dist/designer/data/systems/webflow/tokens.css +191 -0
  438. package/dist/designer/data/systems/wechat/DESIGN.md +302 -0
  439. package/dist/designer/data/systems/wechat/components.html +507 -0
  440. package/dist/designer/data/systems/wechat/tokens.css +176 -0
  441. package/dist/designer/data/systems/wired/DESIGN.md +281 -0
  442. package/dist/designer/data/systems/wired/components.html +342 -0
  443. package/dist/designer/data/systems/wired/tokens.css +64 -0
  444. package/dist/designer/data/systems/wise/DESIGN.md +176 -0
  445. package/dist/designer/data/systems/wise/components.html +365 -0
  446. package/dist/designer/data/systems/wise/tokens.css +141 -0
  447. package/dist/designer/data/systems/x-ai/DESIGN.md +260 -0
  448. package/dist/designer/data/systems/x-ai/components.html +460 -0
  449. package/dist/designer/data/systems/x-ai/tokens.css +268 -0
  450. package/dist/designer/data/systems/xiaohongshu/DESIGN.md +402 -0
  451. package/dist/designer/data/systems/xiaohongshu/components.html +865 -0
  452. package/dist/designer/data/systems/xiaohongshu/tokens.css +193 -0
  453. package/dist/designer/data/systems/zapier/DESIGN.md +331 -0
  454. package/dist/designer/data/systems/zapier/components.html +342 -0
  455. package/dist/designer/data/systems/zapier/tokens.css +64 -0
  456. package/dist/designer/guidelines.js +176 -0
  457. package/dist/designer/index.js +236 -0
  458. package/dist/designer/philosophies.js +668 -0
  459. package/dist/designer/skills.js +1675 -0
  460. package/dist/designer/systems.js +216 -0
  461. package/dist/mcp/sampling-handler.js +1 -1
  462. package/dist/memory/commands/status.js +1 -1
  463. package/dist/memory/compaction.js +2 -2
  464. package/dist/memory/config.js +1 -1
  465. package/dist/memory/debug-log.js +1 -1
  466. package/dist/memory/hooks/compaction-hook.js +29 -0
  467. package/dist/memory/index.js +2 -0
  468. package/dist/memory/observer.js +2 -2
  469. package/dist/memory/project-observations-store.js +14 -0
  470. package/dist/memory/tokens.js +1 -1
  471. package/dist/memory/tools/read-project-observations.js +82 -0
  472. package/dist/memory/tools/recall-observation.js +2 -2
  473. package/dist/pi/agent-core/agent-loop.js +501 -0
  474. package/dist/pi/agent-core/agent.js +401 -0
  475. package/dist/pi/agent-core/harness/agent-harness.js +899 -0
  476. package/dist/pi/agent-core/harness/compaction/branch-summarization.js +173 -0
  477. package/dist/pi/agent-core/harness/compaction/compaction.js +532 -0
  478. package/dist/pi/agent-core/harness/compaction/utils.js +130 -0
  479. package/dist/pi/agent-core/harness/env/nodejs.js +485 -0
  480. package/dist/pi/agent-core/harness/messages.js +101 -0
  481. package/dist/pi/agent-core/harness/prompt-templates.js +229 -0
  482. package/dist/pi/agent-core/harness/session/jsonl-repo.js +100 -0
  483. package/dist/pi/agent-core/harness/session/jsonl-storage.js +230 -0
  484. package/dist/pi/agent-core/harness/session/memory-repo.js +41 -0
  485. package/dist/pi/agent-core/harness/session/memory-storage.js +113 -0
  486. package/dist/pi/agent-core/harness/session/repo-utils.js +38 -0
  487. package/dist/pi/agent-core/harness/session/session.js +196 -0
  488. package/dist/pi/agent-core/harness/session/uuid.js +49 -0
  489. package/dist/pi/agent-core/harness/skills.js +310 -0
  490. package/dist/pi/agent-core/harness/system-prompt.js +29 -0
  491. package/dist/pi/agent-core/harness/types.js +93 -0
  492. package/dist/pi/agent-core/harness/utils/shell-output.js +125 -0
  493. package/dist/pi/agent-core/harness/utils/truncate.js +289 -0
  494. package/dist/pi/agent-core/index.js +24 -0
  495. package/dist/pi/agent-core/node.js +2 -0
  496. package/dist/pi/agent-core/proxy.js +277 -0
  497. package/dist/pi/agent-core/types.js +1 -0
  498. package/dist/pi/ai/api-registry.js +43 -0
  499. package/dist/pi/ai/cli.js +120 -0
  500. package/dist/pi/ai/env-api-keys.js +169 -0
  501. package/dist/pi/ai/image-models.generated.js +441 -0
  502. package/dist/pi/ai/image-models.js +22 -0
  503. package/dist/pi/ai/images-api-registry.js +21 -0
  504. package/dist/pi/ai/images.js +13 -0
  505. package/dist/pi/ai/index.js +18 -0
  506. package/dist/pi/ai/models.generated.js +16220 -0
  507. package/dist/pi/ai/models.js +70 -0
  508. package/dist/pi/ai/oauth.js +1 -0
  509. package/dist/pi/ai/providers/anthropic.js +945 -0
  510. package/dist/pi/ai/providers/faux.js +367 -0
  511. package/dist/pi/ai/providers/github-copilot-headers.js +28 -0
  512. package/dist/pi/ai/providers/openai-completions.js +945 -0
  513. package/dist/pi/ai/providers/openai-prompt-cache.js +9 -0
  514. package/dist/pi/ai/providers/register-builtins.js +97 -0
  515. package/dist/pi/ai/providers/simple-options.js +40 -0
  516. package/dist/pi/ai/providers/transform-messages.js +183 -0
  517. package/dist/pi/ai/session-resources.js +21 -0
  518. package/dist/pi/ai/stream.js +26 -0
  519. package/dist/pi/ai/types.js +1 -0
  520. package/dist/pi/ai/utils/diagnostics.js +24 -0
  521. package/dist/pi/ai/utils/event-stream.js +80 -0
  522. package/dist/pi/ai/utils/hash.js +13 -0
  523. package/dist/pi/ai/utils/headers.js +7 -0
  524. package/dist/pi/ai/utils/json-parse.js +112 -0
  525. package/dist/pi/ai/utils/node-http-proxy.js +96 -0
  526. package/dist/pi/ai/utils/oauth/anthropic.js +334 -0
  527. package/dist/pi/ai/utils/oauth/device-code.js +54 -0
  528. package/dist/pi/ai/utils/oauth/github-copilot.js +270 -0
  529. package/dist/pi/ai/utils/oauth/index.js +121 -0
  530. package/dist/pi/ai/utils/oauth/oauth-page.js +104 -0
  531. package/dist/pi/ai/utils/oauth/openai-codex.js +384 -0
  532. package/dist/pi/ai/utils/oauth/pkce.js +30 -0
  533. package/dist/pi/ai/utils/oauth/types.js +1 -0
  534. package/dist/pi/ai/utils/overflow.js +150 -0
  535. package/dist/pi/ai/utils/sanitize-unicode.js +25 -0
  536. package/dist/pi/ai/utils/typebox-helpers.js +20 -0
  537. package/dist/pi/ai/utils/validation.js +280 -0
  538. package/dist/pi/coding-agent/bun/cli.js +7 -0
  539. package/dist/pi/coding-agent/bun/restore-sandbox-env.js +31 -0
  540. package/dist/pi/coding-agent/cli/args.js +340 -0
  541. package/dist/pi/coding-agent/cli/file-processor.js +82 -0
  542. package/dist/pi/coding-agent/cli/initial-message.js +21 -0
  543. package/dist/pi/coding-agent/cli.js +17 -0
  544. package/dist/pi/coding-agent/config.js +414 -0
  545. package/dist/pi/coding-agent/core/agent-session-runtime.js +299 -0
  546. package/dist/pi/coding-agent/core/agent-session-services.js +117 -0
  547. package/dist/pi/coding-agent/core/agent-session.js +2498 -0
  548. package/dist/pi/coding-agent/core/auth-guidance.js +20 -0
  549. package/dist/pi/coding-agent/core/auth-storage.js +441 -0
  550. package/dist/pi/coding-agent/core/bash-executor.js +110 -0
  551. package/dist/pi/coding-agent/core/compaction/branch-summarization.js +242 -0
  552. package/dist/pi/coding-agent/core/compaction/compaction.js +624 -0
  553. package/dist/pi/coding-agent/core/compaction/index.js +6 -0
  554. package/dist/pi/coding-agent/core/compaction/utils.js +152 -0
  555. package/dist/pi/coding-agent/core/defaults.js +1 -0
  556. package/dist/pi/coding-agent/core/diagnostics.js +1 -0
  557. package/dist/pi/coding-agent/core/event-bus.js +24 -0
  558. package/dist/pi/coding-agent/core/exec.js +74 -0
  559. package/dist/pi/coding-agent/core/export-html/ansi-to-html.js +248 -0
  560. package/dist/pi/coding-agent/core/export-html/index.js +225 -0
  561. package/dist/pi/coding-agent/core/export-html/tool-renderer.js +107 -0
  562. package/dist/pi/coding-agent/core/extensions/index.js +8 -0
  563. package/dist/pi/coding-agent/core/extensions/loader.js +485 -0
  564. package/dist/pi/coding-agent/core/extensions/runner.js +824 -0
  565. package/dist/pi/coding-agent/core/extensions/types.js +44 -0
  566. package/dist/pi/coding-agent/core/extensions/wrapper.js +21 -0
  567. package/dist/pi/coding-agent/core/footer-data-provider.js +309 -0
  568. package/dist/pi/coding-agent/core/http-dispatcher.js +47 -0
  569. package/dist/pi/coding-agent/core/index.js +11 -0
  570. package/dist/pi/coding-agent/core/keybindings.js +294 -0
  571. package/dist/pi/coding-agent/core/messages.js +122 -0
  572. package/dist/pi/coding-agent/core/model-registry.js +728 -0
  573. package/dist/pi/coding-agent/core/model-resolver.js +494 -0
  574. package/dist/pi/coding-agent/core/output-guard.js +58 -0
  575. package/dist/pi/coding-agent/core/package-manager.js +2020 -0
  576. package/dist/pi/coding-agent/core/prompt-templates.js +237 -0
  577. package/dist/pi/coding-agent/core/provider-display-names.js +32 -0
  578. package/dist/pi/coding-agent/core/resolve-config-value.js +125 -0
  579. package/dist/pi/coding-agent/core/resource-loader.js +733 -0
  580. package/dist/pi/coding-agent/core/sdk.js +282 -0
  581. package/dist/pi/coding-agent/core/session-cwd.js +37 -0
  582. package/dist/pi/coding-agent/core/session-manager.js +1146 -0
  583. package/dist/pi/coding-agent/core/settings-manager.js +794 -0
  584. package/dist/pi/coding-agent/core/skills.js +386 -0
  585. package/dist/pi/coding-agent/core/slash-commands.js +24 -0
  586. package/dist/pi/coding-agent/core/source-info.js +18 -0
  587. package/dist/pi/coding-agent/core/system-prompt.js +122 -0
  588. package/dist/pi/coding-agent/core/telemetry.js +8 -0
  589. package/dist/pi/coding-agent/core/timings.js +30 -0
  590. package/dist/pi/coding-agent/core/tools/bash.js +341 -0
  591. package/dist/pi/coding-agent/core/tools/edit-diff.js +344 -0
  592. package/dist/pi/coding-agent/core/tools/edit.js +324 -0
  593. package/dist/pi/coding-agent/core/tools/file-mutation-queue.js +36 -0
  594. package/dist/pi/coding-agent/core/tools/find.js +297 -0
  595. package/dist/pi/coding-agent/core/tools/grep.js +303 -0
  596. package/dist/pi/coding-agent/core/tools/index.js +111 -0
  597. package/dist/pi/coding-agent/core/tools/ls.js +168 -0
  598. package/dist/pi/coding-agent/core/tools/output-accumulator.js +183 -0
  599. package/dist/pi/coding-agent/core/tools/path-utils.js +61 -0
  600. package/dist/pi/coding-agent/core/tools/read.js +288 -0
  601. package/dist/pi/coding-agent/core/tools/render-utils.js +48 -0
  602. package/dist/pi/coding-agent/core/tools/tool-definition-wrapper.js +33 -0
  603. package/dist/pi/coding-agent/core/tools/truncate.js +214 -0
  604. package/dist/pi/coding-agent/core/tools/write.js +212 -0
  605. package/dist/pi/coding-agent/index.js +41 -0
  606. package/dist/pi/coding-agent/main.js +5 -0
  607. package/dist/pi/coding-agent/migrations.js +280 -0
  608. package/dist/pi/coding-agent/modes/index.js +7 -0
  609. package/dist/pi/coding-agent/modes/interactive/components/diff.js +132 -0
  610. package/dist/pi/coding-agent/modes/interactive/components/keybinding-hints.js +35 -0
  611. package/dist/pi/coding-agent/modes/interactive/components/visual-truncate.js +32 -0
  612. package/dist/pi/coding-agent/modes/interactive/interactive-mode.js +3 -0
  613. package/dist/pi/coding-agent/modes/interactive/theme/theme.js +1023 -0
  614. package/dist/pi/coding-agent/modes/print-mode.js +130 -0
  615. package/dist/pi/coding-agent/modes/rpc/jsonl.js +48 -0
  616. package/dist/pi/coding-agent/modes/rpc/rpc-client.js +409 -0
  617. package/dist/pi/coding-agent/modes/rpc/rpc-mode.js +600 -0
  618. package/dist/pi/coding-agent/modes/rpc/rpc-types.js +7 -0
  619. package/dist/pi/coding-agent/utils/ansi.js +51 -0
  620. package/dist/pi/coding-agent/utils/changelog.js +86 -0
  621. package/dist/pi/coding-agent/utils/child-process.js +87 -0
  622. package/dist/pi/coding-agent/utils/clipboard-image.js +244 -0
  623. package/dist/pi/coding-agent/utils/clipboard-native.js +13 -0
  624. package/dist/pi/coding-agent/utils/clipboard.js +116 -0
  625. package/dist/pi/coding-agent/utils/exif-orientation.js +157 -0
  626. package/dist/pi/coding-agent/utils/frontmatter.js +25 -0
  627. package/dist/pi/coding-agent/utils/fs-watch.js +24 -0
  628. package/dist/pi/coding-agent/utils/git.js +162 -0
  629. package/dist/pi/coding-agent/utils/html.js +39 -0
  630. package/dist/pi/coding-agent/utils/image-convert.js +38 -0
  631. package/dist/pi/coding-agent/utils/image-resize.js +136 -0
  632. package/dist/pi/coding-agent/utils/mime.js +68 -0
  633. package/dist/pi/coding-agent/utils/paths.js +91 -0
  634. package/dist/pi/coding-agent/utils/photon.js +120 -0
  635. package/dist/pi/coding-agent/utils/pi-user-agent.js +4 -0
  636. package/dist/pi/coding-agent/utils/shell.js +194 -0
  637. package/dist/pi/coding-agent/utils/sleep.js +16 -0
  638. package/dist/pi/coding-agent/utils/syntax-highlight.js +117 -0
  639. package/dist/pi/coding-agent/utils/tools-manager.js +327 -0
  640. package/dist/pi/coding-agent/utils/version-check.js +81 -0
  641. package/dist/pi/coding-agent/utils/windows-self-update.js +76 -0
  642. package/dist/pi/tui/autocomplete.js +631 -0
  643. package/dist/pi/tui/components/box.js +103 -0
  644. package/dist/pi/tui/components/cancellable-loader.js +34 -0
  645. package/dist/pi/tui/components/editor.js +1915 -0
  646. package/dist/pi/tui/components/image.js +88 -0
  647. package/dist/pi/tui/components/input.js +425 -0
  648. package/dist/pi/tui/components/loader.js +68 -0
  649. package/dist/pi/tui/components/markdown.js +633 -0
  650. package/dist/pi/tui/components/select-list.js +158 -0
  651. package/dist/pi/tui/components/settings-list.js +184 -0
  652. package/dist/pi/tui/components/spacer.js +22 -0
  653. package/dist/pi/tui/components/text.js +88 -0
  654. package/dist/pi/tui/components/truncated-text.js +50 -0
  655. package/dist/pi/tui/editor-component.js +1 -0
  656. package/dist/pi/tui/fuzzy.js +109 -0
  657. package/dist/pi/tui/index.js +31 -0
  658. package/dist/pi/tui/keybindings.js +173 -0
  659. package/dist/pi/tui/keys.js +1172 -0
  660. package/dist/pi/tui/kill-ring.js +43 -0
  661. package/dist/pi/tui/stdin-buffer.js +360 -0
  662. package/dist/pi/tui/terminal-image.js +335 -0
  663. package/dist/pi/tui/terminal.js +324 -0
  664. package/dist/pi/tui/tui.js +1076 -0
  665. package/dist/pi/tui/undo-stack.js +24 -0
  666. package/dist/pi/tui/utils.js +1016 -0
  667. package/dist/server/pi-bridge.js +156 -6
  668. package/dist/server/session-stream.js +53 -112
  669. package/dist/server/storage.js +62 -1
  670. package/dist/server/title-generator.js +14 -153
  671. package/package.json +24 -6
@@ -0,0 +1,64 @@
1
+ /* design-systems/wired/tokens.css
2
+ *
3
+ * Structured token bindings for WIRED.
4
+ * authoritative technology journalism with monochrome discipline and sharp red alerts.
5
+ */
6
+
7
+ :root {
8
+ --bg: #ffffff;
9
+ --surface: #f2f2f2;
10
+ --surface-warm: #fff0f0;
11
+ --fg: #000000;
12
+ --fg-2: #333333;
13
+ --muted: #666666;
14
+ --meta: #e10600;
15
+ --border: #d0d0d0;
16
+ --border-soft: #e8e8e8;
17
+ --accent: #e10600;
18
+ --accent-on: #ffffff;
19
+ --accent-hover: color-mix(in oklab, var(--accent), black 8%);
20
+ --accent-active: color-mix(in oklab, var(--accent), black 14%);
21
+ --success: #0f8a3b;
22
+ --warn: #f5a400;
23
+ --danger: #c40000;
24
+ --font-display: "Druk Wide", "Arial Black", Impact, sans-serif;
25
+ --font-body: "Exchange", Georgia, serif;
26
+ --font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
27
+ --text-xs: 12px;
28
+ --text-sm: 14px;
29
+ --text-base: 17px;
30
+ --text-lg: 20px;
31
+ --text-xl: 28px;
32
+ --text-2xl: 44px;
33
+ --text-3xl: 68px;
34
+ --text-4xl: 96px;
35
+ --leading-body: 1.55;
36
+ --leading-tight: 0.92;
37
+ --tracking-display: -0.02em;
38
+ --space-1: 4px;
39
+ --space-2: 8px;
40
+ --space-3: 12px;
41
+ --space-4: 16px;
42
+ --space-5: 20px;
43
+ --space-6: 24px;
44
+ --space-8: 32px;
45
+ --space-12: 48px;
46
+ --section-y-desktop: 88px;
47
+ --section-y-tablet: 64px;
48
+ --section-y-phone: 44px;
49
+ --radius-sm: 0px;
50
+ --radius-md: 0px;
51
+ --radius-lg: 0px;
52
+ --radius-pill: 9999px;
53
+ --elev-flat: none;
54
+ --elev-ring: 0 0 0 1px var(--border);
55
+ --elev-raised: 0 16px 40px rgba(0, 0, 0, 0.14);
56
+ --focus-ring: 0 0 0 4px rgba(225, 6, 0, 0.24);
57
+ --motion-fast: 120ms;
58
+ --motion-base: 200ms;
59
+ --ease-standard: cubic-bezier(0.2, 0, 0, 1);
60
+ --container-max: 1180px;
61
+ --container-gutter-desktop: 34px;
62
+ --container-gutter-tablet: 26px;
63
+ --container-gutter-phone: 18px;
64
+ }
@@ -0,0 +1,176 @@
1
+ # Design System Inspired by Wise
2
+
3
+ > Category: Fintech & Crypto
4
+ > Money transfer. Bright green accent, friendly and clear.
5
+
6
+ ## 1. Visual Theme & Atmosphere
7
+
8
+ Wise's website is a bold, confident fintech platform that communicates "money without borders" through massive typography and a distinctive lime-green accent. The design operates on a warm off-white canvas with near-black text (`#0e0f0c`) and a signature Wise Green (`#9fe870`) — a fresh, lime-bright color that feels alive and optimistic, unlike the corporate blues of traditional banking.
9
+
10
+ The typography uses Wise Sans — a proprietary font used at extreme weight 900 (black) for display headings with a remarkably tight line-height of 0.85 and OpenType `"calt"` (contextual alternates). At 126px, the text is so dense it feels like a protest sign — bold, urgent, and impossible to ignore. Inter serves as the body font with weight 600 as the default for emphasis, creating a consistently confident voice.
11
+
12
+ What distinguishes Wise is its green-on-white-on-black material palette. Lime Green (`#9fe870`) appears on buttons with dark green text (`#163300`), creating a nature-inspired CTA that feels fresh. Hover states use `scale(1.05)` expansion rather than color changes — buttons physically grow on interaction. The border-radius system uses 9999px for buttons (pill), 30px–40px for cards, and the shadow system is minimal — just `rgba(14,15,12,0.12) 0px 0px 0px 1px` ring shadows.
13
+
14
+ **Key Characteristics:**
15
+ - Wise Sans at weight 900, 0.85 line-height — billboard-scale bold headlines
16
+ - Lime Green (`#9fe870`) accent with dark green text (`#163300`) — nature-inspired fintech
17
+ - Inter body at weight 600 as default — confident, not light
18
+ - Near-black (`#0e0f0c`) primary with warm green undertone
19
+ - Scale(1.05) hover animations — buttons physically grow
20
+ - OpenType `"calt"` on all text
21
+ - Pill buttons (9999px) and large rounded cards (30px–40px)
22
+ - Semantic color system with comprehensive state management
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary Brand
27
+ - **Near Black** (`#0e0f0c`): Primary text, background for dark sections
28
+ - **Wise Green** (`#9fe870`): Primary CTA button, brand accent
29
+ - **Dark Green** (`#163300`): Button text on green, deep green accent
30
+ - **Light Mint** (`#e2f6d5`): Soft green surface, badge backgrounds
31
+ - **Pastel Green** (`#cdffad`): `--color-interactive-contrast-hover`, hover accent
32
+
33
+ ### Semantic
34
+ - **Positive Green** (`#054d28`): `--color-sentiment-positive-primary`, success
35
+ - **Danger Red** (`#d03238`): `--color-interactive-negative-hover`, error/destructive
36
+ - **Warning Yellow** (`#ffd11a`): `--color-sentiment-warning-hover`, warnings
37
+ - **Background Cyan** (`rgba(56,200,255,0.10)`): `--color-background-accent`, info tint
38
+ - **Bright Orange** (`#ffc091`): `--color-bright-orange`, warm accent
39
+
40
+ ### Neutral
41
+ - **Warm Dark** (`#454745`): Secondary text, borders
42
+ - **Gray** (`#868685`): Muted text, tertiary
43
+ - **Light Surface** (`#e8ebe6`): Subtle green-tinted light surface
44
+
45
+ ## 3. Typography Rules
46
+
47
+ ### Font Families
48
+ - **Display**: `Wise Sans`, fallback: `Inter` — OpenType `"calt"` on all text
49
+ - **Body / UI**: `Inter`, fallbacks: `Helvetica, Arial`
50
+
51
+ ### Hierarchy
52
+
53
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
54
+ |------|------|------|--------|-------------|----------------|-------|
55
+ | Display Mega | Wise Sans | 126px (7.88rem) | 900 | 0.85 (ultra-tight) | normal | `"calt"` |
56
+ | Display Hero | Wise Sans | 96px (6.00rem) | 900 | 0.85 | normal | `"calt"` |
57
+ | Section Heading | Wise Sans | 64px (4.00rem) | 900 | 0.85 | normal | `"calt"` |
58
+ | Sub-heading | Wise Sans | 40px (2.50rem) | 900 | 0.85 | normal | `"calt"` |
59
+ | Alt Heading | Inter | 78px (4.88rem) | 600 | 1.10 (tight) | -2.34px | `"calt"` |
60
+ | Card Title | Inter | 26px (1.62rem) | 600 | 1.23 (tight) | -0.39px | `"calt"` |
61
+ | Feature Title | Inter | 22px (1.38rem) | 600 | 1.25 (tight) | -0.396px | `"calt"` |
62
+ | Body | Inter | 18px (1.13rem) | 400 | 1.44 | 0.18px | `"calt"` |
63
+ | Body Semibold | Inter | 18px (1.13rem) | 600 | 1.44 | -0.108px | `"calt"` |
64
+ | Button | Inter | 18px–22px | 600 | 1.00–1.44 | -0.108px | `"calt"` |
65
+ | Caption | Inter | 14px (0.88rem) | 400–600 | 1.50–1.86 | -0.084px to -0.108px | `"calt"` |
66
+ | Small | Inter | 12px (0.75rem) | 400–600 | 1.00–2.17 | -0.084px to -0.108px | `"calt"` |
67
+
68
+ ### Principles
69
+ - **Weight 900 as identity**: Wise Sans Black (900) is used exclusively for display — the heaviest weight in any analyzed system. It creates text that feels stamped, pressed, physical.
70
+ - **0.85 line-height**: The tightest display line-height analyzed. Letters overlap vertically, creating dense, billboard-like text blocks.
71
+ - **"calt" everywhere**: Contextual alternates enabled on ALL text — both Wise Sans and Inter.
72
+ - **Weight 600 as body default**: Inter Semibold is the standard reading weight — confident, not light.
73
+
74
+ ## 4. Component Stylings
75
+
76
+ ### Buttons
77
+
78
+ **Primary Green Pill**
79
+ - Background: `#9fe870` (Wise Green)
80
+ - Text: `#163300` (Dark Green)
81
+ - Padding: 5px 16px
82
+ - Radius: 9999px
83
+ - Hover: scale(1.05) — button physically grows
84
+ - Active: scale(0.95) — button compresses
85
+ - Focus: inset ring + outline
86
+
87
+ **Secondary Subtle Pill**
88
+ - Background: `rgba(22, 51, 0, 0.08)` (dark green at 8% opacity)
89
+ - Text: `#0e0f0c`
90
+ - Padding: 8px 12px 8px 16px
91
+ - Radius: 9999px
92
+ - Same scale hover/active behavior
93
+
94
+ ### Cards & Containers
95
+ - Radius: 16px (small), 30px (medium), 40px (large cards/tables)
96
+ - Border: `1px solid rgba(14,15,12,0.12)` or `1px solid #9fe870` (green accent)
97
+ - Shadow: `rgba(14,15,12,0.12) 0px 0px 0px 1px` (ring shadow)
98
+
99
+ ### Navigation
100
+ - Green-tinted navigation hover: `rgba(211,242,192,0.4)`
101
+ - Clean header with Wise wordmark
102
+ - Pill CTAs right-aligned
103
+
104
+ ## 5. Layout Principles
105
+
106
+ ### Spacing System
107
+ - Base unit: 8px
108
+ - Scale: 1px, 2px, 3px, 4px, 5px, 8px, 10px, 11px, 12px, 16px, 18px, 19px, 20px, 22px, 24px
109
+
110
+ ### Border Radius Scale
111
+ - Minimal (2px): Links, inputs
112
+ - Standard (10px): Comboboxes, inputs
113
+ - Card (16px): Small cards, buttons, radio
114
+ - Medium (20px): Links, medium cards
115
+ - Large (30px): Feature cards
116
+ - Section (40px): Tables, large cards
117
+ - Mega (1000px): Presentation elements
118
+ - Pill (9999px): All buttons, images
119
+ - Circle (50%): Icons, badges
120
+
121
+ ## 6. Depth & Elevation
122
+
123
+ | Level | Treatment | Use |
124
+ |-------|-----------|-----|
125
+ | Flat (Level 0) | No shadow | Default |
126
+ | Ring (Level 1) | `rgba(14,15,12,0.12) 0px 0px 0px 1px` | Card borders |
127
+ | Inset (Level 2) | `rgb(134,134,133) 0px 0px 0px 1px inset` | Input focus |
128
+
129
+ **Shadow Philosophy**: Wise uses minimal shadows — ring shadows only. Depth comes from the bold green accent against the neutral canvas.
130
+
131
+ ## 7. Do's and Don'ts
132
+
133
+ ### Do
134
+ - Use Wise Sans weight 900 for display — the extreme boldness IS the brand
135
+ - Apply line-height 0.85 on Wise Sans display — ultra-tight is intentional
136
+ - Use Lime Green (#9fe870) for primary CTAs with Dark Green (#163300) text
137
+ - Apply scale(1.05) hover and scale(0.95) active on buttons
138
+ - Enable "calt" on all text
139
+ - Use Inter weight 600 as the body default
140
+
141
+ ### Don't
142
+ - Don't use light font weights for Wise Sans — only 900
143
+ - Don't relax the 0.85 line-height on display — the density is the identity
144
+ - Don't use the Wise Green as background for large surfaces — it's for buttons and accents
145
+ - Don't skip the scale animation on buttons
146
+ - Don't use traditional shadows — ring shadows only
147
+
148
+ ## 8. Responsive Behavior
149
+
150
+ ### Breakpoints
151
+ | Name | Width | Key Changes |
152
+ |------|-------|-------------|
153
+ | Mobile | <576px | Single column |
154
+ | Tablet | 576–992px | 2-column |
155
+ | Desktop | 992–1440px | Full layout |
156
+ | Large | >1440px | Expanded |
157
+
158
+ ## 9. Agent Prompt Guide
159
+
160
+ ### Quick Color Reference
161
+ - Text: Near Black (`#0e0f0c`)
162
+ - Background: White (`#ffffff` / off-white)
163
+ - Accent: Wise Green (`#9fe870`)
164
+ - Button text: Dark Green (`#163300`)
165
+ - Secondary: Gray (`#868685`)
166
+
167
+ ### Example Component Prompts
168
+ - "Create hero: white background. Headline at 96px Wise Sans weight 900, line-height 0.85, 'calt' enabled, #0e0f0c text. Green pill CTA (#9fe870, 9999px radius, 5px 16px padding, #163300 text). Hover: scale(1.05)."
169
+ - "Build a card: 30px radius, 1px solid rgba(14,15,12,0.12). Title at 22px Inter weight 600, body at 18px weight 400."
170
+
171
+ ### Iteration Guide
172
+ 1. Wise Sans 900 at 0.85 line-height — the extreme weight IS the brand
173
+ 2. Lime Green for buttons only — dark green text on green background
174
+ 3. Scale animations (1.05 hover, 0.95 active) on all interactive elements
175
+ 4. "calt" on everything — contextual alternates are mandatory
176
+ 5. Inter 600 for body — confident reading weight
@@ -0,0 +1,365 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Wise — reference components</title>
7
+ <meta
8
+ name="description"
9
+ content="Reference fixture for design-systems/wise. Spring-green CTAs on warm-neutral
10
+ canvas, billboard Wise Sans at 0.85 line-height, pill buttons, ring-only shadows."
11
+ />
12
+
13
+ <style>
14
+ :root {
15
+ --bg: #ffffff;
16
+ --surface: #e8ebe6;
17
+ --surface-warm: var(--surface);
18
+
19
+ --fg: #0e0f0c;
20
+ --fg-2: var(--fg);
21
+ --muted: #868685;
22
+ --meta: var(--muted);
23
+
24
+ --border: rgba(14, 15, 12, 0.12);
25
+ --border-soft: var(--border);
26
+
27
+ --accent: #9fe870;
28
+ --accent-on: #163300;
29
+ --accent-hover: #cdffad;
30
+ --accent-active: color-mix(in oklab, var(--accent), black 12%);
31
+
32
+ --success: #054d28;
33
+ --warn: #ffd11a;
34
+ --danger: #d03238;
35
+
36
+ --font-display: "Wise Sans", Inter, ui-sans-serif, system-ui, sans-serif;
37
+ --font-body: Inter, Helvetica, Arial, ui-sans-serif, sans-serif;
38
+ --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
39
+
40
+ --text-xs: 12px;
41
+ --text-sm: 14px;
42
+ --text-base: 18px;
43
+ --text-lg: 22px;
44
+ --text-xl: 26px;
45
+ --text-2xl: 40px;
46
+ --text-3xl: 64px;
47
+ --text-4xl: 96px;
48
+
49
+ --leading-body: 1.44;
50
+ --leading-tight: 0.85;
51
+ --tracking-display: normal;
52
+
53
+ --space-1: 4px;
54
+ --space-2: 8px;
55
+ --space-3: 12px;
56
+ --space-4: 16px;
57
+ --space-5: 20px;
58
+ --space-6: 24px;
59
+ --space-8: 32px;
60
+ --space-12: 48px;
61
+
62
+ --section-y-desktop: 80px;
63
+ --section-y-tablet: 48px;
64
+ --section-y-phone: 32px;
65
+
66
+ --radius-sm: 16px;
67
+ --radius-md: 30px;
68
+ --radius-lg: 40px;
69
+ --radius-pill: 9999px;
70
+
71
+ --elev-flat: none;
72
+ --elev-ring: 0 0 0 1px var(--border);
73
+ --elev-raised: 0 0 0 1px var(--border), 0 2px 8px rgba(14, 15, 12, 0.04);
74
+
75
+ --focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 60%);
76
+
77
+ --motion-fast: 150ms;
78
+ --motion-base: 200ms;
79
+ --ease-standard: cubic-bezier(0.2, 0, 0, 1);
80
+
81
+ --container-max: 1280px;
82
+ --container-gutter-desktop: 24px;
83
+ --container-gutter-tablet: 16px;
84
+ --container-gutter-phone: 12px;
85
+ }
86
+
87
+ /* ─── Reset ─────────────────────────────────────────────── */
88
+ *, *::before, *::after { box-sizing: border-box; }
89
+ html, body { margin: 0; padding: 0; }
90
+ body {
91
+ background: var(--bg);
92
+ color: var(--fg);
93
+ font-family: var(--font-body);
94
+ font-size: var(--text-base);
95
+ line-height: var(--leading-body);
96
+ font-weight: 600; /* Inter 600 as body default — DESIGN.md §3 */
97
+ font-feature-settings: "calt" 1; /* "calt" on everything */
98
+ -webkit-font-smoothing: antialiased;
99
+ }
100
+
101
+ /* ─── Layout ─────────────────────────────────────────────── */
102
+ .container { max-width: var(--container-max); margin-inline: auto; padding-inline: var(--container-gutter-desktop); }
103
+ section { padding-block: var(--section-y-desktop); }
104
+ section + section { border-top: 1px solid var(--border); }
105
+ @media (max-width: 1023px) {
106
+ .container { padding-inline: var(--container-gutter-tablet); }
107
+ section { padding-block: var(--section-y-tablet); }
108
+ }
109
+ @media (max-width: 639px) {
110
+ .container { padding-inline: var(--container-gutter-phone); }
111
+ section { padding-block: var(--section-y-phone); }
112
+ }
113
+
114
+ /* ─── Typography — Wise Sans 900 at 0.85, "calt" everywhere ─ */
115
+ h1, h2, h3 {
116
+ font-family: var(--font-display);
117
+ font-weight: 900; /* Wise Sans Black — the brand identity */
118
+ line-height: var(--leading-tight);
119
+ letter-spacing: var(--tracking-display);
120
+ font-feature-settings: "calt" 1;
121
+ margin: 0;
122
+ color: var(--fg);
123
+ }
124
+ h1 { font-size: var(--text-4xl); }
125
+ h2 { font-size: var(--text-3xl); }
126
+ h3 { font-size: var(--text-xl); letter-spacing: -0.015em; line-height: 1.23; }
127
+ p { margin: 0; }
128
+ .lead {
129
+ font-size: var(--text-lg);
130
+ color: var(--fg);
131
+ line-height: var(--leading-body);
132
+ font-weight: 600;
133
+ }
134
+ .body-muted { color: var(--muted); }
135
+ .body-sm { font-size: var(--text-sm); }
136
+ .eyebrow {
137
+ font-size: var(--text-sm);
138
+ color: var(--muted);
139
+ font-weight: 600;
140
+ letter-spacing: -0.006em;
141
+ }
142
+ .stack-3 > * + * { margin-block-start: var(--space-3); }
143
+ .stack-4 > * + * { margin-block-start: var(--space-4); }
144
+ .stack-6 > * + * { margin-block-start: var(--space-6); }
145
+
146
+ /* ─── Buttons — pill, green-on-green, scale(1.05) hover ─── */
147
+ .btn {
148
+ display: inline-flex;
149
+ align-items: center;
150
+ gap: var(--space-2);
151
+ padding: 12px 22px;
152
+ border-radius: var(--radius-pill); /* 9999px — all buttons are pills */
153
+ font-family: var(--font-body);
154
+ font-size: var(--text-lg);
155
+ font-weight: 600; /* Inter 600 — confident, not light */
156
+ line-height: 1;
157
+ cursor: pointer;
158
+ border: none;
159
+ font-feature-settings: "calt" 1;
160
+ letter-spacing: -0.006em;
161
+ transition: background-color var(--motion-fast) var(--ease-standard),
162
+ transform var(--motion-fast) var(--ease-standard);
163
+ text-decoration: none;
164
+ }
165
+ .btn:hover { transform: scale(1.05); } /* DESIGN.md §4 — buttons physically grow */
166
+ .btn:active { transform: scale(0.95); } /* DESIGN.md §4 — compresses on press */
167
+ .btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
168
+ /* Primary: Wise Green pill with Dark Green text — the signature CTA */
169
+ .btn-primary {
170
+ background: var(--accent);
171
+ color: var(--accent-on);
172
+ }
173
+ .btn-primary:hover { background: var(--accent-hover); }
174
+ .btn-primary:active { background: var(--accent-active); }
175
+ /* Secondary: subtle dark-green tint pill */
176
+ .btn-secondary {
177
+ background: rgba(22, 51, 0, 0.08); /* DESIGN.md §4 — dark green at 8% */
178
+ color: var(--fg);
179
+ }
180
+ .btn-secondary:hover { background: rgba(22, 51, 0, 0.14); }
181
+
182
+ /* ─── Inputs — pill borders, ring focus ──────────────────── */
183
+ .field { display: flex; flex-direction: column; gap: var(--space-2); }
184
+ .field label { font-size: var(--text-sm); font-weight: 600; }
185
+ .field input {
186
+ padding: 14px 18px;
187
+ border-radius: var(--radius-sm);
188
+ border: 1px solid var(--border);
189
+ background: var(--bg);
190
+ color: var(--fg);
191
+ font-family: var(--font-body);
192
+ font-size: var(--text-base);
193
+ font-weight: 600;
194
+ outline: none;
195
+ transition: border-color var(--motion-fast) var(--ease-standard),
196
+ box-shadow var(--motion-fast) var(--ease-standard);
197
+ }
198
+ .field input:focus-visible {
199
+ border-color: var(--accent-on);
200
+ box-shadow: var(--focus-ring);
201
+ }
202
+ .field input::placeholder { color: var(--muted); font-weight: 400; }
203
+ .field-help { font-size: var(--text-xs); color: var(--muted); }
204
+
205
+ /* ─── Cards — 30px radius, ring elevation only ──────────── */
206
+ .card {
207
+ background: var(--bg);
208
+ border-radius: var(--radius-md); /* 30px — Wise's medium feature radius */
209
+ padding: var(--space-8);
210
+ display: flex;
211
+ flex-direction: column;
212
+ gap: var(--space-3);
213
+ box-shadow: var(--elev-ring); /* Ring shadow only — DESIGN.md §6 */
214
+ }
215
+ .card-accent {
216
+ background: var(--surface);
217
+ border-radius: var(--radius-md);
218
+ padding: var(--space-8);
219
+ display: flex;
220
+ flex-direction: column;
221
+ gap: var(--space-3);
222
+ }
223
+
224
+ /* ─── Badges ────────────────────────────────────────────── */
225
+ .badge {
226
+ display: inline-flex; align-items: center; gap: var(--space-2);
227
+ padding: 4px var(--space-3);
228
+ border-radius: var(--radius-pill);
229
+ font-size: var(--text-xs); font-weight: 600; line-height: 1.6;
230
+ }
231
+ .badge-success {
232
+ color: var(--success);
233
+ background: #e2f6d5; /* Light Mint surface — DESIGN.md §2 */
234
+ }
235
+ .badge-muted { color: var(--muted); background: var(--surface); }
236
+ .badge-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
237
+
238
+ /* ─── Links ─────────────────────────────────────────────── */
239
+ a { color: var(--fg); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 2px; }
240
+ a:hover { color: var(--accent-on); text-decoration-color: var(--accent); }
241
+ kbd {
242
+ font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 400;
243
+ padding: 2px 6px; border-radius: var(--radius-sm);
244
+ border: 1px solid var(--border); background: var(--surface); color: var(--muted);
245
+ }
246
+
247
+ /* ─── Layout helpers ────────────────────────────────────── */
248
+ .hero-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-12); align-items: end; }
249
+ @media (max-width: 1023px) { .hero-grid { grid-template-columns: 1fr; gap: var(--space-8); } }
250
+ .hero-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-6); flex-wrap: wrap; }
251
+ .hero-meta {
252
+ display: flex; flex-direction: column; gap: var(--space-3);
253
+ padding: var(--space-6); border: 1px solid var(--border);
254
+ border-radius: var(--radius-md); background: var(--surface);
255
+ }
256
+ .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
257
+ @media (max-width: 1023px) { .features-grid { grid-template-columns: 1fr 1fr; } }
258
+ @media (max-width: 639px) { .features-grid { grid-template-columns: 1fr; } }
259
+ .form-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-12); align-items: start; }
260
+ @media (max-width: 1023px) { .form-row { grid-template-columns: 1fr; } }
261
+ .form { display: flex; flex-direction: column; gap: var(--space-4); max-width: 460px; }
262
+ .form-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-2); }
263
+ .icon { width: 18px; height: 18px; flex-shrink: 0; }
264
+ .row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
265
+
266
+ /* Hero headline gets the most extreme Wise treatment */
267
+ .hero-headline { max-width: 14ch; }
268
+ </style>
269
+ </head>
270
+ <body>
271
+ <main class="container">
272
+ <section data-od-id="hero">
273
+ <div class="hero-grid">
274
+ <div class="stack-6">
275
+ <p class="eyebrow">Reference fixture · wise</p>
276
+ <h1 class="hero-headline">The international account for everyone.</h1>
277
+ <p class="lead" style="max-width: 50ch">
278
+ Hold 40+ currencies, send money across borders at the real exchange
279
+ rate, and get paid like a local — no hidden fees, no fine print.
280
+ </p>
281
+ <div class="hero-actions">
282
+ <a href="./tokens.css" class="btn btn-primary">
283
+ Open an account
284
+ <svg class="icon" viewBox="0 0 24 24" fill="none"
285
+ stroke="currentColor" stroke-width="2"
286
+ stroke-linecap="round" stroke-linejoin="round"
287
+ aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
288
+ </a>
289
+ <a href="./DESIGN.md" class="btn btn-secondary">Read the spec</a>
290
+ </div>
291
+ </div>
292
+ <aside class="hero-meta" aria-label="Transfer status">
293
+ <div class="row-between">
294
+ <span class="body-sm">Transfer status</span>
295
+ <span class="badge badge-success">
296
+ <span class="badge-dot" aria-hidden="true"></span>
297
+ On its way
298
+ </span>
299
+ </div>
300
+ <p class="body-sm body-muted">Last reviewed <time datetime="2026-05-15">2026-05-15</time> · v1.0</p>
301
+ <p class="body-sm body-muted">Press <kbd>⌘</kbd> <kbd>K</kbd> to search tokens.</p>
302
+ </aside>
303
+ </div>
304
+ </section>
305
+
306
+ <section data-od-id="features">
307
+ <div class="stack-3">
308
+ <p class="eyebrow">What this fixture exercises</p>
309
+ <h2 style="max-width: 18ch">Money without borders, by design.</h2>
310
+ </div>
311
+ <div class="features-grid" style="margin-block-start: var(--space-8)">
312
+ <article class="card">
313
+ <h3>Green-on-green CTAs</h3>
314
+ <p class="body-muted">
315
+ --accent (#9fe870) paired with --accent-on (#163300) — dark green text
316
+ on lime green is the Wise signature, not white. Pill radius 9999px.
317
+ </p>
318
+ <a href="./tokens.css">Inspect tokens →</a>
319
+ </article>
320
+ <article class="card-accent">
321
+ <h3>Billboard Wise Sans 900</h3>
322
+ <p class="body-muted">
323
+ Display headlines run at weight 900 with line-height 0.85 — letters
324
+ overlap vertically, creating dense text blocks that read like signage.
325
+ </p>
326
+ <a href="./DESIGN.md">Read the rule →</a>
327
+ </article>
328
+ <article class="card">
329
+ <h3>Ring-only elevation</h3>
330
+ <p class="body-muted">
331
+ --elev-ring (0 0 0 1px rgba(14,15,12,0.12)) is the only depth treatment.
332
+ No drop shadows; the green accent provides all the visual lift needed.
333
+ </p>
334
+ <a href="./tokens.css">Inspect elevation →</a>
335
+ </article>
336
+ </div>
337
+ </section>
338
+
339
+ <section data-od-id="form">
340
+ <div class="form-row">
341
+ <div class="stack-4">
342
+ <p class="eyebrow">Form components</p>
343
+ <h2>Sign up in seconds.</h2>
344
+ <p class="body-muted" style="max-width: 46ch">
345
+ Inputs sit on the white canvas with hairline ring borders. Focus pulls a
346
+ green-tinted ring (--focus-ring) and snaps the border to dark green —
347
+ the same brand family, never a competing color.
348
+ </p>
349
+ </div>
350
+ <form class="form" onsubmit="event.preventDefault();">
351
+ <div class="field">
352
+ <label for="email">Email address</label>
353
+ <input id="email" type="email" placeholder="you@example.com" autocomplete="email" required />
354
+ <p class="field-help">We'll send your account confirmation here.</p>
355
+ </div>
356
+ <div class="form-actions">
357
+ <button type="submit" class="btn btn-primary">Get started</button>
358
+ <button type="button" class="btn btn-secondary">Learn more</button>
359
+ </div>
360
+ </form>
361
+ </div>
362
+ </section>
363
+ </main>
364
+ </body>
365
+ </html>