mirror of
https://codeberg.org/likwid/likwid.git
synced 2026-02-09 21:13:09 +00:00
ui: improve proposals list skeleton and typography
This commit is contained in:
parent
e517f1d331
commit
31953dcf5c
1 changed files with 50 additions and 0 deletions
|
|
@ -54,11 +54,36 @@ import { API_BASE as apiBase } from '../lib/api';
|
||||||
<script define:vars={{ apiBase }}>
|
<script define:vars={{ apiBase }}>
|
||||||
let allProposals = [];
|
let allProposals = [];
|
||||||
|
|
||||||
|
function renderSkeleton(count) {
|
||||||
|
const container = document.getElementById('proposals-list');
|
||||||
|
if (!container) return;
|
||||||
|
let html = '';
|
||||||
|
for (let i = 0; i < count; i++) {
|
||||||
|
html += `
|
||||||
|
<div class="proposal-card ui-card is-skeleton" aria-hidden="true">
|
||||||
|
<div class="proposal-header">
|
||||||
|
<div class="skel skel-title"></div>
|
||||||
|
<div class="skel skel-pill"></div>
|
||||||
|
</div>
|
||||||
|
<div class="skel skel-community"></div>
|
||||||
|
<div class="skel skel-desc"></div>
|
||||||
|
<div class="skel skel-desc short"></div>
|
||||||
|
<div class="proposal-stats">
|
||||||
|
<div class="skel skel-stat"></div>
|
||||||
|
<div class="skel skel-stat"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
container.innerHTML = html;
|
||||||
|
}
|
||||||
|
|
||||||
async function loadProposals() {
|
async function loadProposals() {
|
||||||
const container = document.getElementById('proposals-list');
|
const container = document.getElementById('proposals-list');
|
||||||
if (!container) return;
|
if (!container) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
renderSkeleton(8);
|
||||||
const res = await fetch(`${apiBase}/api/proposals`);
|
const res = await fetch(`${apiBase}/api/proposals`);
|
||||||
allProposals = await res.json();
|
allProposals = await res.json();
|
||||||
renderProposals(allProposals);
|
renderProposals(allProposals);
|
||||||
|
|
@ -154,6 +179,12 @@ import { API_BASE as apiBase } from '../lib/api';
|
||||||
transition: transform var(--motion-fast) var(--easing-standard), box-shadow var(--motion-fast) var(--easing-standard), border-color var(--motion-fast) var(--easing-standard), background var(--motion-fast) var(--easing-standard);
|
transition: transform var(--motion-fast) var(--easing-standard), box-shadow var(--motion-fast) var(--easing-standard), border-color var(--motion-fast) var(--easing-standard), background var(--motion-fast) var(--easing-standard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.proposal-card {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.proposal-card:hover {
|
.proposal-card:hover {
|
||||||
border-color: var(--color-border-hover);
|
border-color: var(--color-border-hover);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
|
|
@ -180,6 +211,13 @@ import { API_BASE as apiBase } from '../lib/api';
|
||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
letter-spacing: -0.01em;
|
letter-spacing: -0.01em;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.proposal-card h3 {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.community {
|
.community {
|
||||||
|
|
@ -195,6 +233,11 @@ import { API_BASE as apiBase } from '../lib/api';
|
||||||
.description {
|
.description {
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
|
margin: 0;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.proposal-stats {
|
.proposal-stats {
|
||||||
|
|
@ -216,4 +259,11 @@ import { API_BASE as apiBase } from '../lib/api';
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skel-title { height: 18px; width: 68%; }
|
||||||
|
.skel-pill { height: 14px; width: 88px; border-radius: 999px; }
|
||||||
|
.skel-community { height: 10px; width: 42%; margin-top: 0.5rem; }
|
||||||
|
.skel-desc { height: 12px; width: 100%; margin-top: 0.75rem; }
|
||||||
|
.skel-desc.short { width: 78%; margin-top: 0.5rem; }
|
||||||
|
.skel-stat { height: 10px; width: 120px; }
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue