@aexol/spectral 0.7.0 → 0.7.1

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 (459) hide show
  1. package/dist/agent/index.js +76 -301
  2. package/dist/cli.js +11 -0
  3. package/dist/designer/data/systems/agentic/DESIGN.md +71 -0
  4. package/dist/designer/data/systems/agentic/components.html +154 -0
  5. package/dist/designer/data/systems/agentic/tokens.css +63 -0
  6. package/dist/designer/data/systems/airbnb/DESIGN.md +393 -0
  7. package/dist/designer/data/systems/airbnb/components.html +1373 -0
  8. package/dist/designer/data/systems/airbnb/tokens.css +261 -0
  9. package/dist/designer/data/systems/airtable/DESIGN.md +92 -0
  10. package/dist/designer/data/systems/airtable/components.html +489 -0
  11. package/dist/designer/data/systems/airtable/tokens.css +261 -0
  12. package/dist/designer/data/systems/ant/DESIGN.md +71 -0
  13. package/dist/designer/data/systems/ant/components.html +154 -0
  14. package/dist/designer/data/systems/ant/tokens.css +63 -0
  15. package/dist/designer/data/systems/apple/DESIGN.md +250 -0
  16. package/dist/designer/data/systems/apple/components.html +749 -0
  17. package/dist/designer/data/systems/apple/tokens.css +286 -0
  18. package/dist/designer/data/systems/application/DESIGN.md +71 -0
  19. package/dist/designer/data/systems/application/components.html +154 -0
  20. package/dist/designer/data/systems/application/tokens.css +63 -0
  21. package/dist/designer/data/systems/arc/DESIGN.md +152 -0
  22. package/dist/designer/data/systems/arc/components.html +432 -0
  23. package/dist/designer/data/systems/arc/tokens.css +137 -0
  24. package/dist/designer/data/systems/artistic/DESIGN.md +71 -0
  25. package/dist/designer/data/systems/artistic/components.html +136 -0
  26. package/dist/designer/data/systems/artistic/tokens.css +63 -0
  27. package/dist/designer/data/systems/atelier-zero/DESIGN.md +316 -0
  28. package/dist/designer/data/systems/atelier-zero/components.html +136 -0
  29. package/dist/designer/data/systems/atelier-zero/tokens.css +63 -0
  30. package/dist/designer/data/systems/bento/DESIGN.md +71 -0
  31. package/dist/designer/data/systems/bento/components.html +136 -0
  32. package/dist/designer/data/systems/bento/tokens.css +63 -0
  33. package/dist/designer/data/systems/binance/DESIGN.md +348 -0
  34. package/dist/designer/data/systems/binance/components.html +550 -0
  35. package/dist/designer/data/systems/binance/tokens.css +255 -0
  36. package/dist/designer/data/systems/bmw/DESIGN.md +183 -0
  37. package/dist/designer/data/systems/bmw/components.html +551 -0
  38. package/dist/designer/data/systems/bmw/tokens.css +179 -0
  39. package/dist/designer/data/systems/bmw-m/DESIGN.md +246 -0
  40. package/dist/designer/data/systems/bmw-m/components.html +342 -0
  41. package/dist/designer/data/systems/bmw-m/tokens.css +64 -0
  42. package/dist/designer/data/systems/bold/DESIGN.md +71 -0
  43. package/dist/designer/data/systems/bold/components.html +136 -0
  44. package/dist/designer/data/systems/bold/tokens.css +63 -0
  45. package/dist/designer/data/systems/brutalism/DESIGN.md +71 -0
  46. package/dist/designer/data/systems/brutalism/components.html +154 -0
  47. package/dist/designer/data/systems/brutalism/tokens.css +63 -0
  48. package/dist/designer/data/systems/bugatti/DESIGN.md +271 -0
  49. package/dist/designer/data/systems/bugatti/components.html +342 -0
  50. package/dist/designer/data/systems/bugatti/tokens.css +64 -0
  51. package/dist/designer/data/systems/cafe/DESIGN.md +71 -0
  52. package/dist/designer/data/systems/cafe/components.html +136 -0
  53. package/dist/designer/data/systems/cafe/tokens.css +63 -0
  54. package/dist/designer/data/systems/cal/DESIGN.md +262 -0
  55. package/dist/designer/data/systems/cal/components.html +376 -0
  56. package/dist/designer/data/systems/cal/tokens.css +265 -0
  57. package/dist/designer/data/systems/canva/DESIGN.md +157 -0
  58. package/dist/designer/data/systems/canva/components.html +461 -0
  59. package/dist/designer/data/systems/canva/tokens.css +147 -0
  60. package/dist/designer/data/systems/cisco/DESIGN.md +201 -0
  61. package/dist/designer/data/systems/cisco/components.html +342 -0
  62. package/dist/designer/data/systems/cisco/tokens.css +64 -0
  63. package/dist/designer/data/systems/claude/DESIGN.md +315 -0
  64. package/dist/designer/data/systems/claude/components.html +483 -0
  65. package/dist/designer/data/systems/claude/tokens.css +130 -0
  66. package/dist/designer/data/systems/clay/DESIGN.md +307 -0
  67. package/dist/designer/data/systems/clay/components.html +136 -0
  68. package/dist/designer/data/systems/clay/tokens.css +63 -0
  69. package/dist/designer/data/systems/claymorphism/DESIGN.md +71 -0
  70. package/dist/designer/data/systems/claymorphism/components.html +136 -0
  71. package/dist/designer/data/systems/claymorphism/tokens.css +63 -0
  72. package/dist/designer/data/systems/clean/DESIGN.md +71 -0
  73. package/dist/designer/data/systems/clean/components.html +136 -0
  74. package/dist/designer/data/systems/clean/tokens.css +63 -0
  75. package/dist/designer/data/systems/clickhouse/DESIGN.md +284 -0
  76. package/dist/designer/data/systems/clickhouse/components.html +506 -0
  77. package/dist/designer/data/systems/clickhouse/tokens.css +135 -0
  78. package/dist/designer/data/systems/cohere/DESIGN.md +269 -0
  79. package/dist/designer/data/systems/cohere/components.html +353 -0
  80. package/dist/designer/data/systems/cohere/tokens.css +126 -0
  81. package/dist/designer/data/systems/coinbase/DESIGN.md +132 -0
  82. package/dist/designer/data/systems/coinbase/components.html +501 -0
  83. package/dist/designer/data/systems/coinbase/tokens.css +257 -0
  84. package/dist/designer/data/systems/colorful/DESIGN.md +71 -0
  85. package/dist/designer/data/systems/colorful/components.html +136 -0
  86. package/dist/designer/data/systems/colorful/tokens.css +63 -0
  87. package/dist/designer/data/systems/composio/DESIGN.md +310 -0
  88. package/dist/designer/data/systems/composio/components.html +342 -0
  89. package/dist/designer/data/systems/composio/tokens.css +64 -0
  90. package/dist/designer/data/systems/contemporary/DESIGN.md +71 -0
  91. package/dist/designer/data/systems/contemporary/components.html +136 -0
  92. package/dist/designer/data/systems/contemporary/tokens.css +63 -0
  93. package/dist/designer/data/systems/corporate/DESIGN.md +71 -0
  94. package/dist/designer/data/systems/corporate/components.html +136 -0
  95. package/dist/designer/data/systems/corporate/tokens.css +63 -0
  96. package/dist/designer/data/systems/cosmic/DESIGN.md +71 -0
  97. package/dist/designer/data/systems/cosmic/components.html +136 -0
  98. package/dist/designer/data/systems/cosmic/tokens.css +63 -0
  99. package/dist/designer/data/systems/creative/DESIGN.md +71 -0
  100. package/dist/designer/data/systems/creative/components.html +136 -0
  101. package/dist/designer/data/systems/creative/tokens.css +63 -0
  102. package/dist/designer/data/systems/cursor/DESIGN.md +312 -0
  103. package/dist/designer/data/systems/cursor/components.html +654 -0
  104. package/dist/designer/data/systems/cursor/tokens.css +218 -0
  105. package/dist/designer/data/systems/dashboard/DESIGN.md +71 -0
  106. package/dist/designer/data/systems/dashboard/components.html +154 -0
  107. package/dist/designer/data/systems/dashboard/tokens.css +63 -0
  108. package/dist/designer/data/systems/default/DESIGN.md +62 -0
  109. package/dist/designer/data/systems/default/components.html +523 -0
  110. package/dist/designer/data/systems/default/tokens.css +200 -0
  111. package/dist/designer/data/systems/discord/DESIGN.md +162 -0
  112. package/dist/designer/data/systems/discord/components.html +359 -0
  113. package/dist/designer/data/systems/discord/tokens.css +125 -0
  114. package/dist/designer/data/systems/dithered/DESIGN.md +71 -0
  115. package/dist/designer/data/systems/dithered/components.html +136 -0
  116. package/dist/designer/data/systems/dithered/tokens.css +63 -0
  117. package/dist/designer/data/systems/doodle/DESIGN.md +71 -0
  118. package/dist/designer/data/systems/doodle/components.html +136 -0
  119. package/dist/designer/data/systems/doodle/tokens.css +63 -0
  120. package/dist/designer/data/systems/dramatic/DESIGN.md +71 -0
  121. package/dist/designer/data/systems/dramatic/components.html +136 -0
  122. package/dist/designer/data/systems/dramatic/tokens.css +63 -0
  123. package/dist/designer/data/systems/duolingo/DESIGN.md +154 -0
  124. package/dist/designer/data/systems/duolingo/components.html +532 -0
  125. package/dist/designer/data/systems/duolingo/tokens.css +130 -0
  126. package/dist/designer/data/systems/editorial/DESIGN.md +71 -0
  127. package/dist/designer/data/systems/editorial/components.html +154 -0
  128. package/dist/designer/data/systems/editorial/tokens.css +63 -0
  129. package/dist/designer/data/systems/elegant/DESIGN.md +71 -0
  130. package/dist/designer/data/systems/elegant/components.html +136 -0
  131. package/dist/designer/data/systems/elegant/tokens.css +63 -0
  132. package/dist/designer/data/systems/elevenlabs/DESIGN.md +268 -0
  133. package/dist/designer/data/systems/elevenlabs/components.html +342 -0
  134. package/dist/designer/data/systems/elevenlabs/tokens.css +127 -0
  135. package/dist/designer/data/systems/energetic/DESIGN.md +72 -0
  136. package/dist/designer/data/systems/energetic/components.html +136 -0
  137. package/dist/designer/data/systems/energetic/tokens.css +63 -0
  138. package/dist/designer/data/systems/enterprise/DESIGN.md +71 -0
  139. package/dist/designer/data/systems/enterprise/components.html +154 -0
  140. package/dist/designer/data/systems/enterprise/tokens.css +63 -0
  141. package/dist/designer/data/systems/expo/DESIGN.md +284 -0
  142. package/dist/designer/data/systems/expo/components.html +342 -0
  143. package/dist/designer/data/systems/expo/tokens.css +64 -0
  144. package/dist/designer/data/systems/expressive/DESIGN.md +71 -0
  145. package/dist/designer/data/systems/expressive/components.html +136 -0
  146. package/dist/designer/data/systems/expressive/tokens.css +63 -0
  147. package/dist/designer/data/systems/fantasy/DESIGN.md +71 -0
  148. package/dist/designer/data/systems/fantasy/components.html +136 -0
  149. package/dist/designer/data/systems/fantasy/tokens.css +63 -0
  150. package/dist/designer/data/systems/ferrari/DESIGN.md +317 -0
  151. package/dist/designer/data/systems/ferrari/components.html +342 -0
  152. package/dist/designer/data/systems/ferrari/tokens.css +64 -0
  153. package/dist/designer/data/systems/figma/DESIGN.md +223 -0
  154. package/dist/designer/data/systems/figma/components.html +344 -0
  155. package/dist/designer/data/systems/figma/tokens.css +126 -0
  156. package/dist/designer/data/systems/flat/DESIGN.md +71 -0
  157. package/dist/designer/data/systems/flat/components.html +136 -0
  158. package/dist/designer/data/systems/flat/tokens.css +63 -0
  159. package/dist/designer/data/systems/framer/DESIGN.md +249 -0
  160. package/dist/designer/data/systems/framer/components.html +438 -0
  161. package/dist/designer/data/systems/framer/tokens.css +238 -0
  162. package/dist/designer/data/systems/friendly/DESIGN.md +71 -0
  163. package/dist/designer/data/systems/friendly/components.html +136 -0
  164. package/dist/designer/data/systems/friendly/tokens.css +63 -0
  165. package/dist/designer/data/systems/futuristic/DESIGN.md +71 -0
  166. package/dist/designer/data/systems/futuristic/components.html +136 -0
  167. package/dist/designer/data/systems/futuristic/tokens.css +63 -0
  168. package/dist/designer/data/systems/github/DESIGN.md +155 -0
  169. package/dist/designer/data/systems/github/components.html +383 -0
  170. package/dist/designer/data/systems/github/tokens.css +125 -0
  171. package/dist/designer/data/systems/glassmorphism/DESIGN.md +71 -0
  172. package/dist/designer/data/systems/glassmorphism/components.html +154 -0
  173. package/dist/designer/data/systems/glassmorphism/tokens.css +63 -0
  174. package/dist/designer/data/systems/gradient/DESIGN.md +71 -0
  175. package/dist/designer/data/systems/gradient/components.html +154 -0
  176. package/dist/designer/data/systems/gradient/tokens.css +63 -0
  177. package/dist/designer/data/systems/hashicorp/DESIGN.md +281 -0
  178. package/dist/designer/data/systems/hashicorp/components.html +502 -0
  179. package/dist/designer/data/systems/hashicorp/tokens.css +272 -0
  180. package/dist/designer/data/systems/hud/DESIGN.md +173 -0
  181. package/dist/designer/data/systems/hud/components.html +136 -0
  182. package/dist/designer/data/systems/hud/tokens.css +63 -0
  183. package/dist/designer/data/systems/huggingface/DESIGN.md +149 -0
  184. package/dist/designer/data/systems/huggingface/components.html +346 -0
  185. package/dist/designer/data/systems/huggingface/tokens.css +125 -0
  186. package/dist/designer/data/systems/ibm/DESIGN.md +335 -0
  187. package/dist/designer/data/systems/ibm/components.html +342 -0
  188. package/dist/designer/data/systems/ibm/tokens.css +64 -0
  189. package/dist/designer/data/systems/intercom/DESIGN.md +149 -0
  190. package/dist/designer/data/systems/intercom/components.html +557 -0
  191. package/dist/designer/data/systems/intercom/tokens.css +150 -0
  192. package/dist/designer/data/systems/kami/DESIGN.md +410 -0
  193. package/dist/designer/data/systems/kami/components.html +601 -0
  194. package/dist/designer/data/systems/kami/tokens.css +272 -0
  195. package/dist/designer/data/systems/kraken/DESIGN.md +128 -0
  196. package/dist/designer/data/systems/kraken/components.html +342 -0
  197. package/dist/designer/data/systems/kraken/tokens.css +64 -0
  198. package/dist/designer/data/systems/lamborghini/DESIGN.md +291 -0
  199. package/dist/designer/data/systems/lamborghini/components.html +342 -0
  200. package/dist/designer/data/systems/lamborghini/tokens.css +64 -0
  201. package/dist/designer/data/systems/levels/DESIGN.md +71 -0
  202. package/dist/designer/data/systems/levels/components.html +154 -0
  203. package/dist/designer/data/systems/levels/tokens.css +63 -0
  204. package/dist/designer/data/systems/linear-app/DESIGN.md +370 -0
  205. package/dist/designer/data/systems/linear-app/components.html +370 -0
  206. package/dist/designer/data/systems/linear-app/tokens.css +130 -0
  207. package/dist/designer/data/systems/lingo/DESIGN.md +71 -0
  208. package/dist/designer/data/systems/lingo/components.html +154 -0
  209. package/dist/designer/data/systems/lingo/tokens.css +63 -0
  210. package/dist/designer/data/systems/loom/DESIGN.md +201 -0
  211. package/dist/designer/data/systems/loom/components.html +446 -0
  212. package/dist/designer/data/systems/loom/tokens.css +138 -0
  213. package/dist/designer/data/systems/lovable/DESIGN.md +301 -0
  214. package/dist/designer/data/systems/lovable/components.html +441 -0
  215. package/dist/designer/data/systems/lovable/tokens.css +258 -0
  216. package/dist/designer/data/systems/luxury/DESIGN.md +71 -0
  217. package/dist/designer/data/systems/luxury/components.html +154 -0
  218. package/dist/designer/data/systems/luxury/tokens.css +63 -0
  219. package/dist/designer/data/systems/mastercard/DESIGN.md +368 -0
  220. package/dist/designer/data/systems/mastercard/components.html +342 -0
  221. package/dist/designer/data/systems/mastercard/tokens.css +64 -0
  222. package/dist/designer/data/systems/material/DESIGN.md +71 -0
  223. package/dist/designer/data/systems/material/components.html +154 -0
  224. package/dist/designer/data/systems/material/tokens.css +63 -0
  225. package/dist/designer/data/systems/meta/DESIGN.md +369 -0
  226. package/dist/designer/data/systems/meta/components.html +398 -0
  227. package/dist/designer/data/systems/meta/tokens.css +263 -0
  228. package/dist/designer/data/systems/minimal/DESIGN.md +71 -0
  229. package/dist/designer/data/systems/minimal/components.html +154 -0
  230. package/dist/designer/data/systems/minimal/tokens.css +63 -0
  231. package/dist/designer/data/systems/minimax/DESIGN.md +260 -0
  232. package/dist/designer/data/systems/minimax/components.html +590 -0
  233. package/dist/designer/data/systems/minimax/tokens.css +148 -0
  234. package/dist/designer/data/systems/mintlify/DESIGN.md +329 -0
  235. package/dist/designer/data/systems/mintlify/components.html +737 -0
  236. package/dist/designer/data/systems/mintlify/tokens.css +256 -0
  237. package/dist/designer/data/systems/miro/DESIGN.md +111 -0
  238. package/dist/designer/data/systems/miro/components.html +342 -0
  239. package/dist/designer/data/systems/miro/tokens.css +64 -0
  240. package/dist/designer/data/systems/mission-control/DESIGN.md +474 -0
  241. package/dist/designer/data/systems/mission-control/components.html +136 -0
  242. package/dist/designer/data/systems/mission-control/tokens.css +63 -0
  243. package/dist/designer/data/systems/mistral-ai/DESIGN.md +264 -0
  244. package/dist/designer/data/systems/mistral-ai/components.html +338 -0
  245. package/dist/designer/data/systems/mistral-ai/tokens.css +125 -0
  246. package/dist/designer/data/systems/modern/DESIGN.md +71 -0
  247. package/dist/designer/data/systems/modern/components.html +154 -0
  248. package/dist/designer/data/systems/modern/tokens.css +63 -0
  249. package/dist/designer/data/systems/mongodb/DESIGN.md +269 -0
  250. package/dist/designer/data/systems/mongodb/components.html +462 -0
  251. package/dist/designer/data/systems/mongodb/tokens.css +176 -0
  252. package/dist/designer/data/systems/mono/DESIGN.md +71 -0
  253. package/dist/designer/data/systems/mono/components.html +136 -0
  254. package/dist/designer/data/systems/mono/tokens.css +63 -0
  255. package/dist/designer/data/systems/neobrutalism/DESIGN.md +71 -0
  256. package/dist/designer/data/systems/neobrutalism/components.html +136 -0
  257. package/dist/designer/data/systems/neobrutalism/tokens.css +63 -0
  258. package/dist/designer/data/systems/neon/DESIGN.md +71 -0
  259. package/dist/designer/data/systems/neon/components.html +136 -0
  260. package/dist/designer/data/systems/neon/tokens.css +63 -0
  261. package/dist/designer/data/systems/neumorphism/DESIGN.md +71 -0
  262. package/dist/designer/data/systems/neumorphism/components.html +136 -0
  263. package/dist/designer/data/systems/neumorphism/tokens.css +63 -0
  264. package/dist/designer/data/systems/nike/DESIGN.md +366 -0
  265. package/dist/designer/data/systems/nike/components.html +512 -0
  266. package/dist/designer/data/systems/nike/tokens.css +304 -0
  267. package/dist/designer/data/systems/notion/DESIGN.md +312 -0
  268. package/dist/designer/data/systems/notion/components.html +413 -0
  269. package/dist/designer/data/systems/notion/tokens.css +130 -0
  270. package/dist/designer/data/systems/nvidia/DESIGN.md +296 -0
  271. package/dist/designer/data/systems/nvidia/components.html +414 -0
  272. package/dist/designer/data/systems/nvidia/tokens.css +133 -0
  273. package/dist/designer/data/systems/ollama/DESIGN.md +270 -0
  274. package/dist/designer/data/systems/ollama/components.html +700 -0
  275. package/dist/designer/data/systems/ollama/tokens.css +242 -0
  276. package/dist/designer/data/systems/openai/DESIGN.md +140 -0
  277. package/dist/designer/data/systems/openai/components.html +382 -0
  278. package/dist/designer/data/systems/openai/tokens.css +133 -0
  279. package/dist/designer/data/systems/opencode-ai/DESIGN.md +284 -0
  280. package/dist/designer/data/systems/opencode-ai/components.html +389 -0
  281. package/dist/designer/data/systems/opencode-ai/tokens.css +126 -0
  282. package/dist/designer/data/systems/pacman/DESIGN.md +71 -0
  283. package/dist/designer/data/systems/pacman/components.html +342 -0
  284. package/dist/designer/data/systems/pacman/tokens.css +64 -0
  285. package/dist/designer/data/systems/paper/DESIGN.md +71 -0
  286. package/dist/designer/data/systems/paper/components.html +136 -0
  287. package/dist/designer/data/systems/paper/tokens.css +63 -0
  288. package/dist/designer/data/systems/perplexity/DESIGN.md +286 -0
  289. package/dist/designer/data/systems/perplexity/components.html +455 -0
  290. package/dist/designer/data/systems/perplexity/tokens.css +151 -0
  291. package/dist/designer/data/systems/perspective/DESIGN.md +71 -0
  292. package/dist/designer/data/systems/perspective/components.html +136 -0
  293. package/dist/designer/data/systems/perspective/tokens.css +63 -0
  294. package/dist/designer/data/systems/pinterest/DESIGN.md +233 -0
  295. package/dist/designer/data/systems/pinterest/components.html +865 -0
  296. package/dist/designer/data/systems/pinterest/tokens.css +262 -0
  297. package/dist/designer/data/systems/playstation/DESIGN.md +367 -0
  298. package/dist/designer/data/systems/playstation/components.html +414 -0
  299. package/dist/designer/data/systems/playstation/tokens.css +150 -0
  300. package/dist/designer/data/systems/posthog/DESIGN.md +259 -0
  301. package/dist/designer/data/systems/posthog/components.html +827 -0
  302. package/dist/designer/data/systems/posthog/tokens.css +272 -0
  303. package/dist/designer/data/systems/premium/DESIGN.md +71 -0
  304. package/dist/designer/data/systems/premium/components.html +154 -0
  305. package/dist/designer/data/systems/premium/tokens.css +63 -0
  306. package/dist/designer/data/systems/professional/DESIGN.md +71 -0
  307. package/dist/designer/data/systems/professional/components.html +136 -0
  308. package/dist/designer/data/systems/professional/tokens.css +63 -0
  309. package/dist/designer/data/systems/publication/DESIGN.md +71 -0
  310. package/dist/designer/data/systems/publication/components.html +154 -0
  311. package/dist/designer/data/systems/publication/tokens.css +63 -0
  312. package/dist/designer/data/systems/raycast/DESIGN.md +271 -0
  313. package/dist/designer/data/systems/raycast/components.html +507 -0
  314. package/dist/designer/data/systems/raycast/tokens.css +143 -0
  315. package/dist/designer/data/systems/refined/DESIGN.md +71 -0
  316. package/dist/designer/data/systems/refined/components.html +136 -0
  317. package/dist/designer/data/systems/refined/tokens.css +63 -0
  318. package/dist/designer/data/systems/renault/DESIGN.md +314 -0
  319. package/dist/designer/data/systems/renault/components.html +154 -0
  320. package/dist/designer/data/systems/renault/tokens.css +63 -0
  321. package/dist/designer/data/systems/replicate/DESIGN.md +264 -0
  322. package/dist/designer/data/systems/replicate/components.html +340 -0
  323. package/dist/designer/data/systems/replicate/tokens.css +125 -0
  324. package/dist/designer/data/systems/resend/DESIGN.md +306 -0
  325. package/dist/designer/data/systems/resend/components.html +839 -0
  326. package/dist/designer/data/systems/resend/tokens.css +353 -0
  327. package/dist/designer/data/systems/retro/DESIGN.md +71 -0
  328. package/dist/designer/data/systems/retro/components.html +136 -0
  329. package/dist/designer/data/systems/retro/tokens.css +63 -0
  330. package/dist/designer/data/systems/revolut/DESIGN.md +188 -0
  331. package/dist/designer/data/systems/revolut/components.html +342 -0
  332. package/dist/designer/data/systems/revolut/tokens.css +64 -0
  333. package/dist/designer/data/systems/runwayml/DESIGN.md +247 -0
  334. package/dist/designer/data/systems/runwayml/components.html +638 -0
  335. package/dist/designer/data/systems/runwayml/tokens.css +204 -0
  336. package/dist/designer/data/systems/sanity/DESIGN.md +360 -0
  337. package/dist/designer/data/systems/sanity/components.html +342 -0
  338. package/dist/designer/data/systems/sanity/tokens.css +64 -0
  339. package/dist/designer/data/systems/sentry/DESIGN.md +265 -0
  340. package/dist/designer/data/systems/sentry/components.html +387 -0
  341. package/dist/designer/data/systems/sentry/tokens.css +219 -0
  342. package/dist/designer/data/systems/shadcn/DESIGN.md +71 -0
  343. package/dist/designer/data/systems/shadcn/components.html +732 -0
  344. package/dist/designer/data/systems/shadcn/tokens.css +255 -0
  345. package/dist/designer/data/systems/shopify/DESIGN.md +353 -0
  346. package/dist/designer/data/systems/shopify/components.html +342 -0
  347. package/dist/designer/data/systems/shopify/tokens.css +141 -0
  348. package/dist/designer/data/systems/simple/DESIGN.md +71 -0
  349. package/dist/designer/data/systems/simple/components.html +136 -0
  350. package/dist/designer/data/systems/simple/tokens.css +63 -0
  351. package/dist/designer/data/systems/skeumorphism/DESIGN.md +71 -0
  352. package/dist/designer/data/systems/skeumorphism/components.html +136 -0
  353. package/dist/designer/data/systems/skeumorphism/tokens.css +63 -0
  354. package/dist/designer/data/systems/slack/DESIGN.md +363 -0
  355. package/dist/designer/data/systems/slack/components.html +387 -0
  356. package/dist/designer/data/systems/slack/tokens.css +127 -0
  357. package/dist/designer/data/systems/sleek/DESIGN.md +71 -0
  358. package/dist/designer/data/systems/sleek/components.html +136 -0
  359. package/dist/designer/data/systems/sleek/tokens.css +63 -0
  360. package/dist/designer/data/systems/spacex/DESIGN.md +197 -0
  361. package/dist/designer/data/systems/spacex/components.html +496 -0
  362. package/dist/designer/data/systems/spacex/tokens.css +154 -0
  363. package/dist/designer/data/systems/spacious/DESIGN.md +71 -0
  364. package/dist/designer/data/systems/spacious/components.html +136 -0
  365. package/dist/designer/data/systems/spacious/tokens.css +63 -0
  366. package/dist/designer/data/systems/spotify/DESIGN.md +249 -0
  367. package/dist/designer/data/systems/spotify/components.html +365 -0
  368. package/dist/designer/data/systems/spotify/tokens.css +127 -0
  369. package/dist/designer/data/systems/starbucks/DESIGN.md +583 -0
  370. package/dist/designer/data/systems/starbucks/components.html +493 -0
  371. package/dist/designer/data/systems/starbucks/tokens.css +182 -0
  372. package/dist/designer/data/systems/storytelling/DESIGN.md +71 -0
  373. package/dist/designer/data/systems/storytelling/components.html +136 -0
  374. package/dist/designer/data/systems/storytelling/tokens.css +63 -0
  375. package/dist/designer/data/systems/stripe/DESIGN.md +325 -0
  376. package/dist/designer/data/systems/stripe/components.html +1018 -0
  377. package/dist/designer/data/systems/stripe/tokens.css +295 -0
  378. package/dist/designer/data/systems/supabase/DESIGN.md +258 -0
  379. package/dist/designer/data/systems/supabase/components.html +741 -0
  380. package/dist/designer/data/systems/supabase/tokens.css +294 -0
  381. package/dist/designer/data/systems/superhuman/DESIGN.md +255 -0
  382. package/dist/designer/data/systems/superhuman/components.html +537 -0
  383. package/dist/designer/data/systems/superhuman/tokens.css +160 -0
  384. package/dist/designer/data/systems/tesla/DESIGN.md +289 -0
  385. package/dist/designer/data/systems/tesla/components.html +724 -0
  386. package/dist/designer/data/systems/tesla/tokens.css +285 -0
  387. package/dist/designer/data/systems/tetris/DESIGN.md +71 -0
  388. package/dist/designer/data/systems/tetris/components.html +342 -0
  389. package/dist/designer/data/systems/tetris/tokens.css +64 -0
  390. package/dist/designer/data/systems/theverge/DESIGN.md +342 -0
  391. package/dist/designer/data/systems/theverge/components.html +342 -0
  392. package/dist/designer/data/systems/theverge/tokens.css +64 -0
  393. package/dist/designer/data/systems/together-ai/DESIGN.md +266 -0
  394. package/dist/designer/data/systems/together-ai/components.html +422 -0
  395. package/dist/designer/data/systems/together-ai/tokens.css +127 -0
  396. package/dist/designer/data/systems/totality-festival/DESIGN.md +206 -0
  397. package/dist/designer/data/systems/totality-festival/components.html +136 -0
  398. package/dist/designer/data/systems/totality-festival/tokens.css +63 -0
  399. package/dist/designer/data/systems/trading-terminal/DESIGN.md +178 -0
  400. package/dist/designer/data/systems/trading-terminal/components.html +154 -0
  401. package/dist/designer/data/systems/trading-terminal/tokens.css +63 -0
  402. package/dist/designer/data/systems/uber/DESIGN.md +298 -0
  403. package/dist/designer/data/systems/uber/components.html +347 -0
  404. package/dist/designer/data/systems/uber/tokens.css +131 -0
  405. package/dist/designer/data/systems/urdu/DESIGN.md +1002 -0
  406. package/dist/designer/data/systems/urdu/components.html +136 -0
  407. package/dist/designer/data/systems/urdu/tokens.css +63 -0
  408. package/dist/designer/data/systems/vercel/DESIGN.md +313 -0
  409. package/dist/designer/data/systems/vercel/components.html +839 -0
  410. package/dist/designer/data/systems/vercel/tokens.css +270 -0
  411. package/dist/designer/data/systems/vibrant/DESIGN.md +71 -0
  412. package/dist/designer/data/systems/vibrant/components.html +136 -0
  413. package/dist/designer/data/systems/vibrant/tokens.css +63 -0
  414. package/dist/designer/data/systems/vintage/DESIGN.md +71 -0
  415. package/dist/designer/data/systems/vintage/components.html +136 -0
  416. package/dist/designer/data/systems/vintage/tokens.css +63 -0
  417. package/dist/designer/data/systems/vodafone/DESIGN.md +426 -0
  418. package/dist/designer/data/systems/vodafone/components.html +342 -0
  419. package/dist/designer/data/systems/vodafone/tokens.css +64 -0
  420. package/dist/designer/data/systems/voltagent/DESIGN.md +326 -0
  421. package/dist/designer/data/systems/voltagent/components.html +154 -0
  422. package/dist/designer/data/systems/voltagent/tokens.css +63 -0
  423. package/dist/designer/data/systems/warm-editorial/DESIGN.md +65 -0
  424. package/dist/designer/data/systems/warm-editorial/components.html +136 -0
  425. package/dist/designer/data/systems/warm-editorial/tokens.css +63 -0
  426. package/dist/designer/data/systems/warp/DESIGN.md +256 -0
  427. package/dist/designer/data/systems/warp/components.html +411 -0
  428. package/dist/designer/data/systems/warp/tokens.css +156 -0
  429. package/dist/designer/data/systems/webex/DESIGN.md +207 -0
  430. package/dist/designer/data/systems/webex/components.html +342 -0
  431. package/dist/designer/data/systems/webex/tokens.css +64 -0
  432. package/dist/designer/data/systems/webflow/DESIGN.md +95 -0
  433. package/dist/designer/data/systems/webflow/components.html +413 -0
  434. package/dist/designer/data/systems/webflow/tokens.css +191 -0
  435. package/dist/designer/data/systems/wechat/DESIGN.md +302 -0
  436. package/dist/designer/data/systems/wechat/components.html +507 -0
  437. package/dist/designer/data/systems/wechat/tokens.css +176 -0
  438. package/dist/designer/data/systems/wired/DESIGN.md +281 -0
  439. package/dist/designer/data/systems/wired/components.html +342 -0
  440. package/dist/designer/data/systems/wired/tokens.css +64 -0
  441. package/dist/designer/data/systems/wise/DESIGN.md +176 -0
  442. package/dist/designer/data/systems/wise/components.html +365 -0
  443. package/dist/designer/data/systems/wise/tokens.css +141 -0
  444. package/dist/designer/data/systems/x-ai/DESIGN.md +260 -0
  445. package/dist/designer/data/systems/x-ai/components.html +460 -0
  446. package/dist/designer/data/systems/x-ai/tokens.css +268 -0
  447. package/dist/designer/data/systems/xiaohongshu/DESIGN.md +402 -0
  448. package/dist/designer/data/systems/xiaohongshu/components.html +865 -0
  449. package/dist/designer/data/systems/xiaohongshu/tokens.css +193 -0
  450. package/dist/designer/data/systems/zapier/DESIGN.md +331 -0
  451. package/dist/designer/data/systems/zapier/components.html +342 -0
  452. package/dist/designer/data/systems/zapier/tokens.css +64 -0
  453. package/dist/designer/guidelines.js +176 -0
  454. package/dist/designer/index.js +236 -0
  455. package/dist/designer/skills.js +1675 -0
  456. package/dist/designer/systems.js +216 -0
  457. package/dist/server/pi-bridge.js +155 -5
  458. package/dist/server/session-stream.js +45 -1
  459. package/package.json +1 -1
@@ -0,0 +1,507 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>WeChat 微信 — reference components</title>
7
+ <meta
8
+ name="description"
9
+ content="Reference fixture for design-systems/wechat. Every visible
10
+ value comes from tokens.css. WeChat (微信) signature moves: muted
11
+ #EDEDED chat-list canvas, single decisive WeChat Green
12
+ (#07C160) accent, bilingual CJK-aware typography, modest
13
+ mobile-first type scale, whisper-quiet elevation lifted from
14
+ the incoming chat bubble."
15
+ />
16
+
17
+ <style>
18
+ :root {
19
+ --bg: #ededed;
20
+ --surface: #f7f7f7;
21
+ --surface-warm: var(--surface);
22
+
23
+ --fg: #1a1a1a;
24
+ --fg-2: var(--fg);
25
+ --muted: #888888;
26
+ --meta: var(--muted);
27
+
28
+ --border: #e0e0e0;
29
+ --border-soft: var(--border);
30
+
31
+ --accent: #07c160;
32
+ --accent-on: #ffffff;
33
+ --accent-hover: #10b160;
34
+ --accent-active: #059050;
35
+
36
+ --success: #07c160;
37
+ --warn: #fab702;
38
+ --danger: #fa5151;
39
+
40
+ --font-display: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
41
+ --font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
42
+ --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
43
+
44
+ --text-xs: 11px;
45
+ --text-sm: 13px;
46
+ --text-base: 15px;
47
+ --text-lg: 16px;
48
+ --text-xl: 18px;
49
+ --text-2xl: 24px;
50
+ --text-3xl: 32px;
51
+ --text-4xl: 48px;
52
+
53
+ --leading-body: 1.6;
54
+ --leading-tight: 1.3;
55
+ --tracking-display: -0.01em;
56
+
57
+ --space-1: 4px;
58
+ --space-2: 8px;
59
+ --space-3: 12px;
60
+ --space-4: 16px;
61
+ --space-5: 20px;
62
+ --space-6: 24px;
63
+ --space-8: 32px;
64
+ --space-12: 48px;
65
+
66
+ --section-y-desktop: 72px;
67
+ --section-y-tablet: 48px;
68
+ --section-y-phone: 32px;
69
+
70
+ --radius-sm: 4px;
71
+ --radius-md: 8px;
72
+ --radius-lg: 16px;
73
+ --radius-pill: 9999px;
74
+
75
+ --elev-flat: none;
76
+ --elev-ring: 0 0 0 1px var(--border);
77
+ --elev-raised: 0 1px 2px rgba(0, 0, 0, 0.06);
78
+
79
+ --focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
80
+
81
+ --motion-fast: 100ms;
82
+ --motion-base: 200ms;
83
+ --ease-standard: cubic-bezier(0.25, 0.1, 0.25, 1);
84
+
85
+ --container-max: 1200px;
86
+ --container-gutter-desktop: 24px;
87
+ --container-gutter-tablet: 16px;
88
+ --container-gutter-phone: 16px;
89
+ }
90
+
91
+ /* ─── Reset ─────────────────────────────────────────────── */
92
+ *, *::before, *::after { box-sizing: border-box; }
93
+ html, body { margin: 0; padding: 0; }
94
+ body {
95
+ background: var(--bg);
96
+ color: var(--fg);
97
+ font-family: var(--font-body);
98
+ font-size: var(--text-base);
99
+ line-height: var(--leading-body);
100
+ -webkit-font-smoothing: antialiased;
101
+ -moz-osx-font-smoothing: grayscale;
102
+ }
103
+
104
+ /* ─── Layout ─────────────────────────────────────────────── */
105
+ .container {
106
+ max-width: var(--container-max);
107
+ margin-inline: auto;
108
+ padding-inline: var(--container-gutter-desktop);
109
+ }
110
+ section { padding-block: var(--section-y-desktop); }
111
+ section + section { border-top: 1px solid var(--border); }
112
+ @media (max-width: 1023px) {
113
+ .container { padding-inline: var(--container-gutter-tablet); }
114
+ section { padding-block: var(--section-y-tablet); }
115
+ }
116
+ @media (max-width: 639px) {
117
+ .container { padding-inline: var(--container-gutter-phone); }
118
+ section { padding-block: var(--section-y-phone); }
119
+ }
120
+
121
+ /* ─── Typography — modest, bilingual, mobile-first ──────── */
122
+ h1, h2, h3 {
123
+ font-family: var(--font-display);
124
+ line-height: var(--leading-tight);
125
+ margin: 0;
126
+ color: var(--fg);
127
+ }
128
+ h1 {
129
+ font-size: var(--text-4xl);
130
+ letter-spacing: var(--tracking-display);
131
+ font-weight: 600;
132
+ }
133
+ h2 {
134
+ font-size: var(--text-3xl);
135
+ letter-spacing: var(--tracking-display);
136
+ font-weight: 600;
137
+ }
138
+ h3 {
139
+ font-size: var(--text-xl);
140
+ font-weight: 600;
141
+ }
142
+ p { margin: 0; }
143
+ .lead {
144
+ font-size: var(--text-lg);
145
+ color: var(--muted);
146
+ line-height: var(--leading-body);
147
+ }
148
+ .body-muted { color: var(--muted); }
149
+ .body-sm { font-size: var(--text-sm); }
150
+ .body-xs { font-size: var(--text-xs); color: var(--meta); }
151
+ .eyebrow {
152
+ font-size: var(--text-xs);
153
+ color: var(--muted);
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.08em;
156
+ font-weight: 500;
157
+ }
158
+ .stack-2 > * + * { margin-block-start: var(--space-2); }
159
+ .stack-3 > * + * { margin-block-start: var(--space-3); }
160
+ .stack-4 > * + * { margin-block-start: var(--space-4); }
161
+ .stack-6 > * + * { margin-block-start: var(--space-6); }
162
+
163
+ /* ─── Buttons — green is the load-bearing colour ───────── */
164
+ .btn {
165
+ display: inline-flex;
166
+ align-items: center;
167
+ gap: var(--space-2);
168
+ padding: 10px var(--space-6);
169
+ border-radius: var(--radius-md);
170
+ font-family: var(--font-body);
171
+ font-size: var(--text-lg);
172
+ font-weight: 500;
173
+ line-height: 1;
174
+ cursor: pointer;
175
+ border: none;
176
+ transition: background-color var(--motion-fast) var(--ease-standard),
177
+ color var(--motion-fast) var(--ease-standard);
178
+ text-decoration: none;
179
+ }
180
+ .btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
181
+ .btn-primary {
182
+ background: var(--accent);
183
+ color: var(--accent-on);
184
+ }
185
+ .btn-primary:hover { background: var(--accent-hover); }
186
+ .btn-primary:active { background: var(--accent-active); }
187
+ .btn-secondary {
188
+ background: var(--surface);
189
+ color: var(--fg);
190
+ border: 1px solid var(--border);
191
+ }
192
+ .btn-secondary:hover { background: color-mix(in oklab, var(--surface), var(--fg) 4%); }
193
+
194
+ /* ─── Inputs — light surface, green focus ──────────────── */
195
+ .field { display: flex; flex-direction: column; gap: var(--space-2); }
196
+ .field label {
197
+ font-size: var(--text-sm);
198
+ font-weight: 500;
199
+ color: var(--fg);
200
+ }
201
+ .field input {
202
+ padding: 10px var(--space-3);
203
+ border-radius: var(--radius-md);
204
+ border: 1px solid var(--border);
205
+ background: var(--surface);
206
+ color: var(--fg);
207
+ font-family: var(--font-body);
208
+ font-size: var(--text-base);
209
+ outline: none;
210
+ transition: border-color var(--motion-fast) var(--ease-standard),
211
+ box-shadow var(--motion-fast) var(--ease-standard);
212
+ }
213
+ .field input:focus-visible {
214
+ border-color: var(--accent);
215
+ box-shadow: var(--focus-ring);
216
+ }
217
+ .field input::placeholder { color: var(--muted); }
218
+ .field-help { font-size: var(--text-xs); color: var(--meta); }
219
+
220
+ /* ─── Cards — flat surface, hairline border ────────────── */
221
+ .card {
222
+ background: var(--surface);
223
+ border-radius: var(--radius-lg);
224
+ padding: var(--space-6);
225
+ display: flex;
226
+ flex-direction: column;
227
+ gap: var(--space-3);
228
+ box-shadow: var(--elev-raised);
229
+ border: 1px solid var(--border-soft);
230
+ }
231
+ .card h3 { line-height: var(--leading-tight); }
232
+
233
+ /* ─── Badges ────────────────────────────────────────────── */
234
+ .badge {
235
+ display: inline-flex; align-items: center; gap: var(--space-2);
236
+ padding: 3px var(--space-2);
237
+ border-radius: var(--radius-pill);
238
+ font-size: var(--text-xs);
239
+ font-weight: 500;
240
+ line-height: 1.6;
241
+ }
242
+ .badge-success {
243
+ color: var(--accent-on);
244
+ background: var(--success);
245
+ }
246
+ .badge-muted {
247
+ color: var(--muted);
248
+ background: color-mix(in oklab, var(--muted), transparent 88%);
249
+ }
250
+ .badge-dot { width: 6px; height: 6px; border-radius: var(--radius-pill); background: currentColor; }
251
+
252
+ /* ─── Links ─────────────────────────────────────────────── */
253
+ a { color: var(--accent); text-decoration: none; }
254
+ a:hover { text-decoration: underline; text-underline-offset: 3px; }
255
+ kbd {
256
+ font-family: var(--font-mono); font-size: var(--text-xs);
257
+ padding: 2px 6px; border-radius: var(--radius-sm);
258
+ border: 1px solid var(--border); background: var(--surface); color: var(--muted);
259
+ }
260
+
261
+ /* ─── Hero — chat-bubble preview anchored on the right ── */
262
+ .hero-grid {
263
+ display: grid;
264
+ grid-template-columns: 1.3fr 1fr;
265
+ gap: var(--space-12);
266
+ align-items: center;
267
+ }
268
+ @media (max-width: 1023px) {
269
+ .hero-grid { grid-template-columns: 1fr; gap: var(--space-8); }
270
+ }
271
+ .hero-actions {
272
+ display: flex; gap: var(--space-3);
273
+ margin-block-start: var(--space-6);
274
+ flex-wrap: wrap;
275
+ }
276
+ .hero-meta {
277
+ display: flex; flex-direction: column; gap: var(--space-3);
278
+ padding: var(--space-4) var(--space-5);
279
+ border: 1px solid var(--border);
280
+ border-radius: var(--radius-md);
281
+ background: var(--surface);
282
+ }
283
+
284
+ /* Chat-bubble illustration — DESIGN.md §Components ───────
285
+ * Bubble fills (#95EC69 outgoing, #FFFFFF incoming) are
286
+ * brand-specific C-extensions and therefore stay inline as
287
+ * one-off literals; they are not promoted to tokens. */
288
+ .chat-frame {
289
+ display: flex; flex-direction: column;
290
+ gap: var(--space-2);
291
+ padding: var(--space-5);
292
+ background: var(--bg);
293
+ border: 1px solid var(--border);
294
+ border-radius: var(--radius-lg);
295
+ }
296
+ .chat-row {
297
+ display: flex; align-items: flex-end; gap: var(--space-2);
298
+ max-width: 100%;
299
+ }
300
+ .chat-row.self { justify-content: flex-end; }
301
+ .chat-avatar {
302
+ width: 32px; height: 32px;
303
+ border-radius: var(--radius-pill);
304
+ background: var(--border);
305
+ flex-shrink: 0;
306
+ }
307
+ .bubble {
308
+ max-width: 78%;
309
+ padding: 10px var(--space-3);
310
+ border-radius: var(--radius-lg);
311
+ font-size: var(--text-base);
312
+ line-height: var(--leading-body);
313
+ color: var(--fg);
314
+ }
315
+ .bubble.self {
316
+ background: #95EC69;
317
+ border-top-right-radius: var(--radius-sm);
318
+ }
319
+ .bubble.other {
320
+ background: #ffffff;
321
+ border-top-left-radius: var(--radius-sm);
322
+ box-shadow: var(--elev-raised);
323
+ }
324
+ .timestamp {
325
+ align-self: center;
326
+ padding: var(--space-1) var(--space-2);
327
+ border-radius: var(--radius-sm);
328
+ background: color-mix(in oklab, var(--fg), transparent 92%);
329
+ font-size: var(--text-xs);
330
+ color: var(--muted);
331
+ }
332
+
333
+ /* ─── Features grid — three mini-program style cards ───── */
334
+ .features-grid {
335
+ display: grid;
336
+ grid-template-columns: repeat(3, 1fr);
337
+ gap: var(--space-5);
338
+ }
339
+ @media (max-width: 1023px) { .features-grid { grid-template-columns: 1fr 1fr; } }
340
+ @media (max-width: 639px) { .features-grid { grid-template-columns: 1fr; } }
341
+ .card-icon {
342
+ width: 40px; height: 40px;
343
+ border-radius: var(--radius-md);
344
+ background: color-mix(in oklab, var(--accent), transparent 86%);
345
+ color: var(--accent);
346
+ display: inline-flex; align-items: center; justify-content: center;
347
+ }
348
+ .card-icon svg { width: 22px; height: 22px; }
349
+
350
+ /* ─── Form row ─────────────────────────────────────────── */
351
+ .form-row {
352
+ display: grid;
353
+ grid-template-columns: 1.3fr 1fr;
354
+ gap: var(--space-12);
355
+ align-items: start;
356
+ }
357
+ @media (max-width: 1023px) { .form-row { grid-template-columns: 1fr; } }
358
+ .form { display: flex; flex-direction: column; gap: var(--space-4); max-width: 420px; }
359
+ .form-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-2); }
360
+ .icon { width: 16px; height: 16px; flex-shrink: 0; }
361
+ .row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
362
+ </style>
363
+ </head>
364
+ <body>
365
+ <main class="container">
366
+ <section data-od-id="hero">
367
+ <div class="hero-grid">
368
+ <div class="stack-4">
369
+ <p class="eyebrow">Reference fixture · wechat · 微信</p>
370
+ <h1>微信,是一个生活方式。</h1>
371
+ <p class="lead" style="max-width: 56ch">
372
+ WeChat — a way of life. From messages and Moments to Mini Programs,
373
+ payments, and official accounts, one app holds the whole day.
374
+ 所有功能,皆在微信。
375
+ </p>
376
+ <div class="hero-actions">
377
+ <a href="./tokens.css" class="btn btn-primary">
378
+ 立即体验
379
+ <svg class="icon" viewBox="0 0 24 24" fill="none"
380
+ stroke="currentColor" stroke-width="2"
381
+ stroke-linecap="round" stroke-linejoin="round"
382
+ aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
383
+ </a>
384
+ <a href="./DESIGN.md" class="btn btn-secondary">了解更多 · Learn more</a>
385
+ </div>
386
+ </div>
387
+ <aside class="chat-frame" aria-label="Chat preview · 聊天预览">
388
+ <span class="timestamp"><time datetime="2026-05-18T14:08">下午 2:08</time></span>
389
+ <div class="chat-row">
390
+ <span class="chat-avatar" aria-hidden="true"></span>
391
+ <div class="bubble other">在吗?周末出来喝杯咖啡?</div>
392
+ </div>
393
+ <div class="chat-row self">
394
+ <div class="bubble self">好呀!老地方见 ☕</div>
395
+ </div>
396
+ <div class="chat-row">
397
+ <span class="chat-avatar" aria-hidden="true"></span>
398
+ <div class="bubble other">See you Saturday — I'll send the location.</div>
399
+ </div>
400
+ </aside>
401
+ </div>
402
+ </section>
403
+
404
+ <section data-od-id="features">
405
+ <div class="stack-3">
406
+ <p class="eyebrow">What this fixture exercises · 本示例所演示</p>
407
+ <h2 style="max-width: 24ch">日常的连接,安静地发生。</h2>
408
+ <p class="lead" style="max-width: 56ch">
409
+ Everyday connection, quietly delivered — chat, pay, scan, share.
410
+ Green is the only colour that raises its voice.
411
+ </p>
412
+ </div>
413
+ <div class="features-grid" style="margin-block-start: var(--space-8)">
414
+ <article class="card">
415
+ <span class="card-icon" aria-hidden="true">
416
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
417
+ stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
418
+ <path d="M21 12a8 8 0 0 1-11.7 7.1L4 21l1.9-5.3A8 8 0 1 1 21 12z"/>
419
+ </svg>
420
+ </span>
421
+ <h3>聊天 · Chat</h3>
422
+ <p class="body-muted body-sm">
423
+ 15px 正文配 1.6 行高,#95EC69 outgoing bubbles, #FFFFFF
424
+ incoming — the colour pair every WeChat user knows by heart.
425
+ </p>
426
+ <a href="./DESIGN.md" class="body-sm">查看气泡规范 →</a>
427
+ </article>
428
+ <article class="card">
429
+ <span class="card-icon" aria-hidden="true">
430
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
431
+ stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
432
+ <rect x="3" y="3" width="7" height="7" rx="1.5"/>
433
+ <rect x="14" y="3" width="7" height="7" rx="1.5"/>
434
+ <rect x="3" y="14" width="7" height="7" rx="1.5"/>
435
+ <path d="M14 14h3M14 17h7M17 21v-7"/>
436
+ </svg>
437
+ </span>
438
+ <h3>小程序 · Mini Programs</h3>
439
+ <p class="body-muted body-sm">
440
+ 卡片以 16px 圆角浮于灰底之上,hairline border 替代厚阴影 —
441
+ cards float on the chat-list gray with whisper-quiet elevation.
442
+ </p>
443
+ <a href="./tokens.css" class="body-sm">Inspect radius →</a>
444
+ </article>
445
+ <article class="card">
446
+ <span class="card-icon" aria-hidden="true">
447
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
448
+ stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
449
+ <rect x="4" y="6" width="16" height="12" rx="2"/>
450
+ <path d="M4 10h16M8 14h3"/>
451
+ </svg>
452
+ </span>
453
+ <h3>支付 · WeChat Pay</h3>
454
+ <p class="body-muted body-sm">
455
+ #07C160 是“完成”的颜色 — green doubles as success because in
456
+ WeChat green is paid, done, delivered, confirmed.
457
+ </p>
458
+ <a href="./tokens.css" class="body-sm">Inspect accent →</a>
459
+ </article>
460
+ </div>
461
+ </section>
462
+
463
+ <section data-od-id="form">
464
+ <div class="form-row">
465
+ <div class="stack-4">
466
+ <p class="eyebrow">Form components · 表单组件</p>
467
+ <h2>用微信号登录。</h2>
468
+ <p class="body-muted" style="max-width: 48ch">
469
+ Sign in with your WeChat ID. Inputs sit on the surface tier,
470
+ focus rings inherit the brand green — no cool grays, no
471
+ competing accents. 简单、安静、熟悉。
472
+ </p>
473
+ <div class="hero-meta" role="status" aria-label="Service status · 服务状态">
474
+ <div class="row-between">
475
+ <span class="body-sm">服务状态 · Service</span>
476
+ <span class="badge badge-success">
477
+ <span class="badge-dot" aria-hidden="true"></span>
478
+ 正常 Operational
479
+ </span>
480
+ </div>
481
+ <p class="body-xs">
482
+ Last reviewed <time datetime="2026-05-18">2026-05-18</time> ·
483
+ Press <kbd>⌘</kbd> <kbd>K</kbd> to search tokens.
484
+ </p>
485
+ </div>
486
+ </div>
487
+ <form class="form" onsubmit="event.preventDefault();">
488
+ <div class="field">
489
+ <label for="wxid">微信号 · WeChat ID</label>
490
+ <input id="wxid" type="text" placeholder="wxid_xxxxxxxx" autocomplete="username" required />
491
+ <p class="field-help">仅用于身份验证 — used for sign-in only.</p>
492
+ </div>
493
+ <div class="field">
494
+ <label for="phone">手机号 · Mobile</label>
495
+ <input id="phone" type="tel" placeholder="+86 138 0000 0000" autocomplete="tel" />
496
+ <p class="field-help">We'll send a verification code · 我们会发送验证码。</p>
497
+ </div>
498
+ <div class="form-actions">
499
+ <button type="submit" class="btn btn-primary">登录 · Sign in</button>
500
+ <button type="button" class="btn btn-secondary">扫码登录</button>
501
+ </div>
502
+ </form>
503
+ </div>
504
+ </section>
505
+ </main>
506
+ </body>
507
+ </html>
@@ -0,0 +1,176 @@
1
+ /* ─────────────────────────────────────────────────────────────────────────
2
+ * design-systems/wechat/tokens.css
3
+ *
4
+ * Structured token bindings for "WeChat" (微信) — Tencent's all-in-one
5
+ * social, payment, and mini-program super-app. The visual language is
6
+ * a quiet, light-friendly consumer canvas built around one decisive
7
+ * signal: WeChat Green (#07C160). Everything else recedes so green
8
+ * carries the brand — CTAs, success states, active tab, focus ring.
9
+ * Bilingual CJK-aware typography (PingFang SC, Hiragino Sans GB,
10
+ * Microsoft YaHei, Noto Sans SC) keeps English and 中文 on the same
11
+ * vertical rhythm so chat rows, page titles, and mini-program cards
12
+ * align in either script without per-language overrides.
13
+ *
14
+ * Brand identity in three sentences:
15
+ * 1. The canvas is the muted #EDEDED chat-list gray, not pure white —
16
+ * this is the colour every WeChat user has stared at for a decade.
17
+ * Surfaces (#F7F7F7) lift one tone above it. Pure white belongs to
18
+ * incoming chat bubbles, not pages.
19
+ * 2. Brand green #07C160 is the only accent. Hover (#10B160) and
20
+ * pressed (#059050) come straight from the platform spec; the same
21
+ * green doubles as the success state because in WeChat green *is*
22
+ * "good / done / sent / paid".
23
+ * 3. Type is mobile-first and dense: 15px body at 1.6 line-height,
24
+ * 18px page titles, 11px timestamps. The display ladder (24 → 32
25
+ * → 48px) is deliberately modest — WeChat's marketing voice
26
+ * ("微信,是一个生活方式") is understated, not billboard-loud.
27
+ *
28
+ * Schema decisions:
29
+ * - --bg: #ededed (chat-list gray, DESIGN.md §UI Neutrals).
30
+ * - --surface: #f7f7f7 (card / sheet lift on bg).
31
+ * - --surface-warm: var(--surface) — single surface tier.
32
+ * - --fg: #1a1a1a (ink); --fg-2 alias — DESIGN.md has one text tier.
33
+ * - --muted: #888888 (secondary + timestamps);
34
+ * --meta: var(--muted) — DESIGN.md does not separate the tier.
35
+ * - --border: #e0e0e0; --border-soft alias — single border weight.
36
+ * - --accent: #07c160 + hover #10b160 + active #059050 (DESIGN.md).
37
+ * - --success: #07c160 (brand-as-success — green is "done" in WeChat).
38
+ * - --warn: #fab702; --danger: #fa5151 (DESIGN.md functional palette).
39
+ * - --font-display / --font-body: identical apple-system + CJK stack.
40
+ * DESIGN.md uses a single family across the app; bilingual users get
41
+ * PingFang SC → Hiragino Sans GB → Microsoft YaHei → Noto Sans SC
42
+ * fallbacks so 中文 renders crisply on macOS, iOS, Windows and Linux.
43
+ * - Type scale: 11 / 13 / 15 / 16 / 18 / 24 / 32 / 48 — mobile-first
44
+ * chat ladder extended with a modest 48px hero for marketing pages.
45
+ * - --leading-body: 1.6 (DESIGN.md body, generous for CJK density).
46
+ * - Radius: 4 / 8 / 16 / pill (DESIGN.md §Border Radius).
47
+ * - Motion: 100ms hover, 200ms message-entry, cubic-bezier(0.25, 0.1,
48
+ * 0.25, 1) — DESIGN.md §Motion (instant + fast + ease-default).
49
+ * ─────────────────────────────────────────────────────────────────── */
50
+
51
+ :root {
52
+ /* ─── Surface ──────────────────────────────────────────────────────
53
+ * Light-friendly canvas: the muted #EDEDED chat-list gray is the
54
+ * WeChat user's home colour. Surfaces lift one tone above it. */
55
+ --bg: #ededed; /* chat-list gray — primary canvas */
56
+ --surface: #f7f7f7; /* card / sheet lift on bg */
57
+ --surface-warm: var(--surface); /* alias — single surface tier */
58
+
59
+ /* ─── Foreground ───────────────────────────────────────────────────
60
+ * One ink, one secondary. DESIGN.md does not separate dark / warm
61
+ * tiers, so --fg-2 and --meta alias their siblings. */
62
+ --fg: #1a1a1a; /* ink — primary text */
63
+ --fg-2: var(--fg); /* alias — single text weight */
64
+ --muted: #888888; /* secondary + timestamps */
65
+ --meta: var(--muted); /* alias — same gray for metadata */
66
+
67
+ /* ─── Border ───────────────────────────────────────────────────────
68
+ * Dividers are quiet — most cards are defined by background contrast,
69
+ * not borders. When borders appear, they are the same hairline gray. */
70
+ --border: #e0e0e0; /* card / row edge */
71
+ --border-soft: var(--border); /* alias — no inner separator tier */
72
+
73
+ /* ─── Accent ───────────────────────────────────────────────────────
74
+ * WeChat Green is the single load-bearing colour. Hover and active
75
+ * are taken verbatim from DESIGN.md so primary buttons feel native. */
76
+ --accent: #07c160; /* WeChat green — primary brand */
77
+ --accent-on: #ffffff;
78
+ --accent-hover: #10b160; /* DESIGN.md primary hover */
79
+ --accent-active: #059050; /* DESIGN.md primary pressed */
80
+
81
+ /* ─── Semantic ─────────────────────────────────────────────────────
82
+ * Green doubles as success because in WeChat green *is* "done / paid /
83
+ * sent". Warning + danger come straight from DESIGN.md §Functional. */
84
+ --success: #07c160; /* brand-as-success — paid / done */
85
+ --warn: #fab702; /* DESIGN.md warning orange */
86
+ --danger: #fa5151; /* DESIGN.md error red */
87
+
88
+ /* ─── Typography ───────────────────────────────────────────────────
89
+ * Single bilingual stack across display + body. -apple-system first
90
+ * for SF / SF Pro on Apple platforms; PingFang SC + Hiragino Sans GB
91
+ * + Microsoft YaHei + Noto Sans SC keep 中文 crisp on macOS, iOS,
92
+ * Windows and Linux respectively. Helvetica Neue / Helvetica / Arial
93
+ * close the Latin tail. */
94
+ --font-display: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
95
+ --font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
96
+ --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
97
+
98
+ /* Type scale — DESIGN.md §Typography is mobile-first (11–18px). The
99
+ * top three tiers (24 / 32 / 48px) extend the ladder for marketing
100
+ * pages while staying understated — WeChat does not shout. */
101
+ --text-xs: 11px; /* caption / timestamp */
102
+ --text-sm: 13px; /* secondary text */
103
+ --text-base: 15px; /* body — WeChat default */
104
+ --text-lg: 16px; /* section header / button label */
105
+ --text-xl: 18px; /* page title */
106
+ --text-2xl: 24px; /* feature heading */
107
+ --text-3xl: 32px; /* H2 — section title */
108
+ --text-4xl: 48px; /* display hero — modest by design */
109
+
110
+ /* Leading + tracking.
111
+ * 1.6 body line-height (DESIGN.md) gives Chinese characters generous
112
+ * air; 1.3 tight line-height matches the page-title spec. Display
113
+ * tracking compresses one notch — works for both Latin and CJK. */
114
+ --leading-body: 1.6;
115
+ --leading-tight: 1.3;
116
+ --tracking-display: -0.01em;
117
+
118
+ /* ─── Spacing ──────────────────────────────────────────────────────
119
+ * 4px base unit, DESIGN.md §Spacing System. The schema's --space-5
120
+ * (20px) and --space-12 (48px) fill in tiers DESIGN.md does not name
121
+ * but the layout grid needs. */
122
+ --space-1: 4px;
123
+ --space-2: 8px;
124
+ --space-3: 12px;
125
+ --space-4: 16px;
126
+ --space-5: 20px;
127
+ --space-6: 24px;
128
+ --space-8: 32px;
129
+ --space-12: 48px;
130
+
131
+ /* ─── Section rhythm ───────────────────────────────────────────────
132
+ * Phone-first product — desktop rhythm stays modest (72px) and
133
+ * collapses to 32px on phones to keep chat-row density on small
134
+ * screens. */
135
+ --section-y-desktop: 72px;
136
+ --section-y-tablet: 48px;
137
+ --section-y-phone: 32px;
138
+
139
+ /* ─── Radius ───────────────────────────────────────────────────────
140
+ * DESIGN.md §Border Radius: 4 / 8 / 16 / pill. (The brand-specific
141
+ * --radius-bubble lives in DESIGN.md but is component-local — chat
142
+ * bubbles re-derive it inline so it does not enter the shared schema.) */
143
+ --radius-sm: 4px;
144
+ --radius-md: 8px;
145
+ --radius-lg: 16px;
146
+ --radius-pill: 9999px;
147
+
148
+ /* ─── Elevation ────────────────────────────────────────────────────
149
+ * Whisper-quiet shadow lifted from DESIGN.md's incoming-bubble spec
150
+ * (0 1px 2px rgba(0,0,0,0.06)). WeChat surfaces almost never float;
151
+ * when they do, the shadow is barely perceptible. */
152
+ --elev-flat: none;
153
+ --elev-ring: 0 0 0 1px var(--border);
154
+ --elev-raised: 0 1px 2px rgba(0, 0, 0, 0.06);
155
+
156
+ /* ─── Focus ────────────────────────────────────────────────────────
157
+ * Green-tinted ring keeps the brand voice consistent on keyboard
158
+ * focus across inputs, buttons, and links. */
159
+ --focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
160
+
161
+ /* ─── Motion ───────────────────────────────────────────────────────
162
+ * DESIGN.md §Motion: 100ms hover, 200ms chat-message entry. Easing
163
+ * is the platform default (cubic-bezier(0.25, 0.1, 0.25, 1)) — the
164
+ * classic browser "ease", chosen for muscle-memory familiarity. */
165
+ --motion-fast: 100ms;
166
+ --motion-base: 200ms;
167
+ --ease-standard: cubic-bezier(0.25, 0.1, 0.25, 1);
168
+
169
+ /* ─── Layout ───────────────────────────────────────────────────────
170
+ * 1200px container fits WeChat's marketing-site pattern; phone
171
+ * gutters stay at 16px to match the chat row inset. */
172
+ --container-max: 1200px;
173
+ --container-gutter-desktop: 24px;
174
+ --container-gutter-tablet: 16px;
175
+ --container-gutter-phone: 16px;
176
+ }