feat(ui): inline expansion for mobile stream entries
Replace bottom-sheet peek with inline accordion at ≤900px. Entries expand in-place with grid-template-rows animation (0.2s). Body clamped to 3 lines; fullscreen uncaps it. Selection toggles DOM classes instead of re-rendering for fluid j/k nav.
This commit is contained in:
+66
-14
@@ -375,28 +375,72 @@ main.focus-peek .resize-handle { visibility: hidden; }
|
||||
}
|
||||
|
||||
.entity-item {
|
||||
cursor: pointer;
|
||||
border-left: 2px solid transparent;
|
||||
transition: background var(--t-fast), border-left-color var(--t-fast);
|
||||
}
|
||||
|
||||
.entity-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 5px 16px 5px 20px;
|
||||
cursor: pointer;
|
||||
border-left: 2px solid transparent;
|
||||
min-height: 32px;
|
||||
transition: background var(--t-fast), border-left-color var(--t-fast);
|
||||
}
|
||||
|
||||
.entity-item:hover { background: var(--surf); }
|
||||
.entity-item.selected { background: var(--surf); border-left-color: var(--accent); }
|
||||
|
||||
.entity-exp { display: none; }
|
||||
|
||||
.entity-exp-clip { overflow: hidden; }
|
||||
|
||||
.exp-inner {
|
||||
padding: .6rem 1rem .7rem calc(20px + 14px + 8px);
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.exp-body {
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
color: var(--text);
|
||||
line-height: 1.7;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
margin-bottom: .5rem;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.entity-item.exp-full .exp-body {
|
||||
-webkit-line-clamp: unset;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.exp-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: .5rem; }
|
||||
|
||||
.exp-acts { display: flex; flex-wrap: wrap; gap: 4px; }
|
||||
|
||||
.exp-toolbar {
|
||||
display: none;
|
||||
justify-content: space-between;
|
||||
margin-top: .5rem;
|
||||
padding-top: .5rem;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.entity-item.is-card {
|
||||
background: var(--surf);
|
||||
margin: 2px 10px;
|
||||
border-radius: var(--r2);
|
||||
border: 1px solid var(--border);
|
||||
border-left-width: 1px;
|
||||
padding: 7px 12px;
|
||||
}
|
||||
|
||||
.entity-item.is-card .entity-head { padding: 7px 12px; }
|
||||
|
||||
.entity-item.is-card:hover { border-color: var(--muted); }
|
||||
.entity-item.is-card.selected { border-color: var(--accent); background: var(--a-bg); }
|
||||
|
||||
@@ -785,13 +829,6 @@ main.focus-peek .resize-handle { visibility: hidden; }
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.peek-mobile-bar {
|
||||
display: none;
|
||||
justify-content: space-between;
|
||||
padding: 6px 12px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.peek-mobile-btn {
|
||||
font-family: var(--mono);
|
||||
font-size: 14px;
|
||||
@@ -1488,8 +1525,23 @@ kbd { background: var(--raised); border: 1px solid var(--border); border-radius:
|
||||
transition: transform var(--t-base);
|
||||
z-index: 50;
|
||||
}
|
||||
#detail-pane.visible { transform: translateY(0); }
|
||||
#detail-pane.peek-full { height: 100vh; height: 100dvh; top: 0; }
|
||||
.peek-mobile-bar { display: flex; }
|
||||
#detail-pane { display: none !important; }
|
||||
.entity-exp {
|
||||
display: grid;
|
||||
grid-template-rows: 0fr;
|
||||
transition: grid-template-rows .2s ease;
|
||||
}
|
||||
.entity-item.selected .entity-exp { grid-template-rows: 1fr; }
|
||||
.entity-item.selected .exp-toolbar { display: flex; }
|
||||
.entity-item.exp-full {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 60;
|
||||
background: var(--bg);
|
||||
overflow-y: auto;
|
||||
border-left: none;
|
||||
}
|
||||
.entity-item.exp-full .entity-exp { grid-template-rows: 1fr; }
|
||||
.entity-item.exp-full .exp-inner { padding-top: 1rem; padding-bottom: 2rem; }
|
||||
main.focus-peek #entity-panel { display: block; overflow: auto; min-width: 0; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user