Files
goose-highlighter/list-manager/list-manager.css
2026-02-06 12:31:12 +03:00

507 lines
8.3 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@import url('../shared/fonts.css');
@import url('../shared/colors.css');
@import url('../shared/base.css');
@import url('../shared/layout.css');
@import url('../shared/word-list.css');
@import url('../shared/ui-components.css');
html {
height: 100%;
}
body {
height: 100%;
overflow: hidden;
}
.app {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
}
.app button {
border-radius: 6px;
}
.app .icon-btn {
min-width: 28px;
min-height: 28px;
border-radius: 6px;
}
/* List-managerspecific: compact header padding; shared .app-header does the rest */
.topbar.app-header {
padding: 8px 16px;
}
.title.app-header-content {
gap: 10px;
}
.topbar-actions .icon-toggle {
width: 28px;
height: 28px;
padding: 0;
border-radius: 6px;
display: inline-flex;
align-items: center;
justify-content: center;
}
.layout {
display: grid;
grid-template-columns: minmax(280px, 25%) 1fr;
gap: 12px;
padding: 12px;
flex: 1;
overflow: hidden;
min-height: 0;
}
.panel {
background: var(--section-bg);
border: 1px solid var(--input-border);
border-radius: 8px;
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
overflow: hidden;
min-height: 0;
}
.panel-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.lists-panel .panel-header {
flex-direction: column;
align-items: flex-start;
gap: 6px;
}
.lists-panel .panel-header h2 {
margin-top: 0;
}
.panel-header h2 {
margin: 0;
font-size: 13px;
font-weight: 600;
color: var(--text-color);
}
.panel-actions {
display: flex;
gap: 6px;
flex-wrap: wrap;
}
.lists-panel .panel-actions {
justify-content: flex-start;
width: 100%;
}
.lists-panel .panel-actions button {
padding: 4px 8px;
font-size: 12px;
border-radius: 6px;
min-height: 28px;
}
.lists-panel .panel-actions button.ghost {
background: var(--input-bg);
border: 1px solid var(--input-border);
color: var(--text-color);
}
.lists-panel .panel-actions button.ghost:hover {
background: var(--section-bg);
}
.panel-actions.secondary {
margin-top: 0;
gap: 6px;
}
.panel-actions.secondary button {
padding: 4px 8px;
font-size: 12px;
border-radius: 6px;
min-height: 28px;
}
.list-hint {
font-size: 11px;
opacity: 0.6;
margin-top: -2px;
}
.selection-hint {
font-size: 12px;
color: var(--text-color);
opacity: 0.6;
margin-top: 4px;
font-style: italic;
text-align: center;
}
.lists {
display: flex;
flex-direction: column;
gap: 8px;
overflow-y: auto;
padding-right: 4px;
flex: 1;
min-height: 0;
}
.list-item {
background: var(--input-bg);
border: 2px solid transparent;
border-radius: 8px;
padding: 8px 10px;
display: grid;
grid-template-columns: 1fr auto;
gap: 8px;
align-items: center;
cursor: pointer;
transition: all 0.2s ease;
position: relative;
}
.list-item:hover {
background: var(--section-bg);
border-color: var(--input-border);
}
.list-item.active {
border-color: var(--accent);
box-shadow: var(--shadow-sm);
background: var(--section-bg);
}
.list-item.selected {
background: var(--section-bg);
border-color: rgba(204, 106, 42, 0.5);
}
html.dark .list-item.selected,
body.dark .list-item.selected {
border-color: rgba(255, 140, 0, 0.5);
}
.list-item.selected.active {
border-color: var(--accent);
}
.list-item.drag-over {
border-color: var(--accent-hover);
transform: scale(1.02);
}
.list-meta {
display: flex;
flex-direction: column;
gap: 4px;
}
.list-name {
font-weight: 600;
font-size: 13px;
}
.list-stats {
font-size: 11px;
opacity: 0.7;
}
.list-badge {
font-size: 11px;
padding: 2px 6px;
border-radius: 999px;
border: 1px solid var(--input-border);
opacity: 0.8;
cursor: pointer;
user-select: none;
}
.list-badge:hover {
opacity: 1;
}
.list-badge:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.details-panel {
display: flex;
flex-direction: column;
gap: 12px;
min-height: 0;
overflow: hidden;
}
.list-settings {
display: none;
gap: 8px;
padding: 8px 10px;
background: var(--input-bg);
border-radius: 6px;
border: 1px solid var(--input-border);
}
.list-settings.expanded {
display: flex;
flex-direction: column;
}
.list-settings input[type="text"] {
width: 100%;
padding: 6px 10px;
font-size: 13px;
border-radius: 6px;
}
.color-row {
display: flex;
gap: 8px;
align-items: center;
}
.compact-label {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
flex: 1;
}
.compact-label span {
min-width: 24px;
font-weight: 500;
opacity: 0.8;
}
.compact-label input[type="color"] {
flex: 1;
height: 32px;
}
.compact-btn {
padding: 4px 10px;
min-width: auto;
height: 32px;
border-radius: 6px;
font-size: 13px;
}
.compact-header {
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.list-title-section {
display: flex;
align-items: center;
gap: 8px;
}
.list-title-section h2 {
margin: 0;
font-size: 13px;
font-weight: 600;
max-width: 300px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.word-controls {
display: flex;
flex-direction: column;
gap: 8px;
}
.add-words {
display: flex;
gap: 10px;
align-items: flex-start;
}
/* List-managerspecific: add-words button width; shared word-list.css does the rest */
.add-words button {
min-width: 100px;
height: 32px;
border-radius: 6px;
font-size: 13px;
flex-shrink: 0;
}
.word-controls input[type="text"],
.word-controls select {
flex: 1;
min-width: 140px;
min-height: 32px;
padding: 0 10px;
font-size: 14px;
border-radius: 8px;
}
/* Search/move row: align input, select and buttons to same height */
.word-controls .row:has(#wordSearch) button {
height: 32px;
}
.word-item .word-item-eye-toggle {
flex-shrink: 0;
}
.app input[type="color"] {
padding: 0;
height: 32px;
border-radius: 6px;
border: 1px solid var(--input-border);
cursor: pointer;
}
.app input[type="color"]:hover {
border-color: var(--accent);
}
/* Subdued primary for compact buttons (e.g. Apply list settings) */
.compact-btn.primary {
background: rgba(255, 140, 0, 0.1);
color: var(--accent);
border: 1px solid rgba(255, 140, 0, 0.35);
}
.compact-btn.primary:hover {
background: rgba(255, 140, 0, 0.18);
border-color: rgba(255, 140, 0, 0.5);
}
html.dark .compact-btn.primary,
body.dark .compact-btn.primary {
background: rgba(255, 140, 0, 0.12);
border-color: rgba(255, 140, 0, 0.4);
}
html.dark .compact-btn.primary:hover,
body.dark .compact-btn.primary:hover {
background: rgba(255, 140, 0, 0.2);
border-color: rgba(255, 140, 0, 0.55);
}
.colors input[type="color"] {
width: 100%;
}
.stats {
font-size: 12px;
opacity: 0.7;
}
.pagination-container {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 6px 10px;
background: var(--section-bg);
border: 1px solid var(--input-border);
border-radius: 8px;
flex-shrink: 0;
flex-wrap: wrap;
}
.pagination-info {
font-size: 12px;
opacity: 0.8;
white-space: nowrap;
}
.pagination-controls {
display: flex;
align-items: center;
gap: 6px;
}
.pagination-btn {
background: var(--input-bg);
border: 1px solid var(--input-border);
color: var(--text-color);
border-radius: 6px;
padding: 4px 6px;
cursor: pointer;
transition: all 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
min-width: 28px;
min-height: 28px;
font-size: 12px;
}
.pagination-btn:hover:not(:disabled) {
background: var(--section-bg);
border-color: var(--accent);
}
.pagination-btn:disabled {
opacity: 0.4;
cursor: not-allowed;
}
.pagination-pages {
display: flex;
align-items: center;
padding: 0 6px;
}
.page-info {
font-size: 12px;
opacity: 0.9;
font-weight: 500;
}
.page-size-controls {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
}
.page-size-controls label {
opacity: 0.8;
white-space: nowrap;
}
.page-size-select {
background: var(--input-bg);
color: var(--text-color);
border: 1px solid var(--input-border);
border-radius: 6px;
padding: 3px 6px;
font-size: 12px;
min-width: 55px;
}
.page-size-select:focus {
outline: none;
border-color: var(--accent);
}
/* Removed single column layout - minimum width enforced for two-column layout */