refactor: mutualize popup styles into shared SCSS file

Extract ~150 lines of identical CSS from ElementPopup and PagePopup into
a new _settings-popup.scss partial:
- Common popup structure (header, body, controls, CSS panel)
- Shared components (tooltips, toggle switches, inheritance button)
- CSS editor styling (readonly display, textarea)

Component-specific styles retained:
- ElementPopup: purple theme, button groups, checkboxes
- PagePopup: orange theme, margin grid layout

Reduces duplication and improves maintainability.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
isUnknown 2025-12-08 16:17:34 +01:00
parent 12595c5454
commit b903c75f98
6 changed files with 420 additions and 413 deletions

View file

@ -31,6 +31,7 @@ button {
--color-browngray-200: #d0c4ba;
--color-browngray-300: #b5a9a1;
--color-page-highlight: #ff8a50;
--color-purple: #7136ff;
--border-radius: 0.2rem;
--space-xs: 0.5rem;
--curve: cubic-bezier(0.86, 0, 0.07, 1);
@ -196,4 +197,203 @@ button.tab.active {
background-color: #000;
color: #fff;
border: none;
}
.settings-popup {
position: fixed;
background: white;
border-radius: 8px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
z-index: 10000;
width: 800px;
max-height: 600px;
display: flex;
flex-direction: column;
}
.popup-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 1rem;
border-bottom: 1px solid #e0e0e0;
background: #f9f9f9;
}
.header-left {
display: flex;
align-items: center;
gap: 0.5rem;
}
.close-btn {
background: none;
border: none;
cursor: pointer;
font-size: 1.5rem;
line-height: 1;
padding: 0;
color: #666;
}
.popup-body {
display: flex;
flex: 1;
overflow: hidden;
}
.popup-controls {
flex: 1;
padding: 1rem;
overflow-y: auto;
background: white;
display: flex;
flex-direction: column;
gap: 1rem;
}
.settings-subsection h4 {
margin: 0 0 0.5rem 0;
font-size: 0.875rem;
font-weight: 600;
}
.label-with-tooltip {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
text-underline-offset: 2px;
cursor: help;
position: relative;
}
.label-with-tooltip::after {
content: attr(data-css);
position: absolute;
bottom: 100%;
left: 0;
margin-bottom: 4px;
padding: 0.25rem 0.5rem;
background: var(--color-browngray-700, #3d3d3d);
color: var(--color-browngray-100, #f5f5f5);
font-family: "Courier New", Courier, monospace;
font-size: 0.75rem;
border-radius: 4px;
white-space: nowrap;
opacity: 0;
visibility: hidden;
transition: opacity 0.15s ease, visibility 0.15s ease;
z-index: 10;
}
.label-with-tooltip:hover::after {
opacity: 1;
visibility: visible;
}
.inheritance-btn {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0;
background: transparent;
border: none;
cursor: pointer;
font-size: 0.875rem;
color: #666;
transition: color 0.2s;
}
.inheritance-btn:hover {
color: #333;
}
.inheritance-btn svg {
width: 1.25rem;
height: 1.25rem;
}
.popup-css {
flex: 1;
background: #f5f5f5;
display: flex;
flex-direction: column;
border-left: 1px solid #e0e0e0;
}
.css-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.5rem 0.75rem;
background: #e8e8e8;
border-bottom: 1px solid #d0d0d0;
font-size: 0.875rem;
font-weight: 600;
}
.toggle {
display: flex;
align-items: center;
gap: 0.5rem;
cursor: pointer;
font-size: 0.75rem;
font-weight: normal;
color: #666;
}
.toggle input[type=checkbox] {
position: absolute;
opacity: 0;
width: 0;
height: 0;
}
.toggle-switch {
position: relative;
display: inline-block;
width: 36px;
height: 18px;
background: #ccc;
border-radius: 18px;
transition: background 0.2s ease;
}
.toggle-switch::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 14px;
height: 14px;
background: white;
border-radius: 50%;
transition: transform 0.2s ease;
}
.toggle input[type=checkbox]:checked + .toggle-switch {
background: #61afef;
}
.toggle input[type=checkbox]:checked + .toggle-switch::after {
transform: translateX(18px);
}
.readonly {
flex: 1;
margin: 0;
padding: 0.75rem;
background: #1e1e1e;
color: #abb2bf;
font-family: "Courier New", Courier, monospace;
font-size: 0.75rem;
line-height: 1.5;
overflow-y: auto;
white-space: pre-wrap;
}
.popup-css textarea {
flex: 1;
width: 100%;
background: #1e1e1e;
color: #abb2bf;
border: none;
padding: 0.75rem;
font-family: "Courier New", Courier, monospace;
font-size: 0.75rem;
line-height: 1.5;
resize: none;
outline: none;
}/*# sourceMappingURL=style.css.map */