fully responsive UI

This commit is contained in:
2025-11-24 23:43:51 +01:00
parent bdc4992d16
commit 177a9cbac3
12 changed files with 1297 additions and 865 deletions

View File

@@ -4,7 +4,7 @@
gap: 1.5rem;
height: calc(100vh - var(--header-height));
padding: 1rem 2rem 2rem 2rem;
overflow: hidden;
overflow: auto;
}
.editor-pane,
@@ -51,6 +51,7 @@
flex-direction: column;
gap: 0.25rem;
flex: 1;
min-width: 120px;
}
.control-group label {
@@ -94,6 +95,12 @@
gap: 0.5rem;
border-bottom: 1px solid var(--border);
margin-bottom: 0.5rem;
overflow-x: auto;
scrollbar-width: none;
}
.tabs::-webkit-scrollbar {
display: none;
}
.tab-btn {
@@ -104,6 +111,8 @@
cursor: pointer;
border-bottom: 2px solid transparent;
font-weight: 500;
white-space: nowrap;
transition: 0.2s;
}
.tab-btn.active {
@@ -193,4 +202,169 @@ pre {
.loading-state.hidden {
display: none;
}
@media (max-width: 767px) {
.emulator-container {
grid-template-columns: 1fr;
grid-template-rows: minmax(250px, 40vh) minmax(400px, 1fr);
gap: 1rem;
padding: 1rem;
height: auto;
overflow-y: auto;
}
.editor-pane,
.preview-pane {
gap: 0.75rem;
height: auto;
min-height: 0;
overflow: visible;
}
.editor-pane {
display: flex;
flex-direction: column;
}
.preview-pane {
display: flex;
flex-direction: column;
overflow: visible;
}
.code-editor {
font-size: 13px;
padding: 0.75rem;
min-height: 200px;
max-height: 35vh;
}
.control-bar {
padding: 0.75rem;
gap: 0.5rem;
flex-direction: column;
align-items: stretch;
}
.control-bar[style*="background: transparent"] {
flex-direction: row !important;
padding: 0 !important;
}
.control-group {
flex: unset;
width: 100%;
min-width: 0;
}
.control-group:has(label:contains("Page")) {
max-width: none;
}
.control-input {
font-size: 0.85rem;
padding: 0.6rem;
}
.btn-run {
width: 100%;
height: auto;
padding: 0.75rem;
align-self: stretch;
margin-top: 0.25rem;
}
.tabs {
gap: 0.25rem;
margin-bottom: 0.5rem;
}
.tab-btn {
padding: 0.6rem 0.75rem;
font-size: 0.85rem;
flex: 1;
text-align: center;
}
.output-area {
padding: 0.75rem;
min-height: 300px;
overflow: auto;
}
.visual-card {
width: 130px;
margin: 0.35rem;
}
.visual-card img {
height: 170px;
}
.visual-card .title {
font-size: 0.75rem;
padding: 0.4rem;
}
.visual-chapter {
padding: 0.6rem 0.5rem;
font-size: 0.9rem;
}
pre {
font-size: 0.8rem;
}
.log-entry {
font-size: 0.8rem;
}
}
@media (min-width: 768px) and (max-width: 1023px) {
.emulator-container {
grid-template-columns: 1fr;
grid-template-rows: auto 1fr;
gap: 1.25rem;
padding: 1rem 1.5rem;
}
.editor-pane {
max-height: 35vh;
}
.preview-pane {
min-height: 45vh;
}
.code-editor {
font-size: 13px;
}
.control-bar {
flex-wrap: wrap;
}
.control-group {
min-width: 140px;
}
.btn-run {
width: auto;
min-width: 100px;
}
}
@media (min-width: 1024px) and (max-width: 1279px) {
.emulator-container {
gap: 1.25rem;
}
.visual-card {
width: 140px;
}
.visual-card img {
height: 180px;
}
}