feat(showcase): add public showcase page with per-profile/per-postcard visibility controls
This commit is contained in:
@@ -226,6 +226,27 @@ code { background: var(--bg); padding: .15rem .4rem; border-radius: 4px; font-si
|
||||
/* Empty state */
|
||||
.empty { color: var(--text-muted); padding: 2rem; text-align: center; }
|
||||
|
||||
/* Toggle switch */
|
||||
.toggle-switch { position: relative; display: inline-block; width: 36px; height: 20px; }
|
||||
.toggle-switch input { opacity: 0; width: 0; height: 0; }
|
||||
.toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background: var(--border); border-radius: 20px; transition: .2s; }
|
||||
.toggle-slider::before { content: ""; position: absolute; height: 16px; width: 16px; left: 2px; bottom: 2px; background: #fff; border-radius: 50%; transition: .2s; }
|
||||
.toggle-switch input:checked + .toggle-slider { background: var(--primary); }
|
||||
.toggle-switch input:checked + .toggle-slider::before { transform: translateX(16px); }
|
||||
.toggle-sm { width: 30px; height: 18px; }
|
||||
.toggle-sm .toggle-slider::before { height: 14px; width: 14px; }
|
||||
.toggle-sm input:checked + .toggle-slider::before { transform: translateX(12px); }
|
||||
|
||||
/* Showcase */
|
||||
.showcase-card { display: block; background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; transition: box-shadow .15s; text-decoration: none; color: var(--text); }
|
||||
.showcase-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); text-decoration: none; }
|
||||
.showcase-card-img { width: 100%; aspect-ratio: 3/2; object-fit: cover; display: block; background: var(--bg); }
|
||||
.showcase-card-img.placeholder-img { display: flex; align-items: center; justify-content: center; font-size: 2rem; }
|
||||
.showcase-card-body { padding: .75rem; }
|
||||
.showcase-card-body strong { font-size: .9rem; }
|
||||
.showcase-card-meta { display: flex; gap: .5rem; font-size: .8rem; color: var(--text-muted); margin-top: .25rem; }
|
||||
.showcase-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .75rem; margin-bottom: 1rem; }
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 640px) {
|
||||
.detail-grid { grid-template-columns: 1fr; }
|
||||
@@ -247,4 +268,8 @@ code { background: var(--bg); padding: .15rem .4rem; border-radius: 4px; font-si
|
||||
.btn-back { padding: .25rem .5rem; font-size: .85rem; }
|
||||
.profile-grid { grid-template-columns: 1fr; }
|
||||
.profile-card-stats { gap: .75rem; flex-wrap: wrap; }
|
||||
.showcase-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: .5rem; }
|
||||
.showcase-card-meta { flex-wrap: wrap; }
|
||||
.detail-title-row h1 { font-size: 1.2rem; }
|
||||
.btn-back { padding: .25rem .5rem; font-size: .85rem; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user