Files
goose-highlighter/list-manager/list-manager.css

751 lines
12 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/ui-components.css');
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
height: 100%;
}
body {
font-family: var(--font-sans);
font-size: var(--text-base);
line-height: var(--leading-normal);
letter-spacing: var(--tracking-tight);
margin: 0;
background: var(--bg-color);
color: var(--text-color);
height: 100%;
overflow: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.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;
}
.topbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 16px;
background: var(--bg-color);
border-bottom: 1px solid var(--input-border);
flex-shrink: 0;
}
.title {
display: flex;
align-items: center;
gap: 10px;
}
.title img {
height: 28px;
width: 28px;
border-radius: 8px;
background: var(--text-color);
padding: 4px;
object-fit: contain;
}
html.dark .title img,
body.dark .title img {
background: var(--highlight-tag);
}
.name {
font-weight: 600;
font-size: 13px;
color: var(--text-color);
}
.subtitle {
font-size: 11px;
opacity: 0.6;
}
.topbar-actions button {
min-height: 28px;
padding: 4px 10px;
font-size: 12px;
border-radius: 6px;
display: inline-flex;
align-items: center;
gap: 6px;
}
.topbar-actions button.primary {
background: var(--accent);
color: var(--accent-text);
border: none;
}
.topbar-actions button.primary:hover {
background: var(--accent-hover);
}
.topbar-actions button.ghost {
background: var(--input-bg);
border: 1px solid var(--input-border);
color: var(--text-color);
}
.topbar-actions button.ghost:hover {
background: var(--section-bg);
}
.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;
}
.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;
}
.add-words textarea {
flex: 1;
min-height: 56px;
resize: vertical;
background: var(--input-bg);
color: var(--text-color);
border: 1px solid var(--input-border);
border-radius: 8px;
padding: 6px 10px;
font-size: 13px;
}
.add-words textarea:focus {
outline: none;
border-color: var(--accent);
}
.add-words button {
min-width: 100px;
height: 32px;
border-radius: 6px;
font-size: 13px;
flex-shrink: 0;
}
/* Word controls: action row matches popup .word-actions-row / .word-action-btn */
.word-controls .row {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
}
.word-controls .row button {
height: 26px;
padding: 0 8px;
font-size: 12px;
border-radius: 6px;
background: var(--input-bg);
border: 1px solid var(--input-border);
color: var(--text-color);
}
.word-controls .row button:hover {
background: var(--section-bg);
}
.word-controls .row button.danger {
background: rgba(239, 68, 68, 0.1);
border-color: rgba(239, 68, 68, 0.3);
color: var(--danger);
}
.word-controls .row button.danger:hover {
background: rgba(239, 68, 68, 0.2);
}
.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;
}
#wordSearch {
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 list container matches popup .word-list-container */
.word-list {
flex: 1;
overflow-y: auto;
background: var(--input-bg);
border: 1px solid var(--input-border);
border-radius: 8px;
min-height: 0;
display: flex;
flex-direction: column;
}
.word-list .empty {
padding: 16px;
text-align: center;
font-size: 14px;
color: var(--text-color);
opacity: 0.6;
}
/* Word item matches popup .word-item (flex row, border-bottom, left accent when selected) */
.word-item {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 10px;
cursor: pointer;
transition: all 0.2s;
border-bottom: 1px solid var(--input-border);
min-width: 0;
}
.word-item:last-child {
border-bottom: none;
}
.word-item:hover {
background: var(--highlight-tag);
}
.word-item.selected {
background: var(--section-bg);
border-left: 3px solid var(--accent);
padding-left: 9px;
}
.word-item.disabled {
opacity: 0.5;
}
.word-text {
flex: 1;
font-size: 14px;
color: var(--text-color);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
user-select: none;
}
.word-text.editing {
display: none;
}
.word-edit-input {
display: none;
flex: 1;
height: 28px;
padding: 0 8px;
background: var(--bg-color);
border: 1px solid var(--accent);
border-radius: 4px;
font-size: 14px;
color: var(--text-color);
min-width: 0;
}
.word-edit-input:focus {
outline: none;
}
.word-edit-input.active {
display: block;
}
.word-actions {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
pointer-events: auto;
}
.word-actions > * {
pointer-events: auto;
}
/* Word item icon button matches popup .word-item-icon-btn */
.word-item .icon-btn {
width: 28px;
height: 28px;
min-width: 28px;
min-height: 28px;
padding: 0;
background: transparent;
border: none;
border-radius: 4px;
color: var(--text-color);
opacity: 0.6;
}
.word-item .icon-btn:hover {
opacity: 1;
background: var(--highlight-tag);
color: var(--accent);
}
.word-item .icon-btn i {
font-size: 14px;
}
/* Word item color picker matches popup .word-item-color-picker */
.word-item input[type="color"] {
width: 28px;
height: 28px;
border-radius: 4px;
border: 1px solid var(--input-border);
cursor: pointer;
padding: 0;
flex-shrink: 0;
}
.word-item input[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
border-radius: 3px;
}
.word-item input[type="color"]::-webkit-color-swatch {
border: none;
border-radius: 3px;
}
.word-item input[type="color"]:hover {
border-color: var(--accent);
}
.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);
}
.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 */