Several quality improvements including top and bottom bus bar, seperate downloads for bus bars and a sharable configuration link

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Finn Tews
2026-04-27 23:04:13 +02:00
parent 0cd23b8198
commit e033ce35fa
375 changed files with 250919 additions and 293 deletions

View File

@@ -20,11 +20,19 @@ body {
}
/* Header */
.header-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
margin-bottom: 10px;
}
h1 {
font-size: 2.5em;
font-weight: 700;
color: #fff;
margin-bottom: 8px;
margin-bottom: 0;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
animation: fadeInUp 0.6s ease-out;
}
@@ -43,6 +51,31 @@ h1:hover {
animation: fadeInUp 0.6s ease-out 0.1s both;
}
.repo-credit {
margin: 0;
padding: 10px 14px;
color: #dbeafe;
font-size: 0.95em;
line-height: 1.5;
text-align: center;
max-width: 560px;
background: linear-gradient(135deg, rgba(16, 185, 129, 0.16), rgba(59, 130, 246, 0.12));
border: 1px solid rgba(110, 231, 183, 0.35);
border-radius: 10px;
animation: fadeInUp 0.6s ease-out 0.15s both;
}
.repo-credit a {
color: #a7f3d0;
font-weight: 600;
text-decoration: underline;
text-underline-offset: 2px;
}
.repo-credit a:hover {
color: #ecfdf5;
}
/* Main Layout */
.main-layout {
display: grid;
@@ -644,7 +677,37 @@ input[type="checkbox"]:focus {
border-color: rgba(100, 149, 237, 0.4);
}
#preview {
/* Dual-canvas layout */
.previews-row {
display: flex;
gap: 12px;
align-items: flex-start;
}
.preview-face-wrap {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.preview-face-wrap[hidden] {
display: none !important;
}
.face-label {
text-align: center;
font-size: 0.85em;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #94a3b8;
padding: 2px 0;
}
#preview,
#preview-bottom {
width: 100%;
height: 720px;
border: 1px solid rgba(100, 149, 237, 0.2);
@@ -655,7 +718,8 @@ input[type="checkbox"]:focus {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
#preview:hover {
#preview:hover,
#preview-bottom:hover {
border-color: rgba(100, 149, 237, 0.5);
}
@@ -663,6 +727,160 @@ input[type="checkbox"]:focus {
cursor: grabbing;
}
/* Busbar add-row: two buttons side by side */
.busbar-add-row {
display: flex;
gap: 8px;
margin-top: 8px;
}
.busbar-add-row .btn-secondary {
flex: 1;
font-size: 0.85em;
padding: 8px 6px;
}
/* Busbar controls row: face filter + right-side action buttons */
.busbar-controls-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin-bottom: 10px;
}
.busbar-controls-right {
display: flex;
align-items: center;
gap: 6px;
}
.busbar-face-filter {
display: flex;
border: 1px solid rgba(100, 149, 237, 0.25);
border-radius: 6px;
overflow: hidden;
}
.face-filter-btn {
flex: 1;
padding: 5px 10px;
font-size: 0.78em;
font-weight: 600;
background: none;
border: none;
color: #64748b;
cursor: pointer;
transition: background 0.15s, color 0.15s;
white-space: nowrap;
}
.face-filter-btn + .face-filter-btn {
border-left: 1px solid rgba(100, 149, 237, 0.25);
}
.face-filter-btn.active {
background: rgba(100, 149, 237, 0.2);
color: #93c5fd;
}
.face-filter-btn:not(.active):hover {
background: rgba(100, 149, 237, 0.08);
color: #94a3b8;
}
.btn-clear-markings {
padding: 5px 10px;
font-size: 0.78em;
font-weight: 600;
background: none;
border: 1px solid rgba(239, 68, 68, 0.25);
border-radius: 6px;
color: #94a3b8;
cursor: pointer;
white-space: nowrap;
transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.btn-clear-markings:hover {
background: rgba(239, 68, 68, 0.1);
border-color: rgba(239, 68, 68, 0.5);
color: #ef4444;
}
.btn-dl-all {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 5px 10px;
font-size: 0.78em;
font-weight: 600;
background: none;
border: 1px solid rgba(100, 149, 237, 0.25);
border-radius: 6px;
color: #94a3b8;
cursor: pointer;
white-space: nowrap;
transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.btn-dl-all:hover {
background: rgba(100, 149, 237, 0.1);
border-color: rgba(100, 149, 237, 0.5);
color: #93c5fd;
}
/* Per-busbar download button inside each row */
.busbar-dl {
background: none;
border: none;
color: #64748b;
cursor: pointer;
padding: 0 5px;
line-height: 1;
border-radius: 4px;
display: flex;
align-items: center;
transition: color 0.15s, background 0.15s;
}
.busbar-dl:hover {
color: #93c5fd;
background: rgba(100, 149, 237, 0.15);
}
/* Hide thickness label when DXF format is selected */
.busbar-list-dxf .busbar-thickness-label {
display: none;
}
/* Face sections in busbar list */
.busbar-face-section {
margin-bottom: 12px;
}
.busbar-face-label {
font-size: 0.75em;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #64748b;
padding: 4px 0 6px;
border-bottom: 1px solid rgba(100, 149, 237, 0.12);
margin-bottom: 6px;
}
.busbar-face-empty {
font-size: 0.82em;
color: #475569;
padding: 4px 0;
}
#preview:active,
#preview-bottom:active {
cursor: grabbing;
}
#previewStats {
margin-top: 12px;
padding: 12px;
@@ -808,9 +1026,16 @@ input[type="checkbox"]:focus {
padding: 20px 16px;
}
.header-row {
flex-direction: column;
align-items: stretch;
gap: 12px;
margin-bottom: 12px;
}
h1 {
font-size: 2em;
margin-bottom: 12px;
margin-bottom: 0;
}
.subtitle {
@@ -818,6 +1043,14 @@ input[type="checkbox"]:focus {
margin-bottom: 28px;
}
.repo-credit {
font-size: 0.9em;
margin: 0;
padding: 10px 12px;
text-align: left;
max-width: none;
}
.section {
padding: 24px;
margin-bottom: 20px;
@@ -856,6 +1089,12 @@ input[type="checkbox"]:focus {
font-size: 1em;
}
#copyShareUrlBtn {
font-size: 1em;
min-height: 48px;
padding: 12px 16px;
}
.loading-text {
font-size: 1.1em;
}
@@ -1134,3 +1373,21 @@ input[type="checkbox"]:focus {
.btn-secondary:active {
transform: translateY(0);
}
#copyShareUrlBtn {
margin-top: 10px;
margin-bottom: 0;
min-height: 44px;
}
#copyShareUrlBtn.is-success {
background: rgba(16, 185, 129, 0.26);
border-color: rgba(16, 185, 129, 0.75);
color: #ecfdf5;
}
#copyShareUrlBtn.is-error {
background: rgba(239, 68, 68, 0.2);
border-color: rgba(248, 113, 113, 0.75);
color: #fee2e2;
}