@commonpub/layer 0.7.10 → 0.7.12

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.
@@ -290,6 +290,7 @@ onUnmounted(() => {
290
290
  </button>
291
291
  <span v-else class="cpub-tree-toggle-spacer" />
292
292
 
293
+ <i class="fa-solid fa-grip-vertical cpub-tree-drag-handle" />
293
294
  <i class="fa-solid fa-file-lines cpub-tree-icon" />
294
295
  <span class="cpub-tree-title">{{ node.title || 'Untitled' }}</span>
295
296
 
@@ -424,6 +425,19 @@ onUnmounted(() => {
424
425
  flex-shrink: 0;
425
426
  }
426
427
 
428
+ .cpub-tree-drag-handle {
429
+ font-size: 9px;
430
+ color: var(--text-faint);
431
+ opacity: 0;
432
+ cursor: grab;
433
+ flex-shrink: 0;
434
+ transition: opacity 0.12s;
435
+ }
436
+
437
+ .cpub-tree-drag-handle:active { cursor: grabbing; }
438
+ .cpub-tree-item:hover .cpub-tree-drag-handle { opacity: 0.6; }
439
+ .cpub-tree-item-selected .cpub-tree-drag-handle { opacity: 0.8; }
440
+
427
441
  .cpub-tree-icon {
428
442
  font-size: 11px;
429
443
  color: var(--text-faint);
@@ -766,19 +766,24 @@ useJsonLd({
766
766
  }
767
767
 
768
768
  /* ── RESPONSIVE ── */
769
- @media (max-width: 640px) {
770
- .cpub-article-wrap {
771
- padding: 24px 16px 48px;
772
- }
773
- .cpub-related-grid {
774
- grid-template-columns: 1fr;
775
- }
776
- .cpub-engagement-row {
777
- flex-wrap: wrap;
778
- }
779
- .cpub-author-card {
780
- flex-direction: column;
781
- gap: 16px;
782
- }
769
+ @media (max-width: 768px) {
770
+ .cpub-article-wrap { padding: 24px 16px 48px; }
771
+ .cpub-article-title { font-size: 22px; }
772
+ .cpub-article-lead { font-size: 14px; margin-bottom: 16px; }
773
+ .cpub-related-grid { grid-template-columns: 1fr 1fr; }
774
+ .cpub-engagement-row { flex-wrap: wrap; gap: 6px; }
775
+ .cpub-engage-btn { padding: 8px 12px; min-height: 36px; }
776
+ .cpub-engage-sep { display: none; }
777
+ .cpub-tag-link { padding: 4px 10px; font-size: 11px; min-height: 28px; display: inline-flex; align-items: center; }
778
+ }
779
+
780
+ @media (max-width: 480px) {
781
+ .cpub-article-wrap { padding: 16px 12px 40px; }
782
+ .cpub-article-title { font-size: 20px; }
783
+ .cpub-article-lead { font-size: 13px; }
784
+ .cpub-related-grid { grid-template-columns: 1fr; }
785
+ .cpub-author-card { flex-direction: column; gap: 12px; }
786
+ .cpub-engage-btn { font-size: 11px; }
787
+ .cpub-meta-row { font-size: 10px; flex-wrap: wrap; gap: 6px; }
783
788
  }
784
789
  </style>
@@ -685,19 +685,23 @@ const hasSeries = computed(() => !!seriesTitle.value && seriesTotalParts.value >
685
685
  .cpub-btn-sm { padding: 4px 10px; font-size: 11px; }
686
686
 
687
687
  /* ── RESPONSIVE ── */
688
- @media (max-width: 640px) {
689
- .cpub-blog-wrap {
690
- padding: 24px 16px 48px;
691
- }
692
- .cpub-engagement-row {
693
- flex-wrap: wrap;
694
- }
695
- .cpub-series-nav-btns {
696
- grid-template-columns: 1fr;
697
- }
698
- .cpub-author-card {
699
- flex-direction: column;
700
- gap: 16px;
701
- }
688
+ @media (max-width: 768px) {
689
+ .cpub-blog-wrap { padding: 24px 16px 48px; }
690
+ .cpub-blog-title { font-size: 22px; }
691
+ .cpub-engagement-row { flex-wrap: wrap; gap: 6px; }
692
+ .cpub-engage-btn { padding: 8px 12px; min-height: 36px; }
693
+ .cpub-engage-sep { display: none; }
694
+ .cpub-series-nav-btns { grid-template-columns: 1fr; }
695
+ .cpub-series-nav-btn { padding: 12px; min-height: 44px; }
696
+ .cpub-tag-link { padding: 4px 10px; font-size: 11px; min-height: 28px; display: inline-flex; align-items: center; }
697
+ }
698
+
699
+ @media (max-width: 480px) {
700
+ .cpub-blog-wrap { padding: 16px 12px 40px; }
701
+ .cpub-blog-title { font-size: 20px; }
702
+ .cpub-blog-lead { font-size: 13px; }
703
+ .cpub-author-card { flex-direction: column; gap: 12px; }
704
+ .cpub-engage-btn { font-size: 11px; }
705
+ .cpub-hero-cover { max-height: 280px; }
702
706
  }
703
707
  </style>
@@ -775,6 +775,24 @@ onUnmounted(() => { document.removeEventListener('keydown', onKeydown); });
775
775
  .cpub-mobile-author { display: flex; }
776
776
  .cpub-content-wrap { padding: 24px 16px 48px; }
777
777
  .cpub-section-nav { flex-direction: column; gap: 16px; }
778
- .cpub-section-title { font-size: 24px; }
778
+ .cpub-section-title { font-size: 22px; }
779
+ .cpub-explainer-topbar { gap: 6px; padding: 0 10px; }
780
+ .cpub-explainer-badge { display: none; }
781
+ .cpub-topbar-title { font-size: 12px; }
782
+ .cpub-topbar-divider { display: none; }
783
+ .cpub-progress-text { font-size: 10px; }
784
+ .cpub-icon-btn { width: 34px; height: 34px; }
785
+ .cpub-progress-dots { display: none; }
786
+ }
787
+
788
+ @media (max-width: 480px) {
789
+ .cpub-content-wrap { padding: 16px 12px 40px; }
790
+ .cpub-section-title { font-size: 18px; }
791
+ .cpub-section-body { font-size: 14px; }
792
+ .cpub-section-num-badge { width: 28px; height: 28px; font-size: 11px; }
793
+ .cpub-icon-btn { width: 36px; height: 36px; }
794
+ .cpub-nav-btn-group { gap: 2px; }
795
+ .cpub-section-nav-btn { padding: 12px; font-size: 12px; min-height: 44px; }
796
+ .cpub-prev-btn { min-height: 44px; padding: 10px 16px; }
779
797
  }
780
798
  </style>
@@ -1510,8 +1510,33 @@ async function handleBuild(): Promise<void> {
1510
1510
  .cpub-toc-col { display: none; }
1511
1511
  }
1512
1512
 
1513
- @media (max-width: 640px) {
1513
+ @media (max-width: 768px) {
1514
1514
  .cpub-page-outer { padding: 0 16px; }
1515
- .cpub-hero-cover { height: 180px; }
1515
+ .cpub-hero-cover { height: 200px; }
1516
+ .cpub-project-title { font-size: 18px; }
1517
+ .cpub-project-desc { font-size: 13px; }
1518
+ .cpub-tabs-strip { padding: 0 16px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
1519
+ .cpub-tabs-inner { max-width: none; padding: 0; }
1520
+ .cpub-tab { padding: 10px 12px; font-size: 11px; white-space: nowrap; }
1521
+ .cpub-engagement-row { flex-wrap: wrap; gap: 6px; }
1522
+ .cpub-engage-btn { padding: 8px 12px; min-height: 36px; }
1523
+ .cpub-engage-sep { display: none; }
1524
+ .cpub-content-area { padding: 0 16px; }
1525
+ .cpub-sidebar { position: static; }
1526
+ .cpub-author-tags .cpub-author-tag { padding: 2px 8px; font-size: 10px; }
1527
+ }
1528
+
1529
+ @media (max-width: 480px) {
1530
+ .cpub-page-outer { padding: 0 12px; }
1531
+ .cpub-hero-cover { height: 160px; }
1532
+ .cpub-project-title { font-size: 16px; }
1533
+ .cpub-project-desc { font-size: 12px; line-height: 1.5; }
1534
+ .cpub-project-meta { padding: 16px 0 0; }
1535
+ .cpub-breadcrumbs { font-size: 10px; padding: 10px 0 8px; }
1536
+ .cpub-tab { padding: 8px 10px; font-size: 10px; }
1537
+ .cpub-engage-btn { font-size: 11px; padding: 8px 10px; }
1538
+ .cpub-author-row { gap: 8px; }
1539
+ .cpub-author-detail { font-size: 10px; }
1540
+ .cpub-toc-item { padding: 6px 0 6px 10px; font-size: 11px; min-height: 36px; display: flex; align-items: center; }
1516
1541
  }
1517
1542
  </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commonpub/layer",
3
- "version": "0.7.10",
3
+ "version": "0.7.12",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "files": [
@@ -51,15 +51,15 @@
51
51
  "vue-router": "^4.3.0",
52
52
  "zod": "^4.3.6",
53
53
  "@commonpub/config": "0.9.0",
54
- "@commonpub/editor": "0.7.3",
55
54
  "@commonpub/auth": "0.5.0",
55
+ "@commonpub/editor": "0.7.4",
56
56
  "@commonpub/docs": "0.6.2",
57
- "@commonpub/schema": "0.9.4",
58
- "@commonpub/server": "2.27.6",
59
- "@commonpub/explainer": "0.7.5",
57
+ "@commonpub/explainer": "0.7.6",
60
58
  "@commonpub/learning": "0.5.0",
59
+ "@commonpub/schema": "0.9.4",
61
60
  "@commonpub/protocol": "0.9.7",
62
- "@commonpub/ui": "0.8.5"
61
+ "@commonpub/ui": "0.8.5",
62
+ "@commonpub/server": "2.27.6"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",
@@ -553,4 +553,34 @@ async function submitEntry(): Promise<void> {
553
553
  font-size: 11px; color: var(--text-dim); margin-left: auto; font-family: var(--font-mono);
554
554
  }
555
555
  .cpub-admin-status strong { color: var(--accent); text-transform: capitalize; }
556
+
557
+ /* ── RESPONSIVE ── */
558
+ @media (max-width: 768px) {
559
+ .cpub-hero { padding: 32px 0 28px; }
560
+ .cpub-hero-inner { padding: 0 16px; }
561
+ .cpub-hero-title { font-size: 24px; }
562
+ .cpub-hero-tagline { font-size: 13px; }
563
+ .cpub-hero-meta { flex-wrap: wrap; gap: 10px; }
564
+ .cpub-contest-main { padding: 20px 16px; }
565
+ .cpub-contest-layout { grid-template-columns: 1fr; }
566
+ .cpub-prize-grid { grid-template-columns: 1fr; }
567
+ .cpub-judges-grid { grid-template-columns: 1fr 1fr; }
568
+ .cpub-entry-grid { grid-template-columns: 1fr; }
569
+ .cpub-countdown-block { padding: 8px 12px; min-width: 48px; }
570
+ .cpub-countdown-val { font-size: 20px; }
571
+ }
572
+
573
+ @media (max-width: 480px) {
574
+ .cpub-hero-title { font-size: 20px; }
575
+ .cpub-hero-tagline { font-size: 12px; margin-bottom: 16px; }
576
+ .cpub-hero-stats { flex-wrap: wrap; gap: 16px; }
577
+ .cpub-hero-stat-val { font-size: 16px; }
578
+ .cpub-contest-main { padding: 16px 12px; }
579
+ .cpub-judges-grid { grid-template-columns: 1fr; }
580
+ .cpub-prize-additional { grid-template-columns: 1fr; }
581
+ .cpub-sponsor-grid { grid-template-columns: 1fr; }
582
+ .cpub-countdown-row { flex-wrap: wrap; justify-content: center; }
583
+ .cpub-hero-cta { flex-direction: column; align-items: stretch; }
584
+ .cpub-total-prize { border-left: none; padding-left: 0; justify-content: center; }
585
+ }
556
586
  </style>
@@ -599,5 +599,15 @@ async function deleteItem(id: string, title: string): Promise<void> {
599
599
  width: 100%;
600
600
  margin-top: 4px;
601
601
  }
602
+ .cpub-dash-action-btn {
603
+ padding: 6px 10px;
604
+ min-height: 32px;
605
+ }
606
+ }
607
+
608
+ @media (max-width: 480px) {
609
+ .cpub-dash { padding: 16px 12px; }
610
+ .cpub-dash-stat { min-width: 50%; padding: 12px 10px; }
611
+ .cpub-dash-tab { padding: 8px 12px; font-size: 11px; }
602
612
  }
603
613
  </style>
@@ -440,4 +440,18 @@ useSeoMeta({
440
440
  color: var(--text-faint); padding: 2px 0;
441
441
  }
442
442
  .cpub-reply-btn:hover { color: var(--accent); }
443
+
444
+ /* ── RESPONSIVE ── */
445
+ @media (max-width: 480px) {
446
+ .cpub-post-page { padding: 16px 12px; }
447
+ .cpub-post-card { padding: 14px; }
448
+ .cpub-post-content { font-size: 14px; }
449
+ .cpub-post-actions { flex-wrap: wrap; gap: 6px; }
450
+ .cpub-post-action-btn { padding: 6px 10px; min-height: 32px; }
451
+ .cpub-reply-nested { margin-left: 12px; }
452
+ .cpub-reply { padding: 10px 12px; }
453
+ .cpub-reply-row { flex-direction: column; }
454
+ .cpub-reply-input { width: 100%; }
455
+ .cpub-post-mod-bar { flex-wrap: wrap; }
456
+ }
443
457
  </style>
package/pages/search.vue CHANGED
@@ -752,6 +752,11 @@ const { data: relatedCommunities } = await useFetch('/api/hubs', {
752
752
  }
753
753
  }
754
754
 
755
+ @media (max-width: 480px) {
756
+ .cpub-page-shell { padding: 12px; gap: 16px; }
757
+ .cpub-search-hero { padding: 12px 12px 0; }
758
+ }
759
+
755
760
  /* ── COMMUNITY RESULT CARDS ── */
756
761
  .cpub-search-hub-card {
757
762
  display: flex;
@@ -869,4 +869,12 @@ async function handleReport(): Promise<void> {
869
869
  grid-template-columns: 1fr;
870
870
  }
871
871
  }
872
+
873
+ @media (max-width: 480px) {
874
+ .cpub-profile-tabs-inner { padding: 0 12px; }
875
+ .cpub-profile-main { padding: 16px 12px; }
876
+ .cpub-profile-tab { padding: 10px 10px; font-size: 11px; min-height: 40px; }
877
+ .cpub-profile-stat { min-width: 100%; padding: 10px 16px; }
878
+ .cpub-profile-name { font-size: 18px; }
879
+ }
872
880
  </style>