- createSidePanels({ prefKey, panels: [{ id, title, body }] }) · 본문과 함께 .ui-side-panels-row 칸에 [본문, root]
- 접힌 패널 = 제목 세로 글 띠(누르면 폄) · 편 패널 = 머리(제목 · 접기 ▸) + 몸 · 모두 접힘 됨
- 왼쪽 경계 끌기 · 화살표 키로 폭 · 열린 패널 · 폭은 취향 키 aislo:pref:{prefKey}
- 폭 자르기 시험(test_ui_side_panels)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
123 lines
2.5 KiB
CSS
123 lines
2.5 KiB
CSS
/* 본문 오른쪽 접는 패널 여럿 — 접힌 패널 = 세로 글 띠 · 편 패널 = 공유 폭(--ui-side-panels-width) */
|
|
|
|
/* 부르는 쪽 칸 — [본문, 패널 묶음] */
|
|
.ui-side-panels-row {
|
|
display: flex;
|
|
align-items: stretch;
|
|
min-width: 0;
|
|
}
|
|
|
|
.ui-side-panels-row > :first-child {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
|
|
.ui-side-panels {
|
|
display: flex;
|
|
flex: none;
|
|
align-items: stretch;
|
|
gap: var(--spacing-4);
|
|
margin-left: var(--spacing-8);
|
|
}
|
|
|
|
.ui-side-panels.is-resizing {
|
|
user-select: none;
|
|
}
|
|
|
|
.ui-side-panels__strip {
|
|
flex: none;
|
|
width: 32px;
|
|
padding: var(--spacing-8) 0;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-cards);
|
|
background: var(--color-surface);
|
|
color: var(--color-text-secondary);
|
|
font: inherit;
|
|
font-size: var(--text-body-sm);
|
|
font-weight: 600;
|
|
writing-mode: vertical-rl;
|
|
text-orientation: mixed;
|
|
text-align: start;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.ui-side-panels__strip:hover,
|
|
.ui-side-panels__strip:focus-visible {
|
|
border-color: var(--color-primary);
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.ui-side-panels__panel {
|
|
position: relative;
|
|
display: flex;
|
|
flex: none;
|
|
flex-direction: column;
|
|
width: var(--ui-side-panels-width, 420px);
|
|
min-width: 0;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-cards);
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
.ui-side-panels__strip[hidden],
|
|
.ui-side-panels__panel[hidden] {
|
|
display: none;
|
|
}
|
|
|
|
/* 왼쪽 경계 — 끌기 · 화살표 키 */
|
|
.ui-side-panels__grip {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: -5px;
|
|
width: 8px;
|
|
cursor: col-resize;
|
|
touch-action: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.ui-side-panels__grip:hover,
|
|
.ui-side-panels__grip:focus-visible,
|
|
.ui-side-panels.is-resizing .ui-side-panels__grip {
|
|
background: var(--color-primary);
|
|
opacity: 0.4;
|
|
}
|
|
|
|
.ui-side-panels__head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-8);
|
|
padding: var(--spacing-8) var(--spacing-12);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.ui-side-panels__title {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.ui-side-panels__fold {
|
|
flex: none;
|
|
padding: 0 var(--spacing-4);
|
|
border: 0;
|
|
border-radius: var(--radius-sm);
|
|
background: none;
|
|
color: var(--color-text-secondary);
|
|
font: inherit;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.ui-side-panels__fold:hover,
|
|
.ui-side-panels__fold:focus-visible {
|
|
color: var(--color-primary);
|
|
}
|
|
|
|
.ui-side-panels__body {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: var(--spacing-12);
|
|
overflow: auto;
|
|
}
|