|
10 | 10 | * { margin: 0; padding: 0; box-sizing: border-box; } |
11 | 11 |
|
12 | 12 | body { |
13 | | - background: {{BG_COLOR}}; |
| 13 | + background: #0A0A0A; |
14 | 14 | display: flex; |
15 | 15 | align-items: center; |
16 | 16 | justify-content: center; |
|
20 | 20 | .banner { |
21 | 21 | width: 1280px; |
22 | 22 | height: 640px; |
23 | | - background: {{BG_COLOR}}; |
| 23 | + background: #0A0A0A; |
24 | 24 | position: relative; |
25 | 25 | overflow: hidden; |
26 | 26 | display: flex; |
|
33 | 33 | left: 0; |
34 | 34 | right: 0; |
35 | 35 | height: 4px; |
36 | | - background: linear-gradient(90deg, {{BRAND_PRIMARY}} 0%, {{BRAND_SECONDARY}} 50%, {{BRAND_ACCENT}} 100%); |
| 36 | + background: linear-gradient(90deg, #FAFAF9 0%, #3178C6 50%, #06B6D4 100%); |
37 | 37 | } |
38 | 38 |
|
39 | 39 | /* Subtle blueprint grid */ |
|
73 | 73 | font-family: 'Space Grotesk', system-ui, sans-serif; |
74 | 74 | font-size: 26px; |
75 | 75 | font-weight: 700; |
76 | | - color: {{BRAND_PRIMARY}}; |
| 76 | + color: #FAFAF9; |
77 | 77 | letter-spacing: 4px; |
78 | 78 | text-transform: uppercase; |
79 | 79 | margin-bottom: 22px; |
|
106 | 106 | border: 2px solid; |
107 | 107 | } |
108 | 108 |
|
109 | | - .badge-1 { border-color: {{BRAND_PRIMARY}}; color: {{BRAND_PRIMARY}}; } |
110 | | - .badge-2 { border-color: {{BRAND_SECONDARY}}; color: {{BRAND_SECONDARY}}; } |
111 | | - .badge-3 { border-color: {{BRAND_ACCENT}}; color: {{BRAND_ACCENT}}; } |
| 109 | + .badge-1 { border-color: #FAFAF9; color: #FAFAF9; } |
| 110 | + .badge-2 { border-color: #3178C6; color: #3178C6; } |
| 111 | + .badge-3 { border-color: #06B6D4; color: #06B6D4; } |
112 | 112 |
|
113 | 113 | .versions { |
114 | 114 | font-family: 'JetBrains Mono', monospace; |
|
181 | 181 | } |
182 | 182 |
|
183 | 183 | .comment { color: #A1A1AA; } |
184 | | - .keyword { color: {{BRAND_PRIMARY}}; } |
185 | | - .function { color: {{BRAND_SECONDARY}}; } |
| 184 | + .keyword { color: #FAFAF9; } |
| 185 | + .function { color: #3178C6; } |
186 | 186 | .string { color: #34D399; } |
187 | | - .operator { color: {{BRAND_ACCENT}}; } |
| 187 | + .operator { color: #06B6D4; } |
188 | 188 | .type { color: #3178C6; } |
189 | 189 | .cursor { |
190 | 190 | display: inline-block; |
191 | 191 | width: 8px; |
192 | 192 | height: 17px; |
193 | | - background: {{BRAND_PRIMARY}}; |
| 193 | + background: #FAFAF9; |
194 | 194 | vertical-align: text-bottom; |
195 | 195 | } |
196 | 196 |
|
|
211 | 211 | } |
212 | 212 |
|
213 | 213 | .foundation-name .open { color: #FAFAF9; } |
214 | | - .foundation-name .aec { color: {{BRAND_PRIMARY}}; } |
| 214 | + .foundation-name .aec { color: #FAFAF9; } |
215 | 215 |
|
216 | 216 | .foundation-sub { |
217 | 217 | font-family: 'Inter', system-ui, sans-serif; |
|
228 | 228 |
|
229 | 229 | <!-- Left: text content --> |
230 | 230 | <div class="left"> |
231 | | - <div class="number">0</div> |
| 231 | + <div class="number">42</div> |
232 | 232 | <div class="title">Deterministic Skills</div> |
233 | | - <div class="subtitle">for {{TECH_TAGLINE}}</div> |
| 233 | + <div class="subtitle">for shadcn ui copy-not-install paradigm</div> |
234 | 234 |
|
235 | 235 | <div class="badges"> |
236 | | - <div class="badge badge-1">{{BADGE_1}}</div> |
237 | | - <div class="badge badge-2">{{BADGE_2}}</div> |
238 | | - <div class="badge badge-3">{{BADGE_3}}</div> |
| 236 | + <div class="badge badge-1">shadcn@4.7</div> |
| 237 | + <div class="badge badge-2">Tailwind v4</div> |
| 238 | + <div class="badge badge-3">Radix UI</div> |
239 | 239 | </div> |
240 | 240 |
|
241 | 241 | <div class="versions"> |
242 | | - {{VERSION_LINE}} |
| 242 | + shadcn ui evergreen-2026 <span class="sep">│</span> React 18+ / 19 <span class="sep">│</span> Tailwind v3.4 / v4 |
243 | 243 | </div> |
244 | 244 | </div> |
245 | 245 |
|
|
250 | 250 | <div class="dot dot-red"></div> |
251 | 251 | <div class="dot dot-yellow"></div> |
252 | 252 | <div class="dot dot-green"></div> |
253 | | - <span class="code-filename">{{CODE_FILENAME}}</span> |
| 253 | + <span class="code-filename">button.tsx</span> |
254 | 254 | </div> |
255 | 255 | <div class="code-body"> |
256 | | - {{CODE_BODY}} |
| 256 | + <span class="keyword">import</span> { cva } <span class="keyword">from</span> <span class="string">"class-variance-authority"</span>;<br> |
| 257 | + <br> |
| 258 | + <span class="keyword">const</span> <span class="function">buttonVariants</span> = <span class="function">cva</span>(<br> |
| 259 | + <span class="string">"inline-flex items-center..."</span>,<br> |
| 260 | + {<br> |
| 261 | + variants: {<br> |
| 262 | + variant: {<br> |
| 263 | + <span class="comment">// default | destructive |</span><br> |
| 264 | + <span class="comment">// outline | secondary | ghost | link</span><br> |
| 265 | + },<br> |
| 266 | + },<br> |
| 267 | + }<br> |
| 268 | + ); |
257 | 269 | <span class="cursor"></span> |
258 | 270 | </div> |
259 | 271 | </div> |
|
271 | 283 | <!-- |
272 | 284 | TEMPLATE VARIABLES: |
273 | 285 | ================== |
274 | | -{{BG_COLOR}} — Background color (e.g., #1A1A2E, #2A2A32) |
275 | | -{{BRAND_PRIMARY}} — Primary brand color (e.g., #61DAFB for React, #FFC131 for Tauri) |
276 | | -{{BRAND_SECONDARY}} — Secondary color (e.g., #3178C6 for TypeScript) |
277 | | -{{BRAND_ACCENT}} — Accent color (e.g., #A855F7 for purple) |
| 286 | +#0A0A0A — Background color (e.g., #1A1A2E, #2A2A32) |
| 287 | +#FAFAF9 — Primary brand color (e.g., #61DAFB for React, #FFC131 for Tauri) |
| 288 | +#3178C6 — Secondary color (e.g., #3178C6 for TypeScript) |
| 289 | +#06B6D4 — Accent color (e.g., #A855F7 for purple) |
278 | 290 | 0 — Number of skills (e.g., 24, 27) |
279 | | -{{TECH_TAGLINE}} — Short tagline (e.g., "expert-level React 18 & 19 development") |
280 | | -{{BADGE_1}} — First badge text (e.g., "React 18 + 19") |
281 | | -{{BADGE_2}} — Second badge text (e.g., "TypeScript") |
282 | | -{{BADGE_3}} — Third badge text (e.g., "18 Hooks") |
283 | | -{{VERSION_LINE}} — Version info with HTML separators using <span class="sep">│</span> |
284 | | -{{CODE_FILENAME}} — Filename in code window titlebar (e.g., "App.tsx", "lib.rs") |
285 | | -{{CODE_BODY}} — HTML-formatted code snippet using span classes: .comment, .keyword, .function, .string, .operator, .type |
| 291 | +shadcn ui copy-not-install paradigm — Short tagline (e.g., "expert-level React 18 & 19 development") |
| 292 | +shadcn@4.7 — First badge text (e.g., "React 18 + 19") |
| 293 | +Tailwind v4 — Second badge text (e.g., "TypeScript") |
| 294 | +Radix UI — Third badge text (e.g., "18 Hooks") |
| 295 | +shadcn ui evergreen-2026 <span class="sep">│</span> React 18+ / 19 <span class="sep">│</span> Tailwind v3.4 / v4 — Version info with HTML separators using <span class="sep">│</span> |
| 296 | +button.tsx — Filename in code window titlebar (e.g., "App.tsx", "lib.rs") |
| 297 | +<span class="keyword">import</span> { cva } <span class="keyword">from</span> <span class="string">"class-variance-authority"</span>;<br> |
| 298 | + <br> |
| 299 | + <span class="keyword">const</span> <span class="function">buttonVariants</span> = <span class="function">cva</span>(<br> |
| 300 | + <span class="string">"inline-flex items-center..."</span>,<br> |
| 301 | + {<br> |
| 302 | + variants: {<br> |
| 303 | + variant: {<br> |
| 304 | + <span class="comment">// default | destructive |</span><br> |
| 305 | + <span class="comment">// outline | secondary | ghost | link</span><br> |
| 306 | + },<br> |
| 307 | + },<br> |
| 308 | + }<br> |
| 309 | + ); — HTML-formatted code snippet using span classes: .comment, .keyword, .function, .string, .operator, .type |
286 | 310 |
|
287 | 311 | BRAND COLOR REFERENCE: |
288 | 312 | ==================== |
|
0 commit comments