@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.
@@ -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
+ ```