@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.
- package/components/editors/DocsPageTree.vue +14 -0
- package/components/views/ArticleView.vue +19 -14
- package/components/views/BlogView.vue +18 -14
- package/components/views/ExplainerView.vue +19 -1
- package/components/views/ProjectView.vue +27 -2
- package/package.json +6 -6
- package/pages/contests/[slug]/index.vue +30 -0
- package/pages/dashboard.vue +10 -0
- package/pages/hubs/[slug]/posts/[postId].vue +14 -0
- package/pages/search.vue +5 -0
- package/pages/u/[username]/index.vue +8 -0
|
@@ -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:
|
|
770
|
-
.cpub-article-wrap {
|
|
771
|
-
|
|
772
|
-
}
|
|
773
|
-
.cpub-related-grid {
|
|
774
|
-
|
|
775
|
-
}
|
|
776
|
-
.cpub-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
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:
|
|
689
|
-
.cpub-blog-wrap {
|
|
690
|
-
|
|
691
|
-
}
|
|
692
|
-
.cpub-
|
|
693
|
-
|
|
694
|
-
}
|
|
695
|
-
.cpub-series-nav-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
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:
|
|
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:
|
|
1513
|
+
@media (max-width: 768px) {
|
|
1514
1514
|
.cpub-page-outer { padding: 0 16px; }
|
|
1515
|
-
.cpub-hero-cover { height:
|
|
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.
|
|
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/
|
|
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>
|
package/pages/dashboard.vue
CHANGED
|
@@ -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>
|