@aexol/spectral 0.9.270 → 0.9.271

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 (567) hide show
  1. package/dist/agent/index.d.ts +10 -1
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +26 -10
  4. package/dist/commands/serve.d.ts.map +1 -1
  5. package/dist/commands/serve.js +29 -5
  6. package/dist/commands/update.d.ts +2 -2
  7. package/dist/commands/update.js +3 -3
  8. package/dist/designer/index.d.ts +13 -18
  9. package/dist/designer/index.d.ts.map +1 -1
  10. package/dist/designer/index.js +128 -201
  11. package/dist/extensions/aexol-mcp.d.ts.map +1 -1
  12. package/dist/extensions/aexol-mcp.js +23 -0
  13. package/dist/memory/debug-log.d.ts.map +1 -1
  14. package/dist/memory/debug-log.js +20 -2
  15. package/dist/memory/tools/compact-context.d.ts +1 -1
  16. package/dist/memory/tools/compact-context.d.ts.map +1 -1
  17. package/dist/memory/tools/compact-context.js +4 -1
  18. package/dist/memory/tools/recall-observation.d.ts +3 -3
  19. package/dist/memory/tools/recall-observation.d.ts.map +1 -1
  20. package/dist/memory/tools/recall-observation.js +4 -1
  21. package/dist/memory/tools/receive-agent-observations.d.ts +3 -3
  22. package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
  23. package/dist/memory/tools/receive-agent-observations.js +4 -1
  24. package/dist/memory/tools/share-project-observation.d.ts +3 -3
  25. package/dist/memory/tools/share-project-observation.d.ts.map +1 -1
  26. package/dist/memory/tools/share-project-observation.js +4 -1
  27. package/dist/memory/tools/write-project-observation.d.ts +3 -3
  28. package/dist/memory/tools/write-project-observation.d.ts.map +1 -1
  29. package/dist/memory/tools/write-project-observation.js +4 -1
  30. package/dist/relay/client.d.ts.map +1 -1
  31. package/dist/relay/client.js +5 -2
  32. package/dist/sdk/ai/env-api-keys.js +1 -1
  33. package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
  34. package/dist/sdk/coding-agent/core/extensions/loader.js +31 -3
  35. package/dist/sdk/coding-agent/core/theme.js +1 -1
  36. package/dist/server/handlers/agent-settings.d.ts.map +1 -1
  37. package/dist/server/handlers/agent-settings.js +4 -1
  38. package/dist/server/handlers/settings-lock.d.ts.map +1 -1
  39. package/dist/server/handlers/settings-lock.js +4 -1
  40. package/dist/server/storage.d.ts.map +1 -1
  41. package/dist/server/storage.js +13 -1
  42. package/dist/utils/serve-state.d.ts +17 -0
  43. package/dist/utils/serve-state.d.ts.map +1 -1
  44. package/dist/utils/serve-state.js +73 -0
  45. package/package.json +1 -1
  46. package/dist/designer/data/skills/blog-post.d.ts +0 -3
  47. package/dist/designer/data/skills/blog-post.d.ts.map +0 -1
  48. package/dist/designer/data/skills/blog-post.js +0 -84
  49. package/dist/designer/data/skills/blog-post.ts +0 -87
  50. package/dist/designer/data/skills/critique.d.ts +0 -3
  51. package/dist/designer/data/skills/critique.d.ts.map +0 -1
  52. package/dist/designer/data/skills/critique.js +0 -109
  53. package/dist/designer/data/skills/critique.ts +0 -112
  54. package/dist/designer/data/skills/dashboard.d.ts +0 -3
  55. package/dist/designer/data/skills/dashboard.d.ts.map +0 -1
  56. package/dist/designer/data/skills/dashboard.js +0 -165
  57. package/dist/designer/data/skills/dashboard.ts +0 -168
  58. package/dist/designer/data/skills/design-brief.d.ts +0 -3
  59. package/dist/designer/data/skills/design-brief.d.ts.map +0 -1
  60. package/dist/designer/data/skills/design-brief.js +0 -141
  61. package/dist/designer/data/skills/design-brief.ts +0 -144
  62. package/dist/designer/data/skills/design-skill.d.ts +0 -10
  63. package/dist/designer/data/skills/design-skill.d.ts.map +0 -1
  64. package/dist/designer/data/skills/design-skill.js +0 -1
  65. package/dist/designer/data/skills/design-skill.ts +0 -9
  66. package/dist/designer/data/skills/docs-page.d.ts +0 -3
  67. package/dist/designer/data/skills/docs-page.d.ts.map +0 -1
  68. package/dist/designer/data/skills/docs-page.js +0 -68
  69. package/dist/designer/data/skills/docs-page.ts +0 -71
  70. package/dist/designer/data/skills/index.d.ts +0 -3
  71. package/dist/designer/data/skills/index.d.ts.map +0 -1
  72. package/dist/designer/data/skills/index.js +0 -28
  73. package/dist/designer/data/skills/index.ts +0 -30
  74. package/dist/designer/data/skills/magazine-poster.d.ts +0 -3
  75. package/dist/designer/data/skills/magazine-poster.d.ts.map +0 -1
  76. package/dist/designer/data/skills/magazine-poster.js +0 -70
  77. package/dist/designer/data/skills/magazine-poster.ts +0 -73
  78. package/dist/designer/data/skills/mobile-app.d.ts +0 -3
  79. package/dist/designer/data/skills/mobile-app.d.ts.map +0 -1
  80. package/dist/designer/data/skills/mobile-app.js +0 -229
  81. package/dist/designer/data/skills/mobile-app.ts +0 -232
  82. package/dist/designer/data/skills/motion-frames.d.ts +0 -3
  83. package/dist/designer/data/skills/motion-frames.d.ts.map +0 -1
  84. package/dist/designer/data/skills/motion-frames.js +0 -121
  85. package/dist/designer/data/skills/motion-frames.ts +0 -124
  86. package/dist/designer/data/skills/pricing-page.d.ts +0 -3
  87. package/dist/designer/data/skills/pricing-page.d.ts.map +0 -1
  88. package/dist/designer/data/skills/pricing-page.js +0 -76
  89. package/dist/designer/data/skills/pricing-page.ts +0 -79
  90. package/dist/designer/data/skills/saas-landing.d.ts +0 -3
  91. package/dist/designer/data/skills/saas-landing.d.ts.map +0 -1
  92. package/dist/designer/data/skills/saas-landing.js +0 -71
  93. package/dist/designer/data/skills/saas-landing.ts +0 -74
  94. package/dist/designer/data/skills/slide-deck.d.ts +0 -3
  95. package/dist/designer/data/skills/slide-deck.d.ts.map +0 -1
  96. package/dist/designer/data/skills/slide-deck.js +0 -213
  97. package/dist/designer/data/skills/slide-deck.ts +0 -216
  98. package/dist/designer/data/skills/social-carousel.d.ts +0 -3
  99. package/dist/designer/data/skills/social-carousel.d.ts.map +0 -1
  100. package/dist/designer/data/skills/social-carousel.js +0 -135
  101. package/dist/designer/data/skills/social-carousel.ts +0 -138
  102. package/dist/designer/data/skills/web-prototype.d.ts +0 -3
  103. package/dist/designer/data/skills/web-prototype.d.ts.map +0 -1
  104. package/dist/designer/data/skills/web-prototype.js +0 -159
  105. package/dist/designer/data/skills/web-prototype.ts +0 -162
  106. package/dist/designer/data/systems/agentic/DESIGN.md +0 -71
  107. package/dist/designer/data/systems/agentic/components.html +0 -154
  108. package/dist/designer/data/systems/agentic/tokens.css +0 -63
  109. package/dist/designer/data/systems/airbnb/DESIGN.md +0 -393
  110. package/dist/designer/data/systems/airbnb/components.html +0 -1373
  111. package/dist/designer/data/systems/airbnb/tokens.css +0 -261
  112. package/dist/designer/data/systems/airtable/DESIGN.md +0 -92
  113. package/dist/designer/data/systems/airtable/components.html +0 -489
  114. package/dist/designer/data/systems/airtable/tokens.css +0 -261
  115. package/dist/designer/data/systems/ant/DESIGN.md +0 -71
  116. package/dist/designer/data/systems/ant/components.html +0 -154
  117. package/dist/designer/data/systems/ant/tokens.css +0 -63
  118. package/dist/designer/data/systems/apple/DESIGN.md +0 -250
  119. package/dist/designer/data/systems/apple/components.html +0 -749
  120. package/dist/designer/data/systems/apple/tokens.css +0 -286
  121. package/dist/designer/data/systems/application/DESIGN.md +0 -71
  122. package/dist/designer/data/systems/application/components.html +0 -154
  123. package/dist/designer/data/systems/application/tokens.css +0 -63
  124. package/dist/designer/data/systems/arc/DESIGN.md +0 -152
  125. package/dist/designer/data/systems/arc/components.html +0 -432
  126. package/dist/designer/data/systems/arc/tokens.css +0 -137
  127. package/dist/designer/data/systems/artistic/DESIGN.md +0 -71
  128. package/dist/designer/data/systems/artistic/components.html +0 -136
  129. package/dist/designer/data/systems/artistic/tokens.css +0 -63
  130. package/dist/designer/data/systems/atelier-zero/DESIGN.md +0 -316
  131. package/dist/designer/data/systems/atelier-zero/components.html +0 -136
  132. package/dist/designer/data/systems/atelier-zero/tokens.css +0 -63
  133. package/dist/designer/data/systems/bento/DESIGN.md +0 -71
  134. package/dist/designer/data/systems/bento/components.html +0 -136
  135. package/dist/designer/data/systems/bento/tokens.css +0 -63
  136. package/dist/designer/data/systems/binance/DESIGN.md +0 -348
  137. package/dist/designer/data/systems/binance/components.html +0 -550
  138. package/dist/designer/data/systems/binance/tokens.css +0 -255
  139. package/dist/designer/data/systems/bmw/DESIGN.md +0 -183
  140. package/dist/designer/data/systems/bmw/components.html +0 -551
  141. package/dist/designer/data/systems/bmw/tokens.css +0 -179
  142. package/dist/designer/data/systems/bmw-m/DESIGN.md +0 -246
  143. package/dist/designer/data/systems/bmw-m/components.html +0 -342
  144. package/dist/designer/data/systems/bmw-m/tokens.css +0 -64
  145. package/dist/designer/data/systems/bold/DESIGN.md +0 -71
  146. package/dist/designer/data/systems/bold/components.html +0 -136
  147. package/dist/designer/data/systems/bold/tokens.css +0 -63
  148. package/dist/designer/data/systems/brutalism/DESIGN.md +0 -71
  149. package/dist/designer/data/systems/brutalism/components.html +0 -154
  150. package/dist/designer/data/systems/brutalism/tokens.css +0 -63
  151. package/dist/designer/data/systems/bugatti/DESIGN.md +0 -271
  152. package/dist/designer/data/systems/bugatti/components.html +0 -342
  153. package/dist/designer/data/systems/bugatti/tokens.css +0 -64
  154. package/dist/designer/data/systems/cafe/DESIGN.md +0 -71
  155. package/dist/designer/data/systems/cafe/components.html +0 -136
  156. package/dist/designer/data/systems/cafe/tokens.css +0 -63
  157. package/dist/designer/data/systems/cal/DESIGN.md +0 -262
  158. package/dist/designer/data/systems/cal/components.html +0 -376
  159. package/dist/designer/data/systems/cal/tokens.css +0 -265
  160. package/dist/designer/data/systems/canva/DESIGN.md +0 -157
  161. package/dist/designer/data/systems/canva/components.html +0 -461
  162. package/dist/designer/data/systems/canva/tokens.css +0 -147
  163. package/dist/designer/data/systems/cisco/DESIGN.md +0 -201
  164. package/dist/designer/data/systems/cisco/components.html +0 -342
  165. package/dist/designer/data/systems/cisco/tokens.css +0 -64
  166. package/dist/designer/data/systems/claude/DESIGN.md +0 -315
  167. package/dist/designer/data/systems/claude/components.html +0 -483
  168. package/dist/designer/data/systems/claude/tokens.css +0 -130
  169. package/dist/designer/data/systems/clay/DESIGN.md +0 -307
  170. package/dist/designer/data/systems/clay/components.html +0 -136
  171. package/dist/designer/data/systems/clay/tokens.css +0 -63
  172. package/dist/designer/data/systems/claymorphism/DESIGN.md +0 -71
  173. package/dist/designer/data/systems/claymorphism/components.html +0 -136
  174. package/dist/designer/data/systems/claymorphism/tokens.css +0 -63
  175. package/dist/designer/data/systems/clean/DESIGN.md +0 -71
  176. package/dist/designer/data/systems/clean/components.html +0 -136
  177. package/dist/designer/data/systems/clean/tokens.css +0 -63
  178. package/dist/designer/data/systems/clickhouse/DESIGN.md +0 -284
  179. package/dist/designer/data/systems/clickhouse/components.html +0 -506
  180. package/dist/designer/data/systems/clickhouse/tokens.css +0 -135
  181. package/dist/designer/data/systems/cohere/DESIGN.md +0 -269
  182. package/dist/designer/data/systems/cohere/components.html +0 -353
  183. package/dist/designer/data/systems/cohere/tokens.css +0 -126
  184. package/dist/designer/data/systems/coinbase/DESIGN.md +0 -132
  185. package/dist/designer/data/systems/coinbase/components.html +0 -501
  186. package/dist/designer/data/systems/coinbase/tokens.css +0 -257
  187. package/dist/designer/data/systems/colorful/DESIGN.md +0 -71
  188. package/dist/designer/data/systems/colorful/components.html +0 -136
  189. package/dist/designer/data/systems/colorful/tokens.css +0 -63
  190. package/dist/designer/data/systems/composio/DESIGN.md +0 -310
  191. package/dist/designer/data/systems/composio/components.html +0 -342
  192. package/dist/designer/data/systems/composio/tokens.css +0 -64
  193. package/dist/designer/data/systems/contemporary/DESIGN.md +0 -71
  194. package/dist/designer/data/systems/contemporary/components.html +0 -136
  195. package/dist/designer/data/systems/contemporary/tokens.css +0 -63
  196. package/dist/designer/data/systems/corporate/DESIGN.md +0 -71
  197. package/dist/designer/data/systems/corporate/components.html +0 -136
  198. package/dist/designer/data/systems/corporate/tokens.css +0 -63
  199. package/dist/designer/data/systems/cosmic/DESIGN.md +0 -71
  200. package/dist/designer/data/systems/cosmic/components.html +0 -136
  201. package/dist/designer/data/systems/cosmic/tokens.css +0 -63
  202. package/dist/designer/data/systems/creative/DESIGN.md +0 -71
  203. package/dist/designer/data/systems/creative/components.html +0 -136
  204. package/dist/designer/data/systems/creative/tokens.css +0 -63
  205. package/dist/designer/data/systems/cursor/DESIGN.md +0 -312
  206. package/dist/designer/data/systems/cursor/components.html +0 -654
  207. package/dist/designer/data/systems/cursor/tokens.css +0 -218
  208. package/dist/designer/data/systems/dashboard/DESIGN.md +0 -71
  209. package/dist/designer/data/systems/dashboard/components.html +0 -154
  210. package/dist/designer/data/systems/dashboard/tokens.css +0 -63
  211. package/dist/designer/data/systems/default/DESIGN.md +0 -62
  212. package/dist/designer/data/systems/default/components.html +0 -523
  213. package/dist/designer/data/systems/default/tokens.css +0 -200
  214. package/dist/designer/data/systems/discord/DESIGN.md +0 -162
  215. package/dist/designer/data/systems/discord/components.html +0 -359
  216. package/dist/designer/data/systems/discord/tokens.css +0 -125
  217. package/dist/designer/data/systems/dithered/DESIGN.md +0 -71
  218. package/dist/designer/data/systems/dithered/components.html +0 -136
  219. package/dist/designer/data/systems/dithered/tokens.css +0 -63
  220. package/dist/designer/data/systems/doodle/DESIGN.md +0 -71
  221. package/dist/designer/data/systems/doodle/components.html +0 -136
  222. package/dist/designer/data/systems/doodle/tokens.css +0 -63
  223. package/dist/designer/data/systems/dramatic/DESIGN.md +0 -71
  224. package/dist/designer/data/systems/dramatic/components.html +0 -136
  225. package/dist/designer/data/systems/dramatic/tokens.css +0 -63
  226. package/dist/designer/data/systems/duolingo/DESIGN.md +0 -154
  227. package/dist/designer/data/systems/duolingo/components.html +0 -532
  228. package/dist/designer/data/systems/duolingo/tokens.css +0 -130
  229. package/dist/designer/data/systems/editorial/DESIGN.md +0 -71
  230. package/dist/designer/data/systems/editorial/components.html +0 -154
  231. package/dist/designer/data/systems/editorial/tokens.css +0 -63
  232. package/dist/designer/data/systems/elegant/DESIGN.md +0 -71
  233. package/dist/designer/data/systems/elegant/components.html +0 -136
  234. package/dist/designer/data/systems/elegant/tokens.css +0 -63
  235. package/dist/designer/data/systems/elevenlabs/DESIGN.md +0 -268
  236. package/dist/designer/data/systems/elevenlabs/components.html +0 -342
  237. package/dist/designer/data/systems/elevenlabs/tokens.css +0 -127
  238. package/dist/designer/data/systems/energetic/DESIGN.md +0 -72
  239. package/dist/designer/data/systems/energetic/components.html +0 -136
  240. package/dist/designer/data/systems/energetic/tokens.css +0 -63
  241. package/dist/designer/data/systems/enterprise/DESIGN.md +0 -71
  242. package/dist/designer/data/systems/enterprise/components.html +0 -154
  243. package/dist/designer/data/systems/enterprise/tokens.css +0 -63
  244. package/dist/designer/data/systems/expo/DESIGN.md +0 -284
  245. package/dist/designer/data/systems/expo/components.html +0 -342
  246. package/dist/designer/data/systems/expo/tokens.css +0 -64
  247. package/dist/designer/data/systems/expressive/DESIGN.md +0 -71
  248. package/dist/designer/data/systems/expressive/components.html +0 -136
  249. package/dist/designer/data/systems/expressive/tokens.css +0 -63
  250. package/dist/designer/data/systems/fantasy/DESIGN.md +0 -71
  251. package/dist/designer/data/systems/fantasy/components.html +0 -136
  252. package/dist/designer/data/systems/fantasy/tokens.css +0 -63
  253. package/dist/designer/data/systems/ferrari/DESIGN.md +0 -317
  254. package/dist/designer/data/systems/ferrari/components.html +0 -342
  255. package/dist/designer/data/systems/ferrari/tokens.css +0 -64
  256. package/dist/designer/data/systems/figma/DESIGN.md +0 -223
  257. package/dist/designer/data/systems/figma/components.html +0 -344
  258. package/dist/designer/data/systems/figma/tokens.css +0 -126
  259. package/dist/designer/data/systems/flat/DESIGN.md +0 -71
  260. package/dist/designer/data/systems/flat/components.html +0 -136
  261. package/dist/designer/data/systems/flat/tokens.css +0 -63
  262. package/dist/designer/data/systems/framer/DESIGN.md +0 -249
  263. package/dist/designer/data/systems/framer/components.html +0 -438
  264. package/dist/designer/data/systems/framer/tokens.css +0 -238
  265. package/dist/designer/data/systems/friendly/DESIGN.md +0 -71
  266. package/dist/designer/data/systems/friendly/components.html +0 -136
  267. package/dist/designer/data/systems/friendly/tokens.css +0 -63
  268. package/dist/designer/data/systems/futuristic/DESIGN.md +0 -71
  269. package/dist/designer/data/systems/futuristic/components.html +0 -136
  270. package/dist/designer/data/systems/futuristic/tokens.css +0 -63
  271. package/dist/designer/data/systems/github/DESIGN.md +0 -155
  272. package/dist/designer/data/systems/github/components.html +0 -383
  273. package/dist/designer/data/systems/github/tokens.css +0 -125
  274. package/dist/designer/data/systems/glassmorphism/DESIGN.md +0 -71
  275. package/dist/designer/data/systems/glassmorphism/components.html +0 -154
  276. package/dist/designer/data/systems/glassmorphism/tokens.css +0 -63
  277. package/dist/designer/data/systems/gradient/DESIGN.md +0 -71
  278. package/dist/designer/data/systems/gradient/components.html +0 -154
  279. package/dist/designer/data/systems/gradient/tokens.css +0 -63
  280. package/dist/designer/data/systems/hashicorp/DESIGN.md +0 -281
  281. package/dist/designer/data/systems/hashicorp/components.html +0 -502
  282. package/dist/designer/data/systems/hashicorp/tokens.css +0 -272
  283. package/dist/designer/data/systems/hud/DESIGN.md +0 -173
  284. package/dist/designer/data/systems/hud/components.html +0 -136
  285. package/dist/designer/data/systems/hud/tokens.css +0 -63
  286. package/dist/designer/data/systems/huggingface/DESIGN.md +0 -149
  287. package/dist/designer/data/systems/huggingface/components.html +0 -346
  288. package/dist/designer/data/systems/huggingface/tokens.css +0 -125
  289. package/dist/designer/data/systems/ibm/DESIGN.md +0 -335
  290. package/dist/designer/data/systems/ibm/components.html +0 -342
  291. package/dist/designer/data/systems/ibm/tokens.css +0 -64
  292. package/dist/designer/data/systems/intercom/DESIGN.md +0 -149
  293. package/dist/designer/data/systems/intercom/components.html +0 -557
  294. package/dist/designer/data/systems/intercom/tokens.css +0 -150
  295. package/dist/designer/data/systems/kami/DESIGN.md +0 -410
  296. package/dist/designer/data/systems/kami/components.html +0 -601
  297. package/dist/designer/data/systems/kami/tokens.css +0 -272
  298. package/dist/designer/data/systems/kraken/DESIGN.md +0 -128
  299. package/dist/designer/data/systems/kraken/components.html +0 -342
  300. package/dist/designer/data/systems/kraken/tokens.css +0 -64
  301. package/dist/designer/data/systems/lamborghini/DESIGN.md +0 -291
  302. package/dist/designer/data/systems/lamborghini/components.html +0 -342
  303. package/dist/designer/data/systems/lamborghini/tokens.css +0 -64
  304. package/dist/designer/data/systems/levels/DESIGN.md +0 -71
  305. package/dist/designer/data/systems/levels/components.html +0 -154
  306. package/dist/designer/data/systems/levels/tokens.css +0 -63
  307. package/dist/designer/data/systems/linear-app/DESIGN.md +0 -370
  308. package/dist/designer/data/systems/linear-app/components.html +0 -370
  309. package/dist/designer/data/systems/linear-app/tokens.css +0 -130
  310. package/dist/designer/data/systems/lingo/DESIGN.md +0 -71
  311. package/dist/designer/data/systems/lingo/components.html +0 -154
  312. package/dist/designer/data/systems/lingo/tokens.css +0 -63
  313. package/dist/designer/data/systems/loom/DESIGN.md +0 -201
  314. package/dist/designer/data/systems/loom/components.html +0 -446
  315. package/dist/designer/data/systems/loom/tokens.css +0 -138
  316. package/dist/designer/data/systems/lovable/DESIGN.md +0 -301
  317. package/dist/designer/data/systems/lovable/components.html +0 -441
  318. package/dist/designer/data/systems/lovable/tokens.css +0 -258
  319. package/dist/designer/data/systems/luxury/DESIGN.md +0 -71
  320. package/dist/designer/data/systems/luxury/components.html +0 -154
  321. package/dist/designer/data/systems/luxury/tokens.css +0 -63
  322. package/dist/designer/data/systems/mastercard/DESIGN.md +0 -368
  323. package/dist/designer/data/systems/mastercard/components.html +0 -342
  324. package/dist/designer/data/systems/mastercard/tokens.css +0 -64
  325. package/dist/designer/data/systems/material/DESIGN.md +0 -71
  326. package/dist/designer/data/systems/material/components.html +0 -154
  327. package/dist/designer/data/systems/material/tokens.css +0 -63
  328. package/dist/designer/data/systems/meta/DESIGN.md +0 -369
  329. package/dist/designer/data/systems/meta/components.html +0 -398
  330. package/dist/designer/data/systems/meta/tokens.css +0 -263
  331. package/dist/designer/data/systems/minimal/DESIGN.md +0 -71
  332. package/dist/designer/data/systems/minimal/components.html +0 -154
  333. package/dist/designer/data/systems/minimal/tokens.css +0 -63
  334. package/dist/designer/data/systems/minimax/DESIGN.md +0 -260
  335. package/dist/designer/data/systems/minimax/components.html +0 -590
  336. package/dist/designer/data/systems/minimax/tokens.css +0 -148
  337. package/dist/designer/data/systems/mintlify/DESIGN.md +0 -329
  338. package/dist/designer/data/systems/mintlify/components.html +0 -737
  339. package/dist/designer/data/systems/mintlify/tokens.css +0 -256
  340. package/dist/designer/data/systems/miro/DESIGN.md +0 -111
  341. package/dist/designer/data/systems/miro/components.html +0 -342
  342. package/dist/designer/data/systems/miro/tokens.css +0 -64
  343. package/dist/designer/data/systems/mission-control/DESIGN.md +0 -474
  344. package/dist/designer/data/systems/mission-control/components.html +0 -136
  345. package/dist/designer/data/systems/mission-control/tokens.css +0 -63
  346. package/dist/designer/data/systems/mistral-ai/DESIGN.md +0 -264
  347. package/dist/designer/data/systems/mistral-ai/components.html +0 -338
  348. package/dist/designer/data/systems/mistral-ai/tokens.css +0 -125
  349. package/dist/designer/data/systems/modern/DESIGN.md +0 -71
  350. package/dist/designer/data/systems/modern/components.html +0 -154
  351. package/dist/designer/data/systems/modern/tokens.css +0 -63
  352. package/dist/designer/data/systems/mongodb/DESIGN.md +0 -269
  353. package/dist/designer/data/systems/mongodb/components.html +0 -462
  354. package/dist/designer/data/systems/mongodb/tokens.css +0 -176
  355. package/dist/designer/data/systems/mono/DESIGN.md +0 -71
  356. package/dist/designer/data/systems/mono/components.html +0 -136
  357. package/dist/designer/data/systems/mono/tokens.css +0 -63
  358. package/dist/designer/data/systems/neobrutalism/DESIGN.md +0 -71
  359. package/dist/designer/data/systems/neobrutalism/components.html +0 -136
  360. package/dist/designer/data/systems/neobrutalism/tokens.css +0 -63
  361. package/dist/designer/data/systems/neon/DESIGN.md +0 -71
  362. package/dist/designer/data/systems/neon/components.html +0 -136
  363. package/dist/designer/data/systems/neon/tokens.css +0 -63
  364. package/dist/designer/data/systems/neumorphism/DESIGN.md +0 -71
  365. package/dist/designer/data/systems/neumorphism/components.html +0 -136
  366. package/dist/designer/data/systems/neumorphism/tokens.css +0 -63
  367. package/dist/designer/data/systems/nike/DESIGN.md +0 -366
  368. package/dist/designer/data/systems/nike/components.html +0 -512
  369. package/dist/designer/data/systems/nike/tokens.css +0 -304
  370. package/dist/designer/data/systems/notion/DESIGN.md +0 -312
  371. package/dist/designer/data/systems/notion/components.html +0 -413
  372. package/dist/designer/data/systems/notion/tokens.css +0 -130
  373. package/dist/designer/data/systems/nvidia/DESIGN.md +0 -296
  374. package/dist/designer/data/systems/nvidia/components.html +0 -414
  375. package/dist/designer/data/systems/nvidia/tokens.css +0 -133
  376. package/dist/designer/data/systems/ollama/DESIGN.md +0 -270
  377. package/dist/designer/data/systems/ollama/components.html +0 -700
  378. package/dist/designer/data/systems/ollama/tokens.css +0 -242
  379. package/dist/designer/data/systems/openai/DESIGN.md +0 -140
  380. package/dist/designer/data/systems/openai/components.html +0 -382
  381. package/dist/designer/data/systems/openai/tokens.css +0 -133
  382. package/dist/designer/data/systems/opencode-ai/DESIGN.md +0 -284
  383. package/dist/designer/data/systems/opencode-ai/components.html +0 -389
  384. package/dist/designer/data/systems/opencode-ai/tokens.css +0 -126
  385. package/dist/designer/data/systems/pacman/DESIGN.md +0 -71
  386. package/dist/designer/data/systems/pacman/components.html +0 -342
  387. package/dist/designer/data/systems/pacman/tokens.css +0 -64
  388. package/dist/designer/data/systems/paper/DESIGN.md +0 -71
  389. package/dist/designer/data/systems/paper/components.html +0 -136
  390. package/dist/designer/data/systems/paper/tokens.css +0 -63
  391. package/dist/designer/data/systems/perplexity/DESIGN.md +0 -286
  392. package/dist/designer/data/systems/perplexity/components.html +0 -455
  393. package/dist/designer/data/systems/perplexity/tokens.css +0 -151
  394. package/dist/designer/data/systems/perspective/DESIGN.md +0 -71
  395. package/dist/designer/data/systems/perspective/components.html +0 -136
  396. package/dist/designer/data/systems/perspective/tokens.css +0 -63
  397. package/dist/designer/data/systems/pinterest/DESIGN.md +0 -233
  398. package/dist/designer/data/systems/pinterest/components.html +0 -865
  399. package/dist/designer/data/systems/pinterest/tokens.css +0 -262
  400. package/dist/designer/data/systems/playstation/DESIGN.md +0 -367
  401. package/dist/designer/data/systems/playstation/components.html +0 -414
  402. package/dist/designer/data/systems/playstation/tokens.css +0 -150
  403. package/dist/designer/data/systems/posthog/DESIGN.md +0 -259
  404. package/dist/designer/data/systems/posthog/components.html +0 -827
  405. package/dist/designer/data/systems/posthog/tokens.css +0 -272
  406. package/dist/designer/data/systems/premium/DESIGN.md +0 -71
  407. package/dist/designer/data/systems/premium/components.html +0 -154
  408. package/dist/designer/data/systems/premium/tokens.css +0 -63
  409. package/dist/designer/data/systems/professional/DESIGN.md +0 -71
  410. package/dist/designer/data/systems/professional/components.html +0 -136
  411. package/dist/designer/data/systems/professional/tokens.css +0 -63
  412. package/dist/designer/data/systems/publication/DESIGN.md +0 -71
  413. package/dist/designer/data/systems/publication/components.html +0 -154
  414. package/dist/designer/data/systems/publication/tokens.css +0 -63
  415. package/dist/designer/data/systems/raycast/DESIGN.md +0 -271
  416. package/dist/designer/data/systems/raycast/components.html +0 -507
  417. package/dist/designer/data/systems/raycast/tokens.css +0 -143
  418. package/dist/designer/data/systems/refined/DESIGN.md +0 -71
  419. package/dist/designer/data/systems/refined/components.html +0 -136
  420. package/dist/designer/data/systems/refined/tokens.css +0 -63
  421. package/dist/designer/data/systems/renault/DESIGN.md +0 -314
  422. package/dist/designer/data/systems/renault/components.html +0 -154
  423. package/dist/designer/data/systems/renault/tokens.css +0 -63
  424. package/dist/designer/data/systems/replicate/DESIGN.md +0 -264
  425. package/dist/designer/data/systems/replicate/components.html +0 -340
  426. package/dist/designer/data/systems/replicate/tokens.css +0 -125
  427. package/dist/designer/data/systems/resend/DESIGN.md +0 -306
  428. package/dist/designer/data/systems/resend/components.html +0 -839
  429. package/dist/designer/data/systems/resend/tokens.css +0 -353
  430. package/dist/designer/data/systems/retro/DESIGN.md +0 -71
  431. package/dist/designer/data/systems/retro/components.html +0 -136
  432. package/dist/designer/data/systems/retro/tokens.css +0 -63
  433. package/dist/designer/data/systems/revolut/DESIGN.md +0 -188
  434. package/dist/designer/data/systems/revolut/components.html +0 -342
  435. package/dist/designer/data/systems/revolut/tokens.css +0 -64
  436. package/dist/designer/data/systems/runwayml/DESIGN.md +0 -247
  437. package/dist/designer/data/systems/runwayml/components.html +0 -638
  438. package/dist/designer/data/systems/runwayml/tokens.css +0 -204
  439. package/dist/designer/data/systems/sanity/DESIGN.md +0 -360
  440. package/dist/designer/data/systems/sanity/components.html +0 -342
  441. package/dist/designer/data/systems/sanity/tokens.css +0 -64
  442. package/dist/designer/data/systems/sentry/DESIGN.md +0 -265
  443. package/dist/designer/data/systems/sentry/components.html +0 -387
  444. package/dist/designer/data/systems/sentry/tokens.css +0 -219
  445. package/dist/designer/data/systems/shadcn/DESIGN.md +0 -71
  446. package/dist/designer/data/systems/shadcn/components.html +0 -732
  447. package/dist/designer/data/systems/shadcn/tokens.css +0 -255
  448. package/dist/designer/data/systems/shopify/DESIGN.md +0 -353
  449. package/dist/designer/data/systems/shopify/components.html +0 -342
  450. package/dist/designer/data/systems/shopify/tokens.css +0 -141
  451. package/dist/designer/data/systems/simple/DESIGN.md +0 -71
  452. package/dist/designer/data/systems/simple/components.html +0 -136
  453. package/dist/designer/data/systems/simple/tokens.css +0 -63
  454. package/dist/designer/data/systems/skeumorphism/DESIGN.md +0 -71
  455. package/dist/designer/data/systems/skeumorphism/components.html +0 -136
  456. package/dist/designer/data/systems/skeumorphism/tokens.css +0 -63
  457. package/dist/designer/data/systems/slack/DESIGN.md +0 -363
  458. package/dist/designer/data/systems/slack/components.html +0 -387
  459. package/dist/designer/data/systems/slack/tokens.css +0 -127
  460. package/dist/designer/data/systems/sleek/DESIGN.md +0 -71
  461. package/dist/designer/data/systems/sleek/components.html +0 -136
  462. package/dist/designer/data/systems/sleek/tokens.css +0 -63
  463. package/dist/designer/data/systems/spacex/DESIGN.md +0 -197
  464. package/dist/designer/data/systems/spacex/components.html +0 -496
  465. package/dist/designer/data/systems/spacex/tokens.css +0 -154
  466. package/dist/designer/data/systems/spacious/DESIGN.md +0 -71
  467. package/dist/designer/data/systems/spacious/components.html +0 -136
  468. package/dist/designer/data/systems/spacious/tokens.css +0 -63
  469. package/dist/designer/data/systems/spotify/DESIGN.md +0 -249
  470. package/dist/designer/data/systems/spotify/components.html +0 -365
  471. package/dist/designer/data/systems/spotify/tokens.css +0 -127
  472. package/dist/designer/data/systems/starbucks/DESIGN.md +0 -583
  473. package/dist/designer/data/systems/starbucks/components.html +0 -493
  474. package/dist/designer/data/systems/starbucks/tokens.css +0 -182
  475. package/dist/designer/data/systems/storytelling/DESIGN.md +0 -71
  476. package/dist/designer/data/systems/storytelling/components.html +0 -136
  477. package/dist/designer/data/systems/storytelling/tokens.css +0 -63
  478. package/dist/designer/data/systems/stripe/DESIGN.md +0 -325
  479. package/dist/designer/data/systems/stripe/components.html +0 -1018
  480. package/dist/designer/data/systems/stripe/tokens.css +0 -295
  481. package/dist/designer/data/systems/supabase/DESIGN.md +0 -258
  482. package/dist/designer/data/systems/supabase/components.html +0 -741
  483. package/dist/designer/data/systems/supabase/tokens.css +0 -294
  484. package/dist/designer/data/systems/superhuman/DESIGN.md +0 -255
  485. package/dist/designer/data/systems/superhuman/components.html +0 -537
  486. package/dist/designer/data/systems/superhuman/tokens.css +0 -160
  487. package/dist/designer/data/systems/tesla/DESIGN.md +0 -289
  488. package/dist/designer/data/systems/tesla/components.html +0 -724
  489. package/dist/designer/data/systems/tesla/tokens.css +0 -285
  490. package/dist/designer/data/systems/tetris/DESIGN.md +0 -71
  491. package/dist/designer/data/systems/tetris/components.html +0 -342
  492. package/dist/designer/data/systems/tetris/tokens.css +0 -64
  493. package/dist/designer/data/systems/theverge/DESIGN.md +0 -342
  494. package/dist/designer/data/systems/theverge/components.html +0 -342
  495. package/dist/designer/data/systems/theverge/tokens.css +0 -64
  496. package/dist/designer/data/systems/together-ai/DESIGN.md +0 -266
  497. package/dist/designer/data/systems/together-ai/components.html +0 -422
  498. package/dist/designer/data/systems/together-ai/tokens.css +0 -127
  499. package/dist/designer/data/systems/totality-festival/DESIGN.md +0 -206
  500. package/dist/designer/data/systems/totality-festival/components.html +0 -136
  501. package/dist/designer/data/systems/totality-festival/tokens.css +0 -63
  502. package/dist/designer/data/systems/trading-terminal/DESIGN.md +0 -178
  503. package/dist/designer/data/systems/trading-terminal/components.html +0 -154
  504. package/dist/designer/data/systems/trading-terminal/tokens.css +0 -63
  505. package/dist/designer/data/systems/uber/DESIGN.md +0 -298
  506. package/dist/designer/data/systems/uber/components.html +0 -347
  507. package/dist/designer/data/systems/uber/tokens.css +0 -131
  508. package/dist/designer/data/systems/urdu/DESIGN.md +0 -1002
  509. package/dist/designer/data/systems/urdu/components.html +0 -136
  510. package/dist/designer/data/systems/urdu/tokens.css +0 -63
  511. package/dist/designer/data/systems/vercel/DESIGN.md +0 -313
  512. package/dist/designer/data/systems/vercel/components.html +0 -839
  513. package/dist/designer/data/systems/vercel/tokens.css +0 -270
  514. package/dist/designer/data/systems/vibrant/DESIGN.md +0 -71
  515. package/dist/designer/data/systems/vibrant/components.html +0 -136
  516. package/dist/designer/data/systems/vibrant/tokens.css +0 -63
  517. package/dist/designer/data/systems/vintage/DESIGN.md +0 -71
  518. package/dist/designer/data/systems/vintage/components.html +0 -136
  519. package/dist/designer/data/systems/vintage/tokens.css +0 -63
  520. package/dist/designer/data/systems/vodafone/DESIGN.md +0 -426
  521. package/dist/designer/data/systems/vodafone/components.html +0 -342
  522. package/dist/designer/data/systems/vodafone/tokens.css +0 -64
  523. package/dist/designer/data/systems/voltagent/DESIGN.md +0 -326
  524. package/dist/designer/data/systems/voltagent/components.html +0 -154
  525. package/dist/designer/data/systems/voltagent/tokens.css +0 -63
  526. package/dist/designer/data/systems/warm-editorial/DESIGN.md +0 -65
  527. package/dist/designer/data/systems/warm-editorial/components.html +0 -136
  528. package/dist/designer/data/systems/warm-editorial/tokens.css +0 -63
  529. package/dist/designer/data/systems/warp/DESIGN.md +0 -256
  530. package/dist/designer/data/systems/warp/components.html +0 -411
  531. package/dist/designer/data/systems/warp/tokens.css +0 -156
  532. package/dist/designer/data/systems/webex/DESIGN.md +0 -207
  533. package/dist/designer/data/systems/webex/components.html +0 -342
  534. package/dist/designer/data/systems/webex/tokens.css +0 -64
  535. package/dist/designer/data/systems/webflow/DESIGN.md +0 -95
  536. package/dist/designer/data/systems/webflow/components.html +0 -413
  537. package/dist/designer/data/systems/webflow/tokens.css +0 -191
  538. package/dist/designer/data/systems/wechat/DESIGN.md +0 -302
  539. package/dist/designer/data/systems/wechat/components.html +0 -507
  540. package/dist/designer/data/systems/wechat/tokens.css +0 -176
  541. package/dist/designer/data/systems/wired/DESIGN.md +0 -281
  542. package/dist/designer/data/systems/wired/components.html +0 -342
  543. package/dist/designer/data/systems/wired/tokens.css +0 -64
  544. package/dist/designer/data/systems/wise/DESIGN.md +0 -176
  545. package/dist/designer/data/systems/wise/components.html +0 -365
  546. package/dist/designer/data/systems/wise/tokens.css +0 -141
  547. package/dist/designer/data/systems/x-ai/DESIGN.md +0 -260
  548. package/dist/designer/data/systems/x-ai/components.html +0 -460
  549. package/dist/designer/data/systems/x-ai/tokens.css +0 -268
  550. package/dist/designer/data/systems/xiaohongshu/DESIGN.md +0 -402
  551. package/dist/designer/data/systems/xiaohongshu/components.html +0 -865
  552. package/dist/designer/data/systems/xiaohongshu/tokens.css +0 -193
  553. package/dist/designer/data/systems/zapier/DESIGN.md +0 -331
  554. package/dist/designer/data/systems/zapier/components.html +0 -342
  555. package/dist/designer/data/systems/zapier/tokens.css +0 -64
  556. package/dist/designer/guidelines.d.ts +0 -23
  557. package/dist/designer/guidelines.d.ts.map +0 -1
  558. package/dist/designer/guidelines.js +0 -176
  559. package/dist/designer/philosophies.d.ts +0 -33
  560. package/dist/designer/philosophies.d.ts.map +0 -1
  561. package/dist/designer/philosophies.js +0 -668
  562. package/dist/designer/skills.d.ts +0 -21
  563. package/dist/designer/skills.d.ts.map +0 -1
  564. package/dist/designer/skills.js +0 -34
  565. package/dist/designer/systems.d.ts +0 -36
  566. package/dist/designer/systems.d.ts.map +0 -1
  567. package/dist/designer/systems.js +0 -221
@@ -1,262 +0,0 @@
1
- # Design System Inspired by Cal.com
2
-
3
- > Category: Productivity & SaaS
4
- > Open-source scheduling. Clean neutral UI, developer-oriented simplicity.
5
-
6
- ## 1. Visual Theme & Atmosphere
7
-
8
- Cal.com's website is a masterclass in monochromatic restraint — a grayscale world where boldness comes not from color but from the sheer confidence of black text on white space. Inspired by Uber's minimal aesthetic, the palette is deliberately stripped of hue: near-black headings (`#242424`), mid-gray secondary text (`#898989`), and pure white surfaces. Color is treated as a foreign substance — when it appears (a rare blue link, a green trust badge), it feels like a controlled accent in an otherwise black-and-white photograph.
9
-
10
- Cal Sans, the brand's custom geometric display typeface designed by Mark Davis, is the visual centerpiece. Letters are intentionally spaced extremely close at large sizes, creating dense, architectural headlines that feel like they're carved into the page. At 64px and 48px, Cal Sans headings sit at weight 600 with a tight 1.10 line-height — confident, compressed, and immediately recognizable. For body text, the system switches to Inter, providing "rock-solid" readability that complements Cal Sans's display personality. The typography pairing creates a clear division: Cal Sans speaks, Inter explains.
11
-
12
- The elevation system is notably sophisticated for a minimal site — 11 shadow definitions create a nuanced depth hierarchy using multi-layered shadows that combine ring borders (`0px 0px 0px 1px`), soft diffused shadows, and inset highlights. This shadow-first approach to depth (rather than border-first) gives surfaces a subtle three-dimensionality that feels modern and polished. Built on Framer with a border-radius scale from 2px to 9999px (pill), Cal.com balances geometric precision with soft, rounded interactive elements.
13
-
14
- **Key Characteristics:**
15
- - Purely grayscale brand palette — no brand colors, boldness through monochrome
16
- - Cal Sans custom geometric display font with extremely tight default letter-spacing
17
- - Multi-layered shadow system (11 definitions) with ring borders + diffused shadows + inset highlights
18
- - Cal Sans for headings, Inter for body — clean typographic division
19
- - Wide border-radius scale from 2px to 9999px (pill) — versatile rounding
20
- - White canvas with near-black (#242424) text — maximum contrast, zero decoration
21
- - Product screenshots as primary visual content — the scheduling UI sells itself
22
- - Built on Framer platform
23
-
24
- ## 2. Color Palette & Roles
25
-
26
- ### Primary
27
- - **Charcoal** (`#242424`): Primary heading and button text — Cal.com's signature near-black, warmer than pure black
28
- - **Midnight** (`#111111`): Deepest text/overlay color — used at 50% opacity for subtle overlays
29
- - **White** (`#ffffff`): Primary background and surface — the dominant canvas
30
-
31
- ### Secondary & Accent
32
- - **Link Blue** (`#0099ff`): In-text links with underline decoration — the only blue in the system, reserved strictly for hyperlinks
33
- - **Focus Ring** (`#3b82f6` at 50% opacity): Keyboard focus indicator — accessibility-only, invisible in normal interaction
34
- - **Default Link** (`#0000ee`): Browser-default link color on some elements — unmodified, signaling openness
35
-
36
- ### Surface & Background
37
- - **Pure White** (`#ffffff`): Primary page background and card surfaces
38
- - **Light Gray** (approx `#f5f5f5`): Subtle section differentiation — barely visible tint
39
- - **Mid Gray** (`#898989`): Secondary text, descriptions, and muted labels
40
-
41
- ### Neutrals & Text
42
- - **Charcoal** (`#242424`): Headlines, buttons, primary UI text
43
- - **Midnight** (`#111111`): Deep black for high-contrast links and nav text
44
- - **Mid Gray** (`#898989`): Descriptions, secondary labels, muted content
45
- - **Pure Black** (`#000000`): Certain link text elements
46
- - **Border Gray** (approx `rgba(34, 42, 53, 0.08–0.10)`): Shadow-based borders using ring shadows instead of CSS borders
47
-
48
- ### Semantic & Accent
49
- - Cal.com is deliberately colorless for brand elements — "a grayscale brand to emphasise on boldness and professionalism"
50
- - Product UI screenshots show color (blues, greens in the scheduling interface), but the marketing site itself stays monochrome
51
- - The philosophy mirrors Uber's approach: let the content carry color, the frame stays neutral
52
-
53
- ### Gradient System
54
- - No gradients on the marketing site — the design is fully flat and monochrome
55
- - Depth is achieved entirely through shadows, not color transitions
56
-
57
- ## 3. Typography Rules
58
-
59
- ### Font Family
60
- - **Display**: `Cal Sans` — custom geometric sans-serif by Mark Davis. Open-source, available on Google Fonts and GitHub. Extremely tight default letter-spacing designed for large headlines. Has 6 character variants (Cc, j, t, u, 0, 1)
61
- - **Body**: `Inter` — "rock-solid" standard body font. Fallback: `Inter Placeholder`
62
- - **UI Light**: `Cal Sans UI Variable Light` — light-weight variant (300) for softer UI text with -0.2px letter-spacing
63
- - **UI Medium**: `Cal Sans UI Medium` — medium-weight variant (500) for emphasized captions
64
- - **Mono**: `Roboto Mono` — for code blocks and technical content
65
- - **Tertiary**: `Matter Regular` / `Matter SemiBold` / `Matter Medium` — additional body fonts for specific contexts
66
-
67
- ### Hierarchy
68
-
69
- | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
70
- |------|------|------|--------|-------------|----------------|-------|
71
- | Display Hero | Cal Sans | 64px | 600 | 1.10 | 0px | Maximum impact, tight default spacing |
72
- | Section Heading | Cal Sans | 48px | 600 | 1.10 | 0px | Large section titles |
73
- | Feature Heading | Cal Sans | 24px | 600 | 1.30 | 0px | Feature block headlines |
74
- | Sub-heading | Cal Sans | 20px | 600 | 1.20 | +0.2px | Positive spacing for readability at smaller size |
75
- | Sub-heading Alt | Cal Sans | 20px | 600 | 1.50 | 0px | Relaxed line-height variant |
76
- | Card Title | Cal Sans | 16px | 600 | 1.10 | 0px | Smallest Cal Sans usage |
77
- | Caption Label | Cal Sans | 12px | 600 | 1.50 | 0px | Small labels in Cal Sans |
78
- | Body Light | Cal Sans UI Light | 18px | 300 | 1.30 | -0.2px | Light-weight body intro text |
79
- | Body Light Standard | Cal Sans UI Light | 16px | 300 | 1.50 | -0.2px | Light-weight body text |
80
- | Caption Light | Cal Sans UI Light | 14px | 300 | 1.40–1.50 | -0.2 to -0.28px | Light captions and descriptions |
81
- | UI Label | Inter | 16px | 600 | 1.00 | 0px | UI buttons and nav labels |
82
- | Caption Inter | Inter | 14px | 500 | 1.14 | 0px | Small UI text |
83
- | Micro | Inter | 12px | 500 | 1.00 | 0px | Smallest Inter text |
84
- | Code | Roboto Mono | 14px | 600 | 1.00 | 0px | Code snippets, technical text |
85
- | Body Matter | Matter Regular | 14px | 400 | 1.14 | 0px | Alternate body text (product UI) |
86
-
87
- ### Principles
88
- - **Cal Sans at large, Inter at small**: Cal Sans is exclusively for headings and display — never for body text. The system enforces this division strictly
89
- - **Tight by default, space when small**: Cal Sans letters are "intentionally spaced to be extremely close" at large sizes. At 20px and below, positive letter-spacing (+0.2px) must be applied to prevent cramming
90
- - **Weight 300 body variant**: Cal Sans UI Variable Light at 300 weight creates an elegant, airy body text that contrasts with the dense 600-weight headlines
91
- - **Weight 600 dominance**: Nearly all Cal Sans usage is at weight 600 (semi-bold) — the font was designed to perform at this weight
92
- - **Negative tracking on light text**: Cal Sans UI Light uses -0.2px to -0.28px letter-spacing, subtly tightening the already-compact letterforms
93
-
94
- ## 4. Component Stylings
95
-
96
- ### Buttons
97
- - **Dark Primary**: `#242424` (or `#1e1f23`) background, white text, 6–8px radius. Hover: opacity reduction to 0.7. The signature CTA — maximally dark on white
98
- - **White/Ghost**: White background with shadow-ring border, dark text. Uses the multi-layered shadow system for subtle elevation
99
- - **Pill**: 9999px radius for rounded pill-shaped actions and badges
100
- - **Compact**: 4px padding, small text — utility actions within product UI
101
- - **Inset highlight**: Some buttons feature `rgba(255, 255, 255, 0.15) 0px 2px 0px inset` — a subtle inner-top highlight creating a 3D pressed effect
102
-
103
- ### Cards & Containers
104
- - **Shadow Card**: White background, multi-layered shadow — `rgba(19, 19, 22, 0.7) 0px 1px 5px -4px, rgba(34, 42, 53, 0.08) 0px 0px 0px 1px, rgba(34, 42, 53, 0.05) 0px 4px 8px 0px`. The ring shadow (0px 0px 0px 1px) acts as a shadow-border
105
- - **Product UI Cards**: Screenshots of the scheduling interface displayed in card containers with shadow elevation
106
- - **Radius**: 8px for standard cards, 12px for larger containers, 16px for prominent sections
107
- - **Hover**: Likely subtle shadow deepening or scale transform
108
-
109
- ### Inputs & Forms
110
- - **Select dropdown**: White background, `#000000` text, 1px solid `rgb(118, 118, 118)` border
111
- - **Focus**: Uses Framer's focus outline system (`--framer-focus-outline`)
112
- - **Text input**: 8px radius, standard border treatment
113
- - **Minimal form presence**: The marketing site prioritizes CTA buttons over complex forms
114
-
115
- ### Navigation
116
- - **Top nav**: White/transparent background, Cal Sans links at near-black
117
- - **Nav text**: `#111111` (Midnight) for primary links, `#000000` for emphasis
118
- - **CTA button**: Dark Primary in the nav — high contrast call-to-action
119
- - **Mobile**: Collapses to hamburger with simplified navigation
120
- - **Sticky**: Fixed on scroll
121
-
122
- ### Image Treatment
123
- - **Product screenshots**: Large scheduling UI screenshots — the product is the primary visual
124
- - **Trust logos**: Grayscale company logos in a horizontal trust bar
125
- - **Aspect ratios**: Wide landscape for product UI screenshots
126
- - **No decorative imagery**: No illustrations, photos, or abstract graphics — pure product + typography
127
-
128
- ## 5. Layout Principles
129
-
130
- ### Spacing System
131
- - **Base unit**: 8px
132
- - **Scale**: 1px, 2px, 3px, 4px, 6px, 8px, 12px, 16px, 20px, 24px, 28px, 80px, 96px
133
- - **Section padding**: 80px–96px vertical between major sections (generous)
134
- - **Card padding**: 12px–24px internal
135
- - **Component gaps**: 4px–8px between related elements
136
- - **Notable jump**: From 28px to 80px — a deliberate gap emphasizing the section-level spacing tier
137
-
138
- ### Grid & Container
139
- - **Max width**: ~1200px content container, centered
140
- - **Column patterns**: Full-width hero, centered text blocks, 2-3 column feature grids
141
- - **Feature showcase**: Product screenshots flanked by description text
142
- - **Breakpoints**: 98px, 640px, 768px, 810px, 1024px, 1199px — Framer-generated
143
-
144
- ### Whitespace Philosophy
145
- - **Lavish section spacing**: 80px–96px between sections creates a breathable, premium feel
146
- - **Product-first content**: Screenshots dominate the visual space — minimal surrounding decoration
147
- - **Centered headlines**: Cal Sans headings centered with generous margins above and below
148
-
149
- ### Border Radius Scale
150
- - **2px**: Subtle rounding on inline elements
151
- - **4px**: Small UI components
152
- - **6px–7px**: Buttons, small cards, images
153
- - **8px**: Standard interactive elements — buttons, inputs, images
154
- - **12px**: Medium containers — links, larger cards, images
155
- - **16px**: Large section containers
156
- - **29px**: Special rounded elements
157
- - **100px**: Large rounding — nearly circular on small elements
158
- - **1000px**: Very large rounding
159
- - **9999px**: Full pill shape — badges, links
160
-
161
- ## 6. Depth & Elevation
162
-
163
- | Level | Treatment | Use |
164
- |-------|-----------|-----|
165
- | Level 0 (Flat) | No shadow | Page canvas, basic text containers |
166
- | Level 1 (Inset) | `rgba(0,0,0,0.16) 0px 1px 1.9px 0px inset` | Pressed/recessed elements, input wells |
167
- | Level 2 (Ring + Soft) | `rgba(19,19,22,0.7) 0px 1px 5px -4px, rgba(34,42,53,0.08) 0px 0px 0px 1px, rgba(34,42,53,0.05) 0px 4px 8px` | Cards, containers — the workhorse shadow |
168
- | Level 3 (Ring + Soft Alt) | `rgba(36,36,36,0.7) 0px 1px 5px -4px, rgba(36,36,36,0.05) 0px 4px 8px` | Alt card elevation without ring border |
169
- | Level 4 (Inset Highlight) | `rgba(255,255,255,0.15) 0px 2px 0px inset` or `rgb(255,255,255) 0px 2px 0px inset` | Button inner highlight — 3D pressed effect |
170
- | Level 5 (Soft Only) | `rgba(34,42,53,0.05) 0px 4px 8px` | Subtle ambient shadow |
171
-
172
- ### Shadow Philosophy
173
- Cal.com's shadow system is the most sophisticated element of the design — 11 shadow definitions using a multi-layered compositing technique:
174
- - **Ring borders**: `0px 0px 0px 1px` shadows act as borders, avoiding CSS `border` entirely. This creates hairline containment without affecting layout
175
- - **Diffused soft shadows**: `0px 4px 8px` at 5% opacity add gentle ambient depth
176
- - **Sharp contact shadows**: `0px 1px 5px -4px` at 70% opacity create tight bottom-edge shadows for grounding
177
- - **Inset highlights**: White inset shadows at the top of buttons create a subtle 3D bevel
178
- - Shadows are composed in comma-separated stacks — each surface gets 2-3 layered shadow definitions working together
179
-
180
- ### Decorative Depth
181
- - No gradients or glow effects
182
- - All depth comes from the sophisticated shadow compositing system
183
- - The overall effect is subtle but precise — surfaces feel like physical cards sitting on a table
184
-
185
- ## 7. Do's and Don'ts
186
-
187
- ### Do
188
- - Use Cal Sans exclusively for headings (24px+) and never for body text — it's a display font with tight default spacing
189
- - Apply positive letter-spacing (+0.2px) when using Cal Sans below 24px — the font cramps at small sizes without it
190
- - Maintain the grayscale palette — boldness comes from contrast, not color
191
- - Use the multi-layered shadow system for card elevation — ring shadow + diffused shadow + contact shadow
192
- - Keep backgrounds pure white — the monochrome philosophy requires a clean canvas
193
- - Use Inter for all body text at weight 300–600 — it's the reliable counterpart to Cal Sans's display personality
194
- - Let product screenshots be the visual content — no illustrations, no decorative graphics
195
- - Apply generous section spacing (80px–96px) — the breathing room is essential to the premium feel
196
-
197
- ### Don't
198
- - Use Cal Sans for body text or text below 16px — it wasn't designed for extended reading
199
- - Add brand colors — Cal.com is intentionally grayscale, color is reserved for links and UI states only
200
- - Use CSS borders when shadows can achieve the same containment — the ring-shadow technique is the system's approach
201
- - Apply negative letter-spacing to Cal Sans at small sizes — it needs positive spacing (+0.2px) below 24px
202
- - Create heavy, dark shadows — Cal.com's shadows are subtle (5% opacity diffused) with sharp contact edges
203
- - Use illustrations, abstract graphics, or decorative elements — the visual language is typography + product UI only
204
- - Mix Cal Sans weights — the font is designed for weight 600, other weights break the intended character
205
- - Reduce section spacing below 48px — the generous whitespace is core to the premium monochrome aesthetic
206
-
207
- ## 8. Responsive Behavior
208
-
209
- ### Breakpoints
210
- | Name | Width | Key Changes |
211
- |------|-------|-------------|
212
- | Mobile | <640px | Single column, hero text ~36px, stacked features, hamburger nav |
213
- | Tablet Small | 640px–768px | 2-column begins for some elements |
214
- | Tablet | 768px–810px | Layout adjustments, fuller grid |
215
- | Tablet Large | 810px–1024px | Multi-column feature grids |
216
- | Desktop | 1024px–1199px | Full layout, expanded navigation |
217
- | Large Desktop | >1199px | Max-width container, centered content |
218
-
219
- ### Touch Targets
220
- - Buttons: 8px radius with comfortable padding (10px+ vertical)
221
- - Nav links: Dark text with adequate spacing
222
- - Mobile CTAs: Full-width dark buttons for easy thumb access
223
- - Pill badges: 9999px radius creates large, tappable targets
224
-
225
- ### Collapsing Strategy
226
- - **Navigation**: Full horizontal nav → hamburger on mobile
227
- - **Hero**: 64px Cal Sans display → ~36px on mobile
228
- - **Feature grids**: Multi-column → 2-column → single stacked column
229
- - **Product screenshots**: Scale within containers, maintaining aspect ratios
230
- - **Section spacing**: Reduces from 80px–96px to ~48px on mobile
231
-
232
- ### Image Behavior
233
- - Product screenshots scale responsively
234
- - Trust logos reflow to multi-row grid on mobile
235
- - No art direction changes — same compositions at all sizes
236
- - Images use 7px–12px border-radius for consistent rounded corners
237
-
238
- ## 9. Agent Prompt Guide
239
-
240
- ### Quick Color Reference
241
- - Primary Text: Charcoal (`#242424`)
242
- - Deep Text: Midnight (`#111111`)
243
- - Secondary Text: Mid Gray (`#898989`)
244
- - Background: Pure White (`#ffffff`)
245
- - Link: Link Blue (`#0099ff`)
246
- - CTA Button: Charcoal (`#242424`) bg, white text
247
- - Shadow Border: `rgba(34, 42, 53, 0.08)` ring
248
-
249
- ### Example Component Prompts
250
- - "Create a hero section with white background, 64px Cal Sans heading at weight 600, line-height 1.10, #242424 text, centered layout with a dark CTA button (#242424, 8px radius, white text)"
251
- - "Design a scheduling card with white background, multi-layered shadow (0px 1px 5px -4px rgba(19,19,22,0.7), 0px 0px 0px 1px rgba(34,42,53,0.08), 0px 4px 8px rgba(34,42,53,0.05)), 12px radius"
252
- - "Build a navigation bar with white background, Inter links at 14px weight 500 in #111111, a dark CTA button (#242424), sticky positioning"
253
- - "Create a trust bar with grayscale company logos, horizontally centered, 16px gap between logos, on white background"
254
- - "Design a feature section with 48px Cal Sans heading (weight 600, #242424), 16px Inter body text (weight 300, #898989, line-height 1.50), and a product screenshot with 12px radius and the card shadow"
255
-
256
- ### Iteration Guide
257
- When refining existing screens generated with this design system:
258
- 1. Verify headings use Cal Sans at weight 600, body uses Inter — never mix them
259
- 2. Check that the palette is purely grayscale — if you see brand colors, remove them
260
- 3. Ensure card elevation uses the multi-layered shadow stack, not CSS borders
261
- 4. Confirm section spacing is generous (80px+) — if sections feel cramped, add more space
262
- 5. The overall tone should feel like a clean, professional scheduling tool — monochrome confidence without any decorative flourishes
@@ -1,376 +0,0 @@
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>Cal — reference components</title>
7
- <meta
8
- name="description"
9
- content="Reference fixture for design-systems/cal. Pure-white canvas, charcoal
10
- (#242424) text, link-blue reserved for hyperlinks, and a multi-layer
11
- ring-shadow stack that replaces CSS borders."
12
- />
13
-
14
- <style>
15
- :root {
16
- --bg: #ffffff;
17
- --surface: #ffffff;
18
- --surface-warm: var(--surface);
19
-
20
- --fg: #242424;
21
- --fg-2: #111111;
22
- --muted: #898989;
23
- --meta: var(--muted);
24
-
25
- --border: rgba(34, 42, 53, 0.08);
26
- --border-soft: rgba(34, 42, 53, 0.05);
27
-
28
- --accent: #0099ff;
29
- --accent-on: #ffffff;
30
- --accent-hover: color-mix(in oklab, var(--accent), black 8%);
31
- --accent-active: color-mix(in oklab, var(--accent), black 14%);
32
-
33
- --success: #16a34a;
34
- --warn: #eab308;
35
- --danger: #dc2626;
36
-
37
- --font-display: "Cal Sans", "Inter", -apple-system, "Segoe UI", Arial, sans-serif;
38
- --font-body: "Inter", -apple-system, "Segoe UI", Arial, sans-serif;
39
- --font-mono: "Roboto Mono", ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
40
-
41
- --text-xs: 12px;
42
- --text-sm: 14px;
43
- --text-base: 16px;
44
- --text-lg: 20px;
45
- --text-xl: 24px;
46
- --text-2xl: 32px;
47
- --text-3xl: 48px;
48
- --text-4xl: 64px;
49
-
50
- --leading-body: 1.5;
51
- --leading-tight: 1.1;
52
- --tracking-display: 0;
53
-
54
- --space-1: 4px;
55
- --space-2: 8px;
56
- --space-3: 12px;
57
- --space-4: 16px;
58
- --space-5: 20px;
59
- --space-6: 24px;
60
- --space-8: 32px;
61
- --space-12: 48px;
62
-
63
- --section-y-desktop: 96px;
64
- --section-y-tablet: 64px;
65
- --section-y-phone: 48px;
66
-
67
- --radius-sm: 8px;
68
- --radius-md: 12px;
69
- --radius-lg: 16px;
70
- --radius-pill: 9999px;
71
-
72
- --elev-flat: none;
73
- --elev-ring: 0 0 0 1px var(--border);
74
- --elev-raised:
75
- 0 1px 5px -4px rgba(19, 19, 22, 0.7),
76
- 0 0 0 1px rgba(34, 42, 53, 0.08),
77
- 0 4px 8px rgba(34, 42, 53, 0.05);
78
-
79
- --focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
80
-
81
- --motion-fast: 150ms;
82
- --motion-base: 200ms;
83
- --ease-standard: cubic-bezier(0.2, 0, 0, 1);
84
-
85
- --container-max: 1200px;
86
- --container-gutter-desktop: 24px;
87
- --container-gutter-tablet: 16px;
88
- --container-gutter-phone: 12px;
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
- }
102
-
103
- /* ─── Layout ─────────────────────────────────────────────── */
104
- .container { max-width: var(--container-max); margin-inline: auto; padding-inline: var(--container-gutter-desktop); }
105
- section { padding-block: var(--section-y-desktop); }
106
- section + section { border-top: 1px solid var(--border); }
107
- @media (max-width: 1023px) {
108
- .container { padding-inline: var(--container-gutter-tablet); }
109
- section { padding-block: var(--section-y-tablet); }
110
- }
111
- @media (max-width: 639px) {
112
- .container { padding-inline: var(--container-gutter-phone); }
113
- section { padding-block: var(--section-y-phone); }
114
- }
115
-
116
- /* ─── Typography — Cal Sans for display, Inter for body ─── */
117
- h1, h2, h3 {
118
- font-family: var(--font-display);
119
- font-weight: 600; /* Cal Sans is designed for weight 600 */
120
- line-height: var(--leading-tight);
121
- letter-spacing: var(--tracking-display);
122
- color: var(--fg);
123
- margin: 0;
124
- }
125
- h1 { font-size: var(--text-4xl); }
126
- h2 { font-size: var(--text-3xl); }
127
- h3 { font-size: var(--text-xl); line-height: 1.3; }
128
- p { margin: 0; }
129
- .lead {
130
- font-family: var(--font-body);
131
- font-size: var(--text-lg);
132
- color: var(--muted);
133
- line-height: var(--leading-body);
134
- font-weight: 400;
135
- }
136
- .body-muted { color: var(--muted); }
137
- .body-sm { font-size: var(--text-sm); }
138
- .eyebrow {
139
- font-family: var(--font-body);
140
- font-size: var(--text-xs);
141
- color: var(--muted);
142
- text-transform: uppercase;
143
- letter-spacing: 0.08em;
144
- font-weight: 500;
145
- }
146
- .stack-3 > * + * { margin-block-start: var(--space-3); }
147
- .stack-4 > * + * { margin-block-start: var(--space-4); }
148
- .stack-6 > * + * { margin-block-start: var(--space-6); }
149
-
150
- /* ─── Buttons — charcoal-on-white primary, ghost secondary ─ */
151
- .btn {
152
- display: inline-flex;
153
- align-items: center;
154
- gap: var(--space-2);
155
- padding: 10px 16px;
156
- border-radius: var(--radius-sm);
157
- font-family: var(--font-body);
158
- font-size: var(--text-sm);
159
- font-weight: 500;
160
- line-height: 1;
161
- cursor: pointer;
162
- border: none;
163
- transition: background-color var(--motion-fast) var(--ease-standard),
164
- box-shadow var(--motion-fast) var(--ease-standard),
165
- opacity var(--motion-fast) var(--ease-standard);
166
- text-decoration: none;
167
- }
168
- .btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
169
- /* Primary: charcoal (#242424) on white — Cal.com's signature CTA */
170
- .btn-primary {
171
- background: var(--fg);
172
- color: #ffffff;
173
- }
174
- .btn-primary:hover { opacity: 0.85; }
175
- .btn-primary:active { opacity: 0.75; }
176
- /* Secondary: white with ring-shadow border — uses the elevation system */
177
- .btn-secondary {
178
- background: var(--surface);
179
- color: var(--fg);
180
- box-shadow: var(--elev-ring);
181
- }
182
- .btn-secondary:hover {
183
- box-shadow:
184
- 0 0 0 1px rgba(34, 42, 53, 0.12),
185
- 0 1px 2px rgba(34, 42, 53, 0.04);
186
- }
187
-
188
- /* ─── Inputs — minimal, ring-on-focus ─────────────────────── */
189
- .field { display: flex; flex-direction: column; gap: var(--space-2); }
190
- .field label {
191
- font-size: var(--text-sm);
192
- font-weight: 500;
193
- color: var(--fg-2);
194
- }
195
- .field input {
196
- padding: 10px 12px;
197
- border-radius: var(--radius-sm);
198
- border: 1px solid var(--border);
199
- background: var(--bg);
200
- color: var(--fg);
201
- font-family: var(--font-body);
202
- font-size: var(--text-sm);
203
- outline: none;
204
- transition: border-color var(--motion-fast) var(--ease-standard),
205
- box-shadow var(--motion-fast) var(--ease-standard);
206
- }
207
- .field input:focus-visible {
208
- border-color: var(--accent);
209
- box-shadow: var(--focus-ring);
210
- }
211
- .field input::placeholder { color: var(--muted); }
212
- .field-help { font-size: var(--text-xs); color: var(--muted); }
213
-
214
- /* ─── Cards — white surface, multi-layer ring-shadow stack ─ */
215
- .card {
216
- background: var(--surface);
217
- border-radius: var(--radius-md);
218
- padding: var(--space-6);
219
- display: flex;
220
- flex-direction: column;
221
- gap: var(--space-3);
222
- box-shadow: var(--elev-raised); /* Cal.com's workhorse card shadow */
223
- transition: box-shadow var(--motion-base) var(--ease-standard);
224
- }
225
- .card:hover {
226
- box-shadow:
227
- 0 2px 8px -4px rgba(19, 19, 22, 0.7),
228
- 0 0 0 1px rgba(34, 42, 53, 0.1),
229
- 0 8px 16px rgba(34, 42, 53, 0.06);
230
- }
231
-
232
- /* ─── Badges ────────────────────────────────────────────── */
233
- .badge {
234
- display: inline-flex; align-items: center; gap: var(--space-2);
235
- padding: 3px var(--space-2);
236
- border-radius: var(--radius-pill);
237
- font-family: var(--font-body);
238
- font-size: var(--text-xs); font-weight: 500; line-height: 1.6;
239
- }
240
- .badge-success { color: var(--success); background: color-mix(in oklab, var(--success), transparent 90%); }
241
- .badge-muted { color: var(--muted); background: color-mix(in oklab, var(--muted), transparent 92%); }
242
- .badge-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
243
-
244
- /* ─── Links — the only blue in the system ───────────────── */
245
- a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
246
- a:hover { color: var(--accent-hover); }
247
- a.card-link { text-decoration: none; color: var(--fg-2); font-weight: 500; }
248
- a.card-link:hover { color: var(--accent); }
249
- kbd {
250
- font-family: var(--font-mono); font-size: var(--text-xs);
251
- padding: 2px 6px; border-radius: var(--radius-sm);
252
- background: var(--surface); color: var(--muted);
253
- box-shadow: var(--elev-ring);
254
- }
255
-
256
- /* ─── Layout helpers ────────────────────────────────────── */
257
- .hero-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-12); align-items: end; }
258
- @media (max-width: 1023px) { .hero-grid { grid-template-columns: 1fr; gap: var(--space-8); } }
259
- .hero-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-6); flex-wrap: wrap; }
260
- .hero-meta {
261
- display: flex; flex-direction: column; gap: var(--space-3);
262
- padding: var(--space-4);
263
- border-radius: var(--radius-md);
264
- background: var(--surface);
265
- box-shadow: var(--elev-raised);
266
- }
267
- .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
268
- @media (max-width: 1023px) { .features-grid { grid-template-columns: 1fr 1fr; } }
269
- @media (max-width: 639px) { .features-grid { grid-template-columns: 1fr; } }
270
- .form-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-12); align-items: start; }
271
- @media (max-width: 1023px) { .form-row { grid-template-columns: 1fr; } }
272
- .form { display: flex; flex-direction: column; gap: var(--space-4); max-width: 420px; }
273
- .form-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-2); }
274
- .icon { width: 16px; height: 16px; flex-shrink: 0; }
275
- .row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
276
- </style>
277
- </head>
278
- <body>
279
- <main class="container">
280
- <section data-od-id="hero">
281
- <div class="hero-grid">
282
- <div class="stack-4">
283
- <p class="eyebrow">Reference fixture · cal</p>
284
- <h1>Scheduling infrastructure for everyone.</h1>
285
- <p class="lead" style="max-width: 52ch">
286
- Open-source meetings, calendars, and booking links that just work —
287
- for individuals, teams, and the developers building the next wave
288
- of scheduling on top of an API they can read.
289
- </p>
290
- <div class="hero-actions">
291
- <a href="./tokens.css" class="btn btn-primary" style="text-decoration: none">
292
- View tokens
293
- <svg class="icon" viewBox="0 0 24 24" fill="none"
294
- stroke="currentColor" stroke-width="1.75"
295
- stroke-linecap="round" stroke-linejoin="round"
296
- aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
297
- </a>
298
- <a href="./DESIGN.md" class="btn btn-secondary" style="text-decoration: none">Read the spec</a>
299
- </div>
300
- </div>
301
- <aside class="hero-meta" aria-label="Booking status">
302
- <div class="row-between">
303
- <span class="body-sm" style="color: var(--fg-2)">Booking API</span>
304
- <span class="badge badge-success">
305
- <span class="badge-dot" aria-hidden="true"></span>
306
- Operational
307
- </span>
308
- </div>
309
- <p class="body-sm" style="color: var(--muted)">Last reviewed <time datetime="2026-05-15">2026-05-15</time> · v1.0</p>
310
- <p class="body-sm" style="color: var(--muted)">Press <kbd>⌘</kbd> <kbd>K</kbd> to search availability.</p>
311
- </aside>
312
- </div>
313
- </section>
314
-
315
- <section data-od-id="features">
316
- <div class="stack-3">
317
- <p class="eyebrow">What this fixture exercises</p>
318
- <h2 style="max-width: 22ch">A calendar that gets out of the way.</h2>
319
- </div>
320
- <div class="features-grid" style="margin-block-start: var(--space-8)">
321
- <article class="card">
322
- <h3>Monochrome by design</h3>
323
- <p class="body-muted body-sm">
324
- Pure white canvas, charcoal (#242424) text, and a single
325
- link-blue. Boldness comes from contrast, not from color.
326
- </p>
327
- <a href="./tokens.css" class="body-sm card-link">Inspect tokens →</a>
328
- </article>
329
- <article class="card">
330
- <h3>Cal Sans speaks. Inter explains.</h3>
331
- <p class="body-muted body-sm">
332
- A custom geometric display face for headings, Inter for body.
333
- The font pairing enforces a clear typographic division —
334
- Cal Sans is never used below 16px.
335
- </p>
336
- <a href="./DESIGN.md" class="body-sm card-link">Read the pairing →</a>
337
- </article>
338
- <article class="card">
339
- <h3>Shadows do the bordering</h3>
340
- <p class="body-muted body-sm">
341
- A multi-layer ring + contact + ambient shadow stack replaces
342
- CSS borders. Surfaces feel like physical cards sitting on a
343
- table — never floating, never flat.
344
- </p>
345
- <a href="./tokens.css" class="body-sm card-link">Inspect elevation →</a>
346
- </article>
347
- </div>
348
- </section>
349
-
350
- <section data-od-id="form">
351
- <div class="form-row">
352
- <div class="stack-4">
353
- <p class="eyebrow">Form components</p>
354
- <h2>Get scheduling at the speed of Cal.</h2>
355
- <p class="body-muted" style="max-width: 48ch">
356
- Inputs are minimal: hairline border, charcoal text, and the
357
- one link-blue makes its second appearance only on the focus
358
- ring — exactly where it earns its keep.
359
- </p>
360
- </div>
361
- <form class="form" onsubmit="event.preventDefault();">
362
- <div class="field">
363
- <label for="email">Work email</label>
364
- <input id="email" type="email" placeholder="you@company.com" autocomplete="email" required />
365
- <p class="field-help">We'll send your booking link and nothing else.</p>
366
- </div>
367
- <div class="form-actions">
368
- <button type="submit" class="btn btn-primary">Create my link</button>
369
- <button type="button" class="btn btn-secondary">See a demo</button>
370
- </div>
371
- </form>
372
- </div>
373
- </section>
374
- </main>
375
- </body>
376
- </html>