@commonpub/layer 0.7.3 → 0.7.4

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.
@@ -266,7 +266,7 @@ async function deleteComment(id: string): Promise<void> {
266
266
  color: var(--text-faint);
267
267
  background: var(--surface2);
268
268
  padding: 1px 6px;
269
- border: 1px solid var(--border2);
269
+ border: var(--border-width-default) solid var(--border2);
270
270
  }
271
271
 
272
272
  .cpub-comment-form {
@@ -290,7 +290,7 @@ async function deleteComment(id: string): Promise<void> {
290
290
  gap: 8px;
291
291
  padding: 6px 10px;
292
292
  background: var(--surface2);
293
- border: 1px solid var(--border);
293
+ border: var(--border-width-default) solid var(--border);
294
294
  }
295
295
 
296
296
  .cpub-cancel-reply {
@@ -313,7 +313,7 @@ async function deleteComment(id: string): Promise<void> {
313
313
  margin-bottom: 12px;
314
314
  padding: 8px 12px;
315
315
  background: var(--accent-bg);
316
- border: 1px solid var(--accent-border);
316
+ border: var(--border-width-default) solid var(--accent-border);
317
317
  border-radius: 8px;
318
318
  }
319
319
  .cpub-comment-fed-notice i { color: var(--accent); font-size: 11px; }
@@ -461,6 +461,6 @@ async function deleteComment(id: string): Promise<void> {
461
461
  margin-bottom: 12px;
462
462
  padding: 8px 12px;
463
463
  background: var(--green-bg, rgba(34, 197, 94, 0.08));
464
- border: 1px solid var(--green-border, rgba(34, 197, 94, 0.2));
464
+ border: var(--border-width-default) solid var(--green-border, rgba(34, 197, 94, 0.2));
465
465
  }
466
466
  </style>
@@ -57,7 +57,7 @@ const safeAttachments = computed(() =>
57
57
  .cpub-attachments {
58
58
  margin: 28px 0;
59
59
  padding-top: 16px;
60
- border-top: 1px solid var(--border);
60
+ border-top: var(--border-width-default) solid var(--border);
61
61
  }
62
62
  .cpub-attachments-label {
63
63
  font-size: 10px;
@@ -77,7 +77,7 @@ const safeAttachments = computed(() =>
77
77
  align-items: center;
78
78
  gap: 8px;
79
79
  padding: 8px 12px;
80
- border: 1px solid var(--border);
80
+ border: var(--border-width-default) solid var(--border);
81
81
  background: var(--surface);
82
82
  text-decoration: none;
83
83
  color: var(--text-dim);
@@ -92,7 +92,7 @@ const safeAttachments = computed(() =>
92
92
  width: 40px;
93
93
  height: 40px;
94
94
  object-fit: cover;
95
- border: 1px solid var(--border2);
95
+ border: var(--border-width-default) solid var(--border2);
96
96
  }
97
97
  .cpub-attachment-icon {
98
98
  width: 32px;
@@ -101,7 +101,7 @@ const safeAttachments = computed(() =>
101
101
  align-items: center;
102
102
  justify-content: center;
103
103
  background: var(--surface2);
104
- border: 1px solid var(--border2);
104
+ border: var(--border-width-default) solid var(--border2);
105
105
  color: var(--text-faint);
106
106
  font-size: 14px;
107
107
  }
@@ -177,7 +177,7 @@ const lastReplyFormatted = computed((): string | null => {
177
177
  width: 16px;
178
178
  height: 16px;
179
179
  object-fit: cover;
180
- border: 1px solid var(--border);
180
+ border: var(--border-width-default) solid var(--border);
181
181
  flex-shrink: 0;
182
182
  }
183
183
 
@@ -271,7 +271,7 @@ const formattedDate = computed((): string => {
271
271
 
272
272
  .cpub-feed-stat-btn {
273
273
  background: none;
274
- border: 1px solid transparent;
274
+ border: var(--border-width-default) solid transparent;
275
275
  cursor: pointer;
276
276
  padding: 2px 8px;
277
277
  border-radius: 4px;
@@ -116,7 +116,7 @@ function handleSend(): void {
116
116
  width: 20px;
117
117
  height: 20px;
118
118
  object-fit: cover;
119
- border: 1px solid var(--border);
119
+ border: var(--border-width-default) solid var(--border);
120
120
  flex-shrink: 0;
121
121
  }
122
122
 
@@ -103,7 +103,7 @@ const iconMap: Record<string, string> = {
103
103
  align-items: center;
104
104
  justify-content: center;
105
105
  background: var(--surface);
106
- border: 1px solid var(--border);
106
+ border: var(--border-width-default) solid var(--border);
107
107
  border-radius: 50%;
108
108
  font-size: 8px;
109
109
  color: var(--text-dim);
@@ -66,7 +66,7 @@ const isCompanyHub = computed(() => hubType.value === 'company');
66
66
  background: linear-gradient(135deg, var(--accent) 0%, #006b6b 50%, var(--accent-border) 100%);
67
67
  position: relative;
68
68
  overflow: hidden;
69
- border-bottom: 1px solid var(--border);
69
+ border-bottom: var(--border-width-default) solid var(--border);
70
70
  }
71
71
 
72
72
  .cpub-hub-banner-pattern {
@@ -87,7 +87,7 @@ const isCompanyHub = computed(() => hubType.value === 'company');
87
87
 
88
88
  .cpub-hub-meta-bar {
89
89
  background: var(--surface);
90
- border-bottom: 1px solid var(--border);
90
+ border-bottom: var(--border-width-default) solid var(--border);
91
91
  padding: 20px 0;
92
92
  }
93
93
 
@@ -45,7 +45,7 @@ const activeTab = defineModel<string>('activeTab', { required: true });
45
45
  <style scoped>
46
46
  .cpub-hub-tabs {
47
47
  background: var(--surface);
48
- border-bottom: 1px solid var(--border);
48
+ border-bottom: var(--border-width-default) solid var(--border);
49
49
  position: sticky;
50
50
  top: 48px;
51
51
  z-index: 90;
@@ -36,7 +36,7 @@ defineProps<{
36
36
 
37
37
  .cpub-product-card {
38
38
  background: var(--surface);
39
- border: 1px solid var(--border);
39
+ border: var(--border-width-default) solid var(--border);
40
40
  border-radius: 12px;
41
41
  padding: 16px;
42
42
  display: flex;
@@ -55,7 +55,7 @@ defineProps<{
55
55
  width: 48px;
56
56
  height: 48px;
57
57
  background: var(--surface2);
58
- border: 1px solid var(--border);
58
+ border: var(--border-width-default) solid var(--border);
59
59
  border-radius: 10px;
60
60
  display: flex;
61
61
  align-items: center;
@@ -14,7 +14,7 @@ defineProps<{
14
14
  <style scoped>
15
15
  .cpub-sb-card {
16
16
  background: var(--surface);
17
- border: 1px solid var(--border);
17
+ border: var(--border-width-default) solid var(--border);
18
18
  padding: 18px;
19
19
  box-shadow: var(--shadow-sm);
20
20
  margin-bottom: 16px;
@@ -30,6 +30,6 @@ defineProps<{
30
30
  color: var(--text-dim);
31
31
  margin-bottom: 14px;
32
32
  padding-bottom: 8px;
33
- border-bottom: 1px solid var(--border);
33
+ border-bottom: var(--border-width-default) solid var(--border);
34
34
  }
35
35
  </style>
@@ -268,7 +268,7 @@ useJsonLd({
268
268
  align-items: center;
269
269
  justify-content: center;
270
270
  overflow: hidden;
271
- border-bottom: 1px solid var(--border);
271
+ border-bottom: var(--border-width-default) solid var(--border);
272
272
  }
273
273
 
274
274
  .cpub-cover::after {
@@ -327,7 +327,7 @@ useJsonLd({
327
327
  letter-spacing: 0.1em;
328
328
  text-transform: uppercase;
329
329
  color: var(--accent);
330
- border: 1px solid var(--border);
330
+ border: var(--border-width-default) solid var(--border);
331
331
  background: var(--accent-bg);
332
332
  padding: 3px 10px;
333
333
  margin-bottom: 16px;
@@ -359,7 +359,7 @@ useJsonLd({
359
359
  height: 28px;
360
360
  border-radius: 50%;
361
361
  background: var(--surface3);
362
- border: 1px solid var(--border);
362
+ border: var(--border-width-default) solid var(--border);
363
363
  display: flex;
364
364
  align-items: center;
365
365
  justify-content: center;
@@ -420,7 +420,7 @@ useJsonLd({
420
420
  font-size: 10px;
421
421
  font-family: var(--font-mono);
422
422
  padding: 2px 8px;
423
- border: 1px solid var(--border2);
423
+ border: var(--border-width-default) solid var(--border2);
424
424
  color: var(--text-dim);
425
425
  background: var(--surface2);
426
426
  text-decoration: none;
@@ -445,8 +445,8 @@ useJsonLd({
445
445
  align-items: center;
446
446
  gap: 6px;
447
447
  padding: 14px 0;
448
- border-top: 1px solid var(--border);
449
- border-bottom: 1px solid var(--border);
448
+ border-top: var(--border-width-default) solid var(--border);
449
+ border-bottom: var(--border-width-default) solid var(--border);
450
450
  margin-bottom: 28px;
451
451
  }
452
452
 
@@ -470,7 +470,7 @@ useJsonLd({
470
470
  font-family: var(--font-mono);
471
471
  color: var(--text-dim);
472
472
  background: var(--surface);
473
- border: 1px solid var(--border);
473
+ border: var(--border-width-default) solid var(--border);
474
474
  padding: 5px 12px;
475
475
  cursor: pointer;
476
476
  transition: background var(--transition-fast), color var(--transition-fast);
@@ -503,7 +503,7 @@ useJsonLd({
503
503
  margin: 40px 0 12px;
504
504
  letter-spacing: -0.01em;
505
505
  padding-bottom: 8px;
506
- border-bottom: 1px solid var(--border);
506
+ border-bottom: var(--border-width-default) solid var(--border);
507
507
  }
508
508
 
509
509
  .cpub-prose :deep(h3) {
@@ -524,7 +524,7 @@ useJsonLd({
524
524
  font-size: 13px;
525
525
  color: var(--teal);
526
526
  background: var(--surface2);
527
- border: 1px solid var(--border);
527
+ border: var(--border-width-default) solid var(--border);
528
528
  padding: 1px 6px;
529
529
  }
530
530
 
@@ -562,7 +562,7 @@ useJsonLd({
562
562
 
563
563
  .cpub-prose :deep(hr) {
564
564
  border: none;
565
- border-top: 1px solid var(--border);
565
+ border-top: var(--border-width-default) solid var(--border);
566
566
  margin: 36px 0;
567
567
  }
568
568
 
@@ -573,7 +573,7 @@ useJsonLd({
573
573
  gap: 6px;
574
574
  margin: 40px 0 32px;
575
575
  padding-top: 24px;
576
- border-top: 1px solid var(--border);
576
+ border-top: var(--border-width-default) solid var(--border);
577
577
  }
578
578
 
579
579
  .cpub-tags-label {
@@ -589,7 +589,7 @@ useJsonLd({
589
589
  /* ── AUTHOR CARD ── */
590
590
  .cpub-author-card {
591
591
  background: var(--surface);
592
- border: 1px solid var(--border);
592
+ border: var(--border-width-default) solid var(--border);
593
593
  padding: 24px;
594
594
  display: flex;
595
595
  gap: 20px;
@@ -684,7 +684,7 @@ useJsonLd({
684
684
  text-transform: uppercase;
685
685
  margin-bottom: 16px;
686
686
  padding-bottom: 8px;
687
- border-bottom: 1px solid var(--border);
687
+ border-bottom: var(--border-width-default) solid var(--border);
688
688
  }
689
689
 
690
690
  .cpub-related-grid {
@@ -696,7 +696,7 @@ useJsonLd({
696
696
 
697
697
  .cpub-related-card {
698
698
  background: var(--surface);
699
- border: 1px solid var(--border);
699
+ border: var(--border-width-default) solid var(--border);
700
700
  overflow: hidden;
701
701
  cursor: pointer;
702
702
  transition: box-shadow var(--transition-fast);
@@ -715,7 +715,7 @@ useJsonLd({
715
715
  justify-content: center;
716
716
  position: relative;
717
717
  overflow: hidden;
718
- border-bottom: 1px solid var(--border);
718
+ border-bottom: var(--border-width-default) solid var(--border);
719
719
  }
720
720
 
721
721
  .cpub-related-card-thumb::after {
@@ -227,7 +227,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
227
227
  letter-spacing: 0.1em;
228
228
  text-transform: uppercase;
229
229
  color: var(--green);
230
- border: 1px solid var(--border);
230
+ border: var(--border-width-default) solid var(--border);
231
231
  background: var(--green-bg);
232
232
  padding: 3px 10px;
233
233
  margin-bottom: 16px;
@@ -250,7 +250,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
250
250
  height: 28px;
251
251
  border-radius: 50%;
252
252
  background: var(--surface3);
253
- border: 1px solid var(--border);
253
+ border: var(--border-width-default) solid var(--border);
254
254
  display: flex;
255
255
  align-items: center;
256
256
  justify-content: center;
@@ -307,7 +307,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
307
307
  font-size: 10px;
308
308
  font-family: var(--font-mono);
309
309
  padding: 2px 8px;
310
- border: 1px solid var(--border2);
310
+ border: var(--border-width-default) solid var(--border2);
311
311
  color: var(--text-dim);
312
312
  background: var(--surface2);
313
313
  text-decoration: none;
@@ -332,8 +332,8 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
332
332
  align-items: center;
333
333
  gap: 6px;
334
334
  padding: 14px 0;
335
- border-top: 1px solid var(--border);
336
- border-bottom: 1px solid var(--border);
335
+ border-top: var(--border-width-default) solid var(--border);
336
+ border-bottom: var(--border-width-default) solid var(--border);
337
337
  margin-bottom: 36px;
338
338
  }
339
339
 
@@ -355,7 +355,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
355
355
  font-family: var(--font-mono);
356
356
  color: var(--text-dim);
357
357
  background: var(--surface);
358
- border: 1px solid var(--border);
358
+ border: var(--border-width-default) solid var(--border);
359
359
  padding: 5px 12px;
360
360
  cursor: pointer;
361
361
  transition: background var(--transition-fast), color var(--transition-fast);
@@ -407,7 +407,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
407
407
  font-size: 12.5px;
408
408
  color: var(--teal);
409
409
  background: var(--surface2);
410
- border: 1px solid var(--border2);
410
+ border: var(--border-width-default) solid var(--border2);
411
411
  padding: 1px 6px;
412
412
  }
413
413
 
@@ -454,14 +454,14 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
454
454
 
455
455
  .cpub-prose :deep(hr) {
456
456
  border: none;
457
- border-top: 1px solid var(--border);
457
+ border-top: var(--border-width-default) solid var(--border);
458
458
  margin: 36px 0;
459
459
  }
460
460
 
461
461
  /* ── SERIES NAV ── */
462
462
  .cpub-series-nav {
463
463
  background: var(--surface);
464
- border: 1px solid var(--border);
464
+ border: var(--border-width-default) solid var(--border);
465
465
  padding: 20px;
466
466
  margin: 40px 0;
467
467
  box-shadow: var(--shadow-sm);
@@ -518,7 +518,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
518
518
  height: 4px;
519
519
  background: var(--surface3);
520
520
  overflow: hidden;
521
- border: 1px solid var(--border2);
521
+ border: var(--border-width-default) solid var(--border2);
522
522
  }
523
523
 
524
524
  .cpub-series-progress-fill {
@@ -534,7 +534,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
534
534
 
535
535
  .cpub-series-nav-btn {
536
536
  background: var(--surface);
537
- border: 1px solid var(--border);
537
+ border: var(--border-width-default) solid var(--border);
538
538
  padding: 12px 14px;
539
539
  cursor: pointer;
540
540
  text-decoration: none;
@@ -582,7 +582,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
582
582
  gap: 6px;
583
583
  margin: 36px 0 28px;
584
584
  padding-top: 20px;
585
- border-top: 1px solid var(--border);
585
+ border-top: var(--border-width-default) solid var(--border);
586
586
  }
587
587
 
588
588
  .cpub-tags-label {
@@ -598,7 +598,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
598
598
  /* ── AUTHOR CARD ── */
599
599
  .cpub-author-card {
600
600
  background: var(--surface);
601
- border: 1px solid var(--border);
601
+ border: var(--border-width-default) solid var(--border);
602
602
  padding: 22px;
603
603
  display: flex;
604
604
  gap: 18px;
@@ -671,7 +671,7 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
671
671
  font-family: var(--font-sans);
672
672
  font-size: 12px;
673
673
  padding: 6px 14px;
674
- border: 1px solid var(--border);
674
+ border: var(--border-width-default) solid var(--border);
675
675
  background: var(--surface);
676
676
  color: var(--text);
677
677
  cursor: pointer;
@@ -355,7 +355,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
355
355
  align-items: center;
356
356
  justify-content: center;
357
357
  background: var(--surface, #1a1a1a);
358
- border: 1px solid var(--border, #333);
358
+ border: var(--border-width-default) solid var(--border, #333);
359
359
  color: var(--text-dim, #999);
360
360
  font-size: 14px;
361
361
  text-decoration: none;
@@ -387,7 +387,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
387
387
  top: 3px; left: 0; right: 0;
388
388
  height: 48px;
389
389
  background: var(--surface);
390
- border-bottom: 1px solid var(--border);
390
+ border-bottom: var(--border-width-default) solid var(--border);
391
391
  display: flex;
392
392
  align-items: center;
393
393
  gap: 10px;
@@ -441,7 +441,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
441
441
  align-items: center;
442
442
  justify-content: center;
443
443
  background: var(--surface);
444
- border: 1px solid var(--border);
444
+ border: var(--border-width-default) solid var(--border);
445
445
  color: var(--text-dim);
446
446
  cursor: pointer;
447
447
  font-size: 12px;
@@ -467,7 +467,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
467
467
  width: 200px;
468
468
  flex-shrink: 0;
469
469
  background: var(--surface);
470
- border-right: 1px solid var(--border);
470
+ border-right: var(--border-width-default) solid var(--border);
471
471
  display: flex;
472
472
  flex-direction: column;
473
473
  overflow-y: auto;
@@ -479,7 +479,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
479
479
  letter-spacing: 0.12em;
480
480
  color: var(--text-faint);
481
481
  text-transform: uppercase;
482
- border-bottom: 1px solid var(--border);
482
+ border-bottom: var(--border-width-default) solid var(--border);
483
483
  }
484
484
  .cpub-toc-list { list-style: none; padding: 6px 0; }
485
485
  .cpub-toc-item button {
@@ -516,7 +516,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
516
516
  align-items: center;
517
517
  gap: 8px;
518
518
  padding: 12px 14px;
519
- border-top: 1px solid var(--border);
519
+ border-top: var(--border-width-default) solid var(--border);
520
520
  margin-top: auto;
521
521
  }
522
522
  .cpub-sidebar-author-avatar {
@@ -524,7 +524,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
524
524
  height: 24px;
525
525
  border-radius: var(--radius-full);
526
526
  background: var(--surface3);
527
- border: 1px solid var(--border);
527
+ border: var(--border-width-default) solid var(--border);
528
528
  display: flex;
529
529
  align-items: center;
530
530
  justify-content: center;
@@ -674,7 +674,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
674
674
  font-family: var(--font-mono);
675
675
  font-size: 13px;
676
676
  background: var(--surface2);
677
- border: 1px solid var(--border);
677
+ border: var(--border-width-default) solid var(--border);
678
678
  padding: 1px 6px;
679
679
  color: var(--accent);
680
680
  }
@@ -718,7 +718,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
718
718
  justify-content: space-between;
719
719
  margin-top: 48px;
720
720
  padding-top: 24px;
721
- border-top: 1px solid var(--border);
721
+ border-top: var(--border-width-default) solid var(--border);
722
722
  }
723
723
 
724
724
  .cpub-progress-dots { display: flex; align-items: center; gap: 5px; }
@@ -742,7 +742,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
742
742
  gap: 8px;
743
743
  padding: 10px 18px;
744
744
  background: var(--accent);
745
- border: 1px solid var(--border);
745
+ border: var(--border-width-default) solid var(--border);
746
746
  color: var(--color-text-inverse);
747
747
  font-size: 13px;
748
748
  font-weight: 600;
@@ -759,7 +759,7 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
759
759
  gap: 8px;
760
760
  padding: 10px 18px;
761
761
  background: var(--surface);
762
- border: 1px solid var(--border);
762
+ border: var(--border-width-default) solid var(--border);
763
763
  color: var(--text);
764
764
  font-size: 13px;
765
765
  font-weight: 500;
@@ -590,7 +590,7 @@ async function handleBuild(): Promise<void> {
590
590
  background: var(--surface2);
591
591
  overflow: hidden;
592
592
  flex-shrink: 0;
593
- border-bottom: 1px solid var(--border);
593
+ border-bottom: var(--border-width-default) solid var(--border);
594
594
  }
595
595
 
596
596
  .cpub-hero-cover-grid {
@@ -653,14 +653,14 @@ async function handleBuild(): Promise<void> {
653
653
 
654
654
  .cpub-badge-featured {
655
655
  background: var(--yellow-bg);
656
- border: 1px solid var(--border);
656
+ border: var(--border-width-default) solid var(--border);
657
657
  color: var(--yellow);
658
658
  box-shadow: var(--shadow-sm);
659
659
  }
660
660
 
661
661
  .cpub-badge-outline {
662
662
  background: var(--surface);
663
- border: 1px solid var(--border);
663
+ border: var(--border-width-default) solid var(--border);
664
664
  color: var(--text-dim);
665
665
  box-shadow: var(--shadow-sm);
666
666
  }
@@ -721,7 +721,7 @@ async function handleBuild(): Promise<void> {
721
721
  height: 28px;
722
722
  border-radius: 50%;
723
723
  background: var(--surface3);
724
- border: 1px solid var(--border);
724
+ border: var(--border-width-default) solid var(--border);
725
725
  display: flex;
726
726
  align-items: center;
727
727
  justify-content: center;
@@ -768,7 +768,7 @@ async function handleBuild(): Promise<void> {
768
768
  font-family: var(--font-mono);
769
769
  color: var(--accent);
770
770
  background: var(--accent-bg);
771
- border: 1px solid var(--border);
771
+ border: var(--border-width-default) solid var(--border);
772
772
  padding: 2px 7px;
773
773
  }
774
774
 
@@ -789,7 +789,7 @@ async function handleBuild(): Promise<void> {
789
789
  .cpub-author-tag {
790
790
  font-size: 9px; font-family: var(--font-mono); text-transform: uppercase;
791
791
  letter-spacing: 0.04em; color: var(--text-faint); padding: 1px 6px;
792
- border: 1px solid var(--border); background: var(--surface); text-decoration: none;
792
+ border: var(--border-width-default) solid var(--border); background: var(--surface); text-decoration: none;
793
793
  }
794
794
  .cpub-author-tag:hover { color: var(--accent); border-color: var(--accent); }
795
795
 
@@ -816,7 +816,7 @@ async function handleBuild(): Promise<void> {
816
816
  .cpub-engage-btn {
817
817
  font-size: 12px;
818
818
  padding: 6px 13px;
819
- border: 1px solid var(--border);
819
+ border: var(--border-width-default) solid var(--border);
820
820
  background: var(--surface);
821
821
  color: var(--text-dim);
822
822
  cursor: pointer;
@@ -849,7 +849,7 @@ async function handleBuild(): Promise<void> {
849
849
  .cpub-inline-meta-chip {
850
850
  display: inline-flex; align-items: center; gap: 5px;
851
851
  font-size: 11px; font-family: var(--font-mono); color: var(--text-dim);
852
- padding: 3px 10px; background: var(--surface2); border: 1px solid var(--border);
852
+ padding: 3px 10px; background: var(--surface2); border: var(--border-width-default) solid var(--border);
853
853
  white-space: nowrap;
854
854
  }
855
855
  .cpub-inline-meta-link { text-decoration: none; cursor: pointer; }
@@ -861,7 +861,7 @@ async function handleBuild(): Promise<void> {
861
861
  .cpub-itag {
862
862
  font-size: 10px; font-family: var(--font-mono); text-transform: uppercase;
863
863
  letter-spacing: 0.04em; padding: 2px 8px; color: var(--text-faint);
864
- border: 1px solid var(--border); background: var(--surface);
864
+ border: var(--border-width-default) solid var(--border); background: var(--surface);
865
865
  }
866
866
 
867
867
  /* ── TABS ── */
@@ -870,7 +870,7 @@ async function handleBuild(): Promise<void> {
870
870
  top: 48px;
871
871
  z-index: 50;
872
872
  background: var(--bg);
873
- border-bottom: 1px solid var(--border);
873
+ border-bottom: var(--border-width-default) solid var(--border);
874
874
  margin-bottom: 28px;
875
875
  }
876
876
 
@@ -948,7 +948,7 @@ async function handleBuild(): Promise<void> {
948
948
  font-size: 11px;
949
949
  background: var(--surface2);
950
950
  padding: 2px 5px;
951
- border: 1px solid var(--border2);
951
+ border: var(--border-width-default) solid var(--border2);
952
952
  color: var(--accent);
953
953
  }
954
954
 
@@ -962,7 +962,7 @@ async function handleBuild(): Promise<void> {
962
962
 
963
963
  .cpub-prose :deep(hr) {
964
964
  border: none;
965
- border-top: 1px solid var(--border);
965
+ border-top: var(--border-width-default) solid var(--border);
966
966
  margin: 24px 0;
967
967
  }
968
968
 
@@ -995,7 +995,7 @@ async function handleBuild(): Promise<void> {
995
995
  .cpub-toc-nav {
996
996
  display: flex; flex-direction: column; gap: 0;
997
997
  position: relative;
998
- border-left: 1px solid var(--border);
998
+ border-left: var(--border-width-default) solid var(--border);
999
999
  }
1000
1000
  .cpub-toc-item {
1001
1001
  display: flex; align-items: flex-start; text-align: left; background: none;
@@ -1022,7 +1022,7 @@ async function handleBuild(): Promise<void> {
1022
1022
 
1023
1023
  .cpub-sb-card {
1024
1024
  background: var(--surface);
1025
- border: 1px solid var(--border);
1025
+ border: var(--border-width-default) solid var(--border);
1026
1026
  padding: 18px;
1027
1027
  box-shadow: var(--shadow-sm);
1028
1028
  }
@@ -1036,14 +1036,14 @@ async function handleBuild(): Promise<void> {
1036
1036
  color: var(--text-dim);
1037
1037
  margin-bottom: 14px;
1038
1038
  padding-bottom: 8px;
1039
- border-bottom: 1px solid var(--border);
1039
+ border-bottom: var(--border-width-default) solid var(--border);
1040
1040
  }
1041
1041
 
1042
1042
  /* Stats grid */
1043
1043
  .cpub-stats-grid {
1044
1044
  display: grid;
1045
1045
  grid-template-columns: 1fr 1fr;
1046
- border: 1px solid var(--border);
1046
+ border: var(--border-width-default) solid var(--border);
1047
1047
  overflow: hidden;
1048
1048
  }
1049
1049
 
@@ -1051,8 +1051,8 @@ async function handleBuild(): Promise<void> {
1051
1051
  background: var(--surface2);
1052
1052
  padding: 14px;
1053
1053
  text-align: center;
1054
- border-right: 1px solid var(--border);
1055
- border-bottom: 1px solid var(--border);
1054
+ border-right: var(--border-width-default) solid var(--border);
1055
+ border-bottom: var(--border-width-default) solid var(--border);
1056
1056
  }
1057
1057
 
1058
1058
  .cpub-stat-cell:nth-child(2n) { border-right: none; }
@@ -1105,7 +1105,7 @@ async function handleBuild(): Promise<void> {
1105
1105
  align-items: center;
1106
1106
  gap: 10px;
1107
1107
  padding: 8px 0;
1108
- border-bottom: 1px solid var(--border2);
1108
+ border-bottom: var(--border-width-default) solid var(--border2);
1109
1109
  font-size: 12px;
1110
1110
  }
1111
1111
 
@@ -1115,7 +1115,7 @@ async function handleBuild(): Promise<void> {
1115
1115
  width: 28px;
1116
1116
  height: 28px;
1117
1117
  background: var(--surface2);
1118
- border: 1px solid var(--border2);
1118
+ border: var(--border-width-default) solid var(--border2);
1119
1119
  display: flex;
1120
1120
  align-items: center;
1121
1121
  justify-content: center;
@@ -1150,7 +1150,7 @@ async function handleBuild(): Promise<void> {
1150
1150
  font-size: 10px;
1151
1151
  font-family: var(--font-mono);
1152
1152
  padding: 4px 10px;
1153
- border: 1px solid var(--border);
1153
+ border: var(--border-width-default) solid var(--border);
1154
1154
  color: var(--text-dim);
1155
1155
  background: var(--surface);
1156
1156
  cursor: pointer;
@@ -1169,7 +1169,7 @@ async function handleBuild(): Promise<void> {
1169
1169
  align-items: center;
1170
1170
  justify-content: space-between;
1171
1171
  padding: 7px 0;
1172
- border-bottom: 1px solid var(--border2);
1172
+ border-bottom: var(--border-width-default) solid var(--border2);
1173
1173
  font-size: 12px;
1174
1174
  }
1175
1175
 
@@ -1188,7 +1188,7 @@ async function handleBuild(): Promise<void> {
1188
1188
  width: 44px;
1189
1189
  height: 44px;
1190
1190
  background: var(--purple-bg);
1191
- border: 1px solid var(--border);
1191
+ border: var(--border-width-default) solid var(--border);
1192
1192
  display: flex;
1193
1193
  align-items: center;
1194
1194
  justify-content: center;
@@ -1225,7 +1225,7 @@ async function handleBuild(): Promise<void> {
1225
1225
  .cpub-btn {
1226
1226
  font-size: 12px;
1227
1227
  padding: 6px 14px;
1228
- border: 1px solid var(--border);
1228
+ border: var(--border-width-default) solid var(--border);
1229
1229
  background: var(--surface);
1230
1230
  color: var(--text);
1231
1231
  cursor: pointer;
@@ -1245,7 +1245,7 @@ async function handleBuild(): Promise<void> {
1245
1245
  background: var(--surface3);
1246
1246
  color: var(--text-faint);
1247
1247
  padding: 1px 5px;
1248
- border: 1px solid var(--border2);
1248
+ border: var(--border-width-default) solid var(--border2);
1249
1249
  }
1250
1250
 
1251
1251
  /* BOM products in sidebar */
@@ -1258,7 +1258,7 @@ async function handleBuild(): Promise<void> {
1258
1258
  margin-top: 12px;
1259
1259
  margin-bottom: 8px;
1260
1260
  padding-top: 8px;
1261
- border-top: 1px solid var(--border2);
1261
+ border-top: var(--border-width-default) solid var(--border2);
1262
1262
  }
1263
1263
 
1264
1264
  .cpub-bom-product-row {
@@ -1298,7 +1298,7 @@ async function handleBuild(): Promise<void> {
1298
1298
  gap: 8px;
1299
1299
  margin-bottom: 16px;
1300
1300
  padding-bottom: 10px;
1301
- border-bottom: 1px solid var(--border);
1301
+ border-bottom: var(--border-width-default) solid var(--border);
1302
1302
  }
1303
1303
 
1304
1304
  .cpub-tab-section-title i { font-size: 12px; color: var(--text-faint); }
@@ -1324,12 +1324,12 @@ async function handleBuild(): Promise<void> {
1324
1324
  padding: 8px 12px;
1325
1325
  text-align: left;
1326
1326
  background: var(--surface2);
1327
- border-bottom: 1px solid var(--border);
1327
+ border-bottom: var(--border-width-default) solid var(--border);
1328
1328
  }
1329
1329
 
1330
1330
  .cpub-parts-table td {
1331
1331
  padding: 10px 12px;
1332
- border-bottom: 1px solid var(--border2);
1332
+ border-bottom: var(--border-width-default) solid var(--border2);
1333
1333
  color: var(--text-dim);
1334
1334
  }
1335
1335
 
@@ -1344,7 +1344,7 @@ async function handleBuild(): Promise<void> {
1344
1344
  display: flex; align-items: center; gap: 12px;
1345
1345
  padding: 10px 14px;
1346
1346
  background: var(--surface);
1347
- border: 1px solid var(--border);
1347
+ border: var(--border-width-default) solid var(--border);
1348
1348
  box-shadow: var(--shadow-sm);
1349
1349
  }
1350
1350
 
@@ -1365,7 +1365,7 @@ async function handleBuild(): Promise<void> {
1365
1365
  .cpub-build-steps { display: flex; flex-direction: column; gap: 16px; }
1366
1366
 
1367
1367
  .cpub-build-step {
1368
- border: 1px solid var(--border);
1368
+ border: var(--border-width-default) solid var(--border);
1369
1369
  overflow: hidden;
1370
1370
  box-shadow: var(--shadow-sm);
1371
1371
  }
@@ -1402,7 +1402,7 @@ async function handleBuild(): Promise<void> {
1402
1402
  width: 100%;
1403
1403
  max-height: 400px;
1404
1404
  object-fit: cover;
1405
- border: 1px solid var(--border);
1405
+ border: var(--border-width-default) solid var(--border);
1406
1406
  margin-top: 12px;
1407
1407
  }
1408
1408
 
@@ -1410,7 +1410,7 @@ async function handleBuild(): Promise<void> {
1410
1410
  .cpub-code-tab { display: flex; flex-direction: column; gap: 16px; }
1411
1411
 
1412
1412
  .cpub-code-snippet {
1413
- border: 1px solid var(--border);
1413
+ border: var(--border-width-default) solid var(--border);
1414
1414
  overflow: hidden;
1415
1415
  box-shadow: var(--shadow-sm);
1416
1416
  }
@@ -1419,7 +1419,7 @@ async function handleBuild(): Promise<void> {
1419
1419
  display: flex; align-items: center; gap: 8px;
1420
1420
  padding: 8px 14px;
1421
1421
  background: var(--surface2);
1422
- border-bottom: 1px solid var(--border);
1422
+ border-bottom: var(--border-width-default) solid var(--border);
1423
1423
  }
1424
1424
 
1425
1425
  .cpub-code-lang-label {
@@ -1457,14 +1457,14 @@ async function handleBuild(): Promise<void> {
1457
1457
  display: flex; align-items: center; gap: 12px;
1458
1458
  padding: 12px 14px;
1459
1459
  background: var(--surface);
1460
- border: 1px solid var(--border);
1460
+ border: var(--border-width-default) solid var(--border);
1461
1461
  box-shadow: var(--shadow-sm);
1462
1462
  }
1463
1463
 
1464
1464
  .cpub-file-icon {
1465
1465
  width: 32px; height: 32px;
1466
1466
  background: var(--surface2);
1467
- border: 1px solid var(--border2);
1467
+ border: var(--border-width-default) solid var(--border2);
1468
1468
  display: flex; align-items: center; justify-content: center;
1469
1469
  font-size: 12px; color: var(--text-faint); flex-shrink: 0;
1470
1470
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commonpub/layer",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "files": [
@@ -50,16 +50,16 @@
50
50
  "vue": "^3.4.0",
51
51
  "vue-router": "^4.3.0",
52
52
  "zod": "^4.3.6",
53
- "@commonpub/auth": "0.5.0",
54
- "@commonpub/config": "0.8.0",
55
- "@commonpub/docs": "0.6.1",
53
+ "@commonpub/config": "0.9.0",
54
+ "@commonpub/editor": "0.6.1",
56
55
  "@commonpub/explainer": "0.7.3",
57
- "@commonpub/editor": "0.6.0",
58
- "@commonpub/learning": "0.5.0",
56
+ "@commonpub/docs": "0.6.2",
57
+ "@commonpub/auth": "0.5.0",
59
58
  "@commonpub/protocol": "0.9.7",
60
- "@commonpub/schema": "0.9.2",
61
- "@commonpub/server": "2.27.2",
62
- "@commonpub/ui": "0.8.4"
59
+ "@commonpub/ui": "0.8.5",
60
+ "@commonpub/learning": "0.5.0",
61
+ "@commonpub/schema": "0.9.3",
62
+ "@commonpub/server": "2.27.3"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",
@@ -456,7 +456,7 @@ function removeTokenOverride(key: string): void {
456
456
  display: inline-block;
457
457
  width: 14px;
458
458
  height: 14px;
459
- border: 1px solid var(--border2);
459
+ border: var(--border-width-default) solid var(--border2);
460
460
  flex-shrink: 0;
461
461
  }
462
462
 
@@ -174,7 +174,7 @@ useSeoMeta({
174
174
  margin-bottom: 20px;
175
175
  padding: 8px;
176
176
  background: var(--surface2);
177
- border: 1px solid var(--border);
177
+ border: var(--border-width-default) solid var(--border);
178
178
  }
179
179
  .cpub-authorize-success {
180
180
  color: var(--green, #22c55e);
@@ -506,7 +506,7 @@ async function handlePostVote(postId: string): Promise<void> {
506
506
 
507
507
  <style scoped>
508
508
  /* Federation indicator (inside hero banner) */
509
- .cpub-fed-indicator { background: var(--accent-bg); border-bottom: 1px solid var(--accent-border); }
509
+ .cpub-fed-indicator { background: var(--accent-bg); border-bottom: var(--border-width-default) solid var(--accent-border); }
510
510
  .cpub-fed-indicator {
511
511
  padding: 6px 24px;
512
512
  display: flex; align-items: center; gap: 8px;
@@ -531,7 +531,7 @@ async function handlePostVote(postId: string): Promise<void> {
531
531
  }
532
532
  .cpub-compose-type-btn {
533
533
  font-size: 11px; font-weight: 600; padding: 4px 10px;
534
- border: 1px solid var(--border); background: var(--surface2);
534
+ border: var(--border-width-default) solid var(--border); background: var(--surface2);
535
535
  color: var(--text-dim); cursor: pointer;
536
536
  display: flex; align-items: center; gap: 4px;
537
537
  }
@@ -540,7 +540,7 @@ async function handlePostVote(postId: string): Promise<void> {
540
540
  }
541
541
  .cpub-compose-row { display: flex; gap: 8px; align-items: center; }
542
542
  .cpub-compose-input {
543
- flex: 1; background: var(--surface2); border: 1px solid var(--border);
543
+ flex: 1; background: var(--surface2); border: var(--border-width-default) solid var(--border);
544
544
  padding: 10px 14px; font-size: 0.8125rem;
545
545
  color: var(--text); font-family: inherit;
546
546
  }
@@ -574,7 +574,7 @@ async function handlePostVote(postId: string): Promise<void> {
574
574
  .cpub-shared-card-type {
575
575
  font-size: 9px; font-family: var(--font-mono); text-transform: uppercase;
576
576
  letter-spacing: 0.08em; color: var(--accent); background: var(--accent-bg);
577
- border: 1px solid var(--accent-border); padding: 2px 6px;
577
+ border: var(--border-width-default) solid var(--accent-border); padding: 2px 6px;
578
578
  display: inline-block; margin-bottom: 6px;
579
579
  }
580
580
  .cpub-shared-card-title { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
@@ -623,7 +623,7 @@ async function handlePostVote(postId: string): Promise<void> {
623
623
  display: inline-flex; align-items: center; gap: 4px;
624
624
  font-size: 0.6875rem; font-weight: 600;
625
625
  color: var(--accent); background: var(--accent-bg);
626
- padding: 4px 12px; border: 1px solid var(--accent-border);
626
+ padding: 4px 12px; border: var(--border-width-default) solid var(--accent-border);
627
627
  }
628
628
 
629
629
  /* Sidebar */
@@ -646,7 +646,7 @@ async function handlePostVote(postId: string): Promise<void> {
646
646
  font-size: 12px; color: var(--text-dim); line-height: 1.5;
647
647
  padding: 6px 0;
648
648
  }
649
- .cpub-rule-item + .cpub-rule-item { border-top: 1px solid var(--border2); }
649
+ .cpub-rule-item + .cpub-rule-item { border-top: var(--border-width-default) solid var(--border2); }
650
650
  .cpub-rule-num {
651
651
  font-family: var(--font-mono); font-size: 10px; font-weight: 700;
652
652
  color: var(--accent); flex-shrink: 0; width: 18px; text-align: center;
@@ -243,7 +243,7 @@ useHead({
243
243
  <style scoped>
244
244
  .cpub-post-page { max-width: 800px; margin: 0 auto; padding: 0 16px 40px; }
245
245
 
246
- .cpub-fed-banner { background: var(--accent-bg); border-bottom: 1px solid var(--accent-border); margin: 0 -16px 16px; }
246
+ .cpub-fed-banner { background: var(--accent-bg); border-bottom: var(--border-width-default) solid var(--accent-border); margin: 0 -16px 16px; }
247
247
  .cpub-fed-banner-inner {
248
248
  max-width: 800px; margin: 0 auto; padding: 8px 16px;
249
249
  display: flex; align-items: center; gap: 8px;
@@ -280,7 +280,7 @@ useHead({
280
280
  display: inline-block; padding: 2px 8px; font-family: var(--font-mono);
281
281
  font-size: 10px; font-weight: 600; text-transform: uppercase;
282
282
  letter-spacing: 0.05em; color: var(--accent); background: var(--accent-bg);
283
- border: 1px solid var(--accent-border);
283
+ border: var(--border-width-default) solid var(--accent-border);
284
284
  }
285
285
 
286
286
  .cpub-post-content {
@@ -297,7 +297,7 @@ useHead({
297
297
 
298
298
  .cpub-post-avatar {
299
299
  width: 24px; height: 24px; display: flex; align-items: center; justify-content: center;
300
- background: var(--surface2); border: 1px solid var(--border);
300
+ background: var(--surface2); border: var(--border-width-default) solid var(--border);
301
301
  font-family: var(--font-mono); font-size: 10px; font-weight: 700; color: var(--text-dim);
302
302
  overflow: hidden;
303
303
  }
@@ -313,7 +313,7 @@ useHead({
313
313
  .cpub-post-action-btn {
314
314
  display: inline-flex; align-items: center; gap: 4px;
315
315
  font-size: 12px; color: var(--text-faint); background: none; border: none; cursor: pointer;
316
- padding: 4px 8px; border: 1px solid var(--border); transition: all 0.1s;
316
+ padding: 4px 8px; border: var(--border-width-default) solid var(--border); transition: all 0.1s;
317
317
  }
318
318
  .cpub-post-action-btn:hover:not(:disabled) { color: var(--accent); border-color: var(--accent-border); }
319
319
  .cpub-post-action-btn.active { color: var(--red); border-color: var(--red); }
@@ -354,7 +354,7 @@ useHead({
354
354
 
355
355
  .cpub-reply-avatar {
356
356
  width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;
357
- background: var(--surface2); border: 1px solid var(--border);
357
+ background: var(--surface2); border: var(--border-width-default) solid var(--border);
358
358
  font-family: var(--font-mono); font-size: 9px; font-weight: 700; color: var(--text-dim);
359
359
  overflow: hidden;
360
360
  }
@@ -422,7 +422,7 @@ async function onRefreshGallery(): Promise<void> {
422
422
  /* Compose bar */
423
423
  .cpub-compose-bar {
424
424
  background: var(--surface);
425
- border: 1px solid var(--border);
425
+ border: var(--border-width-default) solid var(--border);
426
426
  border-radius: 12px;
427
427
  padding: 12px 14px;
428
428
  margin-bottom: 16px;
@@ -441,7 +441,7 @@ async function onRefreshGallery(): Promise<void> {
441
441
  letter-spacing: 0.04em;
442
442
  padding: 4px 10px;
443
443
  background: none;
444
- border: 1px solid var(--border);
444
+ border: var(--border-width-default) solid var(--border);
445
445
  border-radius: 6px;
446
446
  color: var(--text-faint);
447
447
  cursor: pointer;
@@ -458,7 +458,7 @@ async function onRefreshGallery(): Promise<void> {
458
458
  .cpub-compose-input {
459
459
  flex: 1;
460
460
  background: var(--surface2);
461
- border: 1px solid var(--border);
461
+ border: var(--border-width-default) solid var(--border);
462
462
  border-radius: 8px;
463
463
  padding: 10px 14px;
464
464
  font-size: 0.8125rem;
@@ -466,7 +466,7 @@ async function onRefreshGallery(): Promise<void> {
466
466
  cursor: pointer;
467
467
  }
468
468
 
469
- .cpub-post-error { font-size: 0.75rem; color: var(--red); background: var(--red-bg); border: 1px solid var(--red-border); border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
469
+ .cpub-post-error { font-size: 0.75rem; color: var(--red); background: var(--red-bg); border: var(--border-width-default) solid var(--red-border); border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
470
470
 
471
471
  /* Member badge */
472
472
  .cpub-member-badge {
@@ -478,7 +478,7 @@ async function onRefreshGallery(): Promise<void> {
478
478
  color: var(--green);
479
479
  background: var(--green-bg);
480
480
  padding: 4px 12px;
481
- border: 1px solid var(--green-border);
481
+ border: var(--border-width-default) solid var(--green-border);
482
482
  border-radius: 20px;
483
483
  }
484
484
 
@@ -488,7 +488,7 @@ async function onRefreshGallery(): Promise<void> {
488
488
 
489
489
  .cpub-mod-avatar {
490
490
  width: 32px; height: 32px; border-radius: 50%;
491
- background: var(--accent-bg); border: 1px solid var(--accent-border);
491
+ background: var(--accent-bg); border: var(--border-width-default) solid var(--accent-border);
492
492
  display: flex; align-items: center; justify-content: center;
493
493
  font-size: 11px; font-weight: 600; color: var(--accent); flex-shrink: 0;
494
494
  overflow: hidden;
@@ -320,7 +320,7 @@ useSeoMeta({
320
320
  display: inline-block; padding: 2px 8px; font-family: var(--font-mono);
321
321
  font-size: 10px; font-weight: 600; text-transform: uppercase;
322
322
  letter-spacing: 0.05em; color: var(--accent); background: var(--accent-bg);
323
- border: 1px solid var(--accent-border);
323
+ border: var(--border-width-default) solid var(--accent-border);
324
324
  }
325
325
 
326
326
  .cpub-post-locked { font-size: 11px; color: var(--text-faint); }
@@ -352,7 +352,7 @@ useSeoMeta({
352
352
 
353
353
  .cpub-post-avatar {
354
354
  width: 24px; height: 24px; display: flex; align-items: center; justify-content: center;
355
- background: var(--surface2); border: 1px solid var(--border);
355
+ background: var(--surface2); border: var(--border-width-default) solid var(--border);
356
356
  font-family: var(--font-mono); font-size: 10px; font-weight: 700; color: var(--text-dim);
357
357
  overflow: hidden;
358
358
  }
@@ -368,14 +368,14 @@ useSeoMeta({
368
368
  .cpub-post-action-btn {
369
369
  display: inline-flex; align-items: center; gap: 4px;
370
370
  font-size: 12px; color: var(--text-faint); background: none; border: none; cursor: pointer;
371
- padding: 4px 8px; border: 1px solid var(--border); transition: all 0.1s;
371
+ padding: 4px 8px; border: var(--border-width-default) solid var(--border); transition: all 0.1s;
372
372
  }
373
373
  .cpub-post-action-btn:hover:not(:disabled) { color: var(--accent); border-color: var(--accent-border); }
374
374
  .cpub-post-action-btn.active { color: var(--red); border-color: var(--red); }
375
375
  .cpub-post-action-btn:disabled { opacity: 0.5; cursor: default; }
376
376
 
377
377
  .cpub-post-mod-bar {
378
- margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border);
378
+ margin-top: 12px; padding-top: 12px; border-top: var(--border-width-default) solid var(--border);
379
379
  display: flex; gap: 6px;
380
380
  }
381
381
 
@@ -400,7 +400,7 @@ useSeoMeta({
400
400
  .cpub-reply-input:focus { outline: none; border-color: var(--accent); }
401
401
 
402
402
  .cpub-post-locked-notice {
403
- padding: 12px 16px; background: var(--surface2); border: 1px solid var(--border);
403
+ padding: 12px 16px; background: var(--surface2); border: var(--border-width-default) solid var(--border);
404
404
  font-size: 12px; color: var(--text-faint); margin-bottom: 16px; text-align: center;
405
405
  }
406
406
 
@@ -420,7 +420,7 @@ useSeoMeta({
420
420
 
421
421
  .cpub-reply-avatar {
422
422
  width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;
423
- background: var(--surface2); border: 1px solid var(--border);
423
+ background: var(--surface2); border: var(--border-width-default) solid var(--border);
424
424
  font-family: var(--font-mono); font-size: 9px; font-weight: 700; color: var(--text-dim);
425
425
  overflow: hidden;
426
426
  }
@@ -170,7 +170,7 @@ function hubLink(hub: Record<string, unknown>): string {
170
170
  align-items: center;
171
171
  gap: 14px;
172
172
  padding-top: 10px;
173
- border-top: 1px solid var(--border2);
173
+ border-top: var(--border-width-default) solid var(--border2);
174
174
  }
175
175
 
176
176
  .cpub-hub-card-stat {
@@ -190,7 +190,7 @@ function hubLink(hub: Record<string, unknown>): string {
190
190
  letter-spacing: 0.08em;
191
191
  color: var(--accent);
192
192
  background: var(--accent-bg);
193
- border: 1px solid var(--accent-border);
193
+ border: var(--border-width-default) solid var(--accent-border);
194
194
  padding: 2px 6px;
195
195
  }
196
196
 
@@ -132,7 +132,7 @@ useSeoMeta({
132
132
 
133
133
  <style scoped>
134
134
  .cpub-fed-banner {
135
- background: var(--accent-bg); border-bottom: 1px solid var(--accent-border);
135
+ background: var(--accent-bg); border-bottom: var(--border-width-default) solid var(--accent-border);
136
136
  }
137
137
  .cpub-fed-banner-inner {
138
138
  max-width: 1200px; margin: 0 auto; padding: 8px 24px;
@@ -161,7 +161,7 @@ useSeoMeta({
161
161
  .cpub-mirror-cover { width: 100%; max-height: 400px; object-fit: cover; margin-bottom: 20px; }
162
162
  .cpub-mirror-title { font-size: 2rem; font-weight: 800; line-height: 1.2; margin-bottom: 12px; }
163
163
  .cpub-mirror-desc { font-size: 1.0625rem; color: var(--text-dim); line-height: 1.6; margin-bottom: 16px; }
164
- .cpub-mirror-author { font-size: 0.875rem; color: var(--text-dim); margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--border); display: flex; align-items: flex-start; gap: 12px; }
164
+ .cpub-mirror-author { font-size: 0.875rem; color: var(--text-dim); margin-bottom: 24px; padding-bottom: 16px; border-bottom: var(--border-width-default) solid var(--border); display: flex; align-items: flex-start; gap: 12px; }
165
165
  .cpub-mirror-author-avatar { width: 40px; height: 40px; object-fit: cover; border: var(--border-width-default) solid var(--border); flex-shrink: 0; }
166
166
  .cpub-mirror-bio { font-size: 0.8125rem; color: var(--text-faint); line-height: 1.5; margin-top: 4px; }
167
167
  .cpub-mirror-bio :deep(a) { color: var(--accent); }
@@ -7,6 +7,7 @@ const searchQuerySchema = z.object({
7
7
 
8
8
  export default defineEventHandler(async (event) => {
9
9
  const db = useDB();
10
+ const config = useConfig();
10
11
  const { siteSlug } = parseParams(event, { siteSlug: 'string' });
11
12
  const query = parseQueryParams(event, searchQuerySchema);
12
13
 
@@ -16,5 +17,5 @@ export default defineEventHandler(async (event) => {
16
17
  const version = result.versions?.find((v) => v.isDefault) ?? result.versions?.[0];
17
18
  if (!version) return [];
18
19
 
19
- return searchDocsPages(db, result.site.id, version.id, query.q ?? '');
20
+ return searchDocsPages(db, result.site.id, version.id, query.q ?? '', config.docs.searchLanguage);
20
21
  });
@@ -54,7 +54,7 @@
54
54
  font-size: var(--text-xs, 12px);
55
55
  font-family: var(--font-mono);
56
56
  padding: 2px 8px;
57
- border: 1px solid var(--border2);
57
+ border: var(--border-width-default) solid var(--border2);
58
58
  color: var(--text-dim);
59
59
  background: var(--surface2);
60
60
  }
@@ -92,7 +92,7 @@
92
92
  font-family: var(--font-mono);
93
93
  margin-bottom: 12px;
94
94
  padding-bottom: 8px;
95
- border-bottom: 1px solid var(--border2);
95
+ border-bottom: var(--border-width-thin) solid var(--border2);
96
96
  }
97
97
 
98
98
  /* ─── SECTION HEADERS ─── */
package/theme/layouts.css CHANGED
@@ -145,7 +145,7 @@
145
145
  .cpub-sidebar-section {
146
146
  margin-bottom: var(--space-6);
147
147
  padding-bottom: var(--space-6);
148
- border-bottom: 1px solid var(--border2);
148
+ border-bottom: var(--border-width-thin) solid var(--border2);
149
149
  }
150
150
 
151
151
  .cpub-sidebar-section:last-child {
@@ -261,7 +261,7 @@
261
261
  padding: 2px 8px;
262
262
  font-size: var(--text-xs);
263
263
  font-weight: var(--font-weight-medium);
264
- border: 1px solid var(--border2);
264
+ border: var(--border-width-default) solid var(--border2);
265
265
  background: var(--surface2);
266
266
  color: var(--text-dim);
267
267
  font-family: var(--font-mono);
package/theme/prose.css CHANGED
@@ -54,7 +54,7 @@
54
54
  .cpub-prose a {
55
55
  color: var(--accent);
56
56
  text-decoration: none;
57
- border-bottom: 1px solid var(--accent-border);
57
+ border-bottom: var(--border-width-thin) solid var(--accent-border);
58
58
  }
59
59
 
60
60
  .cpub-prose a:hover {
@@ -68,7 +68,7 @@
68
68
  color: var(--teal);
69
69
  background: var(--surface2);
70
70
  padding: 2px 6px;
71
- border: 1px solid var(--border2);
71
+ border: var(--border-width-thin) solid var(--border2);
72
72
  }
73
73
 
74
74
  /* Code blocks */
@@ -308,7 +308,7 @@
308
308
  text-align: center;
309
309
  padding: var(--space-4);
310
310
  background: var(--surface2);
311
- border: 1px solid var(--border2);
311
+ border: var(--border-width-thin) solid var(--border2);
312
312
  font-size: var(--text-lg);
313
313
  }
314
314
 
@@ -327,7 +327,7 @@
327
327
  .cpub-prose th,
328
328
  .cpub-prose td {
329
329
  padding: var(--space-2) var(--space-3);
330
- border: 1px solid var(--border2);
330
+ border: var(--border-width-thin) solid var(--border2);
331
331
  text-align: left;
332
332
  }
333
333