@brainfish-ai/devdoc 0.1.36 → 0.1.38
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.
- package/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +382 -434
- package/ai-agents/.claude/skills/create-doc/SKILL.md +47 -10
- package/ai-agents/.claude/skills/update-doc/SKILL.md +40 -15
- package/ai-agents/.claude/skills/whisk-theme/SKILL.md +561 -0
- package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +211 -153
- package/ai-agents/.cursor/rules/devdoc-create.mdc +17 -5
- package/ai-agents/.cursor/rules/devdoc-update.mdc +29 -12
- package/ai-agents/.cursor/rules/devdoc-whisk-theme.mdc +301 -0
- package/ai-agents/schemas/code-graph.schema.json +413 -0
- package/ai-agents/schemas/context.schema.json +20 -0
- package/dist/cli/commands/ai.js +5 -1
- package/dist/cli/commands/create.js +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: whisk-theme
|
|
3
|
+
description: Analyze repository branding and generate custom documentation theme with branded components.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
When asked to "whisk theme", "generate theme", "customize theme", or "match branding":
|
|
9
|
+
|
|
10
|
+
### Step 1: Scan for Brand Colors
|
|
11
|
+
|
|
12
|
+
Search repository for brand colors in priority order:
|
|
13
|
+
|
|
14
|
+
**Tailwind Config** (`tailwind.config.js/ts`):
|
|
15
|
+
```javascript
|
|
16
|
+
theme: { colors: { primary: '#xxx', brand: '#xxx' } }
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**CSS Variables** (`globals.css`, `variables.css`, `app.css`):
|
|
20
|
+
```css
|
|
21
|
+
:root { --primary: #xxx; --brand-color: #xxx; }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**UI Frameworks**:
|
|
25
|
+
- Chakra: `colors.brand.500`
|
|
26
|
+
- MUI: `palette.primary.main`
|
|
27
|
+
- shadcn: `--primary: H S% L%`
|
|
28
|
+
|
|
29
|
+
### Step 2: Scan for Logo & Fonts
|
|
30
|
+
|
|
31
|
+
**Logo**: `public/logo.svg`, `assets/logo.*`, `favicon.svg`
|
|
32
|
+
**Fonts**: Tailwind fontFamily, CSS font-family, Next.js font imports
|
|
33
|
+
|
|
34
|
+
### Step 3: Present Findings
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
🎨 Brand Analysis Complete!
|
|
38
|
+
|
|
39
|
+
COLORS:
|
|
40
|
+
Primary: #3B82F6 ████ (from tailwind.config.js)
|
|
41
|
+
|
|
42
|
+
LOGO: ✓ public/logo.svg
|
|
43
|
+
FONT: Inter
|
|
44
|
+
|
|
45
|
+
Apply to docs? (yes/customize/cancel)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 4: Update Theme Files
|
|
49
|
+
|
|
50
|
+
#### theme.json
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"$schema": "https://devdoc.sh/theme.json",
|
|
54
|
+
"name": "{ProductName} Docs",
|
|
55
|
+
"colors": {
|
|
56
|
+
"primary": "{primary}",
|
|
57
|
+
"primaryLight": "{lighten_15%}",
|
|
58
|
+
"primaryDark": "{darken_15%}"
|
|
59
|
+
},
|
|
60
|
+
"typography": {
|
|
61
|
+
"fontFamily": "{font}, system-ui, sans-serif"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### custom.css
|
|
67
|
+
```css
|
|
68
|
+
:root {
|
|
69
|
+
--devdoc-primary: {primary};
|
|
70
|
+
--devdoc-primary-light: {primaryLight};
|
|
71
|
+
--devdoc-primary-dark: {primaryDark};
|
|
72
|
+
--devdoc-font-family: '{font}', system-ui, sans-serif;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 5: Update Branded Components
|
|
77
|
+
|
|
78
|
+
Generate component overrides based on brand colors and product type.
|
|
79
|
+
|
|
80
|
+
#### Callouts & Notices
|
|
81
|
+
|
|
82
|
+
```css
|
|
83
|
+
/* Branded callouts */
|
|
84
|
+
.callout-info {
|
|
85
|
+
background: linear-gradient(135deg, var(--devdoc-primary-light) 0%, transparent 100%);
|
|
86
|
+
border-left: 4px solid var(--devdoc-primary);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.callout-tip {
|
|
90
|
+
border-left-color: var(--devdoc-primary);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.callout-warning {
|
|
94
|
+
border-left-color: #f59e0b;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.callout-danger {
|
|
98
|
+
border-left-color: #ef4444;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Cards & Card Groups
|
|
103
|
+
|
|
104
|
+
```css
|
|
105
|
+
/* Branded cards */
|
|
106
|
+
.card {
|
|
107
|
+
border: 1px solid var(--border);
|
|
108
|
+
border-radius: 0.5rem;
|
|
109
|
+
transition: border-color 0.2s, box-shadow 0.2s;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.card:hover {
|
|
113
|
+
border-color: var(--devdoc-primary);
|
|
114
|
+
box-shadow: 0 4px 12px rgba(var(--devdoc-primary-rgb), 0.15);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.card-icon {
|
|
118
|
+
color: var(--devdoc-primary);
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### Tabs
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
/* Branded tabs */
|
|
126
|
+
.tabs-trigger[data-state="active"] {
|
|
127
|
+
color: var(--devdoc-primary);
|
|
128
|
+
border-bottom-color: var(--devdoc-primary);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.tabs-trigger:hover {
|
|
132
|
+
color: var(--devdoc-primary-dark);
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
#### Accordions
|
|
137
|
+
|
|
138
|
+
```css
|
|
139
|
+
/* Branded accordions */
|
|
140
|
+
.accordion-trigger:hover {
|
|
141
|
+
color: var(--devdoc-primary);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.accordion-trigger[data-state="open"] {
|
|
145
|
+
color: var(--devdoc-primary);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.accordion-trigger[data-state="open"] svg {
|
|
149
|
+
color: var(--devdoc-primary);
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### Buttons
|
|
154
|
+
|
|
155
|
+
```css
|
|
156
|
+
/* Primary button */
|
|
157
|
+
.btn-primary {
|
|
158
|
+
background-color: var(--devdoc-primary);
|
|
159
|
+
color: white;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.btn-primary:hover {
|
|
163
|
+
background-color: var(--devdoc-primary-dark);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Secondary/outline button */
|
|
167
|
+
.btn-secondary {
|
|
168
|
+
border: 1px solid var(--devdoc-primary);
|
|
169
|
+
color: var(--devdoc-primary);
|
|
170
|
+
background: transparent;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.btn-secondary:hover {
|
|
174
|
+
background-color: var(--devdoc-primary);
|
|
175
|
+
color: white;
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
#### Code Blocks
|
|
180
|
+
|
|
181
|
+
```css
|
|
182
|
+
/* Branded code blocks */
|
|
183
|
+
.code-block {
|
|
184
|
+
border: 1px solid var(--border);
|
|
185
|
+
border-radius: 0.5rem;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.code-block-header {
|
|
189
|
+
background: var(--muted);
|
|
190
|
+
border-bottom: 1px solid var(--border);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.code-block .copy-button:hover {
|
|
194
|
+
color: var(--devdoc-primary);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/* Syntax highlighting accent */
|
|
198
|
+
.token.function,
|
|
199
|
+
.token.class-name {
|
|
200
|
+
color: var(--devdoc-primary);
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### API Playground
|
|
205
|
+
|
|
206
|
+
```css
|
|
207
|
+
/* API playground branding */
|
|
208
|
+
.api-method-get {
|
|
209
|
+
background-color: #10b981;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.api-method-post {
|
|
213
|
+
background-color: var(--devdoc-primary);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.api-method-put {
|
|
217
|
+
background-color: #f59e0b;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.api-method-delete {
|
|
221
|
+
background-color: #ef4444;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.try-it-button {
|
|
225
|
+
background-color: var(--devdoc-primary);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.try-it-button:hover {
|
|
229
|
+
background-color: var(--devdoc-primary-dark);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
#### Navigation
|
|
234
|
+
|
|
235
|
+
```css
|
|
236
|
+
/* Sidebar navigation */
|
|
237
|
+
.nav-link {
|
|
238
|
+
color: var(--foreground);
|
|
239
|
+
transition: color 0.2s;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.nav-link:hover {
|
|
243
|
+
color: var(--devdoc-primary);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.nav-link.active {
|
|
247
|
+
color: var(--devdoc-primary);
|
|
248
|
+
font-weight: 500;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.nav-group-title {
|
|
252
|
+
color: var(--muted-foreground);
|
|
253
|
+
font-weight: 600;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Tab navigation */
|
|
257
|
+
.nav-tab.active {
|
|
258
|
+
color: var(--devdoc-primary);
|
|
259
|
+
border-bottom: 2px solid var(--devdoc-primary);
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
#### Search
|
|
264
|
+
|
|
265
|
+
```css
|
|
266
|
+
/* Search styling */
|
|
267
|
+
.search-input:focus {
|
|
268
|
+
border-color: var(--devdoc-primary);
|
|
269
|
+
box-shadow: 0 0 0 2px rgba(var(--devdoc-primary-rgb), 0.2);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.search-result:hover {
|
|
273
|
+
background-color: var(--muted);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.search-result-title mark {
|
|
277
|
+
background-color: rgba(var(--devdoc-primary-rgb), 0.2);
|
|
278
|
+
color: var(--devdoc-primary-dark);
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
#### Table of Contents
|
|
283
|
+
|
|
284
|
+
```css
|
|
285
|
+
/* TOC styling */
|
|
286
|
+
.toc-link {
|
|
287
|
+
color: var(--muted-foreground);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.toc-link:hover {
|
|
291
|
+
color: var(--devdoc-primary);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.toc-link.active {
|
|
295
|
+
color: var(--devdoc-primary);
|
|
296
|
+
font-weight: 500;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.toc-indicator {
|
|
300
|
+
background-color: var(--devdoc-primary);
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
#### Steps Component
|
|
305
|
+
|
|
306
|
+
```css
|
|
307
|
+
/* Steps styling */
|
|
308
|
+
.step-number {
|
|
309
|
+
background-color: var(--devdoc-primary);
|
|
310
|
+
color: white;
|
|
311
|
+
border-radius: 50%;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.step-connector {
|
|
315
|
+
background-color: var(--border);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.step-completed .step-number {
|
|
319
|
+
background-color: var(--devdoc-primary);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.step-completed .step-connector {
|
|
323
|
+
background-color: var(--devdoc-primary);
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### Tooltips
|
|
328
|
+
|
|
329
|
+
```css
|
|
330
|
+
/* Tooltip styling */
|
|
331
|
+
.tooltip {
|
|
332
|
+
background-color: var(--foreground);
|
|
333
|
+
color: var(--background);
|
|
334
|
+
border-radius: 0.375rem;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.tooltip-arrow {
|
|
338
|
+
fill: var(--foreground);
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Step 6: Project-Specific Customizations
|
|
343
|
+
|
|
344
|
+
Based on detected project type, add specific styles:
|
|
345
|
+
|
|
346
|
+
#### For API Documentation
|
|
347
|
+
```css
|
|
348
|
+
/* API-specific styles */
|
|
349
|
+
.endpoint-badge {
|
|
350
|
+
font-family: var(--devdoc-code-font-family);
|
|
351
|
+
font-weight: 600;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.response-status.success {
|
|
355
|
+
color: #10b981;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.response-status.error {
|
|
359
|
+
color: #ef4444;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.schema-property {
|
|
363
|
+
border-left: 2px solid var(--border);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.schema-property:hover {
|
|
367
|
+
border-left-color: var(--devdoc-primary);
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### For SDK/Library Documentation
|
|
372
|
+
```css
|
|
373
|
+
/* SDK-specific styles */
|
|
374
|
+
.language-selector {
|
|
375
|
+
border: 1px solid var(--border);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.language-selector button.active {
|
|
379
|
+
background-color: var(--devdoc-primary);
|
|
380
|
+
color: white;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.install-command {
|
|
384
|
+
background: var(--muted);
|
|
385
|
+
border-radius: 0.5rem;
|
|
386
|
+
font-family: var(--devdoc-code-font-family);
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
#### For Product Documentation
|
|
391
|
+
```css
|
|
392
|
+
/* Product-specific styles */
|
|
393
|
+
.feature-card {
|
|
394
|
+
border: 1px solid var(--border);
|
|
395
|
+
border-radius: 0.75rem;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.feature-card:hover {
|
|
399
|
+
border-color: var(--devdoc-primary);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.feature-icon {
|
|
403
|
+
color: var(--devdoc-primary);
|
|
404
|
+
font-size: 2rem;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.screenshot {
|
|
408
|
+
border: 1px solid var(--border);
|
|
409
|
+
border-radius: 0.5rem;
|
|
410
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
411
|
+
}
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### Step 7: Complete custom.css Template
|
|
415
|
+
|
|
416
|
+
Generate the full `custom.css` with all branded components:
|
|
417
|
+
|
|
418
|
+
```css
|
|
419
|
+
/* {ProductName} Documentation Theme */
|
|
420
|
+
/* Generated by DevDoc whisk-theme */
|
|
421
|
+
|
|
422
|
+
/* ============================================
|
|
423
|
+
1. CSS Variables
|
|
424
|
+
============================================ */
|
|
425
|
+
|
|
426
|
+
:root {
|
|
427
|
+
/* Brand Colors */
|
|
428
|
+
--devdoc-primary: {primary};
|
|
429
|
+
--devdoc-primary-light: {primaryLight};
|
|
430
|
+
--devdoc-primary-dark: {primaryDark};
|
|
431
|
+
--devdoc-primary-rgb: {primaryRGB};
|
|
432
|
+
|
|
433
|
+
/* Typography */
|
|
434
|
+
--devdoc-font-family: '{font}', system-ui, sans-serif;
|
|
435
|
+
--devdoc-heading-font-family: '{font}', system-ui, sans-serif;
|
|
436
|
+
--devdoc-code-font-family: 'JetBrains Mono', 'Fira Code', monospace;
|
|
437
|
+
|
|
438
|
+
/* Layout */
|
|
439
|
+
--devdoc-sidebar-width: 280px;
|
|
440
|
+
--devdoc-content-max-width: 768px;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* ============================================
|
|
444
|
+
2. Base Styles
|
|
445
|
+
============================================ */
|
|
446
|
+
|
|
447
|
+
* {
|
|
448
|
+
transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
::selection {
|
|
452
|
+
background-color: var(--devdoc-primary);
|
|
453
|
+
color: white;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/* ============================================
|
|
457
|
+
3. Links
|
|
458
|
+
============================================ */
|
|
459
|
+
|
|
460
|
+
.docs-content a:not([class]) {
|
|
461
|
+
color: var(--devdoc-primary);
|
|
462
|
+
text-decoration: underline;
|
|
463
|
+
text-underline-offset: 2px;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.docs-content a:not([class]):hover {
|
|
467
|
+
color: var(--devdoc-primary-dark);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* ============================================
|
|
471
|
+
4. Navigation
|
|
472
|
+
============================================ */
|
|
473
|
+
|
|
474
|
+
.nav-link:hover { color: var(--devdoc-primary); }
|
|
475
|
+
.nav-link.active { color: var(--devdoc-primary); font-weight: 500; }
|
|
476
|
+
.nav-tab.active { color: var(--devdoc-primary); border-bottom: 2px solid var(--devdoc-primary); }
|
|
477
|
+
|
|
478
|
+
/* ============================================
|
|
479
|
+
5. Components
|
|
480
|
+
============================================ */
|
|
481
|
+
|
|
482
|
+
/* Buttons */
|
|
483
|
+
.btn-primary { background-color: var(--devdoc-primary); color: white; }
|
|
484
|
+
.btn-primary:hover { background-color: var(--devdoc-primary-dark); }
|
|
485
|
+
|
|
486
|
+
/* Cards */
|
|
487
|
+
.card:hover { border-color: var(--devdoc-primary); }
|
|
488
|
+
.card-icon { color: var(--devdoc-primary); }
|
|
489
|
+
|
|
490
|
+
/* Callouts */
|
|
491
|
+
.callout { border-left: 4px solid var(--devdoc-primary); }
|
|
492
|
+
|
|
493
|
+
/* Tabs */
|
|
494
|
+
.tabs-trigger[data-state="active"] { color: var(--devdoc-primary); border-bottom-color: var(--devdoc-primary); }
|
|
495
|
+
|
|
496
|
+
/* Accordions */
|
|
497
|
+
.accordion-trigger[data-state="open"] { color: var(--devdoc-primary); }
|
|
498
|
+
|
|
499
|
+
/* Steps */
|
|
500
|
+
.step-number { background-color: var(--devdoc-primary); color: white; }
|
|
501
|
+
|
|
502
|
+
/* Search */
|
|
503
|
+
.search-input:focus { border-color: var(--devdoc-primary); }
|
|
504
|
+
.search-result-title mark { background-color: rgba(var(--devdoc-primary-rgb), 0.2); }
|
|
505
|
+
|
|
506
|
+
/* TOC */
|
|
507
|
+
.toc-link.active { color: var(--devdoc-primary); }
|
|
508
|
+
.toc-indicator { background-color: var(--devdoc-primary); }
|
|
509
|
+
|
|
510
|
+
/* ============================================
|
|
511
|
+
6. Code
|
|
512
|
+
============================================ */
|
|
513
|
+
|
|
514
|
+
pre code {
|
|
515
|
+
font-family: var(--devdoc-code-font-family);
|
|
516
|
+
font-size: 0.875rem;
|
|
517
|
+
line-height: 1.7;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
:not(pre) > code {
|
|
521
|
+
background-color: var(--muted);
|
|
522
|
+
padding: 0.125rem 0.375rem;
|
|
523
|
+
border-radius: 0.25rem;
|
|
524
|
+
font-size: 0.875em;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.code-block .copy-button:hover { color: var(--devdoc-primary); }
|
|
528
|
+
|
|
529
|
+
/* ============================================
|
|
530
|
+
7. API Reference
|
|
531
|
+
============================================ */
|
|
532
|
+
|
|
533
|
+
.api-method-post { background-color: var(--devdoc-primary); }
|
|
534
|
+
.try-it-button { background-color: var(--devdoc-primary); }
|
|
535
|
+
.try-it-button:hover { background-color: var(--devdoc-primary-dark); }
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Step 8: Confirm Changes
|
|
539
|
+
|
|
540
|
+
```
|
|
541
|
+
✅ Theme & Components Updated!
|
|
542
|
+
|
|
543
|
+
Files modified:
|
|
544
|
+
✓ theme.json - brand colors, typography
|
|
545
|
+
✓ custom.css - variables, components, styles
|
|
546
|
+
✓ docs.json - logo paths
|
|
547
|
+
✓ public/logo.svg - copied
|
|
548
|
+
|
|
549
|
+
Components branded:
|
|
550
|
+
• Navigation (sidebar, tabs, TOC)
|
|
551
|
+
• Buttons (primary, secondary)
|
|
552
|
+
• Cards & Card groups
|
|
553
|
+
• Callouts & Notices
|
|
554
|
+
• Tabs & Accordions
|
|
555
|
+
• Code blocks
|
|
556
|
+
• Search
|
|
557
|
+
• API playground
|
|
558
|
+
• Steps component
|
|
559
|
+
|
|
560
|
+
Run `devdoc dev` to preview!
|
|
561
|
+
```
|