Improve share card scan order for faster link decisions
Constraint: Keep the change scoped to shares card internals without altering logs/projects card structures Rejected: Showing project_repo as a separate row | duplicated ownership context and hurt visual hierarchy Confidence: high Scope-risk: narrow Directive: Keep shares card metadata compact and action-oriented; prefer tags left and time/action right Tested: npm run build Not-tested: Manual cross-device visual QA in browser after commit
This commit is contained in:
parent
28358164c5
commit
7a091a9b44
|
|
@ -36,19 +36,26 @@ const sourceLabels = {
|
||||||
itemCount={shares.length}
|
itemCount={shares.length}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="card-grid" style="grid-template-columns: 1fr;">
|
<div class="shares-list">
|
||||||
{shares.map((share) => (
|
{shares.map((share) => (
|
||||||
<article class="card">
|
<article class="card share-card">
|
||||||
<p class="log-meta">
|
<div class="share-card__content">
|
||||||
<span class="mono">{formatDateTime(share.updated_at || share.time) || '未标注时间'}</span>
|
<h2 class="share-card__title">{share.name}</h2>
|
||||||
|
{share.description ? <p class="share-card__summary">{share.description}</p> : null}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="share-card__meta-row">
|
||||||
|
<p class="share-card__tags">
|
||||||
{share.project ? <span class="tag">{share.project}</span> : null}
|
{share.project ? <span class="tag">{share.project}</span> : null}
|
||||||
{share.type ? <span class="tag tag--tech">{share.type}</span> : null}
|
{share.type ? <span class="tag tag--tech">{share.type}</span> : null}
|
||||||
{share.source ? <span class="tag">{sourceLabels[share.source]}</span> : null}
|
{share.source ? <span class="tag">{sourceLabels[share.source]}</span> : null}
|
||||||
</p>
|
</p>
|
||||||
<h2 class="project-title">{share.name}</h2>
|
|
||||||
{share.description ? <p>{share.description}</p> : null}
|
<div class="share-card__right">
|
||||||
{share.project_repo ? <p class="activity-copy mono">{share.project_repo}</p> : null}
|
<span class="share-card__time mono">
|
||||||
<div class="project-links" style="margin-top: 1rem;">
|
{formatDateTime(share.updated_at || share.time) || '未标注时间'}
|
||||||
|
</span>
|
||||||
|
<div class="share-card__action project-links">
|
||||||
{share.url ? (
|
{share.url ? (
|
||||||
<a class="section-link" href={share.url} target="_blank" rel="noreferrer">
|
<a class="section-link" href={share.url} target="_blank" rel="noreferrer">
|
||||||
打开链接
|
打开链接
|
||||||
|
|
@ -57,6 +64,8 @@ const sourceLabels = {
|
||||||
<span class="tag">链接待补充</span>
|
<span class="tag">链接待补充</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -551,6 +551,67 @@ main {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.shares-list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(0, 1fr);
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card {
|
||||||
|
display: grid;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__content {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__title {
|
||||||
|
margin: 0;
|
||||||
|
font-family: 'Archivo', sans-serif;
|
||||||
|
font-size: 1.28rem;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__summary {
|
||||||
|
margin: 0;
|
||||||
|
color: var(--muted-strong);
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__meta-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 0.9rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__tags {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.55rem 0.8rem;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.6rem 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__time {
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 0.84rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__action {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.card:hover,
|
.card:hover,
|
||||||
.card:focus-within {
|
.card:focus-within {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
|
|
@ -889,6 +950,19 @@ main {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.share-card__meta-row {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__right {
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-card__action {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.section-heading,
|
.section-heading,
|
||||||
.footer-card {
|
.footer-card {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue