@knitli/docs-components 1.0.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.
@@ -0,0 +1,674 @@
1
+ /**
2
+ * @file docs-theme.css
3
+ * @description Complete Copper Archive theme for Knitli documentation
4
+ * @usage Import this file for full theme styling with all components
5
+ */
6
+
7
+ /* Import color palette and variables */
8
+ @import './copper-archive.css';
9
+ @import './variables.css';
10
+
11
+ /* ========================================
12
+ GOOGLE FONTS
13
+ ======================================== */
14
+
15
+ @import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=IBM+Plex+Serif:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap');
16
+
17
+ /* ========================================
18
+ GLOBAL STYLES
19
+ ======================================== */
20
+
21
+ *,
22
+ *::before,
23
+ *::after {
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ html {
28
+ font-size: 16px;
29
+ -webkit-font-smoothing: antialiased;
30
+ -moz-osx-font-smoothing: grayscale;
31
+ }
32
+
33
+ body {
34
+ margin: 0;
35
+ padding: 0;
36
+ font-family: var(--font-docs-body);
37
+ font-size: var(--text-base);
38
+ line-height: var(--leading-normal);
39
+ color: var(--docs-text-primary);
40
+ background: var(--docs-parchment);
41
+ position: relative;
42
+ }
43
+
44
+ /* Subtle paper grain texture */
45
+ body::before {
46
+ content: '';
47
+ position: fixed;
48
+ top: 0;
49
+ left: 0;
50
+ width: 100%;
51
+ height: 100%;
52
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%23000'/%3E%3Cpath d='M0 0h1v1H0zM2 2h1v1H2z' fill='%23fff' fill-opacity='0.03'/%3E%3C/svg%3E");
53
+ opacity: 0.5;
54
+ pointer-events: none;
55
+ z-index: -1;
56
+ }
57
+
58
+ /* ========================================
59
+ TYPOGRAPHY
60
+ ======================================== */
61
+
62
+ h1, h2, h3, h4, h5, h6 {
63
+ font-family: var(--font-docs-display);
64
+ font-weight: var(--font-medium);
65
+ line-height: var(--leading-tight);
66
+ color: var(--docs-slate);
67
+ margin-top: 0;
68
+ margin-bottom: var(--space-4);
69
+ letter-spacing: var(--tracking-tight);
70
+ }
71
+
72
+ h1 {
73
+ font-size: var(--text-5xl);
74
+ margin-bottom: var(--space-6);
75
+ }
76
+
77
+ h2 {
78
+ font-size: var(--text-3xl);
79
+ margin-bottom: var(--space-5);
80
+ }
81
+
82
+ h3 {
83
+ font-size: var(--text-2xl);
84
+ }
85
+
86
+ h4 {
87
+ font-size: var(--text-xl);
88
+ }
89
+
90
+ h5, h6 {
91
+ font-size: var(--text-lg);
92
+ }
93
+
94
+ p {
95
+ margin-top: 0;
96
+ margin-bottom: var(--space-4);
97
+ line-height: var(--leading-relaxed);
98
+ }
99
+
100
+ a {
101
+ color: var(--docs-copper);
102
+ text-decoration: none;
103
+ transition: color var(--timing-fast) var(--ease-out);
104
+ }
105
+
106
+ a:hover {
107
+ color: var(--docs-copper-hover);
108
+ }
109
+
110
+ code {
111
+ font-family: var(--font-docs-code);
112
+ font-size: 0.9em;
113
+ background: var(--docs-code-bg);
114
+ color: var(--docs-code-text);
115
+ padding: 0.125rem 0.375rem;
116
+ border-radius: var(--radius-sm);
117
+ }
118
+
119
+ pre {
120
+ font-family: var(--font-docs-code);
121
+ font-size: var(--text-sm);
122
+ background: var(--docs-code-bg);
123
+ color: var(--docs-code-text);
124
+ padding: var(--code-padding);
125
+ border-radius: var(--code-radius);
126
+ overflow-x: auto;
127
+ margin: var(--space-4) 0;
128
+ }
129
+
130
+ pre code {
131
+ background: transparent;
132
+ padding: 0;
133
+ }
134
+
135
+ /* ========================================
136
+ DOCUMENT CARD COMPONENT
137
+ ======================================== */
138
+
139
+ .doc-card {
140
+ /* Base styling */
141
+ background: linear-gradient(135deg,
142
+ var(--docs-parchment) 0%,
143
+ var(--docs-cream) 100%);
144
+ border: var(--card-border-width) solid var(--docs-border-light);
145
+ border-radius: var(--card-radius);
146
+ padding: var(--card-padding);
147
+ position: relative;
148
+
149
+ /* Embossed shadow effect */
150
+ box-shadow: var(--shadow-emboss);
151
+
152
+ /* Smooth transitions */
153
+ transition: all var(--timing-base) var(--ease-in-out);
154
+ }
155
+
156
+ /* Copper corner brackets */
157
+ .doc-card::before,
158
+ .doc-card::after {
159
+ content: '';
160
+ position: absolute;
161
+ width: var(--bracket-size);
162
+ height: var(--bracket-size);
163
+ border: var(--bracket-width) solid var(--bracket-color);
164
+ transition: border-color var(--timing-base) var(--ease-out);
165
+ }
166
+
167
+ .doc-card::before {
168
+ top: -1px;
169
+ left: -1px;
170
+ border-right: none;
171
+ border-bottom: none;
172
+ border-top-left-radius: var(--card-radius);
173
+ }
174
+
175
+ .doc-card::after {
176
+ bottom: -1px;
177
+ right: -1px;
178
+ border-left: none;
179
+ border-top: none;
180
+ border-bottom-right-radius: var(--card-radius);
181
+ }
182
+
183
+ /* Brass polish glow effect */
184
+ .doc-card > .card-glow {
185
+ content: '';
186
+ position: absolute;
187
+ top: -50%;
188
+ left: -50%;
189
+ width: 200%;
190
+ height: 200%;
191
+ background: radial-gradient(
192
+ circle at center,
193
+ rgba(184, 108, 48, 0.08) 0%,
194
+ transparent 70%
195
+ );
196
+ opacity: 0;
197
+ transition: opacity var(--timing-slow) var(--ease-out);
198
+ pointer-events: none;
199
+ z-index: 0;
200
+ }
201
+
202
+ /* Hover state - brass polish effect */
203
+ .doc-card:hover {
204
+ transform: translateY(-4px);
205
+ box-shadow: var(--shadow-emboss-hover);
206
+ }
207
+
208
+ .doc-card:hover::before,
209
+ .doc-card:hover::after {
210
+ border-color: var(--docs-copper-hover);
211
+ }
212
+
213
+ .doc-card:hover > .card-glow {
214
+ opacity: 1;
215
+ }
216
+
217
+ /* Active/pressed state */
218
+ .doc-card:active {
219
+ transform: translateY(-2px);
220
+ }
221
+
222
+ /* Mobile adjustments */
223
+ @media (max-width: 768px) {
224
+ .doc-card {
225
+ padding: var(--card-padding-mobile);
226
+ }
227
+ }
228
+
229
+ /* ========================================
230
+ CARD CONTENT ELEMENTS
231
+ ======================================== */
232
+
233
+ .card-status {
234
+ position: absolute;
235
+ top: var(--space-4);
236
+ right: var(--space-4);
237
+ font-family: var(--font-docs-ui);
238
+ font-size: var(--text-xs);
239
+ font-weight: var(--font-semibold);
240
+ text-transform: uppercase;
241
+ letter-spacing: var(--tracking-wider);
242
+ color: var(--docs-copper);
243
+ background: var(--docs-white);
244
+ padding: var(--space-1) var(--space-3);
245
+ border-radius: var(--radius-full);
246
+ border: 1px solid var(--docs-copper);
247
+ }
248
+
249
+ .card-icon {
250
+ font-size: var(--text-4xl);
251
+ margin-bottom: var(--space-4);
252
+ display: block;
253
+ }
254
+
255
+ .card-title {
256
+ font-family: var(--font-docs-display);
257
+ font-size: var(--text-3xl);
258
+ font-weight: var(--font-medium);
259
+ color: var(--docs-slate);
260
+ margin-bottom: var(--space-3);
261
+ letter-spacing: var(--tracking-tight);
262
+ position: relative;
263
+ z-index: 1;
264
+ }
265
+
266
+ .card-description {
267
+ font-family: var(--font-docs-body);
268
+ font-size: var(--text-base);
269
+ line-height: var(--leading-relaxed);
270
+ color: var(--docs-ink);
271
+ opacity: 0.85;
272
+ margin-bottom: var(--space-6);
273
+ position: relative;
274
+ z-index: 1;
275
+ }
276
+
277
+ .card-meta {
278
+ font-family: var(--font-docs-ui);
279
+ font-size: var(--text-sm);
280
+ color: var(--docs-slate);
281
+ opacity: 0.6;
282
+ text-transform: uppercase;
283
+ letter-spacing: var(--tracking-wide);
284
+ margin-bottom: var(--space-6);
285
+ display: flex;
286
+ align-items: center;
287
+ gap: var(--space-2);
288
+ position: relative;
289
+ z-index: 1;
290
+ }
291
+
292
+ .card-action {
293
+ font-family: var(--font-docs-ui);
294
+ font-size: var(--text-base);
295
+ font-weight: var(--font-semibold);
296
+ color: var(--docs-copper);
297
+ text-decoration: none;
298
+ display: inline-flex;
299
+ align-items: center;
300
+ gap: var(--space-2);
301
+ position: relative;
302
+ z-index: 1;
303
+ }
304
+
305
+ /* Animated underline */
306
+ .card-action::after {
307
+ content: '';
308
+ position: absolute;
309
+ bottom: -2px;
310
+ left: 0;
311
+ width: 0;
312
+ height: 2px;
313
+ background: var(--docs-copper);
314
+ transition: width var(--timing-base) var(--ease-out);
315
+ }
316
+
317
+ .card-action:hover::after {
318
+ width: calc(100% - 1.5rem);
319
+ }
320
+
321
+ /* Arrow animation */
322
+ .card-action .arrow {
323
+ transition: transform var(--timing-base) var(--ease-out);
324
+ }
325
+
326
+ .card-action:hover .arrow {
327
+ transform: translateX(4px);
328
+ }
329
+
330
+ .revision-stamp {
331
+ position: absolute;
332
+ bottom: var(--space-3);
333
+ right: var(--space-3);
334
+ font-family: var(--font-docs-display);
335
+ font-size: var(--text-xs);
336
+ color: var(--docs-copper);
337
+ opacity: 0.5;
338
+ transform: rotate(-5deg);
339
+ letter-spacing: var(--tracking-wider);
340
+ z-index: 0;
341
+ }
342
+
343
+ /* ========================================
344
+ BRANDED HEADER
345
+ ======================================== */
346
+
347
+ .docs-header {
348
+ background: var(--docs-parchment);
349
+ border-bottom: 1px solid var(--docs-border-light);
350
+ padding: var(--space-4) var(--space-8);
351
+ position: sticky;
352
+ top: 0;
353
+ z-index: var(--z-sticky);
354
+
355
+ /* Copper accent line */
356
+ box-shadow:
357
+ inset 0 -2px 0 var(--docs-copper),
358
+ 0 1px 3px rgba(0, 0, 0, 0.05);
359
+ }
360
+
361
+ .docs-header-content {
362
+ max-width: var(--container-2xl);
363
+ margin: 0 auto;
364
+ display: flex;
365
+ justify-content: space-between;
366
+ align-items: center;
367
+ }
368
+
369
+ .docs-logo {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: var(--space-3);
373
+ text-decoration: none;
374
+ font-family: var(--font-docs-display);
375
+ font-size: var(--text-lg);
376
+ color: var(--docs-slate);
377
+ font-weight: var(--font-semibold);
378
+ }
379
+
380
+ .docs-logo img {
381
+ height: 32px;
382
+ width: auto;
383
+ }
384
+
385
+ .logo-separator {
386
+ color: var(--docs-copper);
387
+ opacity: 0.5;
388
+ }
389
+
390
+ .logo-section {
391
+ color: var(--docs-copper);
392
+ }
393
+
394
+ .docs-nav {
395
+ display: flex;
396
+ gap: var(--space-8);
397
+ }
398
+
399
+ .docs-nav a {
400
+ font-family: var(--font-docs-ui);
401
+ font-size: var(--text-base);
402
+ color: var(--docs-slate);
403
+ text-decoration: none;
404
+ position: relative;
405
+ padding: var(--space-1) 0;
406
+ }
407
+
408
+ .docs-nav a::after {
409
+ content: '';
410
+ position: absolute;
411
+ bottom: 0;
412
+ left: 0;
413
+ width: 0;
414
+ height: 1px;
415
+ background: var(--docs-copper);
416
+ transition: width var(--timing-fast) var(--ease-out);
417
+ }
418
+
419
+ .docs-nav a:hover::after {
420
+ width: 100%;
421
+ }
422
+
423
+ .docs-nav a.external::before {
424
+ content: '↗';
425
+ margin-right: var(--space-1);
426
+ opacity: 0.6;
427
+ }
428
+
429
+ /* Mobile header adjustments */
430
+ @media (max-width: 768px) {
431
+ .docs-header {
432
+ padding: var(--space-4);
433
+ }
434
+
435
+ .docs-header-content {
436
+ flex-direction: column;
437
+ gap: var(--space-4);
438
+ }
439
+
440
+ .docs-nav {
441
+ width: 100%;
442
+ justify-content: space-between;
443
+ gap: var(--space-4);
444
+ }
445
+ }
446
+
447
+ /* ========================================
448
+ HERO SECTION
449
+ ======================================== */
450
+
451
+ .docs-hero {
452
+ text-align: center;
453
+ padding: var(--space-20) var(--space-8);
454
+ background: radial-gradient(
455
+ ellipse at center,
456
+ var(--docs-parchment) 0%,
457
+ var(--docs-cream) 100%
458
+ );
459
+ position: relative;
460
+ }
461
+
462
+ .docs-hero-title {
463
+ font-family: var(--font-docs-display);
464
+ font-size: var(--text-6xl);
465
+ font-weight: var(--font-medium);
466
+ letter-spacing: var(--tracking-tight);
467
+ color: var(--docs-slate);
468
+ margin-bottom: var(--space-4);
469
+ }
470
+
471
+ .docs-hero-tagline {
472
+ font-family: var(--font-docs-body);
473
+ font-size: var(--text-2xl);
474
+ color: var(--docs-ink);
475
+ opacity: 0.7;
476
+ margin-bottom: var(--space-6);
477
+ }
478
+
479
+ .docs-hero-separator {
480
+ width: 120px;
481
+ height: 2px;
482
+ background: var(--docs-copper);
483
+ margin: var(--space-8) auto;
484
+ }
485
+
486
+ .docs-hero-revision {
487
+ position: absolute;
488
+ top: var(--space-4);
489
+ right: var(--space-8);
490
+ font-family: var(--font-docs-display);
491
+ font-size: var(--text-xs);
492
+ color: var(--docs-copper);
493
+ opacity: 0.5;
494
+ letter-spacing: var(--tracking-wide);
495
+ }
496
+
497
+ /* Mobile hero adjustments */
498
+ @media (max-width: 768px) {
499
+ .docs-hero {
500
+ padding: var(--space-12) var(--space-4);
501
+ }
502
+
503
+ .docs-hero-title {
504
+ font-size: var(--text-4xl);
505
+ }
506
+
507
+ .docs-hero-tagline {
508
+ font-size: var(--text-lg);
509
+ }
510
+ }
511
+
512
+ /* ========================================
513
+ CARD GRID LAYOUT
514
+ ======================================== */
515
+
516
+ .doc-cards {
517
+ display: grid;
518
+ gap: var(--space-8);
519
+ padding: var(--space-8);
520
+ max-width: var(--container-2xl);
521
+ margin: 0 auto;
522
+ }
523
+
524
+ /* Desktop: 3 columns */
525
+ @media (min-width: 1024px) {
526
+ .doc-cards {
527
+ grid-template-columns: repeat(3, 1fr);
528
+ }
529
+ }
530
+
531
+ /* Tablet: 2 columns */
532
+ @media (min-width: 768px) and (max-width: 1023px) {
533
+ .doc-cards {
534
+ grid-template-columns: repeat(2, 1fr);
535
+ gap: var(--space-6);
536
+ }
537
+ }
538
+
539
+ /* Mobile: 1 column */
540
+ @media (max-width: 767px) {
541
+ .doc-cards {
542
+ grid-template-columns: 1fr;
543
+ gap: var(--space-6);
544
+ padding: var(--space-4);
545
+ }
546
+ }
547
+
548
+ /* ========================================
549
+ ANIMATIONS
550
+ ======================================== */
551
+
552
+ @keyframes fadeInUp {
553
+ from {
554
+ opacity: 0;
555
+ transform: translateY(20px);
556
+ }
557
+ to {
558
+ opacity: 1;
559
+ transform: translateY(0);
560
+ }
561
+ }
562
+
563
+ /* Staggered card reveals */
564
+ .doc-card:nth-child(1) {
565
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.1s both;
566
+ }
567
+
568
+ .doc-card:nth-child(2) {
569
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.2s both;
570
+ }
571
+
572
+ .doc-card:nth-child(3) {
573
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.3s both;
574
+ }
575
+
576
+ .doc-card:nth-child(4) {
577
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.4s both;
578
+ }
579
+
580
+ .doc-card:nth-child(5) {
581
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.5s both;
582
+ }
583
+
584
+ .doc-card:nth-child(6) {
585
+ animation: fadeInUp 0.6s var(--ease-in-out) 0.6s both;
586
+ }
587
+
588
+ /* ========================================
589
+ ACCESSIBILITY
590
+ ======================================== */
591
+
592
+ /* Focus states */
593
+ *:focus-visible {
594
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
595
+ outline-offset: var(--focus-ring-offset);
596
+ border-radius: var(--radius-sm);
597
+ }
598
+
599
+ .doc-card:focus-visible {
600
+ outline-offset: 8px;
601
+ }
602
+
603
+ a:focus-visible {
604
+ outline-offset: 2px;
605
+ }
606
+
607
+ /* Screen reader only */
608
+ .sr-only {
609
+ position: absolute;
610
+ width: 1px;
611
+ height: 1px;
612
+ padding: 0;
613
+ margin: -1px;
614
+ overflow: hidden;
615
+ clip: rect(0, 0, 0, 0);
616
+ white-space: nowrap;
617
+ border-width: 0;
618
+ }
619
+
620
+ .sr-only-focusable:focus {
621
+ position: static;
622
+ width: auto;
623
+ height: auto;
624
+ padding: inherit;
625
+ margin: inherit;
626
+ overflow: visible;
627
+ clip: auto;
628
+ white-space: normal;
629
+ }
630
+
631
+ /* Reduced motion */
632
+ @media (prefers-reduced-motion: reduce) {
633
+ *,
634
+ *::before,
635
+ *::after {
636
+ animation-duration: 0.01ms !important;
637
+ animation-iteration-count: 1 !important;
638
+ transition-duration: 0.01ms !important;
639
+ }
640
+
641
+ .doc-card {
642
+ transform: none !important;
643
+ }
644
+
645
+ .card-action .arrow {
646
+ transform: none !important;
647
+ }
648
+ }
649
+
650
+ /* ========================================
651
+ PRINT STYLES
652
+ ======================================== */
653
+
654
+ @media print {
655
+ body::before {
656
+ display: none;
657
+ }
658
+
659
+ .docs-header,
660
+ .docs-nav {
661
+ display: none;
662
+ }
663
+
664
+ .doc-card {
665
+ box-shadow: none;
666
+ border: 1px solid #000;
667
+ page-break-inside: avoid;
668
+ }
669
+
670
+ .doc-card::before,
671
+ .doc-card::after {
672
+ display: none;
673
+ }
674
+ }