oh-my-design-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +145 -0
  3. package/README.ko.md +245 -0
  4. package/README.md +245 -0
  5. package/README.zh-TW.md +145 -0
  6. package/data/reference-tags.md +104 -0
  7. package/data/synonyms.json +79 -0
  8. package/data/vocabulary.json +516 -0
  9. package/dist/bin/oh-my-design.js +858 -0
  10. package/dist/bin/oh-my-design.js.map +1 -0
  11. package/dist/chunk-6YNSV3VY.js +35 -0
  12. package/dist/chunk-6YNSV3VY.js.map +1 -0
  13. package/dist/chunk-MHFYGZSO.js +337 -0
  14. package/dist/chunk-MHFYGZSO.js.map +1 -0
  15. package/dist/chunk-N2JG6N4Q.js +264 -0
  16. package/dist/chunk-N2JG6N4Q.js.map +1 -0
  17. package/dist/chunk-OOQQEUGX.js +46 -0
  18. package/dist/chunk-OOQQEUGX.js.map +1 -0
  19. package/dist/chunk-OR5DHENY.js +250 -0
  20. package/dist/chunk-OR5DHENY.js.map +1 -0
  21. package/dist/customizer-CM76752R.js +8 -0
  22. package/dist/customizer-CM76752R.js.map +1 -0
  23. package/dist/index.d.ts +559 -0
  24. package/dist/index.js +3113 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/init-STACB7E5.js +635 -0
  27. package/dist/init-STACB7E5.js.map +1 -0
  28. package/dist/install-skills-CM6VXFZJ.js +152 -0
  29. package/dist/install-skills-CM6VXFZJ.js.map +1 -0
  30. package/dist/learn-33LHKEJA.js +140 -0
  31. package/dist/learn-33LHKEJA.js.map +1 -0
  32. package/dist/reference-YMNAOXJQ.js +47 -0
  33. package/dist/reference-YMNAOXJQ.js.map +1 -0
  34. package/dist/reference-parser-TM3CJPNE.js +10 -0
  35. package/dist/reference-parser-TM3CJPNE.js.map +1 -0
  36. package/dist/remember-UAFA5B2O.js +78 -0
  37. package/dist/remember-UAFA5B2O.js.map +1 -0
  38. package/dist/sync-P7X4S2DK.js +404 -0
  39. package/dist/sync-P7X4S2DK.js.map +1 -0
  40. package/dist/templates/templates/design-md.hbs +44 -0
  41. package/dist/templates/templates/partials/agent-prompt-guide.hbs +28 -0
  42. package/dist/templates/templates/partials/color-palette.hbs +49 -0
  43. package/dist/templates/templates/partials/component-stylings.hbs +28 -0
  44. package/dist/templates/templates/partials/depth-elevation.hbs +31 -0
  45. package/dist/templates/templates/partials/dos-donts.hbs +13 -0
  46. package/dist/templates/templates/partials/layout.hbs +30 -0
  47. package/dist/templates/templates/partials/responsive.hbs +25 -0
  48. package/dist/templates/templates/partials/shadcn-tokens.hbs +64 -0
  49. package/dist/templates/templates/partials/typography.hbs +43 -0
  50. package/dist/templates/templates/partials/visual-theme.hbs +26 -0
  51. package/package.json +68 -0
  52. package/references/Claude-Design-Sys-Prompt.txt +421 -0
  53. package/references/airbnb/DESIGN.md +427 -0
  54. package/references/airbnb/README.md +23 -0
  55. package/references/airbnb/preview-dark.html +234 -0
  56. package/references/airbnb/preview.html +233 -0
  57. package/references/airtable/DESIGN.md +107 -0
  58. package/references/airtable/README.md +23 -0
  59. package/references/airtable/preview-dark.html +165 -0
  60. package/references/airtable/preview.html +164 -0
  61. package/references/apple/DESIGN.md +496 -0
  62. package/references/apple/README.md +24 -0
  63. package/references/apple/preview-dark.html +420 -0
  64. package/references/apple/preview.html +414 -0
  65. package/references/baemin/DESIGN.md +260 -0
  66. package/references/baemin/README.md +19 -0
  67. package/references/bmw/DESIGN.md +180 -0
  68. package/references/bmw/README.md +23 -0
  69. package/references/bmw/preview-dark.html +211 -0
  70. package/references/bmw/preview.html +210 -0
  71. package/references/cal/DESIGN.md +259 -0
  72. package/references/cal/README.md +23 -0
  73. package/references/cal/preview-dark.html +449 -0
  74. package/references/cal/preview.html +575 -0
  75. package/references/claude/DESIGN.md +455 -0
  76. package/references/claude/README.md +24 -0
  77. package/references/claude/preview-dark.html +803 -0
  78. package/references/claude/preview.html +826 -0
  79. package/references/clay/DESIGN.md +304 -0
  80. package/references/clay/README.md +23 -0
  81. package/references/clay/preview-dark.html +316 -0
  82. package/references/clay/preview.html +315 -0
  83. package/references/clickhouse/DESIGN.md +281 -0
  84. package/references/clickhouse/README.md +24 -0
  85. package/references/clickhouse/preview-dark.html +834 -0
  86. package/references/clickhouse/preview.html +786 -0
  87. package/references/cohere/DESIGN.md +266 -0
  88. package/references/cohere/README.md +24 -0
  89. package/references/cohere/preview-dark.html +803 -0
  90. package/references/cohere/preview.html +807 -0
  91. package/references/coinbase/DESIGN.md +129 -0
  92. package/references/coinbase/README.md +23 -0
  93. package/references/coinbase/preview-dark.html +164 -0
  94. package/references/coinbase/preview.html +163 -0
  95. package/references/composio/DESIGN.md +307 -0
  96. package/references/composio/README.md +24 -0
  97. package/references/composio/preview-dark.html +958 -0
  98. package/references/composio/preview.html +933 -0
  99. package/references/cursor/DESIGN.md +322 -0
  100. package/references/cursor/README.md +24 -0
  101. package/references/cursor/preview-dark.html +393 -0
  102. package/references/cursor/preview.html +383 -0
  103. package/references/dcard/DESIGN.md +302 -0
  104. package/references/dcard/README.md +12 -0
  105. package/references/dcard/_research/forum-1440px.png +0 -0
  106. package/references/dcard/_research.md +77 -0
  107. package/references/elevenlabs/DESIGN.md +265 -0
  108. package/references/elevenlabs/README.md +23 -0
  109. package/references/elevenlabs/preview-dark.html +252 -0
  110. package/references/elevenlabs/preview.html +251 -0
  111. package/references/expo/DESIGN.md +281 -0
  112. package/references/expo/README.md +24 -0
  113. package/references/expo/preview-dark.html +533 -0
  114. package/references/expo/preview.html +533 -0
  115. package/references/ferrari/DESIGN.md +314 -0
  116. package/references/ferrari/README.md +23 -0
  117. package/references/ferrari/preview-dark.html +1162 -0
  118. package/references/ferrari/preview.html +1122 -0
  119. package/references/figma/DESIGN.md +399 -0
  120. package/references/figma/README.md +24 -0
  121. package/references/figma/preview-dark.html +822 -0
  122. package/references/figma/preview.html +832 -0
  123. package/references/framer/DESIGN.md +246 -0
  124. package/references/framer/README.md +23 -0
  125. package/references/framer/preview-dark.html +902 -0
  126. package/references/framer/preview.html +883 -0
  127. package/references/freee/DESIGN.md +308 -0
  128. package/references/freee/README.md +12 -0
  129. package/references/freee/_research/vibes-storybook-1440px.png +0 -0
  130. package/references/freee/_research.md +77 -0
  131. package/references/hashicorp/DESIGN.md +278 -0
  132. package/references/hashicorp/README.md +24 -0
  133. package/references/hashicorp/preview-dark.html +1202 -0
  134. package/references/hashicorp/preview.html +1193 -0
  135. package/references/ibm/DESIGN.md +332 -0
  136. package/references/ibm/README.md +24 -0
  137. package/references/ibm/preview-dark.html +443 -0
  138. package/references/ibm/preview.html +428 -0
  139. package/references/intercom/DESIGN.md +146 -0
  140. package/references/intercom/README.md +23 -0
  141. package/references/intercom/preview-dark.html +185 -0
  142. package/references/intercom/preview.html +184 -0
  143. package/references/kakao/DESIGN.md +261 -0
  144. package/references/kakao/README.md +18 -0
  145. package/references/karrot/DESIGN.md +252 -0
  146. package/references/karrot/README.md +18 -0
  147. package/references/kraken/DESIGN.md +146 -0
  148. package/references/kraken/README.md +23 -0
  149. package/references/kraken/preview-dark.html +169 -0
  150. package/references/kraken/preview.html +168 -0
  151. package/references/lamborghini/DESIGN.md +288 -0
  152. package/references/lamborghini/README.md +23 -0
  153. package/references/lamborghini/preview-dark.html +303 -0
  154. package/references/lamborghini/preview.html +381 -0
  155. package/references/line/DESIGN.md +375 -0
  156. package/references/line/README.md +12 -0
  157. package/references/line/_research/home-1440px.png +0 -0
  158. package/references/line/_research.md +65 -0
  159. package/references/linear.app/DESIGN.md +526 -0
  160. package/references/linear.app/README.md +24 -0
  161. package/references/linear.app/preview-dark.html +383 -0
  162. package/references/linear.app/preview.html +373 -0
  163. package/references/lovable/DESIGN.md +298 -0
  164. package/references/lovable/README.md +24 -0
  165. package/references/lovable/preview-dark.html +349 -0
  166. package/references/lovable/preview.html +348 -0
  167. package/references/mercari/DESIGN.md +294 -0
  168. package/references/mercari/README.md +12 -0
  169. package/references/mercari/_research/home-1440px.png +0 -0
  170. package/references/mercari/_research.md +77 -0
  171. package/references/minimax/DESIGN.md +257 -0
  172. package/references/minimax/README.md +24 -0
  173. package/references/minimax/preview-dark.html +1262 -0
  174. package/references/minimax/preview.html +1248 -0
  175. package/references/mintlify/DESIGN.md +341 -0
  176. package/references/mintlify/README.md +24 -0
  177. package/references/mintlify/preview-dark.html +409 -0
  178. package/references/mintlify/preview.html +398 -0
  179. package/references/miro/DESIGN.md +108 -0
  180. package/references/miro/README.md +23 -0
  181. package/references/miro/preview-dark.html +174 -0
  182. package/references/miro/preview.html +173 -0
  183. package/references/mistral.ai/DESIGN.md +261 -0
  184. package/references/mistral.ai/README.md +24 -0
  185. package/references/mistral.ai/preview-dark.html +806 -0
  186. package/references/mistral.ai/preview.html +805 -0
  187. package/references/mongodb/DESIGN.md +266 -0
  188. package/references/mongodb/README.md +23 -0
  189. package/references/mongodb/preview-dark.html +260 -0
  190. package/references/mongodb/preview.html +259 -0
  191. package/references/notion/DESIGN.md +492 -0
  192. package/references/notion/README.md +24 -0
  193. package/references/notion/preview-dark.html +372 -0
  194. package/references/notion/preview.html +364 -0
  195. package/references/nvidia/DESIGN.md +308 -0
  196. package/references/nvidia/README.md +24 -0
  197. package/references/nvidia/preview-dark.html +374 -0
  198. package/references/nvidia/preview.html +366 -0
  199. package/references/ollama/DESIGN.md +267 -0
  200. package/references/ollama/README.md +24 -0
  201. package/references/ollama/preview-dark.html +678 -0
  202. package/references/ollama/preview.html +678 -0
  203. package/references/opencode.ai/DESIGN.md +295 -0
  204. package/references/opencode.ai/README.md +24 -0
  205. package/references/opencode.ai/preview-dark.html +366 -0
  206. package/references/opencode.ai/preview.html +357 -0
  207. package/references/pinkoi/DESIGN.md +309 -0
  208. package/references/pinkoi/README.md +12 -0
  209. package/references/pinkoi/_research/browse-1440px.png +0 -0
  210. package/references/pinkoi/_research.md +115 -0
  211. package/references/pinterest/DESIGN.md +230 -0
  212. package/references/pinterest/README.md +23 -0
  213. package/references/pinterest/preview-dark.html +233 -0
  214. package/references/pinterest/preview.html +232 -0
  215. package/references/posthog/DESIGN.md +256 -0
  216. package/references/posthog/README.md +23 -0
  217. package/references/posthog/preview-dark.html +699 -0
  218. package/references/posthog/preview.html +749 -0
  219. package/references/raycast/DESIGN.md +268 -0
  220. package/references/raycast/README.md +23 -0
  221. package/references/raycast/preview-dark.html +606 -0
  222. package/references/raycast/preview.html +688 -0
  223. package/references/renault/DESIGN.md +311 -0
  224. package/references/renault/README.md +23 -0
  225. package/references/renault/preview-dark.html +406 -0
  226. package/references/renault/preview.html +606 -0
  227. package/references/replicate/DESIGN.md +261 -0
  228. package/references/replicate/README.md +24 -0
  229. package/references/replicate/preview-dark.html +828 -0
  230. package/references/replicate/preview.html +831 -0
  231. package/references/resend/DESIGN.md +303 -0
  232. package/references/resend/README.md +23 -0
  233. package/references/resend/preview-dark.html +355 -0
  234. package/references/resend/preview.html +354 -0
  235. package/references/revolut/DESIGN.md +185 -0
  236. package/references/revolut/README.md +23 -0
  237. package/references/revolut/preview-dark.html +234 -0
  238. package/references/revolut/preview.html +233 -0
  239. package/references/runwayml/DESIGN.md +244 -0
  240. package/references/runwayml/README.md +24 -0
  241. package/references/runwayml/preview-dark.html +664 -0
  242. package/references/runwayml/preview.html +665 -0
  243. package/references/sanity/DESIGN.md +357 -0
  244. package/references/sanity/README.md +24 -0
  245. package/references/sanity/preview-dark.html +990 -0
  246. package/references/sanity/preview.html +1135 -0
  247. package/references/sentry/DESIGN.md +262 -0
  248. package/references/sentry/README.md +24 -0
  249. package/references/sentry/preview-dark.html +626 -0
  250. package/references/sentry/preview.html +951 -0
  251. package/references/spacex/DESIGN.md +205 -0
  252. package/references/spacex/README.md +23 -0
  253. package/references/spacex/preview-dark.html +221 -0
  254. package/references/spacex/preview.html +220 -0
  255. package/references/spotify/DESIGN.md +246 -0
  256. package/references/spotify/README.md +23 -0
  257. package/references/spotify/preview-dark.html +231 -0
  258. package/references/spotify/preview.html +230 -0
  259. package/references/stripe/DESIGN.md +473 -0
  260. package/references/stripe/README.md +24 -0
  261. package/references/stripe/preview-dark.html +428 -0
  262. package/references/stripe/preview.html +419 -0
  263. package/references/supabase/DESIGN.md +255 -0
  264. package/references/supabase/README.md +24 -0
  265. package/references/supabase/preview-dark.html +977 -0
  266. package/references/supabase/preview.html +955 -0
  267. package/references/superhuman/DESIGN.md +252 -0
  268. package/references/superhuman/README.md +23 -0
  269. package/references/superhuman/preview-dark.html +973 -0
  270. package/references/superhuman/preview.html +951 -0
  271. package/references/tesla/DESIGN.md +286 -0
  272. package/references/tesla/README.md +23 -0
  273. package/references/tesla/preview-dark.html +947 -0
  274. package/references/tesla/preview.html +925 -0
  275. package/references/together.ai/DESIGN.md +263 -0
  276. package/references/together.ai/README.md +24 -0
  277. package/references/together.ai/preview-dark.html +892 -0
  278. package/references/together.ai/preview.html +897 -0
  279. package/references/toss/DESIGN.md +387 -0
  280. package/references/toss/README.md +19 -0
  281. package/references/uber/DESIGN.md +295 -0
  282. package/references/uber/README.md +24 -0
  283. package/references/uber/preview-dark.html +1120 -0
  284. package/references/uber/preview.html +1119 -0
  285. package/references/vercel/DESIGN.md +456 -0
  286. package/references/vercel/README.md +24 -0
  287. package/references/vercel/preview-dark.html +368 -0
  288. package/references/vercel/preview.html +367 -0
  289. package/references/voltagent/DESIGN.md +323 -0
  290. package/references/voltagent/README.md +24 -0
  291. package/references/voltagent/preview-dark.html +487 -0
  292. package/references/voltagent/preview.html +766 -0
  293. package/references/warp/DESIGN.md +253 -0
  294. package/references/warp/README.md +23 -0
  295. package/references/warp/preview-dark.html +500 -0
  296. package/references/warp/preview.html +533 -0
  297. package/references/webflow/DESIGN.md +109 -0
  298. package/references/webflow/README.md +23 -0
  299. package/references/webflow/preview-dark.html +147 -0
  300. package/references/webflow/preview.html +146 -0
  301. package/references/wise/DESIGN.md +173 -0
  302. package/references/wise/README.md +23 -0
  303. package/references/wise/preview-dark.html +230 -0
  304. package/references/wise/preview.html +229 -0
  305. package/references/x.ai/DESIGN.md +267 -0
  306. package/references/x.ai/README.md +24 -0
  307. package/references/x.ai/preview-dark.html +356 -0
  308. package/references/x.ai/preview.html +407 -0
  309. package/references/zapier/DESIGN.md +328 -0
  310. package/references/zapier/README.md +24 -0
  311. package/references/zapier/preview-dark.html +380 -0
  312. package/references/zapier/preview.html +372 -0
  313. package/skills/omd-apply/SKILL.md +85 -0
  314. package/skills/omd-init/SKILL.md +167 -0
  315. package/skills/omd-learn/SKILL.md +81 -0
  316. package/skills/omd-remember/SKILL.md +44 -0
  317. package/skills/omd-sync/SKILL.md +38 -0
@@ -0,0 +1,314 @@
1
+ # Design System Inspiration of Ferrari
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Ferrari's website is a digital editorial — a curated magazine where the Prancing Horse brand is presented with the gravitas of an art institution and the precision of Italian coachwork. The page opens onto an expanse of absolute black, broken only by the iconic Prancing Horse emblem floating alone in its own atmosphere. Below, the content unfolds in dramatic alternations between inky-dark cinematic sections and crisp white editorial panels. This chiaroscuro rhythm — darkness yielding to light, machinery yielding to human story — feels more like paging through a Ferrari yearbook than scrolling a commercial website. Every section is a curated vignette: a concept car dissolving from shadow, two F1 drivers posed with sculptural stillness, a lineup of production models arranged in a jewel-toned parade.
6
+
7
+ The color language is monastically restrained for a brand built on speed and emotion. Ferrari Red (`#DA291C`) appears with almost surgical sparseness — reserved for the Subscribe CTA and accent moments that need to command immediate attention. The vast majority of the interface lives in black, white, and a carefully calibrated gray scale (from `#303030` dark surfaces through `#8F8F8F` mid-tones to `#D2D2D2` light borders). Two yellows — Racing Yellow (`#FFF200`) and the deeper Modena Yellow (`#F6E500`) — exist in the token system as heritage accents for special contexts, honoring Ferrari's racing provenance. The restraint means that when red does appear, it carries the weight of the entire brand.
8
+
9
+ Typography relies on FerrariSans — a proprietary sans-serif family with medium-weight headings (500–700) and compact proportions. Display text runs at 24–26px for section titles, while the UI chrome lives at 12–16px in weights ranging from regular to bold. A secondary "Body-Font" custom typeface handles captions and utility text, rendered in uppercase with wide letter-spacing (1px) to create a label-like editorial quality. This two-font system — FerrariSans for narrative authority, Body-Font for structural annotation — gives the site a print-magazine hierarchy. No text decoration is gratuitous. Letter-spacing is tight for headlines and deliberately expanded for labels, creating a visual rhythm that alternates between urgency and composure.
10
+
11
+ **Key Characteristics:**
12
+ - Chiaroscuro layout alternating between deep black sections and clean white editorial panels
13
+ - Ferrari Red (`#DA291C`) used with extreme sparseness — accent, not atmosphere
14
+ - Prancing Horse emblem as isolated hero element on a void-black field
15
+ - FerrariSans proprietary typeface with compact proportions and medium weights
16
+ - Photo-journalism imagery: concept renders, driver portraits, lineup parades — each section is a story
17
+ - Uppercase Body-Font labels with wide letter-spacing (1px) for editorial annotation
18
+ - Nearly zero border-radius (2px default) reflecting precision engineering aesthetics
19
+ - Dual-framework architecture (PrimeReact + Element Plus) powering 32+ interactive components
20
+ - Carousel-driven hero with editorial slides and arrow/dot navigation
21
+
22
+ ## 2. Color Palette & Roles
23
+
24
+ ### Primary
25
+ - **Ferrari Red** (`#DA291C`): The iconic Rosso Corsa — primary accent and CTA color. Used for the Subscribe button, key action triggers, and brand moments where maximum visual authority is needed. The single most important color in the system (--f-color-accent-100)
26
+ - **Pure White** (`#FFFFFF`): Primary surface for editorial content panels, navigation text on dark backgrounds, and button fills. The canvas that provides breathing room between dark cinematic sections (--f-color-ui-0)
27
+
28
+ ### Secondary & Accent
29
+ - **Dark Red** (`#B01E0A`): Deeper variant of Ferrari Red for hover/pressed states and high-contrast contexts — adds dimensionality to the brand color without introducing a new hue (--f-color-accent-90)
30
+ - **Deep Red** (`#9D2211`): The most saturated dark red — used for active states and extra emphasis where even Dark Red needs more weight (--f-color-accent-80)
31
+ - **Racing Yellow** (`#FFF200`): Heritage accent from Ferrari's racing livery — reserved for special highlights and motorsport-related contexts (--f-color-yellow-hypersail)
32
+ - **Modena Yellow** (`#F6E500`): Slightly warmer and more golden than Racing Yellow — used for secondary heritage accents and category markers (--f-color-yellow)
33
+
34
+ ### Surface & Background
35
+ - **Absolute Black** (`#000000`): Hero sections, cinematic backgrounds, and the dominant dark surface — the void that makes imagery and the Prancing Horse emblem float
36
+ - **Dark Surface** (`#303030`): Secondary dark surface for footer regions, newsletter sections, and layered dark panels — slightly lifted from pure black for depth differentiation (--f-color-ui-90)
37
+ - **Light Gray Surface** (`#D2D2D2`): Subtle alternate surface for dividers and border treatments on white panels (--f-color-ui-20)
38
+ - **Overlay Dark** (`hsla(0, 0%, 7%, 0.8)`): Semi-transparent near-black for modal overlays and image caption backgrounds (--f-color-overlay-darker)
39
+
40
+ ### Neutrals & Text
41
+ - **Near Black** (`#181818`): Primary body text color on light surfaces — slightly softened from absolute black for better readability (link default color)
42
+ - **Dark Gray** (`#666666`): Secondary text and subdued UI labels — used where text needs to recede from the primary hierarchy (--f-color-black-60)
43
+ - **Mid Gray** (`#8F8F8F`): Tertiary text for metadata, timestamps, and supportive content (--f-color-black-50)
44
+ - **Silver Gray** (`#969696`): Placeholder text and disabled state indicators (--f-color-black-55)
45
+
46
+ ### Semantic & Accent
47
+ - **Warning Red** (`#F13A2C`): Accessible warning state — brighter and more orange-shifted than Ferrari Red to differentiate semantic alerts from brand expression (--f-color-accessible-warning)
48
+ - **Success Green** (`#03904A`): Confirmation and positive status indicators (--f-color-accessible-success)
49
+ - **Info Blue** (`#4C98B9`): Informational callouts, tooltips, and neutral status messaging (--f-color-accessible-info)
50
+ - **Link Hover Blue** (`#3860BE`): Interactive hover state for text links — a dignified navy-blue that signals interactivity without competing with Ferrari Red
51
+
52
+ ### Gradient System
53
+ - No explicit gradients in the token system
54
+ - Depth is achieved through photography and the binary contrast between black and white surfaces
55
+ - The overlay darker color (`hsla(0, 0%, 7%, 0.8)`) creates depth through transparency layering over imagery
56
+ - Occasional photographic gradients (light falloff in studio shots) provide atmospheric depth within image content
57
+
58
+ ## 3. Typography Rules
59
+
60
+ ### Font Family
61
+ - **FerrariSans**: Primary typeface for headings, navigation, buttons, and editorial content. A proprietary sans-serif with medium weight as the default (500), compact x-height, and precise letter-spacing control. Fallbacks: Arial, Helvetica, sans-serif
62
+ - **Body-Font**: Secondary typeface for captions, labels, and utility text. Frequently rendered in uppercase with expanded letter-spacing (1px) for an editorial label aesthetic. Used for category tags and small annotation text
63
+ - **Arial / Helvetica**: System fallback fonts used in cookie consent modals, form elements, and third-party component frameworks
64
+
65
+ ### Hierarchy
66
+
67
+ | Role | Size | Weight | Line Height | Letter Spacing | Notes |
68
+ |------|------|--------|-------------|----------------|-------|
69
+ | Section Title | 26px (1.63rem) | 500 | 1.20 | normal | FerrariSans, primary editorial headings on white backgrounds |
70
+ | Card Heading | 24px (1.50rem) | 400 | normal | normal | FerrariSans, content card titles |
71
+ | Subheading | 18px (1.13rem) | 700 | 1.20 (tight) | normal | FerrariSans, bold subsection labels |
72
+ | UI Heading | 16px (1.00rem) | 500 | 1.40 | 0.08px | FerrariSans, component headings and nav items |
73
+ | Body Bold | 16px (1.00rem) | 700 | 1.30 (tight) | normal | FerrariSans, emphasized inline text |
74
+ | Button Label | 16px (1.00rem) | 400 | normal | 1.28px | FerrariSans, primary button text with wide tracking |
75
+ | Small Button | 14.4px (0.90rem) | 700 | 1.00 (tight) | normal | FerrariSans, compact action buttons |
76
+ | Nav Link | 13px (0.81rem) | 600 | 1.20 (tight) | 0.13px | FerrariSans, navigation and footer links |
77
+ | Caption | 13px (0.81rem) | 400 | 1.50 | 0.195px | FerrariSans/Body-Font, metadata and descriptions |
78
+ | Micro Button | 12px (0.75rem) | 700 | 1.00 (tight) | 0.96px | FerrariSans, small CTA with wide tracking |
79
+ | Label Upper | 12px (0.75rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase labels and category tags |
80
+ | Micro Label | 11px (0.69rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase smallest annotation text |
81
+ | Cookie Text | 45px (2.81rem) | 400 | 1.50 | 0.195px | Arial, consent dialog oversized button text |
82
+
83
+ ### Principles
84
+ - **Proprietary identity**: FerrariSans is exclusive to Ferrari — it cannot be substituted without losing brand recognition. The font's compact proportions and medium weight default (500) convey engineering precision
85
+ - **Two-register system**: FerrariSans handles narrative voice (headings, content, buttons) while Body-Font handles structural annotation (labels, tags, micro-captions) — this mirrors print magazine conventions of editorial text vs. technical labels
86
+ - **Uppercase as emphasis tool**: Body-Font captions use `text-transform: uppercase` with expanded letter-spacing (1px) to create a visually distinct label layer that reads as "informational overlay" rather than primary content
87
+ - **Compact line-heights**: Headlines use tight line-heights (1.00–1.30) creating dense, impactful text blocks, while body text opens to 1.50 for comfortable reading — the contrast between compressed headers and relaxed body text creates visual tension
88
+ - **Weight range 400–700**: Four weights active in the system (400, 500, 600, 700) — significantly more range than Tesla but still controlled. 500 is the default "voice," 700 is for emphasis, 400 for body, 600 for navigation
89
+
90
+ ## 4. Component Stylings
91
+
92
+ ### Buttons
93
+ Ferrari's buttons are minimal white rectangles with near-zero radius — the CTA philosophy is "architecture, not decoration."
94
+
95
+ **Primary CTA (White)** — The default action button:
96
+ - Default: bg `#FFFFFF`, text `#000000`, fontSize 16px (FerrariSans), letterSpacing 1.28px, padding 12px 10px, borderRadius 2px, border 1px solid `#000000`
97
+ - Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
98
+ - Focus: bg `#1EAEDB`, text `#FFFFFF`, border 1px solid `#FFFFFF`, outline 2px solid `#000000`, opacity 0.9
99
+ - Used for: "Configure" actions, secondary calls to action on light backgrounds
100
+
101
+ **Subscribe CTA (Red)** — The high-emphasis action button:
102
+ - Default: bg `#DA291C` (Ferrari Red), text `#FFFFFF`, borderRadius 2px, padding 12px 10px
103
+ - Used for: Newsletter subscribe, primary conversion actions on dark backgrounds
104
+ - The only button that uses Ferrari Red — reserved for maximum visual priority
105
+
106
+ **Ghost Button (White Border)** — For dark backgrounds:
107
+ - Default: bg transparent, text `#FFFFFF`, border 1px solid `#FFFFFF`, borderRadius 2px, padding 12px 10px
108
+ - Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
109
+ - Focus: same as Primary CTA focus state
110
+ - Used for: Actions overlaid on dark imagery and cinematic sections
111
+
112
+ **Text Link** — Inline navigation:
113
+ - Default: text `#181818` (on light surfaces) or `#FFFFFF` (on dark), no border, no background
114
+ - Hover: color shifts to `#3860BE` (Link Hover Blue), decoration removes underline
115
+ - White variant on dark surfaces uses underline decoration by default
116
+ - FerrariSans or Body-Font depending on context (Body-Font for uppercase label links)
117
+
118
+ ### Cards & Containers
119
+
120
+ **Editorial Card** (Content sections):
121
+ - Background: white
122
+ - Border: none
123
+ - Shadow: none
124
+ - Layout: image above, heading + caption below
125
+ - Image treatment: full-width within card, no rounded corners on image
126
+ - Text: FerrariSans heading (16–24px) + Body-Font caption (12–13px uppercase)
127
+
128
+ **Dark Cinematic Card** (Hero/feature sections):
129
+ - Background: `#000000` (Absolute Black)
130
+ - Full-bleed imagery with text overlay
131
+ - No border, no shadow — the darkness IS the container
132
+ - Text: white, positioned with careful negative space
133
+
134
+ **Vehicle Lineup** (Model carousel):
135
+ - Horizontal scrollable row of vehicle thumbnails
136
+ - Each vehicle on a neutral/white background
137
+ - Navigation: arrow buttons + dot indicators
138
+ - Background shifts to showcase the selected model's color context
139
+
140
+ ### Inputs & Forms
141
+
142
+ **Newsletter Input** (Footer section):
143
+ - Background: transparent on dark surface
144
+ - Text: white
145
+ - Border: 1px solid `#CCCCCC`
146
+ - Placeholder: `#969696` (Silver Gray)
147
+ - Focus: border color transitions (standard browser focus ring)
148
+ - Label: Body-Font uppercase, 12px, 1px letter-spacing
149
+
150
+ **Cookie Consent** (Modal):
151
+ - Background: white
152
+ - Border radius: 8px (dialog)
153
+ - Shadow: `rgb(153, 153, 153) 1px 1px 1px 0px`
154
+ - Buttons: oversized (45px Arial), white bg with black border
155
+ - Uses standard PrimeReact/Element Plus modal framework
156
+
157
+ ### Navigation
158
+ - **Desktop**: Prancing Horse logo centered at top of page, primary navigation below — not a traditional horizontal nav bar but a full-width header block on black background
159
+ - **Logo**: Centered Prancing Horse emblem (44×42px) on absolute black — the single most prominent UI element
160
+ - **Links**: FerrariSans, 13px, weight 600, white text on dark backgrounds
161
+ - **Mobile**: Hamburger collapse to vertical navigation drawer
162
+ - **Footer**: Multi-column layout on `#303030` (Dark Surface) with category links in Body-Font uppercase
163
+ - **No sticky nav behavior** observed — the page scrolls naturally with the header moving off-screen
164
+
165
+ ### Image Treatment
166
+ - **Hero**: Full-width editorial photography on black backgrounds — concept cars in atmospheric studio lighting, editorial portraits with cinematic composition
167
+ - **Aspect ratios**: Mixed — landscape (16:9) for hero sections, near-square for portrait/driver imagery, wide panoramic for vehicle lineups
168
+ - **Full-bleed vs padded**: Hero images are full-bleed edge-to-edge; editorial content images are padded within white containers
169
+ - **Lazy loading**: Below-fold sections use progressive loading (PrimeReact framework handles this)
170
+ - **Image quality**: High-resolution photography with studio lighting — no user-generated or lifestyle imagery. Every image is art-directed
171
+
172
+ ### Carousel Component
173
+ - Editorial carousel with multiple slides
174
+ - Dot indicators for slide position
175
+ - Arrow navigation (left/right) at slide edges
176
+ - Auto-advancing with manual override
177
+ - Content: mixed editorial — event recaps, model launches, racing highlights
178
+
179
+ ## 5. Layout Principles
180
+
181
+ ### Spacing System
182
+ - **Base unit**: 8px (detected system base)
183
+ - **Scale**: 1px, 2px, 4px, 5px, 6px, 9px, 10px, 11.2px, 12px, 13px, 15px, 16px, 19px, 20px, 25px
184
+ - **Button padding**: 12px vertical, 10px horizontal — compact and precise
185
+ - **Section padding**: Generous vertical spacing (40–80px estimated) between major content blocks
186
+ - **Card gaps**: 16–20px between grid items
187
+ - **Footer padding**: 25px horizontal sections within the dark footer block
188
+
189
+ ### Grid & Container
190
+ - **Max width**: 1920px (largest breakpoint) with content constraining at narrower widths
191
+ - **Hero**: Full-bleed on black, content centered
192
+ - **Editorial sections**: 2-column layouts with image + text, alternating sides
193
+ - **Vehicle lineup**: Horizontal scroll/carousel, 5–6 models visible at desktop width
194
+ - **Footer**: 4-column grid for link categories
195
+
196
+ ### Whitespace Philosophy
197
+ Ferrari treats white space as a gallery wall. Each section — whether a concept car render on black void or a pair of F1 drivers on neutral gray — is given its own "room" of breathing space. The alternating black/white sections create a pacing rhythm: dark = immersive moment, white = editorial content, dark = immersive moment. This cadence makes scrolling feel like turning pages in a luxury publication. White space between editorial cards is moderate (not Tesla-extreme) because Ferrari is telling stories, not exhibiting single objects.
198
+
199
+ ### Border Radius Scale
200
+ | Value | Context |
201
+ |-------|---------|
202
+ | 1px | Subtle softening on small inline elements (spans) |
203
+ | 2px | Default for buttons, inputs, and interactive elements — barely perceptible, razor-precision |
204
+ | 8px | Modal dialogs and overlay containers — the "softest" structural radius |
205
+ | 50% | Circular elements: carousel dots, avatar thumbnails, slider handles |
206
+
207
+ ## 6. Depth & Elevation
208
+
209
+ | Level | Treatment | Use |
210
+ |-------|-----------|-----|
211
+ | Level 0 (Flat) | No shadow, no border | Default state for all content sections and cards |
212
+ | Level 1 (Subtle) | `rgb(153, 153, 153) 1px 1px 1px 0px` | Rare — cookie consent dialogs and dropdown menus |
213
+ | Level 2 (Overlay) | `hsla(0, 0%, 7%, 0.8)` backdrop | Modal overlays and image caption backgrounds |
214
+ | Level 3 (Border) | `1px solid #CCCCCC` | Input fields, form containers — depth through delineation not shadow |
215
+
216
+ ### Shadow Philosophy
217
+ Ferrari's approach to elevation is nearly as flat as Tesla's, but with a different rationale. Where Tesla avoids shadows for minimalism, Ferrari avoids them because the editorial photography provides all the visual depth needed. The single shadow token (`rgb(153, 153, 153) 1px 1px 1px 0px`) is extremely subtle — a 1-pixel whisper used only in utilitarian contexts like consent dialogs. The site communicates hierarchy through three strategies:
218
+ 1. **Surface color contrast**: Black sections vs. white sections create unmistakable layering
219
+ 2. **Overlay transparency**: The `--f-color-overlay-darker` at 80% opacity creates depth without shadow
220
+ 3. **Photographic depth**: Studio-lit car imagery with reflections, ground shadows, and atmospheric haze provides all the visual dimensionality
221
+
222
+ ### Decorative Depth
223
+ - No UI gradients, no glows, no blur effects on interface elements
224
+ - The Prancing Horse logo on black creates a "floating in void" effect through pure contrast — no glow or shadow needed
225
+ - Dark-to-light section transitions are hard cuts, not gradient blends — reinforcing the editorial page-turn metaphor
226
+
227
+ ## 7. Do's and Don'ts
228
+
229
+ ### Do
230
+ - Use Ferrari Red (`#DA291C`) sparingly — only for primary CTAs and brand-critical moments. Its power comes from restraint
231
+ - Alternate between black cinematic sections and white editorial sections to create the signature chiaroscuro rhythm
232
+ - Use FerrariSans at weight 500 as the default heading voice — it's the typographic equivalent of the engine note
233
+ - Apply Body-Font in uppercase with 1px letter-spacing for all labels, category tags, and structural annotations
234
+ - Keep border-radius at 2px for all interactive elements — razor precision, not rounded friendliness
235
+ - Let photography carry the emotional weight — every image should be art-directed studio quality
236
+ - Use the Prancing Horse emblem as a standalone hero element on black — never crowd it with adjacent content
237
+ - Maintain the 12px/10px button padding ratio — compact, purposeful, no excess
238
+ - Use `#181818` (Near Black) for body text instead of pure `#000000` — the subtle warmth improves readability
239
+ - Reserve the yellow accents (`#FFF200`, `#F6E500`) strictly for motorsport and racing heritage contexts
240
+
241
+ ### Don't
242
+ - Scatter Ferrari Red across the interface as decoration — it's a CTA signal, not a theme color
243
+ - Use rounded-pill buttons or large border-radii — the 2px precision is non-negotiable
244
+ - Add box-shadows to cards or content containers — depth comes from surface color contrast and photography
245
+ - Mix FerrariSans and Body-Font within the same text block — they serve separate hierarchical functions
246
+ - Use colorful backgrounds (blue, green, etc.) for sections — the palette is exclusively black/white/gray with red and yellow accents
247
+ - Apply text transforms to FerrariSans headings — uppercase is reserved for Body-Font labels only
248
+ - Display low-quality or user-generated imagery — every photograph must meet editorial standards
249
+ - Use the Link Hover Blue (`#3860BE`) for anything other than interactive hover states — it's not a brand color
250
+ - Create busy layouts with multiple competing focal points — each section should have one clear story
251
+ - Override the semantic color system (warning, success, info) with brand colors — `#F13A2C` warning is deliberately different from `#DA291C` brand red
252
+
253
+ ## 8. Responsive Behavior
254
+
255
+ ### Breakpoints
256
+ | Name | Width | Key Changes |
257
+ |------|-------|-------------|
258
+ | Mobile Small | ≤375px | Single-column, minimal padding (12px), stacked navigation, hero text scales to ~18px, full-width CTAs |
259
+ | Mobile | 376–600px | Single-column, slightly larger padding (16px), hamburger nav, body text at 13px |
260
+ | Tablet Small | 601–768px | 2-column editorial grid begins, hero images maintain full-width, footer switches to 2-column |
261
+ | Tablet | 769–960px | Full 2-column layout, carousel shows 3 vehicles, padding increases to 20px |
262
+ | Desktop | 961–1280px | Full navigation, 2-column editorial with larger imagery, vehicle lineup shows 5 models |
263
+ | Large Desktop | 1281–1920px | Maximum content width, generous whitespace, hero photography at full cinematic scale |
264
+
265
+ ### Touch Targets
266
+ - Primary CTA buttons: minimum 44px height with 12px vertical padding (meets WCAG AAA 44×44px target)
267
+ - Navigation links: 13px text with 1.50 line-height and adequate spacing between items
268
+ - Carousel arrows: 44px+ touch targets at viewport edges
269
+ - Footer links: grouped with sufficient vertical spacing (16–20px) for touch accuracy
270
+
271
+ ### Collapsing Strategy
272
+ - **Navigation**: Full horizontal nav collapses to centered Prancing Horse logo + hamburger menu on mobile
273
+ - **Editorial sections**: 2-column image+text layouts collapse to single-column with image stacking above text
274
+ - **Vehicle lineup**: Horizontal carousel maintains scroll behavior but reduces visible models from 5 to 2–3
275
+ - **Footer**: 4-column link grid collapses to 2-column on tablet, single-column accordion on mobile
276
+ - **Hero carousel**: Full-width at all breakpoints, dot indicators and arrows scale proportionally
277
+ - **Spacing reduction**: Section padding reduces from 40–80px (desktop) to 20–40px (mobile), maintaining proportional breathing room
278
+
279
+ ### Image Behavior
280
+ - Hero images: full-bleed at all breakpoints, using `object-fit: cover` to maintain cinematic composition
281
+ - Editorial images: responsive within their containers, maintaining aspect ratio
282
+ - Vehicle lineup: thumbnail size scales but maintains consistent car-to-frame proportions
283
+ - Art direction: mobile crops may tighten on vehicle subjects, reducing environmental context
284
+ - Lazy loading: PrimeReact handles progressive image loading for below-fold content
285
+
286
+ ## 9. Agent Prompt Guide
287
+
288
+ ### Quick Color Reference
289
+ - Primary CTA: "Ferrari Red (#DA291C)"
290
+ - Background Light: "Pure White (#FFFFFF)"
291
+ - Background Dark: "Absolute Black (#000000)"
292
+ - Secondary Dark Surface: "Dark Surface (#303030)"
293
+ - Heading text (light bg): "Near Black (#181818)"
294
+ - Body text: "Dark Gray (#666666)"
295
+ - Tertiary text: "Mid Gray (#8F8F8F)"
296
+ - Border: "Border Gray (#CCCCCC)"
297
+ - Button Hover: "Teal (#1EAEDB)"
298
+ - Link Hover: "Link Blue (#3860BE)"
299
+
300
+ ### Example Component Prompts
301
+ - "Create a hero section on Absolute Black (#000000) background with a centered logo emblem at the top, generous vertical spacing (80px+), and a single editorial headline in FerrariSans at 26px weight 500 in white, with a small Body-Font uppercase caption (12px, 1px letter-spacing) in Silver Gray (#969696) below"
302
+ - "Design a Subscribe section on Dark Surface (#303030) with a left-aligned headline in white FerrariSans (24px/500), a subtitle in Mid Gray (#8F8F8F, 13px), an email input with transparent background and 1px #CCCCCC border, and a Ferrari Red (#DA291C) Subscribe button with white text, 2px border-radius, and 12px 10px padding"
303
+ - "Build an editorial card on white background with a full-width image (16:9 ratio) above, a FerrariSans heading (16px/700, Near Black #181818) below, and a Body-Font uppercase label (11px, 1px letter-spacing, Mid Gray #8F8F8F) as the category tag — no border, no shadow, no border-radius"
304
+ - "Create a vehicle lineup carousel showing 5 car thumbnails in a horizontal scroll on white background, with left/right arrow navigation, dot indicators below, and a FerrariSans model name (16px/500) beneath each vehicle"
305
+ - "Design a dark cinematic section with full-bleed studio photography of a concept car on Absolute Black, a white FerrariSans headline (26px/500) positioned in the lower-left with generous padding (40px), and a Ghost Button (transparent bg, 1px white border, white text, 2px radius) as the CTA"
306
+
307
+ ### Iteration Guide
308
+ When refining existing screens generated with this design system:
309
+ 1. Focus on ONE component at a time — Ferrari's editorial rhythm means each section is a self-contained vignette
310
+ 2. Reference specific color names and hex codes from this document — the palette is small but each color has a precise role
311
+ 3. Use natural language descriptions, not CSS values — "razor-sharp 2px corners" conveys intent better than "border-radius: 2px"
312
+ 4. Describe the desired "feel" alongside specific measurements — "editorial magazine page-turn between sections" communicates the layout philosophy better than "margin-bottom: 80px"
313
+ 5. Always maintain the chiaroscuro contrast — if a section feels flat, check whether it needs to be on black or white to maintain the alternating rhythm
314
+ 6. Reserve Ferrari Red for ONE element per screen — if red appears in more than one place, it loses its authority
@@ -0,0 +1,23 @@
1
+ # Ferrari Inspired Design System
2
+
3
+ [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/ferrari/DESIGN.md) extracted from the public [Ferrari](https://ferrari.com/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
4
+
5
+ ## Files
6
+
7
+ | File | Description |
8
+ |------|-------------|
9
+ | `DESIGN.md` | Complete design system documentation (9 sections) |
10
+ | `preview.html` | Interactive design token catalog (light) |
11
+ | `preview-dark.html` | Interactive design token catalog (dark) |
12
+
13
+ Use [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/ferrari/DESIGN.md) to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Ferrari design language.
14
+
15
+ ## Preview
16
+
17
+ A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
18
+
19
+ ### Dark Mode
20
+ ![Ferrari Design System — Dark Mode](https://pub-2e4ecbcbc9b24e7b93f1a6ab5b2bc71f.r2.dev/designs/ferrari/preview-dark-screenshot.png)
21
+
22
+ ### Light Mode
23
+ ![Ferrari Design System — Light Mode](https://pub-2e4ecbcbc9b24e7b93f1a6ab5b2bc71f.r2.dev/designs/ferrari/preview-screenshot.png)